From 9300b00d5022e6d346ba69c7c14335e3e54ae874 Mon Sep 17 00:00:00 2001 From: Dan Marshall Date: Thu, 8 Sep 2022 10:46:21 -0700 Subject: [PATCH] npm updates (#536) * update main lockfile * update vega-typings * use vega 5.22 * update lockfiles * require npm@8 * update typescript * override typescript * vega 5.22 * try downgrade node * bump node version * comment out build * update typedoc * uncomment * update ts-loader * downgrade typescript & typedoc * regen * powerbi bump --- azure-pipelines.yml | 6 +- dev.md | 4 +- .../v4/SandDance2019beta4.4.0.9.pbiviz | Bin 0 -> 611641 bytes .../v4/sanddance-explorer.js | 12 +- ...VegaMorphCharts.types.MorphChartsCore.html | 228 +- docs/docs/sanddance-explorer/v4/index.html | 2 +- ...orphCharts.types.BasicRendererOptions.html | 15 + ...ndDance.VegaMorphCharts.types.Scene3d.html | 14 +- .../v4/interfaces/controls.IDialogProps.html | 53 +- ...VegaMorphCharts.types.MorphChartsCore.html | 228 +- docs/docs/sanddance-react/v4/index.html | 2 +- ...orphCharts.types.BasicRendererOptions.html | 15 + ...ndDance.VegaMorphCharts.types.Scene3d.html | 14 +- ...VegaMorphCharts.types.MorphChartsCore.html | 228 +- docs/docs/sanddance/v4/index.html | 4 +- ...orphCharts.types.BasicRendererOptions.html | 15 + .../VegaMorphCharts.types.Scene3d.html | 14 +- .../v3/interfaces/types.scene3d.html | 14 +- .../v1/classes/types.MorphChartsCore.html | 228 +- .../types.BasicRendererOptions.html | 15 + .../v1/interfaces/types.Scene3d.html | 14 +- docs/embed/v4/sanddance-embed.html | 2 +- docs/examples/index.md | 2 +- docs/tests/v4/es6/js/sanddance-app.js | 14491 ++++++++-------- docs/tests/v4/es6/js/sanddance-test-es6.js | 13797 +++++++-------- .../v4/es6/js/vega-morphcharts-test-es6.js | 10581 +++++------ docs/tests/v4/umd/qualBarChartTest.html | 2 +- docs/tests/v4/umd/quanBarChartTest.html | 2 +- docs/tests/v4/umd/sanddance-react.html | 2 +- docs/tests/v4/umd/sanddance-specs.html | 2 +- docs/tests/v4/umd/scatterplotTest.html | 2 +- docs/tests/v4/umd/test.html | 2 +- docs/tests/v4/umd/transforms.html | 2 +- docs/tests/v4/umd/transition.html | 2 +- docs/tests/v4/umd/treeMapTest.html | 2 +- docs/tests/v4/umd/vega-morphcharts.test.html | 2 +- extensions/azdata-sanddance/package-lock.json | 24 +- extensions/common-backend/package-lock.json | 12 +- extensions/common-frontend/package-lock.json | 1528 +- extensions/common-frontend/package.json | 2 +- extensions/vscode-sanddance/package-lock.json | 12 +- package-lock.json | 8572 ++++----- package.json | 6 +- packages/chart-recommender/package-lock.json | 1188 +- packages/chart-recommender/package.json | 2 +- packages/chart-types/package-lock.json | 56 +- packages/chart-types/package.json | 2 +- .../package-lock.json | 352 +- packages/powerbi/package-lock.json | 1940 ++- packages/powerbi/package.json | 5 +- packages/powerbi/pbiviz.json | 2 +- packages/powerbi/src/app.ts | 6 +- packages/powerbi/src/version.ts | 2 +- packages/powerbi/src/visual.ts | 359 +- packages/sanddance-app/package-lock.json | 1530 +- packages/sanddance-app/package.json | 4 +- packages/sanddance-embed/package-lock.json | 12 +- .../sanddance-embed/test/sanddance-embed.html | 2 +- packages/sanddance-explorer/README.md | 2 +- packages/sanddance-explorer/package-lock.json | 74 +- packages/sanddance-explorer/package.json | 2 +- .../src/controls/dataExporterHtml.ts | 2 +- packages/sanddance-react/README.md | 2 +- packages/sanddance-react/package-lock.json | 1204 +- packages/sanddance-react/package.json | 2 +- packages/sanddance-specs/package-lock.json | 1211 +- packages/sanddance-specs/package.json | 4 +- packages/sanddance-test-es6/package-lock.json | 1156 +- packages/sanddance-test-es6/package.json | 4 +- packages/sanddance/README.md | 4 +- packages/sanddance/package-lock.json | 56 +- packages/sanddance/package.json | 2 +- packages/search-expression/package-lock.json | 56 +- packages/search-expression/package.json | 2 +- packages/vega-deck.gl/package-lock.json | 1411 +- packages/vega-deck.gl/package.json | 4 +- .../package-lock.json | 1154 +- .../vega-morphcharts-test-es6/package.json | 2 +- packages/vega-morphcharts/package-lock.json | 1247 +- packages/vega-morphcharts/package.json | 4 +- 80 files changed, 32335 insertions(+), 30906 deletions(-) create mode 100644 docs/dist/powerbi/v4/SandDance2019beta4.4.0.9.pbiviz diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 6835f191b..59ed0a34f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -12,12 +12,12 @@ pool: steps: - task: NodeTool@0 inputs: - versionSpec: '14.x' + versionSpec: '16.x' displayName: 'Install Node.js' - script: | - npm i -g npm@7 - displayName: 'Install npm 7' + npm i -g npm@8 + displayName: 'Install npm 8' - script: | npm install diff --git a/dev.md b/dev.md index ff0edec2a..b75100a01 100644 --- a/dev.md +++ b/dev.md @@ -13,8 +13,8 @@ The SandDance repo is a monorepo made up of several packages, managed by [Lerna] 1. [sanddance-app](https://github.com/microsoft/SandDance/tree/master/packages/sanddance-app) - React-based sample application used on website. ## System requirements -* Node.js 14 or higher -* NPM 7 or higher +* Node.js 16 or higher +* NPM 8 or higher ## Install 1. Clone this repo diff --git a/docs/dist/powerbi/v4/SandDance2019beta4.4.0.9.pbiviz b/docs/dist/powerbi/v4/SandDance2019beta4.4.0.9.pbiviz new file mode 100644 index 0000000000000000000000000000000000000000..ffd18c2ddd014f338b432a5c1d3a953db78912c2 GIT binary patch literal 611641 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
93Fdb54omXLv4xctKA0;~h8ilNngHpaMV!Y1 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≪Os@J}>Q+y5a|BJDURiKz;ZCLHwL)U^W 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%0DCwV8;k~2<_mkXF9&FN2^^NYI=W0T0U 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%0DN@?ojUB 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 G7ykfJQTD0; literal 0 HcmV?d00001 diff --git a/docs/dist/sanddance-explorer/v4/sanddance-explorer.js b/docs/dist/sanddance-explorer/v4/sanddance-explorer.js index 47b248df9..bc6dbdf7a 100644 --- a/docs/dist/sanddance-explorer/v4/sanddance-explorer.js +++ b/docs/dist/sanddance-explorer/v4/sanddance-explorer.js @@ -98,7 +98,7 @@ var $818261f0bc10eb56$var$BarChartRecommenderSummary = /** @class */ function() if (column.name === this.best.columns.x || column.stats.isSequential) continue; if (column.quantitative || column.stats.distinctValueCount < $mKnoG.maxCategoricalColors && column.stats.distinctValueCount > 1) { this.best.columns.color = this.best.columns.sort = column.name; - this.best.scheme = $mKnoG.defaultColorScheme(column); + this.best.scheme = (0, $mKnoG.defaultColorScheme)(column); if (column.quantitative) this.best.colorBin = "quantile"; break; } @@ -243,16 +243,16 @@ var $482125d789b1323b$var$ScatterPlotRecommenderSummary = /** @class */ function columns.forEach(function(column) { if (!rec.columns.x) { if (column.name.toLowerCase() === "x") return rec.columns.x = column.name; - else if ($a7afS.isLongitude(column)) return rec.columns.x = column.name; + else if ((0, $a7afS.isLongitude)(column)) return rec.columns.x = column.name; } if (!rec.columns.y) { if (column.name.toLowerCase() === "y") return rec.columns.y = column.name; - else if ($a7afS.isLatitude(column)) return rec.columns.y = column.name; + else if ((0, $a7afS.isLatitude)(column)) return rec.columns.y = column.name; } if (!rec.columns.color && !column.stats.isSequential) { if (column.quantitative || column.stats.distinctValueCount < $mKnoG.maxCategoricalColors) { rec.columns.color = rec.columns.sort = column.name; - rec.scheme = $mKnoG.defaultColorScheme(column); + rec.scheme = (0, $mKnoG.defaultColorScheme)(column); if (column.quantitative) rec.colorBin = "quantile"; return; } @@ -286,7 +286,7 @@ function $178167658ad4c5ea$var$preferredColumnForTreemapSize(columns, strict) { if (c.quantitative) { if (strict && c.stats.hasNegative) continue; if (strict && c.stats.isSequential) continue; - if (strict && $a7afS.isGeo(c)) continue; + if (strict && (0, $a7afS.isGeo)(c)) continue; return c; } } @@ -38860,7 +38860,7 @@ const $8f1b85a9470d3af5$export$c4b7cd609ccf4a5a = (title, embed)=>` - + diff --git a/docs/docs/sanddance-explorer/v4/classes/SandDance.VegaMorphCharts.types.MorphChartsCore.html b/docs/docs/sanddance-explorer/v4/classes/SandDance.VegaMorphCharts.types.MorphChartsCore.html index 8bda51d40..4f1f30f38 100644 --- a/docs/docs/sanddance-explorer/v4/classes/SandDance.VegaMorphCharts.types.MorphChartsCore.html +++ b/docs/docs/sanddance-explorer/v4/classes/SandDance.VegaMorphCharts.types.MorphChartsCore.html @@ -52,6 +52,8 @@

Properties

  • afterRenderCallback
  • manipulationOriginChangedCallback
  • +
  • startCallback
  • +
  • stopCallback
  • updateCallback
  • webXRInputSourceRequestCallback
  • webXRSessionEndedCallback
  • @@ -84,6 +86,8 @@

    Methods

  • getModelPosition
  • getModelRotation
  • getModelScale
  • +
  • getView
  • +
  • lerpView
  • pickLasso
  • render
  • requestWebXRSession
  • @@ -94,6 +98,7 @@

    Methods

  • setModelPosition
  • setModelRotation
  • setModelScale
  • +
  • setView
  • start
  • stop
  • update
  • @@ -114,7 +119,7 @@

    constructor

  • Parameters

    @@ -136,7 +141,7 @@

    afterRenderCallback

    afterRenderCallback: () => void
    @@ -161,7 +166,7 @@

    manipulationOriginChangedCallback

    manipulationOriginChangedCallback: (result: IManipulationOriginChanged) => void
    @@ -186,13 +191,63 @@

    Returns void

    +
    + +

    startCallback

    +
    startCallback: () => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (): void
      • +
      +
        +
      • +

        Returns void

        +
      • +
      +
    • +
    +
    +
    +
    + +

    stopCallback

    +
    stopCallback: () => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (): void
      • +
      +
        +
      • +

        Returns void

        +
      • +
      +
    • +
    +
    +

    updateCallback

    updateCallback: (elapsedTime: number, xrFrame?: XRFrame) => void
    @@ -226,7 +281,7 @@

    webXRInputSourceRequestCallback

    webXRInputSourceRequestCallback: (profiles: string[], handedness: string, completed: (result: IWebXRInputSourceResponse) => void, failed: (e: string) => void) => void
    @@ -302,7 +357,7 @@

    webXRSessionEndedCallback

    webXRSessionEndedCallback: () => void
    @@ -327,7 +382,7 @@

    webXRSessionStartedCallback

    webXRSessionStartedCallback: () => void
    @@ -352,7 +407,7 @@

    webXRSupportedCallback

    webXRSupportedCallback: () => void
    @@ -385,7 +440,7 @@

    camera

  • Returns CameraBase

    @@ -393,7 +448,7 @@

    Returns CameraBas
  • Parameters

    @@ -416,7 +471,7 @@

    config

  • Returns Config

    @@ -433,7 +488,7 @@

    container

  • Returns HTMLElement

    @@ -450,7 +505,7 @@

    debugText

  • Returns DebugText

    @@ -467,7 +522,7 @@

    font

  • Returns Font

    @@ -484,7 +539,7 @@

    inputManager

  • Returns Manager

    @@ -501,7 +556,7 @@

    log

  • Returns Log

    @@ -518,7 +573,7 @@

    paletteResources

  • Returns PaletteResources

    @@ -536,7 +591,7 @@

    renderer

  • Returns RendererBase

    @@ -544,7 +599,7 @@

    Returns RendererB
  • Parameters

    @@ -567,7 +622,7 @@

    started

  • Returns boolean

    @@ -584,7 +639,7 @@

    totalFrames

  • Returns number

    @@ -601,7 +656,7 @@

    webXRSession

  • Returns XRSession

    @@ -621,7 +676,7 @@

    checkWebXRSupport

  • Returns void

    @@ -638,7 +693,7 @@

    getModelManipulationOrigin

  • Parameters

    @@ -661,7 +716,7 @@

    getModelPosition

  • Parameters

    @@ -684,7 +739,7 @@

    getModelRotation

  • Parameters

    @@ -707,13 +762,65 @@

    getModelScale

  • Returns number

+
+ +

getView

+
    +
  • getView(view: ModelView): void
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      view: ModelView
      +
    • +
    +

    Returns void

    +
  • +
+
+
+ +

lerpView

+
    +
  • lerpView(from: ModelView, to: ModelView, time: number): void
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      from: ModelView
      +
    • +
    • +
      to: ModelView
      +
    • +
    • +
      time: number
      +
    • +
    +

    Returns void

    +
  • +
+

pickLasso

@@ -724,7 +831,7 @@

pickLasso

  • Parameters

    @@ -759,7 +866,7 @@

    render

  • Parameters

    @@ -785,7 +892,7 @@

    requestWebXRSession

  • Returns void

    @@ -802,7 +909,7 @@

    reset

  • Parameters

    @@ -825,7 +932,7 @@

    resetManipulationOrigin

  • Returns void

    @@ -842,7 +949,7 @@

    resetModel

  • Parameters

    @@ -865,7 +972,7 @@

    setModelManipulationOrigin

  • Parameters

    @@ -888,7 +995,7 @@

    setModelPosition

  • Parameters

    @@ -914,7 +1021,7 @@

    setModelRotation

  • Parameters

    @@ -940,7 +1047,7 @@

    setModelScale

  • Parameters

    @@ -956,6 +1063,32 @@

    Returns void

  • +
    + +

    setView

    +
      +
    • setView(view: ModelView, isSmooth: boolean): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        view: ModelView
        +
      • +
      • +
        isSmooth: boolean
        +
      • +
      +

      Returns void

      +
    • +
    +

    start

    @@ -966,7 +1099,7 @@

    start

  • Returns void

    @@ -983,7 +1116,7 @@

    stop

  • Returns void

    @@ -1000,7 +1133,7 @@

    update

  • Parameters

    @@ -1085,6 +1218,12 @@

    Returns void manipulationOriginChangedCallback

  • +
  • + startCallback +
  • +
  • + stopCallback +
  • updateCallback
  • @@ -1151,6 +1290,12 @@

    Returns void getModelScale +
  • + getView +
  • +
  • + lerpView +
  • pickLasso
  • @@ -1181,6 +1326,9 @@

    Returns void setModelScale +
  • + setView +
  • start
  • diff --git a/docs/docs/sanddance-explorer/v4/index.html b/docs/docs/sanddance-explorer/v4/index.html index 5f5ba94df..e3ca79c5b 100644 --- a/docs/docs/sanddance-explorer/v4/index.html +++ b/docs/docs/sanddance-explorer/v4/index.html @@ -24,7 +24,7 @@

    Installation

    Add these to the dependencies section of your package.json, then run npm install:

    "@msrvida/sanddance-explorer": "^4",
     "@fluentui/react": "^8",
    -"vega": "^5.20"
    +"vega": "^5.22"
     

    Import these in your JavaScript:

    import * as fluentui from '@fluentui/react';
    diff --git a/docs/docs/sanddance-explorer/v4/interfaces/SandDance.VegaMorphCharts.types.BasicRendererOptions.html b/docs/docs/sanddance-explorer/v4/interfaces/SandDance.VegaMorphCharts.types.BasicRendererOptions.html
    index e7b5ccf5a..de115fd3d 100644
    --- a/docs/docs/sanddance-explorer/v4/interfaces/SandDance.VegaMorphCharts.types.BasicRendererOptions.html
    +++ b/docs/docs/sanddance-explorer/v4/interfaces/SandDance.VegaMorphCharts.types.BasicRendererOptions.html
    @@ -50,6 +50,7 @@ 

    Index

    Properties

    @@ -70,6 +71,17 @@

    Optional antialias

    +
    + +

    Optional contextmenu

    +
    contextmenu: boolean
    + +

    Optional height

    @@ -167,6 +179,9 @@

    Optional width

  • antialias
  • +
  • + contextmenu +
  • height
  • diff --git a/docs/docs/sanddance-explorer/v4/interfaces/SandDance.VegaMorphCharts.types.Scene3d.html b/docs/docs/sanddance-explorer/v4/interfaces/SandDance.VegaMorphCharts.types.Scene3d.html index 53eb8b6aa..e47ea1a30 100644 --- a/docs/docs/sanddance-explorer/v4/interfaces/SandDance.VegaMorphCharts.types.Scene3d.html +++ b/docs/docs/sanddance-explorer/v4/interfaces/SandDance.VegaMorphCharts.types.Scene3d.html @@ -78,7 +78,7 @@

    bounds

    @@ -89,7 +89,7 @@

    clip

    @@ -100,7 +100,7 @@

    interactive

    @@ -111,7 +111,7 @@

    items

    @@ -122,7 +122,7 @@

    marktype

    @@ -133,7 +133,7 @@

    name

    @@ -144,7 +144,7 @@

    role

    diff --git a/docs/docs/sanddance-explorer/v4/interfaces/controls.IDialogProps.html b/docs/docs/sanddance-explorer/v4/interfaces/controls.IDialogProps.html index 25da43987..2029a82c4 100644 --- a/docs/docs/sanddance-explorer/v4/interfaces/controls.IDialogProps.html +++ b/docs/docs/sanddance-explorer/v4/interfaces/controls.IDialogProps.html @@ -46,7 +46,7 @@

    Properties

  • ariaDescribedById
  • ariaLabelledById
  • buttons
  • -
  • children
  • +
  • children
  • className
  • closeButtonAriaLabel
  • componentRef
  • @@ -98,7 +98,7 @@

    Optional ariaDescribed

    Inherited from FluentUITypes.IDialogProps.ariaDescribedById

      -
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:129
    • +
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:130
    @@ -119,7 +119,7 @@

    Optional ariaLabelled

    Inherited from FluentUITypes.IDialogProps.ariaLabelledById

      -
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:124
    • +
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:125
    @@ -143,11 +143,12 @@

    Optional buttons

    -
    +

    Optional children

    children: ReactNode
    @@ -215,7 +216,7 @@

    Optional containerClass

    Inherited from FluentUITypes.IDialogProps.containerClassName

      -
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:83
    • +
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:84
    @@ -236,7 +237,7 @@

    Optional contentClass

    Inherited from FluentUITypes.IDialogProps.contentClassName

      -
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:114
    • +
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:115
    @@ -257,7 +258,7 @@

    Optional dialogContent

    Inherited from FluentUITypes.IDialogProps.dialogContentProps

      -
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:36
    • +
    • Defined in fluentui-react-cdn-typings/node_modules/@fluentui/react/lib/components/Dialog/Dialog.types.d.ts:37
    @@ -353,7 +354,7 @@

    Optional hidden

    @@ -392,7 +393,7 @@

    Optional isBlocking

    @@ -437,7 +438,7 @@

    Optional isDarkOverl
    @@ -461,7 +462,7 @@

    Optional isOpen

    @@ -496,7 +497,7 @@

    Optional maxWidth

    @@ -513,7 +514,7 @@

    Optional minWidth

    @@ -530,7 +531,7 @@

    Optional modalProps

    @@ -568,7 +569,7 @@

    Optional styles

    @@ -584,7 +585,7 @@

    Optional subText

    @@ -605,7 +606,7 @@

    Optional theme

    @@ -632,7 +633,7 @@

    Optional topButtonsP
    @@ -653,7 +654,7 @@

    Optional type

    @@ -684,7 +685,7 @@

    Optional onDismiss

    @@ -714,7 +715,7 @@

    Optional onDismissed

    @@ -742,7 +743,7 @@

    Optional onLayerDid<
    @@ -770,7 +771,7 @@

    Optional onLayerMoun
    @@ -822,7 +823,7 @@

    Returns void buttons -
  • +
  • children
  • diff --git a/docs/docs/sanddance-react/v4/classes/SandDance.VegaMorphCharts.types.MorphChartsCore.html b/docs/docs/sanddance-react/v4/classes/SandDance.VegaMorphCharts.types.MorphChartsCore.html index 4b0eea554..63df51723 100644 --- a/docs/docs/sanddance-react/v4/classes/SandDance.VegaMorphCharts.types.MorphChartsCore.html +++ b/docs/docs/sanddance-react/v4/classes/SandDance.VegaMorphCharts.types.MorphChartsCore.html @@ -52,6 +52,8 @@

    Properties

  • +
    + +

    startCallback

    +
    startCallback: () => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (): void
      • +
      +
        +
      • +

        Returns void

        +
      • +
      +
    • +
    +
    +
    +
    + +

    stopCallback

    +
    stopCallback: () => void
    + +
    +

    Type declaration

    +
      +
    • +
        +
      • (): void
      • +
      +
        +
      • +

        Returns void

        +
      • +
      +
    • +
    +
    +

    updateCallback

    updateCallback: (elapsedTime: number, xrFrame?: XRFrame) => void
    @@ -226,7 +281,7 @@

    webXRInputSourceRequestCallback

    webXRInputSourceRequestCallback: (profiles: string[], handedness: string, completed: (result: IWebXRInputSourceResponse) => void, failed: (e: string) => void) => void
    @@ -302,7 +357,7 @@

    webXRSessionEndedCallback

    webXRSessionEndedCallback: () => void
    @@ -327,7 +382,7 @@

    webXRSessionStartedCallback

    webXRSessionStartedCallback: () => void
    @@ -352,7 +407,7 @@

    webXRSupportedCallback

    webXRSupportedCallback: () => void
    @@ -385,7 +440,7 @@

    camera

  • Returns CameraBase

    @@ -393,7 +448,7 @@

    Returns CameraBas
  • Parameters

    @@ -416,7 +471,7 @@

    config

  • Returns Config

    @@ -433,7 +488,7 @@

    container

  • Returns HTMLElement

    @@ -450,7 +505,7 @@

    debugText

  • Returns DebugText

    @@ -467,7 +522,7 @@

    font

  • Returns Font

    @@ -484,7 +539,7 @@

    inputManager

  • Returns Manager

    @@ -501,7 +556,7 @@

    log

  • Returns Log

    @@ -518,7 +573,7 @@

    paletteResources

  • Returns PaletteResources

    @@ -536,7 +591,7 @@

    renderer

  • Returns RendererBase

    @@ -544,7 +599,7 @@

    Returns RendererB
  • Parameters

    @@ -567,7 +622,7 @@

    started

  • Returns boolean

    @@ -584,7 +639,7 @@

    totalFrames

  • Returns number

    @@ -601,7 +656,7 @@

    webXRSession

  • Returns XRSession

    @@ -621,7 +676,7 @@

    checkWebXRSupport

  • Returns void

    @@ -638,7 +693,7 @@

    getModelManipulationOrigin

  • Parameters

    @@ -661,7 +716,7 @@

    getModelPosition

  • Parameters

    @@ -684,7 +739,7 @@

    getModelRotation

  • Parameters

    @@ -707,13 +762,65 @@

    getModelScale

  • Returns number

  • +
    + +

    getView

    +
      +
    • getView(view: ModelView): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        view: ModelView
        +
      • +
      +

      Returns void

      +
    • +
    +
    +
    + +

    lerpView

    +
      +
    • lerpView(from: ModelView, to: ModelView, time: number): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        from: ModelView
        +
      • +
      • +
        to: ModelView
        +
      • +
      • +
        time: number
        +
      • +
      +

      Returns void

      +
    • +
    +

    pickLasso

    @@ -724,7 +831,7 @@

    pickLasso

  • Parameters

    @@ -759,7 +866,7 @@

    render

  • Parameters

    @@ -785,7 +892,7 @@

    requestWebXRSession

  • Returns void

    @@ -802,7 +909,7 @@

    reset

  • Parameters

    @@ -825,7 +932,7 @@

    resetManipulationOrigin

  • Returns void

    @@ -842,7 +949,7 @@

    resetModel

  • Parameters

    @@ -865,7 +972,7 @@

    setModelManipulationOrigin

  • Parameters

    @@ -888,7 +995,7 @@

    setModelPosition

  • Parameters

    @@ -914,7 +1021,7 @@

    setModelRotation

  • Parameters

    @@ -940,7 +1047,7 @@

    setModelScale

  • Parameters

    @@ -956,6 +1063,32 @@

    Returns void

  • +
    + +

    setView

    +
      +
    • setView(view: ModelView, isSmooth: boolean): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        view: ModelView
        +
      • +
      • +
        isSmooth: boolean
        +
      • +
      +

      Returns void

      +
    • +
    +

    start

    @@ -966,7 +1099,7 @@

    start

  • Returns void

    @@ -983,7 +1116,7 @@

    stop

  • Returns void

    @@ -1000,7 +1133,7 @@

    update

  • Parameters

    @@ -1082,6 +1215,12 @@

    Returns void manipulationOriginChangedCallback

  • +
  • + startCallback +
  • +
  • + stopCallback +
  • updateCallback
  • @@ -1148,6 +1287,12 @@

    Returns void getModelScale +
  • + getView +
  • +
  • + lerpView +
  • pickLasso
  • @@ -1178,6 +1323,9 @@

    Returns void setModelScale +
  • + setView +
  • start
  • diff --git a/docs/docs/sanddance-react/v4/index.html b/docs/docs/sanddance-react/v4/index.html index 0f447cd85..38072c2a5 100644 --- a/docs/docs/sanddance-react/v4/index.html +++ b/docs/docs/sanddance-react/v4/index.html @@ -25,7 +25,7 @@

    Installation

    "@msrvida/sanddance-react": "^4",
     "react": "^17",
     "react-dom": "^17",
    -"vega": "^5.20"
    +"vega": "^5.22"
     

    Import these in your JavaScript:

    import * as vega from 'vega';
    diff --git a/docs/docs/sanddance-react/v4/interfaces/SandDance.VegaMorphCharts.types.BasicRendererOptions.html b/docs/docs/sanddance-react/v4/interfaces/SandDance.VegaMorphCharts.types.BasicRendererOptions.html
    index c2524373b..a38b7aaf1 100644
    --- a/docs/docs/sanddance-react/v4/interfaces/SandDance.VegaMorphCharts.types.BasicRendererOptions.html
    +++ b/docs/docs/sanddance-react/v4/interfaces/SandDance.VegaMorphCharts.types.BasicRendererOptions.html
    @@ -50,6 +50,7 @@ 

    Index

    Properties

    @@ -70,6 +71,17 @@

    Optional antialias

    +
    + +

    Optional contextmenu

    +
    contextmenu: boolean
    + +

    Optional height

    @@ -164,6 +176,9 @@

    Optional width

  • antialias
  • +
  • + contextmenu +
  • height
  • diff --git a/docs/docs/sanddance-react/v4/interfaces/SandDance.VegaMorphCharts.types.Scene3d.html b/docs/docs/sanddance-react/v4/interfaces/SandDance.VegaMorphCharts.types.Scene3d.html index fdb9ea72f..181b07c85 100644 --- a/docs/docs/sanddance-react/v4/interfaces/SandDance.VegaMorphCharts.types.Scene3d.html +++ b/docs/docs/sanddance-react/v4/interfaces/SandDance.VegaMorphCharts.types.Scene3d.html @@ -78,7 +78,7 @@

    bounds

    @@ -89,7 +89,7 @@

    clip

    @@ -100,7 +100,7 @@

    interactive

    @@ -111,7 +111,7 @@

    items

    @@ -122,7 +122,7 @@

    marktype

    @@ -133,7 +133,7 @@

    name

    @@ -144,7 +144,7 @@

    role

    diff --git a/docs/docs/sanddance/v4/classes/VegaMorphCharts.types.MorphChartsCore.html b/docs/docs/sanddance/v4/classes/VegaMorphCharts.types.MorphChartsCore.html index 8c846be44..aa86993d5 100644 --- a/docs/docs/sanddance/v4/classes/VegaMorphCharts.types.MorphChartsCore.html +++ b/docs/docs/sanddance/v4/classes/VegaMorphCharts.types.MorphChartsCore.html @@ -49,6 +49,8 @@

    Properties

    • afterRenderCallback
    • manipulationOriginChangedCallback
    • +
    • startCallback
    • +
    • stopCallback
    • updateCallback
    • webXRInputSourceRequestCallback
    • webXRSessionEndedCallback
    • @@ -81,6 +83,8 @@

      Methods

    • getModelPosition
    • getModelRotation
    • getModelScale
    • +
    • getView
    • +
    • lerpView
    • pickLasso
    • render
    • requestWebXRSession
    • @@ -91,6 +95,7 @@

      Methods

    • setModelPosition
    • setModelRotation
    • setModelScale
    • +
    • setView
    • start
    • stop
    • update
    • @@ -111,7 +116,7 @@

      constructor

    • Parameters

      @@ -133,7 +138,7 @@

      afterRenderCallback

      afterRenderCallback: () => void
      @@ -158,7 +163,7 @@

      manipulationOriginChangedCallback

      manipulationOriginChangedCallback: (result: IManipulationOriginChanged) => void
      @@ -183,13 +188,63 @@

      Returns void

      +
      + +

      startCallback

      +
      startCallback: () => void
      + +
      +

      Type declaration

      +
        +
      • +
          +
        • (): void
        • +
        +
          +
        • +

          Returns void

          +
        • +
        +
      • +
      +
      +
      +
      + +

      stopCallback

      +
      stopCallback: () => void
      + +
      +

      Type declaration

      +
        +
      • +
          +
        • (): void
        • +
        +
          +
        • +

          Returns void

          +
        • +
        +
      • +
      +
      +

      updateCallback

      updateCallback: (elapsedTime: number, xrFrame?: XRFrame) => void
      @@ -223,7 +278,7 @@

      webXRInputSourceRequestCallback

      webXRInputSourceRequestCallback: (profiles: string[], handedness: string, completed: (result: IWebXRInputSourceResponse) => void, failed: (e: string) => void) => void
      @@ -299,7 +354,7 @@

      webXRSessionEndedCallback

      webXRSessionEndedCallback: () => void
      @@ -324,7 +379,7 @@

      webXRSessionStartedCallback

      webXRSessionStartedCallback: () => void
      @@ -349,7 +404,7 @@

      webXRSupportedCallback

      webXRSupportedCallback: () => void
      @@ -382,7 +437,7 @@

      camera

    • Returns CameraBase

      @@ -390,7 +445,7 @@

      Returns CameraBas
    • Parameters

      @@ -413,7 +468,7 @@

      config

    • Returns Config

      @@ -430,7 +485,7 @@

      container

    • Returns HTMLElement

      @@ -447,7 +502,7 @@

      debugText

    • Returns DebugText

      @@ -464,7 +519,7 @@

      font

    • Returns Font

      @@ -481,7 +536,7 @@

      inputManager

    • Returns Manager

      @@ -498,7 +553,7 @@

      log

    • Returns Log

      @@ -515,7 +570,7 @@

      paletteResources

    • Returns PaletteResources

      @@ -533,7 +588,7 @@

      renderer

    • Returns RendererBase

      @@ -541,7 +596,7 @@

      Returns RendererB
    • Parameters

      @@ -564,7 +619,7 @@

      started

    • Returns boolean

      @@ -581,7 +636,7 @@

      totalFrames

    • Returns number

      @@ -598,7 +653,7 @@

      webXRSession

    • Returns XRSession

      @@ -618,7 +673,7 @@

      checkWebXRSupport

    • Returns void

      @@ -635,7 +690,7 @@

      getModelManipulationOrigin

    • Parameters

      @@ -658,7 +713,7 @@

      getModelPosition

    • Parameters

      @@ -681,7 +736,7 @@

      getModelRotation

    • Parameters

      @@ -704,13 +759,65 @@

      getModelScale

    • Returns number

    +
    + +

    getView

    +
      +
    • getView(view: ModelView): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        view: ModelView
        +
      • +
      +

      Returns void

      +
    • +
    +
    +
    + +

    lerpView

    +
      +
    • lerpView(from: ModelView, to: ModelView, time: number): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        from: ModelView
        +
      • +
      • +
        to: ModelView
        +
      • +
      • +
        time: number
        +
      • +
      +

      Returns void

      +
    • +
    +

    pickLasso

    @@ -721,7 +828,7 @@

    pickLasso

  • Parameters

    @@ -756,7 +863,7 @@

    render

  • Parameters

    @@ -782,7 +889,7 @@

    requestWebXRSession

  • Returns void

    @@ -799,7 +906,7 @@

    reset

  • Parameters

    @@ -822,7 +929,7 @@

    resetManipulationOrigin

  • Returns void

    @@ -839,7 +946,7 @@

    resetModel

  • Parameters

    @@ -862,7 +969,7 @@

    setModelManipulationOrigin

  • Parameters

    @@ -885,7 +992,7 @@

    setModelPosition

  • Parameters

    @@ -911,7 +1018,7 @@

    setModelRotation

  • Parameters

    @@ -937,7 +1044,7 @@

    setModelScale

  • Parameters

    @@ -953,6 +1060,32 @@

    Returns void

  • +
    + +

    setView

    +
      +
    • setView(view: ModelView, isSmooth: boolean): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        view: ModelView
        +
      • +
      • +
        isSmooth: boolean
        +
      • +
      +

      Returns void

      +
    • +
    +

    start

    @@ -963,7 +1096,7 @@

    start

  • Returns void

    @@ -980,7 +1113,7 @@

    stop

  • Returns void

    @@ -997,7 +1130,7 @@

    update

  • Parameters

    @@ -1071,6 +1204,12 @@

    Returns void manipulationOriginChangedCallback

  • +
  • + startCallback +
  • +
  • + stopCallback +
  • updateCallback
  • @@ -1137,6 +1276,12 @@

    Returns void getModelScale +
  • + getView +
  • +
  • + lerpView +
  • pickLasso
  • @@ -1167,6 +1312,9 @@

    Returns void setModelScale +
  • + setView +
  • start
  • diff --git a/docs/docs/sanddance/v4/index.html b/docs/docs/sanddance/v4/index.html index 136092e87..051ed3686 100644 --- a/docs/docs/sanddance/v4/index.html +++ b/docs/docs/sanddance/v4/index.html @@ -26,7 +26,7 @@

    Installation

    Installation via script tags

    Load dependencies via <script> tags in your HTML:

    -
    <script src="https://unpkg.com/vega@^5.20/build/vega.js" charset="utf-8"></script>
    +			
    <script src="https://unpkg.com/vega@^5.22/build/vega.js" charset="utf-8"></script>
     <script src="https://unpkg.com/@msrvida/sanddance@^4/dist/umd/sanddance.js"></script>
     

    A global variable named SandDance will be available to you. In your JavaScript, call the use function to pass the dependency libraries:

    @@ -37,7 +37,7 @@

    Installation via Node.js

    Add these to the dependencies section of your package.json, then run npm install:

    "@msrvida/sanddance": "^4",
    -"vega": "^5.20"
    +"vega": "^5.22"
     

    Import these in your JavaScript, then call the use() function to pass the dependency libraries to SandDance.VegaMorphCharts:

    import * as vega from 'vega';
    diff --git a/docs/docs/sanddance/v4/interfaces/VegaMorphCharts.types.BasicRendererOptions.html b/docs/docs/sanddance/v4/interfaces/VegaMorphCharts.types.BasicRendererOptions.html
    index ba0b6a47c..0b77e4e00 100644
    --- a/docs/docs/sanddance/v4/interfaces/VegaMorphCharts.types.BasicRendererOptions.html
    +++ b/docs/docs/sanddance/v4/interfaces/VegaMorphCharts.types.BasicRendererOptions.html
    @@ -47,6 +47,7 @@ 

    Index

    Properties

    @@ -67,6 +68,17 @@

    Optional antialias

    +
    + +

    Optional contextmenu

    +
    contextmenu: boolean
    + +

    Optional height

    @@ -153,6 +165,9 @@

    Optional width

  • antialias
  • +
  • + contextmenu +
  • height
  • diff --git a/docs/docs/sanddance/v4/interfaces/VegaMorphCharts.types.Scene3d.html b/docs/docs/sanddance/v4/interfaces/VegaMorphCharts.types.Scene3d.html index 5036366b8..e2f670bc3 100644 --- a/docs/docs/sanddance/v4/interfaces/VegaMorphCharts.types.Scene3d.html +++ b/docs/docs/sanddance/v4/interfaces/VegaMorphCharts.types.Scene3d.html @@ -75,7 +75,7 @@

    bounds

    @@ -86,7 +86,7 @@

    clip

    @@ -97,7 +97,7 @@

    interactive

    @@ -108,7 +108,7 @@

    items

    @@ -119,7 +119,7 @@

    marktype

    @@ -130,7 +130,7 @@

    name

    @@ -141,7 +141,7 @@

    role

    diff --git a/docs/docs/vega-deck.gl/v3/interfaces/types.scene3d.html b/docs/docs/vega-deck.gl/v3/interfaces/types.scene3d.html index 5d09a49f3..0d25e5b08 100644 --- a/docs/docs/vega-deck.gl/v3/interfaces/types.scene3d.html +++ b/docs/docs/vega-deck.gl/v3/interfaces/types.scene3d.html @@ -72,7 +72,7 @@

    bounds

    @@ -83,7 +83,7 @@

    clip

    @@ -94,7 +94,7 @@

    interactive

    @@ -105,7 +105,7 @@

    items

    @@ -116,7 +116,7 @@

    marktype

    @@ -127,7 +127,7 @@

    name

    @@ -138,7 +138,7 @@

    role

    diff --git a/docs/docs/vega-morphcharts/v1/classes/types.MorphChartsCore.html b/docs/docs/vega-morphcharts/v1/classes/types.MorphChartsCore.html index bcaa7f5cf..c2ef99f21 100644 --- a/docs/docs/vega-morphcharts/v1/classes/types.MorphChartsCore.html +++ b/docs/docs/vega-morphcharts/v1/classes/types.MorphChartsCore.html @@ -46,6 +46,8 @@

    Properties

    • afterRenderCallback
    • manipulationOriginChangedCallback
    • +
    • startCallback
    • +
    • stopCallback
    • updateCallback
    • webXRInputSourceRequestCallback
    • webXRSessionEndedCallback
    • @@ -78,6 +80,8 @@

      Methods

    • getModelPosition
    • getModelRotation
    • getModelScale
    • +
    • getView
    • +
    • lerpView
    • pickLasso
    • render
    • requestWebXRSession
    • @@ -88,6 +92,7 @@

      Methods

    • setModelPosition
    • setModelRotation
    • setModelScale
    • +
    • setView
    • start
    • stop
    • update
    • @@ -108,7 +113,7 @@

      constructor

    • Parameters

      @@ -130,7 +135,7 @@

      afterRenderCallback

      afterRenderCallback: () => void
      @@ -155,7 +160,7 @@

      manipulationOriginChangedCallback

      manipulationOriginChangedCallback: (result: IManipulationOriginChanged) => void
      @@ -180,13 +185,63 @@

      Returns void

      +
      + +

      startCallback

      +
      startCallback: () => void
      + +
      +

      Type declaration

      +
        +
      • +
          +
        • (): void
        • +
        +
          +
        • +

          Returns void

          +
        • +
        +
      • +
      +
      +
      +
      + +

      stopCallback

      +
      stopCallback: () => void
      + +
      +

      Type declaration

      +
        +
      • +
          +
        • (): void
        • +
        +
          +
        • +

          Returns void

          +
        • +
        +
      • +
      +
      +

      updateCallback

      updateCallback: (elapsedTime: number, xrFrame?: XRFrame) => void
      @@ -220,7 +275,7 @@

      webXRInputSourceRequestCallback

      webXRInputSourceRequestCallback: (profiles: string[], handedness: string, completed: (result: IWebXRInputSourceResponse) => void, failed: (e: string) => void) => void
      @@ -296,7 +351,7 @@

      webXRSessionEndedCallback

      webXRSessionEndedCallback: () => void
      @@ -321,7 +376,7 @@

      webXRSessionStartedCallback

      webXRSessionStartedCallback: () => void
      @@ -346,7 +401,7 @@

      webXRSupportedCallback

      webXRSupportedCallback: () => void
      @@ -379,7 +434,7 @@

      camera

    • Returns CameraBase

      @@ -387,7 +442,7 @@

      Returns CameraBas
    • Parameters

      @@ -410,7 +465,7 @@

      config

    • Returns Config

      @@ -427,7 +482,7 @@

      container

    • Returns HTMLElement

      @@ -444,7 +499,7 @@

      debugText

    • Returns DebugText

      @@ -461,7 +516,7 @@

      font

    • Returns Font

      @@ -478,7 +533,7 @@

      inputManager

    • Returns Manager

      @@ -495,7 +550,7 @@

      log

    • Returns Log

      @@ -512,7 +567,7 @@

      paletteResources

    • Returns PaletteResources

      @@ -530,7 +585,7 @@

      renderer

    • Returns RendererBase

      @@ -538,7 +593,7 @@

      Returns RendererB
    • Parameters

      @@ -561,7 +616,7 @@

      started

    • Returns boolean

      @@ -578,7 +633,7 @@

      totalFrames

    • Returns number

      @@ -595,7 +650,7 @@

      webXRSession

    • Returns XRSession

      @@ -615,7 +670,7 @@

      checkWebXRSupport

    • Returns void

      @@ -632,7 +687,7 @@

      getModelManipulationOrigin

    • Parameters

      @@ -655,7 +710,7 @@

      getModelPosition

    • Parameters

      @@ -678,7 +733,7 @@

      getModelRotation

    • Parameters

      @@ -701,13 +756,65 @@

      getModelScale

    • Returns number

    +
    + +

    getView

    +
      +
    • getView(view: ModelView): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        view: ModelView
        +
      • +
      +

      Returns void

      +
    • +
    +
    +
    + +

    lerpView

    +
      +
    • lerpView(from: ModelView, to: ModelView, time: number): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        from: ModelView
        +
      • +
      • +
        to: ModelView
        +
      • +
      • +
        time: number
        +
      • +
      +

      Returns void

      +
    • +
    +

    pickLasso

    @@ -718,7 +825,7 @@

    pickLasso

  • Parameters

    @@ -753,7 +860,7 @@

    render

  • Parameters

    @@ -779,7 +886,7 @@

    requestWebXRSession

  • Returns void

    @@ -796,7 +903,7 @@

    reset

  • Parameters

    @@ -819,7 +926,7 @@

    resetManipulationOrigin

  • Returns void

    @@ -836,7 +943,7 @@

    resetModel

  • Parameters

    @@ -859,7 +966,7 @@

    setModelManipulationOrigin

  • Parameters

    @@ -882,7 +989,7 @@

    setModelPosition

  • Parameters

    @@ -908,7 +1015,7 @@

    setModelRotation

  • Parameters

    @@ -934,7 +1041,7 @@

    setModelScale

  • Parameters

    @@ -950,6 +1057,32 @@

    Returns void

  • +
    + +

    setView

    +
      +
    • setView(view: ModelView, isSmooth: boolean): void
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        view: ModelView
        +
      • +
      • +
        isSmooth: boolean
        +
      • +
      +

      Returns void

      +
    • +
    +

    start

    @@ -960,7 +1093,7 @@

    start

  • Returns void

    @@ -977,7 +1110,7 @@

    stop

  • Returns void

    @@ -994,7 +1127,7 @@

    update

  • Parameters

    @@ -1048,6 +1181,12 @@

    Returns void manipulationOriginChangedCallback

  • +
  • + startCallback +
  • +
  • + stopCallback +
  • updateCallback
  • @@ -1114,6 +1253,12 @@

    Returns void getModelScale +
  • + getView +
  • +
  • + lerpView +
  • pickLasso
  • @@ -1144,6 +1289,9 @@

    Returns void setModelScale +
  • + setView +
  • start
  • diff --git a/docs/docs/vega-morphcharts/v1/interfaces/types.BasicRendererOptions.html b/docs/docs/vega-morphcharts/v1/interfaces/types.BasicRendererOptions.html index ec9b4daea..18c7655a0 100644 --- a/docs/docs/vega-morphcharts/v1/interfaces/types.BasicRendererOptions.html +++ b/docs/docs/vega-morphcharts/v1/interfaces/types.BasicRendererOptions.html @@ -44,6 +44,7 @@

    Index

    Properties

    @@ -64,6 +65,17 @@

    Optional antialias

    +
    + +

    Optional contextmenu

    +
    contextmenu: boolean
    + +

    Optional height

    @@ -130,6 +142,9 @@

    Optional width

  • antialias
  • +
  • + contextmenu +
  • height
  • diff --git a/docs/docs/vega-morphcharts/v1/interfaces/types.Scene3d.html b/docs/docs/vega-morphcharts/v1/interfaces/types.Scene3d.html index 7a03bf801..e837296f1 100644 --- a/docs/docs/vega-morphcharts/v1/interfaces/types.Scene3d.html +++ b/docs/docs/vega-morphcharts/v1/interfaces/types.Scene3d.html @@ -72,7 +72,7 @@

    bounds

    @@ -83,7 +83,7 @@

    clip

    @@ -94,7 +94,7 @@

    interactive

    @@ -105,7 +105,7 @@

    items

    @@ -116,7 +116,7 @@

    marktype

    @@ -127,7 +127,7 @@

    name

    @@ -138,7 +138,7 @@

    role

    diff --git a/docs/embed/v4/sanddance-embed.html b/docs/embed/v4/sanddance-embed.html index 1a1b63f98..1d8d16062 100644 --- a/docs/embed/v4/sanddance-embed.html +++ b/docs/embed/v4/sanddance-embed.html @@ -14,7 +14,7 @@ - + diff --git a/docs/examples/index.md b/docs/examples/index.md index aec1325d0..6ef7210e4 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -27,7 +27,7 @@ title: Examples ## SandDance apps v4 Beta * [Web app](../tests/v4/es6/app) -* [Power BI custom visual](../dist/powerbi/v4/SandDance2019beta4.4.0.8.pbiviz) SandDance 2019 beta4 4.0.8 +* [Power BI custom visual](../dist/powerbi/v4/SandDance2019beta4.4.0.9.pbiviz) SandDance 2019 beta4 4.0.9 * [VSCode extension](../dist/vscode/v4/vscode-sanddance-4.0.0.vsix) SandDance 4.0.0 ## Previous versions diff --git a/docs/tests/v4/es6/js/sanddance-app.js b/docs/tests/v4/es6/js/sanddance-app.js index 0620b727a..6356a8540 100644 --- a/docs/tests/v4/es6/js/sanddance-app.js +++ b/docs/tests/v4/es6/js/sanddance-app.js @@ -45003,7 +45003,7 @@ const embedHtml = (title, embed)=>` - + @@ -45553,7 +45553,7 @@ var BarChartRecommenderSummary = /** @class */ function() { if (column.name === this.best.columns.x || column.stats.isSequential) continue; if (column.quantitative || column.stats.distinctValueCount < recommender_1.maxCategoricalColors && column.stats.distinctValueCount > 1) { this.best.columns.color = this.best.columns.sort = column.name; - this.best.scheme = recommender_1.defaultColorScheme(column); + this.best.scheme = (0, recommender_1.defaultColorScheme)(column); if (column.quantitative) this.best.colorBin = "quantile"; break; } @@ -45690,16 +45690,16 @@ var ScatterPlotRecommenderSummary = /** @class */ function() { columns.forEach(function(column) { if (!rec.columns.x) { if (column.name.toLowerCase() === "x") return rec.columns.x = column.name; - else if (geo_1.isLongitude(column)) return rec.columns.x = column.name; + else if ((0, geo_1.isLongitude)(column)) return rec.columns.x = column.name; } if (!rec.columns.y) { if (column.name.toLowerCase() === "y") return rec.columns.y = column.name; - else if (geo_1.isLatitude(column)) return rec.columns.y = column.name; + else if ((0, geo_1.isLatitude)(column)) return rec.columns.y = column.name; } if (!rec.columns.color && !column.stats.isSequential) { if (column.quantitative || column.stats.distinctValueCount < recommender_1.maxCategoricalColors) { rec.columns.color = rec.columns.sort = column.name; - rec.scheme = recommender_1.defaultColorScheme(column); + rec.scheme = (0, recommender_1.defaultColorScheme)(column); if (column.quantitative) rec.colorBin = "quantile"; return; } @@ -45730,7 +45730,7 @@ function preferredColumnForTreemapSize(columns, strict) { if (c.quantitative) { if (strict && c.stats.hasNegative) continue; if (strict && c.stats.isSequential) continue; - if (strict && geo_1.isGeo(c)) continue; + if (strict && (0, geo_1.isGeo)(c)) continue; return c; } } @@ -53485,6 +53485,7 @@ parcelHelpers.exportAll(_index, exports); },{"./components/Button/index":"ksWPz","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ksWPz":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "ButtonGlobalClassNames", ()=>(0, _baseButtonClassNames.ButtonGlobalClassNames)); var _baseButton = require("./BaseButton"); parcelHelpers.exportAll(_baseButton, exports); var _buttonTypes = require("./Button.types"); @@ -53509,8 +53510,9 @@ var _iconButton = require("./IconButton/IconButton"); parcelHelpers.exportAll(_iconButton, exports); var _splitButtonClassNames = require("./SplitButton/SplitButton.classNames"); parcelHelpers.exportAll(_splitButtonClassNames, exports); +var _baseButtonClassNames = require("./BaseButton.classNames"); -},{"./BaseButton":"aFQzv","./Button.types":"dS38G","./Button":"cyUjW","./ActionButton/ActionButton":"7NwWQ","./CommandBarButton/CommandBarButton":"9NF4g","./CommandButton/CommandButton":"6Kn9C","./CompoundButton/CompoundButton":"8oyjs","./DefaultButton/DefaultButton":"6ZQzj","./MessageBarButton/MessageBarButton":"ik86k","./PrimaryButton/PrimaryButton":"01TCg","./IconButton/IconButton":"fwEU5","./SplitButton/SplitButton.classNames":"1z3em","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"aFQzv":[function(require,module,exports) { +},{"./BaseButton":"aFQzv","./Button.types":"dS38G","./Button":"cyUjW","./ActionButton/ActionButton":"7NwWQ","./CommandBarButton/CommandBarButton":"9NF4g","./CommandButton/CommandButton":"6Kn9C","./CompoundButton/CompoundButton":"8oyjs","./DefaultButton/DefaultButton":"6ZQzj","./MessageBarButton/MessageBarButton":"ik86k","./PrimaryButton/PrimaryButton":"01TCg","./IconButton/IconButton":"fwEU5","./SplitButton/SplitButton.classNames":"1z3em","./BaseButton.classNames":"h7V1v","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"aFQzv":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "BaseButton", ()=>BaseButton); @@ -53682,7 +53684,9 @@ var COMPONENT_NAME = "BaseButton"; if (!_this.props.disabled && _this.props.onKeyUp !== undefined) _this.props.onKeyUp(ev); // not cancelling event because it's not disabled }; _this._onKeyPress = function(ev) { - if (!_this.props.disabled && _this.props.onKeyPress !== undefined) _this.props.onKeyPress(ev); // not cancelling event because it's not disabled + // eslint-disable-next-line deprecation/deprecation + if (!_this.props.disabled && _this.props.onKeyPress !== undefined) // eslint-disable-next-line deprecation/deprecation + _this.props.onKeyPress(ev); // not cancelling event because it's not disabled }; _this._onMouseUp = function(ev) { if (!_this.props.disabled && _this.props.onMouseUp !== undefined) _this.props.onMouseUp(ev); // not cancelling event because it's not disabled @@ -54517,6 +54521,8 @@ parcelHelpers.export(exports, "DelayedRender", ()=>(0, _utilities.DelayedRender) parcelHelpers.export(exports, "EventGroup", ()=>(0, _utilities.EventGroup)); parcelHelpers.export(exports, "FabricPerformance", ()=>(0, _utilities.FabricPerformance)); parcelHelpers.export(exports, "FocusRects", ()=>(0, _utilities.FocusRects)); +parcelHelpers.export(exports, "FocusRectsContext", ()=>(0, _utilities.FocusRectsContext)); +parcelHelpers.export(exports, "FocusRectsProvider", ()=>(0, _utilities.FocusRectsProvider)); parcelHelpers.export(exports, "GlobalSettings", ()=>(0, _utilities.GlobalSettings)); parcelHelpers.export(exports, "IsFocusVisibleClassName", ()=>(0, _utilities.IsFocusVisibleClassName)); parcelHelpers.export(exports, "KeyCodes", ()=>(0, _utilities.KeyCodes)); @@ -54637,6 +54643,7 @@ parcelHelpers.export(exports, "optionProperties", ()=>(0, _utilities.optionPrope parcelHelpers.export(exports, "portalContainsElement", ()=>(0, _utilities.portalContainsElement)); parcelHelpers.export(exports, "precisionRound", ()=>(0, _utilities.precisionRound)); parcelHelpers.export(exports, "raiseClick", ()=>(0, _utilities.raiseClick)); +parcelHelpers.export(exports, "removeDirectionalKeyCode", ()=>(0, _utilities.removeDirectionalKeyCode)); parcelHelpers.export(exports, "removeIndex", ()=>(0, _utilities.removeIndex)); parcelHelpers.export(exports, "replaceElement", ()=>(0, _utilities.replaceElement)); parcelHelpers.export(exports, "resetControlledWarnings", ()=>(0, _utilities.resetControlledWarnings)); @@ -54680,7 +54687,7 @@ var _utilities = require("@fluentui/utilities"); // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/react", "8.81.1"); +(0, _setVersion.setVersion)("@fluentui/react", "8.94.2"); },{"@fluentui/set-version":"aMFYG"}],"aMFYG":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -54797,11 +54804,14 @@ parcelHelpers.export(exports, "unhoistMethods", ()=>(0, _hoist.unhoistMethods)); parcelHelpers.export(exports, "hoistStatics", ()=>(0, _hoistStatics.hoistStatics)); parcelHelpers.export(exports, "initializeComponentRef", ()=>(0, _initializeComponentRef.initializeComponentRef)); parcelHelpers.export(exports, "initializeFocusRects", ()=>(0, _initializeFocusRects.initializeFocusRects)); +parcelHelpers.export(exports, "FocusRectsProvider", ()=>(0, _focusRectsProvider.FocusRectsProvider)); parcelHelpers.export(exports, "FocusRects", ()=>(0, _useFocusRects.FocusRects)); +parcelHelpers.export(exports, "FocusRectsContext", ()=>(0, _useFocusRects.FocusRectsContext)); parcelHelpers.export(exports, "useFocusRects", ()=>(0, _useFocusRects.useFocusRects)); parcelHelpers.export(exports, "getInitials", ()=>(0, _initials.getInitials)); parcelHelpers.export(exports, "addDirectionalKeyCode", ()=>(0, _keyboard.addDirectionalKeyCode)); parcelHelpers.export(exports, "isDirectionalKeyCode", ()=>(0, _keyboard.isDirectionalKeyCode)); +parcelHelpers.export(exports, "removeDirectionalKeyCode", ()=>(0, _keyboard.removeDirectionalKeyCode)); parcelHelpers.export(exports, "getLanguage", ()=>(0, _language.getLanguage)); parcelHelpers.export(exports, "setLanguage", ()=>(0, _language.setLanguage)); parcelHelpers.export(exports, "calculatePrecision", ()=>(0, _math.calculatePrecision)); @@ -54925,6 +54935,7 @@ var _hoist = require("./hoist"); var _hoistStatics = require("./hoistStatics"); var _initializeComponentRef = require("./initializeComponentRef"); var _initializeFocusRects = require("./initializeFocusRects"); +var _focusRectsProvider = require("./FocusRectsProvider"); var _useFocusRects = require("./useFocusRects"); var _initials = require("./initials"); var _keyboard = require("./keyboard"); @@ -54956,11 +54967,11 @@ var _setSSR = require("./dom/setSSR"); var _createMergedRef = require("./createMergedRef"); var _useIsomorphicLayoutEffect = require("./useIsomorphicLayoutEffect"); -},{"./version":"9PCaM","./Async":"hAQcF","./AutoScroll":"iVvnk","./BaseComponent":"vNedS","./DelayedRender":"kBgki","./EventGroup":"bQDG8","./FabricPerformance":"cJi5t","./GlobalSettings":"hOBvf","./KeyCodes":"aVdtV","./Rectangle":"jqgRr","./appendFunction":"7Twuh","./aria":"4l6c3","./array":"51Jbj","./asAsync":"8GVXW","./assertNever":"7XVG7","./classNamesFunction":"4Iezg","./componentAs/composeComponentAs":"lA2Mh","./controlled":"77Y1K","./css":"j75mX","./customizations/Customizations":"7aH6S","./customizations/Customizer":"83xLA","./customizations/CustomizerContext":"fYZ4d","./customizations/customizable":"bqcZZ","./customizations/useCustomizationSettings":"efO5y","./customizations/mergeCustomizations":"aWBwG","./customizations/mergeSettings":"hfsOs","./dom":"bEiaC","./extendComponent":"i4bE8","./focus":"czIBK","./getId":"kKU74","./getNativeElementProps":"kIq46","./hoist":"a0YrH","./hoistStatics":"kvC3B","./initializeComponentRef":"bP7B7","./initializeFocusRects":"e13M2","./useFocusRects":"bttYg","./initials":"5azVr","./keyboard":"gcwLg","./language":"g4Aej","./math":"cvCig","./memoize":"63n82","./merge":"3nXHH","./mobileDetector":"gKqgU","./modalize":"5K7Du","./object":"cCaiB","./osDetector":"iLauf","./overflow":"lLUjc","./properties":"9boev","./renderFunction/composeRenderFunction":"1ASFG","./resources":"6Q55p","./rtl":"6SQS0","./safeRequestAnimationFrame":"2YKAT","./safeSetTimeout":"fHy6l","./scroll":"kGwz1","./selection/index":"9ugij","./string":"bONba","./styled":"h441M","./warn":"jBE7j","./ie11Detector":"g96q9","./getPropsWithDefaults":"9dYTp","./setFocusVisibility":"jrsUT","./dom/canUseDOM":"61CDL","./dom/setSSR":"b63SA","./createMergedRef":"f2qNU","./useIsomorphicLayoutEffect":"abKbf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9PCaM":[function(require,module,exports) { +},{"./version":"9PCaM","./Async":"hAQcF","./AutoScroll":"iVvnk","./BaseComponent":"vNedS","./DelayedRender":"kBgki","./EventGroup":"bQDG8","./FabricPerformance":"cJi5t","./GlobalSettings":"hOBvf","./KeyCodes":"aVdtV","./Rectangle":"jqgRr","./appendFunction":"7Twuh","./aria":"4l6c3","./array":"51Jbj","./asAsync":"8GVXW","./assertNever":"7XVG7","./classNamesFunction":"4Iezg","./componentAs/composeComponentAs":"lA2Mh","./controlled":"77Y1K","./css":"j75mX","./customizations/Customizations":"7aH6S","./customizations/Customizer":"83xLA","./customizations/CustomizerContext":"fYZ4d","./customizations/customizable":"bqcZZ","./customizations/useCustomizationSettings":"efO5y","./customizations/mergeCustomizations":"aWBwG","./customizations/mergeSettings":"hfsOs","./dom":"bEiaC","./extendComponent":"i4bE8","./focus":"czIBK","./getId":"kKU74","./getNativeElementProps":"kIq46","./hoist":"a0YrH","./hoistStatics":"kvC3B","./initializeComponentRef":"bP7B7","./initializeFocusRects":"e13M2","./FocusRectsProvider":"itEBl","./useFocusRects":"bttYg","./initials":"5azVr","./keyboard":"gcwLg","./language":"g4Aej","./math":"cvCig","./memoize":"63n82","./merge":"3nXHH","./mobileDetector":"gKqgU","./modalize":"5K7Du","./object":"cCaiB","./osDetector":"iLauf","./overflow":"lLUjc","./properties":"9boev","./renderFunction/composeRenderFunction":"1ASFG","./resources":"6Q55p","./rtl":"6SQS0","./safeRequestAnimationFrame":"2YKAT","./safeSetTimeout":"fHy6l","./scroll":"kGwz1","./selection/index":"9ugij","./string":"bONba","./styled":"h441M","./warn":"jBE7j","./ie11Detector":"g96q9","./getPropsWithDefaults":"9dYTp","./setFocusVisibility":"jrsUT","./dom/canUseDOM":"61CDL","./dom/setSSR":"b63SA","./createMergedRef":"f2qNU","./useIsomorphicLayoutEffect":"abKbf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9PCaM":[function(require,module,exports) { // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/utilities", "8.9.0"); +(0, _setVersion.setVersion)("@fluentui/utilities", "8.13.1"); },{"@fluentui/set-version":"aMFYG"}],"hAQcF":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -55927,7 +55938,7 @@ var _styleOptionsState = require("./StyleOptionsState"); // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/merge-styles", "8.5.2"); +(0, _setVersion.setVersion)("@fluentui/merge-styles", "8.5.3"); },{"@fluentui/set-version":"aMFYG"}],"8Z5s2":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -58048,7 +58059,7 @@ parcelHelpers.exportAll(_setVirtualParent, exports); // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/dom-utilities", "2.2.1"); +(0, _setVersion.setVersion)("@fluentui/dom-utilities", "2.2.2"); },{"@fluentui/set-version":"aMFYG"}],"b0FZf":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -58322,6 +58333,7 @@ parcelHelpers.defineInteropFlag(exports); * * @public * @param rootElement - Element to start the search for a focusable child. + * @param bypassHiddenElements - If true, focus will be not be set on hidden elements. * @returns True if focus was set, false if it was not. */ parcelHelpers.export(exports, "focusFirstChild", ()=>focusFirstChild); /** @@ -58416,8 +58428,8 @@ function getLastTabbable(rootElement, currentElement, includeElementsInFocusZone if (checkNode === void 0) checkNode = true; return getPreviousElement(rootElement, currentElement, checkNode, false, true, includeElementsInFocusZones, false, true); } -function focusFirstChild(rootElement) { - var element = getNextElement(rootElement, rootElement, true, false, false, true); +function focusFirstChild(rootElement, bypassHiddenElements) { + var element = getNextElement(rootElement, rootElement, true, false, false, true, undefined, undefined, bypassHiddenElements); if (element) { focusAsync(element); return true; @@ -58455,21 +58467,22 @@ function getPreviousElement(rootElement, currentElement, checkNode, suppressPare if (!suppressParentTraversal) return getPreviousElement(rootElement, currentElement.parentElement, true, false, false, includeElementsInFocusZones, allowFocusRoot, tabbable); return null; } -function getNextElement(rootElement, currentElement, checkNode, suppressParentTraversal, suppressChildTraversal, includeElementsInFocusZones, allowFocusRoot, tabbable) { +function getNextElement(rootElement, currentElement, checkNode, suppressParentTraversal, suppressChildTraversal, includeElementsInFocusZones, allowFocusRoot, tabbable, bypassHiddenElements) { if (!currentElement || currentElement === rootElement && suppressChildTraversal && !allowFocusRoot) return null; - var isCurrentElementVisible = isElementVisible(currentElement); + var checkElementVisibility = bypassHiddenElements ? isElementVisibleAndNotHidden : isElementVisible; + var isCurrentElementVisible = checkElementVisibility(currentElement); // Check the current node, if it's not the first traversal. if (checkNode && isCurrentElementVisible && isElementTabbable(currentElement, tabbable)) return currentElement; // Check its children. if (!suppressChildTraversal && isCurrentElementVisible && (includeElementsInFocusZones || !(isElementFocusZone(currentElement) || isElementFocusSubZone(currentElement)))) { - var childMatch = getNextElement(rootElement, currentElement.firstElementChild, true, true, false, includeElementsInFocusZones, allowFocusRoot, tabbable); + var childMatch = getNextElement(rootElement, currentElement.firstElementChild, true, true, false, includeElementsInFocusZones, allowFocusRoot, tabbable, bypassHiddenElements); if (childMatch) return childMatch; } if (currentElement === rootElement) return null; // Check its sibling. - var siblingMatch = getNextElement(rootElement, currentElement.nextElementSibling, true, true, false, includeElementsInFocusZones, allowFocusRoot, tabbable); + var siblingMatch = getNextElement(rootElement, currentElement.nextElementSibling, true, true, false, includeElementsInFocusZones, allowFocusRoot, tabbable, bypassHiddenElements); if (siblingMatch) return siblingMatch; - if (!suppressParentTraversal) return getNextElement(rootElement, currentElement.parentElement, false, false, true, includeElementsInFocusZones, allowFocusRoot, tabbable); + if (!suppressParentTraversal) return getNextElement(rootElement, currentElement.parentElement, false, false, true, includeElementsInFocusZones, allowFocusRoot, tabbable, bypassHiddenElements); return null; } function isElementVisible(element) { @@ -59735,6 +59748,11 @@ parcelHelpers.defineInteropFlag(exports); * This can be used to add global shortcut keys that directionally move from section to section within * an app or between focus trap zones. */ parcelHelpers.export(exports, "addDirectionalKeyCode", ()=>addDirectionalKeyCode); +/** + * Removes a keycode to the list of keys that, when pressed, should cause the focus outlines to be visible. + * This can be used to remove global shortcut keys that directionally move from section to section within + * an app or between focus trap zones. + */ parcelHelpers.export(exports, "removeDirectionalKeyCode", ()=>removeDirectionalKeyCode); var _keyCodes = require("./KeyCodes"); var _a; var DirectionalKeyCodes = (_a = {}, _a[(0, _keyCodes.KeyCodes).up] = 1, _a[(0, _keyCodes.KeyCodes).down] = 1, _a[(0, _keyCodes.KeyCodes).left] = 1, _a[(0, _keyCodes.KeyCodes).right] = 1, _a[(0, _keyCodes.KeyCodes).home] = 1, _a[(0, _keyCodes.KeyCodes).end] = 1, _a[(0, _keyCodes.KeyCodes).tab] = 1, _a[(0, _keyCodes.KeyCodes).pageUp] = 1, _a[(0, _keyCodes.KeyCodes).pageDown] = 1, _a); @@ -59744,6 +59762,9 @@ function isDirectionalKeyCode(which) { function addDirectionalKeyCode(which) { DirectionalKeyCodes[which] = 1; } +function removeDirectionalKeyCode(which) { + delete DirectionalKeyCodes[which]; +} },{"./KeyCodes":"aVdtV","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"jrsUT":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -59760,33 +59781,96 @@ parcelHelpers.export(exports, "IsFocusHiddenClassName", ()=>IsFocusHiddenClassNa * A use case might be when you have a keypress like ctrl-f6 navigate to a particular region on the page, * and want focus to show up. * - * @param enabled - whether to remove or add focus - * @param target - optional target + * @param enabled - Whether to turn focus visibility on or off. + * @param target - Optional target from which to get window in case no `providerElem` has been specified. + * @param registeredProviders - Array of provider refs that are associated with a FocusRectsProvider. If no array + * is passed in, the classnames are attached to the document body that contains `target`. */ parcelHelpers.export(exports, "setFocusVisibility", ()=>setFocusVisibility); var _getWindow = require("./dom/getWindow"); var IsFocusVisibleClassName = "ms-Fabric--isFocusVisible"; var IsFocusHiddenClassName = "ms-Fabric--isFocusHidden"; -function setFocusVisibility(enabled, target) { - var win = target ? (0, _getWindow.getWindow)(target) : (0, _getWindow.getWindow)(); - if (win) { - var classList = win.document.body.classList; - classList.add(enabled ? IsFocusVisibleClassName : IsFocusHiddenClassName); - classList.remove(enabled ? IsFocusHiddenClassName : IsFocusVisibleClassName); +function updateClassList(el, enabled) { + if (el) { + el.classList.add(enabled ? IsFocusVisibleClassName : IsFocusHiddenClassName); + el.classList.remove(enabled ? IsFocusHiddenClassName : IsFocusVisibleClassName); } } +function setFocusVisibility(enabled, target, registeredProviders) { + var _a; + if (registeredProviders) registeredProviders.forEach(function(ref) { + return updateClassList(ref.current, enabled); + }); + else updateClassList((_a = (0, _getWindow.getWindow)(target)) === null || _a === void 0 ? void 0 : _a.document.body, enabled); +} + +},{"./dom/getWindow":"i0Ddq","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"itEBl":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "FocusRectsProvider", ()=>FocusRectsProvider); +var _react = require("react"); +var _useFocusRects = require("./useFocusRects"); +var FocusRectsProvider = function(props) { + var providerRef = props.providerRef, layerRoot = props.layerRoot; + var registeredProviders = _react.useState([])[0]; + var parentContext = _react.useContext((0, _useFocusRects.FocusRectsContext)); + // Inherit the parent context if it exists, unless this is a layer root. + // This allows the topmost provider element in the DOM tree to handle the focus events. + // Since layers are in a separate HTML tree from their parent, they shouldn't use the parent's providerRef. + var inheritParentContext = parentContext !== undefined && !layerRoot; + var context = _react.useMemo(function() { + return inheritParentContext ? undefined : { + providerRef: providerRef, + registeredProviders: registeredProviders, + registerProvider: function(ref) { + // Register this child provider with the current context, and any parent contexts + registeredProviders.push(ref); + parentContext === null || parentContext === void 0 || parentContext.registerProvider(ref); + }, + unregisterProvider: function(ref) { + parentContext === null || parentContext === void 0 || parentContext.unregisterProvider(ref); + var i = registeredProviders.indexOf(ref); + if (i >= 0) registeredProviders.splice(i, 1); + } + }; + }, [ + providerRef, + registeredProviders, + parentContext, + inheritParentContext + ]); + _react.useEffect(function() { + if (context) { + context.registerProvider(context.providerRef); + return function() { + return context.unregisterProvider(context.providerRef); + }; + } + }, [ + context + ]); + // Create a new context provider if this is not inheriting from the parent. + if (context) return _react.createElement((0, _useFocusRects.FocusRectsContext).Provider, { + value: context + }, props.children); + else return _react.createElement(_react.Fragment, null, props.children); +}; -},{"./dom/getWindow":"i0Ddq","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bttYg":[function(require,module,exports) { +},{"react":"8ePka","./useFocusRects":"bttYg","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bttYg":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "FocusRectsContext", ()=>FocusRectsContext); /** * Initializes the logic which: * - * 1. Subscribes keydown and mousedown events. (It will only do it once per window, - * so it's safe to call this method multiple times.) - * 2. When the user presses directional keyboard keys, adds the 'ms-Fabric--isFocusVisible' classname - * to the document body, removes the 'ms-Fabric-isFocusHidden' classname. - * 3. When the user clicks a mouse button, adds the 'ms-Fabric-isFocusHidden' classname to the - * document body, removes the 'ms-Fabric--isFocusVisible' classname. + * 1. Subscribes keydown, keyup, mousedown and pointerdown events. (It will only do it once for the current element of + * the FocusRectsContext providerRef or once per window if no such element is provided via context, so it's safe to + * call this method multiple times.) + * 2. When the user presses triggers a keydown or keyup event via directional keyboard keys, adds the + * 'ms-Fabric--isFocusVisible' classname to the current element of the FocusRectsContext providerRef or the document + * body if no such element is provided via context, and removes the 'ms-Fabric-isFocusHidden' classname. + * 3. When the user triggers a mousedown or pointerdown event, adds the 'ms-Fabric-isFocusHidden' classname to the + * current element of the FocusRectsContext providerRef or the document body if no such element is provided via + * context, and removes the 'ms-Fabric--isFocusVisible' classname. * * This logic allows components on the page to conditionally render focus treatments based on * the existence of global classnames, which simplifies logic overall. @@ -59798,10 +59882,8 @@ var _react = require("react"); var _getWindow = require("./dom/getWindow"); var _keyboard = require("./keyboard"); var _setFocusVisibility = require("./setFocusVisibility"); -/** - * Counter for mounted component that uses focus rectangle. - * We want to cleanup the listners before last component that uses focus rectangle unmounts. - */ var mountCounters = new WeakMap(); +var mountCounters = new WeakMap(); +var callbackMap = new WeakMap(); function setMountCounters(key, delta) { var newValue; var currValue = mountCounters.get(key); @@ -59810,28 +59892,75 @@ function setMountCounters(key, delta) { mountCounters.set(key, newValue); return newValue; } +function setCallbackMap(context) { + var callbacks = callbackMap.get(context); + if (callbacks) return callbacks; + var onMouseDown = function(ev) { + return _onMouseDown(ev, context.registeredProviders); + }; + var onPointerDown = function(ev) { + return _onPointerDown(ev, context.registeredProviders); + }; + var onKeyDown = function(ev) { + return _onKeyDown(ev, context.registeredProviders); + }; + var onKeyUp = function(ev) { + return _onKeyUp(ev, context.registeredProviders); + }; + callbacks = { + onMouseDown: onMouseDown, + onPointerDown: onPointerDown, + onKeyDown: onKeyDown, + onKeyUp: onKeyUp + }; + callbackMap.set(context, callbacks); + return callbacks; +} +var FocusRectsContext = _react.createContext(undefined); function useFocusRects(rootRef) { + var context = _react.useContext(FocusRectsContext); _react.useEffect(function() { - var _a; + var _a, _b; var win = (0, _getWindow.getWindow)(rootRef === null || rootRef === void 0 ? void 0 : rootRef.current); if (!win || ((_a = win.FabricConfig) === null || _a === void 0 ? void 0 : _a.disableFocusRects) === true) return undefined; - var count = setMountCounters(win, 1); + var el = win; + var onMouseDown; + var onPointerDown; + var onKeyDown; + var onKeyUp; + if ((_b = context === null || context === void 0 ? void 0 : context.providerRef) === null || _b === void 0 ? void 0 : _b.current) { + el = context.providerRef.current; + var callbacks = setCallbackMap(context); + onMouseDown = callbacks.onMouseDown; + onPointerDown = callbacks.onPointerDown; + onKeyDown = callbacks.onKeyDown; + onKeyUp = callbacks.onKeyUp; + } else { + onMouseDown = _onMouseDown; + onPointerDown = _onPointerDown; + onKeyDown = _onKeyDown; + onKeyUp = _onKeyUp; + } + var count = setMountCounters(el, 1); if (count <= 1) { - win.addEventListener("mousedown", _onMouseDown, true); - win.addEventListener("pointerdown", _onPointerDown, true); - win.addEventListener("keydown", _onKeyDown, true); + el.addEventListener("mousedown", onMouseDown, true); + el.addEventListener("pointerdown", onPointerDown, true); + el.addEventListener("keydown", onKeyDown, true); + el.addEventListener("keyup", onKeyUp, true); } return function() { var _a; if (!win || ((_a = win.FabricConfig) === null || _a === void 0 ? void 0 : _a.disableFocusRects) === true) return; - count = setMountCounters(win, -1); + count = setMountCounters(el, -1); if (count === 0) { - win.removeEventListener("mousedown", _onMouseDown, true); - win.removeEventListener("pointerdown", _onPointerDown, true); - win.removeEventListener("keydown", _onKeyDown, true); + el.removeEventListener("mousedown", onMouseDown, true); + el.removeEventListener("pointerdown", onPointerDown, true); + el.removeEventListener("keydown", onKeyDown, true); + el.removeEventListener("keyup", onKeyUp, true); } }; }, [ + context, rootRef ]); } @@ -59839,15 +59968,28 @@ var FocusRects = function(props) { useFocusRects(props.rootRef); return null; }; -function _onMouseDown(ev) { - (0, _setFocusVisibility.setFocusVisibility)(false, ev.target); -} -function _onPointerDown(ev) { - if (ev.pointerType !== "mouse") (0, _setFocusVisibility.setFocusVisibility)(false, ev.target); +function _onMouseDown(ev, registeredProviders) { + (0, _setFocusVisibility.setFocusVisibility)(false, ev.target, registeredProviders); +} +function _onPointerDown(ev, registeredProviders) { + if (ev.pointerType !== "mouse") (0, _setFocusVisibility.setFocusVisibility)(false, ev.target, registeredProviders); +} +// You need both a keydown and a keyup listener that sets focus visibility to true to handle two distinct scenarios when +// attaching the listeners and classnames to the provider instead of the document body. +// If you only have a keydown listener, then the focus rectangles will not show when moving from outside of the provider +// to inside it. That is why a keyup listener is needed, since it will always trigger after the focus event is fired. +// If you only have a keyup listener, then the focus rectangles will not show moving between different tabbable elements +// if the tab key is pressed without being released. That's is why we need a keydown listener, since it will trigger for +// every element that is being tabbed into. +// This works because `classList.add` is smart and will not duplicate a classname that already exists on the classList +// when focus visibility is turned on. +function _onKeyDown(ev, registeredProviders) { + // eslint-disable-next-line deprecation/deprecation + if ((0, _keyboard.isDirectionalKeyCode)(ev.which)) (0, _setFocusVisibility.setFocusVisibility)(true, ev.target, registeredProviders); } -function _onKeyDown(ev) { +function _onKeyUp(ev, registeredProviders) { // eslint-disable-next-line deprecation/deprecation - if ((0, _keyboard.isDirectionalKeyCode)(ev.which)) (0, _setFocusVisibility.setFocusVisibility)(true, ev.target); + if ((0, _keyboard.isDirectionalKeyCode)(ev.which)) (0, _setFocusVisibility.setFocusVisibility)(true, ev.target, registeredProviders); } },{"react":"8ePka","./dom/getWindow":"i0Ddq","./keyboard":"gcwLg","./setFocusVisibility":"jrsUT","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"5azVr":[function(require,module,exports) { @@ -60564,9 +60706,39 @@ var _eventGroup = require("../EventGroup"); this._updateCount(); this.setChangeEvents(true); }; + Selection.prototype.setRangeSelected = function(fromIndex, count, isSelected, shouldAnchor) { + if (this.mode === (0, _selectionTypes.SelectionMode).none) return; + // Clamp the index. + fromIndex = Math.min(Math.max(0, fromIndex), this._items.length - 1); + // Clamp the range. + count = Math.min(Math.max(0, count), this._items.length - fromIndex); + // No-op on out of bounds selections. + if (fromIndex < 0 || fromIndex >= this._items.length || count === 0) return; + this.setChangeEvents(false); + var anchorIndex = this._anchoredIndex || 0; + var startIndex = fromIndex; + var endIndex = fromIndex + count - 1; + var newAnchorIndex = anchorIndex >= endIndex ? startIndex : endIndex; + for(; startIndex <= endIndex; startIndex++)this.setIndexSelected(startIndex, isSelected, shouldAnchor ? startIndex === newAnchorIndex : false); + this.setChangeEvents(true); + }; Selection.prototype.selectToKey = function(key, clearSelection) { this.selectToIndex(this._keyToIndexMap[key], clearSelection); }; + Selection.prototype.selectToRange = function(fromIndex, count, clearSelection) { + if (this.mode === (0, _selectionTypes.SelectionMode).none) return; + if (this.mode === (0, _selectionTypes.SelectionMode).single) { + if (count === 1) this.setIndexSelected(fromIndex, true, true); + return; + } + var anchorIndex = this._anchoredIndex || 0; + var startIndex = Math.min(fromIndex, anchorIndex); + var endIndex = Math.max(fromIndex + count - 1, anchorIndex); + this.setChangeEvents(false); + if (clearSelection) this._setAllSelected(false, true); + for(; startIndex <= endIndex; startIndex++)this.setIndexSelected(startIndex, true, false); + this.setChangeEvents(true); + }; Selection.prototype.selectToIndex = function(index, clearSelection) { if (this.mode === (0, _selectionTypes.SelectionMode).none) return; if (this.mode === (0, _selectionTypes.SelectionMode).single) { @@ -61253,7 +61425,7 @@ var _utilities = require("@fluentui/utilities"); // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/react-hooks", "8.6.1"); +(0, _setVersion.setVersion)("@fluentui/react-hooks", "8.6.11"); },{"@fluentui/set-version":"aMFYG"}],"4ue7h":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -61263,51 +61435,20 @@ parcelHelpers.defineInteropFlag(exports); */ parcelHelpers.export(exports, "useAsync", ()=>useAsync); var _utilities = require("@fluentui/utilities"); var _react = require("react"); -var _useConst = require("./useConst"); function useAsync() { - var async = (0, _useConst.useConst)(function() { - return new (0, _utilities.Async)(); - }); - // Function that returns a function in order to dispose the async instance on unmount + var asyncRef = _react.useRef(); + if (!asyncRef.current) asyncRef.current = new (0, _utilities.Async)(); _react.useEffect(function() { return function() { - return async.dispose(); + var _a; + (_a = asyncRef.current) === null || _a === void 0 || _a.dispose(); + asyncRef.current = undefined; }; - }, [ - async - ]); - return async; -} - -},{"@fluentui/utilities":"6wnm3","react":"8ePka","./useConst":"fltI2","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fltI2":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -/** - * Hook to initialize and return a constant value. Unlike `React.useMemo`, this is guaranteed to - * always return the same value (and if the initializer is a function, only call it once). - * This is similar to setting a private member in a class constructor. - * - * If the value should ever change based on dependencies, use `React.useMemo` instead. - * - * @param initialValue - Initial value, or function to get the initial value. Similar to `useState`, - * only the value/function passed in the first time this is called is respected. - * @returns The value. The identity of this value will always be the same. - */ parcelHelpers.export(exports, "useConst", ()=>useConst); -var _react = require("react"); -function useConst(initialValue) { - // Use useRef to store the value because it's the least expensive built-in hook that works here - // (we could also use `const [value] = React.useState(initialValue)` but that's more expensive - // internally due to reducer handling which we don't need) - var ref = _react.useRef(); - if (ref.current === undefined) // Box the value in an object so we can tell if it's initialized even if the initializer - // returns/is undefined - ref.current = { - value: typeof initialValue === "function" ? initialValue() : initialValue - }; - return ref.current.value; + }, []); + return asyncRef.current; } -},{"react":"8ePka","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"54CiG":[function(require,module,exports) { +},{"@fluentui/utilities":"6wnm3","react":"8ePka","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"54CiG":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); /** @@ -61348,7 +61489,35 @@ function useBoolean(initialState) { ]; } -},{"react":"8ePka","./useConst":"fltI2","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ftGjh":[function(require,module,exports) { +},{"react":"8ePka","./useConst":"fltI2","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fltI2":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +/** + * Hook to initialize and return a constant value. Unlike `React.useMemo`, this is guaranteed to + * always return the same value (and if the initializer is a function, only call it once). + * This is similar to setting a private member in a class constructor. + * + * If the value should ever change based on dependencies, use `React.useMemo` instead. + * + * @param initialValue - Initial value, or function to get the initial value. Similar to `useState`, + * only the value/function passed in the first time this is called is respected. + * @returns The value. The identity of this value will always be the same. + */ parcelHelpers.export(exports, "useConst", ()=>useConst); +var _react = require("react"); +function useConst(initialValue) { + // Use useRef to store the value because it's the least expensive built-in hook that works here + // (we could also use `const [value] = React.useState(initialValue)` but that's more expensive + // internally due to reducer handling which we don't need) + var ref = _react.useRef(); + if (ref.current === undefined) // Box the value in an object so we can tell if it's initialized even if the initializer + // returns/is undefined + ref.current = { + value: typeof initialValue === "function" ? initialValue() : initialValue + }; + return ref.current.value; +} + +},{"react":"8ePka","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ftGjh":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); /** @@ -61763,7 +61932,7 @@ parcelHelpers.exportAll(_windowProvider, exports); // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/react-window-provider", "2.2.1"); +(0, _setVersion.setVersion)("@fluentui/react-window-provider", "2.2.2"); },{"@fluentui/set-version":"aMFYG"}],"eR7zs":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -62062,7 +62231,7 @@ parcelHelpers.exportAll(_mergeStyles, exports); // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/style-utilities", "8.7.2"); +(0, _setVersion.setVersion)("@fluentui/style-utilities", "8.7.12"); },{"@fluentui/set-version":"aMFYG"}],"hVV04":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -62245,7 +62414,7 @@ function measure(func) { }, runState: { flushTimer: 0, - mode: 0 /* sync */ , + mode: 0 /* Mode.sync */ , buffer: [] } }); @@ -62260,7 +62429,7 @@ function loadStyles(styles, loadAsync) { measure(function() { var styleParts = Array.isArray(styles) ? styles : splitStyles(styles); var _a = _themeState.runState, mode = _a.mode, buffer = _a.buffer, flushTimer = _a.flushTimer; - if (loadAsync || mode === 1 /* async */ ) { + if (loadAsync || mode === 1 /* Mode.async */ ) { buffer.push(styleParts); if (!flushTimer) _themeState.runState.flushTimer = asyncLoadStyles(); } else applyThemableStyles(styleParts); @@ -62303,12 +62472,12 @@ function loadTheme(theme) { reloadStyles(); } function clearStyles(option) { - if (option === void 0) option = 3 /* all */ ; - if (option === 3 /* all */ || option === 2 /* onlyNonThemable */ ) { + if (option === void 0) option = 3 /* ClearStyleOptions.all */ ; + if (option === 3 /* ClearStyleOptions.all */ || option === 2 /* ClearStyleOptions.onlyNonThemable */ ) { clearStylesInternal(_themeState.registeredStyles); _themeState.registeredStyles = []; } - if (option === 3 /* all */ || option === 1 /* onlyThemable */ ) { + if (option === 3 /* ClearStyleOptions.all */ || option === 1 /* ClearStyleOptions.onlyThemable */ ) { clearStylesInternal(_themeState.registeredThemableStyles); _themeState.registeredThemableStyles = []; } @@ -62329,7 +62498,7 @@ function clearStylesInternal(records) { themableStyles.push(styleRecord.themableStyle); } if (themableStyles.length > 0) { - clearStyles(1 /* onlyThemable */ ); + clearStyles(1 /* ClearStyleOptions.onlyThemable */ ); applyThemableStyles([].concat.apply([], themableStyles)); } } @@ -62445,7 +62614,7 @@ var _fluentTheme = require("./FluentTheme"); // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/theme", "2.6.7"); +(0, _setVersion.setVersion)("@fluentui/theme", "2.6.16"); },{"@fluentui/set-version":"aMFYG"}],"54YSc":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -63814,21 +63983,22 @@ parcelHelpers.export(exports, "getInputFocusStyle", ()=>getInputFocusStyle); var _commonStyles = require("./CommonStyles"); var _utilities = require("@fluentui/utilities"); var _zIndexes = require("./zIndexes"); -function getFocusStyle(theme, insetOrOptions, position, highContrastStyle, borderColor, outlineColor, isFocusedOnly) { +function getFocusStyle(theme, insetOrOptions, position, highContrastStyle, borderColor, outlineColor, isFocusedOnly, borderRadius) { if (typeof insetOrOptions === "number" || !insetOrOptions) return _getFocusStyleInternal(theme, { inset: insetOrOptions, position: position, highContrastStyle: highContrastStyle, borderColor: borderColor, outlineColor: outlineColor, - isFocusedOnly: isFocusedOnly + isFocusedOnly: isFocusedOnly, + borderRadius: borderRadius }); else return _getFocusStyleInternal(theme, insetOrOptions); } function _getFocusStyleInternal(theme, options) { var _a, _b; if (options === void 0) options = {}; - var _c = options.inset, inset = _c === void 0 ? 0 : _c, _d = options.width, width = _d === void 0 ? 1 : _d, _e = options.position, position = _e === void 0 ? "relative" : _e, highContrastStyle = options.highContrastStyle, _f = options.borderColor, borderColor = _f === void 0 ? theme.palette.white : _f, _g = options.outlineColor, outlineColor = _g === void 0 ? theme.palette.neutralSecondary : _g, _h = options.isFocusedOnly, isFocusedOnly = _h === void 0 ? true : _h; + var borderRadius = options.borderRadius, _c = options.inset, inset = _c === void 0 ? 0 : _c, _d = options.width, width = _d === void 0 ? 1 : _d, _e = options.position, position = _e === void 0 ? "relative" : _e, highContrastStyle = options.highContrastStyle, _f = options.borderColor, borderColor = _f === void 0 ? theme.palette.white : _f, _g = options.outlineColor, outlineColor = _g === void 0 ? theme.palette.neutralSecondary : _g, _h = options.isFocusedOnly, isFocusedOnly = _h === void 0 ? true : _h; return { // Clear browser-specific focus styles and use 'transparent' as placeholder for focus style. outline: "transparent", @@ -63852,6 +64022,7 @@ function _getFocusStyleInternal(theme, options) { border: width + "px solid " + borderColor, outline: width + "px solid " + outlineColor, zIndex: (0, _zIndexes.ZIndexes).FocusStyle, + borderRadius: borderRadius, selectors: (_b = {}, _b[0, _commonStyles.HighContrastSelector] = highContrastStyle, _b) }, _a) }; @@ -64572,6 +64743,8 @@ parcelHelpers.exportAll(_index, exports); var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "getMenuItemStyles", ()=>(0, _contextualMenuCnstyles.getMenuItemStyles)); +parcelHelpers.export(exports, "getContextualMenuItemClassNames", ()=>(0, _contextualMenuClassNames.getItemClassNames)); +parcelHelpers.export(exports, "getContextualMenuItemStyles", ()=>(0, _contextualMenuClassNames.getItemStyles)); var _contextualMenu = require("./ContextualMenu"); parcelHelpers.exportAll(_contextualMenu, exports); var _contextualMenuBase = require("./ContextualMenu.base"); @@ -64585,8 +64758,9 @@ parcelHelpers.exportAll(_contextualMenuItemBase, exports); var _contextualMenuItemTypes = require("./ContextualMenuItem.types"); parcelHelpers.exportAll(_contextualMenuItemTypes, exports); var _contextualMenuCnstyles = require("./ContextualMenu.cnstyles"); +var _contextualMenuClassNames = require("./ContextualMenu.classNames"); -},{"./ContextualMenu":"7QQsJ","./ContextualMenu.base":"4PcRn","./ContextualMenu.types":"caH26","./ContextualMenuItem":"gtwxS","./ContextualMenuItem.base":"bS1pa","./ContextualMenuItem.types":"h0O6D","./ContextualMenu.cnstyles":"b8RGv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7QQsJ":[function(require,module,exports) { +},{"./ContextualMenu":"7QQsJ","./ContextualMenu.base":"4PcRn","./ContextualMenu.types":"caH26","./ContextualMenuItem":"gtwxS","./ContextualMenuItem.base":"bS1pa","./ContextualMenuItem.types":"h0O6D","./ContextualMenu.cnstyles":"b8RGv","./ContextualMenu.classNames":"XiyJW","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7QQsJ":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "ContextualMenu", ()=>ContextualMenu); @@ -64798,27 +64972,33 @@ function useShouldUpdateFocusOnMouseMove(_a) { } function usePreviousActiveElement(_a, targetWindow) { var hidden = _a.hidden, onRestoreFocus = _a.onRestoreFocus; - var previousActiveElement = _react.useRef(); + var previousElementsQueue = _react.useRef([]); var tryFocusPreviousActiveElement = _react.useCallback(function(options) { var _a, _b; if (onRestoreFocus) onRestoreFocus(options); else if (options === null || options === void 0 ? void 0 : options.documentContainsFocus) // Make sure that the focus method actually exists // In some cases the object might exist but not be a real element. // This is primarily for IE 11 and should be removed once IE 11 is no longer in use. - (_b = (_a = previousActiveElement.current) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 || _b.call(_a); + (_b = (_a = previousElementsQueue.current[0]) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 || _b.call(_a); }, [ onRestoreFocus ]); (0, _reactHooks.useIsomorphicLayoutEffect)(function() { var _a; - if (!hidden) previousActiveElement.current = targetWindow === null || targetWindow === void 0 ? void 0 : targetWindow.document.activeElement; - else if (previousActiveElement.current) { + if (!hidden) { + var targetElement = targetWindow === null || targetWindow === void 0 ? void 0 : targetWindow.document.activeElement; + var targetPosition = previousElementsQueue.current.indexOf(targetElement); + if (targetPosition > -1) previousElementsQueue.current = previousElementsQueue.current.slice(targetPosition + 1); + else previousElementsQueue.current = (0, _tslib.__spreadArray)([ + targetElement + ], previousElementsQueue.current); + } else if (previousElementsQueue.current.length > 0) { tryFocusPreviousActiveElement({ - originalElement: previousActiveElement.current, + originalElement: previousElementsQueue.current[0], containsFocus: true, documentContainsFocus: ((_a = (0, _utilities.getDocument)()) === null || _a === void 0 ? void 0 : _a.hasFocus()) || false }); - previousActiveElement.current = undefined; + previousElementsQueue.current = []; } }, [ hidden, @@ -65432,7 +65612,7 @@ var ContextualMenuBase = _react.memo(_react.forwardRef(function(propsWithoutDefa labelElementId: labelElementId }, function(menuListProps, defaultRender) { return onDefaultRenderMenuList(menuListProps, classNames, defaultRender); - }), adjustedFocusZoneProps) : null, submenuProps && onRenderSubMenu(submenuProps, onDefaultRenderSubMenu))); + }), adjustedFocusZoneProps) : null, submenuProps && onRenderSubMenu(submenuProps, onDefaultRenderSubMenu)), _react.createElement((0, _utilities.FocusRects), null)); }); } else return null; //#endregion @@ -65515,7 +65695,7 @@ parcelHelpers.exportAll(_index, exports); // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/react-focus", "8.7.3"); +(0, _setVersion.setVersion)("@fluentui/react-focus", "8.8.5"); },{"@fluentui/set-version":"aMFYG"}],"aHWFR":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -65802,7 +65982,6 @@ var FocusZone = /** @class */ function(_super) { var root = this._root.current; _allInstances[this._id] = this; if (root) { - this._windowElement = (0, _utilities.getWindow)(root); var parentElement = (0, _utilities.getParent)(root, ALLOW_VIRTUAL_ELEMENTS); while(parentElement && parentElement !== this._getDocument().body && parentElement.nodeType === 1){ if ((0, _utilities.isElementFocusZone)(parentElement)) { @@ -65813,7 +65992,7 @@ var FocusZone = /** @class */ function(_super) { } if (!this._isInnerZone) { _outerZones.add(this); - if (this._windowElement && _outerZones.size === 1) this._windowElement.addEventListener("keydown", FocusZone._onKeyDownCapture, true); + this._root.current && this._root.current.addEventListener("keydown", FocusZone._onKeyDownCapture, true); } this._root.current && this._root.current.addEventListener("blur", this._onBlur, true); // Assign initial tab indexes so that we can set initial focus as appropriate. @@ -65850,8 +66029,7 @@ var FocusZone = /** @class */ function(_super) { delete _allInstances[this._id]; if (!this._isInnerZone) { _outerZones.delete(this); - // If this is the last outer zone, remove the keydown listener. - if (this._windowElement && _outerZones.size === 0) this._windowElement.removeEventListener("keydown", FocusZone._onKeyDownCapture, true); + this._root.current && this._root.current.removeEventListener("keydown", FocusZone._onKeyDownCapture, true); } if (this._root.current) this._root.current.removeEventListener("blur", this._onBlur, true); this._activeElement = null; @@ -65894,9 +66072,11 @@ var FocusZone = /** @class */ function(_super) { * Sets focus to the first tabbable item in the zone. * @param forceIntoFirstElement - If true, focus will be forced into the first element, even * if focus is already in the focus zone. + * @param bypassHiddenElements - If true, focus will be not be set on hidden elements. * @returns True if focus could be set to an active element, false if no operation was taken. - */ FocusZone.prototype.focus = function(forceIntoFirstElement) { + */ FocusZone.prototype.focus = function(forceIntoFirstElement, bypassHiddenElements) { if (forceIntoFirstElement === void 0) forceIntoFirstElement = false; + if (bypassHiddenElements === void 0) bypassHiddenElements = false; if (this._root.current) { if (!forceIntoFirstElement && this._root.current.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === "true" && this._isInnerZone) { var ownerZoneElement = this._getOwnerZone(this._root.current); @@ -65905,12 +66085,12 @@ var FocusZone = /** @class */ function(_super) { return !!ownerZone && ownerZone.focusElement(this._root.current); } return false; - } else if (!forceIntoFirstElement && this._activeElement && (0, _utilities.elementContains)(this._root.current, this._activeElement) && (0, _utilities.isElementTabbable)(this._activeElement)) { + } else if (!forceIntoFirstElement && this._activeElement && (0, _utilities.elementContains)(this._root.current, this._activeElement) && (0, _utilities.isElementTabbable)(this._activeElement) && (!bypassHiddenElements || (0, _utilities.isElementVisibleAndNotHidden)(this._activeElement))) { this._activeElement.focus(); return true; } else { var firstChild = this._root.current.firstChild; - return this.focusElement((0, _utilities.getNextElement)(this._root.current, firstChild, true)); + return this.focusElement((0, _utilities.getNextElement)(this._root.current, firstChild, true, undefined, undefined, undefined, undefined, undefined, bypassHiddenElements)); } } return false; @@ -66769,7 +66949,7 @@ var CalloutContentBase = _react.memo(_react.forwardRef(function(propsWithoutDefa var props = (0, _utilities.getPropsWithDefaults)(DEFAULT_PROPS, propsWithoutDefaults); var styles = props.styles, style = props.style, ariaLabel = props.ariaLabel, ariaDescribedBy = props.ariaDescribedBy, ariaLabelledBy = props.ariaLabelledBy, className = props.className, isBeakVisible = props.isBeakVisible, children = props.children, beakWidth = props.beakWidth, calloutWidth = props.calloutWidth, calloutMaxWidth = props.calloutMaxWidth, calloutMinWidth = props.calloutMinWidth, doNotLayer = props.doNotLayer, finalHeight = props.finalHeight, _a = props.hideOverflow, hideOverflow = _a === void 0 ? !!finalHeight : _a, backgroundColor = props.backgroundColor, calloutMaxHeight = props.calloutMaxHeight, onScroll = props.onScroll, // eslint-disable-next-line deprecation/deprecation _b = props.shouldRestoreFocus, // eslint-disable-next-line deprecation/deprecation - shouldRestoreFocus = _b === void 0 ? true : _b, target = props.target, hidden = props.hidden, onLayerMounted = props.onLayerMounted; + shouldRestoreFocus = _b === void 0 ? true : _b, target = props.target, hidden = props.hidden, onLayerMounted = props.onLayerMounted, popupProps = props.popupProps; var hostElement = _react.useRef(null); var _c = _react.useState(null), calloutElement = _c[0], setCalloutElement = _c[1]; var calloutCallback = _react.useCallback(function(calloutEl) { @@ -66838,7 +67018,7 @@ var CalloutContentBase = _react.memo(_react.forwardRef(function(propsWithoutDefa style: getBeakPosition(positions) }), beakVisible && _react.createElement("div", { className: classNames.beakCurtain - }), _react.createElement((0, _popup.Popup), { + }), _react.createElement((0, _popup.Popup), (0, _tslib.__assign)({ // don't use getNativeElementProps for role and roledescription because it will also // pass through data-* props (resulting in them being used in two places) role: props.role, @@ -66854,7 +67034,7 @@ var CalloutContentBase = _react.memo(_react.forwardRef(function(propsWithoutDefa onScroll: onScroll, shouldRestoreFocus: shouldRestoreFocus, style: overflowStyle - }, children))); + }, popupProps), children))); }), function(previousProps, nextProps) { if (!nextProps.shouldUpdateWhenHidden && previousProps.hidden && nextProps.hidden) // Do not update when hidden. return true; @@ -67838,7 +68018,16 @@ var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "createDefaultLayerHost", ()=>(0, _layerNotification.createDefaultLayerHost)); parcelHelpers.export(exports, "cleanupDefaultLayerHost", ()=>(0, _layerNotification.cleanupDefaultLayerHost)); +parcelHelpers.export(exports, "getLayerHostSelector", ()=>(0, _layerNotification.getDefaultTarget)); +parcelHelpers.export(exports, "getLayerCount", ()=>(0, _layerNotification.getLayerCount)); +parcelHelpers.export(exports, "getLayerHost", ()=>(0, _layerNotification.getLayerHost)); +parcelHelpers.export(exports, "notifyHostChanged", ()=>(0, _layerNotification.notifyHostChanged)); +parcelHelpers.export(exports, "registerLayer", ()=>(0, _layerNotification.registerLayer)); +parcelHelpers.export(exports, "registerLayerHost", ()=>(0, _layerNotification.registerLayerHost)); parcelHelpers.export(exports, "setLayerHostSelector", ()=>(0, _layerNotification.setDefaultTarget)); +parcelHelpers.export(exports, "unregisterLayer", ()=>(0, _layerNotification.unregisterLayer)); +parcelHelpers.export(exports, "unregisterLayerHost", ()=>(0, _layerNotification.unregisterLayerHost)); +parcelHelpers.export(exports, "getLayerStyles", ()=>(0, _layerStyles.getStyles)); var _layer = require("./Layer"); parcelHelpers.exportAll(_layer, exports); var _layerBase = require("./Layer.base"); @@ -67850,8 +68039,9 @@ parcelHelpers.exportAll(_layerHost, exports); var _layerHostTypes = require("./LayerHost.types"); parcelHelpers.exportAll(_layerHostTypes, exports); var _layerNotification = require("./Layer.notification"); +var _layerStyles = require("./Layer.styles"); -},{"./Layer":"lx0Yf","./Layer.base":"1XPON","./Layer.types":"jRDWI","./LayerHost":"7K0Bc","./LayerHost.types":"jC168","./Layer.notification":"hAJk7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lx0Yf":[function(require,module,exports) { +},{"./Layer":"lx0Yf","./Layer.base":"1XPON","./Layer.types":"jRDWI","./LayerHost":"7K0Bc","./LayerHost.types":"jC168","./Layer.notification":"hAJk7","./Layer.styles":"2i1qc","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lx0Yf":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "Layer", ()=>Layer); @@ -67887,6 +68077,7 @@ var LayerBase = _react.forwardRef(function(props, ref) { var rootRef = _react.useRef(null); var mergedRef = (0, _reactHooks.useMergedRefs)(rootRef, ref); var layerRef = _react.useRef(); + var fabricRef = _react.useRef(null); // Tracks if the layer mount events need to be raised. // Required to allow the DOM to render after the layer element is added. var _a = _react.useState(false), needRaiseLayerMount = _a[0], setNeedRaiseLayerMount = _a[1]; @@ -67974,9 +68165,13 @@ var LayerBase = _react.forwardRef(function(props, ref) { return _react.createElement("span", { className: "ms-layer", ref: mergedRef - }, layerRef.current && _reactDom.createPortal(/* eslint-disable deprecation/deprecation */ _react.createElement((0, _fabric.Fabric), (0, _tslib.__assign)({}, !eventBubblingEnabled && getFilteredEvents(), { - className: classNames.content - }), children), /* eslint-enable deprecation/deprecation */ layerRef.current)); + }, layerRef.current && _reactDom.createPortal(_react.createElement((0, _utilities.FocusRectsProvider), { + layerRoot: true, + providerRef: fabricRef + }, _react.createElement((0, _fabric.Fabric), (0, _tslib.__assign)({}, !eventBubblingEnabled && getFilteredEvents(), { + className: classNames.content, + ref: fabricRef + }), children)), layerRef.current)); }); LayerBase.displayName = "LayerBase"; var filteredEventProps; @@ -68116,7 +68311,6 @@ var FabricBase = _react.forwardRef(function(props, ref) { }); var rootElement = _react.useRef(null); useApplyThemeToBody(applyThemeToBody, classNames, rootElement); - (0, _utilities.useFocusRects)(rootElement); return _react.createElement(_react.Fragment, null, useRenderedContent(props, classNames, rootElement, ref)); }); FabricBase.displayName = "FabricBase"; @@ -68127,12 +68321,14 @@ function useRenderedContent(props, _a, rootElement, ref) { "dir" ]); var _c = getDir(props), rootDir = _c.rootDir, needsTheme = _c.needsTheme; - var renderedContent = _react.createElement(Root, (0, _tslib.__assign)({ + var renderedContent = _react.createElement((0, _utilities.FocusRectsProvider), { + providerRef: rootElement + }, _react.createElement(Root, (0, _tslib.__assign)({ dir: rootDir }, divProps, { className: root, ref: (0, _reactHooks.useMergedRefs)(rootElement, ref) - })); + }))); // Create the contextual theme if component direction does not match parent direction. if (needsTheme) // Disabling ThemeProvider here because theme doesn't need to be re-provided by ThemeProvider if dir has changed. renderedContent = // eslint-disable-next-line deprecation/deprecation @@ -68214,33 +68410,33 @@ var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); /** * Register a layer for a given host id - * @param hostId Id of the layer host - * @param layer Layer instance + * @param hostId - Id of the layer host + * @param layer - Layer instance */ parcelHelpers.export(exports, "registerLayer", ()=>registerLayer); /** * Unregister a layer for a given host id - * @param hostId Id of the layer host - * @param layer Layer instance + * @param hostId - Id of the layer host + * @param layer - Layer instance */ parcelHelpers.export(exports, "unregisterLayer", ()=>unregisterLayer); /** * Gets the number of layers currently registered with a host id. - * @param hostId Id of the layer host. + * @param hostId - Id of the layer host. * @returns The number of layers currently registered with the host. */ parcelHelpers.export(exports, "getLayerCount", ()=>getLayerCount); /** * Gets the Layer Host instance associated with a hostId, if applicable. - * @param hostId + * @param hostId - Id of the layer host * @returns A component ref for the associated layer host. */ parcelHelpers.export(exports, "getLayerHost", ()=>getLayerHost); /** * Registers a Layer Host with an associated hostId. - * @param hostId Id of the layer host - * @param layerHost layer host instance + * @param hostId - Id of the layer host + * @param layerHost - layer host instance */ parcelHelpers.export(exports, "registerLayerHost", ()=>registerLayerHost); /** * Unregisters a Layer Host from the associated hostId. - * @param hostId Id of the layer host - * @param layerHost layer host instance + * @param hostId - Id of the layer host + * @param layerHost - layer host instance */ parcelHelpers.export(exports, "unregisterLayerHost", ()=>unregisterLayerHost); /** * When no default layer host is provided, this function is executed to create the default host. @@ -76148,7 +76344,7 @@ var _measureScrollRect = _measurePageRect; var scrollTop = 0; var itemsPerPage = 1; for(var itemIndex = startIndex; itemIndex < endIndex; itemIndex += itemsPerPage){ - var pageSpecification = this._getPageSpecification(itemIndex, allowedRect); + var pageSpecification = this._getPageSpecification(this.props, itemIndex, allowedRect); var pageHeight = pageSpecification.height; itemsPerPage = pageSpecification.itemCount; var requestedIndexIsInPage = itemIndex <= index && itemIndex + itemsPerPage > index; @@ -76534,7 +76730,7 @@ var _measureScrollRect = _measurePageRect; var isFirstRender = this._estimatedPageHeight === 0 && !getPageHeight; var allowedRect = this._allowedRect; var _loop_1 = function(itemIndex) { - var pageSpecification = this_1._getPageSpecification(itemIndex, allowedRect); + var pageSpecification = this_1._getPageSpecification(props, itemIndex, allowedRect); var pageHeight = pageSpecification.height; var pageData = pageSpecification.data; var key = pageSpecification.key; @@ -76597,8 +76793,8 @@ var _measureScrollRect = _measurePageRect; measureVersion: this._measureVersion }); }; - List.prototype._getPageSpecification = function(itemIndex, visibleRect) { - var getPageSpecification = this.props.getPageSpecification; + List.prototype._getPageSpecification = function(props, itemIndex, visibleRect) { + var getPageSpecification = props.getPageSpecification; if (getPageSpecification) { var pageData = getPageSpecification(itemIndex, visibleRect); var _a = pageData.itemCount, itemCount = _a === void 0 ? this._getItemCountForPage(itemIndex, visibleRect) : _a; @@ -76786,6 +76982,9 @@ parcelHelpers.exportAll(_index, exports); },{"./components/CommandBar/index":"1w28u","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1w28u":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "getCommandBarStyles", ()=>(0, _commandBarStyles.getStyles)); +parcelHelpers.export(exports, "getCommandButtonStyles", ()=>(0, _commandBarStyles.getCommandButtonStyles)); +var _commandBarStyles = require("./CommandBar.styles"); var _commandBar = require("./CommandBar"); parcelHelpers.exportAll(_commandBar, exports); var _commandBarBase = require("./CommandBar.base"); @@ -76793,7 +76992,71 @@ parcelHelpers.exportAll(_commandBarBase, exports); var _commandBarTypes = require("./CommandBar.types"); parcelHelpers.exportAll(_commandBarTypes, exports); -},{"./CommandBar":"9EUs1","./CommandBar.base":"ftuio","./CommandBar.types":"eWnW9","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9EUs1":[function(require,module,exports) { +},{"./CommandBar.styles":"1TgsQ","./CommandBar":"9EUs1","./CommandBar.base":"ftuio","./CommandBar.types":"eWnW9","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1TgsQ":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "getStyles", ()=>getStyles); +parcelHelpers.export(exports, "getCommandButtonStyles", ()=>getCommandButtonStyles); +var _tslib = require("tslib"); +var _utilities = require("../../Utilities"); +var COMMAND_BAR_HEIGHT = 44; +var getStyles = function(props) { + var className = props.className, theme = props.theme; + var semanticColors = theme.semanticColors; + return { + root: [ + theme.fonts.medium, + "ms-CommandBar", + { + display: "flex", + backgroundColor: semanticColors.bodyBackground, + padding: "0 14px 0 24px", + height: COMMAND_BAR_HEIGHT + }, + className, + ], + primarySet: [ + "ms-CommandBar-primaryCommand", + { + flexGrow: "1", + display: "flex", + alignItems: "stretch" + }, + ], + secondarySet: [ + "ms-CommandBar-secondaryCommand", + { + flexShrink: "0", + display: "flex", + alignItems: "stretch" + }, + ] + }; +}; +var getCommandButtonStyles = (0, _utilities.memoizeFunction)(function(customStyles) { + var rootStyles = { + height: "100%" + }; + var labelStyles = { + whiteSpace: "nowrap" + }; + var _a = customStyles || {}, root = _a.root, label = _a.label, restCustomStyles = (0, _tslib.__rest)(_a, [ + "root", + "label" + ]); + return (0, _tslib.__assign)((0, _tslib.__assign)({}, restCustomStyles), { + root: root ? [ + rootStyles, + root + ] : rootStyles, + label: label ? [ + labelStyles, + label + ] : labelStyles + }); +}); + +},{"tslib":"01Tx1","../../Utilities":"d0PNn","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9EUs1":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "CommandBar", ()=>CommandBar); @@ -76911,6 +77174,7 @@ var CommandBarBase = /** @class */ function(_super) { _this._onReduceData = function(data) { var _a = _this.props, shiftOnReduce = _a.shiftOnReduce, onDataReduced = _a.onDataReduced; var primaryItems = data.primaryItems, overflowItems = data.overflowItems, cacheKey = data.cacheKey; + var farItems = data.farItems; // Use first item if shiftOnReduce, otherwise use last item var movedItem = primaryItems[shiftOnReduce ? 0 : primaryItems.length - 1]; if (movedItem !== undefined) { @@ -76925,7 +77189,8 @@ var CommandBarBase = /** @class */ function(_super) { }); cacheKey = _this._computeCacheKey({ primaryItems: primaryItems, - overflow: overflowItems.length > 0 + overflow: overflowItems.length > 0, + farItems: farItems }); if (onDataReduced) onDataReduced(movedItem); newData.cacheKey = cacheKey; @@ -76937,6 +77202,7 @@ var CommandBarBase = /** @class */ function(_super) { var _a = _this.props, shiftOnReduce = _a.shiftOnReduce, onDataGrown = _a.onDataGrown; var minimumOverflowItems = data.minimumOverflowItems; var primaryItems = data.primaryItems, overflowItems = data.overflowItems, cacheKey = data.cacheKey; + var farItems = data.farItems; var movedItem = overflowItems[0]; // Make sure that moved item exists and is not one of the original overflow items if (movedItem !== undefined && overflowItems.length > minimumOverflowItems) { @@ -76954,7 +77220,8 @@ var CommandBarBase = /** @class */ function(_super) { }); cacheKey = _this._computeCacheKey({ primaryItems: primaryItems, - overflow: overflowItems.length > 0 + overflow: overflowItems.length > 0, + farItems: farItems }); if (onDataGrown) onDataGrown(movedItem); newData.cacheKey = cacheKey; @@ -76974,7 +77241,8 @@ var CommandBarBase = /** @class */ function(_super) { farItems: farItems, cacheKey: this._computeCacheKey({ primaryItems: (0, _tslib.__spreadArray)([], items), - overflow: overflowItems && overflowItems.length > 0 + overflow: overflowItems && overflowItems.length > 0, + farItems: farItems }) }; this._classNames = getClassNames(styles, { @@ -77008,16 +77276,18 @@ var CommandBarBase = /** @class */ function(_super) { }; }; CommandBarBase.prototype._computeCacheKey = function(data) { - var primaryItems = data.primaryItems, overflow = data.overflow; + var primaryItems = data.primaryItems, overflow = data.overflow, farItems = data.farItems; var returnKey = function(acc, current) { var _a = current.cacheKey, cacheKey = _a === void 0 ? current.key : _a; return acc + cacheKey; }; var primaryKey = primaryItems && primaryItems.reduce(returnKey, ""); var overflowKey = overflow ? "overflow" : ""; + var farKey = farItems && farItems.reduce(returnKey, ""); return [ primaryKey, - overflowKey + overflowKey, + farKey ].join(""); }; CommandBarBase.defaultProps = { @@ -77068,9 +77338,9 @@ var COMPONENT_NAME = "OverflowSet"; var useComponentRef = function(props, divContainer) { _react.useImperativeHandle(props.componentRef, function() { return { - focus: function() { + focus: function(_forceIntoFirstElement, bypassHiddenElements) { var focusSucceeded = false; - if (divContainer.current) focusSucceeded = (0, _utilities.focusFirstChild)(divContainer.current); + if (divContainer.current) focusSucceeded = (0, _utilities.focusFirstChild)(divContainer.current, bypassHiddenElements); return focusSucceeded; }, focusElement: function(childElement) { @@ -77958,9 +78228,9 @@ var TooltipHostBase = /** @class */ function(_super) { }); var isTooltipVisible = this.state.isTooltipVisible; var tooltipId = id || this._defaultTooltipId; - var isContentPresent = !!(content || tooltipProps && tooltipProps.onRenderContent && tooltipProps.onRenderContent()); - var showTooltip = isTooltipVisible && isContentPresent; - var ariaDescribedBy = setAriaDescribedBy && isTooltipVisible && isContentPresent ? tooltipId : undefined; + var tooltipContent = (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.onRenderContent) ? tooltipProps.onRenderContent() : content; + var showTooltip = isTooltipVisible && !!tooltipContent; + var ariaDescribedBy = setAriaDescribedBy && isTooltipVisible && !!tooltipContent ? tooltipId : undefined; return _react.createElement("div", (0, _tslib.__assign)({ className: this._classNames.root, ref: this._tooltipHost @@ -77993,7 +78263,7 @@ var TooltipHostBase = /** @class */ function(_super) { hidden: true, id: tooltipId, style: (0, _styling.hiddenContentStyle) - }, content)); + }, tooltipContent)); }; TooltipHostBase.prototype.componentWillUnmount = function() { if (TooltipHostBase._currentVisibleTooltip && TooltipHostBase._currentVisibleTooltip === this) TooltipHostBase._currentVisibleTooltip = undefined; @@ -78041,71 +78311,7 @@ var getStyles = function(props) { }; }; -},{"../../Styling":"fmg3v","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1TgsQ":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "getStyles", ()=>getStyles); -parcelHelpers.export(exports, "getCommandButtonStyles", ()=>getCommandButtonStyles); -var _tslib = require("tslib"); -var _utilities = require("../../Utilities"); -var COMMAND_BAR_HEIGHT = 44; -var getStyles = function(props) { - var className = props.className, theme = props.theme; - var semanticColors = theme.semanticColors; - return { - root: [ - theme.fonts.medium, - "ms-CommandBar", - { - display: "flex", - backgroundColor: semanticColors.bodyBackground, - padding: "0 14px 0 24px", - height: COMMAND_BAR_HEIGHT - }, - className, - ], - primarySet: [ - "ms-CommandBar-primaryCommand", - { - flexGrow: "1", - display: "flex", - alignItems: "stretch" - }, - ], - secondarySet: [ - "ms-CommandBar-secondaryCommand", - { - flexShrink: "0", - display: "flex", - alignItems: "stretch" - }, - ] - }; -}; -var getCommandButtonStyles = (0, _utilities.memoizeFunction)(function(customStyles) { - var rootStyles = { - height: "100%" - }; - var labelStyles = { - whiteSpace: "nowrap" - }; - var _a = customStyles || {}, root = _a.root, label = _a.label, restCustomStyles = (0, _tslib.__rest)(_a, [ - "root", - "label" - ]); - return (0, _tslib.__assign)((0, _tslib.__assign)({}, restCustomStyles), { - root: root ? [ - rootStyles, - root - ] : rootStyles, - label: label ? [ - labelStyles, - label - ] : labelStyles - }); -}); - -},{"tslib":"01Tx1","../../Utilities":"d0PNn","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"eWnW9":[function(require,module,exports) { +},{"../../Styling":"fmg3v","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"eWnW9":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -78421,7 +78627,7 @@ var ModalBase = _react.forwardRef(function(propsWithoutDefaults, ref) { eventBubblingEnabled: false }, layerProps), { onLayerDidMount: layerProps && layerProps.onLayerDidMount ? layerProps.onLayerDidMount : onLayerDidMount, - insertFirst: isModeless, + insertFirst: (layerProps === null || layerProps === void 0 ? void 0 : layerProps.insertFirst) || isModeless, className: classNames.layer }); // Allow the user to scroll within the modal but not on the body @@ -78736,7 +78942,7 @@ var getStyles = function(props) { fonts.medium, { backgroundColor: "transparent", - position: isModeless ? "absolute" : "fixed", + position: "fixed", height: "100%", width: "100%", display: "flex", @@ -78751,7 +78957,9 @@ var getStyles = function(props) { }, isOpen && classNames.isOpen, isVisible && { - opacity: 1, + opacity: 1 + }, + isVisible && !isModeless && { pointerEvents: "auto" }, className, @@ -78773,6 +78981,9 @@ var getStyles = function(props) { overflowY: "auto", zIndex: isModeless ? (0, _styling.ZIndexes).Layer : undefined }, + isModeless && { + pointerEvents: "auto" + }, topOffsetFixed && typeof modalRectangleTop === "number" && hasBeenOpened && { top: modalRectangleTop }, @@ -78797,10 +79008,8 @@ var getStyles = function(props) { layerClassName, classNames.layer, { - position: "static", - width: "unset", - height: "unset" - }, + pointerEvents: "none" + } ], keyboardMoveIconContainer: { position: "absolute", @@ -79939,7 +80148,7 @@ var DropdownInternal = /** @class */ function(_super) { title: title, // eslint-disable-next-line react/jsx-no-bind onRenderLabel: _this._onRenderItemLabel.bind(_this, item), - className: itemClassName, + className: (0, _utilities.css)(itemClassName, "is-multi-select"), checked: isItemSelected, styles: multiSelectItemStyles, ariaPositionInSet: !item.hidden ? _this._sizePosCache.positionInSet(item.index) : undefined, @@ -81399,23 +81608,22 @@ var getStyles = function(props) { if (isSelected === void 0) isSelected = false; return { selectors: (_a = { - "&:hover:focus": [ + "&:hover": [ { color: semanticColors.menuItemTextHovered, backgroundColor: !isSelected ? semanticColors.menuItemBackgroundHovered : selectedItemBackgroundColor }, highContrastItemAndTitleStateMixin, ], - "&:focus": [ + "&.is-multi-select:hover": [ { backgroundColor: !isSelected ? "transparent" : selectedItemBackgroundColor - }, - highContrastItemAndTitleStateMixin, + } ], - "&:active": [ + "&:active:hover": [ { color: semanticColors.menuItemTextHovered, - backgroundColor: !isSelected ? semanticColors.menuBackground : semanticColors.menuItemBackgroundHovered + backgroundColor: !isSelected ? semanticColors.menuItemBackgroundPressed : semanticColors.menuItemBackgroundHovered }, highContrastItemAndTitleStateMixin, ] @@ -84096,7 +84304,7 @@ exports.default = registerIconAliases; // Do not modify this file; it is generated as part of publish. // The checked in version is a placeholder only and will not be updated. var _setVersion = require("@fluentui/set-version"); -(0, _setVersion.setVersion)("@fluentui/font-icons-mdl2", "8.4.3"); +(0, _setVersion.setVersion)("@fluentui/font-icons-mdl2", "8.4.13"); },{"@fluentui/set-version":"aMFYG"}],"brPQz":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -85018,16 +85226,18 @@ parcelHelpers.exportAll(_index, exports); },{"./components/TextField/index":"iRJVA","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"iRJVA":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "getTextFieldStyles", ()=>(0, _textFieldStyles.getStyles)); var _textField = require("./TextField"); parcelHelpers.exportAll(_textField, exports); var _textFieldBase = require("./TextField.base"); parcelHelpers.exportAll(_textFieldBase, exports); +var _textFieldStyles = require("./TextField.styles"); var _textFieldTypes = require("./TextField.types"); parcelHelpers.exportAll(_textFieldTypes, exports); var _maskedTextField = require("./MaskedTextField/MaskedTextField"); parcelHelpers.exportAll(_maskedTextField, exports); -},{"./TextField":"hK2mI","./TextField.base":"31PTX","./TextField.types":"1P271","./MaskedTextField/MaskedTextField":"gGjsl","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hK2mI":[function(require,module,exports) { +},{"./TextField":"hK2mI","./TextField.base":"31PTX","./TextField.styles":"4dBZS","./TextField.types":"1P271","./MaskedTextField/MaskedTextField":"gGjsl","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hK2mI":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "TextField", ()=>TextField); @@ -85514,7 +85724,7 @@ function _browserNeedsRevealButton() { var win = (0, _utilities.getWindow)(); if (win === null || win === void 0 ? void 0 : win.navigator) { // Edge, Chromium Edge - var isEdge = /^Edg/.test(win.navigator.userAgent || ""); + var isEdge = /Edg/.test(win.navigator.userAgent || ""); __browserNeedsRevealButton = !((0, _utilities.isIE11)() || isEdge); } else __browserNeedsRevealButton = true; } @@ -87733,9 +87943,9 @@ parcelHelpers.export(exports, "timeFormatLocale", ()=>(0, _vegaFormat.timeFormat parcelHelpers.export(exports, "expressionFunction", ()=>(0, _vegaFunctions.expressionFunction)); parcelHelpers.export(exports, "parse", ()=>(0, _vegaParser.parse)); parcelHelpers.export(exports, "runtimeContext", ()=>(0, _vegaRuntime.context)); -parcelHelpers.export(exports, "codegenExpression", ()=>(0, _vegaExpression.codegen)); -parcelHelpers.export(exports, "parseExpression", ()=>(0, _vegaExpression.parse)); -parcelHelpers.export(exports, "parseSelector", ()=>(0, _vegaEventSelector.selector)); +parcelHelpers.export(exports, "codegenExpression", ()=>(0, _vegaExpression.codegenExpression)); +parcelHelpers.export(exports, "parseExpression", ()=>(0, _vegaExpression.parseExpression)); +parcelHelpers.export(exports, "parseSelector", ()=>(0, _vegaEventSelector.parseSelector)); parcelHelpers.export(exports, "version", ()=>version); var _vegaUtil = require("vega-util"); var _vegaDataflow = require("vega-dataflow"); @@ -87768,90 +87978,9 @@ var _vegaParser = require("vega-parser"); var _vegaRuntime = require("vega-runtime"); var _vegaExpression = require("vega-expression"); var _vegaEventSelector = require("vega-event-selector"); -var name = "vega"; -var version$1 = "5.20.2"; -var description = "The Vega visualization grammar."; -var keywords = [ - "vega", - "visualization", - "interaction", - "dataflow", - "library", - "data", - "d3" -]; -var license = "BSD-3-Clause"; -var author = "UW Interactive Data Lab (http://idl.cs.washington.edu)"; -var main = "build/vega-node.js"; -var module = "build/vega.module.js"; -var unpkg = "build/vega.min.js"; -var jsdelivr = "build/vega.min.js"; -var types = "index.d.ts"; -var repository = "vega/vega"; -var scripts = { - bundle: "rollup -c --config-bundle", - prebuild: "rimraf build && rimraf build-es5", - build: "rollup -c --config-core --config-bundle --config-ie", - postbuild: "node schema-copy", - pretest: "yarn build --config-test", - test: "TZ=America/Los_Angeles tape 'test/**/*-test.js'", - prepublishOnly: "yarn test && yarn build", - postpublish: "./schema-deploy.sh" -}; -var dependencies = { - "vega-crossfilter": "~4.0.5", - "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", - "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", - "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", - "vega-wordcloud": "~4.1.3" -}; -var devDependencies = { - "vega-schema": "*" -}; -var gitHead = "e251dbc61ab6645689d9f349e7dd9d15ddb85bce"; -var pkg = { - name: name, - version: version$1, - description: description, - keywords: keywords, - license: license, - author: author, - main: main, - module: module, - unpkg: unpkg, - jsdelivr: jsdelivr, - types: types, - repository: repository, - scripts: scripts, - dependencies: dependencies, - devDependencies: devDependencies, - gitHead: gitHead -}; +var version = "5.22.1"; // -- Transforms ----- (0, _vegaUtil.extend)((0, _vegaDataflow.transforms), _vegaTransforms, _vegaViewTransforms, _vegaEncode, _vegaGeo, _vegaForce, _vegaLabel, _vegaHierarchy, _vegaRegression, _vegaVoronoi, _vegaWordcloud, _vegaCrossfilter); // -- Exports ----- -const version = pkg.version; },{"vega-util":"dPFAY","vega-dataflow":"4kvYg","vega-transforms":"b5NmQ","vega-view-transforms":"5GAYs","vega-encode":"045Ip","vega-geo":"35zWv","vega-force":"gbywE","vega-hierarchy":"5vTN6","vega-label":"1Rqgb","vega-regression":"kvZot","vega-voronoi":"6qrVt","vega-wordcloud":"77b1A","vega-crossfilter":"e4OAM","vega-statistics":"hZmG3","vega-time":"hDlOp","vega-loader":"fAGtK","vega-scenegraph":"gIB0Z","vega-scale":"evQIv","vega-projection":"6FRxi","vega-view":"trjDL","vega-format":"bXIHh","vega-functions":"92bWe","vega-parser":"irqWQ","vega-runtime":"37uhx","vega-expression":"kqWZH","vega-event-selector":"kbnnw","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"dPFAY":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -88023,7 +88152,7 @@ const Error$1 = 1; const Warn = 2; const Info = 3; const Debug = 4; -function logger(_, method) { +function logger(_, method, handler = log$1) { let level = _ || None; return { level (_) { @@ -88033,19 +88162,19 @@ function logger(_, method) { } else return level; }, error () { - if (level >= Error$1) log$1(method || "error", "ERROR", arguments); + if (level >= Error$1) handler(method || "error", "ERROR", arguments); return this; }, warn () { - if (level >= Warn) log$1(method || "warn", "WARN", arguments); + if (level >= Warn) handler(method || "warn", "WARN", arguments); return this; }, info () { - if (level >= Info) log$1(method || "log", "INFO", arguments); + if (level >= Info) handler(method || "log", "INFO", arguments); return this; }, debug () { - if (level >= Debug) log$1(method || "log", "DEBUG", arguments); + if (level >= Debug) handler(method || "log", "DEBUG", arguments); return this; } }; @@ -91521,6 +91650,9 @@ parcelHelpers.export(exports, "bisectLeft", ()=>(0, _bisectJs.bisectLeft)); parcelHelpers.export(exports, "bisectCenter", ()=>(0, _bisectJs.bisectCenter)); parcelHelpers.export(exports, "ascending", ()=>(0, _ascendingJsDefault.default)); parcelHelpers.export(exports, "bisector", ()=>(0, _bisectorJsDefault.default)); +parcelHelpers.export(exports, "blur", ()=>(0, _blurJs.blur)); +parcelHelpers.export(exports, "blur2", ()=>(0, _blurJs.blur2)); +parcelHelpers.export(exports, "blurImage", ()=>(0, _blurJs.blurImage)); parcelHelpers.export(exports, "count", ()=>(0, _countJsDefault.default)); parcelHelpers.export(exports, "cross", ()=>(0, _crossJsDefault.default)); parcelHelpers.export(exports, "cumsum", ()=>(0, _cumsumJsDefault.default)); @@ -91531,6 +91663,8 @@ parcelHelpers.export(exports, "Adder", ()=>(0, _fsumJs.Adder)); parcelHelpers.export(exports, "fsum", ()=>(0, _fsumJs.fsum)); parcelHelpers.export(exports, "fcumsum", ()=>(0, _fsumJs.fcumsum)); parcelHelpers.export(exports, "group", ()=>(0, _groupJsDefault.default)); +parcelHelpers.export(exports, "flatGroup", ()=>(0, _groupJs.flatGroup)); +parcelHelpers.export(exports, "flatRollup", ()=>(0, _groupJs.flatRollup)); parcelHelpers.export(exports, "groups", ()=>(0, _groupJs.groups)); parcelHelpers.export(exports, "index", ()=>(0, _groupJs.index)); parcelHelpers.export(exports, "indexes", ()=>(0, _groupJs.indexes)); @@ -91547,16 +91681,20 @@ parcelHelpers.export(exports, "max", ()=>(0, _maxJsDefault.default)); parcelHelpers.export(exports, "maxIndex", ()=>(0, _maxIndexJsDefault.default)); parcelHelpers.export(exports, "mean", ()=>(0, _meanJsDefault.default)); parcelHelpers.export(exports, "median", ()=>(0, _medianJsDefault.default)); +parcelHelpers.export(exports, "medianIndex", ()=>(0, _medianJs.medianIndex)); parcelHelpers.export(exports, "merge", ()=>(0, _mergeJsDefault.default)); parcelHelpers.export(exports, "min", ()=>(0, _minJsDefault.default)); parcelHelpers.export(exports, "minIndex", ()=>(0, _minIndexJsDefault.default)); +parcelHelpers.export(exports, "mode", ()=>(0, _modeJsDefault.default)); parcelHelpers.export(exports, "nice", ()=>(0, _niceJsDefault.default)); parcelHelpers.export(exports, "pairs", ()=>(0, _pairsJsDefault.default)); parcelHelpers.export(exports, "permute", ()=>(0, _permuteJsDefault.default)); parcelHelpers.export(exports, "quantile", ()=>(0, _quantileJsDefault.default)); +parcelHelpers.export(exports, "quantileIndex", ()=>(0, _quantileJs.quantileIndex)); parcelHelpers.export(exports, "quantileSorted", ()=>(0, _quantileJs.quantileSorted)); parcelHelpers.export(exports, "quickselect", ()=>(0, _quickselectJsDefault.default)); parcelHelpers.export(exports, "range", ()=>(0, _rangeJsDefault.default)); +parcelHelpers.export(exports, "rank", ()=>(0, _rankJsDefault.default)); parcelHelpers.export(exports, "least", ()=>(0, _leastJsDefault.default)); parcelHelpers.export(exports, "leastIndex", ()=>(0, _leastIndexJsDefault.default)); parcelHelpers.export(exports, "greatest", ()=>(0, _greatestJsDefault.default)); @@ -91593,6 +91731,7 @@ var _ascendingJs = require("./ascending.js"); var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); var _bisectorJs = require("./bisector.js"); var _bisectorJsDefault = parcelHelpers.interopDefault(_bisectorJs); +var _blurJs = require("./blur.js"); var _countJs = require("./count.js"); var _countJsDefault = parcelHelpers.interopDefault(_countJs); var _crossJs = require("./cross.js"); @@ -91632,6 +91771,8 @@ var _minJs = require("./min.js"); var _minJsDefault = parcelHelpers.interopDefault(_minJs); var _minIndexJs = require("./minIndex.js"); var _minIndexJsDefault = parcelHelpers.interopDefault(_minIndexJs); +var _modeJs = require("./mode.js"); +var _modeJsDefault = parcelHelpers.interopDefault(_modeJs); var _niceJs = require("./nice.js"); var _niceJsDefault = parcelHelpers.interopDefault(_niceJs); var _pairsJs = require("./pairs.js"); @@ -91644,6 +91785,8 @@ var _quickselectJs = require("./quickselect.js"); var _quickselectJsDefault = parcelHelpers.interopDefault(_quickselectJs); var _rangeJs = require("./range.js"); var _rangeJsDefault = parcelHelpers.interopDefault(_rangeJs); +var _rankJs = require("./rank.js"); +var _rankJsDefault = parcelHelpers.interopDefault(_rankJs); var _leastJs = require("./least.js"); var _leastJsDefault = parcelHelpers.interopDefault(_leastJs); var _leastIndexJs = require("./leastIndex.js"); @@ -91694,7 +91837,7 @@ var _unionJs = require("./union.js"); var _unionJsDefault = parcelHelpers.interopDefault(_unionJs); var _internmap = require("internmap"); -},{"./bisect.js":"a9fyl","./ascending.js":"3BPPi","./bisector.js":"2bvKF","./count.js":false,"./cross.js":false,"./cumsum.js":false,"./descending.js":false,"./deviation.js":"a68i2","./extent.js":false,"./fsum.js":"ke2C0","./group.js":false,"./groupSort.js":false,"./bin.js":false,"./threshold/freedmanDiaconis.js":false,"./threshold/scott.js":false,"./threshold/sturges.js":false,"./max.js":"8f8pE","./maxIndex.js":false,"./mean.js":"88IUx","./median.js":"c9ICZ","./merge.js":"14kry","./min.js":"1YYnD","./minIndex.js":false,"./nice.js":false,"./pairs.js":false,"./permute.js":"2dx3E","./quantile.js":"lHxtE","./quickselect.js":"ec6zf","./range.js":"7dCbL","./least.js":false,"./leastIndex.js":false,"./greatest.js":false,"./greatestIndex.js":false,"./scan.js":false,"./shuffle.js":false,"./sum.js":"fvrgL","./ticks.js":"eUhlt","./transpose.js":false,"./variance.js":"dQA4P","./zip.js":false,"./every.js":false,"./some.js":false,"./filter.js":false,"./map.js":false,"./reduce.js":false,"./reverse.js":false,"./sort.js":false,"./difference.js":false,"./disjoint.js":false,"./intersection.js":false,"./subset.js":false,"./superset.js":false,"./union.js":false,"internmap":"13ksD","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"a9fyl":[function(require,module,exports) { +},{"./bisect.js":"a9fyl","./ascending.js":"3BPPi","./bisector.js":"2bvKF","./blur.js":false,"./count.js":false,"./cross.js":false,"./cumsum.js":false,"./descending.js":"xAhWI","./deviation.js":"a68i2","./extent.js":false,"./fsum.js":"ke2C0","./group.js":false,"./groupSort.js":false,"./bin.js":false,"./threshold/freedmanDiaconis.js":false,"./threshold/scott.js":false,"./threshold/sturges.js":false,"./max.js":"8f8pE","./maxIndex.js":"fulam","./mean.js":"88IUx","./median.js":"c9ICZ","./merge.js":"14kry","./min.js":"1YYnD","./minIndex.js":"4wlPS","./mode.js":false,"./nice.js":false,"./pairs.js":false,"./permute.js":"2dx3E","./quantile.js":"lHxtE","./quickselect.js":"ec6zf","./range.js":"7dCbL","./rank.js":false,"./least.js":false,"./leastIndex.js":false,"./greatest.js":"dAvo9","./greatestIndex.js":false,"./scan.js":false,"./shuffle.js":false,"./sum.js":"fvrgL","./ticks.js":"eUhlt","./transpose.js":false,"./variance.js":"dQA4P","./zip.js":false,"./every.js":false,"./some.js":false,"./filter.js":false,"./map.js":false,"./reduce.js":false,"./reverse.js":false,"./sort.js":"ieAiN","./difference.js":false,"./disjoint.js":false,"./intersection.js":false,"./subset.js":false,"./superset.js":false,"./union.js":false,"internmap":"13ksD","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"a9fyl":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "bisectRight", ()=>bisectRight); @@ -91715,45 +91858,57 @@ exports.default = bisectRight; },{"./ascending.js":"3BPPi","./bisector.js":"2bvKF","./number.js":"h4wXR","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3BPPi":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -exports.default = function(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -}; +function ascending(a, b) { + return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; +} +exports.default = ascending; },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2bvKF":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _ascendingJs = require("./ascending.js"); var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); -exports.default = function(f) { - let delta = f; - let compare = f; - if (f.length === 1) { +var _descendingJs = require("./descending.js"); +var _descendingJsDefault = parcelHelpers.interopDefault(_descendingJs); +function bisector(f) { + let compare1, compare2, delta; + // If an accessor is specified, promote it to a comparator. In this case we + // can test whether the search value is (self-) comparable. We can’t do this + // for a comparator (except for specific, known comparators) because we can’t + // tell if the comparator is symmetric, and an asymmetric comparator can’t be + // used to test whether a single value is comparable. + if (f.length !== 2) { + compare1 = (0, _ascendingJsDefault.default); + compare2 = (d, x)=>(0, _ascendingJsDefault.default)(f(d), x); delta = (d, x)=>f(d) - x; - compare = ascendingComparator(f); + } else { + compare1 = f === (0, _ascendingJsDefault.default) || f === (0, _descendingJsDefault.default) ? f : zero; + compare2 = f; + delta = f; } - function left(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while(lo < hi){ - const mid = lo + hi >>> 1; - if (compare(a[mid], x) < 0) lo = mid + 1; - else hi = mid; + function left(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = lo + hi >>> 1; + if (compare2(a[mid], x) < 0) lo = mid + 1; + else hi = mid; + }while (lo < hi); } return lo; } - function right(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while(lo < hi){ - const mid = lo + hi >>> 1; - if (compare(a[mid], x) > 0) hi = mid; - else lo = mid + 1; + function right(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = lo + hi >>> 1; + if (compare2(a[mid], x) <= 0) lo = mid + 1; + else hi = mid; + }while (lo < hi); } return lo; } - function center(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; + function center(a, x, lo = 0, hi = a.length) { const i = left(a, x, lo, hi - 1); return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i; } @@ -91762,18 +91917,28 @@ exports.default = function(f) { center, right }; -}; -function ascendingComparator(f) { - return (d, x)=>(0, _ascendingJsDefault.default)(f(d), x); +} +exports.default = bisector; +function zero() { + return 0; } -},{"./ascending.js":"3BPPi","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"h4wXR":[function(require,module,exports) { +},{"./ascending.js":"3BPPi","./descending.js":"xAhWI","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"xAhWI":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function descending(a, b) { + return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; +} +exports.default = descending; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"h4wXR":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "numbers", ()=>numbers); -exports.default = function(x) { +function number(x) { return x === null ? NaN : +x; -}; +} +exports.default = number; function* numbers(values, valueof) { if (valueof === undefined) { for (let value of values)if (value != null && (value = +value) >= value) yield value; @@ -91896,6 +92061,24 @@ function max(values, valueof) { } exports.default = max; +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fulam":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function maxIndex(values, valueof) { + let max; + let maxIndex = -1; + let index = -1; + if (valueof === undefined) for (const value of values){ + ++index; + if (value != null && (max < value || max === undefined && value >= value)) max = value, maxIndex = index; + } + else { + for (let value1 of values)if ((value1 = valueof(value1, ++index, values)) != null && (max < value1 || max === undefined && value1 >= value1)) max = value1, maxIndex = index; + } + return maxIndex; +} +exports.default = maxIndex; + },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"88IUx":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -91915,24 +92098,37 @@ exports.default = mean; },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"c9ICZ":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "medianIndex", ()=>medianIndex); var _quantileJs = require("./quantile.js"); var _quantileJsDefault = parcelHelpers.interopDefault(_quantileJs); -exports.default = function(values, valueof) { +function median(values, valueof) { return (0, _quantileJsDefault.default)(values, 0.5, valueof); -}; +} +exports.default = median; +function medianIndex(values, valueof) { + return (0, _quantileJs.quantileIndex)(values, 0.5, valueof); +} },{"./quantile.js":"lHxtE","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lHxtE":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "quantileSorted", ()=>quantileSorted); +parcelHelpers.export(exports, "quantileIndex", ()=>quantileIndex); var _maxJs = require("./max.js"); var _maxJsDefault = parcelHelpers.interopDefault(_maxJs); +var _maxIndexJs = require("./maxIndex.js"); +var _maxIndexJsDefault = parcelHelpers.interopDefault(_maxIndexJs); var _minJs = require("./min.js"); var _minJsDefault = parcelHelpers.interopDefault(_minJs); +var _minIndexJs = require("./minIndex.js"); +var _minIndexJsDefault = parcelHelpers.interopDefault(_minIndexJs); var _quickselectJs = require("./quickselect.js"); var _quickselectJsDefault = parcelHelpers.interopDefault(_quickselectJs); var _numberJs = require("./number.js"); var _numberJsDefault = parcelHelpers.interopDefault(_numberJs); +var _sortJs = require("./sort.js"); +var _greatestJs = require("./greatest.js"); +var _greatestJsDefault = parcelHelpers.interopDefault(_greatestJs); function quantile(values, p, valueof) { values = Float64Array.from((0, _numberJs.numbers)(values, valueof)); if (!(n = values.length)) return; @@ -91949,8 +92145,16 @@ function quantileSorted(values, p, valueof = (0, _numberJsDefault.default)) { var n, i = (n - 1) * p, i0 = Math.floor(i), value0 = +valueof(values[i0], i0, values), value1 = +valueof(values[i0 + 1], i0 + 1, values); return value0 + (value1 - value0) * (i - i0); } +function quantileIndex(values, p, valueof) { + values = Float64Array.from((0, _numberJs.numbers)(values, valueof)); + if (!(n = values.length)) return; + if ((p = +p) <= 0 || n < 2) return (0, _minIndexJsDefault.default)(values); + if (p >= 1) return (0, _maxIndexJsDefault.default)(values); + var n, i = Math.floor((n - 1) * p), order = (i, j)=>(0, _sortJs.ascendingDefined)(values[i], values[j]), index = (0, _quickselectJsDefault.default)(Uint32Array.from(values, (_, i)=>i), i, 0, n - 1, order); + return (0, _greatestJsDefault.default)(index.subarray(0, i + 1), (i)=>values[i]); +} -},{"./max.js":"8f8pE","./min.js":"1YYnD","./quickselect.js":"ec6zf","./number.js":"h4wXR","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1YYnD":[function(require,module,exports) { +},{"./max.js":"8f8pE","./maxIndex.js":"fulam","./min.js":"1YYnD","./minIndex.js":"4wlPS","./quickselect.js":"ec6zf","./number.js":"h4wXR","./sort.js":"ieAiN","./greatest.js":"dAvo9","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1YYnD":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); function min(values, valueof) { @@ -91965,12 +92169,30 @@ function min(values, valueof) { } exports.default = min; +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4wlPS":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function minIndex(values, valueof) { + let min; + let minIndex = -1; + let index = -1; + if (valueof === undefined) for (const value of values){ + ++index; + if (value != null && (min > value || min === undefined && value >= value)) min = value, minIndex = index; + } + else { + for (let value1 of values)if ((value1 = valueof(value1, ++index, values)) != null && (min > value1 || min === undefined && value1 >= value1)) min = value1, minIndex = index; + } + return minIndex; +} +exports.default = minIndex; + },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ec6zf":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var _ascendingJs = require("./ascending.js"); -var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); -function quickselect(array, k, left = 0, right = array.length - 1, compare = (0, _ascendingJsDefault.default)) { +var _sortJs = require("./sort.js"); +function quickselect(array, k, left = 0, right = array.length - 1, compare) { + compare = compare === undefined ? (0, _sortJs.ascendingDefined) : (0, _sortJs.compareDefined)(compare); while(right > left){ if (right - left > 600) { const n = right - left + 1; @@ -92006,6 +92228,87 @@ function swap(array, i, j) { array[j] = t; } +},{"./sort.js":"ieAiN","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ieAiN":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "compareDefined", ()=>compareDefined); +parcelHelpers.export(exports, "ascendingDefined", ()=>ascendingDefined); +var _ascendingJs = require("./ascending.js"); +var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); +var _permuteJs = require("./permute.js"); +var _permuteJsDefault = parcelHelpers.interopDefault(_permuteJs); +function sort(values, ...F) { + if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); + values = Array.from(values); + let [f] = F; + if (f && f.length !== 2 || F.length > 1) { + const index = Uint32Array.from(values, (d, i)=>i); + if (F.length > 1) { + F = F.map((f)=>values.map(f)); + index.sort((i, j)=>{ + for (const f of F){ + const c = ascendingDefined(f[i], f[j]); + if (c) return c; + } + }); + } else { + f = values.map(f); + index.sort((i, j)=>ascendingDefined(f[i], f[j])); + } + return (0, _permuteJsDefault.default)(values, index); + } + return values.sort(compareDefined(f)); +} +exports.default = sort; +function compareDefined(compare = (0, _ascendingJsDefault.default)) { + if (compare === (0, _ascendingJsDefault.default)) return ascendingDefined; + if (typeof compare !== "function") throw new TypeError("compare is not a function"); + return (a, b)=>{ + const x = compare(a, b); + if (x || x === 0) return x; + return (compare(b, b) === 0) - (compare(a, a) === 0); + }; +} +function ascendingDefined(a, b) { + return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0); +} + +},{"./ascending.js":"3BPPi","./permute.js":"2dx3E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2dx3E":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function permute(source, keys) { + return Array.from(keys, (key)=>source[key]); +} +exports.default = permute; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"dAvo9":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _ascendingJs = require("./ascending.js"); +var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); +function greatest(values, compare = (0, _ascendingJsDefault.default)) { + let max; + let defined = false; + if (compare.length === 1) { + let maxValue; + for (const element of values){ + const value = compare(element); + if (defined ? (0, _ascendingJsDefault.default)(value, maxValue) > 0 : (0, _ascendingJsDefault.default)(value, value) === 0) { + max = element; + maxValue = value; + defined = true; + } + } + } else { + for (const value1 of values)if (defined ? compare(value1, max) > 0 : compare(value1, value1) === 0) { + max = value1; + defined = true; + } + } + return max; +} +exports.default = greatest; + },{"./ascending.js":"3BPPi","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"14kry":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -92017,22 +92320,16 @@ function merge(arrays) { } exports.default = merge; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2dx3E":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -exports.default = function(source, keys) { - return Array.from(keys, (key)=>source[key]); -}; - },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7dCbL":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -exports.default = function(start, stop, step) { +function range(start, stop, step) { start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; var i = -1, n = Math.max(0, Math.ceil((stop - start) / step)) | 0, range = new Array(n); while(++i < n)range[i] = start + i * step; return range; -}; +} +exports.default = range; },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fvrgL":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -92055,7 +92352,7 @@ parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "tickIncrement", ()=>tickIncrement); parcelHelpers.export(exports, "tickStep", ()=>tickStep); var e10 = Math.sqrt(50), e5 = Math.sqrt(10), e2 = Math.sqrt(2); -exports.default = function(start, stop, count) { +function ticks(start, stop, count) { var reverse, i = -1, n, ticks, step; stop = +stop, start = +start, count = +count; if (start === stop && count > 0) return [ @@ -92079,7 +92376,8 @@ exports.default = function(start, stop, count) { } if (reverse) ticks.reverse(); return ticks; -}; +} +exports.default = ticks; function tickIncrement(start, stop, count) { var step = (stop - start) / Math.max(0, count), power = Math.floor(Math.log(step) / Math.LN10), error = step / Math.pow(10, power); return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); @@ -92159,7 +92457,7 @@ function intern_set({ _intern , _key }, value) { function intern_delete({ _intern , _key }, value) { const key = _key(value); if (_intern.has(key)) { - value = _intern.get(value); + value = _intern.get(key); _intern.delete(key); } return value; @@ -98519,8 +98817,8 @@ Extent.Definition = { }); if (!Number.isFinite(min) || !Number.isFinite(max)) { let name = (0, _vegaUtil.accessorName)(field); - if (name) name = ` for field "${name}"`; - pulse.dataflow.warn(`Infinite extent${name}: [${min}, ${max}]`); + if (name) name = ' for field "'.concat(name, '"'); + pulse.dataflow.warn("Infinite extent".concat(name, ": [").concat(min, ", ").concat(max, "]")); min = max = undefined; } this.value = [ @@ -100038,7 +100336,7 @@ TimeUnit.Definition = { transform (_, pulse) { const field = _.field, band = _.interval !== false, utc = _.timezone === "utc", floor = this._floor(_, pulse), offset = (utc ? (0, _vegaTime.utcInterval) : (0, _vegaTime.timeInterval))(floor.unit).offset, as = _.as || OUTPUT, u0 = as[0], u1 = as[1], step = floor.step; let min = floor.start || Infinity, max = floor.stop || -Infinity, flag = pulse.ADD; - if (_.modified() || pulse.modified((0, _vegaUtil.accessorFields)(field))) { + if (_.modified() || pulse.changed(pulse.REM) || pulse.modified((0, _vegaUtil.accessorFields)(field))) { pulse = pulse.reflow(true); flag = pulse.SOURCE; min = Infinity; @@ -102393,6 +102691,7 @@ function viewSizeLayout(view, group, viewBounds, _) { },{"vega-dataflow":"4kvYg","vega-scenegraph":"gIB0Z","vega-util":"dPFAY","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gIB0Z":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "path", ()=>(0, _d3Path.path)); parcelHelpers.export(exports, "Bounds", ()=>Bounds); parcelHelpers.export(exports, "CanvasHandler", ()=>CanvasHandler); parcelHelpers.export(exports, "CanvasRenderer", ()=>CanvasRenderer); @@ -102430,7 +102729,7 @@ parcelHelpers.export(exports, "markup", ()=>markup); parcelHelpers.export(exports, "multiLineOffset", ()=>multiLineOffset); parcelHelpers.export(exports, "pathCurves", ()=>curves); parcelHelpers.export(exports, "pathEqual", ()=>pathEqual); -parcelHelpers.export(exports, "pathParse", ()=>pathParse); +parcelHelpers.export(exports, "pathParse", ()=>parse); parcelHelpers.export(exports, "pathRectangle", ()=>vg_rect); parcelHelpers.export(exports, "pathRender", ()=>pathRender); parcelHelpers.export(exports, "pathSymbols", ()=>symbols); @@ -102581,51 +102880,60 @@ function curves(type, orientation, tension) { } return curve; } -// Path parsing and rendering code adapted from fabric.js -- Thanks! -const cmdlen = { +const paramCounts = { m: 2, l: 2, h: 1, v: 1, + z: 0, c: 6, s: 4, q: 4, t: 2, a: 7 -}, regexp = [ - /([MLHVCSQTAZmlhvcsqtaz])/g, - /###/, - /(\.\d+)(\.\d)/g, - /(\d)([-+])/g, - /\s|,|###/ -]; -function pathParse(pathstr) { - const result = []; - let curr, chunks, parsed, param, cmd, len, i, j, n, m; // First, break path into command sequence - const path = pathstr.slice().replace(regexp[0], "###$1").split(regexp[1]).slice(1); // Next, parse each command in turn - for(i = 0, n = path.length; i < n; ++i){ - curr = path[i]; - chunks = curr.slice(1).trim().replace(regexp[2], "$1###$2").replace(regexp[3], "$1###$2").split(regexp[4]); - cmd = curr.charAt(0); - parsed = [ - cmd - ]; - for(j = 0, m = chunks.length; j < m; ++j)if ((param = +chunks[j]) === param) // not NaN - parsed.push(param); - len = cmdlen[cmd.toLowerCase()]; - if (parsed.length - 1 > len) { - const m1 = parsed.length; - j = 1; - result.push([ - cmd - ].concat(parsed.slice(j, j += len))); // handle implicit lineTo (#2803) - cmd = cmd === "M" ? "L" : cmd === "m" ? "l" : cmd; - for(; j < m1; j += len)result.push([ - cmd - ].concat(parsed.slice(j, j + len))); - } else result.push(parsed); +}; +const commandPattern = /[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi; +const numberPattern = /^[+-]?(([0-9]*\.[0-9]+)|([0-9]+\.)|([0-9]+))([eE][+-]?[0-9]+)?/; +const spacePattern = /^((\s+,?\s*)|(,\s*))/; +const flagPattern = /^[01]/; +function parse(path) { + const commands = []; + const matches = path.match(commandPattern) || []; + matches.forEach((str)=>{ + let cmd = str[0]; + const type = cmd.toLowerCase(); // parse parameters + const paramCount = paramCounts[type]; + const params = parseParams(type, paramCount, str.slice(1).trim()); + const count = params.length; // error checking based on parameter count + if (count < paramCount || count && count % paramCount !== 0) throw Error("Invalid SVG path, incorrect parameter count"); + // register the command + commands.push([ + cmd, + ...params.slice(0, paramCount) + ]); // exit now if we're done, also handles zero-param 'z' + if (count === paramCount) return; + // handle implicit line-to + if (type === "m") cmd = cmd === "M" ? "L" : "l"; + // repeat command when given extended param list + for(let i = paramCount; i < count; i += paramCount)commands.push([ + cmd, + ...params.slice(i, i + paramCount) + ]); + }); + return commands; +} +function parseParams(type, paramCount, segment) { + const params = []; + for(let index = 0; paramCount && index < segment.length;)for(let i = 0; i < paramCount; ++i){ + const pattern = type === "a" && (i === 3 || i === 4) ? flagPattern : numberPattern; + const match = segment.slice(index).match(pattern); + if (match === null) throw Error("Invalid SVG path, incorrect parameter type"); + index += match[0].length; + params.push(+match[0]); + const ws = segment.slice(index).match(spacePattern); + if (ws !== null) index += ws[0].length; } - return result; + return params; } const DegToRad = Math.PI / 180; const Epsilon = 1e-14; @@ -102750,7 +103058,7 @@ function pathRender(context, path, l, t, sX, sY) { y = 0, // current y controlX = 0, // current control point x controlY = 0, // current control point y - tempX, tempY, tempControlX, tempControlY; + tempX, tempY, tempControlX, tempControlY, anchorX = 0, anchorY = 0; if (l == null) l = 0; if (t == null) t = 0; if (sX == null) sX = 1; @@ -102797,12 +103105,16 @@ function pathRender(context, path, l, t, sX, sY) { // moveTo, relative x += current[1]; y += current[2]; + anchorX = x; + anchorY = y; context.moveTo(x + l, y + t); break; case "M": // moveTo, absolute x = current[1]; y = current[2]; + anchorX = x; + anchorY = y; context.moveTo(x + l, y + t); break; case "c": @@ -102939,6 +103251,8 @@ function pathRender(context, path, l, t, sX, sY) { break; case "z": case "Z": + x = anchorX; + y = anchorY; context.closePath(); break; } @@ -103076,7 +103390,7 @@ function symbols(_) { var custom = {}; function customSymbol(path) { if (!(0, _vegaUtil.hasOwnProperty)(custom, path)) { - const parsed = pathParse(path); + const parsed = parse(path); custom[path] = { draw: function(context, size) { pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2); @@ -104166,7 +104480,7 @@ function path$1(context, item) { var path = item.path; if (path == null) return true; var x = item.x || 0, y = item.y || 0, sx = item.scaleX || 1, sy = item.scaleY || 1, a = (item.angle || 0) * DegToRad, cache = item.pathCache; - if (!cache || cache.path !== path) (item.pathCache = cache = pathParse(path)).path = path; + if (!cache || cache.path !== path) (item.pathCache = cache = parse(path)).path = path; if (a && context.rotate && context.translate) { context.translate(x, y); context.rotate(a); @@ -104280,7 +104594,7 @@ function measureWidth(item, text) { return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item)); } function _measureWidth(text, currentFont) { - const key = `(${currentFont}) ${text}`; + const key = "(".concat(currentFont, ") ").concat(text); let width = widthCache.get(key); if (width === undefined) { context.font = currentFont; @@ -104737,10 +105051,10 @@ Handler.prototype = { }, /** * Add an event handler. Subclasses should override this method. - */ on () /*type, handler*/ {}, + */ on () {}, /** * Remove an event handler. Subclasses should override this method. - */ off () /*type, handler*/ {}, + */ off () {}, /** * Utility method for finding the array index of an event handler. * @param {Array} h - An array of registered event handlers. @@ -104901,7 +105215,7 @@ Renderer.prototype = { * This base class method does nothing. Subclasses that perform * incremental should implement this method. * @param {Item} item - The dirty item whose bounds should be redrawn. - */ dirty () /*item*/ {}, + */ dirty () {}, /** * Render an input scenegraph, potentially with a set of dirty items. * This method will perform an immediate rendering with available resources. @@ -104926,7 +105240,7 @@ Renderer.prototype = { * Internal rendering method. Renderer subclasses should override this * method to actually perform rendering. * @param {object} scene - The root mark of a scenegraph to render. - */ _render () /*scene*/ {}, + */ _render () {}, /** * Asynchronous rendering method. Similar to render, but returns a Promise * that resolves when all rendering is completed. Sometimes a renderer must @@ -105356,11 +105670,11 @@ const AriaGuides = { }, "title-text": { desc: "title", - caption: (item)=>`Title text '${titleCaption(item)}'` + caption: (item)=>"Title text '".concat(titleCaption(item), "'") }, "title-subtitle": { desc: "subtitle", - caption: (item)=>`Subtitle text '${titleCaption(item)}'` + caption: (item)=>"Subtitle text '".concat(titleCaption(item), "'") } }; // aria properties generated for mark item encoding channels const AriaEncode = { @@ -105376,7 +105690,7 @@ function ariaItemAttributes(emit, item) { const type = item.mark.marktype; emit(ARIA_LABEL, item.description); emit(ARIA_ROLE, item.ariaRole || (type === "group" ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL)); - emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || `${type} mark`); + emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || "".concat(type, " mark")); } } function ariaMarkAttributes(mark) { @@ -105387,7 +105701,7 @@ function ariaMarkAttributes(mark) { function ariaMark(mark) { const type = mark.marktype; const recurse = type === "group" || type === "text" || mark.items.some((_)=>_.description != null && _.aria !== false); - return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, `${type} mark container`, mark.description); + return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, "".concat(type, " mark container"), mark.description); } function ariaGuide(mark, opt) { try { @@ -105402,11 +105716,11 @@ function titleCaption(item) { } function axisCaption(item) { const datum = item.datum, orient = item.orient, title = datum.title ? extractTitle(item) : null, ctx = item.context, scale = ctx.scales[datum.scale].value, locale = ctx.dataflow.locale(), type = scale.type, xy = orient === "left" || orient === "right" ? "Y" : "X"; - return `${xy}-axis` + (title ? ` titled '${title}'` : "") + ` for a ${(0, _vegaScale.isDiscrete)(type) ? "discrete" : type} scale` + ` with ${(0, _vegaScale.domainCaption)(locale, scale, item)}`; + return "".concat(xy, "-axis") + (title ? " titled '".concat(title, "'") : "") + " for a ".concat((0, _vegaScale.isDiscrete)(type) ? "discrete" : type, " scale") + " with ".concat((0, _vegaScale.domainCaption)(locale, scale, item)); } function legendCaption(item) { - const datum = item.datum, title = datum.title ? extractTitle(item) : null, type = `${datum.type || ""} legend`.trim(), scales = datum.scales, props = Object.keys(scales), ctx = item.context, scale = ctx.scales[scales[props[0]]].value, locale = ctx.dataflow.locale(); - return capitalize(type) + (title ? ` titled '${title}'` : "") + ` for ${channelCaption(props)}` + ` with ${(0, _vegaScale.domainCaption)(locale, scale, item)}`; + const datum = item.datum, title = datum.title ? extractTitle(item) : null, type = "".concat(datum.type || "", " legend").trim(), scales = datum.scales, props = Object.keys(scales), ctx = item.context, scale = ctx.scales[scales[props[0]]].value, locale = ctx.dataflow.locale(); + return capitalize(type) + (title ? " titled '".concat(title, "'") : "") + " for ".concat(channelCaption(props)) + " with ".concat((0, _vegaScale.domainCaption)(locale, scale, item)); } function extractTitle(item) { try { @@ -105428,24 +105742,25 @@ function markup() { let buf = "", outer = "", inner = ""; const stack = [], clear = ()=>outer = inner = "", push = (tag)=>{ if (outer) { - buf += `${outer}>${inner}`; + buf += "".concat(outer, ">").concat(inner); clear(); } stack.push(tag); }, attr = (name, value)=>{ - if (value != null) outer += ` ${name}="${attrText(value)}"`; + if (value != null) outer += " ".concat(name, '="').concat(attrText(value), '"'); return m; }, m = { - open (tag, ...attrs) { + open (tag) { push(tag); outer = "<" + tag; + for(var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)attrs[_key - 1] = arguments[_key]; for (const set of attrs)for(const key in set)attr(key, set[key]); return m; }, close () { const tag = stack.pop(); - if (outer) buf += outer + (inner ? `>${inner}` : "/>"); - else buf += ``; + if (outer) buf += outer + (inner ? ">".concat(inner, "") : "/>"); + else buf += ""); clear(); return m; }, @@ -105463,16 +105778,13 @@ function _serialize(m, node) { for(let i = 0; i < n; ++i)m.attr(attrs[i].name, attrs[i].value); } if (node.hasChildNodes()) { - const children = node.childNodes, n1 = children.length; - for(let i1 = 0; i1 < n1; i1++){ - const child = children[i1]; - child.nodeType === 3 // text node - ? m.text(child.nodeValue) : _serialize(m, child); - } + const children = node.childNodes; + for (const child of children)child.nodeType === 3 // text node + ? m.text(child.nodeValue) : _serialize(m, child); } return m.close(); } -const styles = { +const stylesAttr = { fill: "fill", fillOpacity: "fill-opacity", stroke: "stroke", @@ -105483,7 +105795,9 @@ const styles = { strokeDash: "stroke-dasharray", strokeDashOffset: "stroke-dashoffset", strokeMiterLimit: "stroke-miterlimit", - opacity: "opacity", + opacity: "opacity" +}; +const stylesCss = { blend: "mix-blend-mode" }; // ensure miter limit default is consistent with canvas (#2498) const rootAttributes = { @@ -105550,9 +105864,9 @@ const base = Renderer.prototype; setAttributes(this._svg, { width: this._width * this._scale, height: this._height * this._scale, - viewBox: `0 0 ${this._width} ${this._height}` + viewBox: "0 0 ".concat(this._width, " ").concat(this._height) }); - this._root.setAttribute("transform", `translate(${this._origin})`); + this._root.setAttribute("transform", "translate(".concat(this._origin, ")")); } this._dirty = []; return this; @@ -105615,7 +105929,7 @@ const base = Renderer.prototype; * Check if a mark item is considered dirty. * @param {Item} item - The mark item. */ isDirty (item) { - return this._dirtyAll || !item._svg || item.dirty === this._dirtyID; + return this._dirtyAll || !item._svg || !item._svg.ownerSVGElement || item.dirty === this._dirtyID; }, /** * Internal method to check dirty status and, if possible, @@ -105677,13 +105991,13 @@ const base = Renderer.prototype; */ mark (el, scene, prev) { if (!this.isDirty(scene)) return scene._svg; const svg = this._svg, mdef = Marks[scene.marktype], events = scene.interactive === false ? "none" : null, isGroup = mdef.tag === "g"; - let sibling = null, i = 0; const parent = bind(scene, el, prev, "g", svg); parent.setAttribute("class", cssClass(scene)); // apply aria attributes to parent container element const aria = ariaMarkAttributes(scene); for(const key in aria)setAttribute(parent, key, aria[key]); if (!isGroup) setAttribute(parent, "pointer-events", events); setAttribute(parent, "clip-path", scene.clip ? clip$1(this, scene, scene.group) : null); + let sibling = null, i = 0; const process = (item)=>{ const dirty = this.isDirty(item), node = bind(item, parent, sibling, mdef.tag, svg); if (dirty) { @@ -105722,10 +106036,10 @@ const base = Renderer.prototype; * @param {Item} item - The mark item. */ style (el, item) { if (item == null) return; - for(const prop in styles){ + for(const prop in stylesAttr){ let value = prop === "font" ? fontFamily(item) : item[prop]; if (value === values[prop]) continue; - const name = styles[prop]; + const name = stylesAttr[prop]; if (value == null) el.removeAttribute(name); else { if (isGradient(value)) value = gradientRef(value, this._defs.gradient, href()); @@ -105733,6 +106047,7 @@ const base = Renderer.prototype; } values[prop] = value; } + for(const prop1 in stylesCss)setStyle(el, stylesCss[prop1], item[prop1]); }, /** * Render SVG defs, as needed. @@ -105785,7 +106100,7 @@ function updateGradient(el, grad, index) { setAttributes(pt, { width: 1, height: 1, - fill: `url(${href()}#${grad.id})` + fill: "url(".concat(href(), "#").concat(grad.id, ")") }); el = domChild(el, index++, "radialGradient", svgns); setAttributes(el, { @@ -105835,6 +106150,8 @@ function updateClipping(el, clip, index) { return index + 1; } // Recursively process group contents. function recurse(renderer, el, group) { + // child 'g' element is second to last among children (path, g, path) + // other children here are foreground and background path elements el = el.lastChild.previousSibling; let prev, idx = 0; visit(group, (item)=>{ @@ -106011,7 +106328,7 @@ function SVGStringRenderer(loader) { class: "marks", width: this._width * this._scale, height: this._height * this._scale, - viewBox: `0 0 ${this._width} ${this._height}` + viewBox: "0 0 ".concat(this._width, " ").concat(this._height) })); // background, if defined const bg = this._bgcolor; if (bg && bg !== "transparent" && bg !== "none") m.open("rect", { @@ -106187,6 +106504,7 @@ function SVGStringRenderer(loader) { } }); // Helper function for attr for style presentation attributes function style(s, item, scene, tag, defs) { + let styleList; if (item == null) return s; if (tag === "bgrect" && scene.interactive === false) s["pointer-events"] = "none"; if (tag === "bgfore") { @@ -106194,7 +106512,10 @@ function style(s, item, scene, tag, defs) { s.display = "none"; if (item.fill !== null) return s; } - if (tag === "image" && item.smooth === false) s.style = "image-rendering: optimizeSpeed; image-rendering: pixelated;"; + if (tag === "image" && item.smooth === false) styleList = [ + "image-rendering: optimizeSpeed;", + "image-rendering: pixelated;" + ]; if (tag === "text") { s["font-family"] = fontFamily(item); s["font-size"] = fontSize(item) + "px"; @@ -106202,15 +106523,23 @@ function style(s, item, scene, tag, defs) { s["font-variant"] = item.fontVariant; s["font-weight"] = item.fontWeight; } - for(const prop in styles){ + for(const prop in stylesAttr){ let value = item[prop]; - const name = styles[prop]; + const name = stylesAttr[prop]; if (value === "transparent" && (name === "fill" || name === "stroke")) ; else if (value != null) { if (isGradient(value)) value = gradientRef(value, defs.gradient, ""); s[name] = value; } } + for(const prop1 in stylesCss){ + const value1 = item[prop1]; + if (value1 != null) { + styleList = styleList || []; + styleList.push("".concat(stylesCss[prop1], ": ").concat(value1, ";")); + } + } + if (styleList) s.style = styleList.join(" "); return s; } const Canvas = "canvas"; @@ -106299,7 +106628,7 @@ function sceneEqual(a, b, key) { return a === b ? true : key === "path" ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : (0, _vegaUtil.isNumber)(a) && (0, _vegaUtil.isNumber)(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !(0, _vegaUtil.isObject)(a) && !(0, _vegaUtil.isObject)(b) ? a == b : objectEqual(a, b); } function pathEqual(a, b) { - return sceneEqual(pathParse(a), pathParse(b)); + return sceneEqual(parse(a), parse(b)); } function objectEqual(a, b) { var ka = Object.keys(a), kb = Object.keys(b), key, i; @@ -106334,18 +106663,27 @@ parcelHelpers.export(exports, "lineRadial", ()=>(0, _lineRadialJsDefault.default ; parcelHelpers.export(exports, "radialLine", ()=>(0, _lineRadialJsDefault.default)); parcelHelpers.export(exports, "pointRadial", ()=>(0, _pointRadialJsDefault.default)); -parcelHelpers.export(exports, "linkHorizontal", ()=>(0, _indexJs.linkHorizontal)); -parcelHelpers.export(exports, "linkVertical", ()=>(0, _indexJs.linkVertical)); -parcelHelpers.export(exports, "linkRadial", ()=>(0, _indexJs.linkRadial)); +parcelHelpers.export(exports, "link", ()=>(0, _linkJs.link)); +parcelHelpers.export(exports, "linkHorizontal", ()=>(0, _linkJs.linkHorizontal)); +parcelHelpers.export(exports, "linkVertical", ()=>(0, _linkJs.linkVertical)); +parcelHelpers.export(exports, "linkRadial", ()=>(0, _linkJs.linkRadial)); parcelHelpers.export(exports, "symbol", ()=>(0, _symbolJsDefault.default)); -parcelHelpers.export(exports, "symbols", ()=>(0, _symbolJs.symbols)); +parcelHelpers.export(exports, "symbolsStroke", ()=>(0, _symbolJs.symbolsStroke)); +parcelHelpers.export(exports, "symbolsFill", ()=>(0, _symbolJs.symbolsFill)); +parcelHelpers.export(exports, "symbols", ()=>(0, _symbolJs.symbolsFill)); +parcelHelpers.export(exports, "symbolAsterisk", ()=>(0, _asteriskJsDefault.default)); parcelHelpers.export(exports, "symbolCircle", ()=>(0, _circleJsDefault.default)); parcelHelpers.export(exports, "symbolCross", ()=>(0, _crossJsDefault.default)); parcelHelpers.export(exports, "symbolDiamond", ()=>(0, _diamondJsDefault.default)); +parcelHelpers.export(exports, "symbolDiamond2", ()=>(0, _diamond2JsDefault.default)); +parcelHelpers.export(exports, "symbolPlus", ()=>(0, _plusJsDefault.default)); parcelHelpers.export(exports, "symbolSquare", ()=>(0, _squareJsDefault.default)); +parcelHelpers.export(exports, "symbolSquare2", ()=>(0, _square2JsDefault.default)); parcelHelpers.export(exports, "symbolStar", ()=>(0, _starJsDefault.default)); parcelHelpers.export(exports, "symbolTriangle", ()=>(0, _triangleJsDefault.default)); +parcelHelpers.export(exports, "symbolTriangle2", ()=>(0, _triangle2JsDefault.default)); parcelHelpers.export(exports, "symbolWye", ()=>(0, _wyeJsDefault.default)); +parcelHelpers.export(exports, "symbolX", ()=>(0, _xJsDefault.default)); parcelHelpers.export(exports, "curveBasisClosed", ()=>(0, _basisClosedJsDefault.default)); parcelHelpers.export(exports, "curveBasisOpen", ()=>(0, _basisOpenJsDefault.default)); parcelHelpers.export(exports, "curveBasis", ()=>(0, _basisJsDefault.default)); @@ -106392,23 +106730,35 @@ var _lineRadialJs = require("./lineRadial.js"); var _lineRadialJsDefault = parcelHelpers.interopDefault(_lineRadialJs); var _pointRadialJs = require("./pointRadial.js"); var _pointRadialJsDefault = parcelHelpers.interopDefault(_pointRadialJs); -var _indexJs = require("./link/index.js"); +var _linkJs = require("./link.js"); var _symbolJs = require("./symbol.js"); var _symbolJsDefault = parcelHelpers.interopDefault(_symbolJs); +var _asteriskJs = require("./symbol/asterisk.js"); +var _asteriskJsDefault = parcelHelpers.interopDefault(_asteriskJs); var _circleJs = require("./symbol/circle.js"); var _circleJsDefault = parcelHelpers.interopDefault(_circleJs); var _crossJs = require("./symbol/cross.js"); var _crossJsDefault = parcelHelpers.interopDefault(_crossJs); var _diamondJs = require("./symbol/diamond.js"); var _diamondJsDefault = parcelHelpers.interopDefault(_diamondJs); +var _diamond2Js = require("./symbol/diamond2.js"); +var _diamond2JsDefault = parcelHelpers.interopDefault(_diamond2Js); +var _plusJs = require("./symbol/plus.js"); +var _plusJsDefault = parcelHelpers.interopDefault(_plusJs); var _squareJs = require("./symbol/square.js"); var _squareJsDefault = parcelHelpers.interopDefault(_squareJs); +var _square2Js = require("./symbol/square2.js"); +var _square2JsDefault = parcelHelpers.interopDefault(_square2Js); var _starJs = require("./symbol/star.js"); var _starJsDefault = parcelHelpers.interopDefault(_starJs); var _triangleJs = require("./symbol/triangle.js"); var _triangleJsDefault = parcelHelpers.interopDefault(_triangleJs); +var _triangle2Js = require("./symbol/triangle2.js"); +var _triangle2JsDefault = parcelHelpers.interopDefault(_triangle2Js); var _wyeJs = require("./symbol/wye.js"); var _wyeJsDefault = parcelHelpers.interopDefault(_wyeJs); +var _xJs = require("./symbol/x.js"); +var _xJsDefault = parcelHelpers.interopDefault(_xJs); var _basisClosedJs = require("./curve/basisClosed.js"); var _basisClosedJsDefault = parcelHelpers.interopDefault(_basisClosedJs); var _basisOpenJs = require("./curve/basisOpen.js"); @@ -106464,7 +106814,7 @@ var _noneJsDefault1 = parcelHelpers.interopDefault(_noneJs1); var _reverseJs = require("./order/reverse.js"); var _reverseJsDefault = parcelHelpers.interopDefault(_reverseJs); -},{"./arc.js":"hBXaC","./area.js":"7HGRc","./line.js":"iTpSu","./pie.js":false,"./areaRadial.js":false,"./lineRadial.js":false,"./pointRadial.js":false,"./link/index.js":false,"./symbol.js":"6wXmG","./symbol/circle.js":"9G0bU","./symbol/cross.js":"3dJnN","./symbol/diamond.js":"O6MwS","./symbol/square.js":"llhtb","./symbol/star.js":"4OIBI","./symbol/triangle.js":"bcE3R","./symbol/wye.js":"ceglC","./curve/basisClosed.js":"LU7y1","./curve/basisOpen.js":"iUFcz","./curve/basis.js":"fxwIG","./curve/bump.js":false,"./curve/bundle.js":"1IdIu","./curve/cardinalClosed.js":"i9B3n","./curve/cardinalOpen.js":"feING","./curve/cardinal.js":"jFqTA","./curve/catmullRomClosed.js":"7vsUO","./curve/catmullRomOpen.js":"gmFtf","./curve/catmullRom.js":"9AIhm","./curve/linearClosed.js":"iNV0m","./curve/linear.js":"kDDgD","./curve/monotone.js":"jALvT","./curve/natural.js":"9Lzi3","./curve/step.js":"1D7Gv","./stack.js":false,"./offset/expand.js":false,"./offset/diverging.js":false,"./offset/none.js":false,"./offset/silhouette.js":false,"./offset/wiggle.js":false,"./order/appearance.js":false,"./order/ascending.js":false,"./order/descending.js":false,"./order/insideOut.js":false,"./order/none.js":false,"./order/reverse.js":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hBXaC":[function(require,module,exports) { +},{"./arc.js":"hBXaC","./area.js":"7HGRc","./line.js":"iTpSu","./pie.js":false,"./areaRadial.js":false,"./lineRadial.js":false,"./pointRadial.js":false,"./link.js":false,"./symbol.js":"6wXmG","./symbol/asterisk.js":"j4DN4","./symbol/circle.js":"9G0bU","./symbol/cross.js":"3dJnN","./symbol/diamond.js":"O6MwS","./symbol/diamond2.js":"grkT4","./symbol/plus.js":"6KkxA","./symbol/square.js":"llhtb","./symbol/square2.js":"b16iw","./symbol/star.js":"4OIBI","./symbol/triangle.js":"bcE3R","./symbol/triangle2.js":"jdvpz","./symbol/wye.js":"ceglC","./symbol/x.js":"ceBP8","./curve/basisClosed.js":"LU7y1","./curve/basisOpen.js":"iUFcz","./curve/basis.js":"fxwIG","./curve/bump.js":false,"./curve/bundle.js":"1IdIu","./curve/cardinalClosed.js":"i9B3n","./curve/cardinalOpen.js":"feING","./curve/cardinal.js":"jFqTA","./curve/catmullRomClosed.js":"7vsUO","./curve/catmullRomOpen.js":"gmFtf","./curve/catmullRom.js":"9AIhm","./curve/linearClosed.js":"iNV0m","./curve/linear.js":"kDDgD","./curve/monotone.js":"jALvT","./curve/natural.js":"9Lzi3","./curve/step.js":"1D7Gv","./stack.js":false,"./offset/expand.js":false,"./offset/diverging.js":false,"./offset/none.js":false,"./offset/silhouette.js":false,"./offset/wiggle.js":false,"./order/appearance.js":false,"./order/ascending.js":false,"./order/descending.js":false,"./order/insideOut.js":false,"./order/none.js":false,"./order/reverse.js":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hBXaC":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _d3Path = require("d3-path"); @@ -106719,17 +107069,17 @@ parcelHelpers.export(exports, "halfPi", ()=>halfPi); parcelHelpers.export(exports, "tau", ()=>tau); parcelHelpers.export(exports, "acos", ()=>acos); parcelHelpers.export(exports, "asin", ()=>asin); -var abs = Math.abs; -var atan2 = Math.atan2; -var cos = Math.cos; -var max = Math.max; -var min = Math.min; -var sin = Math.sin; -var sqrt = Math.sqrt; -var epsilon = 1e-12; -var pi = Math.PI; -var halfPi = pi / 2; -var tau = 2 * pi; +const abs = Math.abs; +const atan2 = Math.atan2; +const cos = Math.cos; +const max = Math.max; +const min = Math.min; +const sin = Math.sin; +const sqrt = Math.sqrt; +const epsilon = 1e-12; +const pi = Math.PI; +const halfPi = pi / 2; +const tau = 2 * pi; function acos(x) { return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); } @@ -106859,7 +107209,7 @@ Linear.prototype = { this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: - this._point = 2; // proceed + this._point = 2; // falls through default: this._context.lineTo(x, y); break; @@ -106930,25 +107280,38 @@ function y(p) { },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"6wXmG":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "symbols", ()=>symbols); +parcelHelpers.export(exports, "symbolsFill", ()=>symbolsFill); +parcelHelpers.export(exports, "symbolsStroke", ()=>symbolsStroke); var _d3Path = require("d3-path"); +var _constantJs = require("./constant.js"); +var _constantJsDefault = parcelHelpers.interopDefault(_constantJs); +var _asteriskJs = require("./symbol/asterisk.js"); +var _asteriskJsDefault = parcelHelpers.interopDefault(_asteriskJs); var _circleJs = require("./symbol/circle.js"); var _circleJsDefault = parcelHelpers.interopDefault(_circleJs); var _crossJs = require("./symbol/cross.js"); var _crossJsDefault = parcelHelpers.interopDefault(_crossJs); var _diamondJs = require("./symbol/diamond.js"); var _diamondJsDefault = parcelHelpers.interopDefault(_diamondJs); -var _starJs = require("./symbol/star.js"); -var _starJsDefault = parcelHelpers.interopDefault(_starJs); +var _diamond2Js = require("./symbol/diamond2.js"); +var _diamond2JsDefault = parcelHelpers.interopDefault(_diamond2Js); +var _plusJs = require("./symbol/plus.js"); +var _plusJsDefault = parcelHelpers.interopDefault(_plusJs); var _squareJs = require("./symbol/square.js"); var _squareJsDefault = parcelHelpers.interopDefault(_squareJs); +var _square2Js = require("./symbol/square2.js"); +var _square2JsDefault = parcelHelpers.interopDefault(_square2Js); +var _starJs = require("./symbol/star.js"); +var _starJsDefault = parcelHelpers.interopDefault(_starJs); var _triangleJs = require("./symbol/triangle.js"); var _triangleJsDefault = parcelHelpers.interopDefault(_triangleJs); +var _triangle2Js = require("./symbol/triangle2.js"); +var _triangle2JsDefault = parcelHelpers.interopDefault(_triangle2Js); var _wyeJs = require("./symbol/wye.js"); var _wyeJsDefault = parcelHelpers.interopDefault(_wyeJs); -var _constantJs = require("./constant.js"); -var _constantJsDefault = parcelHelpers.interopDefault(_constantJs); -var symbols = [ +var _xJs = require("./symbol/x.js"); +var _xJsDefault = parcelHelpers.interopDefault(_xJs); +const symbolsFill = [ (0, _circleJsDefault.default), (0, _crossJsDefault.default), (0, _diamondJsDefault.default), @@ -106957,12 +107320,21 @@ var symbols = [ (0, _triangleJsDefault.default), (0, _wyeJsDefault.default) ]; -exports.default = function(type, size) { - var context = null; +const symbolsStroke = [ + (0, _circleJsDefault.default), + (0, _plusJsDefault.default), + (0, _xJsDefault.default), + (0, _triangle2JsDefault.default), + (0, _asteriskJsDefault.default), + (0, _square2JsDefault.default), + (0, _diamond2JsDefault.default) +]; +function Symbol(type, size) { + let context = null; type = typeof type === "function" ? type : (0, _constantJsDefault.default)(type || (0, _circleJsDefault.default)); size = typeof size === "function" ? size : (0, _constantJsDefault.default)(size === undefined ? 64 : +size); function symbol() { - var buffer; + let buffer; if (!context) context = buffer = (0, _d3Path.path)(); type.apply(this, arguments).draw(context, +size.apply(this, arguments)); if (buffer) return context = null, buffer + "" || null; @@ -106977,15 +107349,35 @@ exports.default = function(type, size) { return arguments.length ? (context = _ == null ? null : _, symbol) : context; }; return symbol; +} +exports.default = Symbol; + +},{"d3-path":"erNya","./constant.js":"6fSWz","./symbol/asterisk.js":"j4DN4","./symbol/circle.js":"9G0bU","./symbol/cross.js":"3dJnN","./symbol/diamond.js":"O6MwS","./symbol/diamond2.js":"grkT4","./symbol/plus.js":"6KkxA","./symbol/square.js":"llhtb","./symbol/square2.js":"b16iw","./symbol/star.js":"4OIBI","./symbol/triangle.js":"bcE3R","./symbol/triangle2.js":"jdvpz","./symbol/wye.js":"ceglC","./symbol/x.js":"ceBP8","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"j4DN4":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const sqrt3 = (0, _mathJs.sqrt)(3); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size + (0, _mathJs.min)(size / 28, 0.75)) * 0.59436; + const t = r / 2; + const u = t * sqrt3; + context.moveTo(0, r); + context.lineTo(0, -r); + context.moveTo(-u, -t); + context.lineTo(u, t); + context.moveTo(-u, t); + context.lineTo(u, -t); + } }; -},{"d3-path":"erNya","./symbol/circle.js":"9G0bU","./symbol/cross.js":"3dJnN","./symbol/diamond.js":"O6MwS","./symbol/star.js":"4OIBI","./symbol/square.js":"llhtb","./symbol/triangle.js":"bcE3R","./symbol/wye.js":"ceglC","./constant.js":"6fSWz","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9G0bU":[function(require,module,exports) { +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9G0bU":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size / (0, _mathJs.pi)); + draw (context, size) { + const r = (0, _mathJs.sqrt)(size / (0, _mathJs.pi)); context.moveTo(r, 0); context.arc(0, 0, r, 0, (0, _mathJs.tau)); } @@ -106994,9 +107386,10 @@ exports.default = { },{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3dJnN":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size / 5) / 2; + draw (context, size) { + const r = (0, _mathJs.sqrt)(size / 5) / 2; context.moveTo(-3 * r, -r); context.lineTo(-r, -r); context.lineTo(-r, -3 * r); @@ -107013,13 +107406,16 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"O6MwS":[function(require,module,exports) { +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"O6MwS":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var tan30 = Math.sqrt(1 / 3), tan30_2 = tan30 * 2; +var _mathJs = require("../math.js"); +const tan30 = (0, _mathJs.sqrt)(1 / 3); +const tan30_2 = tan30 * 2; exports.default = { - draw: function(context, size) { - var y = Math.sqrt(size / tan30_2), x = y * tan30; + draw (context, size) { + const y = (0, _mathJs.sqrt)(size / tan30_2); + const x = y * tan30; context.moveTo(0, -y); context.lineTo(x, 0); context.lineTo(0, y); @@ -107028,42 +107424,96 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4OIBI":[function(require,module,exports) { +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"grkT4":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _mathJs = require("../math.js"); -var ka = 0.89081309152928522810, kr = Math.sin((0, _mathJs.pi) / 10) / Math.sin(7 * (0, _mathJs.pi) / 10), kx = Math.sin((0, _mathJs.tau) / 10) * kr, ky = -Math.cos((0, _mathJs.tau) / 10) * kr; exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size * ka), x = kx * r, y = ky * r; + draw (context, size) { + const r = (0, _mathJs.sqrt)(size) * 0.62625; context.moveTo(0, -r); - context.lineTo(x, y); - for(var i = 1; i < 5; ++i){ - var a = (0, _mathJs.tau) * i / 5, c = Math.cos(a), s = Math.sin(a); - context.lineTo(s * r, -c * r); - context.lineTo(c * x - s * y, s * x + c * y); - } + context.lineTo(r, 0); + context.lineTo(0, r); + context.lineTo(-r, 0); context.closePath(); } }; +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"6KkxA":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size - (0, _mathJs.min)(size / 7, 2)) * 0.87559; + context.moveTo(-r, 0); + context.lineTo(r, 0); + context.moveTo(0, r); + context.lineTo(0, -r); + } +}; + },{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"llhtb":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var w = Math.sqrt(size), x = -w / 2; + draw (context, size) { + const w = (0, _mathJs.sqrt)(size); + const x = -w / 2; context.rect(x, x, w, w); } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bcE3R":[function(require,module,exports) { +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"b16iw":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var sqrt3 = Math.sqrt(3); +var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var y = -Math.sqrt(size / (sqrt3 * 3)); + draw (context, size) { + const r = (0, _mathJs.sqrt)(size) * 0.4431; + context.moveTo(r, r); + context.lineTo(r, -r); + context.lineTo(-r, -r); + context.lineTo(-r, r); + context.closePath(); + } +}; + +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4OIBI":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const ka = 0.89081309152928522810; +const kr = (0, _mathJs.sin)((0, _mathJs.pi) / 10) / (0, _mathJs.sin)(7 * (0, _mathJs.pi) / 10); +const kx = (0, _mathJs.sin)((0, _mathJs.tau) / 10) * kr; +const ky = -(0, _mathJs.cos)((0, _mathJs.tau) / 10) * kr; +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size * ka); + const x = kx * r; + const y = ky * r; + context.moveTo(0, -r); + context.lineTo(x, y); + for(let i = 1; i < 5; ++i){ + const a = (0, _mathJs.tau) * i / 5; + const c = (0, _mathJs.cos)(a); + const s = (0, _mathJs.sin)(a); + context.lineTo(s * r, -c * r); + context.lineTo(c * x - s * y, s * x + c * y); + } + context.closePath(); + } +}; + +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bcE3R":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const sqrt3 = (0, _mathJs.sqrt)(3); +exports.default = { + draw (context, size) { + const y = -(0, _mathJs.sqrt)(size / (sqrt3 * 3)); context.moveTo(0, y * 2); context.lineTo(-sqrt3 * y, -y); context.lineTo(sqrt3 * y, -y); @@ -107071,13 +107521,37 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ceglC":[function(require,module,exports) { +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"jdvpz":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var c = -0.5, s = Math.sqrt(3) / 2, k = 1 / Math.sqrt(12), a = (k / 2 + 1) * 3; +var _mathJs = require("../math.js"); +const sqrt3 = (0, _mathJs.sqrt)(3); exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size / a), x0 = r / 2, y0 = r * k, x1 = x0, y1 = r * k + r, x2 = -x1, y2 = y1; + draw (context, size) { + const s = (0, _mathJs.sqrt)(size) * 0.6824; + const t = s / 2; + const u = s * sqrt3 / 2; // cos(Math.PI / 6) + context.moveTo(0, -s); + context.lineTo(u, t); + context.lineTo(-u, t); + context.closePath(); + } +}; + +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ceglC":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const c = -0.5; +const s = (0, _mathJs.sqrt)(3) / 2; +const k = 1 / (0, _mathJs.sqrt)(12); +const a = (k / 2 + 1) * 3; +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size / a); + const x0 = r / 2, y0 = r * k; + const x1 = x0, y1 = r * k + r; + const x2 = -x1, y2 = y1; context.moveTo(x0, y0); context.lineTo(x1, y1); context.lineTo(x2, y2); @@ -107091,7 +107565,21 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"LU7y1":[function(require,module,exports) { +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ceBP8":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size - (0, _mathJs.min)(size / 6, 1.7)) * 0.6189; + context.moveTo(-r, -r); + context.lineTo(r, r); + context.moveTo(-r, r); + context.lineTo(r, -r); + } +}; + +},{"../math.js":"fkq1E","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"LU7y1":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _noopJs = require("../noop.js"); @@ -107183,7 +107671,7 @@ Basis.prototype = { lineEnd: function() { switch(this._point){ case 3: - point(this, this._x1, this._y1); // proceed + point(this, this._x1, this._y1); // falls through case 2: this._context.lineTo(this._x1, this._y1); break; @@ -107203,7 +107691,7 @@ Basis.prototype = { break; case 2: this._point = 3; - this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed + this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through default: point(this, x, y); break; @@ -107253,7 +107741,7 @@ BasisOpen.prototype = { this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; case 3: - this._point = 4; // proceed + this._point = 4; // falls through default: (0, _basisJs.point)(this, x, y); break; @@ -107422,7 +107910,7 @@ Cardinal.prototype = { this._x1 = x, this._y1 = y; break; case 2: - this._point = 3; // proceed + this._point = 3; // falls through default: point(this, x, y); break; @@ -107479,7 +107967,7 @@ CardinalOpen.prototype = { this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: - this._point = 4; // proceed + this._point = 4; // falls through default: (0, _cardinalJs.point)(this, x, y); break; @@ -107634,7 +108122,7 @@ CatmullRom.prototype = { this._point = 2; break; case 2: - this._point = 3; // proceed + this._point = 3; // falls through default: point(this, x, y); break; @@ -107697,7 +108185,7 @@ CatmullRomOpen.prototype = { this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: - this._point = 4; // proceed + this._point = 4; // falls through default: (0, _catmullRomJs.point)(this, x, y); break; @@ -107943,7 +108431,7 @@ Step.prototype = { this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: - this._point = 2; // proceed + this._point = 2; // falls through default: if (this._t <= 0) { this._context.lineTo(this._x, y); @@ -108287,80 +108775,80 @@ function scale(type, scale, metadata) { return this; } else return isValidScaleType(type) ? scales[type] : undefined; } // identity scale -scale(Identity, (0, _d3Scale.scaleIdentity)); // continuous scales -scale(Linear, (0, _d3Scale.scaleLinear), Continuous); -scale(Log, (0, _d3Scale.scaleLog), [ +scale(Identity, _d3Scale.scaleIdentity); // continuous scales +scale(Linear, _d3Scale.scaleLinear, Continuous); +scale(Log, _d3Scale.scaleLog, [ Continuous, Log ]); -scale(Pow, (0, _d3Scale.scalePow), Continuous); -scale(Sqrt, (0, _d3Scale.scaleSqrt), Continuous); -scale(Symlog, (0, _d3Scale.scaleSymlog), Continuous); -scale(Time, (0, _d3Scale.scaleTime), [ +scale(Pow, _d3Scale.scalePow, Continuous); +scale(Sqrt, _d3Scale.scaleSqrt, Continuous); +scale(Symlog, _d3Scale.scaleSymlog, Continuous); +scale(Time, _d3Scale.scaleTime, [ Continuous, Temporal ]); -scale(UTC, (0, _d3Scale.scaleUtc), [ +scale(UTC, _d3Scale.scaleUtc, [ Continuous, Temporal ]); // sequential scales -scale(Sequential, (0, _d3Scale.scaleSequential), [ +scale(Sequential, _d3Scale.scaleSequential, [ Continuous, Interpolating ]); // backwards compat -scale("".concat(Sequential, "-").concat(Linear), (0, _d3Scale.scaleSequential), [ +scale("".concat(Sequential, "-").concat(Linear), _d3Scale.scaleSequential, [ Continuous, Interpolating ]); -scale("".concat(Sequential, "-").concat(Log), (0, _d3Scale.scaleSequentialLog), [ +scale("".concat(Sequential, "-").concat(Log), _d3Scale.scaleSequentialLog, [ Continuous, Interpolating, Log ]); -scale("".concat(Sequential, "-").concat(Pow), (0, _d3Scale.scaleSequentialPow), [ +scale("".concat(Sequential, "-").concat(Pow), _d3Scale.scaleSequentialPow, [ Continuous, Interpolating ]); -scale("".concat(Sequential, "-").concat(Sqrt), (0, _d3Scale.scaleSequentialSqrt), [ +scale("".concat(Sequential, "-").concat(Sqrt), _d3Scale.scaleSequentialSqrt, [ Continuous, Interpolating ]); -scale("".concat(Sequential, "-").concat(Symlog), (0, _d3Scale.scaleSequentialSymlog), [ +scale("".concat(Sequential, "-").concat(Symlog), _d3Scale.scaleSequentialSymlog, [ Continuous, Interpolating ]); // diverging scales -scale("".concat(Diverging, "-").concat(Linear), (0, _d3Scale.scaleDiverging), [ +scale("".concat(Diverging, "-").concat(Linear), _d3Scale.scaleDiverging, [ Continuous, Interpolating ]); -scale("".concat(Diverging, "-").concat(Log), (0, _d3Scale.scaleDivergingLog), [ +scale("".concat(Diverging, "-").concat(Log), _d3Scale.scaleDivergingLog, [ Continuous, Interpolating, Log ]); -scale("".concat(Diverging, "-").concat(Pow), (0, _d3Scale.scaleDivergingPow), [ +scale("".concat(Diverging, "-").concat(Pow), _d3Scale.scaleDivergingPow, [ Continuous, Interpolating ]); -scale("".concat(Diverging, "-").concat(Sqrt), (0, _d3Scale.scaleDivergingSqrt), [ +scale("".concat(Diverging, "-").concat(Sqrt), _d3Scale.scaleDivergingSqrt, [ Continuous, Interpolating ]); -scale("".concat(Diverging, "-").concat(Symlog), (0, _d3Scale.scaleDivergingSymlog), [ +scale("".concat(Diverging, "-").concat(Symlog), _d3Scale.scaleDivergingSymlog, [ Continuous, Interpolating ]); // discretizing scales -scale(Quantile, (0, _d3Scale.scaleQuantile), [ +scale(Quantile, _d3Scale.scaleQuantile, [ Discretizing, Quantile ]); -scale(Quantize, (0, _d3Scale.scaleQuantize), Discretizing); -scale(Threshold, (0, _d3Scale.scaleThreshold), Discretizing); // discrete scales +scale(Quantize, _d3Scale.scaleQuantize, Discretizing); +scale(Threshold, _d3Scale.scaleThreshold, Discretizing); // discrete scales scale(BinOrdinal, scaleBinOrdinal, [ Discrete, Discretizing ]); -scale(Ordinal, (0, _d3Scale.scaleOrdinal), Discrete); +scale(Ordinal, _d3Scale.scaleOrdinal, Discrete); scale(Band, band, Discrete); scale(Point, point, Discrete); function isValidScaleType(type) { @@ -108404,7 +108892,7 @@ function interpolateRange(interpolator, range) { }; } function interpolateColors(colors, type, gamma) { - return (0, _d3Interpolate.piecewise)(interpolate(type || "rgb", gamma), colors); + return _d3Interpolate.piecewise(interpolate(type || "rgb", gamma), colors); } function quantizeInterpolator(interpolator, count) { const samples = new Array(count), n = count + 1; @@ -108784,7 +109272,161 @@ var _divergingJsDefault = parcelHelpers.interopDefault(_divergingJs); var _tickFormatJs = require("./tickFormat.js"); var _tickFormatJsDefault = parcelHelpers.interopDefault(_tickFormatJs); -},{"./band.js":false,"./identity.js":"4lmrT","./linear.js":"2Mb1X","./log.js":"fjlvX","./symlog.js":"jw0HW","./ordinal.js":"l4AYv","./pow.js":"a3E7U","./radial.js":false,"./quantile.js":"8l8gh","./quantize.js":"asmDg","./threshold.js":"bXV4m","./time.js":"hf0gG","./utcTime.js":"gH413","./sequential.js":"7utjO","./sequentialQuantile.js":false,"./diverging.js":"hvyvZ","./tickFormat.js":"bbchH","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4lmrT":[function(require,module,exports) { +},{"./band.js":"clQZe","./identity.js":"4lmrT","./linear.js":"2Mb1X","./log.js":"fjlvX","./symlog.js":"jw0HW","./ordinal.js":"l4AYv","./pow.js":"a3E7U","./radial.js":"5Oqgs","./quantile.js":"8l8gh","./quantize.js":"asmDg","./threshold.js":"bXV4m","./time.js":"hf0gG","./utcTime.js":"gH413","./sequential.js":"7utjO","./sequentialQuantile.js":"37xzU","./diverging.js":"hvyvZ","./tickFormat.js":"bbchH","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"clQZe":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "point", ()=>point); +var _d3Array = require("d3-array"); +var _initJs = require("./init.js"); +var _ordinalJs = require("./ordinal.js"); +var _ordinalJsDefault = parcelHelpers.interopDefault(_ordinalJs); +function band() { + var scale = (0, _ordinalJsDefault.default)().unknown(undefined), domain = scale.domain, ordinalRange = scale.range, r0 = 0, r1 = 1, step, bandwidth, round = false, paddingInner = 0, paddingOuter = 0, align = 0.5; + delete scale.unknown; + function rescale() { + var n = domain().length, reverse = r1 < r0, start = reverse ? r1 : r0, stop = reverse ? r0 : r1; + step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); + if (round) step = Math.floor(step); + start += (stop - start - step * (n - paddingInner)) * align; + bandwidth = step * (1 - paddingInner); + if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); + var values = (0, _d3Array.range)(n).map(function(i) { + return start + step * i; + }); + return ordinalRange(reverse ? values.reverse() : values); + } + scale.domain = function(_) { + return arguments.length ? (domain(_), rescale()) : domain(); + }; + scale.range = function(_) { + return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [ + r0, + r1 + ]; + }; + scale.rangeRound = function(_) { + return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale(); + }; + scale.bandwidth = function() { + return bandwidth; + }; + scale.step = function() { + return step; + }; + scale.round = function(_) { + return arguments.length ? (round = !!_, rescale()) : round; + }; + scale.padding = function(_) { + return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; + }; + scale.paddingInner = function(_) { + return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; + }; + scale.paddingOuter = function(_) { + return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; + }; + scale.align = function(_) { + return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; + }; + scale.copy = function() { + return band(domain(), [ + r0, + r1 + ]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align); + }; + return (0, _initJs.initRange).apply(rescale(), arguments); +} +exports.default = band; +function pointish(scale) { + var copy = scale.copy; + scale.padding = scale.paddingOuter; + delete scale.paddingInner; + delete scale.paddingOuter; + scale.copy = function() { + return pointish(copy()); + }; + return scale; +} +function point() { + return pointish(band.apply(null, arguments).paddingInner(1)); +} + +},{"d3-array":"8JMcC","./init.js":"efWLG","./ordinal.js":"l4AYv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"efWLG":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "initRange", ()=>initRange); +parcelHelpers.export(exports, "initInterpolator", ()=>initInterpolator); +function initRange(domain, range) { + switch(arguments.length){ + case 0: + break; + case 1: + this.range(domain); + break; + default: + this.range(range).domain(domain); + break; + } + return this; +} +function initInterpolator(domain, interpolator) { + switch(arguments.length){ + case 0: + break; + case 1: + if (typeof domain === "function") this.interpolator(domain); + else this.range(domain); + break; + default: + this.domain(domain); + if (typeof interpolator === "function") this.interpolator(interpolator); + else this.range(interpolator); + break; + } + return this; +} + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"l4AYv":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "implicit", ()=>implicit); +var _d3Array = require("d3-array"); +var _initJs = require("./init.js"); +const implicit = Symbol("implicit"); +function ordinal() { + var index = new (0, _d3Array.InternMap)(), domain = [], range = [], unknown = implicit; + function scale(d) { + let i = index.get(d); + if (i === undefined) { + if (unknown !== implicit) return unknown; + index.set(d, i = domain.push(d) - 1); + } + return range[i % range.length]; + } + scale.domain = function(_) { + if (!arguments.length) return domain.slice(); + domain = [], index = new (0, _d3Array.InternMap)(); + for (const value of _){ + if (index.has(value)) continue; + index.set(value, domain.push(value) - 1); + } + return scale; + }; + scale.range = function(_) { + return arguments.length ? (range = Array.from(_), scale) : range.slice(); + }; + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function() { + return ordinal(domain, range).unknown(unknown); + }; + (0, _initJs.initRange).apply(scale, arguments); + return scale; +} +exports.default = ordinal; + +},{"d3-array":"8JMcC","./init.js":"efWLG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4lmrT":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _linearJs = require("./linear.js"); @@ -109109,34 +109751,7 @@ var _defineJsDefault = parcelHelpers.interopDefault(_defineJs); function Color() {} var darker = 0.7; var brighter = 1 / darker; -var reI = "\\s*([+-]?\\d+)\\s*", reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp("^rgb\\(" + [ - reI, - reI, - reI -] + "\\)$"), reRgbPercent = new RegExp("^rgb\\(" + [ - reP, - reP, - reP -] + "\\)$"), reRgbaInteger = new RegExp("^rgba\\(" + [ - reI, - reI, - reI, - reN -] + "\\)$"), reRgbaPercent = new RegExp("^rgba\\(" + [ - reP, - reP, - reP, - reN -] + "\\)$"), reHslPercent = new RegExp("^hsl\\(" + [ - reN, - reP, - reP -] + "\\)$"), reHslaPercent = new RegExp("^hsla\\(" + [ - reN, - reP, - reP, - reN -] + "\\)$"); +var reI = "\\s*([+-]?\\d+)\\s*", reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`), reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`), reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`), reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`), reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`), reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`); var named = { aliceblue: 0xf0f8ff, antiquewhite: 0xfaebd7, @@ -109288,14 +109903,15 @@ var named = { yellowgreen: 0x9acd32 }; (0, _defineJsDefault.default)(Color, color, { - copy: function(channels) { + copy (channels) { return Object.assign(new this.constructor, this, channels); }, - displayable: function() { + displayable () { return this.rgb().displayable(); }, hex: color_formatHex, formatHex: color_formatHex, + formatHex8: color_formatHex8, formatHsl: color_formatHsl, formatRgb: color_formatRgb, toString: color_formatRgb @@ -109303,6 +109919,9 @@ var named = { function color_formatHex() { return this.rgb().formatHex(); } +function color_formatHex8() { + return this.rgb().formatHex8(); +} function color_formatHsl() { return hslConvert(this).formatHsl(); } @@ -109350,35 +109969,47 @@ function Rgb(r, g, b, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Rgb, rgb, (0, _defineJs.extend)(Color, { - brighter: function(k) { + brighter (k) { k = k == null ? brighter : Math.pow(brighter, k); return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); }, - darker: function(k) { + darker (k) { k = k == null ? darker : Math.pow(darker, k); return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); }, - rgb: function() { + rgb () { return this; }, - displayable: function() { + clamp () { + return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity)); + }, + displayable () { return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1; }, hex: rgb_formatHex, formatHex: rgb_formatHex, + formatHex8: rgb_formatHex8, formatRgb: rgb_formatRgb, toString: rgb_formatRgb })); function rgb_formatHex() { - return "#" + hex(this.r) + hex(this.g) + hex(this.b); + return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`; +} +function rgb_formatHex8() { + return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; } function rgb_formatRgb() { - var a = this.opacity; - a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "rgb(" : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (a === 1 ? ")" : ", " + a + ")"); + const a = clampa(this.opacity); + return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`; +} +function clampa(opacity) { + return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity)); +} +function clampi(value) { + return Math.max(0, Math.min(255, Math.round(value) || 0)); } function hex(value) { - value = Math.max(0, Math.min(255, Math.round(value) || 0)); + value = clampi(value); return (value < 16 ? "0" : "") + value.toString(16); } function hsla(h, s, l, a) { @@ -109413,27 +110044,36 @@ function Hsl(h, s, l, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Hsl, hsl, (0, _defineJs.extend)(Color, { - brighter: function(k) { + brighter (k) { k = k == null ? brighter : Math.pow(brighter, k); return new Hsl(this.h, this.s, this.l * k, this.opacity); }, - darker: function(k) { + darker (k) { k = k == null ? darker : Math.pow(darker, k); return new Hsl(this.h, this.s, this.l * k, this.opacity); }, - rgb: function() { + rgb () { var h = this.h % 360 + (this.h < 0) * 360, s = isNaN(h) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2; return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity); }, - displayable: function() { + clamp () { + return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity)); + }, + displayable () { return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1; }, - formatHsl: function() { - var a = this.opacity; - a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "hsl(" : "hsla(") + (this.h || 0) + ", " + (this.s || 0) * 100 + "%, " + (this.l || 0) * 100 + "%" + (a === 1 ? ")" : ", " + a + ")"); + formatHsl () { + const a = clampa(this.opacity); + return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`; } })); +function clamph(value) { + value = (value || 0) % 360; + return value < 0 ? value + 360 : value; +} +function clampt(value) { + return Math.max(0, Math.min(1, value || 0)); +} /* From FvD 13.37, CSS Color Module Level 3 */ function hsl2rgb(h, m1, m2) { return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255; } @@ -109492,13 +110132,13 @@ function Lab(l, a, b, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Lab, lab, (0, _defineJs.extend)((0, _colorJs.Color), { - brighter: function(k) { + brighter (k) { return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); }, - darker: function(k) { + darker (k) { return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); }, - rgb: function() { + rgb () { var y = (this.l + 16) / 116, x = isNaN(this.a) ? y : y + this.a / 500, z = isNaN(this.b) ? y : y - this.b / 200; x = Xn * lab2xyz(x); y = Yn * lab2xyz(y); @@ -109543,13 +110183,13 @@ function hcl2lab(o) { return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); } (0, _defineJsDefault.default)(Hcl, hcl, (0, _defineJs.extend)((0, _colorJs.Color), { - brighter: function(k) { + brighter (k) { return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); }, - darker: function(k) { + darker (k) { return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); }, - rgb: function() { + rgb () { return hcl2lab(this).rgb(); } })); @@ -109588,15 +110228,15 @@ function Cubehelix(h, s, l, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Cubehelix, cubehelix, (0, _defineJs.extend)((0, _colorJs.Color), { - brighter: function(k) { + brighter (k) { k = k == null ? (0, _colorJs.brighter) : Math.pow((0, _colorJs.brighter), k); return new Cubehelix(this.h, this.s, this.l * k, this.opacity); }, - darker: function(k) { + darker (k) { k = k == null ? (0, _colorJs.darker) : Math.pow((0, _colorJs.darker), k); return new Cubehelix(this.h, this.s, this.l * k, this.opacity); }, - rgb: function() { + rgb () { var h = isNaN(this.h) ? 0 : (this.h + 120) * (0, _mathJs.radians), l = +this.l, a = isNaN(this.s) ? 0 : this.s * l * (1 - l), cosh = Math.cos(h), sinh = Math.sin(h); return new (0, _colorJs.Rgb)(255 * (l + a * (A * cosh + B * sinh)), 255 * (l + a * (C * cosh + D * sinh)), 255 * (l + a * (E * cosh)), this.opacity); } @@ -110178,41 +110818,6 @@ function number(x) { } exports.default = number; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"efWLG":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "initRange", ()=>initRange); -parcelHelpers.export(exports, "initInterpolator", ()=>initInterpolator); -function initRange(domain, range) { - switch(arguments.length){ - case 0: - break; - case 1: - this.range(domain); - break; - default: - this.range(range).domain(domain); - break; - } - return this; -} -function initInterpolator(domain, interpolator) { - switch(arguments.length){ - case 0: - break; - case 1: - if (typeof domain === "function") this.interpolator(domain); - else this.range(domain); - break; - default: - this.domain(domain); - if (typeof interpolator === "function") this.interpolator(interpolator); - else this.range(interpolator); - break; - } - return this; -} - },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bbchH":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -110268,22 +110873,20 @@ function pow10(x) { return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; } function powp(base) { - return base === 10 ? pow10 : base === Math.E ? Math.exp : function(x) { - return Math.pow(base, x); - }; + return base === 10 ? pow10 : base === Math.E ? Math.exp : (x)=>Math.pow(base, x); } function logp(base) { - return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), function(x) { - return Math.log(x) / base; - }); + return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), (x)=>Math.log(x) / base); } function reflect(f) { - return function(x) { - return -f(-x); - }; + return (x, k)=>-f(-x, k); } function loggish(transform) { - var scale = transform(transformLog, transformExp), domain = scale.domain, base = 10, logs, pows; + const scale = transform(transformLog, transformExp); + const domain = scale.domain; + let base = 10; + let logs; + let pows; function rescale() { logs = logp(base), pows = powp(base); if (domain()[0] < 0) { @@ -110298,20 +110901,31 @@ function loggish(transform) { scale.domain = function(_) { return arguments.length ? (domain(_), rescale()) : domain(); }; - scale.ticks = function(count) { - var d = domain(), u = d[0], v = d[d.length - 1], r; - if (r = v < u) i = u, u = v, v = i; - var i = logs(u), j = logs(v), p, k, t, n = count == null ? 10 : +count, z = []; + scale.ticks = (count)=>{ + const d = domain(); + let u = d[0]; + let v = d[d.length - 1]; + const r = v < u; + if (r) [u, v] = [ + v, + u + ]; + let i = logs(u); + let j = logs(v); + let k; + let t; + const n = count == null ? 10 : +count; + let z = []; if (!(base % 1) && j - i < n) { i = Math.floor(i), j = Math.ceil(j); - if (u > 0) for(; i <= j; ++i)for(k = 1, p = pows(i); k < base; ++k){ - t = p * k; + if (u > 0) for(; i <= j; ++i)for(k = 1; k < base; ++k){ + t = i < 0 ? k / pows(-i) : k * pows(i); if (t < u) continue; if (t > v) break; z.push(t); } - else for(; i <= j; ++i)for(k = base - 1, p = pows(i); k >= 1; --k){ - t = p * k; + else for(; i <= j; ++i)for(k = base - 1; k >= 1; --k){ + t = i > 0 ? k / pows(-i) : k * pows(i); if (t < u) continue; if (t > v) break; z.push(t); @@ -110320,38 +110934,35 @@ function loggish(transform) { } else z = (0, _d3Array.ticks)(i, j, Math.min(j - i, n)).map(pows); return r ? z.reverse() : z; }; - scale.tickFormat = function(count, specifier) { - if (specifier == null) specifier = base === 10 ? ".0e" : ","; - if (typeof specifier !== "function") specifier = (0, _d3Format.format)(specifier); - if (count === Infinity) return specifier; + scale.tickFormat = (count, specifier)=>{ if (count == null) count = 10; - var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? - return function(d) { - var i = d / pows(Math.round(logs(d))); + if (specifier == null) specifier = base === 10 ? "s" : ","; + if (typeof specifier !== "function") { + if (!(base % 1) && (specifier = (0, _d3Format.formatSpecifier)(specifier)).precision == null) specifier.trim = true; + specifier = (0, _d3Format.format)(specifier); + } + if (count === Infinity) return specifier; + const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? + return (d)=>{ + let i = d / pows(Math.round(logs(d))); if (i * base < base - 0.5) i *= base; return i <= k ? specifier(d) : ""; }; }; - scale.nice = function() { + scale.nice = ()=>{ return domain((0, _niceJsDefault.default)(domain(), { - floor: function(x) { - return pows(Math.floor(logs(x))); - }, - ceil: function(x) { - return pows(Math.ceil(logs(x))); - } + floor: (x)=>pows(Math.floor(logs(x))), + ceil: (x)=>pows(Math.ceil(logs(x))) })); }; return scale; } function log() { - var scale = loggish((0, _continuousJs.transformer)()).domain([ + const scale = loggish((0, _continuousJs.transformer)()).domain([ 1, 10 ]); - scale.copy = function() { - return (0, _continuousJs.copy)(scale, log()).base(scale.base()); - }; + scale.copy = ()=>(0, _continuousJs.copy)(scale, log()).base(scale.base()); (0, _initJs.initRange).apply(scale, arguments); return scale; } @@ -110406,47 +111017,7 @@ function symlog() { } exports.default = symlog; -},{"./linear.js":"2Mb1X","./continuous.js":"Mo65z","./init.js":"efWLG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"l4AYv":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "implicit", ()=>implicit); -var _initJs = require("./init.js"); -const implicit = Symbol("implicit"); -function ordinal() { - var index = new Map(), domain = [], range = [], unknown = implicit; - function scale(d) { - var key = d + "", i = index.get(key); - if (!i) { - if (unknown !== implicit) return unknown; - index.set(key, i = domain.push(d)); - } - return range[(i - 1) % range.length]; - } - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = [], index = new Map(); - for (const value of _){ - const key = value + ""; - if (index.has(key)) continue; - index.set(key, domain.push(value)); - } - return scale; - }; - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), scale) : range.slice(); - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - scale.copy = function() { - return ordinal(domain, range).unknown(unknown); - }; - (0, _initJs.initRange).apply(scale, arguments); - return scale; -} -exports.default = ordinal; - -},{"./init.js":"efWLG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"a3E7U":[function(require,module,exports) { +},{"./linear.js":"2Mb1X","./continuous.js":"Mo65z","./init.js":"efWLG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"a3E7U":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "powish", ()=>powish); @@ -110488,7 +111059,60 @@ function sqrt() { return pow.apply(null, arguments).exponent(0.5); } -},{"./linear.js":"2Mb1X","./continuous.js":"Mo65z","./init.js":"efWLG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8l8gh":[function(require,module,exports) { +},{"./linear.js":"2Mb1X","./continuous.js":"Mo65z","./init.js":"efWLG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"5Oqgs":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _continuousJs = require("./continuous.js"); +var _continuousJsDefault = parcelHelpers.interopDefault(_continuousJs); +var _initJs = require("./init.js"); +var _linearJs = require("./linear.js"); +var _numberJs = require("./number.js"); +var _numberJsDefault = parcelHelpers.interopDefault(_numberJs); +function square(x) { + return Math.sign(x) * x * x; +} +function unsquare(x) { + return Math.sign(x) * Math.sqrt(Math.abs(x)); +} +function radial() { + var squared = (0, _continuousJsDefault.default)(), range = [ + 0, + 1 + ], round = false, unknown; + function scale(x) { + var y = unsquare(squared(x)); + return isNaN(y) ? unknown : round ? Math.round(y) : y; + } + scale.invert = function(y) { + return squared.invert(square(y)); + }; + scale.domain = function(_) { + return arguments.length ? (squared.domain(_), scale) : squared.domain(); + }; + scale.range = function(_) { + return arguments.length ? (squared.range((range = Array.from(_, (0, _numberJsDefault.default))).map(square)), scale) : range.slice(); + }; + scale.rangeRound = function(_) { + return scale.range(_).round(true); + }; + scale.round = function(_) { + return arguments.length ? (round = !!_, scale) : round; + }; + scale.clamp = function(_) { + return arguments.length ? (squared.clamp(_), scale) : squared.clamp(); + }; + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function() { + return radial(squared.domain(), range).round(round).clamp(squared.clamp()).unknown(unknown); + }; + (0, _initJs.initRange).apply(scale, arguments); + return (0, _linearJs.linearish)(scale); +} +exports.default = radial; + +},{"./continuous.js":"Mo65z","./init.js":"efWLG","./linear.js":"2Mb1X","./number.js":"1GMBF","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8l8gh":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _d3Array = require("d3-array"); @@ -110797,7 +111421,43 @@ function sequentialSqrt() { return sequentialPow.apply(null, arguments).exponent(0.5); } -},{"d3-interpolate":"dQqYJ","./continuous.js":"Mo65z","./init.js":"efWLG","./linear.js":"2Mb1X","./log.js":"fjlvX","./symlog.js":"jw0HW","./pow.js":"a3E7U","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hvyvZ":[function(require,module,exports) { +},{"d3-interpolate":"dQqYJ","./continuous.js":"Mo65z","./init.js":"efWLG","./linear.js":"2Mb1X","./log.js":"fjlvX","./symlog.js":"jw0HW","./pow.js":"a3E7U","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"37xzU":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _d3Array = require("d3-array"); +var _continuousJs = require("./continuous.js"); +var _initJs = require("./init.js"); +function sequentialQuantile() { + var domain = [], interpolator = (0, _continuousJs.identity); + function scale(x) { + if (x != null && !isNaN(x = +x)) return interpolator(((0, _d3Array.bisect)(domain, x, 1) - 1) / (domain.length - 1)); + } + scale.domain = function(_) { + if (!arguments.length) return domain.slice(); + domain = []; + for (let d of _)if (d != null && !isNaN(d = +d)) domain.push(d); + domain.sort((0, _d3Array.ascending)); + return scale; + }; + scale.interpolator = function(_) { + return arguments.length ? (interpolator = _, scale) : interpolator; + }; + scale.range = function() { + return domain.map((d, i)=>interpolator(i / (domain.length - 1))); + }; + scale.quantiles = function(n) { + return Array.from({ + length: n + 1 + }, (_, i)=>(0, _d3Array.quantile)(domain, i / n)); + }; + scale.copy = function() { + return sequentialQuantile(interpolator).domain(domain); + }; + return (0, _initJs.initInterpolator).apply(scale, arguments); +} +exports.default = sequentialQuantile; + +},{"d3-array":"8JMcC","./continuous.js":"Mo65z","./init.js":"efWLG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hvyvZ":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "divergingLog", ()=>divergingLog); @@ -114296,8 +114956,7 @@ var _d3Array = require("d3-array"); var _cartesianJs = require("./cartesian.js"); var _mathJs = require("./math.js"); function longitude(point) { - if ((0, _mathJs.abs)(point[0]) <= (0, _mathJs.pi)) return point[0]; - else return (0, _mathJs.sign)(point[0]) * (((0, _mathJs.abs)(point[0]) + (0, _mathJs.pi)) % (0, _mathJs.tau) - (0, _mathJs.pi)); + return (0, _mathJs.abs)(point[0]) <= (0, _mathJs.pi) ? point[0] : (0, _mathJs.sign)(point[0]) * (((0, _mathJs.abs)(point[0]) + (0, _mathJs.pi)) % (0, _mathJs.tau) - (0, _mathJs.pi)); } exports.default = function(polygon, point) { var lambda = longitude(point), phi = point[1], sinPhi = (0, _mathJs.sin)(phi), normal = [ @@ -116311,41 +116970,41 @@ exports.default = function() { },{"../math.js":"cDOGy","./mercator.js":"a3u6b","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3lKpN":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "geoAiry", ()=>(0, _airyDefault.default)); -parcelHelpers.export(exports, "geoAiryRaw", ()=>(0, _airy.airyRaw)); -parcelHelpers.export(exports, "geoAitoff", ()=>(0, _aitoffDefault.default)); -parcelHelpers.export(exports, "geoAitoffRaw", ()=>(0, _aitoff.aitoffRaw)); -parcelHelpers.export(exports, "geoArmadillo", ()=>(0, _armadilloDefault.default)); -parcelHelpers.export(exports, "geoArmadilloRaw", ()=>(0, _armadillo.armadilloRaw)); -parcelHelpers.export(exports, "geoAugust", ()=>(0, _augustDefault.default)); -parcelHelpers.export(exports, "geoAugustRaw", ()=>(0, _august.augustRaw)); -parcelHelpers.export(exports, "geoBaker", ()=>(0, _bakerDefault.default)); -parcelHelpers.export(exports, "geoBakerRaw", ()=>(0, _baker.bakerRaw)); -parcelHelpers.export(exports, "geoBerghaus", ()=>(0, _berghausDefault.default)); -parcelHelpers.export(exports, "geoBerghausRaw", ()=>(0, _berghaus.berghausRaw)); -parcelHelpers.export(exports, "geoBertin1953", ()=>(0, _bertinDefault.default)); -parcelHelpers.export(exports, "geoBertin1953Raw", ()=>(0, _bertin.bertin1953Raw)); -parcelHelpers.export(exports, "geoBoggs", ()=>(0, _boggsDefault.default)); -parcelHelpers.export(exports, "geoBoggsRaw", ()=>(0, _boggs.boggsRaw)); -parcelHelpers.export(exports, "geoBonne", ()=>(0, _bonneDefault.default)); -parcelHelpers.export(exports, "geoBonneRaw", ()=>(0, _bonne.bonneRaw)); -parcelHelpers.export(exports, "geoBottomley", ()=>(0, _bottomleyDefault.default)); -parcelHelpers.export(exports, "geoBottomleyRaw", ()=>(0, _bottomley.bottomleyRaw)); -parcelHelpers.export(exports, "geoBromley", ()=>(0, _bromleyDefault.default)); -parcelHelpers.export(exports, "geoBromleyRaw", ()=>(0, _bromley.bromleyRaw)); -parcelHelpers.export(exports, "geoChamberlin", ()=>(0, _chamberlinDefault.default)); -parcelHelpers.export(exports, "geoChamberlinRaw", ()=>(0, _chamberlin.chamberlinRaw)); -parcelHelpers.export(exports, "geoChamberlinAfrica", ()=>(0, _chamberlin.chamberlinAfrica)); -parcelHelpers.export(exports, "geoCollignon", ()=>(0, _collignonDefault.default)); -parcelHelpers.export(exports, "geoCollignonRaw", ()=>(0, _collignon.collignonRaw)); -parcelHelpers.export(exports, "geoCraig", ()=>(0, _craigDefault.default)); -parcelHelpers.export(exports, "geoCraigRaw", ()=>(0, _craig.craigRaw)); -parcelHelpers.export(exports, "geoCraster", ()=>(0, _crasterDefault.default)); -parcelHelpers.export(exports, "geoCrasterRaw", ()=>(0, _craster.crasterRaw)); -parcelHelpers.export(exports, "geoCylindricalEqualArea", ()=>(0, _cylindricalEqualAreaDefault.default)); -parcelHelpers.export(exports, "geoCylindricalEqualAreaRaw", ()=>(0, _cylindricalEqualArea.cylindricalEqualAreaRaw)); -parcelHelpers.export(exports, "geoCylindricalStereographic", ()=>(0, _cylindricalStereographicDefault.default)); -parcelHelpers.export(exports, "geoCylindricalStereographicRaw", ()=>(0, _cylindricalStereographic.cylindricalStereographicRaw)); +parcelHelpers.export(exports, "geoAiry", ()=>(0, _airyJsDefault.default)); +parcelHelpers.export(exports, "geoAiryRaw", ()=>(0, _airyJs.airyRaw)); +parcelHelpers.export(exports, "geoAitoff", ()=>(0, _aitoffJsDefault.default)); +parcelHelpers.export(exports, "geoAitoffRaw", ()=>(0, _aitoffJs.aitoffRaw)); +parcelHelpers.export(exports, "geoArmadillo", ()=>(0, _armadilloJsDefault.default)); +parcelHelpers.export(exports, "geoArmadilloRaw", ()=>(0, _armadilloJs.armadilloRaw)); +parcelHelpers.export(exports, "geoAugust", ()=>(0, _augustJsDefault.default)); +parcelHelpers.export(exports, "geoAugustRaw", ()=>(0, _augustJs.augustRaw)); +parcelHelpers.export(exports, "geoBaker", ()=>(0, _bakerJsDefault.default)); +parcelHelpers.export(exports, "geoBakerRaw", ()=>(0, _bakerJs.bakerRaw)); +parcelHelpers.export(exports, "geoBerghaus", ()=>(0, _berghausJsDefault.default)); +parcelHelpers.export(exports, "geoBerghausRaw", ()=>(0, _berghausJs.berghausRaw)); +parcelHelpers.export(exports, "geoBertin1953", ()=>(0, _bertinJsDefault.default)); +parcelHelpers.export(exports, "geoBertin1953Raw", ()=>(0, _bertinJs.bertin1953Raw)); +parcelHelpers.export(exports, "geoBoggs", ()=>(0, _boggsJsDefault.default)); +parcelHelpers.export(exports, "geoBoggsRaw", ()=>(0, _boggsJs.boggsRaw)); +parcelHelpers.export(exports, "geoBonne", ()=>(0, _bonneJsDefault.default)); +parcelHelpers.export(exports, "geoBonneRaw", ()=>(0, _bonneJs.bonneRaw)); +parcelHelpers.export(exports, "geoBottomley", ()=>(0, _bottomleyJsDefault.default)); +parcelHelpers.export(exports, "geoBottomleyRaw", ()=>(0, _bottomleyJs.bottomleyRaw)); +parcelHelpers.export(exports, "geoBromley", ()=>(0, _bromleyJsDefault.default)); +parcelHelpers.export(exports, "geoBromleyRaw", ()=>(0, _bromleyJs.bromleyRaw)); +parcelHelpers.export(exports, "geoChamberlin", ()=>(0, _chamberlinJsDefault.default)); +parcelHelpers.export(exports, "geoChamberlinRaw", ()=>(0, _chamberlinJs.chamberlinRaw)); +parcelHelpers.export(exports, "geoChamberlinAfrica", ()=>(0, _chamberlinJs.chamberlinAfrica)); +parcelHelpers.export(exports, "geoCollignon", ()=>(0, _collignonJsDefault.default)); +parcelHelpers.export(exports, "geoCollignonRaw", ()=>(0, _collignonJs.collignonRaw)); +parcelHelpers.export(exports, "geoCraig", ()=>(0, _craigJsDefault.default)); +parcelHelpers.export(exports, "geoCraigRaw", ()=>(0, _craigJs.craigRaw)); +parcelHelpers.export(exports, "geoCraster", ()=>(0, _crasterJsDefault.default)); +parcelHelpers.export(exports, "geoCrasterRaw", ()=>(0, _crasterJs.crasterRaw)); +parcelHelpers.export(exports, "geoCylindricalEqualArea", ()=>(0, _cylindricalEqualAreaJsDefault.default)); +parcelHelpers.export(exports, "geoCylindricalEqualAreaRaw", ()=>(0, _cylindricalEqualAreaJs.cylindricalEqualAreaRaw)); +parcelHelpers.export(exports, "geoCylindricalStereographic", ()=>(0, _cylindricalStereographicJsDefault.default)); +parcelHelpers.export(exports, "geoCylindricalStereographicRaw", ()=>(0, _cylindricalStereographicJs.cylindricalStereographicRaw)); parcelHelpers.export(exports, "geoEckert1", ()=>(0, _eckert1JsDefault.default)); parcelHelpers.export(exports, "geoEckert1Raw", ()=>(0, _eckert1Js.eckert1Raw)); parcelHelpers.export(exports, "geoEckert2", ()=>(0, _eckert2JsDefault.default)); @@ -116395,91 +117054,91 @@ parcelHelpers.export(exports, "geoHomolosine", ()=>(0, _homolosineJsDefault.defa parcelHelpers.export(exports, "geoHomolosineRaw", ()=>(0, _homolosineJs.homolosineRaw)); parcelHelpers.export(exports, "geoHufnagel", ()=>(0, _hufnagelJsDefault.default)); parcelHelpers.export(exports, "geoHufnagelRaw", ()=>(0, _hufnagelJs.hufnagelRaw)); -parcelHelpers.export(exports, "geoHyperelliptical", ()=>(0, _hyperellipticalDefault.default)); -parcelHelpers.export(exports, "geoHyperellipticalRaw", ()=>(0, _hyperelliptical.hyperellipticalRaw)); -parcelHelpers.export(exports, "geoInterrupt", ()=>(0, _indexDefault.default)); -parcelHelpers.export(exports, "geoInterruptedBoggs", ()=>(0, _boggsDefault1.default)); -parcelHelpers.export(exports, "geoInterruptedHomolosine", ()=>(0, _homolosineDefault.default)); -parcelHelpers.export(exports, "geoInterruptedMollweide", ()=>(0, _mollweideDefault.default)); -parcelHelpers.export(exports, "geoInterruptedMollweideHemispheres", ()=>(0, _mollweideHemispheresDefault.default)); -parcelHelpers.export(exports, "geoInterruptedSinuMollweide", ()=>(0, _sinuMollweideDefault.default)); -parcelHelpers.export(exports, "geoInterruptedSinusoidal", ()=>(0, _sinusoidalDefault.default)); +parcelHelpers.export(exports, "geoHyperelliptical", ()=>(0, _hyperellipticalJsDefault.default)); +parcelHelpers.export(exports, "geoHyperellipticalRaw", ()=>(0, _hyperellipticalJs.hyperellipticalRaw)); +parcelHelpers.export(exports, "geoInterrupt", ()=>(0, _indexJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedBoggs", ()=>(0, _boggsJsDefault1.default)); +parcelHelpers.export(exports, "geoInterruptedHomolosine", ()=>(0, _homolosineJsDefault1.default)); +parcelHelpers.export(exports, "geoInterruptedMollweide", ()=>(0, _mollweideJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedMollweideHemispheres", ()=>(0, _mollweideHemispheresJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedSinuMollweide", ()=>(0, _sinuMollweideJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedSinusoidal", ()=>(0, _sinusoidalJsDefault.default)); parcelHelpers.export(exports, "geoKavrayskiy7", ()=>(0, _kavrayskiy7JsDefault.default)); parcelHelpers.export(exports, "geoKavrayskiy7Raw", ()=>(0, _kavrayskiy7Js.kavrayskiy7Raw)); parcelHelpers.export(exports, "geoLagrange", ()=>(0, _lagrangeJsDefault.default)); parcelHelpers.export(exports, "geoLagrangeRaw", ()=>(0, _lagrangeJs.lagrangeRaw)); -parcelHelpers.export(exports, "geoLarrivee", ()=>(0, _larriveeDefault.default)); -parcelHelpers.export(exports, "geoLarriveeRaw", ()=>(0, _larrivee.larriveeRaw)); -parcelHelpers.export(exports, "geoLaskowski", ()=>(0, _laskowskiDefault.default)); -parcelHelpers.export(exports, "geoLaskowskiRaw", ()=>(0, _laskowski.laskowskiRaw)); +parcelHelpers.export(exports, "geoLarrivee", ()=>(0, _larriveeJsDefault.default)); +parcelHelpers.export(exports, "geoLarriveeRaw", ()=>(0, _larriveeJs.larriveeRaw)); +parcelHelpers.export(exports, "geoLaskowski", ()=>(0, _laskowskiJsDefault.default)); +parcelHelpers.export(exports, "geoLaskowskiRaw", ()=>(0, _laskowskiJs.laskowskiRaw)); parcelHelpers.export(exports, "geoLittrow", ()=>(0, _littrowJsDefault.default)); parcelHelpers.export(exports, "geoLittrowRaw", ()=>(0, _littrowJs.littrowRaw)); parcelHelpers.export(exports, "geoLoximuthal", ()=>(0, _loximuthalJsDefault.default)); parcelHelpers.export(exports, "geoLoximuthalRaw", ()=>(0, _loximuthalJs.loximuthalRaw)); -parcelHelpers.export(exports, "geoMiller", ()=>(0, _millerDefault.default)); -parcelHelpers.export(exports, "geoMillerRaw", ()=>(0, _miller.millerRaw)); -parcelHelpers.export(exports, "geoModifiedStereographic", ()=>(0, _modifiedStereographicDefault.default)); -parcelHelpers.export(exports, "geoModifiedStereographicRaw", ()=>(0, _modifiedStereographic.modifiedStereographicRaw)); -parcelHelpers.export(exports, "geoModifiedStereographicAlaska", ()=>(0, _modifiedStereographic.modifiedStereographicAlaska)); -parcelHelpers.export(exports, "geoModifiedStereographicGs48", ()=>(0, _modifiedStereographic.modifiedStereographicGs48)); -parcelHelpers.export(exports, "geoModifiedStereographicGs50", ()=>(0, _modifiedStereographic.modifiedStereographicGs50)); -parcelHelpers.export(exports, "geoModifiedStereographicMiller", ()=>(0, _modifiedStereographic.modifiedStereographicMiller)); -parcelHelpers.export(exports, "geoModifiedStereographicLee", ()=>(0, _modifiedStereographic.modifiedStereographicLee)); -parcelHelpers.export(exports, "geoMollweide", ()=>(0, _mollweideDefault1.default)); -parcelHelpers.export(exports, "geoMollweideRaw", ()=>(0, _mollweide1.mollweideRaw)); -parcelHelpers.export(exports, "geoMtFlatPolarParabolic", ()=>(0, _mtFlatPolarParabolicDefault.default)); -parcelHelpers.export(exports, "geoMtFlatPolarParabolicRaw", ()=>(0, _mtFlatPolarParabolic.mtFlatPolarParabolicRaw)); -parcelHelpers.export(exports, "geoMtFlatPolarQuartic", ()=>(0, _mtFlatPolarQuarticDefault.default)); -parcelHelpers.export(exports, "geoMtFlatPolarQuarticRaw", ()=>(0, _mtFlatPolarQuartic.mtFlatPolarQuarticRaw)); -parcelHelpers.export(exports, "geoMtFlatPolarSinusoidal", ()=>(0, _mtFlatPolarSinusoidalDefault.default)); -parcelHelpers.export(exports, "geoMtFlatPolarSinusoidalRaw", ()=>(0, _mtFlatPolarSinusoidal.mtFlatPolarSinusoidalRaw)); -parcelHelpers.export(exports, "geoNaturalEarth2", ()=>(0, _naturalEarth2Default.default)); -parcelHelpers.export(exports, "geoNaturalEarth2Raw", ()=>(0, _naturalEarth2.naturalEarth2Raw)); -parcelHelpers.export(exports, "geoNellHammer", ()=>(0, _nellHammerDefault.default)); -parcelHelpers.export(exports, "geoNellHammerRaw", ()=>(0, _nellHammer.nellHammerRaw)); -parcelHelpers.export(exports, "geoInterruptedQuarticAuthalic", ()=>(0, _quarticAuthalicDefault.default)); -parcelHelpers.export(exports, "geoNicolosi", ()=>(0, _nicolosiDefault.default)); -parcelHelpers.export(exports, "geoNicolosiRaw", ()=>(0, _nicolosi.nicolosiRaw)); -parcelHelpers.export(exports, "geoPatterson", ()=>(0, _pattersonDefault.default)); -parcelHelpers.export(exports, "geoPattersonRaw", ()=>(0, _patterson.pattersonRaw)); -parcelHelpers.export(exports, "geoPolyconic", ()=>(0, _polyconicDefault.default)); -parcelHelpers.export(exports, "geoPolyconicRaw", ()=>(0, _polyconic.polyconicRaw)); -parcelHelpers.export(exports, "geoPolyhedral", ()=>(0, _indexJsDefault.default)); +parcelHelpers.export(exports, "geoMiller", ()=>(0, _millerJsDefault.default)); +parcelHelpers.export(exports, "geoMillerRaw", ()=>(0, _millerJs.millerRaw)); +parcelHelpers.export(exports, "geoModifiedStereographic", ()=>(0, _modifiedStereographicJsDefault.default)); +parcelHelpers.export(exports, "geoModifiedStereographicRaw", ()=>(0, _modifiedStereographicJs.modifiedStereographicRaw)); +parcelHelpers.export(exports, "geoModifiedStereographicAlaska", ()=>(0, _modifiedStereographicJs.modifiedStereographicAlaska)); +parcelHelpers.export(exports, "geoModifiedStereographicGs48", ()=>(0, _modifiedStereographicJs.modifiedStereographicGs48)); +parcelHelpers.export(exports, "geoModifiedStereographicGs50", ()=>(0, _modifiedStereographicJs.modifiedStereographicGs50)); +parcelHelpers.export(exports, "geoModifiedStereographicMiller", ()=>(0, _modifiedStereographicJs.modifiedStereographicMiller)); +parcelHelpers.export(exports, "geoModifiedStereographicLee", ()=>(0, _modifiedStereographicJs.modifiedStereographicLee)); +parcelHelpers.export(exports, "geoMollweide", ()=>(0, _mollweideJsDefault1.default)); +parcelHelpers.export(exports, "geoMollweideRaw", ()=>(0, _mollweideJs1.mollweideRaw)); +parcelHelpers.export(exports, "geoMtFlatPolarParabolic", ()=>(0, _mtFlatPolarParabolicJsDefault.default)); +parcelHelpers.export(exports, "geoMtFlatPolarParabolicRaw", ()=>(0, _mtFlatPolarParabolicJs.mtFlatPolarParabolicRaw)); +parcelHelpers.export(exports, "geoMtFlatPolarQuartic", ()=>(0, _mtFlatPolarQuarticJsDefault.default)); +parcelHelpers.export(exports, "geoMtFlatPolarQuarticRaw", ()=>(0, _mtFlatPolarQuarticJs.mtFlatPolarQuarticRaw)); +parcelHelpers.export(exports, "geoMtFlatPolarSinusoidal", ()=>(0, _mtFlatPolarSinusoidalJsDefault.default)); +parcelHelpers.export(exports, "geoMtFlatPolarSinusoidalRaw", ()=>(0, _mtFlatPolarSinusoidalJs.mtFlatPolarSinusoidalRaw)); +parcelHelpers.export(exports, "geoNaturalEarth2", ()=>(0, _naturalEarth2JsDefault.default)); +parcelHelpers.export(exports, "geoNaturalEarth2Raw", ()=>(0, _naturalEarth2Js.naturalEarth2Raw)); +parcelHelpers.export(exports, "geoNellHammer", ()=>(0, _nellHammerJsDefault.default)); +parcelHelpers.export(exports, "geoNellHammerRaw", ()=>(0, _nellHammerJs.nellHammerRaw)); +parcelHelpers.export(exports, "geoInterruptedQuarticAuthalic", ()=>(0, _quarticAuthalicJsDefault.default)); +parcelHelpers.export(exports, "geoNicolosi", ()=>(0, _nicolosiJsDefault.default)); +parcelHelpers.export(exports, "geoNicolosiRaw", ()=>(0, _nicolosiJs.nicolosiRaw)); +parcelHelpers.export(exports, "geoPatterson", ()=>(0, _pattersonJsDefault.default)); +parcelHelpers.export(exports, "geoPattersonRaw", ()=>(0, _pattersonJs.pattersonRaw)); +parcelHelpers.export(exports, "geoPolyconic", ()=>(0, _polyconicJsDefault.default)); +parcelHelpers.export(exports, "geoPolyconicRaw", ()=>(0, _polyconicJs.polyconicRaw)); +parcelHelpers.export(exports, "geoPolyhedral", ()=>(0, _indexJsDefault1.default)); parcelHelpers.export(exports, "geoPolyhedralButterfly", ()=>(0, _butterflyJsDefault.default)); -parcelHelpers.export(exports, "geoPolyhedralCollignon", ()=>(0, _collignonJsDefault.default)); +parcelHelpers.export(exports, "geoPolyhedralCollignon", ()=>(0, _collignonJsDefault1.default)); parcelHelpers.export(exports, "geoPolyhedralWaterman", ()=>(0, _watermanJsDefault.default)); -parcelHelpers.export(exports, "geoProject", ()=>(0, _indexDefault1.default)); +parcelHelpers.export(exports, "geoProject", ()=>(0, _indexJsDefault2.default)); parcelHelpers.export(exports, "geoGringortenQuincuncial", ()=>(0, _gringortenJsDefault1.default)); parcelHelpers.export(exports, "geoPeirceQuincuncial", ()=>(0, _peirceJsDefault.default)); -parcelHelpers.export(exports, "geoQuantize", ()=>(0, _quantizeDefault.default)); -parcelHelpers.export(exports, "geoQuincuncial", ()=>(0, _indexJsDefault1.default)); -parcelHelpers.export(exports, "geoRectangularPolyconic", ()=>(0, _rectangularPolyconicDefault.default)); -parcelHelpers.export(exports, "geoRectangularPolyconicRaw", ()=>(0, _rectangularPolyconic.rectangularPolyconicRaw)); -parcelHelpers.export(exports, "geoRobinson", ()=>(0, _robinsonDefault.default)); -parcelHelpers.export(exports, "geoRobinsonRaw", ()=>(0, _robinson.robinsonRaw)); -parcelHelpers.export(exports, "geoSatellite", ()=>(0, _satelliteDefault.default)); -parcelHelpers.export(exports, "geoSatelliteRaw", ()=>(0, _satellite.satelliteRaw)); -parcelHelpers.export(exports, "geoSinuMollweide", ()=>(0, _sinuMollweideDefault1.default)); -parcelHelpers.export(exports, "geoSinuMollweideRaw", ()=>(0, _sinuMollweide1.sinuMollweideRaw)); -parcelHelpers.export(exports, "geoSinusoidal", ()=>(0, _sinusoidalDefault1.default)); -parcelHelpers.export(exports, "geoSinusoidalRaw", ()=>(0, _sinusoidal1.sinusoidalRaw)); -parcelHelpers.export(exports, "geoStitch", ()=>(0, _stitchDefault.default)); -parcelHelpers.export(exports, "geoTimes", ()=>(0, _timesDefault.default)); -parcelHelpers.export(exports, "geoTimesRaw", ()=>(0, _times.timesRaw)); -parcelHelpers.export(exports, "geoTwoPointAzimuthal", ()=>(0, _twoPointAzimuthalDefault.default)); -parcelHelpers.export(exports, "geoTwoPointAzimuthalRaw", ()=>(0, _twoPointAzimuthal.twoPointAzimuthalRaw)); -parcelHelpers.export(exports, "geoTwoPointAzimuthalUsa", ()=>(0, _twoPointAzimuthal.twoPointAzimuthalUsa)); -parcelHelpers.export(exports, "geoTwoPointEquidistant", ()=>(0, _twoPointEquidistantDefault.default)); -parcelHelpers.export(exports, "geoTwoPointEquidistantRaw", ()=>(0, _twoPointEquidistant.twoPointEquidistantRaw)); -parcelHelpers.export(exports, "geoTwoPointEquidistantUsa", ()=>(0, _twoPointEquidistant.twoPointEquidistantUsa)); -parcelHelpers.export(exports, "geoVanDerGrinten", ()=>(0, _vanDerGrintenDefault.default)); -parcelHelpers.export(exports, "geoVanDerGrintenRaw", ()=>(0, _vanDerGrinten.vanDerGrintenRaw)); -parcelHelpers.export(exports, "geoVanDerGrinten2", ()=>(0, _vanDerGrinten2Default.default)); -parcelHelpers.export(exports, "geoVanDerGrinten2Raw", ()=>(0, _vanDerGrinten2.vanDerGrinten2Raw)); -parcelHelpers.export(exports, "geoVanDerGrinten3", ()=>(0, _vanDerGrinten3Default.default)); -parcelHelpers.export(exports, "geoVanDerGrinten3Raw", ()=>(0, _vanDerGrinten3.vanDerGrinten3Raw)); -parcelHelpers.export(exports, "geoVanDerGrinten4", ()=>(0, _vanDerGrinten4Default.default)); -parcelHelpers.export(exports, "geoVanDerGrinten4Raw", ()=>(0, _vanDerGrinten4.vanDerGrinten4Raw)); +parcelHelpers.export(exports, "geoQuantize", ()=>(0, _quantizeJsDefault.default)); +parcelHelpers.export(exports, "geoQuincuncial", ()=>(0, _indexJsDefault3.default)); +parcelHelpers.export(exports, "geoRectangularPolyconic", ()=>(0, _rectangularPolyconicJsDefault.default)); +parcelHelpers.export(exports, "geoRectangularPolyconicRaw", ()=>(0, _rectangularPolyconicJs.rectangularPolyconicRaw)); +parcelHelpers.export(exports, "geoRobinson", ()=>(0, _robinsonJsDefault.default)); +parcelHelpers.export(exports, "geoRobinsonRaw", ()=>(0, _robinsonJs.robinsonRaw)); +parcelHelpers.export(exports, "geoSatellite", ()=>(0, _satelliteJsDefault.default)); +parcelHelpers.export(exports, "geoSatelliteRaw", ()=>(0, _satelliteJs.satelliteRaw)); +parcelHelpers.export(exports, "geoSinuMollweide", ()=>(0, _sinuMollweideJsDefault1.default)); +parcelHelpers.export(exports, "geoSinuMollweideRaw", ()=>(0, _sinuMollweideJs1.sinuMollweideRaw)); +parcelHelpers.export(exports, "geoSinusoidal", ()=>(0, _sinusoidalJsDefault1.default)); +parcelHelpers.export(exports, "geoSinusoidalRaw", ()=>(0, _sinusoidalJs1.sinusoidalRaw)); +parcelHelpers.export(exports, "geoStitch", ()=>(0, _stitchJsDefault.default)); +parcelHelpers.export(exports, "geoTimes", ()=>(0, _timesJsDefault.default)); +parcelHelpers.export(exports, "geoTimesRaw", ()=>(0, _timesJs.timesRaw)); +parcelHelpers.export(exports, "geoTwoPointAzimuthal", ()=>(0, _twoPointAzimuthalJsDefault.default)); +parcelHelpers.export(exports, "geoTwoPointAzimuthalRaw", ()=>(0, _twoPointAzimuthalJs.twoPointAzimuthalRaw)); +parcelHelpers.export(exports, "geoTwoPointAzimuthalUsa", ()=>(0, _twoPointAzimuthalJs.twoPointAzimuthalUsa)); +parcelHelpers.export(exports, "geoTwoPointEquidistant", ()=>(0, _twoPointEquidistantJsDefault.default)); +parcelHelpers.export(exports, "geoTwoPointEquidistantRaw", ()=>(0, _twoPointEquidistantJs.twoPointEquidistantRaw)); +parcelHelpers.export(exports, "geoTwoPointEquidistantUsa", ()=>(0, _twoPointEquidistantJs.twoPointEquidistantUsa)); +parcelHelpers.export(exports, "geoVanDerGrinten", ()=>(0, _vanDerGrintenJsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrintenRaw", ()=>(0, _vanDerGrintenJs.vanDerGrintenRaw)); +parcelHelpers.export(exports, "geoVanDerGrinten2", ()=>(0, _vanDerGrinten2JsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrinten2Raw", ()=>(0, _vanDerGrinten2Js.vanDerGrinten2Raw)); +parcelHelpers.export(exports, "geoVanDerGrinten3", ()=>(0, _vanDerGrinten3JsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrinten3Raw", ()=>(0, _vanDerGrinten3Js.vanDerGrinten3Raw)); +parcelHelpers.export(exports, "geoVanDerGrinten4", ()=>(0, _vanDerGrinten4JsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrinten4Raw", ()=>(0, _vanDerGrinten4Js.vanDerGrinten4Raw)); parcelHelpers.export(exports, "geoWagner", ()=>(0, _wagnerJsDefault.default)); parcelHelpers.export(exports, "geoWagner7", ()=>(0, _wagnerJs.wagner7)); parcelHelpers.export(exports, "geoWagnerRaw", ()=>(0, _wagnerJs.wagnerRaw)); @@ -116489,42 +117148,42 @@ parcelHelpers.export(exports, "geoWagner6", ()=>(0, _wagner6JsDefault.default)); parcelHelpers.export(exports, "geoWagner6Raw", ()=>(0, _wagner6Js.wagner6Raw)); parcelHelpers.export(exports, "geoWiechel", ()=>(0, _wiechelJsDefault.default)); parcelHelpers.export(exports, "geoWiechelRaw", ()=>(0, _wiechelJs.wiechelRaw)); -parcelHelpers.export(exports, "geoWinkel3", ()=>(0, _winkel3Default.default)); -parcelHelpers.export(exports, "geoWinkel3Raw", ()=>(0, _winkel3.winkel3Raw)); -var _airy = require("./airy"); -var _airyDefault = parcelHelpers.interopDefault(_airy); -var _aitoff = require("./aitoff"); -var _aitoffDefault = parcelHelpers.interopDefault(_aitoff); -var _armadillo = require("./armadillo"); -var _armadilloDefault = parcelHelpers.interopDefault(_armadillo); -var _august = require("./august"); -var _augustDefault = parcelHelpers.interopDefault(_august); -var _baker = require("./baker"); -var _bakerDefault = parcelHelpers.interopDefault(_baker); -var _berghaus = require("./berghaus"); -var _berghausDefault = parcelHelpers.interopDefault(_berghaus); -var _bertin = require("./bertin"); -var _bertinDefault = parcelHelpers.interopDefault(_bertin); -var _boggs = require("./boggs"); -var _boggsDefault = parcelHelpers.interopDefault(_boggs); -var _bonne = require("./bonne"); -var _bonneDefault = parcelHelpers.interopDefault(_bonne); -var _bottomley = require("./bottomley"); -var _bottomleyDefault = parcelHelpers.interopDefault(_bottomley); -var _bromley = require("./bromley"); -var _bromleyDefault = parcelHelpers.interopDefault(_bromley); -var _chamberlin = require("./chamberlin"); -var _chamberlinDefault = parcelHelpers.interopDefault(_chamberlin); -var _collignon = require("./collignon"); -var _collignonDefault = parcelHelpers.interopDefault(_collignon); -var _craig = require("./craig"); -var _craigDefault = parcelHelpers.interopDefault(_craig); -var _craster = require("./craster"); -var _crasterDefault = parcelHelpers.interopDefault(_craster); -var _cylindricalEqualArea = require("./cylindricalEqualArea"); -var _cylindricalEqualAreaDefault = parcelHelpers.interopDefault(_cylindricalEqualArea); -var _cylindricalStereographic = require("./cylindricalStereographic"); -var _cylindricalStereographicDefault = parcelHelpers.interopDefault(_cylindricalStereographic); +parcelHelpers.export(exports, "geoWinkel3", ()=>(0, _winkel3JsDefault.default)); +parcelHelpers.export(exports, "geoWinkel3Raw", ()=>(0, _winkel3Js.winkel3Raw)); +var _airyJs = require("./airy.js"); +var _airyJsDefault = parcelHelpers.interopDefault(_airyJs); +var _aitoffJs = require("./aitoff.js"); +var _aitoffJsDefault = parcelHelpers.interopDefault(_aitoffJs); +var _armadilloJs = require("./armadillo.js"); +var _armadilloJsDefault = parcelHelpers.interopDefault(_armadilloJs); +var _augustJs = require("./august.js"); +var _augustJsDefault = parcelHelpers.interopDefault(_augustJs); +var _bakerJs = require("./baker.js"); +var _bakerJsDefault = parcelHelpers.interopDefault(_bakerJs); +var _berghausJs = require("./berghaus.js"); +var _berghausJsDefault = parcelHelpers.interopDefault(_berghausJs); +var _bertinJs = require("./bertin.js"); +var _bertinJsDefault = parcelHelpers.interopDefault(_bertinJs); +var _boggsJs = require("./boggs.js"); +var _boggsJsDefault = parcelHelpers.interopDefault(_boggsJs); +var _bonneJs = require("./bonne.js"); +var _bonneJsDefault = parcelHelpers.interopDefault(_bonneJs); +var _bottomleyJs = require("./bottomley.js"); +var _bottomleyJsDefault = parcelHelpers.interopDefault(_bottomleyJs); +var _bromleyJs = require("./bromley.js"); +var _bromleyJsDefault = parcelHelpers.interopDefault(_bromleyJs); +var _chamberlinJs = require("./chamberlin.js"); +var _chamberlinJsDefault = parcelHelpers.interopDefault(_chamberlinJs); +var _collignonJs = require("./collignon.js"); +var _collignonJsDefault = parcelHelpers.interopDefault(_collignonJs); +var _craigJs = require("./craig.js"); +var _craigJsDefault = parcelHelpers.interopDefault(_craigJs); +var _crasterJs = require("./craster.js"); +var _crasterJsDefault = parcelHelpers.interopDefault(_crasterJs); +var _cylindricalEqualAreaJs = require("./cylindricalEqualArea.js"); +var _cylindricalEqualAreaJsDefault = parcelHelpers.interopDefault(_cylindricalEqualAreaJs); +var _cylindricalStereographicJs = require("./cylindricalStereographic.js"); +var _cylindricalStereographicJsDefault = parcelHelpers.interopDefault(_cylindricalStereographicJs); var _eckert1Js = require("./eckert1.js"); var _eckert1JsDefault = parcelHelpers.interopDefault(_eckert1Js); var _eckert2Js = require("./eckert2.js"); @@ -116575,102 +117234,102 @@ var _homolosineJs = require("./homolosine.js"); var _homolosineJsDefault = parcelHelpers.interopDefault(_homolosineJs); var _hufnagelJs = require("./hufnagel.js"); var _hufnagelJsDefault = parcelHelpers.interopDefault(_hufnagelJs); -var _hyperelliptical = require("./hyperelliptical"); -var _hyperellipticalDefault = parcelHelpers.interopDefault(_hyperelliptical); -var _index = require("./interrupted/index"); -var _indexDefault = parcelHelpers.interopDefault(_index); -var _boggs1 = require("./interrupted/boggs"); -var _boggsDefault1 = parcelHelpers.interopDefault(_boggs1); -var _homolosine = require("./interrupted/homolosine"); -var _homolosineDefault = parcelHelpers.interopDefault(_homolosine); -var _mollweide = require("./interrupted/mollweide"); -var _mollweideDefault = parcelHelpers.interopDefault(_mollweide); -var _mollweideHemispheres = require("./interrupted/mollweideHemispheres"); -var _mollweideHemispheresDefault = parcelHelpers.interopDefault(_mollweideHemispheres); -var _sinuMollweide = require("./interrupted/sinuMollweide"); -var _sinuMollweideDefault = parcelHelpers.interopDefault(_sinuMollweide); -var _sinusoidal = require("./interrupted/sinusoidal"); -var _sinusoidalDefault = parcelHelpers.interopDefault(_sinusoidal); +var _hyperellipticalJs = require("./hyperelliptical.js"); +var _hyperellipticalJsDefault = parcelHelpers.interopDefault(_hyperellipticalJs); +var _indexJs = require("./interrupted/index.js"); +var _indexJsDefault = parcelHelpers.interopDefault(_indexJs); +var _boggsJs1 = require("./interrupted/boggs.js"); +var _boggsJsDefault1 = parcelHelpers.interopDefault(_boggsJs1); +var _homolosineJs1 = require("./interrupted/homolosine.js"); +var _homolosineJsDefault1 = parcelHelpers.interopDefault(_homolosineJs1); +var _mollweideJs = require("./interrupted/mollweide.js"); +var _mollweideJsDefault = parcelHelpers.interopDefault(_mollweideJs); +var _mollweideHemispheresJs = require("./interrupted/mollweideHemispheres.js"); +var _mollweideHemispheresJsDefault = parcelHelpers.interopDefault(_mollweideHemispheresJs); +var _sinuMollweideJs = require("./interrupted/sinuMollweide.js"); +var _sinuMollweideJsDefault = parcelHelpers.interopDefault(_sinuMollweideJs); +var _sinusoidalJs = require("./interrupted/sinusoidal.js"); +var _sinusoidalJsDefault = parcelHelpers.interopDefault(_sinusoidalJs); var _kavrayskiy7Js = require("./kavrayskiy7.js"); var _kavrayskiy7JsDefault = parcelHelpers.interopDefault(_kavrayskiy7Js); var _lagrangeJs = require("./lagrange.js"); var _lagrangeJsDefault = parcelHelpers.interopDefault(_lagrangeJs); -var _larrivee = require("./larrivee"); -var _larriveeDefault = parcelHelpers.interopDefault(_larrivee); -var _laskowski = require("./laskowski"); -var _laskowskiDefault = parcelHelpers.interopDefault(_laskowski); +var _larriveeJs = require("./larrivee.js"); +var _larriveeJsDefault = parcelHelpers.interopDefault(_larriveeJs); +var _laskowskiJs = require("./laskowski.js"); +var _laskowskiJsDefault = parcelHelpers.interopDefault(_laskowskiJs); var _littrowJs = require("./littrow.js"); var _littrowJsDefault = parcelHelpers.interopDefault(_littrowJs); var _loximuthalJs = require("./loximuthal.js"); var _loximuthalJsDefault = parcelHelpers.interopDefault(_loximuthalJs); -var _miller = require("./miller"); -var _millerDefault = parcelHelpers.interopDefault(_miller); -var _modifiedStereographic = require("./modifiedStereographic"); -var _modifiedStereographicDefault = parcelHelpers.interopDefault(_modifiedStereographic); -var _mollweide1 = require("./mollweide"); -var _mollweideDefault1 = parcelHelpers.interopDefault(_mollweide1); -var _mtFlatPolarParabolic = require("./mtFlatPolarParabolic"); -var _mtFlatPolarParabolicDefault = parcelHelpers.interopDefault(_mtFlatPolarParabolic); -var _mtFlatPolarQuartic = require("./mtFlatPolarQuartic"); -var _mtFlatPolarQuarticDefault = parcelHelpers.interopDefault(_mtFlatPolarQuartic); -var _mtFlatPolarSinusoidal = require("./mtFlatPolarSinusoidal"); -var _mtFlatPolarSinusoidalDefault = parcelHelpers.interopDefault(_mtFlatPolarSinusoidal); -var _naturalEarth2 = require("./naturalEarth2"); -var _naturalEarth2Default = parcelHelpers.interopDefault(_naturalEarth2); -var _nellHammer = require("./nellHammer"); -var _nellHammerDefault = parcelHelpers.interopDefault(_nellHammer); -var _quarticAuthalic = require("./interrupted/quarticAuthalic"); -var _quarticAuthalicDefault = parcelHelpers.interopDefault(_quarticAuthalic); -var _nicolosi = require("./nicolosi"); -var _nicolosiDefault = parcelHelpers.interopDefault(_nicolosi); -var _patterson = require("./patterson"); -var _pattersonDefault = parcelHelpers.interopDefault(_patterson); -var _polyconic = require("./polyconic"); -var _polyconicDefault = parcelHelpers.interopDefault(_polyconic); -var _indexJs = require("./polyhedral/index.js"); -var _indexJsDefault = parcelHelpers.interopDefault(_indexJs); +var _millerJs = require("./miller.js"); +var _millerJsDefault = parcelHelpers.interopDefault(_millerJs); +var _modifiedStereographicJs = require("./modifiedStereographic.js"); +var _modifiedStereographicJsDefault = parcelHelpers.interopDefault(_modifiedStereographicJs); +var _mollweideJs1 = require("./mollweide.js"); +var _mollweideJsDefault1 = parcelHelpers.interopDefault(_mollweideJs1); +var _mtFlatPolarParabolicJs = require("./mtFlatPolarParabolic.js"); +var _mtFlatPolarParabolicJsDefault = parcelHelpers.interopDefault(_mtFlatPolarParabolicJs); +var _mtFlatPolarQuarticJs = require("./mtFlatPolarQuartic.js"); +var _mtFlatPolarQuarticJsDefault = parcelHelpers.interopDefault(_mtFlatPolarQuarticJs); +var _mtFlatPolarSinusoidalJs = require("./mtFlatPolarSinusoidal.js"); +var _mtFlatPolarSinusoidalJsDefault = parcelHelpers.interopDefault(_mtFlatPolarSinusoidalJs); +var _naturalEarth2Js = require("./naturalEarth2.js"); +var _naturalEarth2JsDefault = parcelHelpers.interopDefault(_naturalEarth2Js); +var _nellHammerJs = require("./nellHammer.js"); +var _nellHammerJsDefault = parcelHelpers.interopDefault(_nellHammerJs); +var _quarticAuthalicJs = require("./interrupted/quarticAuthalic.js"); +var _quarticAuthalicJsDefault = parcelHelpers.interopDefault(_quarticAuthalicJs); +var _nicolosiJs = require("./nicolosi.js"); +var _nicolosiJsDefault = parcelHelpers.interopDefault(_nicolosiJs); +var _pattersonJs = require("./patterson.js"); +var _pattersonJsDefault = parcelHelpers.interopDefault(_pattersonJs); +var _polyconicJs = require("./polyconic.js"); +var _polyconicJsDefault = parcelHelpers.interopDefault(_polyconicJs); +var _indexJs1 = require("./polyhedral/index.js"); +var _indexJsDefault1 = parcelHelpers.interopDefault(_indexJs1); var _butterflyJs = require("./polyhedral/butterfly.js"); var _butterflyJsDefault = parcelHelpers.interopDefault(_butterflyJs); -var _collignonJs = require("./polyhedral/collignon.js"); -var _collignonJsDefault = parcelHelpers.interopDefault(_collignonJs); +var _collignonJs1 = require("./polyhedral/collignon.js"); +var _collignonJsDefault1 = parcelHelpers.interopDefault(_collignonJs1); var _watermanJs = require("./polyhedral/waterman.js"); var _watermanJsDefault = parcelHelpers.interopDefault(_watermanJs); -var _index1 = require("./project/index"); -var _indexDefault1 = parcelHelpers.interopDefault(_index1); +var _indexJs2 = require("./project/index.js"); +var _indexJsDefault2 = parcelHelpers.interopDefault(_indexJs2); var _gringortenJs1 = require("./quincuncial/gringorten.js"); var _gringortenJsDefault1 = parcelHelpers.interopDefault(_gringortenJs1); var _peirceJs = require("./quincuncial/peirce.js"); var _peirceJsDefault = parcelHelpers.interopDefault(_peirceJs); -var _quantize = require("./quantize"); -var _quantizeDefault = parcelHelpers.interopDefault(_quantize); -var _indexJs1 = require("./quincuncial/index.js"); -var _indexJsDefault1 = parcelHelpers.interopDefault(_indexJs1); -var _rectangularPolyconic = require("./rectangularPolyconic"); -var _rectangularPolyconicDefault = parcelHelpers.interopDefault(_rectangularPolyconic); -var _robinson = require("./robinson"); -var _robinsonDefault = parcelHelpers.interopDefault(_robinson); -var _satellite = require("./satellite"); -var _satelliteDefault = parcelHelpers.interopDefault(_satellite); -var _sinuMollweide1 = require("./sinuMollweide"); -var _sinuMollweideDefault1 = parcelHelpers.interopDefault(_sinuMollweide1); -var _sinusoidal1 = require("./sinusoidal"); -var _sinusoidalDefault1 = parcelHelpers.interopDefault(_sinusoidal1); -var _stitch = require("./stitch"); -var _stitchDefault = parcelHelpers.interopDefault(_stitch); -var _times = require("./times"); -var _timesDefault = parcelHelpers.interopDefault(_times); -var _twoPointAzimuthal = require("./twoPointAzimuthal"); -var _twoPointAzimuthalDefault = parcelHelpers.interopDefault(_twoPointAzimuthal); -var _twoPointEquidistant = require("./twoPointEquidistant"); -var _twoPointEquidistantDefault = parcelHelpers.interopDefault(_twoPointEquidistant); -var _vanDerGrinten = require("./vanDerGrinten"); -var _vanDerGrintenDefault = parcelHelpers.interopDefault(_vanDerGrinten); -var _vanDerGrinten2 = require("./vanDerGrinten2"); -var _vanDerGrinten2Default = parcelHelpers.interopDefault(_vanDerGrinten2); -var _vanDerGrinten3 = require("./vanDerGrinten3"); -var _vanDerGrinten3Default = parcelHelpers.interopDefault(_vanDerGrinten3); -var _vanDerGrinten4 = require("./vanDerGrinten4"); -var _vanDerGrinten4Default = parcelHelpers.interopDefault(_vanDerGrinten4); +var _quantizeJs = require("./quantize.js"); +var _quantizeJsDefault = parcelHelpers.interopDefault(_quantizeJs); +var _indexJs3 = require("./quincuncial/index.js"); +var _indexJsDefault3 = parcelHelpers.interopDefault(_indexJs3); +var _rectangularPolyconicJs = require("./rectangularPolyconic.js"); +var _rectangularPolyconicJsDefault = parcelHelpers.interopDefault(_rectangularPolyconicJs); +var _robinsonJs = require("./robinson.js"); +var _robinsonJsDefault = parcelHelpers.interopDefault(_robinsonJs); +var _satelliteJs = require("./satellite.js"); +var _satelliteJsDefault = parcelHelpers.interopDefault(_satelliteJs); +var _sinuMollweideJs1 = require("./sinuMollweide.js"); +var _sinuMollweideJsDefault1 = parcelHelpers.interopDefault(_sinuMollweideJs1); +var _sinusoidalJs1 = require("./sinusoidal.js"); +var _sinusoidalJsDefault1 = parcelHelpers.interopDefault(_sinusoidalJs1); +var _stitchJs = require("./stitch.js"); +var _stitchJsDefault = parcelHelpers.interopDefault(_stitchJs); +var _timesJs = require("./times.js"); +var _timesJsDefault = parcelHelpers.interopDefault(_timesJs); +var _twoPointAzimuthalJs = require("./twoPointAzimuthal.js"); +var _twoPointAzimuthalJsDefault = parcelHelpers.interopDefault(_twoPointAzimuthalJs); +var _twoPointEquidistantJs = require("./twoPointEquidistant.js"); +var _twoPointEquidistantJsDefault = parcelHelpers.interopDefault(_twoPointEquidistantJs); +var _vanDerGrintenJs = require("./vanDerGrinten.js"); +var _vanDerGrintenJsDefault = parcelHelpers.interopDefault(_vanDerGrintenJs); +var _vanDerGrinten2Js = require("./vanDerGrinten2.js"); +var _vanDerGrinten2JsDefault = parcelHelpers.interopDefault(_vanDerGrinten2Js); +var _vanDerGrinten3Js = require("./vanDerGrinten3.js"); +var _vanDerGrinten3JsDefault = parcelHelpers.interopDefault(_vanDerGrinten3Js); +var _vanDerGrinten4Js = require("./vanDerGrinten4.js"); +var _vanDerGrinten4JsDefault = parcelHelpers.interopDefault(_vanDerGrinten4Js); var _wagnerJs = require("./wagner.js"); var _wagnerJsDefault = parcelHelpers.interopDefault(_wagnerJs); var _wagner4Js = require("./wagner4.js"); @@ -116679,10 +117338,10 @@ var _wagner6Js = require("./wagner6.js"); var _wagner6JsDefault = parcelHelpers.interopDefault(_wagner6Js); var _wiechelJs = require("./wiechel.js"); var _wiechelJsDefault = parcelHelpers.interopDefault(_wiechelJs); -var _winkel3 = require("./winkel3"); -var _winkel3Default = parcelHelpers.interopDefault(_winkel3); +var _winkel3Js = require("./winkel3.js"); +var _winkel3JsDefault = parcelHelpers.interopDefault(_winkel3Js); -},{"./airy":false,"./aitoff":false,"./armadillo":false,"./august":false,"./baker":false,"./berghaus":false,"./bertin":false,"./boggs":false,"./bonne":false,"./bottomley":false,"./bromley":false,"./chamberlin":false,"./collignon":false,"./craig":false,"./craster":false,"./cylindricalEqualArea":false,"./cylindricalStereographic":false,"./eckert1.js":false,"./eckert2.js":false,"./eckert3.js":false,"./eckert4.js":false,"./eckert5.js":false,"./eckert6.js":false,"./eisenlohr.js":false,"./fahey.js":false,"./foucaut.js":false,"./foucautSinusoidal.js":false,"./gilbert.js":false,"./gingery.js":false,"./ginzburg4.js":false,"./ginzburg5.js":false,"./ginzburg6.js":false,"./ginzburg8.js":false,"./ginzburg9.js":false,"./gringorten.js":false,"./guyou.js":false,"./hammer.js":false,"./hammerRetroazimuthal.js":false,"./healpix.js":false,"./hill.js":false,"./homolosine.js":false,"./hufnagel.js":false,"./hyperelliptical":false,"./interrupted/index":false,"./interrupted/boggs":false,"./interrupted/homolosine":false,"./interrupted/mollweide":false,"./interrupted/mollweideHemispheres":false,"./interrupted/sinuMollweide":false,"./interrupted/sinusoidal":false,"./kavrayskiy7.js":false,"./lagrange.js":false,"./larrivee":false,"./laskowski":false,"./littrow.js":false,"./loximuthal.js":false,"./miller":false,"./modifiedStereographic":false,"./mollweide":"IWcRL","./mtFlatPolarParabolic":false,"./mtFlatPolarQuartic":false,"./mtFlatPolarSinusoidal":false,"./naturalEarth2":false,"./nellHammer":false,"./interrupted/quarticAuthalic":false,"./nicolosi":false,"./patterson":false,"./polyconic":false,"./polyhedral/index.js":false,"./polyhedral/butterfly.js":false,"./polyhedral/collignon.js":false,"./polyhedral/waterman.js":false,"./project/index":false,"./quincuncial/gringorten.js":false,"./quincuncial/peirce.js":false,"./quantize":false,"./quincuncial/index.js":false,"./rectangularPolyconic":false,"./robinson":false,"./satellite":false,"./sinuMollweide":false,"./sinusoidal":false,"./stitch":false,"./times":false,"./twoPointAzimuthal":false,"./twoPointEquidistant":false,"./vanDerGrinten":false,"./vanDerGrinten2":false,"./vanDerGrinten3":false,"./vanDerGrinten4":false,"./wagner.js":false,"./wagner4.js":false,"./wagner6.js":false,"./wiechel.js":false,"./winkel3":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"IWcRL":[function(require,module,exports) { +},{"./airy.js":false,"./aitoff.js":false,"./armadillo.js":false,"./august.js":false,"./baker.js":false,"./berghaus.js":false,"./bertin.js":false,"./boggs.js":false,"./bonne.js":false,"./bottomley.js":false,"./bromley.js":false,"./chamberlin.js":false,"./collignon.js":false,"./craig.js":false,"./craster.js":false,"./cylindricalEqualArea.js":false,"./cylindricalStereographic.js":false,"./eckert1.js":false,"./eckert2.js":false,"./eckert3.js":false,"./eckert4.js":false,"./eckert5.js":false,"./eckert6.js":false,"./eisenlohr.js":false,"./fahey.js":false,"./foucaut.js":false,"./foucautSinusoidal.js":false,"./gilbert.js":false,"./gingery.js":false,"./ginzburg4.js":false,"./ginzburg5.js":false,"./ginzburg6.js":false,"./ginzburg8.js":false,"./ginzburg9.js":false,"./gringorten.js":false,"./guyou.js":false,"./hammer.js":false,"./hammerRetroazimuthal.js":false,"./healpix.js":false,"./hill.js":false,"./homolosine.js":false,"./hufnagel.js":false,"./hyperelliptical.js":false,"./interrupted/index.js":false,"./interrupted/boggs.js":false,"./interrupted/homolosine.js":false,"./interrupted/mollweide.js":false,"./interrupted/mollweideHemispheres.js":false,"./interrupted/sinuMollweide.js":false,"./interrupted/sinusoidal.js":false,"./kavrayskiy7.js":false,"./lagrange.js":false,"./larrivee.js":false,"./laskowski.js":false,"./littrow.js":false,"./loximuthal.js":false,"./miller.js":false,"./modifiedStereographic.js":false,"./mollweide.js":"IWcRL","./mtFlatPolarParabolic.js":false,"./mtFlatPolarQuartic.js":false,"./mtFlatPolarSinusoidal.js":false,"./naturalEarth2.js":false,"./nellHammer.js":false,"./interrupted/quarticAuthalic.js":false,"./nicolosi.js":false,"./patterson.js":false,"./polyconic.js":false,"./polyhedral/index.js":false,"./polyhedral/butterfly.js":false,"./polyhedral/collignon.js":false,"./polyhedral/waterman.js":false,"./project/index.js":false,"./quincuncial/gringorten.js":false,"./quincuncial/peirce.js":false,"./quantize.js":false,"./quincuncial/index.js":false,"./rectangularPolyconic.js":false,"./robinson.js":false,"./satellite.js":false,"./sinuMollweide.js":false,"./sinusoidal.js":false,"./stitch.js":false,"./times.js":false,"./twoPointAzimuthal.js":false,"./twoPointEquidistant.js":false,"./vanDerGrinten.js":false,"./vanDerGrinten2.js":false,"./vanDerGrinten3.js":false,"./vanDerGrinten4.js":false,"./wagner.js":false,"./wagner4.js":false,"./wagner6.js":false,"./wiechel.js":false,"./winkel3.js":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"IWcRL":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "mollweideBromleyTheta", ()=>mollweideBromleyTheta); @@ -118093,7 +118752,7 @@ function timerFlush() { ++frame; // Pretend we’ve set an alarm, if we haven’t already. var t = taskHead, e; while(t){ - if ((e = clockNow - t._time) >= 0) t._call.call(null, e); + if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e); t = t._next; } --frame; @@ -118383,7 +119042,7 @@ function setFields(node, fields, as) { for(let i = 0; i < n; ++i)t[as[i]] = node[fields[i]]; t[as[n]] = node.children ? node.children.length : 0; } -const Output = [ +const Output$3 = [ "x", "y", "r", @@ -118433,8 +119092,8 @@ Pack.Definition = { "name": "as", "type": "string", "array": true, - "length": Output.length, - "default": Output + "length": Output$3.length, + "default": Output$3 } ] }; @@ -118445,9 +119104,9 @@ Pack.Definition = { "size", "padding" ], - fields: Output + fields: Output$3 }); -const Output$1 = [ +const Output$2 = [ "x0", "y0", "x1", @@ -118498,8 +119157,8 @@ Partition.Definition = { "name": "as", "type": "string", "array": true, - "length": Output$1.length, - "default": Output$1 + "length": Output$2.length, + "default": Output$2 } ] }; @@ -118510,7 +119169,7 @@ Partition.Definition = { "round", "padding" ], - fields: Output$1 + fields: Output$2 }); /** * Stratify a collection of tuples into a tree structure based on @@ -118557,7 +119216,7 @@ const Layouts = { tidy: (0, _d3Hierarchy.tree), cluster: (0, _d3Hierarchy.cluster) }; -const Output$2 = [ +const Output$1 = [ "x", "y", "depth", @@ -118616,8 +119275,8 @@ Tree.Definition = { "name": "as", "type": "string", "array": true, - "length": Output$2.length, - "default": Output$2 + "length": Output$1.length, + "default": Output$1 } ] }; @@ -118633,7 +119292,7 @@ Tree.Definition = { "size", "nodeSize" ], - fields: Output$2 + fields: Output$1 }); /** * Generate tuples representing links between tree nodes. @@ -118687,7 +119346,7 @@ const Tiles = { squarify: (0, _d3Hierarchy.treemapSquarify), resquarify: (0, _d3Hierarchy.treemapResquarify) }; -const Output$3 = [ +const Output = [ "x0", "y0", "x1", @@ -118786,8 +119445,8 @@ Treemap.Definition = { "name": "as", "type": "string", "array": true, - "length": Output$3.length, - "default": Output$3 + "length": Output.length, + "default": Output } ] }; @@ -118820,7 +119479,7 @@ Treemap.Definition = { "paddingBottom", "paddingLeft" ], - fields: Output$3 + fields: Output }); },{"vega-dataflow":"4kvYg","vega-util":"dPFAY","d3-hierarchy":"bkLr4","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bkLr4":[function(require,module,exports) { @@ -118828,6 +119487,7 @@ var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "cluster", ()=>(0, _clusterJsDefault.default)); parcelHelpers.export(exports, "hierarchy", ()=>(0, _indexJsDefault.default)); +parcelHelpers.export(exports, "Node", ()=>(0, _indexJs.Node)); parcelHelpers.export(exports, "pack", ()=>(0, _indexJsDefault1.default)); parcelHelpers.export(exports, "packSiblings", ()=>(0, _siblingsJsDefault.default)); parcelHelpers.export(exports, "packEnclose", ()=>(0, _encloseJsDefault.default)); @@ -119212,19 +119872,22 @@ exports.default = function*() { },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"66RdA":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var _siblingsJs = require("./siblings.js"); var _accessorsJs = require("../accessors.js"); var _constantJs = require("../constant.js"); var _constantJsDefault = parcelHelpers.interopDefault(_constantJs); +var _lcgJs = require("../lcg.js"); +var _lcgJsDefault = parcelHelpers.interopDefault(_lcgJs); +var _siblingsJs = require("./siblings.js"); function defaultRadius(d) { return Math.sqrt(d.value); } exports.default = function() { var radius = null, dx = 1, dy = 1, padding = (0, _constantJs.constantZero); function pack(root) { + const random = (0, _lcgJsDefault.default)(); root.x = dx / 2, root.y = dy / 2; - if (radius) root.eachBefore(radiusLeaf(radius)).eachAfter(packChildren(padding, 0.5)).eachBefore(translateChild(1)); - else root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildren((0, _constantJs.constantZero), 1)).eachAfter(packChildren(padding, root.r / Math.min(dx, dy))).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); + if (radius) root.eachBefore(radiusLeaf(radius)).eachAfter(packChildrenRandom(padding, 0.5, random)).eachBefore(translateChild(1)); + else root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildrenRandom((0, _constantJs.constantZero), 1, random)).eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random)).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); return root; } pack.radius = function(x) { @@ -119246,12 +119909,12 @@ function radiusLeaf(radius) { if (!node.children) node.r = Math.max(0, +radius(node) || 0); }; } -function packChildren(padding, k) { +function packChildrenRandom(padding, k, random) { return function(node) { if (children = node.children) { var children, i, n = children.length, r = padding(node) * k || 0, e; if (r) for(i = 0; i < n; ++i)children[i].r += r; - e = (0, _siblingsJs.packEnclose)(children); + e = (0, _siblingsJs.packSiblingsRandom)(children, random); if (r) for(i = 0; i < n; ++i)children[i].r -= r; node.r = e + r; } @@ -119268,14 +119931,53 @@ function translateChild(k) { }; } -},{"./siblings.js":"46bgV","../accessors.js":"bsUy0","../constant.js":"e122v","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"46bgV":[function(require,module,exports) { +},{"../accessors.js":"bsUy0","../constant.js":"e122v","../lcg.js":"ioQI9","./siblings.js":"46bgV","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bsUy0":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "packEnclose", ()=>packEnclose); +parcelHelpers.export(exports, "optional", ()=>optional); +parcelHelpers.export(exports, "required", ()=>required); +function optional(f) { + return f == null ? null : required(f); +} +function required(f) { + if (typeof f !== "function") throw new Error; + return f; +} + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"e122v":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "constantZero", ()=>constantZero); +function constantZero() { + return 0; +} +exports.default = function(x) { + return function() { + return x; + }; +}; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ioQI9":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use +const a = 1664525; +const c = 1013904223; +const m = 4294967296; // 2^32 +exports.default = function() { + let s = 1; + return ()=>(s = (a * s + c) % m) / m; +}; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"46bgV":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "packSiblingsRandom", ()=>packSiblingsRandom); var _arrayJs = require("../array.js"); var _arrayJsDefault = parcelHelpers.interopDefault(_arrayJs); +var _lcgJs = require("../lcg.js"); +var _lcgJsDefault = parcelHelpers.interopDefault(_lcgJs); var _encloseJs = require("./enclose.js"); -var _encloseJsDefault = parcelHelpers.interopDefault(_encloseJs); function place(b, a, c) { var dx = b.x - a.x, x, a2, dy = b.y - a.y, y, b2, d2 = dx * dx + dy * dy; if (d2) { @@ -119310,7 +120012,7 @@ function Node(circle) { this.next = null; this.previous = null; } -function packEnclose(circles) { +function packSiblingsRandom(circles, random) { if (!(n = (circles = (0, _arrayJsDefault.default)(circles)).length)) return 0; var a, b, c, n, aa, ca, i, j, k, sj, sk; // Place the first circle. @@ -119359,17 +120061,17 @@ function packEnclose(circles) { b._ ], c = b; while((c = c.next) !== b)a.push(c._); - c = (0, _encloseJsDefault.default)(a); + c = (0, _encloseJs.packEncloseRandom)(a, random); // Translate the circles to put the enclosing circle around the origin. for(i = 0; i < n; ++i)a = circles[i], a.x -= c.x, a.y -= c.y; return c.r; } exports.default = function(circles) { - packEnclose(circles); + packSiblingsRandom(circles, (0, _lcgJsDefault.default)()); return circles; }; -},{"../array.js":"eKsOC","./enclose.js":"3Unie","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"eKsOC":[function(require,module,exports) { +},{"../array.js":"eKsOC","../lcg.js":"ioQI9","./enclose.js":"3Unie","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"eKsOC":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "shuffle", ()=>shuffle); @@ -119377,10 +120079,10 @@ exports.default = function(x) { return typeof x === "object" && "length" in x ? x // Array, TypedArray, NodeList, array-like : Array.from(x); // Map, Set, iterable, string, or anything else }; -function shuffle(array) { - var m = array.length, t, i; +function shuffle(array, random) { + let m = array.length, t, i; while(m){ - i = Math.random() * m-- | 0; + i = random() * m-- | 0; t = array[m]; array[m] = array[i]; array[i] = t; @@ -119391,16 +120093,22 @@ function shuffle(array) { },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3Unie":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "packEncloseRandom", ()=>packEncloseRandom); var _arrayJs = require("../array.js"); +var _lcgJs = require("../lcg.js"); +var _lcgJsDefault = parcelHelpers.interopDefault(_lcgJs); exports.default = function(circles) { - var i = 0, n = (circles = (0, _arrayJs.shuffle)(Array.from(circles))).length, B = [], p, e; + return packEncloseRandom(circles, (0, _lcgJsDefault.default)()); +}; +function packEncloseRandom(circles, random) { + var i = 0, n = (circles = (0, _arrayJs.shuffle)(Array.from(circles), random)).length, B = [], p, e; while(i < n){ p = circles[i]; if (e && enclosesWeak(e, p)) ++i; else e = encloseBasis(B = extendBasis(B, p)), i = 0; } return e; -}; +} function extendBasis(B, p) { var i, j; if (enclosesWeakAll(p, B)) return [ @@ -119464,7 +120172,7 @@ function encloseBasis2(a, b) { }; } function encloseBasis3(a, b, c) { - var x1 = a.x, y1 = a.y, r1 = a.r, x2 = b.x, y2 = b.y, r2 = b.r, x3 = c.x, y3 = c.y, r3 = c.r, a2 = x1 - x2, a3 = x1 - x3, b2 = y1 - y2, b3 = y1 - y3, c2 = r2 - r1, c3 = r3 - r1, d1 = x1 * x1 + y1 * y1 - r1 * r1, d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, ab = a3 * b2 - a2 * b3, xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, xb = (b3 * c2 - b2 * c3) / ab, ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, yb = (a2 * c3 - a3 * c2) / ab, A = xb * xb + yb * yb - 1, B = 2 * (r1 + xa * xb + ya * yb), C = xa * xa + ya * ya - r1 * r1, r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); + var x1 = a.x, y1 = a.y, r1 = a.r, x2 = b.x, y2 = b.y, r2 = b.r, x3 = c.x, y3 = c.y, r3 = c.r, a2 = x1 - x2, a3 = x1 - x3, b2 = y1 - y2, b3 = y1 - y3, c2 = r2 - r1, c3 = r3 - r1, d1 = x1 * x1 + y1 * y1 - r1 * r1, d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, ab = a3 * b2 - a2 * b3, xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, xb = (b3 * c2 - b2 * c3) / ab, ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, yb = (a2 * c3 - a3 * c2) / ab, A = xb * xb + yb * yb - 1, B = 2 * (r1 + xa * xb + ya * yb), C = xa * xa + ya * ya - r1 * r1, r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); return { x: x1 + xa + xb * r, y: y1 + ya + yb * r, @@ -119472,33 +120180,7 @@ function encloseBasis3(a, b, c) { }; } -},{"../array.js":"eKsOC","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bsUy0":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "optional", ()=>optional); -parcelHelpers.export(exports, "required", ()=>required); -function optional(f) { - return f == null ? null : required(f); -} -function required(f) { - if (typeof f !== "function") throw new Error; - return f; -} - -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"e122v":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "constantZero", ()=>constantZero); -function constantZero() { - return 0; -} -exports.default = function(x) { - return function() { - return x; - }; -}; - -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7ce19":[function(require,module,exports) { +},{"../array.js":"eKsOC","../lcg.js":"ioQI9","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7ce19":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _roundJs = require("./treemap/round.js"); @@ -119571,7 +120253,7 @@ var _accessorsJs = require("./accessors.js"); var _indexJs = require("./hierarchy/index.js"); var preroot = { depth: -1 -}, ambiguous = {}; +}, ambiguous = {}, imputed = {}; function defaultId(d) { return d.id; } @@ -119579,16 +120261,29 @@ function defaultParentId(d) { return d.parentId; } exports.default = function() { - var id = defaultId, parentId = defaultParentId; + var id = defaultId, parentId = defaultParentId, path; function stratify(data) { - var nodes = Array.from(data), n = nodes.length, d, i, root, parent, node, nodeId, nodeKey, nodeByKey = new Map; - for(i = 0; i < n; ++i){ + var nodes = Array.from(data), currentId = id, currentParentId = parentId, n, d, i, root, parent, node, nodeId, nodeKey, nodeByKey = new Map; + if (path != null) { + const I = nodes.map((d, i)=>normalize(path(d, i, data))); + const P = I.map(parentof); + const S = new Set(I).add(""); + for (const i1 of P)if (!S.has(i1)) { + S.add(i1); + I.push(i1); + P.push(parentof(i1)); + nodes.push(imputed); + } + currentId = (_, i)=>I[i]; + currentParentId = (_, i)=>P[i]; + } + for(i = 0, n = nodes.length; i < n; ++i){ d = nodes[i], node = nodes[i] = new (0, _indexJs.Node)(d); - if ((nodeId = id(d, i, data)) != null && (nodeId += "")) { + if ((nodeId = currentId(d, i, data)) != null && (nodeId += "")) { nodeKey = node.id = nodeId; nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node); } - if ((nodeId = parentId(d, i, data)) != null && (nodeId += "")) node.parent = nodeId; + if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += "")) node.parent = nodeId; } for(i = 0; i < n; ++i){ node = nodes[i]; @@ -119607,6 +120302,16 @@ exports.default = function() { } } if (!root) throw new Error("no root"); + // When imputing internal nodes, only introduce roots if needed. + // Then replace the imputed marker data with null. + if (path != null) { + while(root.data === imputed && root.children.length === 1)root = root.children[0], --n; + for(let i2 = nodes.length - 1; i2 >= 0; --i2){ + node = nodes[i2]; + if (node.data !== imputed) break; + node.data = null; + } + } root.parent = preroot; root.eachBefore(function(node) { node.depth = node.parent.depth + 1; @@ -119617,13 +120322,45 @@ exports.default = function() { return root; } stratify.id = function(x) { - return arguments.length ? (id = (0, _accessorsJs.required)(x), stratify) : id; + return arguments.length ? (id = (0, _accessorsJs.optional)(x), stratify) : id; }; stratify.parentId = function(x) { - return arguments.length ? (parentId = (0, _accessorsJs.required)(x), stratify) : parentId; + return arguments.length ? (parentId = (0, _accessorsJs.optional)(x), stratify) : parentId; + }; + stratify.path = function(x) { + return arguments.length ? (path = (0, _accessorsJs.optional)(x), stratify) : path; }; return stratify; }; +// To normalize a path, we coerce to a string, strip the trailing slash if any +// (as long as the trailing slash is not immediately preceded by another slash), +// and add leading slash if missing. +function normalize(path) { + path = `${path}`; + let i = path.length; + if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1); + return path[0] === "/" ? path : `/${path}`; +} +// Walk backwards to find the first slash that is not the leading slash, e.g.: +// "/foo/bar" ⇥ "/foo", "/foo" ⇥ "/", "/" ↦ "". (The root is special-cased +// because the id of the root must be a truthy value.) +function parentof(path) { + let i = path.length; + if (i < 2) return ""; + while(--i > 1)if (slash(path, i)) break; + return path.slice(0, i); +} +// Slashes can be escaped; to determine whether a slash is a path delimiter, we +// count the number of preceding backslashes escaping the forward slash: an odd +// number indicates an escaped forward slash. +function slash(path, i) { + if (path[i] === "/") { + let k = 0; + while(i > 0 && path[--i] === "\\")++k; + if ((k & 1) === 0) return true; + } + return false; +} },{"./accessors.js":"bsUy0","./hierarchy/index.js":"eiPwy","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"coCqL":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -120040,13 +120777,11 @@ exports.default = function custom(ratio) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "label", ()=>Label); +var _vegaScenegraph = require("vega-scenegraph"); var _vegaCanvas = require("vega-canvas"); var _vegaDataflow = require("vega-dataflow"); -var _vegaScenegraph = require("vega-scenegraph"); var _vegaUtil = require("vega-util"); -const ALPHA_MASK = 0xff000000; // alpha value equivalent to opacity 0.0625 -const INSIDE_OPACITY_IN_ALPHA = 0x10000000; -const INSIDE_OPACITY = 0.0625; +const ALPHA_MASK = 0xff000000; function baseBitmaps($, data) { const bitmap = $.bitmap(); // when there is no base mark but data points are to be avoided (data || []).forEach((d)=>bitmap.set($(d.boundary[0]), $(d.boundary[3]))); @@ -120055,19 +120790,25 @@ function baseBitmaps($, data) { undefined ]; } -function markBitmaps($, avoidMarks, labelInside, isGroupArea) { +function markBitmaps($, baseMark, avoidMarks, labelInside, isGroupArea) { // create canvas - const width = $.width, height = $.height, border = labelInside || isGroupArea, context = (0, _vegaCanvas.canvas)(width, height).getContext("2d"); // render all marks to be avoided into canvas - avoidMarks.forEach((items)=>draw(context, items, border)); // get canvas buffer, create bitmaps - const buffer = new Uint32Array(context.getImageData(0, 0, width, height).data.buffer), layer1 = $.bitmap(), layer2 = border && $.bitmap(); // populate bitmap layers - let x, y, u, v, alpha; + const width = $.width, height = $.height, border = labelInside || isGroupArea, context = (0, _vegaCanvas.canvas)(width, height).getContext("2d"), baseMarkContext = (0, _vegaCanvas.canvas)(width, height).getContext("2d"), strokeContext = border && (0, _vegaCanvas.canvas)(width, height).getContext("2d"); // render all marks to be avoided into canvas + avoidMarks.forEach((items)=>draw(context, items, false)); + draw(baseMarkContext, baseMark, false); + if (border) draw(strokeContext, baseMark, true); + // get canvas buffer, create bitmaps + const buffer = getBuffer(context, width, height), baseMarkBuffer = getBuffer(baseMarkContext, width, height), strokeBuffer = border && getBuffer(strokeContext, width, height), layer1 = $.bitmap(), layer2 = border && $.bitmap(); // populate bitmap layers + let x, y, u, v, index, alpha, strokeAlpha, baseMarkAlpha; for(y = 0; y < height; ++y)for(x = 0; x < width; ++x){ - alpha = buffer[y * width + x] & ALPHA_MASK; - if (alpha) { + index = y * width + x; + alpha = buffer[index] & ALPHA_MASK; + baseMarkAlpha = baseMarkBuffer[index] & ALPHA_MASK; + strokeAlpha = border && strokeBuffer[index] & ALPHA_MASK; + if (alpha || strokeAlpha || baseMarkAlpha) { u = $(x); v = $(y); - if (!isGroupArea) layer1.set(u, v); // update interior bitmap - if (border && alpha ^ INSIDE_OPACITY_IN_ALPHA) layer2.set(u, v); // update border bitmap + if (!isGroupArea && (alpha || baseMarkAlpha)) layer1.set(u, v); // update interior bitmap + if (border && (alpha || strokeAlpha)) layer2.set(u, v); // update border bitmap } } return [ @@ -120075,6 +120816,9 @@ function markBitmaps($, avoidMarks, labelInside, isGroupArea) { layer2 ]; } +function getBuffer(context, width, height) { + return new Uint32Array(context.getImageData(0, 0, width, height).data.buffer); +} function draw(context, items, interior) { if (!items.length) return; const type = items[0].mark.marktype; @@ -120091,13 +120835,12 @@ function draw(context, items, interior) { * @returns prepared item */ function prepare(source) { const item = (0, _vegaDataflow.rederive)(source, {}); - if (item.stroke) item.strokeOpacity = 1; - if (item.fill) { - item.fillOpacity = INSIDE_OPACITY; - item.stroke = "#000"; - item.strokeOpacity = 1; - item.strokeWidth = 2; - } + if (item.stroke && item.strokeOpacity !== 0 || item.fill && item.fillOpacity !== 0) return { + ...item, + strokeOpacity: 1, + stroke: "#000", + fillOpacity: 0 + }; return item; } const DIV = 5, // bit shift from x, y index to bit vector array index @@ -120425,9 +121168,10 @@ const Aligns = [ function placeMarkLabel($, bitmaps, anchors, offsets) { const width = $.width, height = $.height, bm0 = bitmaps[0], bm1 = bitmaps[1], n = offsets.length; return function(d) { + var _d$textWidth; const boundary = d.boundary, textHeight = d.datum.fontSize; // can not be placed if the mark is not visible in the graph bound if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) return false; - let textWidth = 0, dx, dy, isInside, sizeFactor, insideFactor, x1, x2, y1, y2, xc, yc, _x1, _x2, _y1, _y2; // for each anchor and offset + let textWidth = (_d$textWidth = d.textWidth) !== null && _d$textWidth !== void 0 ? _d$textWidth : 0, dx, dy, isInside, sizeFactor, insideFactor, x1, x2, y1, y2, xc, yc, _x1, _x2, _y1, _y2; // for each anchor and offset for(let i = 0; i < n; ++i){ dx = (anchors[i] & 0x3) - 1; dy = (anchors[i] >>> 0x2 & 0x3) - 1; @@ -120466,10 +121210,7 @@ function placeMarkLabel($, bitmaps, anchors, offsets) { }; } // Test if a label with the given dimensions can be added without overlap function test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) { - return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 ? bm1.getRange(_x1, _y1, _x2, _y2) || !isInMarkBound(x1, y1, x2, y2, boundary) : bm0.getRange(_x1, _y1, _x2, _y2))); -} -function isInMarkBound(x1, y1, x2, y2, boundary) { - return boundary[0] <= x1 && x2 <= boundary[2] && boundary[3] <= y1 && y2 <= boundary[5]; + return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 || bm0).getRange(_x1, _y1, _x2, _y2)); } const TOP = 0x0, MIDDLE = 0x4, BOTTOM = 0x8, LEFT = 0x0, CENTER = 0x1, RIGHT = 0x2; // Mapping from text anchor to number representation const anchorCode = { @@ -120491,16 +121232,25 @@ const placeAreaLabel = { function labelLayout(texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) { // early exit for empty data if (!texts.length) return texts; - const positions = Math.max(offset.length, anchor.length), offsets = getOffsets(offset, positions), anchors = getAnchors(anchor, positions), marktype = markType(texts[0].datum), grouptype = marktype === "group" && texts[0].datum.items[markIndex].marktype, isGroupArea = grouptype === "area", boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex), $ = scaler(size[0], size[1], padding), isNaiveGroupArea = isGroupArea && method === "naive"; // prepare text mark data for placing - const data = texts.map((d)=>({ + const positions = Math.max(offset.length, anchor.length), offsets = getOffsets(offset, positions), anchors = getAnchors(anchor, positions), marktype = markType(texts[0].datum), grouptype = marktype === "group" && texts[0].datum.items[markIndex].marktype, isGroupArea = grouptype === "area", boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex), infPadding = padding === null || padding === Infinity, isNaiveGroupArea = isGroupArea && method === "naive"; + let maxTextWidth = -1, maxTextHeight = -1; // prepare text mark data for placing + const data = texts.map((d)=>{ + const textWidth = infPadding ? (0, _vegaScenegraph.textMetrics).width(d, d.text) : undefined; + maxTextWidth = Math.max(maxTextWidth, textWidth); + maxTextHeight = Math.max(maxTextHeight, d.fontSize); + return { datum: d, opacity: 0, x: undefined, y: undefined, align: undefined, baseline: undefined, - boundary: boundary(d) - })); + boundary: boundary(d), + textWidth + }; + }); + padding = padding === null || padding === Infinity ? Math.max(maxTextWidth, maxTextHeight) + Math.max(...offset) : padding; + const $ = scaler(size[0], size[1], padding); let bitmaps; if (!isNaiveGroupArea) { // sort labels in priority order, if comparator is provided @@ -120512,11 +121262,8 @@ function labelLayout(texts, size, compare, offset, anchor, avoidMarks, avoidBase labelInside = anchors[i] === 0x5 || offsets[i] < 0; // extract data information from base mark when base mark is to be avoided // base mark is implicitly avoided if it is a group area - if (marktype && (avoidBaseMark || isGroupArea)) avoidMarks = [ - texts.map((d)=>d.datum) - ].concat(avoidMarks); - // generate bitmaps for layout calculation - bitmaps = avoidMarks.length ? markBitmaps($, avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data); + const baseMark = (marktype && avoidBaseMark || isGroupArea) && texts.map((d)=>d.datum); // generate bitmaps for layout calculation + bitmaps = avoidMarks.length || baseMark ? markBitmaps($, baseMark || [], avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data); } // generate label placement function const place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets); // place all labels data.forEach((d)=>d.opacity = +place(d)); @@ -120541,7 +121288,7 @@ function markType(item) { * Factory function for function for getting base mark boundary, depending * on mark and group type. When mark type is undefined, line or area: boundary * is the coordinate of each data point. When base mark is grouped line, - * boundary is either at the beginning or end of the line depending on the + * boundary is either at the start or end of the line depending on the * value of lineAnchor. Otherwise, use bounds of base mark. */ function markBoundary(marktype, grouptype, lineAnchor, markIndex) { const xy = (d)=>[ @@ -120601,8 +121348,9 @@ const Anchors = [ * The available options are 'top-left', 'left', 'bottom-left', 'top', * 'bottom', 'top-right', 'right', 'bottom-right', 'middle'. * @param {Array} [params.offset] - Label offsets (in pixels) from the base mark bounding box. - * This parameter is parallel to the list of anchor points. - * @param {number} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size. + * This parameter is parallel to the list of anchor points. + * @param {number | null} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size. + * If this parameter is null, a label may exceed the layout size without any boundary. * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor * position for labels. One of 'start' or 'end'. * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating @@ -120652,7 +121400,8 @@ Label.Definition = { { name: "padding", type: "number", - default: 0 + default: 0, + null: true }, { name: "lineAnchor", @@ -120702,7 +121451,7 @@ Label.Definition = { if (!(mod || pulse.changed(pulse.ADD_REM) || modp("sort"))) return; if (!_.size || _.size.length !== 2) (0, _vegaUtil.error)("Size parameter should be specified as a [width, height] array."); const as = _.as || Output; // run label layout - labelLayout(pulse.materialize(pulse.SOURCE).source, _.size, _.sort, (0, _vegaUtil.array)(_.offset || 1), (0, _vegaUtil.array)(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark === false ? false : true, _.lineAnchor || "end", _.markIndex || 0, _.padding || 0, _.method || "naive").forEach((l)=>{ + labelLayout(pulse.materialize(pulse.SOURCE).source || [], _.size, _.sort, (0, _vegaUtil.array)(_.offset == null ? 1 : _.offset), (0, _vegaUtil.array)(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark !== false, _.lineAnchor || "end", _.markIndex || 0, _.padding === undefined ? 0 : _.padding, _.method || "naive").forEach((l)=>{ // write layout results to data stream const t = l.datum; t[as[0]] = l.x; @@ -120715,7 +121464,7 @@ Label.Definition = { } }); -},{"vega-canvas":"7F0ce","vega-dataflow":"4kvYg","vega-scenegraph":"gIB0Z","vega-util":"dPFAY","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kvZot":[function(require,module,exports) { +},{"vega-scenegraph":"gIB0Z","vega-canvas":"7F0ce","vega-dataflow":"4kvYg","vega-util":"dPFAY","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kvZot":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "loess", ()=>Loess); @@ -121128,10 +121877,12 @@ class Delaunay { this.triangles = new Int32Array(3).fill(-1); this.halfedges = new Int32Array(3).fill(-1); this.triangles[0] = hull[0]; - this.triangles[1] = hull[1]; - this.triangles[2] = hull[1]; inedges[hull[0]] = 1; - if (hull.length === 2) inedges[hull[1]] = 0; + if (hull.length === 2) { + inedges[hull[1]] = 0; + this.triangles[1] = hull[1]; + this.triangles[2] = hull[1]; + } } } voronoi(bounds) { @@ -121206,7 +121957,9 @@ class Delaunay { this.renderHull(context); return buffer && buffer.value(); } - renderPoints(context, r = 2) { + renderPoints(context, r) { + if (r === undefined && (!context || typeof context.moveTo !== "function")) r = context, context = null; + r = r == undefined ? 2 : +r; const buffer = context == null ? context = new (0, _pathJsDefault.default) : undefined; const { points } = this; for(let i = 0, n = points.length; i < n; i += 2){ @@ -121278,6 +122031,7 @@ function* flatIterable(points, fx, fy, that) { },{"delaunator":"dz3p9","./path.js":"deeck","./polygon.js":"1aYy2","./voronoi.js":"2t78D","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"dz3p9":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +var _robustPredicates = require("robust-predicates"); const EPSILON = Math.pow(2, -52); const EDGE_STACK = new Uint32Array(512); class Delaunator { @@ -121385,7 +122139,7 @@ class Delaunator { return; } // swap the order of the seed points for counter-clockwise orientation - if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) { + if ((0, _robustPredicates.orient2d)(i0x, i0y, i1x, i1y, i2x, i2y) < 0) { const i8 = i1; const x1 = i1x; const y1 = i1y; @@ -121435,7 +122189,7 @@ class Delaunator { } start = hullPrev[start]; let e = start, q; - while(q = hullNext[e], !orient(x2, y2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])){ + while(q = hullNext[e], (0, _robustPredicates.orient2d)(x2, y2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0){ e = q; if (e === start) { e = -1; @@ -121451,7 +122205,7 @@ class Delaunator { hullSize++; // walk forward through the hull, adding more triangles and flipping recursively let n1 = hullNext[e]; - while(q = hullNext[n1], orient(x2, y2, coords[2 * n1], coords[2 * n1 + 1], coords[2 * q], coords[2 * q + 1])){ + while(q = hullNext[n1], (0, _robustPredicates.orient2d)(x2, y2, coords[2 * n1], coords[2 * n1 + 1], coords[2 * q], coords[2 * q + 1]) < 0){ t = this._addTriangle(n1, i10, q, hullTri[i10], -1, hullTri[n1]); hullTri[i10] = this._legalize(t + 2); hullNext[n1] = n1; // mark as removed @@ -121459,7 +122213,7 @@ class Delaunator { n1 = q; } // walk backward from the other side, adding more triangles and flipping - if (e === start) while(q = hullPrev[e], orient(x2, y2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])){ + if (e === start) while(q = hullPrev[e], (0, _robustPredicates.orient2d)(x2, y2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0){ t = this._addTriangle(q, i10, e, -1, hullTri[e], hullTri[q]); this._legalize(t + 2); hullTri[q] = t; @@ -121579,17 +122333,6 @@ function dist(ax, ay, bx, by) { const dy = ay - by; return dx * dx + dy * dy; } -// return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check -function orientIfSure(px, py, rx, ry, qx, qy) { - const l = (ry - py) * (qx - px); - const r = (rx - px) * (qy - py); - return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0; -} -// a more robust orientation test that's stable in a given triangle (to fix robustness issues) -function orient(rx, ry, qx, qy, px, py) { - const sign = orientIfSure(px, py, rx, ry, qx, qy) || orientIfSure(rx, ry, qx, qy, px, py) || orientIfSure(qx, qy, px, py, rx, ry); - return sign < 0; -} function inCircle(ax, ay, bx, by, cx, cy, px, py) { const dx = ax - px; const dy = ay - py; @@ -121678,7 +122421,2058 @@ function defaultGetY(p) { return p[1]; } -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"deeck":[function(require,module,exports) { +},{"robust-predicates":"gcpO1","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gcpO1":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "orient2d", ()=>(0, _orient2DJs.orient2d)); +parcelHelpers.export(exports, "orient2dfast", ()=>(0, _orient2DJs.orient2dfast)); +parcelHelpers.export(exports, "orient3d", ()=>(0, _orient3DJs.orient3d)); +parcelHelpers.export(exports, "orient3dfast", ()=>(0, _orient3DJs.orient3dfast)); +parcelHelpers.export(exports, "incircle", ()=>(0, _incircleJs.incircle)); +parcelHelpers.export(exports, "incirclefast", ()=>(0, _incircleJs.incirclefast)); +parcelHelpers.export(exports, "insphere", ()=>(0, _insphereJs.insphere)); +parcelHelpers.export(exports, "inspherefast", ()=>(0, _insphereJs.inspherefast)); +var _orient2DJs = require("./esm/orient2d.js"); +var _orient3DJs = require("./esm/orient3d.js"); +var _incircleJs = require("./esm/incircle.js"); +var _insphereJs = require("./esm/insphere.js"); + +},{"./esm/orient2d.js":"gLWRJ","./esm/orient3d.js":"ea9Bc","./esm/incircle.js":"9jlrr","./esm/insphere.js":"258hF","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gLWRJ":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "orient2d", ()=>orient2d); +parcelHelpers.export(exports, "orient2dfast", ()=>orient2dfast); +var _utilJs = require("./util.js"); +const ccwerrboundA = (3 + 16 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const ccwerrboundB = (2 + 12 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const ccwerrboundC = (9 + 64 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const B = (0, _utilJs.vec)(4); +const C1 = (0, _utilJs.vec)(8); +const C2 = (0, _utilJs.vec)(12); +const D = (0, _utilJs.vec)(16); +const u = (0, _utilJs.vec)(4); +function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) { + let acxtail, acytail, bcxtail, bcytail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const acx = ax - cx; + const bcx = bx - cx; + const acy = ay - cy; + const bcy = by - cy; + s1 = acx * bcy; + c = (0, _utilJs.splitter) * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = (0, _utilJs.splitter) * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcx; + c = (0, _utilJs.splitter) * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = (0, _utilJs.splitter) * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + B[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + B[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + B[2] = _j - (u3 - bvirt) + (_i - bvirt); + B[3] = u3; + let det = (0, _utilJs.estimate)(4, B); + let errbound = ccwerrboundB * detsum; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - acx; + acxtail = ax - (acx + bvirt) + (bvirt - cx); + bvirt = bx - bcx; + bcxtail = bx - (bcx + bvirt) + (bvirt - cx); + bvirt = ay - acy; + acytail = ay - (acy + bvirt) + (bvirt - cy); + bvirt = by - bcy; + bcytail = by - (bcy + bvirt) + (bvirt - cy); + if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) return det; + errbound = ccwerrboundC * detsum + (0, _utilJs.resulterrbound) * Math.abs(det); + det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail); + if (det >= errbound || -det >= errbound) return det; + s1 = acxtail * bcy; + c = (0, _utilJs.splitter) * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = (0, _utilJs.splitter) * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcx; + c = (0, _utilJs.splitter) * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = (0, _utilJs.splitter) * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C1len = (0, _utilJs.sum)(4, B, 4, u, C1); + s1 = acx * bcytail; + c = (0, _utilJs.splitter) * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = (0, _utilJs.splitter) * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcxtail; + c = (0, _utilJs.splitter) * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = (0, _utilJs.splitter) * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C2len = (0, _utilJs.sum)(C1len, C1, 4, u, C2); + s1 = acxtail * bcytail; + c = (0, _utilJs.splitter) * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = (0, _utilJs.splitter) * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcxtail; + c = (0, _utilJs.splitter) * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = (0, _utilJs.splitter) * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const Dlen = (0, _utilJs.sum)(C2len, C2, 4, u, D); + return D[Dlen - 1]; +} +function orient2d(ax, ay, bx, by, cx, cy) { + const detleft = (ay - cy) * (bx - cx); + const detright = (ax - cx) * (by - cy); + const det = detleft - detright; + if (detleft === 0 || detright === 0 || detleft > 0 !== detright > 0) return det; + const detsum = Math.abs(detleft + detright); + if (Math.abs(det) >= ccwerrboundA * detsum) return det; + return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum); +} +function orient2dfast(ax, ay, bx, by, cx, cy) { + return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy); +} + +},{"./util.js":"g1upN","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"g1upN":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "epsilon", ()=>epsilon); +parcelHelpers.export(exports, "splitter", ()=>splitter); +parcelHelpers.export(exports, "resulterrbound", ()=>resulterrbound); +// fast_expansion_sum_zeroelim routine from oritinal code +parcelHelpers.export(exports, "sum", ()=>sum); +parcelHelpers.export(exports, "sum_three", ()=>sum_three); +// scale_expansion_zeroelim routine from oritinal code +parcelHelpers.export(exports, "scale", ()=>scale); +parcelHelpers.export(exports, "negate", ()=>negate); +parcelHelpers.export(exports, "estimate", ()=>estimate); +parcelHelpers.export(exports, "vec", ()=>vec); +const epsilon = 1.1102230246251565e-16; +const splitter = 134217729; +const resulterrbound = (3 + 8 * epsilon) * epsilon; +function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + while(eindex < elen && findex < flen){ + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + } + } + while(eindex < elen){ + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + } + while(findex < flen){ + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + } + if (Q !== 0 || hindex === 0) h[hindex++] = Q; + return hindex; +} +function sum_three(alen, a, blen, b, clen, c, tmp, out) { + return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out); +} +function scale(elen, e, b, h) { + let Q, sum, hh, product1, product0; + let bvirt, c, ahi, alo, bhi, blo; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + let enow = e[0]; + Q = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo); + let hindex = 0; + if (hh !== 0) h[hindex++] = hh; + for(let i = 1; i < elen; i++){ + enow = e[i]; + product1 = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo); + sum = Q + product0; + bvirt = sum - Q; + hh = Q - (sum - bvirt) + (product0 - bvirt); + if (hh !== 0) h[hindex++] = hh; + Q = product1 + sum; + hh = sum - (Q - product1); + if (hh !== 0) h[hindex++] = hh; + } + if (Q !== 0 || hindex === 0) h[hindex++] = Q; + return hindex; +} +function negate(elen, e) { + for(let i = 0; i < elen; i++)e[i] = -e[i]; + return elen; +} +function estimate(elen, e) { + let Q = e[0]; + for(let i = 1; i < elen; i++)Q += e[i]; + return Q; +} +function vec(n) { + return new Float64Array(n); +} + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ea9Bc":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "orient3d", ()=>orient3d); +parcelHelpers.export(exports, "orient3dfast", ()=>orient3dfast); +var _utilJs = require("./util.js"); +const o3derrboundA = (7 + 56 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const o3derrboundB = (3 + 28 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const o3derrboundC = (26 + 288 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const bc = (0, _utilJs.vec)(4); +const ca = (0, _utilJs.vec)(4); +const ab = (0, _utilJs.vec)(4); +const at_b = (0, _utilJs.vec)(4); +const at_c = (0, _utilJs.vec)(4); +const bt_c = (0, _utilJs.vec)(4); +const bt_a = (0, _utilJs.vec)(4); +const ct_a = (0, _utilJs.vec)(4); +const ct_b = (0, _utilJs.vec)(4); +const bct = (0, _utilJs.vec)(8); +const cat = (0, _utilJs.vec)(8); +const abt = (0, _utilJs.vec)(8); +const u = (0, _utilJs.vec)(4); +const _8 = (0, _utilJs.vec)(8); +const _8b = (0, _utilJs.vec)(8); +const _16 = (0, _utilJs.vec)(8); +const _12 = (0, _utilJs.vec)(12); +let fin = (0, _utilJs.vec)(192); +let fin2 = (0, _utilJs.vec)(192); +function finadd(finlen, alen, a) { + finlen = (0, _utilJs.sum)(finlen, fin, alen, a, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; +} +function tailinit(xtail, ytail, ax, ay, bx, by, a, b) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate; + if (xtail === 0) { + if (ytail === 0) { + a[0] = 0; + b[0] = 0; + return 1; + } else { + negate = -ytail; + s1 = negate * ax; + c = (0, _utilJs.splitter) * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = (0, _utilJs.splitter) * ax; + bhi = c - (c - ax); + blo = ax - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + s1 = ytail * bx; + c = (0, _utilJs.splitter) * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = (0, _utilJs.splitter) * bx; + bhi = c - (c - bx); + blo = bx - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } + } else if (ytail === 0) { + s1 = xtail * ay; + c = (0, _utilJs.splitter) * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + negate = -xtail; + s1 = negate * by; + c = (0, _utilJs.splitter) * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } else { + s1 = xtail * ay; + c = (0, _utilJs.splitter) * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ytail * ax; + c = (0, _utilJs.splitter) * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = (0, _utilJs.splitter) * ax; + bhi = c - (c - ax); + blo = ax - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + a[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + a[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + a[2] = _j - (u3 - bvirt) + (_i - bvirt); + a[3] = u3; + s1 = ytail * bx; + c = (0, _utilJs.splitter) * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = (0, _utilJs.splitter) * bx; + bhi = c - (c - bx); + blo = bx - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = xtail * by; + c = (0, _utilJs.splitter) * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + b[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + b[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + b[2] = _j - (u3 - bvirt) + (_i - bvirt); + b[3] = u3; + return 4; + } +} +function tailadd(finlen, a, b, k, z) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3; + s1 = a * b; + c = (0, _utilJs.splitter) * a; + ahi = c - (c - a); + alo = a - ahi; + c = (0, _utilJs.splitter) * b; + bhi = c - (c - b); + blo = b - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + c = (0, _utilJs.splitter) * k; + bhi = c - (c - k); + blo = k - bhi; + _i = s0 * k; + c = (0, _utilJs.splitter) * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * k; + c = (0, _utilJs.splitter) * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + if (z !== 0) { + c = (0, _utilJs.splitter) * z; + bhi = c - (c - z); + blo = z - bhi; + _i = s0 * z; + c = (0, _utilJs.splitter) * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * z; + c = (0, _utilJs.splitter) * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + } + return finlen; +} +function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail; + let adytail, bdytail, cdytail; + let adztail, bdztail, cdztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + s1 = bdx * cdy; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = (0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.scale)(4, bc, adz, _8), _8, (0, _utilJs.scale)(4, ca, bdz, _8b), _8b, _16), _16, (0, _utilJs.scale)(4, ab, cdz, _8), _8, fin); + let det = (0, _utilJs.estimate)(finlen, fin); + let errbound = o3derrboundB * permanent; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + bvirt = az - adz; + adztail = az - (adz + bvirt) + (bvirt - dz); + bvirt = bz - bdz; + bdztail = bz - (bdz + bvirt) + (bvirt - dz); + bvirt = cz - cdz; + cdztail = cz - (cdz + bvirt) + (bvirt - dz); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0 && adztail === 0 && bdztail === 0 && cdztail === 0) return det; + errbound = o3derrboundC * permanent + (0, _utilJs.resulterrbound) * Math.abs(det); + det += adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) + bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) + cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx); + if (det >= errbound || -det >= errbound) return det; + const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c); + const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a); + const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b); + const bctlen = (0, _utilJs.sum)(bt_len, bt_c, ct_len, ct_b, bct); + finlen = finadd(finlen, (0, _utilJs.scale)(bctlen, bct, adz, _16), _16); + const catlen = (0, _utilJs.sum)(ct_len, ct_a, at_len, at_c, cat); + finlen = finadd(finlen, (0, _utilJs.scale)(catlen, cat, bdz, _16), _16); + const abtlen = (0, _utilJs.sum)(at_len, at_b, bt_len, bt_a, abt); + finlen = finadd(finlen, (0, _utilJs.scale)(abtlen, abt, cdz, _16), _16); + if (adztail !== 0) { + finlen = finadd(finlen, (0, _utilJs.scale)(4, bc, adztail, _12), _12); + finlen = finadd(finlen, (0, _utilJs.scale)(bctlen, bct, adztail, _16), _16); + } + if (bdztail !== 0) { + finlen = finadd(finlen, (0, _utilJs.scale)(4, ca, bdztail, _12), _12); + finlen = finadd(finlen, (0, _utilJs.scale)(catlen, cat, bdztail, _16), _16); + } + if (cdztail !== 0) { + finlen = finadd(finlen, (0, _utilJs.scale)(4, ab, cdztail, _12), _12); + finlen = finadd(finlen, (0, _utilJs.scale)(abtlen, abt, cdztail, _16), _16); + } + if (adxtail !== 0) { + if (bdytail !== 0) finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail); + if (cdytail !== 0) finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail); + } + if (bdxtail !== 0) { + if (cdytail !== 0) finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail); + if (adytail !== 0) finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail); + } + if (cdxtail !== 0) { + if (adytail !== 0) finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail); + if (bdytail !== 0) finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail); + } + return fin[finlen - 1]; +} +function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz); + const errbound = o3derrboundA * permanent; + if (det > errbound || -det > errbound) return det; + return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent); +} +function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + return adx * (bdy * cdz - bdz * cdy) + bdx * (cdy * adz - cdz * ady) + cdx * (ady * bdz - adz * bdy); +} + +},{"./util.js":"g1upN","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9jlrr":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "incircle", ()=>incircle); +parcelHelpers.export(exports, "incirclefast", ()=>incirclefast); +var _utilJs = require("./util.js"); +const iccerrboundA = (10 + 96 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const iccerrboundB = (4 + 48 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const iccerrboundC = (44 + 576 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const bc = (0, _utilJs.vec)(4); +const ca = (0, _utilJs.vec)(4); +const ab = (0, _utilJs.vec)(4); +const aa = (0, _utilJs.vec)(4); +const bb = (0, _utilJs.vec)(4); +const cc = (0, _utilJs.vec)(4); +const u = (0, _utilJs.vec)(4); +const v = (0, _utilJs.vec)(4); +const axtbc = (0, _utilJs.vec)(8); +const aytbc = (0, _utilJs.vec)(8); +const bxtca = (0, _utilJs.vec)(8); +const bytca = (0, _utilJs.vec)(8); +const cxtab = (0, _utilJs.vec)(8); +const cytab = (0, _utilJs.vec)(8); +const abt = (0, _utilJs.vec)(8); +const bct = (0, _utilJs.vec)(8); +const cat = (0, _utilJs.vec)(8); +const abtt = (0, _utilJs.vec)(4); +const bctt = (0, _utilJs.vec)(4); +const catt = (0, _utilJs.vec)(4); +const _8 = (0, _utilJs.vec)(8); +const _16 = (0, _utilJs.vec)(16); +const _16b = (0, _utilJs.vec)(16); +const _16c = (0, _utilJs.vec)(16); +const _32 = (0, _utilJs.vec)(32); +const _32b = (0, _utilJs.vec)(32); +const _48 = (0, _utilJs.vec)(48); +const _64 = (0, _utilJs.vec)(64); +let fin = (0, _utilJs.vec)(1152); +let fin2 = (0, _utilJs.vec)(1152); +function finadd(finlen, a, alen) { + finlen = (0, _utilJs.sum)(finlen, fin, a, alen, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; +} +function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail; + let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen; + let abtlen, bctlen, catlen; + let abttlen, bcttlen, cattlen; + let n1, n0; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + s1 = bdx * cdy; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = (0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.scale)((0, _utilJs.scale)(4, bc, adx, _8), _8, adx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32, (0, _utilJs.sum)((0, _utilJs.scale)((0, _utilJs.scale)(4, ca, bdx, _8), _8, bdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64, (0, _utilJs.sum)((0, _utilJs.scale)((0, _utilJs.scale)(4, ab, cdx, _8), _8, cdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin); + let det = (0, _utilJs.estimate)(finlen, fin); + let errbound = iccerrboundB * permanent; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) return det; + errbound = iccerrboundC * permanent + (0, _utilJs.resulterrbound) * Math.abs(det); + det += (adx * adx + ady * ady) * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx) + ((bdx * bdx + bdy * bdy) * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) + ((cdx * cdx + cdy * cdy) * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx)); + if (det >= errbound || -det >= errbound) return det; + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = adx * adx; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = ady * ady; + c = (0, _utilJs.splitter) * ady; + ahi = c - (c - ady); + alo = ady - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + aa[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + aa[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + aa[2] = _j - (u3 - bvirt) + (_i - bvirt); + aa[3] = u3; + } + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = bdx * bdx; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = bdy * bdy; + c = (0, _utilJs.splitter) * bdy; + ahi = c - (c - bdy); + alo = bdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + bb[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + bb[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + bb[2] = _j - (u3 - bvirt) + (_i - bvirt); + bb[3] = u3; + } + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = cdx * cdx; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = cdy * cdy; + c = (0, _utilJs.splitter) * cdy; + ahi = c - (c - cdy); + alo = cdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + cc[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + cc[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + cc[2] = _j - (u3 - bvirt) + (_i - bvirt); + cc[3] = u3; + } + if (adxtail !== 0) { + axtbclen = (0, _utilJs.scale)(4, bc, adxtail, axtbc); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(axtbclen, axtbc, 2 * adx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, adxtail, _8), _8, bdy, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48); + } + if (adytail !== 0) { + aytbclen = (0, _utilJs.scale)(4, bc, adytail, aytbc); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(aytbclen, aytbc, 2 * ady, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, adytail, _8), _8, cdx, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48); + } + if (bdxtail !== 0) { + bxtcalen = (0, _utilJs.scale)(4, ca, bdxtail, bxtca); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(bxtcalen, bxtca, 2 * bdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, bdxtail, _8), _8, cdy, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48); + } + if (bdytail !== 0) { + bytcalen = (0, _utilJs.scale)(4, ca, bdytail, bytca); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(bytcalen, bytca, 2 * bdy, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, bdytail, _8), _8, adx, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48); + } + if (cdxtail !== 0) { + cxtablen = (0, _utilJs.scale)(4, ab, cdxtail, cxtab); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(cxtablen, cxtab, 2 * cdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, cdxtail, _8), _8, ady, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48); + } + if (cdytail !== 0) { + cytablen = (0, _utilJs.scale)(4, ab, cdytail, cytab); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(cytablen, cytab, 2 * cdy, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, cdytail, _8), _8, bdx, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48); + } + if (adxtail !== 0 || adytail !== 0) { + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = bdxtail * cdy; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * cdytail; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + s1 = cdxtail * -bdy; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * -bdy; + bhi = c - (c - -bdy); + blo = -bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * -bdytail; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * -bdytail; + bhi = c - (c - -bdytail); + blo = -bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + bctlen = (0, _utilJs.sum)(4, u, 4, v, bct); + s1 = bdxtail * cdytail; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdxtail * bdytail; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bctt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bctt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bctt[2] = _j - (u3 - bvirt) + (_i - bvirt); + bctt[3] = u3; + bcttlen = 4; + } else { + bct[0] = 0; + bctlen = 1; + bctt[0] = 0; + bcttlen = 1; + } + if (adxtail !== 0) { + const len = (0, _utilJs.scale)(bctlen, bct, adxtail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(axtbclen, axtbc, adxtail, _16), _16, (0, _utilJs.scale)(len, _16c, 2 * adx, _32), _32, _48), _48); + const len2 = (0, _utilJs.scale)(bcttlen, bctt, adxtail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len2, _8, 2 * adx, _16), _16, (0, _utilJs.scale)(len2, _8, adxtail, _16b), _16b, (0, _utilJs.scale)(len, _16c, adxtail, _32), _32, _32b, _64), _64); + if (bdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, adxtail, _8), _8, bdytail, _16), _16); + if (cdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, -adxtail, _8), _8, cdytail, _16), _16); + } + if (adytail !== 0) { + const len1 = (0, _utilJs.scale)(bctlen, bct, adytail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(aytbclen, aytbc, adytail, _16), _16, (0, _utilJs.scale)(len1, _16c, 2 * ady, _32), _32, _48), _48); + const len21 = (0, _utilJs.scale)(bcttlen, bctt, adytail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len21, _8, 2 * ady, _16), _16, (0, _utilJs.scale)(len21, _8, adytail, _16b), _16b, (0, _utilJs.scale)(len1, _16c, adytail, _32), _32, _32b, _64), _64); + } + } + if (bdxtail !== 0 || bdytail !== 0) { + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = cdxtail * ady; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * adytail; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -cdy; + n0 = -cdytail; + s1 = adxtail * n1; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * n0; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + catlen = (0, _utilJs.sum)(4, u, 4, v, cat); + s1 = cdxtail * adytail; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adxtail * cdytail; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + catt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + catt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + catt[2] = _j - (u3 - bvirt) + (_i - bvirt); + catt[3] = u3; + cattlen = 4; + } else { + cat[0] = 0; + catlen = 1; + catt[0] = 0; + cattlen = 1; + } + if (bdxtail !== 0) { + const len3 = (0, _utilJs.scale)(catlen, cat, bdxtail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(bxtcalen, bxtca, bdxtail, _16), _16, (0, _utilJs.scale)(len3, _16c, 2 * bdx, _32), _32, _48), _48); + const len22 = (0, _utilJs.scale)(cattlen, catt, bdxtail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len22, _8, 2 * bdx, _16), _16, (0, _utilJs.scale)(len22, _8, bdxtail, _16b), _16b, (0, _utilJs.scale)(len3, _16c, bdxtail, _32), _32, _32b, _64), _64); + if (cdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, bdxtail, _8), _8, cdytail, _16), _16); + if (adytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, -bdxtail, _8), _8, adytail, _16), _16); + } + if (bdytail !== 0) { + const len4 = (0, _utilJs.scale)(catlen, cat, bdytail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(bytcalen, bytca, bdytail, _16), _16, (0, _utilJs.scale)(len4, _16c, 2 * bdy, _32), _32, _48), _48); + const len23 = (0, _utilJs.scale)(cattlen, catt, bdytail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len23, _8, 2 * bdy, _16), _16, (0, _utilJs.scale)(len23, _8, bdytail, _16b), _16b, (0, _utilJs.scale)(len4, _16c, bdytail, _32), _32, _32b, _64), _64); + } + } + if (cdxtail !== 0 || cdytail !== 0) { + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = adxtail * bdy; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * bdytail; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -ady; + n0 = -adytail; + s1 = bdxtail * n1; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * n0; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + abtlen = (0, _utilJs.sum)(4, u, 4, v, abt); + s1 = adxtail * bdytail; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdxtail * adytail; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + abtt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + abtt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + abtt[2] = _j - (u3 - bvirt) + (_i - bvirt); + abtt[3] = u3; + abttlen = 4; + } else { + abt[0] = 0; + abtlen = 1; + abtt[0] = 0; + abttlen = 1; + } + if (cdxtail !== 0) { + const len5 = (0, _utilJs.scale)(abtlen, abt, cdxtail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(cxtablen, cxtab, cdxtail, _16), _16, (0, _utilJs.scale)(len5, _16c, 2 * cdx, _32), _32, _48), _48); + const len24 = (0, _utilJs.scale)(abttlen, abtt, cdxtail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len24, _8, 2 * cdx, _16), _16, (0, _utilJs.scale)(len24, _8, cdxtail, _16b), _16b, (0, _utilJs.scale)(len5, _16c, cdxtail, _32), _32, _32b, _64), _64); + if (adytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, cdxtail, _8), _8, adytail, _16), _16); + if (bdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, -cdxtail, _8), _8, bdytail, _16), _16); + } + if (cdytail !== 0) { + const len6 = (0, _utilJs.scale)(abtlen, abt, cdytail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(cytablen, cytab, cdytail, _16), _16, (0, _utilJs.scale)(len6, _16c, 2 * cdy, _32), _32, _48), _48); + const len25 = (0, _utilJs.scale)(abttlen, abtt, cdytail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len25, _8, 2 * cdy, _16), _16, (0, _utilJs.scale)(len25, _8, cdytail, _16b), _16b, (0, _utilJs.scale)(len6, _16c, cdytail, _32), _32, _32b, _64), _64); + } + } + return fin[finlen - 1]; +} +function incircle(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const alift = adx * adx + ady * ady; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const blift = bdx * bdx + bdy * bdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const clift = cdx * cdx + cdy * cdy; + const det = alift * (bdxcdy - cdxbdy) + blift * (cdxady - adxcdy) + clift * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift + (Math.abs(cdxady) + Math.abs(adxcdy)) * blift + (Math.abs(adxbdy) + Math.abs(bdxady)) * clift; + const errbound = iccerrboundA * permanent; + if (det > errbound || -det > errbound) return det; + return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent); +} +function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const ady = ay - dy; + const bdx = bx - dx; + const bdy = by - dy; + const cdx = cx - dx; + const cdy = cy - dy; + const abdet = adx * bdy - bdx * ady; + const bcdet = bdx * cdy - cdx * bdy; + const cadet = cdx * ady - adx * cdy; + const alift = adx * adx + ady * ady; + const blift = bdx * bdx + bdy * bdy; + const clift = cdx * cdx + cdy * cdy; + return alift * bcdet + blift * cadet + clift * abdet; +} + +},{"./util.js":"g1upN","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"258hF":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "insphere", ()=>insphere); +parcelHelpers.export(exports, "inspherefast", ()=>inspherefast); +var _utilJs = require("./util.js"); +const isperrboundA = (16 + 224 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const isperrboundB = (5 + 72 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const isperrboundC = (71 + 1408 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const ab = (0, _utilJs.vec)(4); +const bc = (0, _utilJs.vec)(4); +const cd = (0, _utilJs.vec)(4); +const de = (0, _utilJs.vec)(4); +const ea = (0, _utilJs.vec)(4); +const ac = (0, _utilJs.vec)(4); +const bd = (0, _utilJs.vec)(4); +const ce = (0, _utilJs.vec)(4); +const da = (0, _utilJs.vec)(4); +const eb = (0, _utilJs.vec)(4); +const abc = (0, _utilJs.vec)(24); +const bcd = (0, _utilJs.vec)(24); +const cde = (0, _utilJs.vec)(24); +const dea = (0, _utilJs.vec)(24); +const eab = (0, _utilJs.vec)(24); +const abd = (0, _utilJs.vec)(24); +const bce = (0, _utilJs.vec)(24); +const cda = (0, _utilJs.vec)(24); +const deb = (0, _utilJs.vec)(24); +const eac = (0, _utilJs.vec)(24); +const adet = (0, _utilJs.vec)(1152); +const bdet = (0, _utilJs.vec)(1152); +const cdet = (0, _utilJs.vec)(1152); +const ddet = (0, _utilJs.vec)(1152); +const edet = (0, _utilJs.vec)(1152); +const abdet = (0, _utilJs.vec)(2304); +const cddet = (0, _utilJs.vec)(2304); +const cdedet = (0, _utilJs.vec)(3456); +const deter = (0, _utilJs.vec)(5760); +const _8 = (0, _utilJs.vec)(8); +const _8b = (0, _utilJs.vec)(8); +const _8c = (0, _utilJs.vec)(8); +const _16 = (0, _utilJs.vec)(16); +const _24 = (0, _utilJs.vec)(24); +const _48 = (0, _utilJs.vec)(48); +const _48b = (0, _utilJs.vec)(48); +const _96 = (0, _utilJs.vec)(96); +const _192 = (0, _utilJs.vec)(192); +const _384x = (0, _utilJs.vec)(384); +const _384y = (0, _utilJs.vec)(384); +const _384z = (0, _utilJs.vec)(384); +const _768 = (0, _utilJs.vec)(768); +function sum_three_scale(a, b, c, az, bz, cz, out) { + return (0, _utilJs.sum_three)((0, _utilJs.scale)(4, a, az, _8), _8, (0, _utilJs.scale)(4, b, bz, _8b), _8b, (0, _utilJs.scale)(4, c, cz, _8c), _8c, _16, out); +} +function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) { + const len = (0, _utilJs.sum)((0, _utilJs.sum)(alen, a, blen, b, _48), _48, (0, _utilJs.negate)((0, _utilJs.sum)(clen, c, dlen, d, _48b), _48b), _48b, _96); + return (0, _utilJs.sum_three)((0, _utilJs.scale)((0, _utilJs.scale)(len, _96, x, _192), _192, x, _384x), _384x, (0, _utilJs.scale)((0, _utilJs.scale)(len, _96, y, _192), _192, y, _384y), _384y, (0, _utilJs.scale)((0, _utilJs.scale)(len, _96, z, _192), _192, z, _384z), _384z, _768, out); +} +function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + s1 = ax * by; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ay; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + s1 = bx * cy; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * by; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cx * dy; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * cy; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + cd[2] = _j - (u3 - bvirt) + (_i - bvirt); + cd[3] = u3; + s1 = dx * ey; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * dy; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + de[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + de[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + de[2] = _j - (u3 - bvirt) + (_i - bvirt); + de[3] = u3; + s1 = ex * ay; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * ey; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ea[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ea[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ea[2] = _j - (u3 - bvirt) + (_i - bvirt); + ea[3] = u3; + s1 = ax * cy; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * ay; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ac[2] = _j - (u3 - bvirt) + (_i - bvirt); + ac[3] = u3; + s1 = bx * dy; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * by; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bd[2] = _j - (u3 - bvirt) + (_i - bvirt); + bd[3] = u3; + s1 = cx * ey; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * cy; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ce[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ce[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ce[2] = _j - (u3 - bvirt) + (_i - bvirt); + ce[3] = u3; + s1 = dx * ay; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * dy; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + da[2] = _j - (u3 - bvirt) + (_i - bvirt); + da[3] = u3; + s1 = ex * by; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ey; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + eb[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + eb[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + eb[2] = _j - (u3 - bvirt) + (_i - bvirt); + eb[3] = u3; + const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc); + const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd); + const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde); + const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea); + const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab); + const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd); + const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce); + const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda); + const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb); + const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac); + const deterlen = (0, _utilJs.sum_three)(liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet, liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet, (0, _utilJs.sum_three)(liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet, liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet, liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter); + return deter[deterlen - 1]; +} +const xdet = (0, _utilJs.vec)(96); +const ydet = (0, _utilJs.vec)(96); +const zdet = (0, _utilJs.vec)(96); +const fin = (0, _utilJs.vec)(1152); +function liftadapt(a, b, c, az, bz, cz, x, y, z, out) { + const len = sum_three_scale(a, b, c, az, bz, cz, _24); + return (0, _utilJs.sum_three)((0, _utilJs.scale)((0, _utilJs.scale)(len, _24, x, _48), _48, x, xdet), xdet, (0, _utilJs.scale)((0, _utilJs.scale)(len, _24, y, _48), _48, y, ydet), ydet, (0, _utilJs.scale)((0, _utilJs.scale)(len, _24, z, _48), _48, z, zdet), zdet, _192, out); +} +function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) { + let ab3, bc3, cd3, da3, ac3, bd3; + let aextail, bextail, cextail, dextail; + let aeytail, beytail, ceytail, deytail; + let aeztail, beztail, ceztail, deztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0; + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + s1 = aex * bey; + c = (0, _utilJs.splitter) * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = (0, _utilJs.splitter) * bey; + bhi = c - (c - bey); + blo = bey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bex * aey; + c = (0, _utilJs.splitter) * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = (0, _utilJs.splitter) * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + ab3 = _j + _i; + bvirt = ab3 - _j; + ab[2] = _j - (ab3 - bvirt) + (_i - bvirt); + ab[3] = ab3; + s1 = bex * cey; + c = (0, _utilJs.splitter) * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = (0, _utilJs.splitter) * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * bey; + c = (0, _utilJs.splitter) * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = (0, _utilJs.splitter) * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + bc3 = _j + _i; + bvirt = bc3 - _j; + bc[2] = _j - (bc3 - bvirt) + (_i - bvirt); + bc[3] = bc3; + s1 = cex * dey; + c = (0, _utilJs.splitter) * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = (0, _utilJs.splitter) * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * cey; + c = (0, _utilJs.splitter) * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = (0, _utilJs.splitter) * cey; + bhi = c - (c - cey); + blo = cey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + cd3 = _j + _i; + bvirt = cd3 - _j; + cd[2] = _j - (cd3 - bvirt) + (_i - bvirt); + cd[3] = cd3; + s1 = dex * aey; + c = (0, _utilJs.splitter) * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = (0, _utilJs.splitter) * aey; + bhi = c - (c - aey); + blo = aey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = aex * dey; + c = (0, _utilJs.splitter) * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = (0, _utilJs.splitter) * dey; + bhi = c - (c - dey); + blo = dey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + da3 = _j + _i; + bvirt = da3 - _j; + da[2] = _j - (da3 - bvirt) + (_i - bvirt); + da[3] = da3; + s1 = aex * cey; + c = (0, _utilJs.splitter) * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = (0, _utilJs.splitter) * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * aey; + c = (0, _utilJs.splitter) * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = (0, _utilJs.splitter) * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + ac3 = _j + _i; + bvirt = ac3 - _j; + ac[2] = _j - (ac3 - bvirt) + (_i - bvirt); + ac[3] = ac3; + s1 = bex * dey; + c = (0, _utilJs.splitter) * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = (0, _utilJs.splitter) * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * bey; + c = (0, _utilJs.splitter) * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = (0, _utilJs.splitter) * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + bd3 = _j + _i; + bvirt = bd3 - _j; + bd[2] = _j - (bd3 - bvirt) + (_i - bvirt); + bd[3] = bd3; + const finlen = (0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.negate)(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet, liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet, (0, _utilJs.sum)((0, _utilJs.negate)(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet, liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin); + let det = (0, _utilJs.estimate)(finlen, fin); + let errbound = isperrboundB * permanent; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - aex; + aextail = ax - (aex + bvirt) + (bvirt - ex); + bvirt = ay - aey; + aeytail = ay - (aey + bvirt) + (bvirt - ey); + bvirt = az - aez; + aeztail = az - (aez + bvirt) + (bvirt - ez); + bvirt = bx - bex; + bextail = bx - (bex + bvirt) + (bvirt - ex); + bvirt = by - bey; + beytail = by - (bey + bvirt) + (bvirt - ey); + bvirt = bz - bez; + beztail = bz - (bez + bvirt) + (bvirt - ez); + bvirt = cx - cex; + cextail = cx - (cex + bvirt) + (bvirt - ex); + bvirt = cy - cey; + ceytail = cy - (cey + bvirt) + (bvirt - ey); + bvirt = cz - cez; + ceztail = cz - (cez + bvirt) + (bvirt - ez); + bvirt = dx - dex; + dextail = dx - (dex + bvirt) + (bvirt - ex); + bvirt = dy - dey; + deytail = dy - (dey + bvirt) + (bvirt - ey); + bvirt = dz - dez; + deztail = dz - (dez + bvirt) + (bvirt - ez); + if (aextail === 0 && aeytail === 0 && aeztail === 0 && bextail === 0 && beytail === 0 && beztail === 0 && cextail === 0 && ceytail === 0 && ceztail === 0 && dextail === 0 && deytail === 0 && deztail === 0) return det; + errbound = isperrboundC * permanent + (0, _utilJs.resulterrbound) * Math.abs(det); + const abeps = aex * beytail + bey * aextail - (aey * bextail + bex * aeytail); + const bceps = bex * ceytail + cey * bextail - (bey * cextail + cex * beytail); + const cdeps = cex * deytail + dey * cextail - (cey * dextail + dex * ceytail); + const daeps = dex * aeytail + aey * dextail - (dey * aextail + aex * deytail); + const aceps = aex * ceytail + cey * aextail - (aey * cextail + cex * aeytail); + const bdeps = bex * deytail + dey * bextail - (bey * dextail + dex * beytail); + det += (bex * bex + bey * bey + bez * bez) * (cez * daeps + dez * aceps + aez * cdeps + (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) * (aez * bceps - bez * aceps + cez * abeps + (aeztail * bc3 - beztail * ac3 + ceztail * ab3)) - ((aex * aex + aey * aey + aez * aez) * (bez * cdeps - cez * bdeps + dez * bceps + (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) * (dez * abeps + aez * bdeps + bez * daeps + (deztail * ab3 + aeztail * bd3 + beztail * da3))) + 2 * ((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) + (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3) - ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) + (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3))); + if (det >= errbound || -det >= errbound) return det; + return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez); +} +function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + const aexbey = aex * bey; + const bexaey = bex * aey; + const ab = aexbey - bexaey; + const bexcey = bex * cey; + const cexbey = cex * bey; + const bc = bexcey - cexbey; + const cexdey = cex * dey; + const dexcey = dex * cey; + const cd = cexdey - dexcey; + const dexaey = dex * aey; + const aexdey = aex * dey; + const da = dexaey - aexdey; + const aexcey = aex * cey; + const cexaey = cex * aey; + const ac = aexcey - cexaey; + const bexdey = bex * dey; + const dexbey = dex * bey; + const bd = bexdey - dexbey; + const abc = aez * bc - bez * ac + cez * ab; + const bcd = bez * cd - cez * bd + dez * bc; + const cda = cez * da + dez * ac + aez * cd; + const dab = dez * ab + aez * bd + bez * da; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + const det = clift * dab - dlift * abc + (alift * bcd - blift * cda); + const aezplus = Math.abs(aez); + const bezplus = Math.abs(bez); + const cezplus = Math.abs(cez); + const dezplus = Math.abs(dez); + const aexbeyplus = Math.abs(aexbey); + const bexaeyplus = Math.abs(bexaey); + const bexceyplus = Math.abs(bexcey); + const cexbeyplus = Math.abs(cexbey); + const cexdeyplus = Math.abs(cexdey); + const dexceyplus = Math.abs(dexcey); + const dexaeyplus = Math.abs(dexaey); + const aexdeyplus = Math.abs(aexdey); + const aexceyplus = Math.abs(aexcey); + const cexaeyplus = Math.abs(cexaey); + const bexdeyplus = Math.abs(bexdey); + const dexbeyplus = Math.abs(dexbey); + const permanent = ((cexdeyplus + dexceyplus) * bezplus + (dexbeyplus + bexdeyplus) * cezplus + (bexceyplus + cexbeyplus) * dezplus) * alift + ((dexaeyplus + aexdeyplus) * cezplus + (aexceyplus + cexaeyplus) * dezplus + (cexdeyplus + dexceyplus) * aezplus) * blift + ((aexbeyplus + bexaeyplus) * dezplus + (bexdeyplus + dexbeyplus) * aezplus + (dexaeyplus + aexdeyplus) * bezplus) * clift + ((bexceyplus + cexbeyplus) * aezplus + (cexaeyplus + aexceyplus) * bezplus + (aexbeyplus + bexaeyplus) * cezplus) * dlift; + const errbound = isperrboundA * permanent; + if (det > errbound || -det > errbound) return det; + return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent); +} +function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) { + const aex = pax - pex; + const bex = pbx - pex; + const cex = pcx - pex; + const dex = pdx - pex; + const aey = pay - pey; + const bey = pby - pey; + const cey = pcy - pey; + const dey = pdy - pey; + const aez = paz - pez; + const bez = pbz - pez; + const cez = pcz - pez; + const dez = pdz - pez; + const ab = aex * bey - bex * aey; + const bc = bex * cey - cex * bey; + const cd = cex * dey - dex * cey; + const da = dex * aey - aex * dey; + const ac = aex * cey - cex * aey; + const bd = bex * dey - dex * bey; + const abc = aez * bc - bez * ac + cez * ab; + const bcd = bez * cd - cez * bd + dez * bc; + const cda = cez * da + dez * ac + aez * cd; + const dab = dez * ab + aez * bd + bez * da; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + return clift * dab - dlift * abc + (alift * bcd - blift * cda); +} + +},{"./util.js":"g1upN","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"deeck":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); const epsilon = 1e-6; @@ -121791,19 +124585,25 @@ class Voronoi { const dy = y2 - y1; const ex = x3 - x1; const ey = y3 - y1; - const bl = dx * dx + dy * dy; - const cl = ex * ex + ey * ey; const ab = (dx * ey - dy * ex) * 2; - if (!ab) { + if (Math.abs(ab) < 1e-9) { // degenerate case (collinear diagram) - x = (x1 + x3) / 2 - 1e8 * ey; - y = (y1 + y3) / 2 + 1e8 * ex; - } else if (Math.abs(ab) < 1e-8) { // almost equal points (degenerate triangle) - x = (x1 + x3) / 2; - y = (y1 + y3) / 2; + // the circumcenter is at the infinity, in a + // direction that is: + // 1. orthogonal to the halfedge. + let a = 1e9; + // 2. points away from the center; since the list of triangles starts + // in the center, the first point of the first triangle + // will be our reference + const r = triangles[0] * 2; + a *= Math.sign((points[r] - x1) * ey - (points[r + 1] - y1) * ex); + x = (x1 + x3) / 2 - a * ey; + y = (y1 + y3) / 2 + a * ex; } else { const d = 1 / ab; + const bl = dx * dx + dy * dy; + const cl = ex * ex + ey * ey; x = x1 + (ey * bl - dy * cl) * d; y = y1 + (dx * cl - ex * bl) * d; } @@ -121946,7 +124746,7 @@ class Voronoi { let P = null; let x0, y0, x1 = points[n - 2], y1 = points[n - 1]; let c0, c1 = this._regioncode(x1, y1); - let e0, e1; + let e0, e1 = 0; for(let j = 0; j < n; j += 2){ x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1]; c0 = c1, c1 = this._regioncode(x1, y1); @@ -122064,6 +124864,8 @@ class Voronoi { e0 = 5, x = this.xmin, y = this.ymin; break; // left } + // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are + // undefined, the conditional statement will be executed. if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) P.splice(j, 0, x, y), j += 2; } if (P.length > 4) for(let i1 = 0; i1 < P.length; i1 += 2){ @@ -123289,7 +126091,7 @@ function prevent(view, type) { function permit(view, key, type) { const rule = view._eventConfig && view._eventConfig[key]; if (rule === false || (0, _vegaUtil.isObject)(rule) && !rule[type]) { - view.warn(`Blocked ${key} ${type} event listener.`); + view.warn("Blocked ".concat(key, " ").concat(type, " event listener.")); return false; } return true; @@ -123638,7 +126440,7 @@ function lookup(view, el, clear) { } } if (el && clear) try { - el.innerHTML = ""; + el.textContent = ""; } catch (e) { el = null; view.error(e); @@ -124286,9 +127088,9 @@ function internalScaleFunctions(codegen, fnctx, visitors) { const ref = (arg)=>"_[" + (arg.type === (0, _vegaExpression.Literal) ? (0, _vegaUtil.stringValue)(ScalePrefix + arg.value) : (0, _vegaUtil.stringValue)(ScalePrefix) + "+" + codegen(arg)) + "]"; // define and return internal scale function code generators // these internal functions are called by mark encoders return { - _bandwidth: (args)=>`this.__bandwidth(${ref(args[0])})`, - _range: (args)=>`${ref(args[0])}.range()`, - _scale: (args)=>`${ref(args[0])}(${codegen(args[1])})` + _bandwidth: (args)=>"this.__bandwidth(".concat(ref(args[0]), ")"), + _range: (args)=>"".concat(ref(args[0]), ".range()"), + _scale: (args)=>"".concat(ref(args[0]), "(").concat(codegen(args[1]), ")") }; } function geoMethod(methodName, globalMethod) { @@ -124416,16 +127218,20 @@ function array(seq) { function sequence(seq) { return array(seq) || ((0, _vegaUtil.isString)(seq) ? seq : null); } -function join(seq, ...args) { +function join(seq) { + for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)args[_key - 1] = arguments[_key]; return array(seq).join(...args); } -function indexof(seq, ...args) { +function indexof(seq) { + for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++)args[_key2 - 1] = arguments[_key2]; return sequence(seq).indexOf(...args); } -function lastindexof(seq, ...args) { +function lastindexof(seq) { + for(var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++)args[_key3 - 1] = arguments[_key3]; return sequence(seq).lastIndexOf(...args); } -function slice(seq, ...args) { +function slice(seq) { + for(var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++)args[_key4 - 1] = arguments[_key4]; return sequence(seq).slice(...args); } function replace(str, pattern, repl) { @@ -124543,6 +127349,87 @@ function filter(opt) { } return p; } +/** + * Appends a new point to the lasso + * + * @param {*} lasso the lasso in pixel space + * @param {*} x the x coordinate in pixel space + * @param {*} y the y coordinate in pixel space + * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point + * @returns a new array containing the lasso with the new point + */ function lassoAppend(lasso, x, y) { + let minDist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5; + const last = lasso[lasso.length - 1]; // Add point to lasso if distance to last point exceed minDist or its the first point + if (last === undefined || Math.sqrt((last[0] - x) ** 2 + (last[1] - y) ** 2) > minDist) { + lasso.push([ + x, + y + ]); + return [ + ...lasso + ]; + } + return lasso; +} +/** + * Generates a svg path command which draws a lasso + * + * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...] + * @returns the svg path command that draws the lasso + */ function lassoPath(lasso) { + return (lasso !== null && lasso !== void 0 ? lasso : []).reduce((svg, _ref, i)=>{ + let [x, y] = _ref; + return svg += i == 0 ? "M ".concat(x, ",").concat(y, " ") : i === lasso.length - 1 ? " Z" : "L ".concat(x, ",").concat(y, " "); + }, ""); +} +/** + * Inverts the lasso from pixel space to an array of vega scenegraph tuples + * + * @param {*} data the dataset + * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...] + * @param {*} unit the unit where the lasso is defined + * + * @returns an array of vega scenegraph tuples + */ function intersectLasso(markname, pixelLasso, unit) { + const { x , y , mark } = unit; + const bb = new (0, _vegaScenegraph.Bounds)().set(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER); // Get bounding box around lasso + for (const [px, py] of pixelLasso){ + if (px < bb.x1) bb.x1 = px; + if (px > bb.x2) bb.x2 = px; + if (py < bb.y1) bb.y1 = py; + if (py > bb.y2) bb.y2 = py; + } // Translate bb against unit coordinates + bb.translate(x, y); + const intersection = intersect([ + [ + bb.x1, + bb.y1 + ], + [ + bb.x2, + bb.y2 + ] + ], markname, mark); // Check every point against the lasso + return intersection.filter((tuple)=>pointInPolygon(tuple.x, tuple.y, pixelLasso)); +} +/** + * Performs a test if a point is inside a polygon based on the idea from + * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html + * + * This method will not need the same start/end point since it wraps around the edges of the array + * + * @param {*} test a point to test against + * @param {*} polygon a polygon in the form [[x,y], [x,y], ...] + * @returns true if the point lies inside the polygon, false otherwise + */ function pointInPolygon(testx, testy, polygon) { + let intersections = 0; + for(let i = 0, j = polygon.length - 1; i < polygon.length; j = i++){ + const [prevX, prevY] = polygon[j]; + const [x, y] = polygon[i]; // count intersections + if (y > testy != prevY > testy && testx < (prevX - x) * (testy - y) / (prevY - y) + x) intersections++; + } // point is in polygon if intersection count is odd + return intersections & 1; +} const functionContext = { random () { return (0, _vegaStatistics.random)(); @@ -124575,8 +127462,11 @@ const functionContext = { return _ != null && _ === _; }, toBoolean: (0, _vegaUtil.toBoolean), - toDate: (0, _vegaUtil.toDate), - toNumber: (0, _vegaUtil.toNumber), + toDate (_) { + return (0, _vegaUtil.toDate)(_); + }, + toNumber: // suppress extra arguments + (0, _vegaUtil.toNumber), toString: (0, _vegaUtil.toString), indexof, join, @@ -124623,7 +127513,10 @@ const functionContext = { warn, info, debug, - extent: (0, _vegaUtil.extent), + extent (_) { + return (0, _vegaUtil.extent)(_); + }, + // suppress extra arguments inScope, intersect, clampRange: (0, _vegaUtil.clampRange), @@ -124644,7 +127537,10 @@ const functionContext = { zoomPow: (0, _vegaUtil.zoomPow), zoomSymlog: (0, _vegaUtil.zoomSymlog), encode, - modify + modify, + lassoAppend, + lassoPath, + intersectLasso }; const eventFunctions = [ "view", @@ -124668,7 +127564,7 @@ const codegenParams = { "item" ], fieldvar: "datum", - globalvar: (id)=>`_[${(0, _vegaUtil.stringValue)(SignalPrefix + id)}]`, + globalvar: (id)=>"_[".concat((0, _vegaUtil.stringValue)(SignalPrefix + id), "]"), functions: buildFunctions, constants: (0, _vegaExpression.constants), visitors: astVisitors @@ -124739,7 +127635,7 @@ function parser(expr, scope) { }; } -},{"vega-util":"dPFAY","vega-expression":"ic0a8","d3-geo":"1UFrq","d3-color":"2I9cJ","vega-dataflow":"4kvYg","vega-scale":"evQIv","vega-scenegraph":"gIB0Z","vega-selections":"7uoGs","vega-statistics":"hZmG3","vega-time":"hDlOp","d3-array":"8JMcC","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ic0a8":[function(require,module,exports) { +},{"vega-util":"dPFAY","vega-expression":"kqWZH","d3-geo":"1UFrq","d3-color":"2I9cJ","vega-dataflow":"4kvYg","vega-scale":"evQIv","vega-scenegraph":"gIB0Z","vega-selections":"7uoGs","vega-statistics":"hZmG3","vega-time":"hDlOp","d3-array":"8JMcC","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kqWZH":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "ASTNode", ()=>ASTNode); @@ -126218,7 +129114,7 @@ function selectionVisitor(name, args, scope, params) { if (!(0, _vegaUtil.hasOwnProperty)(params, dataName)) params[dataName] = scope.getData(data).tuplesRef(); } -},{"d3-array":"hwjyc","vega-util":"dPFAY","vega-expression":"huXGR","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hwjyc":[function(require,module,exports) { +},{"d3-array":"hwjyc","vega-util":"dPFAY","vega-expression":"kqWZH","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hwjyc":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "bisect", ()=>(0, _bisectJsDefault.default)); @@ -126495,2959 +129391,2916 @@ function union(...others) { } exports.default = union; -},{"internmap":"13ksD","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"huXGR":[function(require,module,exports) { +},{"internmap":"13ksD","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"37uhx":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "ASTNode", ()=>ASTNode); -parcelHelpers.export(exports, "ArrayExpression", ()=>ArrayExpression); -parcelHelpers.export(exports, "BinaryExpression", ()=>BinaryExpression); -parcelHelpers.export(exports, "CallExpression", ()=>CallExpression); -parcelHelpers.export(exports, "ConditionalExpression", ()=>ConditionalExpression); -parcelHelpers.export(exports, "Identifier", ()=>Identifier); -parcelHelpers.export(exports, "Literal", ()=>Literal); -parcelHelpers.export(exports, "LogicalExpression", ()=>LogicalExpression); -parcelHelpers.export(exports, "MemberExpression", ()=>MemberExpression); -parcelHelpers.export(exports, "ObjectExpression", ()=>ObjectExpression); -parcelHelpers.export(exports, "Property", ()=>Property); -parcelHelpers.export(exports, "RawCode", ()=>RawCode); -parcelHelpers.export(exports, "UnaryExpression", ()=>UnaryExpression); -parcelHelpers.export(exports, "codegenExpression", ()=>codegen); -parcelHelpers.export(exports, "constants", ()=>Constants); -parcelHelpers.export(exports, "functions", ()=>Functions); -parcelHelpers.export(exports, "parseExpression", ()=>parser); +parcelHelpers.export(exports, "context", ()=>context); var _vegaUtil = require("vega-util"); -const RawCode = "RawCode"; -const Literal = "Literal"; -const Property = "Property"; -const Identifier = "Identifier"; -const ArrayExpression = "ArrayExpression"; -const BinaryExpression = "BinaryExpression"; -const CallExpression = "CallExpression"; -const ConditionalExpression = "ConditionalExpression"; -const LogicalExpression = "LogicalExpression"; -const MemberExpression = "MemberExpression"; -const ObjectExpression = "ObjectExpression"; -const UnaryExpression = "UnaryExpression"; -function ASTNode(type) { - this.type = type; +var _vegaDataflow = require("vega-dataflow"); +/** + * Parse a serialized dataflow specification. + */ function parse(spec) { + const ctx = this, operators = spec.operators || []; // parse background + if (spec.background) ctx.background = spec.background; + // parse event configuration + if (spec.eventConfig) ctx.eventConfig = spec.eventConfig; + // parse locale configuration + if (spec.locale) ctx.locale = spec.locale; + // parse operators + operators.forEach((entry)=>ctx.parseOperator(entry)); // parse operator parameters + operators.forEach((entry)=>ctx.parseOperatorParameters(entry)); // parse streams + (spec.streams || []).forEach((entry)=>ctx.parseStream(entry)); // parse updates + (spec.updates || []).forEach((entry)=>ctx.parseUpdate(entry)); + return ctx.resolve(); } -ASTNode.prototype.visit = function(visitor) { - let c, i, n; - if (visitor(this)) return 1; - for(c = children(this), i = 0, n = c.length; i < n; ++i){ - if (c[i].visit(visitor)) return 1; +const Skip = (0, _vegaUtil.toSet)([ + "rule" +]), Swap = (0, _vegaUtil.toSet)([ + "group", + "image", + "rect" +]); +function adjustSpatial(encode, marktype) { + let code = ""; + if (Skip[marktype]) return code; + if (encode.x2) { + if (encode.x) { + if (Swap[marktype]) code += "if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"; + code += "o.width=o.x2-o.x;"; + } else code += "o.x=o.x2-(o.width||0);"; } -}; -function children(node) { - switch(node.type){ - case ArrayExpression: - return node.elements; - case BinaryExpression: - case LogicalExpression: - return [ - node.left, - node.right - ]; - case CallExpression: - return [ - node.callee - ].concat(node.arguments); - case ConditionalExpression: - return [ - node.test, - node.consequent, - node.alternate - ]; - case MemberExpression: - return [ - node.object, - node.property - ]; - case ObjectExpression: - return node.properties; - case Property: - return [ - node.key, - node.value - ]; - case UnaryExpression: - return [ - node.argument - ]; - case Identifier: - case Literal: - case RawCode: - default: - return []; + if (encode.xc) code += "o.x=o.xc-(o.width||0)/2;"; + if (encode.y2) { + if (encode.y) { + if (Swap[marktype]) code += "if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"; + code += "o.height=o.y2-o.y;"; + } else code += "o.y=o.y2-(o.height||0);"; } + if (encode.yc) code += "o.y=o.yc-(o.height||0)/2;"; + return code; } -/* - The following expression parser is based on Esprima (http://esprima.org/). - Original header comment and license for Esprima is included here: - - Copyright (C) 2013 Ariya Hidayat - Copyright (C) 2013 Thaddee Tyl - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ var TokenName, source, index, length, lookahead; -var TokenBooleanLiteral = 1, TokenEOF = 2, TokenIdentifier = 3, TokenKeyword = 4, TokenNullLiteral = 5, TokenNumericLiteral = 6, TokenPunctuator = 7, TokenStringLiteral = 8, TokenRegularExpression = 9; -TokenName = {}; -TokenName[TokenBooleanLiteral] = "Boolean"; -TokenName[TokenEOF] = ""; -TokenName[TokenIdentifier] = "Identifier"; -TokenName[TokenKeyword] = "Keyword"; -TokenName[TokenNullLiteral] = "Null"; -TokenName[TokenNumericLiteral] = "Numeric"; -TokenName[TokenPunctuator] = "Punctuator"; -TokenName[TokenStringLiteral] = "String"; -TokenName[TokenRegularExpression] = "RegularExpression"; -var SyntaxArrayExpression = "ArrayExpression", SyntaxBinaryExpression = "BinaryExpression", SyntaxCallExpression = "CallExpression", SyntaxConditionalExpression = "ConditionalExpression", SyntaxIdentifier = "Identifier", SyntaxLiteral = "Literal", SyntaxLogicalExpression = "LogicalExpression", SyntaxMemberExpression = "MemberExpression", SyntaxObjectExpression = "ObjectExpression", SyntaxProperty = "Property", SyntaxUnaryExpression = "UnaryExpression"; // Error messages should be identical to V8. -var MessageUnexpectedToken = "Unexpected token %0", MessageUnexpectedNumber = "Unexpected number", MessageUnexpectedString = "Unexpected string", MessageUnexpectedIdentifier = "Unexpected identifier", MessageUnexpectedReserved = "Unexpected reserved word", MessageUnexpectedEOS = "Unexpected end of input", MessageInvalidRegExp = "Invalid regular expression", MessageUnterminatedRegExp = "Invalid regular expression: missing /", MessageStrictOctalLiteral = "Octal literals are not allowed in strict mode.", MessageStrictDuplicateProperty = "Duplicate data property in object literal not allowed in strict mode"; -var ILLEGAL = "ILLEGAL", DISABLED = "Disabled."; // See also tools/generate-unicode-regex.py. -var RegexNonAsciiIdentifierStart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), // eslint-disable-next-line no-misleading-character-class -RegexNonAsciiIdentifierPart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"); // Ensure the condition is true, otherwise throw an error. -// This is only to have a better contract semantic, i.e. another safety net -// to catch a logic error. The condition shall be fulfilled in normal case. -// Do NOT use this to enforce a certain condition on any user input. -function assert(condition, message) { - /* istanbul ignore next */ if (!condition) throw new Error("ASSERT: " + message); +function canonicalType(type) { + return (type + "").toLowerCase(); } -function isDecimalDigit(ch) { - return ch >= 0x30 && ch <= 0x39; // 0..9 +function isOperator(type) { + return canonicalType(type) === "operator"; } -function isHexDigit(ch) { - return "0123456789abcdefABCDEF".indexOf(ch) >= 0; +function isCollect(type) { + return canonicalType(type) === "collect"; } -function isOctalDigit(ch) { - return "01234567".indexOf(ch) >= 0; -} // 7.2 White Space -function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [ - 0x1680, - 0x180E, - 0x2000, - 0x2001, - 0x2002, - 0x2003, - 0x2004, - 0x2005, - 0x2006, - 0x2007, - 0x2008, - 0x2009, - 0x200A, - 0x202F, - 0x205F, - 0x3000, - 0xFEFF - ].indexOf(ch) >= 0; -} // 7.3 Line Terminators -function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; -} // 7.6 Identifier Names and Identifiers -function isIdentifierStart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)); +function expression(ctx, args, code) { + // wrap code in return statement if expression does not terminate + if (code[code.length - 1] !== ";") code = "return(" + code + ");"; + const fn = Function(...args.concat(code)); + return ctx && ctx.functions ? fn.bind(ctx.functions) : fn; +} // generate code for comparing a single field +function _compare(u, v, lt, gt) { + return "((u = ".concat(u, ") < (v = ").concat(v, ") || u == null) && v != null ? ").concat(lt, "\n : (u > v || v == null) && u != null ? ").concat(gt, "\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ").concat(lt, "\n : v !== v && u === u ? ").concat(gt, " : "); } -function isIdentifierPart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch >= 0x30 && ch <= 0x39 || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)); -} // 7.6.1.1 Keywords -const keywords = { - "if": 1, - "in": 1, - "do": 1, - "var": 1, - "for": 1, - "new": 1, - "try": 1, - "let": 1, - "this": 1, - "else": 1, - "case": 1, - "void": 1, - "with": 1, - "enum": 1, - "while": 1, - "break": 1, - "catch": 1, - "throw": 1, - "const": 1, - "yield": 1, - "class": 1, - "super": 1, - "return": 1, - "typeof": 1, - "delete": 1, - "switch": 1, - "export": 1, - "import": 1, - "public": 1, - "static": 1, - "default": 1, - "finally": 1, - "extends": 1, - "package": 1, - "private": 1, - "function": 1, - "continue": 1, - "debugger": 1, - "interface": 1, - "protected": 1, - "instanceof": 1, - "implements": 1 -}; -function skipComment() { - while(index < length){ - const ch = source.charCodeAt(index); - if (isWhiteSpace(ch) || isLineTerminator(ch)) ++index; - else break; +var expressionCodegen = { + /** + * Parse an expression used to update an operator value. + */ operator: (ctx, expr)=>expression(ctx, [ + "_" + ], expr.code), + /** + * Parse an expression provided as an operator parameter value. + */ parameter: (ctx, expr)=>expression(ctx, [ + "datum", + "_" + ], expr.code), + /** + * Parse an expression applied to an event stream. + */ event: (ctx, expr)=>expression(ctx, [ + "event" + ], expr.code), + /** + * Parse an expression used to handle an event-driven operator update. + */ handler: (ctx, expr)=>{ + const code = "var datum=event.item&&event.item.datum;return ".concat(expr.code, ";"); + return expression(ctx, [ + "_", + "event" + ], code); + }, + /** + * Parse an expression that performs visual encoding. + */ encode: (ctx, encode)=>{ + const { marktype , channels } = encode; + let code = "var o=item,datum=o.datum,m=0,$;"; + for(const name in channels){ + const o = "o[" + (0, _vegaUtil.stringValue)(name) + "]"; + code += "$=".concat(channels[name].code, ";if(").concat(o, "!==$)").concat(o, "=$,m=1;"); + } + code += adjustSpatial(channels, marktype); + code += "return m;"; + return expression(ctx, [ + "item", + "_" + ], code); + }, + /** + * Optimized code generators for access and comparison. + */ codegen: { + get (path) { + const ref = "[".concat(path.map((0, _vegaUtil.stringValue)).join("]["), "]"); + const get = Function("_", "return _".concat(ref, ";")); + get.path = ref; + return get; + }, + comparator (fields, orders) { + let t; + const map = (f, i)=>{ + const o = orders[i]; + let u, v; + if (f.path) { + u = "a".concat(f.path); + v = "b".concat(f.path); + } else { + (t = t || {})["f" + i] = f; + u = "this.f".concat(i, "(a)"); + v = "this.f".concat(i, "(b)"); + } + return _compare(u, v, -o, o); + }; + const fn = Function("a", "b", "var u, v; return " + fields.map(map).join("") + "0;"); + return t ? fn.bind(t) : fn; + } } +}; +/** + * Parse a dataflow operator. + */ function parseOperator(spec) { + const ctx = this; + if (isOperator(spec.type) || !spec.type) ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null); + else ctx.transform(spec, spec.type); } -function scanHexEscape(prefix) { - var i, len, ch, code = 0; - len = prefix === "u" ? 4 : 2; - for(i = 0; i < len; ++i)if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); - } else throwError({}, MessageUnexpectedToken, ILLEGAL); - return String.fromCharCode(code); -} -function scanUnicodeCodePointEscape() { - var ch, code, cu1, cu2; - ch = source[index]; - code = 0; // At least, one hex digit is required. - if (ch === "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - while(index < length){ - ch = source[index++]; - if (!isHexDigit(ch)) break; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); +/** + * Parse and assign operator parameters. + */ function parseOperatorParameters(spec) { + const ctx = this; + if (spec.params) { + const op = ctx.get(spec.id); + if (!op) (0, _vegaUtil.error)("Invalid operator id: " + spec.id); + ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly)); } - if (code > 0x10FFFF || ch !== "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - // UTF-16 Encoding - if (code <= 0xFFFF) return String.fromCharCode(code); - cu1 = (code - 0x10000 >> 10) + 0xD800; - cu2 = (code - 0x10000 & 1023) + 0xDC00; - return String.fromCharCode(cu1, cu2); } -function getEscapedIdentifier() { - var ch, id; - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierStart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id = ch; +/** + * Parse a set of operator parameters. + */ function parseParameters(spec, params) { + params = params || {}; + const ctx = this; + for(const key in spec){ + const value = spec[key]; + params[key] = (0, _vegaUtil.isArray)(value) ? value.map((v)=>parseParameter(v, ctx, params)) : parseParameter(value, ctx, params); } - while(index < length){ - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) break; - ++index; - id += String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierPart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id += ch; - } + return params; +} +/** + * Parse a single parameter. + */ function parseParameter(spec, ctx, params) { + if (!spec || !(0, _vegaUtil.isObject)(spec)) return spec; + for(let i = 0, n = PARSERS.length, p; i < n; ++i){ + p = PARSERS[i]; + if ((0, _vegaUtil.hasOwnProperty)(spec, p.key)) return p.parse(spec, ctx, params); } - return id; + return spec; } -function getIdentifier() { - var start, ch; - start = index++; - while(index < length){ - ch = source.charCodeAt(index); - if (ch === 0x5C) { - // Blackslash (U+005C) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); - } - if (isIdentifierPart(ch)) ++index; - else break; +/** Reference parsers. */ var PARSERS = [ + { + key: "$ref", + parse: getOperator + }, + { + key: "$key", + parse: getKey + }, + { + key: "$expr", + parse: getExpression + }, + { + key: "$field", + parse: getField + }, + { + key: "$encode", + parse: getEncode + }, + { + key: "$compare", + parse: getCompare + }, + { + key: "$context", + parse: getContext + }, + { + key: "$subflow", + parse: getSubflow + }, + { + key: "$tupleid", + parse: getTupleId } - return source.slice(start, index); +]; +/** + * Resolve an operator reference. + */ function getOperator(_, ctx) { + return ctx.get(_.$ref) || (0, _vegaUtil.error)("Operator not defined: " + _.$ref); } -function scanIdentifier() { - var start, id, type; - start = index; // Backslash (U+005C) starts an escaped character. - id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) type = TokenIdentifier; - else if (keywords.hasOwnProperty(id)) // eslint-disable-line no-prototype-builtins - type = TokenKeyword; - else if (id === "null") type = TokenNullLiteral; - else if (id === "true" || id === "false") type = TokenBooleanLiteral; - else type = TokenIdentifier; - return { - type: type, - value: id, - start: start, - end: index - }; -} // 7.7 Punctuators -function scanPunctuator() { - var start = index, code = source.charCodeAt(index), code2, ch1 = source[index], ch2, ch3, ch4; - switch(code){ - // Check for most common single-character punctuators. - case 0x2E: - case 0x28: - case 0x29: - case 0x3B: - case 0x2C: - case 0x7B: - case 0x7D: - case 0x5B: - case 0x5D: - case 0x3A: - case 0x3F: - case 0x7E: - // ~ - ++index; - return { - type: TokenPunctuator, - value: String.fromCharCode(code), - start: start, - end: index - }; - default: - code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator. - if (code2 === 0x3D) switch(code){ - case 0x2B: - case 0x2D: - case 0x2F: - case 0x3C: - case 0x3E: - case 0x5E: - case 0x7C: - case 0x25: - case 0x26: - case 0x2A: - // * - index += 2; - return { - type: TokenPunctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - start: start, - end: index - }; - case 0x21: - case 0x3D: - // = - index += 2; // !== and === - if (source.charCodeAt(index) === 0x3D) ++index; - return { - type: TokenPunctuator, - value: source.slice(start, index), - start: start, - end: index - }; - } - } // 4-character punctuator: >>>= - ch4 = source.substr(index, 4); - if (ch4 === ">>>=") { - index += 4; - return { - type: TokenPunctuator, - value: ch4, - start: start, - end: index - }; - } // 3-character punctuators: === !== >>> <<= >>= - ch3 = ch4.substr(0, 3); - if (ch3 === ">>>" || ch3 === "<<=" || ch3 === ">>=") { - index += 3; - return { - type: TokenPunctuator, - value: ch3, - start: start, - end: index - }; - } // Other 2-character punctuators: ++ -- << >> && || - ch2 = ch3.substr(0, 2); - if (ch1 === ch2[1] && "+-<>&|".indexOf(ch1) >= 0 || ch2 === "=>") { - index += 2; - return { - type: TokenPunctuator, - value: ch2, - start: start, - end: index - }; - } - if (ch2 === "//") throwError({}, MessageUnexpectedToken, ILLEGAL); - // 1-character punctuators: < > = ! + - * % & | ^ / - if ("<>=!+-*%&|^/".indexOf(ch1) >= 0) { - ++index; - return { - type: TokenPunctuator, - value: ch1, - start: start, - end: index - }; - } - throwError({}, MessageUnexpectedToken, ILLEGAL); -} // 7.8.3 Numeric Literals -function scanHexLiteral(start) { - let number = ""; - while(index < length){ - if (!isHexDigit(source[index])) break; - number += source[index++]; - } - if (number.length === 0) throwError({}, MessageUnexpectedToken, ILLEGAL); - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt("0x" + number, 16), - start: start, - end: index - }; +/** + * Resolve an expression reference. + */ function getExpression(_, ctx, params) { + if (_.$params) // parse expression parameters + ctx.parseParameters(_.$params, params); + const k = "e:" + _.$expr.code + "_" + _.$name; + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.accessor)(ctx.parameterExpression(_.$expr), _.$fields, _.$name)); } -function scanOctalLiteral(start) { - let number = "0" + source[index++]; - while(index < length){ - if (!isOctalDigit(source[index])) break; - number += source[index++]; - } - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt(number, 8), - octal: true, - start: start, - end: index - }; +/** + * Resolve a key accessor reference. + */ function getKey(_, ctx) { + const k = "k:" + _.$key + "_" + !!_.$flat; + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.key)(_.$key, _.$flat, ctx.expr.codegen)); } -function scanNumericLiteral() { - var number, start, ch; - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || ch === ".", "Numeric literal must start with a decimal digit or a decimal point"); - start = index; - number = ""; - if (ch !== ".") { - number = source[index++]; - ch = source[index]; // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === "0") { - if (ch === "x" || ch === "X") { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) return scanOctalLiteral(start); - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - } - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === ".") { - number += source[index++]; - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === "e" || ch === "E") { - number += source[index++]; - ch = source[index]; - if (ch === "+" || ch === "-") number += source[index++]; - if (isDecimalDigit(source.charCodeAt(index))) while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - else throwError({}, MessageUnexpectedToken, ILLEGAL); - } - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseFloat(number), - start: start, - end: index - }; -} // 7.8.4 String Literals -function scanStringLiteral() { - var str = "", quote, start, ch, code, octal = false; - quote = source[index]; - assert(quote === "'" || quote === '"', "String literal must starts with a quote"); - start = index; - ++index; - while(index < length){ - ch = source[index++]; - if (ch === quote) { - quote = ""; - break; - } else if (ch === "\\") { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) switch(ch){ - case "u": - case "x": - if (source[index] === "{") { - ++index; - str += scanUnicodeCodePointEscape(); - } else str += scanHexEscape(ch); - break; - case "n": - str += "\n"; - break; - case "r": - str += "\r"; - break; - case "t": - str += " "; - break; - case "b": - str += "\b"; - break; - case "f": - str += "\f"; - break; - case "v": - str += "\v"; - break; - default: - if (isOctalDigit(ch)) { - code = "01234567".indexOf(ch); // \0 is not octal escape sequence - if (code !== 0) octal = true; - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + "01234567".indexOf(source[index++]); // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ("0123".indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) code = code * 8 + "01234567".indexOf(source[index++]); - } - str += String.fromCharCode(code); - } else str += ch; - break; - } - else if (ch === "\r" && source[index] === "\n") ++index; - } else if (isLineTerminator(ch.charCodeAt(0))) break; - else str += ch; - } - if (quote !== "") throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenStringLiteral, - value: str, - octal: octal, - start: start, - end: index - }; +/** + * Resolve a field accessor reference. + */ function getField(_, ctx) { + if (!_.$field) return null; + const k = "f:" + _.$field + "_" + _.$name; + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.field)(_.$field, _.$name, ctx.expr.codegen)); } -function testRegExp(pattern, flags) { - let tmp = pattern; - if (flags.indexOf("u") >= 0) // Replace each astral symbol and every Unicode code point - // escape sequence with a single ASCII symbol to avoid throwing on - // regular expressions that are only valid in combination with the - // `/u` flag. - // Note: replacing with the ASCII symbol `x` might cause false - // negatives in unlikely scenarios. For example, `[\u{61}-b]` is a - // perfectly valid pattern that is equivalent to `[a-b]`, but it - // would be replaced by `[x-b]` which throws an error. - tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g, ($0, $1)=>{ - if (parseInt($1, 16) <= 0x10FFFF) return "x"; - throwError({}, MessageInvalidRegExp); - }).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, "x"); - // First, detect invalid regular expressions. - try { - new RegExp(tmp); - } catch (e) { - throwError({}, MessageInvalidRegExp); - } // Return a regular expression object for this pattern-flag pair, or - // `null` in case the current environment doesn't support the flags it - // uses. - try { - return new RegExp(pattern, flags); - } catch (exception) { - return null; - } +/** + * Resolve a comparator function reference. + */ function getCompare(_, ctx) { + // As of Vega 5.5.3, $tupleid sort is no longer used. + // Keep here for now for backwards compatibility. + const k = "c:" + _.$compare + "_" + _.$order, c = (0, _vegaUtil.array)(_.$compare).map((_)=>_ && _.$tupleid ? (0, _vegaDataflow.tupleid) : _); + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.compare)(c, _.$order, ctx.expr.codegen)); } -function scanRegExpBody() { - var ch, str, classMarker, terminated, body; - ch = source[index]; - assert(ch === "/", "Regular expression literal must start with a slash"); - str = source[index++]; - classMarker = false; - terminated = false; - while(index < length){ - ch = source[index++]; - str += ch; - if (ch === "\\") { - ch = source[index++]; // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - str += ch; - } else if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - else if (classMarker) { - if (ch === "]") classMarker = false; - } else { - if (ch === "/") { - terminated = true; - break; - } else if (ch === "[") classMarker = true; - } +/** + * Resolve an encode operator reference. + */ function getEncode(_, ctx) { + const spec = _.$encode, encode = {}; + for(const name in spec){ + const enc = spec[name]; + encode[name] = (0, _vegaUtil.accessor)(ctx.encodeExpression(enc.$expr), enc.$fields); + encode[name].output = enc.$output; } - if (!terminated) throwError({}, MessageUnterminatedRegExp); - // Exclude leading and trailing slash. - body = str.substr(1, str.length - 2); - return { - value: body, - literal: str - }; + return encode; } -function scanRegExpFlags() { - var ch, str, flags; - str = ""; - flags = ""; - while(index < length){ - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) break; - ++index; - if (ch === "\\" && index < length) throwError({}, MessageUnexpectedToken, ILLEGAL); - else { - flags += ch; - str += ch; - } - } - if (flags.search(/[^gimuy]/g) >= 0) throwError({}, MessageInvalidRegExp, flags); - return { - value: flags, - literal: str - }; +/** + * Resolve a context reference. + */ function getContext(_, ctx) { + return ctx; } -function scanRegExp() { - var start, body, flags, value; - lookahead = null; - skipComment(); - start = index; - body = scanRegExpBody(); - flags = scanRegExpFlags(); - value = testRegExp(body.value, flags.value); - return { - literal: body.literal + flags.literal, - value: value, - regex: { - pattern: body.value, - flags: flags.value - }, - start: start, - end: index +/** + * Resolve a recursive subflow specification. + */ function getSubflow(_, ctx) { + const spec = _.$subflow; + return function(dataflow, key, parent) { + const subctx = ctx.fork().parse(spec), op = subctx.get(spec.operators[0].id), p = subctx.signals.parent; + if (p) p.set(parent); + op.detachSubflow = ()=>ctx.detach(subctx); + return op; }; } -function isIdentifierName(token) { - return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral; +/** + * Resolve a tuple id reference. + */ function getTupleId() { + return 0, _vegaDataflow.tupleid; } -function advance() { - skipComment(); - if (index >= length) return { - type: TokenEOF, - start: index, - end: index - }; - const ch = source.charCodeAt(index); - if (isIdentifierStart(ch)) return scanIdentifier(); - // Very common: ( and ) and ; - if (ch === 0x28 || ch === 0x29 || ch === 0x3B) return scanPunctuator(); - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (ch === 0x27 || ch === 0x22) return scanStringLiteral(); - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (ch === 0x2E) { - if (isDecimalDigit(source.charCodeAt(index + 1))) return scanNumericLiteral(); - return scanPunctuator(); +/** + * Parse an event stream specification. + */ function parseStream(spec) { + var ctx = this, filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined, stream = spec.stream != null ? ctx.get(spec.stream) : undefined, args; + if (spec.source) stream = ctx.events(spec.source, spec.type, filter); + else if (spec.merge) { + args = spec.merge.map((_)=>ctx.get(_)); + stream = args[0].merge.apply(args[0], args.slice(1)); } - if (isDecimalDigit(ch)) return scanNumericLiteral(); - return scanPunctuator(); -} -function lex() { - const token = lookahead; - index = token.end; - lookahead = advance(); - index = token.end; - return token; -} -function peek() { - const pos = index; - lookahead = advance(); - index = pos; -} -function finishArrayExpression(elements) { - const node = new ASTNode(SyntaxArrayExpression); - node.elements = elements; - return node; + if (spec.between) { + args = spec.between.map((_)=>ctx.get(_)); + stream = stream.between(args[0], args[1]); + } + if (spec.filter) stream = stream.filter(filter); + if (spec.throttle != null) stream = stream.throttle(+spec.throttle); + if (spec.debounce != null) stream = stream.debounce(+spec.debounce); + if (stream == null) (0, _vegaUtil.error)("Invalid stream definition: " + JSON.stringify(spec)); + if (spec.consume) stream.consume(true); + ctx.stream(spec, stream); } -function finishBinaryExpression(operator, left, right) { - const node = new ASTNode(operator === "||" || operator === "&&" ? SyntaxLogicalExpression : SyntaxBinaryExpression); - node.operator = operator; - node.left = left; - node.right = right; - return node; +/** + * Parse an event-driven operator update. + */ function parseUpdate(spec) { + var ctx = this, srcid = (0, _vegaUtil.isObject)(srcid = spec.source) ? srcid.$ref : srcid, source = ctx.get(srcid), target = null, update = spec.update, params = undefined; + if (!source) (0, _vegaUtil.error)("Source not defined: " + spec.source); + target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target); + if (update && update.$expr) { + if (update.$params) params = ctx.parseParameters(update.$params); + update = ctx.handlerExpression(update.$expr); + } + ctx.update(spec, source, target, update, params); } -function finishCallExpression(callee, args) { - const node = new ASTNode(SyntaxCallExpression); - node.callee = callee; - node.arguments = args; - return node; +const SKIP = { + skip: true +}; +function getState(options) { + var ctx = this, state = {}; + if (options.signals) { + var signals = state.signals = {}; + Object.keys(ctx.signals).forEach((key)=>{ + const op = ctx.signals[key]; + if (options.signals(key, op)) signals[key] = op.value; + }); + } + if (options.data) { + var data = state.data = {}; + Object.keys(ctx.data).forEach((key)=>{ + const dataset = ctx.data[key]; + if (options.data(key, dataset)) data[key] = dataset.input.value; + }); + } + if (ctx.subcontext && options.recurse !== false) state.subcontext = ctx.subcontext.map((ctx)=>ctx.getState(options)); + return state; } -function finishConditionalExpression(test, consequent, alternate) { - const node = new ASTNode(SyntaxConditionalExpression); - node.test = test; - node.consequent = consequent; - node.alternate = alternate; - return node; +function setState(state) { + var ctx = this, df = ctx.dataflow, data = state.data, signals = state.signals; + Object.keys(signals || {}).forEach((key)=>{ + df.update(ctx.signals[key], signals[key], SKIP); + }); + Object.keys(data || {}).forEach((key)=>{ + df.pulse(ctx.data[key].input, df.changeset().remove((0, _vegaUtil.truthy)).insert(data[key])); + }); + (state.subcontext || []).forEach((substate, i)=>{ + const subctx = ctx.subcontext[i]; + if (subctx) subctx.setState(substate); + }); } -function finishIdentifier(name) { - const node = new ASTNode(SyntaxIdentifier); - node.name = name; - return node; +/** + * Context objects store the current parse state. + * Enables lookup of parsed operators, event streams, accessors, etc. + * Provides a 'fork' method for creating child contexts for subflows. + */ function context(df, transforms, functions, expr) { + return new Context(df, transforms, functions, expr); } -function finishLiteral(token) { - const node = new ASTNode(SyntaxLiteral); - node.value = token.value; - node.raw = source.slice(token.start, token.end); - if (token.regex) { - if (node.raw === "//") node.raw = "/(?:)/"; - node.regex = token.regex; +function Context(df, transforms, functions, expr) { + this.dataflow = df; + this.transforms = transforms; + this.events = df.events.bind(df); + this.expr = expr || expressionCodegen, this.signals = {}; + this.scales = {}; + this.nodes = {}; + this.data = {}; + this.fn = {}; + if (functions) { + this.functions = Object.create(functions); + this.functions.context = this; } - return node; -} -function finishMemberExpression(accessor, object, property) { - const node = new ASTNode(SyntaxMemberExpression); - node.computed = accessor === "["; - node.object = object; - node.property = property; - if (!node.computed) property.member = true; - return node; } -function finishObjectExpression(properties) { - const node = new ASTNode(SyntaxObjectExpression); - node.properties = properties; - return node; +function Subcontext(ctx) { + this.dataflow = ctx.dataflow; + this.transforms = ctx.transforms; + this.events = ctx.events; + this.expr = ctx.expr; + this.signals = Object.create(ctx.signals); + this.scales = Object.create(ctx.scales); + this.nodes = Object.create(ctx.nodes); + this.data = Object.create(ctx.data); + this.fn = Object.create(ctx.fn); + if (ctx.functions) { + this.functions = Object.create(ctx.functions); + this.functions.context = this; + } } -function finishProperty(kind, key, value) { - const node = new ASTNode(SyntaxProperty); - node.key = key; - node.value = value; - node.kind = kind; - return node; +Context.prototype = Subcontext.prototype = { + fork () { + const ctx = new Subcontext(this); + (this.subcontext || (this.subcontext = [])).push(ctx); + return ctx; + }, + detach (ctx) { + this.subcontext = this.subcontext.filter((c)=>c !== ctx); // disconnect all nodes in the subcontext + // wipe out targets first for better efficiency + const keys = Object.keys(ctx.nodes); + for (const key of keys)ctx.nodes[key]._targets = null; + for (const key1 of keys)ctx.nodes[key1].detach(); + ctx.nodes = null; + }, + get (id) { + return this.nodes[id]; + }, + set (id, node) { + return this.nodes[id] = node; + }, + add (spec, op) { + const ctx = this, df = ctx.dataflow, data = spec.value; + ctx.set(spec.id, op); + if (isCollect(spec.type) && data) { + if (data.$ingest) df.ingest(op, data.$ingest, data.$format); + else if (data.$request) df.preload(op, data.$request, data.$format); + else df.pulse(op, df.changeset().insert(data)); + } + if (spec.root) ctx.root = op; + if (spec.parent) { + let p = ctx.get(spec.parent.$ref); + if (p) { + df.connect(p, [ + op + ]); + op.targets().add(p); + } else (ctx.unresolved = ctx.unresolved || []).push(()=>{ + p = ctx.get(spec.parent.$ref); + df.connect(p, [ + op + ]); + op.targets().add(p); + }); + } + if (spec.signal) ctx.signals[spec.signal] = op; + if (spec.scale) ctx.scales[spec.scale] = op; + if (spec.data) for(const name in spec.data){ + const data1 = ctx.data[name] || (ctx.data[name] = {}); + spec.data[name].forEach((role)=>data1[role] = op); + } + }, + resolve () { + (this.unresolved || []).forEach((fn)=>fn()); + delete this.unresolved; + return this; + }, + operator (spec, update) { + this.add(spec, this.dataflow.add(spec.value, update)); + }, + transform (spec, type) { + this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)])); + }, + stream (spec, stream) { + this.set(spec.id, stream); + }, + update (spec, stream, target, update, params) { + this.dataflow.on(stream, target, update, params, spec.options); + }, + // expression parsing + operatorExpression (expr) { + return this.expr.operator(this, expr); + }, + parameterExpression (expr) { + return this.expr.parameter(this, expr); + }, + eventExpression (expr) { + return this.expr.event(this, expr); + }, + handlerExpression (expr) { + return this.expr.handler(this, expr); + }, + encodeExpression (encode) { + return this.expr.encode(this, encode); + }, + // parse methods + parse, + parseOperator, + parseOperatorParameters, + parseParameters, + parseStream, + parseUpdate, + // state methods + getState, + setState +}; + +},{"vega-util":"dPFAY","vega-dataflow":"4kvYg","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"irqWQ":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "AxisDomainRole", ()=>AxisDomainRole); +parcelHelpers.export(exports, "AxisGridRole", ()=>AxisGridRole); +parcelHelpers.export(exports, "AxisLabelRole", ()=>AxisLabelRole); +parcelHelpers.export(exports, "AxisRole", ()=>AxisRole); +parcelHelpers.export(exports, "AxisTickRole", ()=>AxisTickRole); +parcelHelpers.export(exports, "AxisTitleRole", ()=>AxisTitleRole); +parcelHelpers.export(exports, "DataScope", ()=>DataScope); +parcelHelpers.export(exports, "FrameRole", ()=>FrameRole); +parcelHelpers.export(exports, "LegendEntryRole", ()=>LegendEntryRole); +parcelHelpers.export(exports, "LegendLabelRole", ()=>LegendLabelRole); +parcelHelpers.export(exports, "LegendRole", ()=>LegendRole); +parcelHelpers.export(exports, "LegendSymbolRole", ()=>LegendSymbolRole); +parcelHelpers.export(exports, "LegendTitleRole", ()=>LegendTitleRole); +parcelHelpers.export(exports, "MarkRole", ()=>MarkRole); +parcelHelpers.export(exports, "Scope", ()=>Scope); +parcelHelpers.export(exports, "ScopeRole", ()=>ScopeRole); +parcelHelpers.export(exports, "config", ()=>defaults); +parcelHelpers.export(exports, "parse", ()=>parse); +parcelHelpers.export(exports, "signal", ()=>parseSignal); +parcelHelpers.export(exports, "signalUpdates", ()=>parseSignalUpdates); +parcelHelpers.export(exports, "stream", ()=>parseStream); +var _vegaUtil = require("vega-util"); +var _vegaFunctions = require("vega-functions"); +var _vegaEventSelector = require("vega-event-selector"); +var _vegaScale = require("vega-scale"); +var _vegaDataflow = require("vega-dataflow"); +function parseAutosize(spec) { + return (0, _vegaUtil.isObject)(spec) ? spec : { + type: spec || "pad" + }; } -function finishUnaryExpression(operator, argument) { - const node = new ASTNode(SyntaxUnaryExpression); - node.operator = operator; - node.argument = argument; - node.prefix = true; - return node; -} // Throw an exception -function throwError(token, messageFormat) { - var error, args = Array.prototype.slice.call(arguments, 2), msg = messageFormat.replace(/%(\d)/g, (whole, index)=>{ - assert(index < args.length, "Message reference must be in range"); - return args[index]; +const number = (_)=>+_ || 0; +const paddingObject = (_)=>({ + top: _, + bottom: _, + left: _, + right: _ }); - error = new Error(msg); - error.index = index; - error.description = msg; - throw error; -} // Throw an exception because of the token. -function throwUnexpected(token) { - if (token.type === TokenEOF) throwError(token, MessageUnexpectedEOS); - if (token.type === TokenNumericLiteral) throwError(token, MessageUnexpectedNumber); - if (token.type === TokenStringLiteral) throwError(token, MessageUnexpectedString); - if (token.type === TokenIdentifier) throwError(token, MessageUnexpectedIdentifier); - if (token.type === TokenKeyword) throwError(token, MessageUnexpectedReserved); - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, MessageUnexpectedToken, token.value); -} // Expect the next token to match the specified punctuator. -// If not, an exception will be thrown. -function expect(value) { - const token = lex(); - if (token.type !== TokenPunctuator || token.value !== value) throwUnexpected(token); -} // Return true if the next token matches the specified punctuator. -function match(value) { - return lookahead.type === TokenPunctuator && lookahead.value === value; -} // Return true if the next token matches the specified keyword -function matchKeyword(keyword) { - return lookahead.type === TokenKeyword && lookahead.value === keyword; -} // 11.1.4 Array Initialiser -function parseArrayInitialiser() { - const elements = []; - index = lookahead.start; - expect("["); - while(!match("]"))if (match(",")) { - lex(); - elements.push(null); - } else { - elements.push(parseConditionalExpression()); - if (!match("]")) expect(","); - } - lex(); - return finishArrayExpression(elements); -} // 11.1.5 Object Initialiser -function parseObjectPropertyKey() { - index = lookahead.start; - const token = lex(); // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) { - if (token.octal) throwError(token, MessageStrictOctalLiteral); - return finishLiteral(token); - } - return finishIdentifier(token.value); +function parsePadding(spec) { + return !(0, _vegaUtil.isObject)(spec) ? paddingObject(number(spec)) : spec.signal ? spec : { + top: number(spec.top), + bottom: number(spec.bottom), + left: number(spec.left), + right: number(spec.right) + }; } -function parseObjectProperty() { - var token, key, id, value; - index = lookahead.start; - token = lookahead; - if (token.type === TokenIdentifier) { - id = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", id, value); - } - if (token.type === TokenEOF || token.type === TokenPunctuator) throwUnexpected(token); - else { - key = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", key, value); - } +const encoder = (_)=>(0, _vegaUtil.isObject)(_) && !(0, _vegaUtil.isArray)(_) ? (0, _vegaUtil.extend)({}, _) : { + value: _ + }; +function addEncode(object, name, value, set) { + if (value != null) { + const isEncoder = (0, _vegaUtil.isObject)(value) && !(0, _vegaUtil.isArray)(value) || (0, _vegaUtil.isArray)(value) && value.length && (0, _vegaUtil.isObject)(value[0]); // Always assign signal to update, even if the signal is from the enter block + if (isEncoder) object.update[name] = value; + else object[set || "enter"][name] = { + value: value + }; + return 1; + } else return 0; } -function parseObjectInitialiser() { - var properties = [], property, name, key, map = {}, toString = String; - index = lookahead.start; - expect("{"); - while(!match("}")){ - property = parseObjectProperty(); - if (property.key.type === SyntaxIdentifier) name = property.key.name; - else name = toString(property.key.value); - key = "$" + name; - if (Object.prototype.hasOwnProperty.call(map, key)) throwError({}, MessageStrictDuplicateProperty); - else map[key] = true; - properties.push(property); - if (!match("}")) expect(","); +function addEncoders(object, enter, update) { + for(const name in enter)addEncode(object, name, enter[name]); + for(const name1 in update)addEncode(object, name1, update[name1], "update"); +} +function extendEncode(encode, extra, skip) { + for(const name in extra){ + if (skip && (0, _vegaUtil.hasOwnProperty)(skip, name)) continue; + encode[name] = (0, _vegaUtil.extend)(encode[name] || {}, extra[name]); } - expect("}"); - return finishObjectExpression(properties); -} // 11.1.6 The Grouping Operator -function parseGroupExpression() { - expect("("); - const expr = parseExpression(); - expect(")"); - return expr; -} // 11.1 Primary Expressions -const legalKeywords = { - "if": 1 -}; -function parsePrimaryExpression() { - var type, token, expr; - if (match("(")) return parseGroupExpression(); - if (match("[")) return parseArrayInitialiser(); - if (match("{")) return parseObjectInitialiser(); - type = lookahead.type; - index = lookahead.start; - if (type === TokenIdentifier || legalKeywords[lookahead.value]) expr = finishIdentifier(lex().value); - else if (type === TokenStringLiteral || type === TokenNumericLiteral) { - if (lookahead.octal) throwError(lookahead, MessageStrictOctalLiteral); - expr = finishLiteral(lex()); - } else if (type === TokenKeyword) throw new Error(DISABLED); - else if (type === TokenBooleanLiteral) { - token = lex(); - token.value = token.value === "true"; - expr = finishLiteral(token); - } else if (type === TokenNullLiteral) { - token = lex(); - token.value = null; - expr = finishLiteral(token); - } else if (match("/") || match("/=")) { - expr = finishLiteral(scanRegExp()); - peek(); - } else throwUnexpected(lex()); - return expr; -} // 11.2 Left-Hand-Side Expressions -function parseArguments() { - const args = []; - expect("("); - if (!match(")")) while(index < length){ - args.push(parseConditionalExpression()); - if (match(")")) break; - expect(","); + return encode; +} +function has(key, encode) { + return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]); +} +const MarkRole = "mark"; +const FrameRole = "frame"; +const ScopeRole = "scope"; +const AxisRole = "axis"; +const AxisDomainRole = "axis-domain"; +const AxisGridRole = "axis-grid"; +const AxisLabelRole = "axis-label"; +const AxisTickRole = "axis-tick"; +const AxisTitleRole = "axis-title"; +const LegendRole = "legend"; +const LegendBandRole = "legend-band"; +const LegendEntryRole = "legend-entry"; +const LegendGradientRole = "legend-gradient"; +const LegendLabelRole = "legend-label"; +const LegendSymbolRole = "legend-symbol"; +const LegendTitleRole = "legend-title"; +const TitleRole = "title"; +const TitleTextRole = "title-text"; +const TitleSubtitleRole = "title-subtitle"; +function applyDefaults(encode, type, role, style, config) { + const defaults = {}, enter = {}; + let update, key, skip, props; // if text mark, apply global lineBreak settings (#2370) + key = "lineBreak"; + if (type === "text" && config[key] != null && !has(key, encode)) applyDefault(defaults, key, config[key]); + // ignore legend and axis roles + if (role == "legend" || String(role).startsWith("axis")) role = null; + // resolve mark config + props = role === FrameRole ? config.group : role === MarkRole ? (0, _vegaUtil.extend)({}, config.mark, config[type]) : null; + for(key in props){ + // do not apply defaults if relevant fields are defined + skip = has(key, encode) || (key === "fill" || key === "stroke") && (has("fill", encode) || has("stroke", encode)); + if (!skip) applyDefault(defaults, key, props[key]); + } // resolve styles, apply with increasing precedence + (0, _vegaUtil.array)(style).forEach((name)=>{ + const props = config.style && config.style[name]; + for(const key in props)if (!has(key, encode)) applyDefault(defaults, key, props[key]); + }); + encode = (0, _vegaUtil.extend)({}, encode); // defensive copy + for(key in defaults){ + props = defaults[key]; + if (props.signal) (update = update || {})[key] = props; + else enter[key] = props; } - expect(")"); - return args; + encode.enter = (0, _vegaUtil.extend)(enter, encode.enter); + if (update) encode.update = (0, _vegaUtil.extend)(update, encode.update); + return encode; } -function parseNonComputedProperty() { - index = lookahead.start; - const token = lex(); - if (!isIdentifierName(token)) throwUnexpected(token); - return finishIdentifier(token.value); +function applyDefault(defaults, key, value) { + defaults[key] = value && value.signal ? { + signal: value.signal + } : { + value: value + }; } -function parseNonComputedMember() { - expect("."); - return parseNonComputedProperty(); +const scaleRef = (scale)=>(0, _vegaUtil.isString)(scale) ? (0, _vegaUtil.stringValue)(scale) : scale.signal ? `(${scale.signal})` : field(scale); +function entry$1(enc) { + if (enc.gradient != null) return gradient(enc); + let value = enc.signal ? `(${enc.signal})` : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? (0, _vegaUtil.stringValue)(enc.value) : undefined; + if (enc.scale != null) value = scale(enc, value); + if (value === undefined) value = null; + if (enc.exponent != null) value = `pow(${value},${property(enc.exponent)})`; + if (enc.mult != null) value += `*${property(enc.mult)}`; + if (enc.offset != null) value += `+${property(enc.offset)}`; + if (enc.round) value = `round(${value})`; + return value; } -function parseComputedMember() { - expect("["); - const expr = parseExpression(); - expect("]"); - return expr; +const _color = (type, x, y, z)=>`(${type}(${[ + x, + y, + z + ].map(entry$1).join(",")})+'')`; +function color(enc) { + return enc.c ? _color("hcl", enc.h, enc.c, enc.l) : enc.h || enc.s ? _color("hsl", enc.h, enc.s, enc.l) : enc.l || enc.a ? _color("lab", enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color("rgb", enc.r, enc.g, enc.b) : null; } -function parseLeftHandSideExpressionAllowCall() { - var expr, args, property; - expr = parsePrimaryExpression(); - for(;;){ - if (match(".")) { - property = parseNonComputedMember(); - expr = finishMemberExpression(".", expr, property); - } else if (match("(")) { - args = parseArguments(); - expr = finishCallExpression(expr, args); - } else if (match("[")) { - property = parseComputedMember(); - expr = finishMemberExpression("[", expr, property); - } else break; - } - return expr; -} // 11.3 Postfix Expressions -function parsePostfixExpression() { - const expr = parseLeftHandSideExpressionAllowCall(); - if (lookahead.type === TokenPunctuator) { - if (match("++") || match("--")) throw new Error(DISABLED); +function gradient(enc) { + // map undefined to null; expression lang does not allow undefined + const args = [ + enc.start, + enc.stop, + enc.count + ].map((_)=>_ == null ? null : (0, _vegaUtil.stringValue)(_)); // trim null inputs from the end + while(args.length && (0, _vegaUtil.peek)(args) == null)args.pop(); + args.unshift(scaleRef(enc.gradient)); + return `gradient(${args.join(",")})`; +} +function property(property) { + return (0, _vegaUtil.isObject)(property) ? "(" + entry$1(property) + ")" : property; +} +function field(ref) { + return resolveField((0, _vegaUtil.isObject)(ref) ? ref : { + datum: ref + }); +} +function resolveField(ref) { + let object, level, field; + if (ref.signal) { + object = "datum"; + field = ref.signal; + } else if (ref.group || ref.parent) { + level = Math.max(1, ref.level || 1); + object = "item"; + while(level-- > 0)object += ".mark.group"; + if (ref.parent) { + field = ref.parent; + object += ".datum"; + } else field = ref.group; + } else if (ref.datum) { + object = "datum"; + field = ref.datum; + } else (0, _vegaUtil.error)("Invalid field reference: " + (0, _vegaUtil.stringValue)(ref)); + if (!ref.signal) field = (0, _vegaUtil.isString)(field) ? (0, _vegaUtil.splitAccessPath)(field).map((0, _vegaUtil.stringValue)).join("][") : resolveField(field); + return object + "[" + field + "]"; +} +function scale(enc, value) { + const scale = scaleRef(enc.scale); + if (enc.range != null) // pull value from scale range + value = `lerp(_range(${scale}), ${+enc.range})`; + else { + // run value through scale and/or pull scale bandwidth + if (value !== undefined) value = `_scale(${scale}, ${value})`; + if (enc.band) { + value = (value ? value + "+" : "") + `_bandwidth(${scale})` + (+enc.band === 1 ? "" : "*" + property(enc.band)); + if (enc.extra) // include logic to handle extraneous elements + value = `(datum.extra ? _scale(${scale}, datum.extra.value) : ${value})`; + } + if (value == null) value = "0"; } - return expr; -} // 11.4 Unary Operators -function parseUnaryExpression() { - var token, expr; - if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) expr = parsePostfixExpression(); - else if (match("++") || match("--")) throw new Error(DISABLED); - else if (match("+") || match("-") || match("~") || match("!")) { - token = lex(); - expr = parseUnaryExpression(); - expr = finishUnaryExpression(token.value, expr); - } else if (matchKeyword("delete") || matchKeyword("void") || matchKeyword("typeof")) throw new Error(DISABLED); - else expr = parsePostfixExpression(); - return expr; + return value; } -function binaryPrecedence(token) { - let prec = 0; - if (token.type !== TokenPunctuator && token.type !== TokenKeyword) return 0; - switch(token.value){ - case "||": - prec = 1; - break; - case "&&": - prec = 2; - break; - case "|": - prec = 3; - break; - case "^": - prec = 4; - break; - case "&": - prec = 5; - break; - case "==": - case "!=": - case "===": - case "!==": - prec = 6; - break; - case "<": - case ">": - case "<=": - case ">=": - case "instanceof": - case "in": - prec = 7; - break; - case "<<": - case ">>": - case ">>>": - prec = 8; - break; - case "+": - case "-": - prec = 9; - break; - case "*": - case "/": - case "%": - prec = 11; - break; - } - return prec; -} // 11.5 Multiplicative Operators -// 11.6 Additive Operators -// 11.7 Bitwise Shift Operators -// 11.8 Relational Operators -// 11.9 Equality Operators -// 11.10 Binary Bitwise Operators -// 11.11 Binary Logical Operators -function parseBinaryExpression() { - var marker, markers, expr, token, prec, stack, right, operator, left, i; - marker = lookahead; - left = parseUnaryExpression(); - token = lookahead; - prec = binaryPrecedence(token); - if (prec === 0) return left; - token.prec = prec; - lex(); - markers = [ - marker, - lookahead - ]; - right = parseUnaryExpression(); - stack = [ - left, - token, - right - ]; - while((prec = binaryPrecedence(lookahead)) > 0){ - // Reduce: make a binary expression from the three topmost entries. - while(stack.length > 2 && prec <= stack[stack.length - 2].prec){ - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - markers.pop(); - expr = finishBinaryExpression(operator, left, right); - stack.push(expr); - } // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - markers.push(lookahead); - expr = parseUnaryExpression(); - stack.push(expr); - } // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - markers.pop(); - while(i > 1){ - markers.pop(); - expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - } - return expr; -} // 11.12 Conditional Operator -function parseConditionalExpression() { - var expr, consequent, alternate; - expr = parseBinaryExpression(); - if (match("?")) { - lex(); - consequent = parseConditionalExpression(); - expect(":"); - alternate = parseConditionalExpression(); - expr = finishConditionalExpression(expr, consequent, alternate); - } - return expr; -} // 11.14 Comma Operator -function parseExpression() { - const expr = parseConditionalExpression(); - if (match(",")) throw new Error(DISABLED); // no sequence expressions - return expr; +function rule(enc) { + let code = ""; + enc.forEach((rule)=>{ + const value = entry$1(rule); + code += rule.test ? `(${rule.test})?${value}:` : value; + }); // if no else clause, terminate with null (#1366) + if ((0, _vegaUtil.peek)(code) === ":") code += "null"; + return code; } -function parser(code) { - source = code; - index = 0; - length = source.length; - lookahead = null; - peek(); - const expr = parseExpression(); - if (lookahead.type !== TokenEOF) throw new Error("Unexpect token after expression."); - return expr; +function parseEncode(encode, type, role, style, scope, params) { + const enc = {}; + params = params || {}; + params.encoders = { + $encode: enc + }; + encode = applyDefaults(encode, type, role, style, scope.config); + for(const key in encode)enc[key] = parseBlock(encode[key], type, params, scope); + return params; } -var Constants = { - NaN: "NaN", - E: "Math.E", - LN2: "Math.LN2", - LN10: "Math.LN10", - LOG2E: "Math.LOG2E", - LOG10E: "Math.LOG10E", - PI: "Math.PI", - SQRT1_2: "Math.SQRT1_2", - SQRT2: "Math.SQRT2", - MIN_VALUE: "Number.MIN_VALUE", - MAX_VALUE: "Number.MAX_VALUE" -}; -function Functions(codegen) { - function fncall(name, args, cast, type) { - let obj = codegen(args[0]); - if (cast) { - obj = cast + "(" + obj + ")"; - if (cast.lastIndexOf("new ", 0) === 0) obj = "(" + obj + ")"; - } - return obj + "." + name + (type < 0 ? "" : type === 0 ? "()" : "(" + args.slice(1).map(codegen).join(",") + ")"); - } - function fn(name, cast, type) { - return (args)=>fncall(name, args, cast, type); - } - const DATE = "new Date", STRING = "String", REGEXP = "RegExp"; +function parseBlock(block, marktype, params, scope) { + const channels = {}, fields = {}; + for(const name in block)if (block[name] != null) // skip any null entries + channels[name] = parse$1(expr(block[name]), scope, params, fields); return { - // MATH functions - isNaN: "Number.isNaN", - isFinite: "Number.isFinite", - abs: "Math.abs", - acos: "Math.acos", - asin: "Math.asin", - atan: "Math.atan", - atan2: "Math.atan2", - ceil: "Math.ceil", - cos: "Math.cos", - exp: "Math.exp", - floor: "Math.floor", - log: "Math.log", - max: "Math.max", - min: "Math.min", - pow: "Math.pow", - random: "Math.random", - round: "Math.round", - sin: "Math.sin", - sqrt: "Math.sqrt", - tan: "Math.tan", - clamp: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to clamp function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to clamp function."); - const a = args.map(codegen); - return "Math.max(" + a[1] + ", Math.min(" + a[2] + "," + a[0] + "))"; + $expr: { + marktype, + channels }, - // DATE functions - now: "Date.now", - utc: "Date.UTC", - datetime: DATE, - date: fn("getDate", DATE, 0), - day: fn("getDay", DATE, 0), - year: fn("getFullYear", DATE, 0), - month: fn("getMonth", DATE, 0), - hours: fn("getHours", DATE, 0), - minutes: fn("getMinutes", DATE, 0), - seconds: fn("getSeconds", DATE, 0), - milliseconds: fn("getMilliseconds", DATE, 0), - time: fn("getTime", DATE, 0), - timezoneoffset: fn("getTimezoneOffset", DATE, 0), - utcdate: fn("getUTCDate", DATE, 0), - utcday: fn("getUTCDay", DATE, 0), - utcyear: fn("getUTCFullYear", DATE, 0), - utcmonth: fn("getUTCMonth", DATE, 0), - utchours: fn("getUTCHours", DATE, 0), - utcminutes: fn("getUTCMinutes", DATE, 0), - utcseconds: fn("getUTCSeconds", DATE, 0), - utcmilliseconds: fn("getUTCMilliseconds", DATE, 0), - // sequence functions - length: fn("length", null, -1), - // STRING functions - parseFloat: "parseFloat", - parseInt: "parseInt", - upper: fn("toUpperCase", STRING, 0), - lower: fn("toLowerCase", STRING, 0), - substring: fn("substring", STRING), - split: fn("split", STRING), - trim: fn("trim", STRING, 0), - // REGEXP functions - regexp: REGEXP, - test: fn("test", REGEXP), - // Control Flow functions - if: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to if function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to if function."); - const a = args.map(codegen); - return "(" + a[0] + "?" + a[1] + ":" + a[2] + ")"; - } + $fields: Object.keys(fields), + $output: Object.keys(block) }; } -function stripQuotes(s) { - const n = s && s.length - 1; - return n && (s[0] === '"' && s[n] === '"' || s[0] === "'" && s[n] === "'") ? s.slice(1, -1) : s; +function expr(enc) { + return (0, _vegaUtil.isArray)(enc) ? rule(enc) : entry$1(enc); } -function codegen(opt) { - opt = opt || {}; - const allowed = opt.allowed ? (0, _vegaUtil.toSet)(opt.allowed) : {}, forbidden = opt.forbidden ? (0, _vegaUtil.toSet)(opt.forbidden) : {}, constants = opt.constants || Constants, functions = (opt.functions || Functions)(visit), globalvar = opt.globalvar, fieldvar = opt.fieldvar, outputGlobal = (0, _vegaUtil.isFunction)(globalvar) ? globalvar : (id)=>`${globalvar}["${id}"]`; - let globals = {}, fields = {}, memberDepth = 0; - function visit(ast) { - if ((0, _vegaUtil.isString)(ast)) return ast; - const generator = Generators[ast.type]; - if (generator == null) (0, _vegaUtil.error)("Unsupported type: " + ast.type); - return generator(ast); +function parse$1(code, scope, params, fields) { + const expr = (0, _vegaFunctions.parseExpression)(code, scope); + expr.$fields.forEach((name)=>fields[name] = 1); + (0, _vegaUtil.extend)(params, expr.$params); + return expr.$expr; +} +const OUTER = "outer", OUTER_INVALID = [ + "value", + "update", + "init", + "react", + "bind" +]; +function outerError(prefix, name) { + (0, _vegaUtil.error)(prefix + ' for "outer" push: ' + (0, _vegaUtil.stringValue)(name)); +} +function parseSignal(signal, scope) { + const name = signal.name; + if (signal.push === OUTER) { + // signal must already be defined, raise error if not + if (!scope.signals[name]) outerError("No prior signal definition", name); // signal push must not use properties reserved for standard definition + OUTER_INVALID.forEach((prop)=>{ + if (signal[prop] !== undefined) outerError("Invalid property ", prop); + }); + } else { + // define a new signal in the current scope + const op = scope.addSignal(name, signal.value); + if (signal.react === false) op.react = false; + if (signal.bind) scope.addBinding(name, signal.bind); } - const Generators = { - Literal: (n)=>n.raw, - Identifier: (n)=>{ - const id = n.name; - if (memberDepth > 0) return id; - else if ((0, _vegaUtil.hasOwnProperty)(forbidden, id)) return (0, _vegaUtil.error)("Illegal identifier: " + id); - else if ((0, _vegaUtil.hasOwnProperty)(constants, id)) return constants[id]; - else if ((0, _vegaUtil.hasOwnProperty)(allowed, id)) return id; - else { - globals[id] = 1; - return outputGlobal(id); - } - }, - MemberExpression: (n)=>{ - const d = !n.computed, o = visit(n.object); - if (d) memberDepth += 1; - const p = visit(n.property); - if (o === fieldvar) // strip quotes to sanitize field name (#1653) - fields[stripQuotes(p)] = 1; - if (d) memberDepth -= 1; - return o + (d ? "." + p : "[" + p + "]"); - }, - CallExpression: (n)=>{ - if (n.callee.type !== "Identifier") (0, _vegaUtil.error)("Illegal callee type: " + n.callee.type); - const callee = n.callee.name, args = n.arguments, fn = (0, _vegaUtil.hasOwnProperty)(functions, callee) && functions[callee]; - if (!fn) (0, _vegaUtil.error)("Unrecognized function: " + callee); - return (0, _vegaUtil.isFunction)(fn) ? fn(args) : fn + "(" + args.map(visit).join(",") + ")"; - }, - ArrayExpression: (n)=>"[" + n.elements.map(visit).join(",") + "]", - BinaryExpression: (n)=>"(" + visit(n.left) + " " + n.operator + " " + visit(n.right) + ")", - UnaryExpression: (n)=>"(" + n.operator + visit(n.argument) + ")", - ConditionalExpression: (n)=>"(" + visit(n.test) + "?" + visit(n.consequent) + ":" + visit(n.alternate) + ")", - LogicalExpression: (n)=>"(" + visit(n.left) + n.operator + visit(n.right) + ")", - ObjectExpression: (n)=>"{" + n.properties.map(visit).join(",") + "}", - Property: (n)=>{ - memberDepth += 1; - const k = visit(n.key); - memberDepth -= 1; - return k + ":" + visit(n.value); - } +} +function Entry(type, value, params, parent) { + this.id = -1; + this.type = type; + this.value = value; + this.params = params; + if (parent) this.parent = parent; +} +function entry(type, value, params, parent) { + return new Entry(type, value, params, parent); +} +function operator(value, params) { + return entry("operator", value, params); +} // ----- +function ref(op) { + const ref = { + $ref: op.id + }; // if operator not yet registered, cache ref to resolve later + if (op.id < 0) (op.refs = op.refs || []).push(ref); + return ref; +} +function fieldRef$1(field, name) { + return name ? { + $field: field, + $name: name + } : { + $field: field }; - function codegen(ast) { - const result = { - code: visit(ast), - globals: Object.keys(globals), - fields: Object.keys(fields) - }; - globals = {}; - fields = {}; - return result; - } - codegen.functions = functions; - codegen.constants = constants; - return codegen; } - -},{"vega-util":"dPFAY","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"37uhx":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "context", ()=>context); -var _vegaUtil = require("vega-util"); -var _vegaDataflow = require("vega-dataflow"); -/** - * Parse a serialized dataflow specification. - */ function parse(spec) { - const ctx = this, operators = spec.operators || []; // parse background - if (spec.background) ctx.background = spec.background; - // parse event configuration - if (spec.eventConfig) ctx.eventConfig = spec.eventConfig; - // parse locale configuration - if (spec.locale) ctx.locale = spec.locale; - // parse operators - operators.forEach((entry)=>ctx.parseOperator(entry)); // parse operator parameters - operators.forEach((entry)=>ctx.parseOperatorParameters(entry)); // parse streams - (spec.streams || []).forEach((entry)=>ctx.parseStream(entry)); // parse updates - (spec.updates || []).forEach((entry)=>ctx.parseUpdate(entry)); - return ctx.resolve(); +const keyFieldRef = fieldRef$1("key"); +function compareRef(fields, orders) { + return { + $compare: fields, + $order: orders + }; } -const Skip = (0, _vegaUtil.toSet)([ - "rule" -]), Swap = (0, _vegaUtil.toSet)([ - "group", - "image", - "rect" -]); -function adjustSpatial(encode, marktype) { - let code = ""; - if (Skip[marktype]) return code; - if (encode.x2) { - if (encode.x) { - if (Swap[marktype]) code += "if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"; - code += "o.width=o.x2-o.x;"; - } else code += "o.x=o.x2-(o.width||0);"; - } - if (encode.xc) code += "o.x=o.xc-(o.width||0)/2;"; - if (encode.y2) { - if (encode.y) { - if (Swap[marktype]) code += "if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"; - code += "o.height=o.y2-o.y;"; - } else code += "o.y=o.y2-(o.height||0);"; +function keyRef(fields, flat) { + const ref = { + $key: fields + }; + if (flat) ref.$flat = true; + return ref; +} // ----- +const Ascending = "ascending"; +const Descending = "descending"; +function sortKey(sort) { + return !(0, _vegaUtil.isObject)(sort) ? "" : (sort.order === Descending ? "-" : "+") + aggrField(sort.op, sort.field); +} +function aggrField(op, field) { + return (op && op.signal ? "$" + op.signal : op || "") + (op && field ? "_" : "") + (field && field.signal ? "$" + field.signal : field || ""); +} // ----- +const Scope$1 = "scope"; +const View = "view"; +function isSignal(_) { + return _ && _.signal; +} +function isExpr$1(_) { + return _ && _.expr; +} +function hasSignal(_) { + if (isSignal(_)) return true; + if ((0, _vegaUtil.isObject)(_)) for(const key in _){ + if (hasSignal(_[key])) return true; } - if (encode.yc) code += "o.y=o.yc-(o.height||0)/2;"; - return code; + return false; } -function canonicalType(type) { - return (type + "").toLowerCase(); +function value(specValue, defaultValue) { + return specValue != null ? specValue : defaultValue; } -function isOperator(type) { - return canonicalType(type) === "operator"; +function deref(v) { + return v && v.signal || v; } -function isCollect(type) { - return canonicalType(type) === "collect"; +const Timer = "timer"; +function parseStream(stream, scope) { + const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : (0, _vegaUtil.error)("Invalid stream specification: " + (0, _vegaUtil.stringValue)(stream)); + return method(stream, scope); } -function expression(ctx, args, code) { - // wrap code in return statement if expression does not terminate - if (code[code.length - 1] !== ";") code = "return(" + code + ");"; - const fn = Function(...args.concat(code)); - return ctx && ctx.functions ? fn.bind(ctx.functions) : fn; -} // generate code for comparing a single field -function _compare(u, v, lt, gt) { - return "((u = ".concat(u, ") < (v = ").concat(v, ") || u == null) && v != null ? ").concat(lt, "\n : (u > v || v == null) && u != null ? ").concat(gt, "\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ").concat(lt, "\n : v !== v && u === u ? ").concat(gt, " : "); +function eventSource(source) { + return source === Scope$1 ? View : source || View; } -var expressionCodegen = { - /** - * Parse an expression used to update an operator value. - */ operator: (ctx, expr)=>expression(ctx, [ - "_" - ], expr.code), - /** - * Parse an expression provided as an operator parameter value. - */ parameter: (ctx, expr)=>expression(ctx, [ - "datum", - "_" - ], expr.code), - /** - * Parse an expression applied to an event stream. - */ event: (ctx, expr)=>expression(ctx, [ - "event" - ], expr.code), - /** - * Parse an expression used to handle an event-driven operator update. - */ handler: (ctx, expr)=>{ - const code = "var datum=event.item&&event.item.datum;return ".concat(expr.code, ";"); - return expression(ctx, [ - "_", - "event" - ], code); - }, - /** - * Parse an expression that performs visual encoding. - */ encode: (ctx, encode)=>{ - const { marktype , channels } = encode; - let code = "var o=item,datum=o.datum,m=0,$;"; - for(const name in channels){ - const o = "o[" + (0, _vegaUtil.stringValue)(name) + "]"; - code += "$=".concat(channels[name].code, ";if(").concat(o, "!==$)").concat(o, "=$,m=1;"); - } - code += adjustSpatial(channels, marktype); - code += "return m;"; - return expression(ctx, [ - "item", - "_" - ], code); - }, - /** - * Optimized code generators for access and comparison. - */ codegen: { - get (path) { - const ref = "[".concat(path.map((0, _vegaUtil.stringValue)).join("]["), "]"); - const get = Function("_", "return _".concat(ref, ";")); - get.path = ref; - return get; - }, - comparator (fields, orders) { - let t; - const map = (f, i)=>{ - const o = orders[i]; - let u, v; - if (f.path) { - u = "a".concat(f.path); - v = "b".concat(f.path); - } else { - (t = t || {})["f" + i] = f; - u = "this.f".concat(i, "(a)"); - v = "this.f".concat(i, "(b)"); - } - return _compare(u, v, -o, o); - }; - const fn = Function("a", "b", "var u, v; return " + fields.map(map).join("") + "0;"); - return t ? fn.bind(t) : fn; - } - } -}; -/** - * Parse a dataflow operator. - */ function parseOperator(spec) { - const ctx = this; - if (isOperator(spec.type) || !spec.type) ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null); - else ctx.transform(spec, spec.type); +function mergeStream(stream, scope) { + const list = stream.merge.map((s)=>parseStream(s, scope)), entry = streamParameters({ + merge: list + }, stream, scope); + return scope.addStream(entry).id; } -/** - * Parse and assign operator parameters. - */ function parseOperatorParameters(spec) { - const ctx = this; - if (spec.params) { - const op = ctx.get(spec.id); - if (!op) (0, _vegaUtil.error)("Invalid operator id: " + spec.id); - ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly)); - } +function nestedStream(stream, scope) { + const id = parseStream(stream.stream, scope), entry = streamParameters({ + stream: id + }, stream, scope); + return scope.addStream(entry).id; } -/** - * Parse a set of operator parameters. - */ function parseParameters(spec, params) { - params = params || {}; - const ctx = this; - for(const key in spec){ - const value = spec[key]; - params[key] = (0, _vegaUtil.isArray)(value) ? value.map((v)=>parseParameter(v, ctx, params)) : parseParameter(value, ctx, params); - } - return params; +function eventStream(stream, scope) { + let id; + if (stream.type === Timer) { + id = scope.event(Timer, stream.throttle); + stream = { + between: stream.between, + filter: stream.filter + }; + } else id = scope.event(eventSource(stream.source), stream.type); + const entry = streamParameters({ + stream: id + }, stream, scope); + return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id; } -/** - * Parse a single parameter. - */ function parseParameter(spec, ctx, params) { - if (!spec || !(0, _vegaUtil.isObject)(spec)) return spec; - for(let i = 0, n = PARSERS.length, p; i < n; ++i){ - p = PARSERS[i]; - if ((0, _vegaUtil.hasOwnProperty)(spec, p.key)) return p.parse(spec, ctx, params); +function streamParameters(entry, stream, scope) { + let param = stream.between; + if (param) { + if (param.length !== 2) (0, _vegaUtil.error)('Stream "between" parameter must have 2 entries: ' + (0, _vegaUtil.stringValue)(stream)); + entry.between = [ + parseStream(param[0], scope), + parseStream(param[1], scope) + ]; } - return spec; + param = stream.filter ? [].concat(stream.filter) : []; + if (stream.marktype || stream.markname || stream.markrole) // add filter for mark type, name and/or role + param.push(filterMark(stream.marktype, stream.markname, stream.markrole)); + if (stream.source === Scope$1) // add filter to limit events from sub-scope only + param.push("inScope(event.item)"); + if (param.length) entry.filter = (0, _vegaFunctions.parseExpression)("(" + param.join(")&&(") + ")", scope).$expr; + if ((param = stream.throttle) != null) entry.throttle = +param; + if ((param = stream.debounce) != null) entry.debounce = +param; + if (stream.consume) entry.consume = true; + return entry; } -/** Reference parsers. */ var PARSERS = [ - { - key: "$ref", - parse: getOperator - }, - { - key: "$key", - parse: getKey - }, - { - key: "$expr", - parse: getExpression - }, - { - key: "$field", - parse: getField - }, - { - key: "$encode", - parse: getEncode - }, - { - key: "$compare", - parse: getCompare - }, - { - key: "$context", - parse: getContext - }, - { - key: "$subflow", - parse: getSubflow - }, - { - key: "$tupleid", - parse: getTupleId +function filterMark(type, name, role) { + const item = "event.item"; + return item + (type && type !== "*" ? "&&" + item + ".mark.marktype==='" + type + "'" : "") + (role ? "&&" + item + ".mark.role==='" + role + "'" : "") + (name ? "&&" + item + ".mark.name==='" + name + "'" : ""); +} +const OP_VALUE_EXPR = { + code: "_.$value", + ast: { + type: "Identifier", + value: "value" } -]; -/** - * Resolve an operator reference. - */ function getOperator(_, ctx) { - return ctx.get(_.$ref) || (0, _vegaUtil.error)("Operator not defined: " + _.$ref); +}; +function parseUpdate(spec, scope, target) { + const encode = spec.encode, entry = { + target: target + }; + let events = spec.events, update = spec.update, sources = []; + if (!events) (0, _vegaUtil.error)("Signal update missing events specification."); + // interpret as an event selector string + if ((0, _vegaUtil.isString)(events)) events = (0, _vegaEventSelector.parseSelector)(events, scope.isSubscope() ? Scope$1 : View); + // separate event streams from signal updates + events = (0, _vegaUtil.array)(events).filter((s)=>s.signal || s.scale ? (sources.push(s), 0) : 1); // merge internal operator listeners + if (sources.length > 1) sources = [ + mergeSources(sources) + ]; + // merge event streams, include as source + if (events.length) sources.push(events.length > 1 ? { + merge: events + } : events[0]); + if (encode != null) { + if (update) (0, _vegaUtil.error)("Signal encode and update are mutually exclusive."); + update = "encode(item()," + (0, _vegaUtil.stringValue)(encode) + ")"; + } // resolve update value + entry.update = (0, _vegaUtil.isString)(update) ? (0, _vegaFunctions.parseExpression)(update, scope) : update.expr != null ? (0, _vegaFunctions.parseExpression)(update.expr, scope) : update.value != null ? update.value : update.signal != null ? { + $expr: OP_VALUE_EXPR, + $params: { + $value: scope.signalRef(update.signal) + } + } : (0, _vegaUtil.error)("Invalid signal update specification."); + if (spec.force) entry.options = { + force: true + }; + sources.forEach((source)=>scope.addUpdate((0, _vegaUtil.extend)(streamSource(source, scope), entry))); } -/** - * Resolve an expression reference. - */ function getExpression(_, ctx, params) { - if (_.$params) // parse expression parameters - ctx.parseParameters(_.$params, params); - const k = "e:" + _.$expr.code + "_" + _.$name; - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.accessor)(ctx.parameterExpression(_.$expr), _.$fields, _.$name)); +function streamSource(stream, scope) { + return { + source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope) + }; } -/** - * Resolve a key accessor reference. - */ function getKey(_, ctx) { - const k = "k:" + _.$key + "_" + !!_.$flat; - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.key)(_.$key, _.$flat, ctx.expr.codegen)); +function mergeSources(sources) { + return { + signal: "[" + sources.map((s)=>s.scale ? 'scale("' + s.scale + '")' : s.signal) + "]" + }; } -/** - * Resolve a field accessor reference. - */ function getField(_, ctx) { - if (!_.$field) return null; - const k = "f:" + _.$field + "_" + _.$name; - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.field)(_.$field, _.$name, ctx.expr.codegen)); +function parseSignalUpdates(signal, scope) { + const op = scope.getSignal(signal.name); + let expr = signal.update; + if (signal.init) { + if (expr) (0, _vegaUtil.error)("Signals can not include both init and update expressions."); + else { + expr = signal.init; + op.initonly = true; + } + } + if (expr) { + expr = (0, _vegaFunctions.parseExpression)(expr, scope); + op.update = expr.$expr; + op.params = expr.$params; + } + if (signal.on) signal.on.forEach((_)=>parseUpdate(_, scope, op.id)); } -/** - * Resolve a comparator function reference. - */ function getCompare(_, ctx) { - // As of Vega 5.5.3, $tupleid sort is no longer used. - // Keep here for now for backwards compatibility. - const k = "c:" + _.$compare + "_" + _.$order, c = (0, _vegaUtil.array)(_.$compare).map((_)=>_ && _.$tupleid ? (0, _vegaDataflow.tupleid) : _); - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.compare)(c, _.$order, ctx.expr.codegen)); +const transform = (name)=>(params, value, parent)=>entry(name, value, params || undefined, parent); +const Aggregate = transform("aggregate"); +const AxisTicks = transform("axisticks"); +const Bound = transform("bound"); +const Collect = transform("collect"); +const Compare = transform("compare"); +const DataJoin = transform("datajoin"); +const Encode = transform("encode"); +const Expression = transform("expression"); +const Facet = transform("facet"); +const Field = transform("field"); +const Key = transform("key"); +const LegendEntries = transform("legendentries"); +const Load = transform("load"); +const Mark = transform("mark"); +const MultiExtent = transform("multiextent"); +const MultiValues = transform("multivalues"); +const Overlap = transform("overlap"); +const Params = transform("params"); +const PreFacet = transform("prefacet"); +const Projection = transform("projection"); +const Proxy = transform("proxy"); +const Relay = transform("relay"); +const Render = transform("render"); +const Scale = transform("scale"); +const Sieve = transform("sieve"); +const SortItems = transform("sortitems"); +const ViewLayout = transform("viewlayout"); +const Values = transform("values"); +let FIELD_REF_ID = 0; +const MULTIDOMAIN_SORT_OPS = { + min: "min", + max: "max", + count: "sum" +}; +function initScale(spec, scope) { + const type = spec.type || "linear"; + if (!(0, _vegaScale.isValidScaleType)(type)) (0, _vegaUtil.error)("Unrecognized scale type: " + (0, _vegaUtil.stringValue)(type)); + scope.addScale(spec.name, { + type, + domain: undefined + }); } -/** - * Resolve an encode operator reference. - */ function getEncode(_, ctx) { - const spec = _.$encode, encode = {}; - for(const name in spec){ - const enc = spec[name]; - encode[name] = (0, _vegaUtil.accessor)(ctx.encodeExpression(enc.$expr), enc.$fields); - encode[name].output = enc.$output; +function parseScale(spec, scope) { + const params = scope.getScale(spec.name).params; + let key; + params.domain = parseScaleDomain(spec.domain, spec, scope); + if (spec.range != null) params.range = parseScaleRange(spec, scope, params); + if (spec.interpolate != null) parseScaleInterpolate(spec.interpolate, params); + if (spec.nice != null) params.nice = parseScaleNice(spec.nice); + if (spec.bins != null) params.bins = parseScaleBins(spec.bins, scope); + for(key in spec){ + if ((0, _vegaUtil.hasOwnProperty)(params, key) || key === "name") continue; + params[key] = parseLiteral(spec[key], scope); } - return encode; -} -/** - * Resolve a context reference. - */ function getContext(_, ctx) { - return ctx; } -/** - * Resolve a recursive subflow specification. - */ function getSubflow(_, ctx) { - const spec = _.$subflow; - return function(dataflow, key, parent) { - const subctx = ctx.fork().parse(spec), op = subctx.get(spec.operators[0].id), p = subctx.signals.parent; - if (p) p.set(parent); - op.detachSubflow = ()=>ctx.detach(subctx); - return op; - }; +function parseLiteral(v, scope) { + return !(0, _vegaUtil.isObject)(v) ? v : v.signal ? scope.signalRef(v.signal) : (0, _vegaUtil.error)("Unsupported object: " + (0, _vegaUtil.stringValue)(v)); } -/** - * Resolve a tuple id reference. - */ function getTupleId() { - return 0, _vegaDataflow.tupleid; +function parseArray(v, scope) { + return v.signal ? scope.signalRef(v.signal) : v.map((v)=>parseLiteral(v, scope)); } -/** - * Parse an event stream specification. - */ function parseStream(spec) { - var ctx = this, filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined, stream = spec.stream != null ? ctx.get(spec.stream) : undefined, args; - if (spec.source) stream = ctx.events(spec.source, spec.type, filter); - else if (spec.merge) { - args = spec.merge.map((_)=>ctx.get(_)); - stream = args[0].merge.apply(args[0], args.slice(1)); - } - if (spec.between) { - args = spec.between.map((_)=>ctx.get(_)); - stream = stream.between(args[0], args[1]); +function dataLookupError(name) { + (0, _vegaUtil.error)("Can not find data set: " + (0, _vegaUtil.stringValue)(name)); +} // -- SCALE DOMAIN ---- +function parseScaleDomain(domain, spec, scope) { + if (!domain) { + if (spec.domainMin != null || spec.domainMax != null) (0, _vegaUtil.error)("No scale domain defined for domainMin/domainMax to override."); + return; // default domain } - if (spec.filter) stream = stream.filter(filter); - if (spec.throttle != null) stream = stream.throttle(+spec.throttle); - if (spec.debounce != null) stream = stream.debounce(+spec.debounce); - if (stream == null) (0, _vegaUtil.error)("Invalid stream definition: " + JSON.stringify(spec)); - if (spec.consume) stream.consume(true); - ctx.stream(spec, stream); + return domain.signal ? scope.signalRef(domain.signal) : ((0, _vegaUtil.isArray)(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope); } -/** - * Parse an event-driven operator update. - */ function parseUpdate(spec) { - var ctx = this, srcid = (0, _vegaUtil.isObject)(srcid = spec.source) ? srcid.$ref : srcid, source = ctx.get(srcid), target = null, update = spec.update, params = undefined; - if (!source) (0, _vegaUtil.error)("Source not defined: " + spec.source); - target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target); - if (update && update.$expr) { - if (update.$params) params = ctx.parseParameters(update.$params); - update = ctx.handlerExpression(update.$expr); - } - ctx.update(spec, source, target, update, params); +function explicitDomain(domain, spec, scope) { + return domain.map((v)=>parseLiteral(v, scope)); } -const SKIP = { - skip: true -}; -function getState(options) { - var ctx = this, state = {}; - if (options.signals) { - var signals = state.signals = {}; - Object.keys(ctx.signals).forEach((key)=>{ - const op = ctx.signals[key]; - if (options.signals(key, op)) signals[key] = op.value; - }); - } - if (options.data) { - var data = state.data = {}; - Object.keys(ctx.data).forEach((key)=>{ - const dataset = ctx.data[key]; - if (options.data(key, dataset)) data[key] = dataset.input.value; - }); - } - if (ctx.subcontext && options.recurse !== false) state.subcontext = ctx.subcontext.map((ctx)=>ctx.getState(options)); - return state; +function singularDomain(domain, spec, scope) { + const data = scope.getData(domain.data); + if (!data) dataLookupError(domain.data); + return (0, _vegaScale.isDiscrete)(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : (0, _vegaScale.isQuantile)(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field); } -function setState(state) { - var ctx = this, df = ctx.dataflow, data = state.data, signals = state.signals; - Object.keys(signals || {}).forEach((key)=>{ - df.update(ctx.signals[key], signals[key], SKIP); - }); - Object.keys(data || {}).forEach((key)=>{ - df.pulse(ctx.data[key].input, df.changeset().remove((0, _vegaUtil.truthy)).insert(data[key])); - }); - (state.subcontext || []).forEach((substate, i)=>{ - const subctx = ctx.subcontext[i]; - if (subctx) subctx.setState(substate); - }); +function multipleDomain(domain, spec, scope) { + const data = domain.data, fields = domain.fields.reduce((dom, d)=>{ + d = (0, _vegaUtil.isString)(d) ? { + data: data, + field: d + } : (0, _vegaUtil.isArray)(d) || d.signal ? fieldRef(d, scope) : d; + dom.push(d); + return dom; + }, []); + return ((0, _vegaScale.isDiscrete)(spec.type) ? ordinalMultipleDomain : (0, _vegaScale.isQuantile)(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields); } -/** - * Context objects store the current parse state. - * Enables lookup of parsed operators, event streams, accessors, etc. - * Provides a 'fork' method for creating child contexts for subflows. - */ function context(df, transforms, functions, expr) { - return new Context(df, transforms, functions, expr); +function fieldRef(data, scope) { + const name = "_:vega:_" + FIELD_REF_ID++, coll = Collect({}); + if ((0, _vegaUtil.isArray)(data)) coll.value = { + $ingest: data + }; + else if (data.signal) { + const code = "setdata(" + (0, _vegaUtil.stringValue)(name) + "," + data.signal + ")"; + coll.params.input = scope.signalRef(code); + } + scope.addDataPipeline(name, [ + coll, + Sieve({}) + ]); + return { + data: name, + field: "data" + }; } -function Context(df, transforms, functions, expr) { - this.dataflow = df; - this.transforms = transforms; - this.events = df.events.bind(df); - this.expr = expr || expressionCodegen, this.signals = {}; - this.scales = {}; - this.nodes = {}; - this.data = {}; - this.fn = {}; - if (functions) { - this.functions = Object.create(functions); - this.functions.context = this; +function ordinalMultipleDomain(domain, scope, fields) { + const sort = parseSort(domain.sort, true); + let a, v; // get value counts for each domain field + const counts = fields.map((f)=>{ + const data = scope.getData(f.data); + if (!data) dataLookupError(f.data); + return data.countsRef(scope, f.field, sort); + }); // aggregate the results from each domain field + const p = { + groupby: keyFieldRef, + pulse: counts + }; + if (sort) { + a = sort.op || "count"; + v = sort.field ? aggrField(a, sort.field) : "count"; + p.ops = [ + MULTIDOMAIN_SORT_OPS[a] + ]; + p.fields = [ + scope.fieldRef(v) + ]; + p.as = [ + v + ]; } + a = scope.add(Aggregate(p)); // collect aggregate output + const c = scope.add(Collect({ + pulse: ref(a) + })); // extract values for combined domain + v = scope.add(Values({ + field: keyFieldRef, + sort: scope.sortRef(sort), + pulse: ref(c) + })); + return ref(v); } -function Subcontext(ctx) { - this.dataflow = ctx.dataflow; - this.transforms = ctx.transforms; - this.events = ctx.events; - this.expr = ctx.expr; - this.signals = Object.create(ctx.signals); - this.scales = Object.create(ctx.scales); - this.nodes = Object.create(ctx.nodes); - this.data = Object.create(ctx.data); - this.fn = Object.create(ctx.fn); - if (ctx.functions) { - this.functions = Object.create(ctx.functions); - this.functions.context = this; +function parseSort(sort, multidomain) { + if (sort) { + if (!sort.field && !sort.op) { + if ((0, _vegaUtil.isObject)(sort)) sort.field = "key"; + else sort = { + field: "key" + }; + } else if (!sort.field && sort.op !== "count") (0, _vegaUtil.error)("No field provided for sort aggregate op: " + sort.op); + else if (multidomain && sort.field) { + if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) (0, _vegaUtil.error)("Multiple domain scales can not be sorted using " + sort.op); + } } + return sort; } -Context.prototype = Subcontext.prototype = { - fork () { - const ctx = new Subcontext(this); - (this.subcontext || (this.subcontext = [])).push(ctx); - return ctx; - }, - detach (ctx) { - this.subcontext = this.subcontext.filter((c)=>c !== ctx); // disconnect all nodes in the subcontext - // wipe out targets first for better efficiency - const keys = Object.keys(ctx.nodes); - for (const key of keys)ctx.nodes[key]._targets = null; - for (const key1 of keys)ctx.nodes[key1].detach(); - ctx.nodes = null; - }, - get (id) { - return this.nodes[id]; - }, - set (id, node) { - return this.nodes[id] = node; - }, - add (spec, op) { - const ctx = this, df = ctx.dataflow, data = spec.value; - ctx.set(spec.id, op); - if (isCollect(spec.type) && data) { - if (data.$ingest) df.ingest(op, data.$ingest, data.$format); - else if (data.$request) df.preload(op, data.$request, data.$format); - else df.pulse(op, df.changeset().insert(data)); - } - if (spec.root) ctx.root = op; - if (spec.parent) { - let p = ctx.get(spec.parent.$ref); - if (p) { - df.connect(p, [ - op - ]); - op.targets().add(p); - } else (ctx.unresolved = ctx.unresolved || []).push(()=>{ - p = ctx.get(spec.parent.$ref); - df.connect(p, [ - op - ]); - op.targets().add(p); - }); - } - if (spec.signal) ctx.signals[spec.signal] = op; - if (spec.scale) ctx.scales[spec.scale] = op; - if (spec.data) for(const name in spec.data){ - const data1 = ctx.data[name] || (ctx.data[name] = {}); - spec.data[name].forEach((role)=>data1[role] = op); - } - }, - resolve () { - (this.unresolved || []).forEach((fn)=>fn()); - delete this.unresolved; - return this; - }, - operator (spec, update) { - this.add(spec, this.dataflow.add(spec.value, update)); - }, - transform (spec, type) { - this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)])); - }, - stream (spec, stream) { - this.set(spec.id, stream); - }, - update (spec, stream, target, update, params) { - this.dataflow.on(stream, target, update, params, spec.options); - }, - // expression parsing - operatorExpression (expr) { - return this.expr.operator(this, expr); - }, - parameterExpression (expr) { - return this.expr.parameter(this, expr); - }, - eventExpression (expr) { - return this.expr.event(this, expr); - }, - handlerExpression (expr) { - return this.expr.handler(this, expr); - }, - encodeExpression (encode) { - return this.expr.encode(this, encode); - }, - // parse methods - parse, - parseOperator, - parseOperatorParameters, - parseParameters, - parseStream, - parseUpdate, - // state methods - getState, - setState -}; - -},{"vega-util":"dPFAY","vega-dataflow":"4kvYg","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"irqWQ":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "AxisDomainRole", ()=>AxisDomainRole); -parcelHelpers.export(exports, "AxisGridRole", ()=>AxisGridRole); -parcelHelpers.export(exports, "AxisLabelRole", ()=>AxisLabelRole); -parcelHelpers.export(exports, "AxisRole", ()=>AxisRole); -parcelHelpers.export(exports, "AxisTickRole", ()=>AxisTickRole); -parcelHelpers.export(exports, "AxisTitleRole", ()=>AxisTitleRole); -parcelHelpers.export(exports, "DataScope", ()=>DataScope); -parcelHelpers.export(exports, "FrameRole", ()=>FrameRole); -parcelHelpers.export(exports, "LegendEntryRole", ()=>LegendEntryRole); -parcelHelpers.export(exports, "LegendLabelRole", ()=>LegendLabelRole); -parcelHelpers.export(exports, "LegendRole", ()=>LegendRole); -parcelHelpers.export(exports, "LegendSymbolRole", ()=>LegendSymbolRole); -parcelHelpers.export(exports, "LegendTitleRole", ()=>LegendTitleRole); -parcelHelpers.export(exports, "MarkRole", ()=>MarkRole); -parcelHelpers.export(exports, "Scope", ()=>Scope); -parcelHelpers.export(exports, "ScopeRole", ()=>ScopeRole); -parcelHelpers.export(exports, "config", ()=>defaults); -parcelHelpers.export(exports, "parse", ()=>parse); -parcelHelpers.export(exports, "signal", ()=>parseSignal); -parcelHelpers.export(exports, "signalUpdates", ()=>parseSignalUpdates); -parcelHelpers.export(exports, "stream", ()=>parseStream); -var _vegaUtil = require("vega-util"); -var _vegaFunctions = require("vega-functions"); -var _vegaEventSelector = require("vega-event-selector"); -var _vegaScale = require("vega-scale"); -var _vegaDataflow = require("vega-dataflow"); -function parseAutosize(spec) { - return (0, _vegaUtil.isObject)(spec) ? spec : { - type: spec || "pad" - }; -} -const number = (_)=>+_ || 0; -const paddingObject = (_)=>({ - top: _, - bottom: _, - left: _, - right: _ - }); -function parsePadding(spec) { - return !(0, _vegaUtil.isObject)(spec) ? paddingObject(number(spec)) : spec.signal ? spec : { - top: number(spec.top), - bottom: number(spec.bottom), - left: number(spec.left), - right: number(spec.right) - }; -} -const encoder = (_)=>(0, _vegaUtil.isObject)(_) && !(0, _vegaUtil.isArray)(_) ? (0, _vegaUtil.extend)({}, _) : { - value: _ - }; -function addEncode(object, name, value, set) { - if (value != null) { - const isEncoder = (0, _vegaUtil.isObject)(value) && !(0, _vegaUtil.isArray)(value) || (0, _vegaUtil.isArray)(value) && value.length && (0, _vegaUtil.isObject)(value[0]); // Always assign signal to update, even if the signal is from the enter block - if (isEncoder) object.update[name] = value; - else object[set || "enter"][name] = { - value: value - }; - return 1; - } else return 0; -} -function addEncoders(object, enter, update) { - for(const name in enter)addEncode(object, name, enter[name]); - for(const name1 in update)addEncode(object, name1, update[name1], "update"); -} -function extendEncode(encode, extra, skip) { - for(const name in extra){ - if (skip && (0, _vegaUtil.hasOwnProperty)(skip, name)) continue; - encode[name] = (0, _vegaUtil.extend)(encode[name] || {}, extra[name]); - } - return encode; -} -function has(key, encode) { - return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]); +function quantileMultipleDomain(domain, scope, fields) { + // get value arrays for each domain field + const values = fields.map((f)=>{ + const data = scope.getData(f.data); + if (!data) dataLookupError(f.data); + return data.domainRef(scope, f.field); + }); // combine value arrays + return ref(scope.add(MultiValues({ + values: values + }))); } -const MarkRole = "mark"; -const FrameRole = "frame"; -const ScopeRole = "scope"; -const AxisRole = "axis"; -const AxisDomainRole = "axis-domain"; -const AxisGridRole = "axis-grid"; -const AxisLabelRole = "axis-label"; -const AxisTickRole = "axis-tick"; -const AxisTitleRole = "axis-title"; -const LegendRole = "legend"; -const LegendBandRole = "legend-band"; -const LegendEntryRole = "legend-entry"; -const LegendGradientRole = "legend-gradient"; -const LegendLabelRole = "legend-label"; -const LegendSymbolRole = "legend-symbol"; -const LegendTitleRole = "legend-title"; -const TitleRole = "title"; -const TitleTextRole = "title-text"; -const TitleSubtitleRole = "title-subtitle"; -function applyDefaults(encode, type, role, style, config) { - const defaults = {}, enter = {}; - let update, key, skip, props; // if text mark, apply global lineBreak settings (#2370) - key = "lineBreak"; - if (type === "text" && config[key] != null && !has(key, encode)) applyDefault(defaults, key, config[key]); - // ignore legend and axis roles - if (role == "legend" || String(role).startsWith("axis")) role = null; - // resolve mark config - props = role === FrameRole ? config.group : role === MarkRole ? (0, _vegaUtil.extend)({}, config.mark, config[type]) : null; - for(key in props){ - // do not apply defaults if relevant fields are defined - skip = has(key, encode) || (key === "fill" || key === "stroke") && (has("fill", encode) || has("stroke", encode)); - if (!skip) applyDefault(defaults, key, props[key]); - } // resolve styles, apply with increasing precedence - (0, _vegaUtil.array)(style).forEach((name)=>{ - const props = config.style && config.style[name]; - for(const key in props)if (!has(key, encode)) applyDefault(defaults, key, props[key]); - }); - encode = (0, _vegaUtil.extend)({}, encode); // defensive copy - for(key in defaults){ - props = defaults[key]; - if (props.signal) (update = update || {})[key] = props; - else enter[key] = props; - } - encode.enter = (0, _vegaUtil.extend)(enter, encode.enter); - if (update) encode.update = (0, _vegaUtil.extend)(update, encode.update); - return encode; +function numericMultipleDomain(domain, scope, fields) { + // get extents for each domain field + const extents = fields.map((f)=>{ + const data = scope.getData(f.data); + if (!data) dataLookupError(f.data); + return data.extentRef(scope, f.field); + }); // combine extents + return ref(scope.add(MultiExtent({ + extents: extents + }))); +} // -- SCALE BINS ----- +function parseScaleBins(v, scope) { + return v.signal || (0, _vegaUtil.isArray)(v) ? parseArray(v, scope) : scope.objectProperty(v); +} // -- SCALE NICE ----- +function parseScaleNice(nice) { + return (0, _vegaUtil.isObject)(nice) ? { + interval: parseLiteral(nice.interval), + step: parseLiteral(nice.step) + } : parseLiteral(nice); +} // -- SCALE INTERPOLATION ----- +function parseScaleInterpolate(interpolate, params) { + params.interpolate = parseLiteral(interpolate.type || interpolate); + if (interpolate.gamma != null) params.interpolateGamma = parseLiteral(interpolate.gamma); +} // -- SCALE RANGE ----- +function parseScaleRange(spec, scope, params) { + const config = scope.config.range; + let range = spec.range; + if (range.signal) return scope.signalRef(range.signal); + else if ((0, _vegaUtil.isString)(range)) { + if (config && (0, _vegaUtil.hasOwnProperty)(config, range)) { + spec = (0, _vegaUtil.extend)({}, spec, { + range: config[range] + }); + return parseScaleRange(spec, scope, params); + } else if (range === "width") range = [ + 0, + { + signal: "width" + } + ]; + else if (range === "height") range = (0, _vegaScale.isDiscrete)(spec.type) ? [ + 0, + { + signal: "height" + } + ] : [ + { + signal: "height" + }, + 0 + ]; + else (0, _vegaUtil.error)("Unrecognized scale range value: " + (0, _vegaUtil.stringValue)(range)); + } else if (range.scheme) { + params.scheme = (0, _vegaUtil.isArray)(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope); + if (range.extent) params.schemeExtent = parseArray(range.extent, scope); + if (range.count) params.schemeCount = parseLiteral(range.count, scope); + return; + } else if (range.step) { + params.rangeStep = parseLiteral(range.step, scope); + return; + } else if ((0, _vegaScale.isDiscrete)(spec.type) && !(0, _vegaUtil.isArray)(range)) return parseScaleDomain(range, spec, scope); + else if (!(0, _vegaUtil.isArray)(range)) (0, _vegaUtil.error)("Unsupported range type: " + (0, _vegaUtil.stringValue)(range)); + return range.map((v)=>((0, _vegaUtil.isArray)(v) ? parseArray : parseLiteral)(v, scope)); } -function applyDefault(defaults, key, value) { - defaults[key] = value && value.signal ? { - signal: value.signal - } : { - value: value - }; +function parseProjection(proj, scope) { + const config = scope.config.projection || {}, params = {}; + for(const name in proj){ + if (name === "name") continue; + params[name] = parseParameter$1(proj[name], name, scope); + } // apply projection defaults from config + for(const name1 in config)if (params[name1] == null) params[name1] = parseParameter$1(config[name1], name1, scope); + scope.addProjection(proj.name, params); } -const scaleRef = (scale)=>(0, _vegaUtil.isString)(scale) ? (0, _vegaUtil.stringValue)(scale) : scale.signal ? `(${scale.signal})` : field(scale); -function entry$1(enc) { - if (enc.gradient != null) return gradient(enc); - let value = enc.signal ? `(${enc.signal})` : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? (0, _vegaUtil.stringValue)(enc.value) : undefined; - if (enc.scale != null) value = scale(enc, value); - if (value === undefined) value = null; - if (enc.exponent != null) value = `pow(${value},${property(enc.exponent)})`; - if (enc.mult != null) value += `*${property(enc.mult)}`; - if (enc.offset != null) value += `+${property(enc.offset)}`; - if (enc.round) value = `round(${value})`; - return value; +function parseParameter$1(_, name, scope) { + return (0, _vegaUtil.isArray)(_) ? _.map((_)=>parseParameter$1(_, name, scope)) : !(0, _vegaUtil.isObject)(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === "fit" ? _ : (0, _vegaUtil.error)("Unsupported parameter object: " + (0, _vegaUtil.stringValue)(_)); } -const _color = (type, x, y, z)=>`(${type}(${[ - x, - y, - z - ].map(entry$1).join(",")})+'')`; -function color(enc) { - return enc.c ? _color("hcl", enc.h, enc.c, enc.l) : enc.h || enc.s ? _color("hsl", enc.h, enc.s, enc.l) : enc.l || enc.a ? _color("lab", enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color("rgb", enc.r, enc.g, enc.b) : null; +const Top = "top"; +const Left = "left"; +const Right = "right"; +const Bottom = "bottom"; +const Center = "center"; +const Vertical = "vertical"; +const Start = "start"; +const Middle = "middle"; +const End = "end"; +const Index = "index"; +const Label = "label"; +const Offset = "offset"; +const Perc = "perc"; +const Perc2 = "perc2"; +const Value = "value"; +const GuideLabelStyle = "guide-label"; +const GuideTitleStyle = "guide-title"; +const GroupTitleStyle = "group-title"; +const GroupSubtitleStyle = "group-subtitle"; +const Symbols = "symbol"; +const Gradient = "gradient"; +const Discrete = "discrete"; +const Size = "size"; +const Shape = "shape"; +const Fill = "fill"; +const Stroke = "stroke"; +const StrokeWidth = "strokeWidth"; +const StrokeDash = "strokeDash"; +const Opacity = "opacity"; // Encoding channels supported by legends +// In priority order of 'canonical' scale +const LegendScales = [ + Size, + Shape, + Fill, + Stroke, + StrokeWidth, + StrokeDash, + Opacity +]; +const Skip = { + name: 1, + style: 1, + interactive: 1 +}; +const zero = { + value: 0 +}; +const one = { + value: 1 +}; +const GroupMark = "group"; +const RectMark = "rect"; +const RuleMark = "rule"; +const SymbolMark = "symbol"; +const TextMark = "text"; +function guideGroup(mark) { + mark.type = GroupMark; + mark.interactive = mark.interactive || false; + return mark; } -function gradient(enc) { - // map undefined to null; expression lang does not allow undefined - const args = [ - enc.start, - enc.stop, - enc.count - ].map((_)=>_ == null ? null : (0, _vegaUtil.stringValue)(_)); // trim null inputs from the end - while(args.length && (0, _vegaUtil.peek)(args) == null)args.pop(); - args.unshift(scaleRef(enc.gradient)); - return `gradient(${args.join(",")})`; +function lookup(spec, config) { + const _ = (name, dflt)=>value(spec[name], value(config[name], dflt)); + _.isVertical = (s)=>Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection)); + _.gradientLength = ()=>value(spec.gradientLength, config.gradientLength || config.gradientWidth); + _.gradientThickness = ()=>value(spec.gradientThickness, config.gradientThickness || config.gradientHeight); + _.entryColumns = ()=>value(spec.columns, value(config.columns, +_.isVertical(true))); + return _; } -function property(property) { - return (0, _vegaUtil.isObject)(property) ? "(" + entry$1(property) + ")" : property; +function getEncoding(name, encode) { + const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]); + return v && v.signal ? v : v ? v.value : null; } -function field(ref) { - return resolveField((0, _vegaUtil.isObject)(ref) ? ref : { - datum: ref - }); +function getStyle(name, scope, style) { + const s = scope.config.style[style]; + return s && s[name]; } -function resolveField(ref) { - let object, level, field; - if (ref.signal) { - object = "datum"; - field = ref.signal; - } else if (ref.group || ref.parent) { - level = Math.max(1, ref.level || 1); - object = "item"; - while(level-- > 0)object += ".mark.group"; - if (ref.parent) { - field = ref.parent; - object += ".datum"; - } else field = ref.group; - } else if (ref.datum) { - object = "datum"; - field = ref.datum; - } else (0, _vegaUtil.error)("Invalid field reference: " + (0, _vegaUtil.stringValue)(ref)); - if (!ref.signal) field = (0, _vegaUtil.isString)(field) ? (0, _vegaUtil.splitAccessPath)(field).map((0, _vegaUtil.stringValue)).join("][") : resolveField(field); - return object + "[" + field + "]"; +function anchorExpr(s, e, m) { + return `item.anchor === '${Start}' ? ${s} : item.anchor === '${End}' ? ${e} : ${m}`; } -function scale(enc, value) { - const scale = scaleRef(enc.scale); - if (enc.range != null) // pull value from scale range - value = `lerp(_range(${scale}), ${+enc.range})`; - else { - // run value through scale and/or pull scale bandwidth - if (value !== undefined) value = `_scale(${scale}, ${value})`; - if (enc.band) { - value = (value ? value + "+" : "") + `_bandwidth(${scale})` + (+enc.band === 1 ? "" : "*" + property(enc.band)); - if (enc.extra) // include logic to handle extraneous elements - value = `(datum.extra ? _scale(${scale}, datum.extra.value) : ${value})`; - } - if (value == null) value = "0"; +const alignExpr$1 = anchorExpr((0, _vegaUtil.stringValue)(Left), (0, _vegaUtil.stringValue)(Right), (0, _vegaUtil.stringValue)(Center)); +function tickBand(_) { + const v = _("tickBand"); + let offset = _("tickOffset"), band, extra; + if (!v) { + // if no tick band entry, fall back on other properties + band = _("bandPosition"); + extra = _("tickExtra"); + } else if (v.signal) { + // if signal, augment code to interpret values + band = { + signal: `(${v.signal}) === 'extent' ? 1 : 0.5` + }; + extra = { + signal: `(${v.signal}) === 'extent'` + }; + if (!(0, _vegaUtil.isObject)(offset)) offset = { + signal: `(${v.signal}) === 'extent' ? 0 : ${offset}` + }; + } else if (v === "extent") { + // if constant, simply set values + band = 1; + extra = true; + offset = 0; + } else { + band = 0.5; + extra = false; } - return value; -} -function rule(enc) { - let code = ""; - enc.forEach((rule)=>{ - const value = entry$1(rule); - code += rule.test ? `(${rule.test})?${value}:` : value; - }); // if no else clause, terminate with null (#1366) - if ((0, _vegaUtil.peek)(code) === ":") code += "null"; - return code; -} -function parseEncode(encode, type, role, style, scope, params) { - const enc = {}; - params = params || {}; - params.encoders = { - $encode: enc - }; - encode = applyDefaults(encode, type, role, style, scope.config); - for(const key in encode)enc[key] = parseBlock(encode[key], type, params, scope); - return params; -} -function parseBlock(block, marktype, params, scope) { - const channels = {}, fields = {}; - for(const name in block)if (block[name] != null) // skip any null entries - channels[name] = parse$1(expr(block[name]), scope, params, fields); return { - $expr: { - marktype, - channels - }, - $fields: Object.keys(fields), - $output: Object.keys(block) + extra, + band, + offset }; } -function expr(enc) { - return (0, _vegaUtil.isArray)(enc) ? rule(enc) : entry$1(enc); +function extendOffset(value, offset) { + return !offset ? value : !value ? offset : !(0, _vegaUtil.isObject)(value) ? { + value, + offset + } : Object.assign({}, value, { + offset: extendOffset(value.offset, offset) + }); } -function parse$1(code, scope, params, fields) { - const expr = (0, _vegaFunctions.parseExpression)(code, scope); - expr.$fields.forEach((name)=>fields[name] = 1); - (0, _vegaUtil.extend)(params, expr.$params); - return expr.$expr; +function guideMark(mark, extras) { + if (extras) { + mark.name = extras.name; + mark.style = extras.style || mark.style; + mark.interactive = !!extras.interactive; + mark.encode = extendEncode(mark.encode, extras, Skip); + } else mark.interactive = false; + return mark; } -const OUTER = "outer", OUTER_INVALID = [ - "value", - "update", - "init", - "react", - "bind" -]; -function outerError(prefix, name) { - (0, _vegaUtil.error)(prefix + ' for "outer" push: ' + (0, _vegaUtil.stringValue)(name)); -} -function parseSignal(signal, scope) { - const name = signal.name; - if (signal.push === OUTER) { - // signal must already be defined, raise error if not - if (!scope.signals[name]) outerError("No prior signal definition", name); // signal push must not use properties reserved for standard definition - OUTER_INVALID.forEach((prop)=>{ - if (signal[prop] !== undefined) outerError("Invalid property ", prop); - }); +function legendGradient(spec, scale, config, userEncode) { + const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); + let enter, start, stop, width, height; + if (vertical) { + start = [ + 0, + 1 + ]; + stop = [ + 0, + 0 + ]; + width = thickness; + height = length; } else { - // define a new signal in the current scope - const op = scope.addSignal(name, signal.value); - if (signal.react === false) op.react = false; - if (signal.bind) scope.addBinding(name, signal.bind); + start = [ + 0, + 0 + ]; + stop = [ + 1, + 0 + ]; + width = length; + height = thickness; } -} -function Entry(type, value, params, parent) { - this.id = -1; - this.type = type; - this.value = value; - this.params = params; - if (parent) this.parent = parent; -} -function entry(type, value, params, parent) { - return new Entry(type, value, params, parent); -} -function operator(value, params) { - return entry("operator", value, params); -} // ----- -function ref(op) { - const ref = { - $ref: op.id - }; // if operator not yet registered, cache ref to resolve later - if (op.id < 0) (op.refs = op.refs || []).push(ref); - return ref; -} -function fieldRef$1(field, name) { - return name ? { - $field: field, - $name: name - } : { - $field: field + const encode = { + enter: enter = { + opacity: zero, + x: zero, + y: zero, + width: encoder(width), + height: encoder(height) + }, + update: (0, _vegaUtil.extend)({}, enter, { + opacity: one, + fill: { + gradient: scale, + start: start, + stop: stop + } + }), + exit: { + opacity: zero + } }; + addEncoders(encode, { + stroke: _("gradientStrokeColor"), + strokeWidth: _("gradientStrokeWidth") + }, { + // update + opacity: _("gradientOpacity") + }); + return guideMark({ + type: RectMark, + role: LegendGradientRole, + encode + }, userEncode); } -const keyFieldRef = fieldRef$1("key"); -function compareRef(fields, orders) { - return { - $compare: fields, - $order: orders +function legendGradientDiscrete(spec, scale, config, userEncode, dataRef) { + const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); + let u, v, uu, vv, adjust = ""; + vertical ? (u = "y", uu = "y2", v = "x", vv = "width", adjust = "1-") : (u = "x", uu = "x2", v = "y", vv = "height"); + const enter = { + opacity: zero, + fill: { + scale: scale, + field: Value + } }; -} -function keyRef(fields, flat) { - const ref = { - $key: fields + enter[u] = { + signal: adjust + "datum." + Perc, + mult: length }; - if (flat) ref.$flat = true; - return ref; -} // ----- -const Ascending = "ascending"; -const Descending = "descending"; -function sortKey(sort) { - return !(0, _vegaUtil.isObject)(sort) ? "" : (sort.order === Descending ? "-" : "+") + aggrField(sort.op, sort.field); -} -function aggrField(op, field) { - return (op && op.signal ? "$" + op.signal : op || "") + (op && field ? "_" : "") + (field && field.signal ? "$" + field.signal : field || ""); -} // ----- -const Scope$1 = "scope"; -const View = "view"; -function isSignal(_) { - return _ && _.signal; -} -function isExpr$1(_) { - return _ && _.expr; -} -function hasSignal(_) { - if (isSignal(_)) return true; - if ((0, _vegaUtil.isObject)(_)) for(const key in _){ - if (hasSignal(_[key])) return true; - } - return false; -} -function value(specValue, defaultValue) { - return specValue != null ? specValue : defaultValue; -} -function deref(v) { - return v && v.signal || v; -} -const Timer = "timer"; -function parseStream(stream, scope) { - const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : (0, _vegaUtil.error)("Invalid stream specification: " + (0, _vegaUtil.stringValue)(stream)); - return method(stream, scope); -} -function eventSource(source) { - return source === Scope$1 ? View : source || View; -} -function mergeStream(stream, scope) { - const list = stream.merge.map((s)=>parseStream(s, scope)), entry = streamParameters({ - merge: list - }, stream, scope); - return scope.addStream(entry).id; -} -function nestedStream(stream, scope) { - const id = parseStream(stream.stream, scope), entry = streamParameters({ - stream: id - }, stream, scope); - return scope.addStream(entry).id; + enter[v] = zero; + enter[uu] = { + signal: adjust + "datum." + Perc2, + mult: length + }; + enter[vv] = encoder(thickness); + const encode = { + enter: enter, + update: (0, _vegaUtil.extend)({}, enter, { + opacity: one + }), + exit: { + opacity: zero + } + }; + addEncoders(encode, { + stroke: _("gradientStrokeColor"), + strokeWidth: _("gradientStrokeWidth") + }, { + // update + opacity: _("gradientOpacity") + }); + return guideMark({ + type: RectMark, + role: LegendBandRole, + key: Value, + from: dataRef, + encode + }, userEncode); } -function eventStream(stream, scope) { - let id; - if (stream.type === Timer) { - id = scope.event(Timer, stream.throttle); - stream = { - between: stream.between, - filter: stream.filter +const alignExpr = `datum.${Perc}<=0?"${Left}":datum.${Perc}>=1?"${Right}":"${Center}"`, baselineExpr = `datum.${Perc}<=0?"${Bottom}":datum.${Perc}>=1?"${Top}":"${Middle}"`; +function legendGradientLabels(spec, config, userEncode, dataRef) { + const _ = lookup(spec, config), vertical = _.isVertical(), thickness = encoder(_.gradientThickness()), length = _.gradientLength(); + let overlap = _("labelOverlap"), enter, update, u, v, adjust = ""; + const encode = { + enter: enter = { + opacity: zero + }, + update: update = { + opacity: one, + text: { + field: Label + } + }, + exit: { + opacity: zero + } + }; + addEncoders(encode, { + fill: _("labelColor"), + fillOpacity: _("labelOpacity"), + font: _("labelFont"), + fontSize: _("labelFontSize"), + fontStyle: _("labelFontStyle"), + fontWeight: _("labelFontWeight"), + limit: value(spec.labelLimit, config.gradientLabelLimit) + }); + if (vertical) { + enter.align = { + value: "left" }; - } else id = scope.event(eventSource(stream.source), stream.type); - const entry = streamParameters({ - stream: id - }, stream, scope); - return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id; -} -function streamParameters(entry, stream, scope) { - let param = stream.between; - if (param) { - if (param.length !== 2) (0, _vegaUtil.error)('Stream "between" parameter must have 2 entries: ' + (0, _vegaUtil.stringValue)(stream)); - entry.between = [ - parseStream(param[0], scope), - parseStream(param[1], scope) - ]; + enter.baseline = update.baseline = { + signal: baselineExpr + }; + u = "y"; + v = "x"; + adjust = "1-"; + } else { + enter.align = update.align = { + signal: alignExpr + }; + enter.baseline = { + value: "top" + }; + u = "x"; + v = "y"; } - param = stream.filter ? [].concat(stream.filter) : []; - if (stream.marktype || stream.markname || stream.markrole) // add filter for mark type, name and/or role - param.push(filterMark(stream.marktype, stream.markname, stream.markrole)); - if (stream.source === Scope$1) // add filter to limit events from sub-scope only - param.push("inScope(event.item)"); - if (param.length) entry.filter = (0, _vegaFunctions.parseExpression)("(" + param.join(")&&(") + ")", scope).$expr; - if ((param = stream.throttle) != null) entry.throttle = +param; - if ((param = stream.debounce) != null) entry.debounce = +param; - if (stream.consume) entry.consume = true; - return entry; -} -function filterMark(type, name, role) { - const item = "event.item"; - return item + (type && type !== "*" ? "&&" + item + ".mark.marktype==='" + type + "'" : "") + (role ? "&&" + item + ".mark.role==='" + role + "'" : "") + (name ? "&&" + item + ".mark.name==='" + name + "'" : ""); + enter[u] = update[u] = { + signal: adjust + "datum." + Perc, + mult: length + }; + enter[v] = update[v] = thickness; + thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0; + overlap = overlap ? { + separation: _("labelSeparation"), + method: overlap, + order: "datum." + Index + } : undefined; // type, role, style, key, dataRef, encode, extras + return guideMark({ + type: TextMark, + role: LegendLabelRole, + style: GuideLabelStyle, + key: Value, + from: dataRef, + encode, + overlap + }, userEncode); } -const OP_VALUE_EXPR = { - code: "_.$value", - ast: { - type: "Identifier", - value: "value" +function legendSymbolGroups(spec, config, userEncode, dataRef, columns) { + const _ = lookup(spec, config), entries = userEncode.entries, interactive = !!(entries && entries.interactive), name = entries ? entries.name : undefined, height = _("clipHeight"), symbolOffset = _("symbolOffset"), valueRef = { + data: "value" + }, xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`, yEncode = height ? encoder(height) : { + field: Size + }, index = `datum.${Index}`, ncols = `max(1, ${columns})`; + let encode, enter, update, nrows, sort; + yEncode.mult = 0.5; // -- LEGEND SYMBOLS -- + encode = { + enter: enter = { + opacity: zero, + x: { + signal: xSignal, + mult: 0.5, + offset: symbolOffset + }, + y: yEncode + }, + update: update = { + opacity: one, + x: enter.x, + y: enter.y + }, + exit: { + opacity: zero + } + }; + let baseFill = null, baseStroke = null; + if (!spec.fill) { + baseFill = config.symbolBaseFillColor; + baseStroke = config.symbolBaseStrokeColor; } -}; -function parseUpdate(spec, scope, target) { - const encode = spec.encode, entry = { - target: target + addEncoders(encode, { + fill: _("symbolFillColor", baseFill), + shape: _("symbolType"), + size: _("symbolSize"), + stroke: _("symbolStrokeColor", baseStroke), + strokeDash: _("symbolDash"), + strokeDashOffset: _("symbolDashOffset"), + strokeWidth: _("symbolStrokeWidth") + }, { + // update + opacity: _("symbolOpacity") + }); + LegendScales.forEach((scale)=>{ + if (spec[scale]) update[scale] = enter[scale] = { + scale: spec[scale], + field: Value + }; + }); + const symbols = guideMark({ + type: SymbolMark, + role: LegendSymbolRole, + key: Value, + from: valueRef, + clip: height ? true : undefined, + encode + }, userEncode.symbols); // -- LEGEND LABELS -- + const labelOffset = encoder(symbolOffset); + labelOffset.offset = _("labelOffset"); + encode = { + enter: enter = { + opacity: zero, + x: { + signal: xSignal, + offset: labelOffset + }, + y: yEncode + }, + update: update = { + opacity: one, + text: { + field: Label + }, + x: enter.x, + y: enter.y + }, + exit: { + opacity: zero + } }; - let events = spec.events, update = spec.update, sources = []; - if (!events) (0, _vegaUtil.error)("Signal update missing events specification."); - // interpret as an event selector string - if ((0, _vegaUtil.isString)(events)) events = (0, _vegaEventSelector.parseSelector)(events, scope.isSubscope() ? Scope$1 : View); - // separate event streams from signal updates - events = (0, _vegaUtil.array)(events).filter((s)=>s.signal || s.scale ? (sources.push(s), 0) : 1); // merge internal operator listeners - if (sources.length > 1) sources = [ - mergeSources(sources) - ]; - // merge event streams, include as source - if (events.length) sources.push(events.length > 1 ? { - merge: events - } : events[0]); - if (encode != null) { - if (update) (0, _vegaUtil.error)("Signal encode and update are mutually exclusive."); - update = "encode(item()," + (0, _vegaUtil.stringValue)(encode) + ")"; - } // resolve update value - entry.update = (0, _vegaUtil.isString)(update) ? (0, _vegaFunctions.parseExpression)(update, scope) : update.expr != null ? (0, _vegaFunctions.parseExpression)(update.expr, scope) : update.value != null ? update.value : update.signal != null ? { - $expr: OP_VALUE_EXPR, - $params: { - $value: scope.signalRef(update.signal) + addEncoders(encode, { + align: _("labelAlign"), + baseline: _("labelBaseline"), + fill: _("labelColor"), + fillOpacity: _("labelOpacity"), + font: _("labelFont"), + fontSize: _("labelFontSize"), + fontStyle: _("labelFontStyle"), + fontWeight: _("labelFontWeight"), + limit: _("labelLimit") + }); + const labels = guideMark({ + type: TextMark, + role: LegendLabelRole, + style: GuideLabelStyle, + key: Value, + from: valueRef, + encode + }, userEncode.labels); // -- LEGEND ENTRY GROUPS -- + encode = { + enter: { + noBound: { + value: !height + }, + // ignore width/height in bounds calc + width: zero, + height: height ? encoder(height) : zero, + opacity: zero + }, + exit: { + opacity: zero + }, + update: update = { + opacity: one, + row: { + signal: null + }, + column: { + signal: null + } + } + }; // annotate and sort groups to ensure correct ordering + if (_.isVertical(true)) { + nrows = `ceil(item.mark.items.length / ${ncols})`; + update.row.signal = `${index}%${nrows}`; + update.column.signal = `floor(${index} / ${nrows})`; + sort = { + field: [ + "row", + index + ] + }; + } else { + update.row.signal = `floor(${index} / ${ncols})`; + update.column.signal = `${index} % ${ncols}`; + sort = { + field: index + }; + } // handle zero column case (implies infinite columns) + update.column.signal = `(${columns})?${update.column.signal}:${index}`; // facet legend entries into sub-groups + dataRef = { + facet: { + data: dataRef, + name: "value", + groupby: Index } - } : (0, _vegaUtil.error)("Invalid signal update specification."); - if (spec.force) entry.options = { - force: true }; - sources.forEach((source)=>scope.addUpdate((0, _vegaUtil.extend)(streamSource(source, scope), entry))); + return guideGroup({ + role: ScopeRole, + from: dataRef, + encode: extendEncode(encode, entries, Skip), + marks: [ + symbols, + labels + ], + name, + interactive, + sort + }); } -function streamSource(stream, scope) { +function legendSymbolLayout(spec, config) { + const _ = lookup(spec, config); // layout parameters for legend entries return { - source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope) + align: _("gridAlign"), + columns: _.entryColumns(), + center: { + row: true, + column: false + }, + padding: { + row: _("rowPadding"), + column: _("columnPadding") + } }; } -function mergeSources(sources) { - return { - signal: "[" + sources.map((s)=>s.scale ? 'scale("' + s.scale + '")' : s.signal) + "]" +const isL = 'item.orient === "left"', isR = 'item.orient === "right"', isLR = `(${isL} || ${isR})`, isVG = `datum.vgrad && ${isLR}`, baseline = anchorExpr('"top"', '"bottom"', '"middle"'), alignFlip = anchorExpr('"right"', '"left"', '"center"'), exprAlign = `datum.vgrad && ${isR} ? (${alignFlip}) : (${isLR} && !(datum.vgrad && ${isL})) ? "left" : ${alignExpr$1}`, exprAnchor = `item._anchor || (${isLR} ? "middle" : "start")`, exprAngle = `${isVG} ? (${isL} ? -90 : 90) : 0`, exprBaseline = `${isLR} ? (datum.vgrad ? (${isR} ? "bottom" : "top") : ${baseline}) : "top"`; +function legendTitle(spec, config, userEncode, dataRef) { + const _ = lookup(spec, config); + const encode = { + enter: { + opacity: zero + }, + update: { + opacity: one, + x: { + field: { + group: "padding" + } + }, + y: { + field: { + group: "padding" + } + } + }, + exit: { + opacity: zero + } }; + addEncoders(encode, { + orient: _("titleOrient"), + _anchor: _("titleAnchor"), + anchor: { + signal: exprAnchor + }, + angle: { + signal: exprAngle + }, + align: { + signal: exprAlign + }, + baseline: { + signal: exprBaseline + }, + text: spec.title, + fill: _("titleColor"), + fillOpacity: _("titleOpacity"), + font: _("titleFont"), + fontSize: _("titleFontSize"), + fontStyle: _("titleFontStyle"), + fontWeight: _("titleFontWeight"), + limit: _("titleLimit"), + lineHeight: _("titleLineHeight") + }, { + // require update + align: _("titleAlign"), + baseline: _("titleBaseline") + }); + return guideMark({ + type: TextMark, + role: LegendTitleRole, + style: GuideTitleStyle, + from: dataRef, + encode + }, userEncode); } -function parseSignalUpdates(signal, scope) { - const op = scope.getSignal(signal.name); - let expr = signal.update; - if (signal.init) { - if (expr) (0, _vegaUtil.error)("Signals can not include both init and update expressions."); - else { - expr = signal.init; - op.initonly = true; - } - } - if (expr) { - expr = (0, _vegaFunctions.parseExpression)(expr, scope); - op.update = expr.$expr; - op.params = expr.$params; +function clip(clip, scope) { + let expr; + if ((0, _vegaUtil.isObject)(clip)) { + if (clip.signal) expr = clip.signal; + else if (clip.path) expr = "pathShape(" + param(clip.path) + ")"; + else if (clip.sphere) expr = "geoShape(" + param(clip.sphere) + ', {type: "Sphere"})'; } - if (signal.on) signal.on.forEach((_)=>parseUpdate(_, scope, op.id)); + return expr ? scope.signalRef(expr) : !!clip; } -const transform = (name)=>(params, value, parent)=>entry(name, value, params || undefined, parent); -const Aggregate = transform("aggregate"); -const AxisTicks = transform("axisticks"); -const Bound = transform("bound"); -const Collect = transform("collect"); -const Compare = transform("compare"); -const DataJoin = transform("datajoin"); -const Encode = transform("encode"); -const Expression = transform("expression"); -const Facet = transform("facet"); -const Field = transform("field"); -const Key = transform("key"); -const LegendEntries = transform("legendentries"); -const Load = transform("load"); -const Mark = transform("mark"); -const MultiExtent = transform("multiextent"); -const MultiValues = transform("multivalues"); -const Overlap = transform("overlap"); -const Params = transform("params"); -const PreFacet = transform("prefacet"); -const Projection = transform("projection"); -const Proxy = transform("proxy"); -const Relay = transform("relay"); -const Render = transform("render"); -const Scale = transform("scale"); -const Sieve = transform("sieve"); -const SortItems = transform("sortitems"); -const ViewLayout = transform("viewlayout"); -const Values = transform("values"); -let FIELD_REF_ID = 0; -const MULTIDOMAIN_SORT_OPS = { - min: "min", - max: "max", - count: "sum" -}; -function initScale(spec, scope) { - const type = spec.type || "linear"; - if (!(0, _vegaScale.isValidScaleType)(type)) (0, _vegaUtil.error)("Unrecognized scale type: " + (0, _vegaUtil.stringValue)(type)); - scope.addScale(spec.name, { - type, - domain: undefined - }); +function param(value) { + return (0, _vegaUtil.isObject)(value) && value.signal ? value.signal : (0, _vegaUtil.stringValue)(value); } -function parseScale(spec, scope) { - const params = scope.getScale(spec.name).params; - let key; - params.domain = parseScaleDomain(spec.domain, spec, scope); - if (spec.range != null) params.range = parseScaleRange(spec, scope, params); - if (spec.interpolate != null) parseScaleInterpolate(spec.interpolate, params); - if (spec.nice != null) params.nice = parseScaleNice(spec.nice); - if (spec.bins != null) params.bins = parseScaleBins(spec.bins, scope); - for(key in spec){ - if ((0, _vegaUtil.hasOwnProperty)(params, key) || key === "name") continue; - params[key] = parseLiteral(spec[key], scope); - } +function getRole(spec) { + const role = spec.role || ""; + return !role.indexOf("axis") || !role.indexOf("legend") || !role.indexOf("title") ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole; } -function parseLiteral(v, scope) { - return !(0, _vegaUtil.isObject)(v) ? v : v.signal ? scope.signalRef(v.signal) : (0, _vegaUtil.error)("Unsupported object: " + (0, _vegaUtil.stringValue)(v)); +function definition(spec) { + return { + marktype: spec.type, + name: spec.name || undefined, + role: spec.role || getRole(spec), + zindex: +spec.zindex || undefined, + aria: spec.aria, + description: spec.description + }; } -function parseArray(v, scope) { - return v.signal ? scope.signalRef(v.signal) : v.map((v)=>parseLiteral(v, scope)); +function interactive(spec, scope) { + return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true; } -function dataLookupError(name) { - (0, _vegaUtil.error)("Can not find data set: " + (0, _vegaUtil.stringValue)(name)); -} // -- SCALE DOMAIN ---- -function parseScaleDomain(domain, spec, scope) { - if (!domain) { - if (spec.domainMin != null || spec.domainMax != null) (0, _vegaUtil.error)("No scale domain defined for domainMin/domainMax to override."); - return; // default domain +/** + * Parse a data transform specification. + */ function parseTransform(spec, scope) { + const def = (0, _vegaDataflow.definition)(spec.type); + if (!def) (0, _vegaUtil.error)("Unrecognized transform type: " + (0, _vegaUtil.stringValue)(spec.type)); + const t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope)); + if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t)); + t.metadata = def.metadata || {}; + return t; +} +/** + * Parse all parameters of a data transform. + */ function parseParameters(def, spec, scope) { + const params = {}, n = def.params.length; + for(let i = 0; i < n; ++i){ + const pdef = def.params[i]; + params[pdef.name] = parseParameter(pdef, spec, scope); } - return domain.signal ? scope.signalRef(domain.signal) : ((0, _vegaUtil.isArray)(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope); + return params; } -function explicitDomain(domain, spec, scope) { - return domain.map((v)=>parseLiteral(v, scope)); +/** + * Parse a data transform parameter. + */ function parseParameter(def, spec, scope) { + const type = def.type, value = spec[def.name]; + if (type === "index") return parseIndexParameter(def, spec, scope); + else if (value === undefined) { + if (def.required) (0, _vegaUtil.error)("Missing required " + (0, _vegaUtil.stringValue)(spec.type) + " parameter: " + (0, _vegaUtil.stringValue)(def.name)); + return; + } else if (type === "param") return parseSubParameters(def, spec, scope); + else if (type === "projection") return scope.projectionRef(spec[def.name]); + return def.array && !isSignal(value) ? value.map((v)=>parameterValue(def, v, scope)) : parameterValue(def, value, scope); } -function singularDomain(domain, spec, scope) { - const data = scope.getData(domain.data); - if (!data) dataLookupError(domain.data); - return (0, _vegaScale.isDiscrete)(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : (0, _vegaScale.isQuantile)(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field); +/** + * Parse a single parameter value. + */ function parameterValue(def, value, scope) { + const type = def.type; + if (isSignal(value)) return isExpr(type) ? (0, _vegaUtil.error)("Expression references can not be signals.") : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal); + else { + const expr = def.expr || isField(type); + return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? (0, _vegaFunctions.parseExpression)(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value; + } } -function multipleDomain(domain, spec, scope) { - const data = domain.data, fields = domain.fields.reduce((dom, d)=>{ - d = (0, _vegaUtil.isString)(d) ? { - data: data, - field: d - } : (0, _vegaUtil.isArray)(d) || d.signal ? fieldRef(d, scope) : d; - dom.push(d); - return dom; - }, []); - return ((0, _vegaScale.isDiscrete)(spec.type) ? ordinalMultipleDomain : (0, _vegaScale.isQuantile)(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields); +/** + * Parse parameter for accessing an index of another data set. + */ function parseIndexParameter(def, spec, scope) { + if (!(0, _vegaUtil.isString)(spec.from)) (0, _vegaUtil.error)('Lookup "from" parameter must be a string literal.'); + return scope.getData(spec.from).lookupRef(scope, spec.key); } -function fieldRef(data, scope) { - const name = "_:vega:_" + FIELD_REF_ID++, coll = Collect({}); - if ((0, _vegaUtil.isArray)(data)) coll.value = { - $ingest: data - }; - else if (data.signal) { - const code = "setdata(" + (0, _vegaUtil.stringValue)(name) + "," + data.signal + ")"; - coll.params.input = scope.signalRef(code); - } - scope.addDataPipeline(name, [ - coll, - Sieve({}) - ]); +/** + * Parse a parameter that contains one or more sub-parameter objects. + */ function parseSubParameters(def, spec, scope) { + const value = spec[def.name]; + if (def.array) { + if (!(0, _vegaUtil.isArray)(value)) // signals not allowed! + (0, _vegaUtil.error)("Expected an array of sub-parameters. Instead: " + (0, _vegaUtil.stringValue)(value)); + return value.map((v)=>parseSubParameter(def, v, scope)); + } else return parseSubParameter(def, value, scope); +} +/** + * Parse a sub-parameter object. + */ function parseSubParameter(def, value, scope) { + const n = def.params.length; + let pdef; // loop over defs to find matching key + for(let i = 0; i < n; ++i){ + pdef = def.params[i]; + for(const k in pdef.key)if (pdef.key[k] !== value[k]) { + pdef = null; + break; + } + if (pdef) break; + } // raise error if matching key not found + if (!pdef) (0, _vegaUtil.error)("Unsupported parameter: " + (0, _vegaUtil.stringValue)(value)); // parse params, create Params transform, return ref + const params = (0, _vegaUtil.extend)(parseParameters(pdef, value, scope), pdef.key); + return ref(scope.add(Params(params))); +} // -- Utilities ----- +const outerExpr = (_)=>_ && _.expr; +const outerField = (_)=>_ && _.field; +const isData = (_)=>_ === "data"; +const isExpr = (_)=>_ === "expr"; +const isField = (_)=>_ === "field"; +const isCompare = (_)=>_ === "compare"; +function parseData$1(from, group, scope) { + let facet, key, op, dataRef, parent; // if no source data, generate singleton datum + if (!from) dataRef = ref(scope.add(Collect(null, [ + {} + ]))); + else if (facet = from.facet) { + if (!group) (0, _vegaUtil.error)("Only group marks can be faceted."); // use pre-faceted source data, if available + if (facet.field != null) dataRef = parent = getDataRef(facet, scope); + else { + // generate facet aggregates if no direct data specification + if (!from.data) { + op = parseTransform((0, _vegaUtil.extend)({ + type: "aggregate", + groupby: (0, _vegaUtil.array)(facet.groupby) + }, facet.aggregate), scope); + op.params.key = scope.keyRef(facet.groupby); + op.params.pulse = getDataRef(facet, scope); + dataRef = parent = ref(scope.add(op)); + } else parent = ref(scope.getData(from.data).aggregate); + key = scope.keyRef(facet.groupby, true); + } + } // if not yet defined, get source data reference + if (!dataRef) dataRef = getDataRef(from, scope); return { - data: name, - field: "data" + key: key, + pulse: dataRef, + parent: parent }; } -function ordinalMultipleDomain(domain, scope, fields) { - const sort = parseSort(domain.sort, true); - let a, v; // get value counts for each domain field - const counts = fields.map((f)=>{ - const data = scope.getData(f.data); - if (!data) dataLookupError(f.data); - return data.countsRef(scope, f.field, sort); - }); // aggregate the results from each domain field - const p = { - groupby: keyFieldRef, - pulse: counts - }; - if (sort) { - a = sort.op || "count"; - v = sort.field ? aggrField(a, sort.field) : "count"; +function getDataRef(from, scope) { + return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output); +} +function DataScope(scope, input, output, values, aggr) { + this.scope = scope; // parent scope object + this.input = input; // first operator in pipeline (tuple input) + this.output = output; // last operator in pipeline (tuple output) + this.values = values; // operator for accessing tuples (but not tuple flow) + // last aggregate in transform pipeline + this.aggregate = aggr; // lookup table of field indices + this.index = {}; +} +DataScope.fromEntries = function(scope, entries) { + const n = entries.length, values = entries[n - 1], output = entries[n - 2]; + let input = entries[0], aggr = null, i = 1; + if (input && input.type === "load") input = entries[1]; + // add operator entries to this scope, wire up pulse chain + scope.add(entries[0]); + for(; i < n; ++i){ + entries[i].params.pulse = ref(entries[i - 1]); + scope.add(entries[i]); + if (entries[i].type === "aggregate") aggr = entries[i]; + } + return new DataScope(scope, input, output, values, aggr); +}; +function fieldKey(field) { + return (0, _vegaUtil.isString)(field) ? field : null; +} +function addSortField(scope, p, sort) { + const as = aggrField(sort.op, sort.field); + let s; + if (p.ops) for(let i = 0, n = p.as.length; i < n; ++i){ + if (p.as[i] === as) return; + } + else { p.ops = [ - MULTIDOMAIN_SORT_OPS[a] + "count" ]; p.fields = [ - scope.fieldRef(v) + null ]; p.as = [ - v + "count" ]; } - a = scope.add(Aggregate(p)); // collect aggregate output - const c = scope.add(Collect({ - pulse: ref(a) - })); // extract values for combined domain - v = scope.add(Values({ - field: keyFieldRef, - sort: scope.sortRef(sort), - pulse: ref(c) - })); - return ref(v); + if (sort.op) { + p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op); + p.fields.push(scope.fieldRef(sort.field)); + p.as.push(as); + } } -function parseSort(sort, multidomain) { - if (sort) { - if (!sort.field && !sort.op) { - if ((0, _vegaUtil.isObject)(sort)) sort.field = "key"; - else sort = { - field: "key" - }; - } else if (!sort.field && sort.op !== "count") (0, _vegaUtil.error)("No field provided for sort aggregate op: " + sort.op); - else if (multidomain && sort.field) { - if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) (0, _vegaUtil.error)("Multiple domain scales can not be sorted using " + sort.op); +function cache(scope, ds, name, optype, field, counts, index) { + const cache = ds[name] || (ds[name] = {}), sort = sortKey(counts); + let k = fieldKey(field), v, op; + if (k != null) { + scope = ds.scope; + k = k + (sort ? "|" + sort : ""); + v = cache[k]; + } + if (!v) { + const params = counts ? { + field: keyFieldRef, + pulse: ds.countsRef(scope, field, counts) + } : { + field: scope.fieldRef(field), + pulse: ref(ds.output) + }; + if (sort) params.sort = scope.sortRef(counts); + op = scope.add(entry(optype, undefined, params)); + if (index) ds.index[field] = op; + v = ref(op); + if (k != null) cache[k] = v; + } + return v; +} +DataScope.prototype = { + countsRef (scope, field, sort) { + const ds = this, cache = ds.counts || (ds.counts = {}), k = fieldKey(field); + let v, a, p; + if (k != null) { + scope = ds.scope; + v = cache[k]; } + if (!v) { + p = { + groupby: scope.fieldRef(field, "key"), + pulse: ref(ds.output) + }; + if (sort && sort.field) addSortField(scope, p, sort); + a = scope.add(Aggregate(p)); + v = scope.add(Collect({ + pulse: ref(a) + })); + v = { + agg: a, + ref: ref(v) + }; + if (k != null) cache[k] = v; + } else if (sort && sort.field) addSortField(scope, v.agg.params, sort); + return v.ref; + }, + tuplesRef () { + return ref(this.values); + }, + extentRef (scope, field) { + return cache(scope, this, "extent", "extent", field, false); + }, + domainRef (scope, field) { + return cache(scope, this, "domain", "values", field, false); + }, + valuesRef (scope, field, sort) { + return cache(scope, this, "vals", "values", field, sort || true); + }, + lookupRef (scope, field) { + return cache(scope, this, "lookup", "tupleindex", field, false); + }, + indataRef (scope, field) { + return cache(scope, this, "indata", "tupleindex", field, true, true); } - return sort; +}; +function parseFacet(spec, scope, group) { + const facet = spec.from.facet, name = facet.name, data = getDataRef(facet, scope); + let op; + if (!facet.name) (0, _vegaUtil.error)("Facet must have a name: " + (0, _vegaUtil.stringValue)(facet)); + if (!facet.data) (0, _vegaUtil.error)("Facet must reference a data set: " + (0, _vegaUtil.stringValue)(facet)); + if (facet.field) op = scope.add(PreFacet({ + field: scope.fieldRef(facet.field), + pulse: data + })); + else if (facet.groupby) op = scope.add(Facet({ + key: scope.keyRef(facet.groupby), + group: ref(scope.proxy(group.parent)), + pulse: data + })); + else (0, _vegaUtil.error)("Facet must specify groupby or field: " + (0, _vegaUtil.stringValue)(facet)); + // initialize facet subscope + const subscope = scope.fork(), source = subscope.add(Collect()), values = subscope.add(Sieve({ + pulse: ref(source) + })); + subscope.addData(name, new DataScope(subscope, source, source, values)); + subscope.addSignal("parent", null); // parse faceted subflow + op.params.subflow = { + $subflow: subscope.parse(spec).toRuntime() + }; } -function quantileMultipleDomain(domain, scope, fields) { - // get value arrays for each domain field - const values = fields.map((f)=>{ - const data = scope.getData(f.data); - if (!data) dataLookupError(f.data); - return data.domainRef(scope, f.field); - }); // combine value arrays - return ref(scope.add(MultiValues({ - values: values - }))); +function parseSubflow(spec, scope, input) { + const op = scope.add(PreFacet({ + pulse: input.pulse + })), subscope = scope.fork(); + subscope.add(Sieve()); + subscope.addSignal("parent", null); // parse group mark subflow + op.params.subflow = { + $subflow: subscope.parse(spec).toRuntime() + }; } -function numericMultipleDomain(domain, scope, fields) { - // get extents for each domain field - const extents = fields.map((f)=>{ - const data = scope.getData(f.data); - if (!data) dataLookupError(f.data); - return data.extentRef(scope, f.field); - }); // combine extents - return ref(scope.add(MultiExtent({ - extents: extents - }))); -} // -- SCALE BINS ----- -function parseScaleBins(v, scope) { - return v.signal || (0, _vegaUtil.isArray)(v) ? parseArray(v, scope) : scope.objectProperty(v); -} // -- SCALE NICE ----- -function parseScaleNice(nice) { - return (0, _vegaUtil.isObject)(nice) ? { - interval: parseLiteral(nice.interval), - step: parseLiteral(nice.step) - } : parseLiteral(nice); -} // -- SCALE INTERPOLATION ----- -function parseScaleInterpolate(interpolate, params) { - params.interpolate = parseLiteral(interpolate.type || interpolate); - if (interpolate.gamma != null) params.interpolateGamma = parseLiteral(interpolate.gamma); -} // -- SCALE RANGE ----- -function parseScaleRange(spec, scope, params) { - const config = scope.config.range; - let range = spec.range; - if (range.signal) return scope.signalRef(range.signal); - else if ((0, _vegaUtil.isString)(range)) { - if (config && (0, _vegaUtil.hasOwnProperty)(config, range)) { - spec = (0, _vegaUtil.extend)({}, spec, { - range: config[range] - }); - return parseScaleRange(spec, scope, params); - } else if (range === "width") range = [ - 0, - { - signal: "width" - } - ]; - else if (range === "height") range = (0, _vegaScale.isDiscrete)(spec.type) ? [ - 0, - { - signal: "height" - } - ] : [ - { - signal: "height" - }, - 0 - ]; - else (0, _vegaUtil.error)("Unrecognized scale range value: " + (0, _vegaUtil.stringValue)(range)); - } else if (range.scheme) { - params.scheme = (0, _vegaUtil.isArray)(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope); - if (range.extent) params.schemeExtent = parseArray(range.extent, scope); - if (range.count) params.schemeCount = parseLiteral(range.count, scope); - return; - } else if (range.step) { - params.rangeStep = parseLiteral(range.step, scope); - return; - } else if ((0, _vegaScale.isDiscrete)(spec.type) && !(0, _vegaUtil.isArray)(range)) return parseScaleDomain(range, spec, scope); - else if (!(0, _vegaUtil.isArray)(range)) (0, _vegaUtil.error)("Unsupported range type: " + (0, _vegaUtil.stringValue)(range)); - return range.map((v)=>((0, _vegaUtil.isArray)(v) ? parseArray : parseLiteral)(v, scope)); +function parseTrigger(spec, scope, name) { + const remove = spec.remove, insert = spec.insert, toggle = spec.toggle, modify = spec.modify, values = spec.values, op = scope.add(operator()); + const update = "if(" + spec.trigger + ',modify("' + name + '",' + [ + insert, + remove, + toggle, + modify, + values + ].map((_)=>_ == null ? "null" : _).join(",") + "),0)"; + const expr = (0, _vegaFunctions.parseExpression)(update, scope); + op.update = expr.$expr; + op.params = expr.$params; } -function parseProjection(proj, scope) { - const config = scope.config.projection || {}, params = {}; - for(const name in proj){ - if (name === "name") continue; - params[name] = parseParameter$1(proj[name], name, scope); - } // apply projection defaults from config - for(const name1 in config)if (params[name1] == null) params[name1] = parseParameter$1(config[name1], name1, scope); - scope.addProjection(proj.name, params); +function parseMark(spec, scope) { + const role = getRole(spec), group = spec.type === GroupMark, facet = spec.from && spec.from.facet, overlap = spec.overlap; + let layout = spec.layout || role === ScopeRole || role === FrameRole, ops, op, store, enc, name, layoutRef, boundRef; + const nested = role === MarkRole || layout || facet; // resolve input data + const input = parseData$1(spec.from, group, scope); // data join to map tuples to visual items + op = scope.add(DataJoin({ + key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined), + pulse: input.pulse, + clean: !group + })); + const joinRef = ref(op); // collect visual items + op = store = scope.add(Collect({ + pulse: joinRef + })); // connect visual items to scenegraph + op = scope.add(Mark({ + markdef: definition(spec), + interactive: interactive(spec.interactive, scope), + clip: clip(spec.clip, scope), + context: { + $context: true + }, + groups: scope.lookup(), + parent: scope.signals.parent ? scope.signalRef("parent") : null, + index: scope.markpath(), + pulse: ref(op) + })); + const markRef = ref(op); // add visual encoders + op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, { + mod: false, + pulse: markRef + }))); // monitor parent marks to propagate changes + op.params.parent = scope.encode(); // add post-encoding transforms, if defined + if (spec.transform) spec.transform.forEach((_)=>{ + const tx = parseTransform(_, scope), md = tx.metadata; + if (md.generates || md.changes) (0, _vegaUtil.error)("Mark transforms should not generate new data."); + if (!md.nomod) enc.params.mod = true; // update encode mod handling + tx.params.pulse = ref(op); + scope.add(op = tx); + }); + // if item sort specified, perform post-encoding + if (spec.sort) op = scope.add(SortItems({ + sort: scope.compareRef(spec.sort), + pulse: ref(op) + })); + const encodeRef = ref(op); // add view layout operator if needed + if (facet || layout) { + layout = scope.add(ViewLayout({ + layout: scope.objectProperty(spec.layout), + legends: scope.legends, + mark: markRef, + pulse: encodeRef + })); + layoutRef = ref(layout); + } // compute bounding boxes + const bound = scope.add(Bound({ + mark: markRef, + pulse: layoutRef || encodeRef + })); + boundRef = ref(bound); // if group mark, recurse to parse nested content + if (group) { + // juggle layout & bounds to ensure they run *after* any faceting transforms + if (nested) { + ops = scope.operators; + ops.pop(); + if (layout) ops.pop(); + } + scope.pushState(encodeRef, layoutRef || boundRef, joinRef); + facet ? parseFacet(spec, scope, input) // explicit facet + : nested ? parseSubflow(spec, scope, input) // standard mark group + : scope.parse(spec); // guide group, we can avoid nested scopes + scope.popState(); + if (nested) { + if (layout) ops.push(layout); + ops.push(bound); + } + } // if requested, add overlap removal transform + if (overlap) boundRef = parseOverlap(overlap, boundRef, scope); + // render / sieve items + const render = scope.add(Render({ + pulse: boundRef + })), sieve = scope.add(Sieve({ + pulse: ref(render) + }, undefined, scope.parent())); // if mark is named, make accessible as reactive geometry + // add trigger updates if defined + if (spec.name != null) { + name = spec.name; + scope.addData(name, new DataScope(scope, store, render, sieve)); + if (spec.on) spec.on.forEach((on)=>{ + if (on.insert || on.remove || on.toggle) (0, _vegaUtil.error)("Marks only support modify triggers."); + parseTrigger(on, scope, name); + }); + } } -function parseParameter$1(_, name, scope) { - return (0, _vegaUtil.isArray)(_) ? _.map((_)=>parseParameter$1(_, name, scope)) : !(0, _vegaUtil.isObject)(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === "fit" ? _ : (0, _vegaUtil.error)("Unsupported parameter object: " + (0, _vegaUtil.stringValue)(_)); +function parseOverlap(overlap, source, scope) { + const method = overlap.method, bound = overlap.bound, sep = overlap.separation; + const params = { + separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep, + method: isSignal(method) ? scope.signalRef(method.signal) : method, + pulse: source + }; + if (overlap.order) params.sort = scope.compareRef({ + field: overlap.order + }); + if (bound) { + const tol = bound.tolerance; + params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol; + params.boundScale = scope.scaleRef(bound.scale); + params.boundOrient = bound.orient; + } + return ref(scope.add(Overlap(params))); } -const Top = "top"; -const Left = "left"; -const Right = "right"; -const Bottom = "bottom"; -const Center = "center"; -const Vertical = "vertical"; -const Start = "start"; -const Middle = "middle"; -const End = "end"; -const Index = "index"; -const Label = "label"; -const Offset = "offset"; -const Perc = "perc"; -const Perc2 = "perc2"; -const Value = "value"; -const GuideLabelStyle = "guide-label"; -const GuideTitleStyle = "guide-title"; -const GroupTitleStyle = "group-title"; -const GroupSubtitleStyle = "group-subtitle"; -const Symbols = "symbol"; -const Gradient = "gradient"; -const Discrete = "discrete"; -const Size = "size"; -const Shape = "shape"; -const Fill = "fill"; -const Stroke = "stroke"; -const StrokeWidth = "strokeWidth"; -const StrokeDash = "strokeDash"; -const Opacity = "opacity"; // Encoding channels supported by legends -// In priority order of 'canonical' scale -const LegendScales = [ - Size, - Shape, - Fill, - Stroke, - StrokeWidth, - StrokeDash, - Opacity -]; -const Skip = { - name: 1, - style: 1, - interactive: 1 -}; -const zero = { - value: 0 -}; -const one = { - value: 1 -}; -const GroupMark = "group"; -const RectMark = "rect"; -const RuleMark = "rule"; -const SymbolMark = "symbol"; -const TextMark = "text"; -function guideGroup(mark) { - mark.type = GroupMark; - mark.interactive = mark.interactive || false; - return mark; +function parseLegend(spec, scope) { + const config = scope.config.legend, encode = spec.encode || {}, _ = lookup(spec, config), legendEncode = encode.legend || {}, name = legendEncode.name || undefined, interactive = legendEncode.interactive, style = legendEncode.style, scales = {}; + let scale = 0, entryLayout, params, children; // resolve scales and 'canonical' scale name + LegendScales.forEach((s)=>spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0); + if (!scale) (0, _vegaUtil.error)("Missing valid scale for legend."); // resolve legend type (symbol, gradient, or discrete gradient) + const type = legendType(spec, scope.scaleType(scale)); // single-element data source for legend group + const datum = { + title: spec.title != null, + scales: scales, + type: type, + vgrad: type !== "symbol" && _.isVertical() + }; + const dataRef = ref(scope.add(Collect(null, [ + datum + ]))); // encoding properties for legend entry sub-group + const entryEncode = { + enter: { + x: { + value: 0 + }, + y: { + value: 0 + } + } + }; // data source for legend values + const entryRef = ref(scope.add(LegendEntries(params = { + type: type, + scale: scope.scaleRef(scale), + count: scope.objectProperty(_("tickCount")), + limit: scope.property(_("symbolLimit")), + values: scope.objectProperty(spec.values), + minstep: scope.property(spec.tickMinStep), + formatType: scope.property(spec.formatType), + formatSpecifier: scope.property(spec.format) + }))); // continuous gradient legend + if (type === Gradient) { + children = [ + legendGradient(spec, scale, config, encode.gradient), + legendGradientLabels(spec, config, encode.labels, entryRef) + ]; // adjust default tick count based on the gradient length + params.count = params.count || scope.signalRef(`max(2,2*floor((${deref(_.gradientLength())})/100))`); + } else if (type === Discrete) children = [ + legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), + legendGradientLabels(spec, config, encode.labels, entryRef) + ]; + else { + // determine legend symbol group layout + entryLayout = legendSymbolLayout(spec, config); + children = [ + legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns)) + ]; // pass symbol size information to legend entry generator + params.size = sizeExpression(spec, scope, children[0].marks); + } // generate legend marks + children = [ + guideGroup({ + role: LegendEntryRole, + from: dataRef, + encode: entryEncode, + marks: children, + layout: entryLayout, + interactive + }) + ]; // include legend title if defined + if (datum.title) children.push(legendTitle(spec, config, encode.title, dataRef)); + // parse legend specification + return parseMark(guideGroup({ + role: LegendRole, + from: dataRef, + encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip), + marks: children, + aria: _("aria"), + description: _("description"), + zindex: _("zindex"), + name, + interactive, + style + }), scope); } -function lookup(spec, config) { - const _ = (name, dflt)=>value(spec[name], value(config[name], dflt)); - _.isVertical = (s)=>Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection)); - _.gradientLength = ()=>value(spec.gradientLength, config.gradientLength || config.gradientWidth); - _.gradientThickness = ()=>value(spec.gradientThickness, config.gradientThickness || config.gradientHeight); - _.entryColumns = ()=>value(spec.columns, value(config.columns, +_.isVertical(true))); - return _; +function legendType(spec, scaleType) { + let type = spec.type || Symbols; + if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) type = (0, _vegaScale.isContinuous)(scaleType) ? Gradient : (0, _vegaScale.isDiscretizing)(scaleType) ? Discrete : Symbols; + return type !== Gradient ? type : (0, _vegaScale.isDiscretizing)(scaleType) ? Discrete : Gradient; } -function getEncoding(name, encode) { - const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]); - return v && v.signal ? v : v ? v.value : null; +function scaleCount(spec) { + return LegendScales.reduce((count, type)=>count + (spec[type] ? 1 : 0), 0); } -function getStyle(name, scope, style) { - const s = scope.config.style[style]; - return s && s[name]; +function buildLegendEncode(_, spec, config) { + const encode = { + enter: {}, + update: {} + }; + addEncoders(encode, { + orient: _("orient"), + offset: _("offset"), + padding: _("padding"), + titlePadding: _("titlePadding"), + cornerRadius: _("cornerRadius"), + fill: _("fillColor"), + stroke: _("strokeColor"), + strokeWidth: config.strokeWidth, + strokeDash: config.strokeDash, + x: _("legendX"), + y: _("legendY"), + // accessibility support + format: spec.format, + formatType: spec.formatType + }); + return encode; } -function anchorExpr(s, e, m) { - return `item.anchor === '${Start}' ? ${s} : item.anchor === '${End}' ? ${e} : ${m}`; +function sizeExpression(spec, scope, marks) { + const size = deref(getChannel("size", spec, marks)), strokeWidth = deref(getChannel("strokeWidth", spec, marks)), fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle)); + return (0, _vegaFunctions.parseExpression)(`max(ceil(sqrt(${size})+${strokeWidth}),${fontSize})`, scope); } -const alignExpr$1 = anchorExpr((0, _vegaUtil.stringValue)(Left), (0, _vegaUtil.stringValue)(Right), (0, _vegaUtil.stringValue)(Center)); -function tickBand(_) { - const v = _("tickBand"); - let offset = _("tickOffset"), band, extra; - if (!v) { - // if no tick band entry, fall back on other properties - band = _("bandPosition"); - extra = _("tickExtra"); - } else if (v.signal) { - // if signal, augment code to interpret values - band = { - signal: `(${v.signal}) === 'extent' ? 1 : 0.5` - }; - extra = { - signal: `(${v.signal}) === 'extent'` - }; - if (!(0, _vegaUtil.isObject)(offset)) offset = { - signal: `(${v.signal}) === 'extent' ? 0 : ${offset}` - }; - } else if (v === "extent") { - // if constant, simply set values - band = 1; - extra = true; - offset = 0; - } else { - band = 0.5; - extra = false; - } - return { - extra, - band, - offset - }; +function getChannel(name, spec, marks) { + return spec[name] ? `scale("${spec[name]}",datum)` : getEncoding(name, marks[0].encode); } -function extendOffset(value, offset) { - return !offset ? value : !value ? offset : !(0, _vegaUtil.isObject)(value) ? { - value, - offset - } : Object.assign({}, value, { - offset: extendOffset(value.offset, offset) - }); +function getFontSize(encode, scope, style) { + return getEncoding("fontSize", encode) || getStyle("fontSize", scope, style); } -function guideMark(mark, extras) { - if (extras) { - mark.name = extras.name; - mark.style = extras.style || mark.style; - mark.interactive = !!extras.interactive; - mark.encode = extendEncode(mark.encode, extras, Skip); - } else mark.interactive = false; - return mark; +const angleExpr = `item.orient==="${Left}"?-90:item.orient==="${Right}"?90:0`; +function parseTitle(spec, scope) { + spec = (0, _vegaUtil.isString)(spec) ? { + text: spec + } : spec; + const _ = lookup(spec, scope.config.title), encode = spec.encode || {}, userEncode = encode.group || {}, name = userEncode.name || undefined, interactive = userEncode.interactive, style = userEncode.style, children = []; // single-element data source for group title + const datum = {}, dataRef = ref(scope.add(Collect(null, [ + datum + ]))); // include title text + children.push(buildTitle(spec, _, titleEncode(spec), dataRef)); // include subtitle text + if (spec.subtitle) children.push(buildSubTitle(spec, _, encode.subtitle, dataRef)); + // parse title specification + return parseMark(guideGroup({ + role: TitleRole, + from: dataRef, + encode: groupEncode(_, userEncode), + marks: children, + aria: _("aria"), + description: _("description"), + zindex: _("zindex"), + name, + interactive, + style + }), scope); +} // provide backwards-compatibility for title custom encode; +// the top-level encode block has been *deprecated*. +function titleEncode(spec) { + const encode = spec.encode; + return encode && encode.title || (0, _vegaUtil.extend)({ + name: spec.name, + interactive: spec.interactive, + style: spec.style + }, encode); } -function legendGradient(spec, scale, config, userEncode) { - const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); - let enter, start, stop, width, height; - if (vertical) { - start = [ - 0, - 1 - ]; - stop = [ - 0, - 0 - ]; - width = thickness; - height = length; - } else { - start = [ - 0, - 0 - ]; - stop = [ - 1, - 0 - ]; - width = length; - height = thickness; - } +function groupEncode(_, userEncode) { const encode = { - enter: enter = { - opacity: zero, - x: zero, - y: zero, - width: encoder(width), - height: encoder(height) + enter: {}, + update: {} + }; + addEncoders(encode, { + orient: _("orient"), + anchor: _("anchor"), + align: { + signal: alignExpr$1 }, - update: (0, _vegaUtil.extend)({}, enter, { - opacity: one, - fill: { - gradient: scale, - start: start, - stop: stop + angle: { + signal: angleExpr + }, + limit: _("limit"), + frame: _("frame"), + offset: _("offset") || 0, + padding: _("subtitlePadding") + }); + return extendEncode(encode, userEncode, Skip); +} +function buildTitle(spec, _, userEncode, dataRef) { + const zero = { + value: 0 + }, text = spec.text, encode = { + enter: { + opacity: zero + }, + update: { + opacity: { + value: 1 } - }), + }, exit: { opacity: zero } }; addEncoders(encode, { - stroke: _("gradientStrokeColor"), - strokeWidth: _("gradientStrokeWidth") - }, { - // update - opacity: _("gradientOpacity") + text: text, + align: { + signal: "item.mark.group.align" + }, + angle: { + signal: "item.mark.group.angle" + }, + limit: { + signal: "item.mark.group.limit" + }, + baseline: "top", + dx: _("dx"), + dy: _("dy"), + fill: _("color"), + font: _("font"), + fontSize: _("fontSize"), + fontStyle: _("fontStyle"), + fontWeight: _("fontWeight"), + lineHeight: _("lineHeight") + }, { + // update + align: _("align"), + angle: _("angle"), + baseline: _("baseline") }); return guideMark({ - type: RectMark, - role: LegendGradientRole, + type: TextMark, + role: TitleTextRole, + style: GroupTitleStyle, + from: dataRef, encode }, userEncode); } -function legendGradientDiscrete(spec, scale, config, userEncode, dataRef) { - const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); - let u, v, uu, vv, adjust = ""; - vertical ? (u = "y", uu = "y2", v = "x", vv = "width", adjust = "1-") : (u = "x", uu = "x2", v = "y", vv = "height"); - const enter = { - opacity: zero, - fill: { - scale: scale, - field: Value - } - }; - enter[u] = { - signal: adjust + "datum." + Perc, - mult: length - }; - enter[v] = zero; - enter[uu] = { - signal: adjust + "datum." + Perc2, - mult: length - }; - enter[vv] = encoder(thickness); - const encode = { - enter: enter, - update: (0, _vegaUtil.extend)({}, enter, { - opacity: one - }), +function buildSubTitle(spec, _, userEncode, dataRef) { + const zero = { + value: 0 + }, text = spec.subtitle, encode = { + enter: { + opacity: zero + }, + update: { + opacity: { + value: 1 + } + }, exit: { opacity: zero } }; addEncoders(encode, { - stroke: _("gradientStrokeColor"), - strokeWidth: _("gradientStrokeWidth") + text: text, + align: { + signal: "item.mark.group.align" + }, + angle: { + signal: "item.mark.group.angle" + }, + limit: { + signal: "item.mark.group.limit" + }, + baseline: "top", + dx: _("dx"), + dy: _("dy"), + fill: _("subtitleColor"), + font: _("subtitleFont"), + fontSize: _("subtitleFontSize"), + fontStyle: _("subtitleFontStyle"), + fontWeight: _("subtitleFontWeight"), + lineHeight: _("subtitleLineHeight") }, { // update - opacity: _("gradientOpacity") + align: _("align"), + angle: _("angle"), + baseline: _("baseline") }); return guideMark({ - type: RectMark, - role: LegendBandRole, - key: Value, + type: TextMark, + role: TitleSubtitleRole, + style: GroupSubtitleStyle, from: dataRef, encode }, userEncode); } -const alignExpr = `datum.${Perc}<=0?"${Left}":datum.${Perc}>=1?"${Right}":"${Center}"`, baselineExpr = `datum.${Perc}<=0?"${Bottom}":datum.${Perc}>=1?"${Top}":"${Middle}"`; -function legendGradientLabels(spec, config, userEncode, dataRef) { - const _ = lookup(spec, config), vertical = _.isVertical(), thickness = encoder(_.gradientThickness()), length = _.gradientLength(); - let overlap = _("labelOverlap"), enter, update, u, v, adjust = ""; +function parseData(data, scope) { + const transforms = []; + if (data.transform) data.transform.forEach((tx)=>{ + transforms.push(parseTransform(tx, scope)); + }); + if (data.on) data.on.forEach((on)=>{ + parseTrigger(on, scope, data.name); + }); + scope.addDataPipeline(data.name, analyze(data, scope, transforms)); +} +/** + * Analyze a data pipeline, add needed operators. + */ function analyze(data, scope, ops) { + const output = []; + let source = null, modify = false, generate = false, upstream, i, n, t, m; + if (data.values) { + // hard-wired input data set + if (isSignal(data.values) || hasSignal(data.format)) { + // if either values is signal or format has signal, use dynamic loader + output.push(load(scope, data)); + output.push(source = collect()); + } else // otherwise, ingest upon dataflow init + output.push(source = collect({ + $ingest: data.values, + $format: data.format + })); + } else if (data.url) { + // load data from external source + if (hasSignal(data.url) || hasSignal(data.format)) { + // if either url or format has signal, use dynamic loader + output.push(load(scope, data)); + output.push(source = collect()); + } else // otherwise, request load upon dataflow init + output.push(source = collect({ + $request: data.url, + $format: data.format + })); + } else if (data.source) { + // derives from one or more other data sets + source = upstream = (0, _vegaUtil.array)(data.source).map((d)=>ref(scope.getData(d).output)); + output.push(null); // populate later + } // scan data transforms, add collectors as needed + for(i = 0, n = ops.length; i < n; ++i){ + t = ops[i]; + m = t.metadata; + if (!source && !m.source) output.push(source = collect()); + output.push(t); + if (m.generates) generate = true; + if (m.modifies && !generate) modify = true; + if (m.source) source = t; + else if (m.changes) source = null; + } + if (upstream) { + n = upstream.length - 1; + output[0] = Relay({ + derive: modify, + pulse: n ? upstream : upstream[0] + }); + if (modify || n) // collect derived and multi-pulse tuples + output.splice(1, 0, collect()); + } + if (!source) output.push(collect()); + output.push(Sieve({})); + return output; +} +function collect(values) { + const s = Collect({}, values); + s.metadata = { + source: true + }; + return s; +} +function load(scope, data) { + return Load({ + url: data.url ? scope.property(data.url) : undefined, + async: data.async ? scope.property(data.async) : undefined, + values: data.values ? scope.property(data.values) : undefined, + format: scope.objectProperty(data.format) + }); +} +const isX = (orient)=>orient === Bottom || orient === Top; // get sign coefficient based on axis orient +const getSign = (orient, a, b)=>isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b; // condition on axis x-direction +const ifX = (orient, a, b)=>isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b; // condition on axis y-direction +const ifY = (orient, a, b)=>isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a; +const ifTop = (orient, a, b)=>isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? { + value: a + } : { + value: b + }; +const ifRight = (orient, a, b)=>isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? { + value: a + } : { + value: b + }; +const ifXEnc = ($orient, a, b)=>ifEnc(`${$orient} === '${Top}' || ${$orient} === '${Bottom}'`, a, b); +const ifYEnc = ($orient, a, b)=>ifEnc(`${$orient} !== '${Top}' && ${$orient} !== '${Bottom}'`, a, b); +const ifLeftTopExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Left}' || ${$orient} === '${Top}'`, a, b); +const ifTopExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Top}'`, a, b); +const ifRightExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Right}'`, a, b); +const ifEnc = (test, a, b)=>{ + // ensure inputs are encoder objects (or null) + a = a != null ? encoder(a) : a; + b = b != null ? encoder(b) : b; + if (isSimple(a) && isSimple(b)) { + // if possible generate simple signal expression + a = a ? a.signal || (0, _vegaUtil.stringValue)(a.value) : null; + b = b ? b.signal || (0, _vegaUtil.stringValue)(b.value) : null; + return { + signal: `${test} ? (${a}) : (${b})` + }; + } else // otherwise generate rule set + return [ + (0, _vegaUtil.extend)({ + test + }, a) + ].concat(b || []); +}; +const isSimple = (enc)=>enc == null || Object.keys(enc).length === 1; +const ifExpr = (test, a, b)=>({ + signal: `${test} ? (${toExpr(a)}) : (${toExpr(b)})` + }); +const ifOrient = ($orient, t, b, l, r)=>({ + signal: (l != null ? `${$orient} === '${Left}' ? (${toExpr(l)}) : ` : "") + (b != null ? `${$orient} === '${Bottom}' ? (${toExpr(b)}) : ` : "") + (r != null ? `${$orient} === '${Right}' ? (${toExpr(r)}) : ` : "") + (t != null ? `${$orient} === '${Top}' ? (${toExpr(t)}) : ` : "") + "(null)" + }); +const toExpr = (v)=>isSignal(v) ? v.signal : v == null ? null : (0, _vegaUtil.stringValue)(v); +const mult = (sign, value)=>value === 0 ? 0 : isSignal(sign) ? { + signal: `(${sign.signal}) * ${value}` + } : { + value: sign * value + }; +const patch = (value, base)=>{ + const s = value.signal; + return s && s.endsWith("(null)") ? { + signal: s.slice(0, -6) + base.signal + } : value; +}; +function fallback(prop, config, axisConfig, style) { + let styleProp; + if (config && (0, _vegaUtil.hasOwnProperty)(config, prop)) return config[prop]; + else if ((0, _vegaUtil.hasOwnProperty)(axisConfig, prop)) return axisConfig[prop]; + else if (prop.startsWith("title")) { + switch(prop){ + case "titleColor": + styleProp = "fill"; + break; + case "titleFont": + case "titleFontSize": + case "titleFontWeight": + styleProp = prop[5].toLowerCase() + prop.slice(6); + } + return style[GuideTitleStyle][styleProp]; + } else if (prop.startsWith("label")) { + switch(prop){ + case "labelColor": + styleProp = "fill"; + break; + case "labelFont": + case "labelFontSize": + styleProp = prop[5].toLowerCase() + prop.slice(6); + } + return style[GuideLabelStyle][styleProp]; + } + return null; +} +function keys(objects) { + const map = {}; + for (const obj of objects){ + if (!obj) continue; + for(const key in obj)map[key] = 1; + } + return Object.keys(map); +} +function axisConfig(spec, scope) { + var config = scope.config, style = config.style, axis = config.axis, band = scope.scaleType(spec.scale) === "band" && config.axisBand, orient = spec.orient, xy, or, key; + if (isSignal(orient)) { + const xyKeys = keys([ + config.axisX, + config.axisY + ]), orientKeys = keys([ + config.axisTop, + config.axisBottom, + config.axisLeft, + config.axisRight + ]); + xy = {}; + for (key of xyKeys)xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style)); + or = {}; + for (key of orientKeys)or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style)); + } else { + xy = orient === Top || orient === Bottom ? config.axisX : config.axisY; + or = config["axis" + orient[0].toUpperCase() + orient.slice(1)]; + } + const result = xy || or || band ? (0, _vegaUtil.extend)({}, axis, xy, or, band) : axis; + return result; +} +function axisDomain(spec, config, userEncode, dataRef) { + const _ = lookup(spec, config), orient = spec.orient; + let enter, update; const encode = { enter: enter = { opacity: zero }, update: update = { - opacity: one, - text: { - field: Label - } + opacity: one }, exit: { opacity: zero } }; addEncoders(encode, { - fill: _("labelColor"), - fillOpacity: _("labelOpacity"), - font: _("labelFont"), - fontSize: _("labelFontSize"), - fontStyle: _("labelFontStyle"), - fontWeight: _("labelFontWeight"), - limit: value(spec.labelLimit, config.gradientLabelLimit) + stroke: _("domainColor"), + strokeCap: _("domainCap"), + strokeDash: _("domainDash"), + strokeDashOffset: _("domainDashOffset"), + strokeWidth: _("domainWidth"), + strokeOpacity: _("domainOpacity") }); - if (vertical) { - enter.align = { - value: "left" - }; - enter.baseline = update.baseline = { - signal: baselineExpr - }; - u = "y"; - v = "x"; - adjust = "1-"; - } else { - enter.align = update.align = { - signal: alignExpr - }; - enter.baseline = { - value: "top" - }; - u = "x"; - v = "y"; - } - enter[u] = update[u] = { - signal: adjust + "datum." + Perc, - mult: length - }; - enter[v] = update[v] = thickness; - thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0; - overlap = overlap ? { - separation: _("labelSeparation"), - method: overlap, - order: "datum." + Index - } : undefined; // type, role, style, key, dataRef, encode, extras + const pos0 = position(spec, 0); + const pos1 = position(spec, 1); + enter.x = update.x = ifX(orient, pos0, zero); + enter.x2 = update.x2 = ifX(orient, pos1); + enter.y = update.y = ifY(orient, pos0, zero); + enter.y2 = update.y2 = ifY(orient, pos1); return guideMark({ - type: TextMark, - role: LegendLabelRole, - style: GuideLabelStyle, - key: Value, + type: RuleMark, + role: AxisDomainRole, from: dataRef, - encode, - overlap + encode }, userEncode); } -function legendSymbolGroups(spec, config, userEncode, dataRef, columns) { - const _ = lookup(spec, config), entries = userEncode.entries, interactive = !!(entries && entries.interactive), name = entries ? entries.name : undefined, height = _("clipHeight"), symbolOffset = _("symbolOffset"), valueRef = { - data: "value" - }, xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`, yEncode = height ? encoder(height) : { - field: Size - }, index = `datum.${Index}`, ncols = `max(1, ${columns})`; - let encode, enter, update, nrows, sort; - yEncode.mult = 0.5; // -- LEGEND SYMBOLS -- - encode = { +function position(spec, pos) { + return { + scale: spec.scale, + range: pos + }; +} +function axisGrid(spec, config, userEncode, dataRef, band) { + const _ = lookup(spec, config), orient = spec.orient, vscale = spec.gridScale, sign = getSign(orient, 1, -1), offset = offsetValue(spec.offset, sign); + let enter, exit, update; + const encode = { enter: enter = { - opacity: zero, - x: { - signal: xSignal, - mult: 0.5, - offset: symbolOffset - }, - y: yEncode + opacity: zero }, update: update = { - opacity: one, - x: enter.x, - y: enter.y + opacity: one }, - exit: { + exit: exit = { opacity: zero } }; - let baseFill = null, baseStroke = null; - if (!spec.fill) { - baseFill = config.symbolBaseFillColor; - baseStroke = config.symbolBaseStrokeColor; - } addEncoders(encode, { - fill: _("symbolFillColor", baseFill), - shape: _("symbolType"), - size: _("symbolSize"), - stroke: _("symbolStrokeColor", baseStroke), - strokeDash: _("symbolDash"), - strokeDashOffset: _("symbolDashOffset"), - strokeWidth: _("symbolStrokeWidth") + stroke: _("gridColor"), + strokeCap: _("gridCap"), + strokeDash: _("gridDash"), + strokeDashOffset: _("gridDashOffset"), + strokeOpacity: _("gridOpacity"), + strokeWidth: _("gridWidth") + }); + const tickPos = { + scale: spec.scale, + field: Value, + band: band.band, + extra: band.extra, + offset: band.offset, + round: _("tickRound") + }; + const sz = ifX(orient, { + signal: "height" }, { - // update - opacity: _("symbolOpacity") + signal: "width" }); - LegendScales.forEach((scale)=>{ - if (spec[scale]) update[scale] = enter[scale] = { - scale: spec[scale], - field: Value - }; + const gridStart = vscale ? { + scale: vscale, + range: 0, + mult: sign, + offset: offset + } : { + value: 0, + offset: offset + }; + const gridEnd = vscale ? { + scale: vscale, + range: 1, + mult: sign, + offset: offset + } : (0, _vegaUtil.extend)(sz, { + mult: sign, + offset: offset }); - const symbols = guideMark({ - type: SymbolMark, - role: LegendSymbolRole, + enter.x = update.x = ifX(orient, tickPos, gridStart); + enter.y = update.y = ifY(orient, tickPos, gridStart); + enter.x2 = update.x2 = ifY(orient, gridEnd); + enter.y2 = update.y2 = ifX(orient, gridEnd); + exit.x = ifX(orient, tickPos); + exit.y = ifY(orient, tickPos); + return guideMark({ + type: RuleMark, + role: AxisGridRole, key: Value, - from: valueRef, - clip: height ? true : undefined, + from: dataRef, encode - }, userEncode.symbols); // -- LEGEND LABELS -- - const labelOffset = encoder(symbolOffset); - labelOffset.offset = _("labelOffset"); - encode = { + }, userEncode); +} +function offsetValue(offset, sign) { + if (sign === 1) ; + else if (!(0, _vegaUtil.isObject)(offset)) offset = isSignal(sign) ? { + signal: `(${sign.signal}) * (${offset || 0})` + } : sign * (offset || 0); + else { + let entry = offset = (0, _vegaUtil.extend)({}, offset); + while(entry.mult != null)if (!(0, _vegaUtil.isObject)(entry.mult)) { + entry.mult = isSignal(sign) // no offset if sign === 1 + ? { + signal: `(${entry.mult}) * (${sign.signal})` + } : entry.mult * sign; + return offset; + } else entry = entry.mult = (0, _vegaUtil.extend)({}, entry.mult); + entry.mult = sign; + } + return offset; +} +function axisTicks(spec, config, userEncode, dataRef, size, band) { + const _ = lookup(spec, config), orient = spec.orient, sign = getSign(orient, -1, 1); + let enter, exit, update; + const encode = { enter: enter = { - opacity: zero, - x: { - signal: xSignal, - offset: labelOffset - }, - y: yEncode + opacity: zero }, update: update = { - opacity: one, - text: { - field: Label - }, - x: enter.x, - y: enter.y + opacity: one }, - exit: { + exit: exit = { opacity: zero } }; addEncoders(encode, { - align: _("labelAlign"), - baseline: _("labelBaseline"), + stroke: _("tickColor"), + strokeCap: _("tickCap"), + strokeDash: _("tickDash"), + strokeDashOffset: _("tickDashOffset"), + strokeOpacity: _("tickOpacity"), + strokeWidth: _("tickWidth") + }); + const tickSize = encoder(size); + tickSize.mult = sign; + const tickPos = { + scale: spec.scale, + field: Value, + band: band.band, + extra: band.extra, + offset: band.offset, + round: _("tickRound") + }; + update.y = enter.y = ifX(orient, zero, tickPos); + update.y2 = enter.y2 = ifX(orient, tickSize); + exit.x = ifX(orient, tickPos); + update.x = enter.x = ifY(orient, zero, tickPos); + update.x2 = enter.x2 = ifY(orient, tickSize); + exit.y = ifY(orient, tickPos); + return guideMark({ + type: RuleMark, + role: AxisTickRole, + key: Value, + from: dataRef, + encode + }, userEncode); +} +function flushExpr(scale, threshold, a, b, c) { + return { + signal: 'flush(range("' + scale + '"), ' + 'scale("' + scale + '", datum.value), ' + threshold + "," + a + "," + b + "," + c + ")" + }; +} +function axisLabels(spec, config, userEncode, dataRef, size, band) { + const _ = lookup(spec, config), orient = spec.orient, scale = spec.scale, sign = getSign(orient, -1, 1), flush = deref(_("labelFlush")), flushOffset = deref(_("labelFlushOffset")), labelAlign = _("labelAlign"), labelBaseline = _("labelBaseline"); + let flushOn = flush === 0 || !!flush, update; + const tickSize = encoder(size); + tickSize.mult = sign; + tickSize.offset = encoder(_("labelPadding") || 0); + tickSize.offset.mult = sign; + const tickPos = { + scale: scale, + field: Value, + band: 0.5, + offset: extendOffset(band.offset, _("labelOffset")) + }; + const align = ifX(orient, flushOn ? flushExpr(scale, flush, '"left"', '"right"', '"center"') : { + value: "center" + }, ifRight(orient, "left", "right")); + const baseline = ifX(orient, ifTop(orient, "bottom", "top"), flushOn ? flushExpr(scale, flush, '"top"', '"bottom"', '"middle"') : { + value: "middle" + }); + const offsetExpr = flushExpr(scale, flush, `-(${flushOffset})`, flushOffset, 0); + flushOn = flushOn && flushOffset; + const enter = { + opacity: zero, + x: ifX(orient, tickPos, tickSize), + y: ifY(orient, tickPos, tickSize) + }; + const encode = { + enter: enter, + update: update = { + opacity: one, + text: { + field: Label + }, + x: enter.x, + y: enter.y, + align, + baseline + }, + exit: { + opacity: zero, + x: enter.x, + y: enter.y + } + }; + addEncoders(encode, { + dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null, + dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null + }); + addEncoders(encode, { + angle: _("labelAngle"), fill: _("labelColor"), fillOpacity: _("labelOpacity"), font: _("labelFont"), fontSize: _("labelFontSize"), - fontStyle: _("labelFontStyle"), fontWeight: _("labelFontWeight"), - limit: _("labelLimit") + fontStyle: _("labelFontStyle"), + limit: _("labelLimit"), + lineHeight: _("labelLineHeight") + }, { + align: labelAlign, + baseline: labelBaseline }); - const labels = guideMark({ + const bound = _("labelBound"); + let overlap = _("labelOverlap"); // if overlap method or bound defined, request label overlap removal + overlap = overlap || bound ? { + separation: _("labelSeparation"), + method: overlap, + order: "datum.index", + bound: bound ? { + scale, + orient, + tolerance: bound + } : null + } : undefined; + if (update.align !== align) update.align = patch(update.align, align); + if (update.baseline !== baseline) update.baseline = patch(update.baseline, baseline); + return guideMark({ type: TextMark, - role: LegendLabelRole, + role: AxisLabelRole, style: GuideLabelStyle, key: Value, - from: valueRef, - encode - }, userEncode.labels); // -- LEGEND ENTRY GROUPS -- - encode = { - enter: { - noBound: { - value: !height - }, - // ignore width/height in bounds calc - width: zero, - height: height ? encoder(height) : zero, - opacity: zero - }, - exit: { - opacity: zero - }, - update: update = { - opacity: one, - row: { - signal: null - }, - column: { - signal: null - } - } - }; // annotate and sort groups to ensure correct ordering - if (_.isVertical(true)) { - nrows = `ceil(item.mark.items.length / ${ncols})`; - update.row.signal = `${index}%${nrows}`; - update.column.signal = `floor(${index} / ${nrows})`; - sort = { - field: [ - "row", - index - ] - }; - } else { - update.row.signal = `floor(${index} / ${ncols})`; - update.column.signal = `${index} % ${ncols}`; - sort = { - field: index - }; - } // handle zero column case (implies infinite columns) - update.column.signal = `(${columns})?${update.column.signal}:${index}`; // facet legend entries into sub-groups - dataRef = { - facet: { - data: dataRef, - name: "value", - groupby: Index - } - }; - return guideGroup({ - role: ScopeRole, from: dataRef, - encode: extendEncode(encode, entries, Skip), - marks: [ - symbols, - labels - ], - name, - interactive, - sort - }); -} -function legendSymbolLayout(spec, config) { - const _ = lookup(spec, config); // layout parameters for legend entries - return { - align: _("gridAlign"), - columns: _.entryColumns(), - center: { - row: true, - column: false - }, - padding: { - row: _("rowPadding"), - column: _("columnPadding") - } - }; + encode, + overlap + }, userEncode); } -const isL = 'item.orient === "left"', isR = 'item.orient === "right"', isLR = `(${isL} || ${isR})`, isVG = `datum.vgrad && ${isLR}`, baseline = anchorExpr('"top"', '"bottom"', '"middle"'), alignFlip = anchorExpr('"right"', '"left"', '"center"'), exprAlign = `datum.vgrad && ${isR} ? (${alignFlip}) : (${isLR} && !(datum.vgrad && ${isL})) ? "left" : ${alignExpr$1}`, exprAnchor = `item._anchor || (${isLR} ? "middle" : "start")`, exprAngle = `${isVG} ? (${isL} ? -90 : 90) : 0`, exprBaseline = `${isLR} ? (datum.vgrad ? (${isR} ? "bottom" : "top") : ${baseline}) : "top"`; -function legendTitle(spec, config, userEncode, dataRef) { - const _ = lookup(spec, config); +function axisTitle(spec, config, userEncode, dataRef) { + const _ = lookup(spec, config), orient = spec.orient, sign = getSign(orient, -1, 1); + let enter, update; const encode = { - enter: { - opacity: zero - }, - update: { - opacity: one, - x: { - field: { - group: "padding" - } - }, - y: { - field: { - group: "padding" - } + enter: enter = { + opacity: zero, + anchor: encoder(_("titleAnchor", null)), + align: { + signal: alignExpr$1 } }, + update: update = (0, _vegaUtil.extend)({}, enter, { + opacity: one, + text: encoder(spec.title) + }), exit: { opacity: zero } }; + const titlePos = { + signal: `lerp(range("${spec.scale}"), ${anchorExpr(0, 1, 0.5)})` + }; + update.x = ifX(orient, titlePos); + update.y = ifY(orient, titlePos); + enter.angle = ifX(orient, zero, mult(sign, 90)); + enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), { + value: Bottom + }); + update.angle = enter.angle; + update.baseline = enter.baseline; addEncoders(encode, { - orient: _("titleOrient"), - _anchor: _("titleAnchor"), - anchor: { - signal: exprAnchor - }, - angle: { - signal: exprAngle - }, - align: { - signal: exprAlign - }, - baseline: { - signal: exprBaseline - }, - text: spec.title, fill: _("titleColor"), fillOpacity: _("titleOpacity"), font: _("titleFont"), @@ -129459,3355 +132312,765 @@ function legendTitle(spec, config, userEncode, dataRef) { }, { // require update align: _("titleAlign"), + angle: _("titleAngle"), baseline: _("titleBaseline") }); + autoLayout(_, orient, encode, userEncode); + encode.update.align = patch(encode.update.align, enter.align); + encode.update.angle = patch(encode.update.angle, enter.angle); + encode.update.baseline = patch(encode.update.baseline, enter.baseline); return guideMark({ type: TextMark, - role: LegendTitleRole, + role: AxisTitleRole, style: GuideTitleStyle, from: dataRef, encode }, userEncode); } -function clip(clip, scope) { - let expr; - if ((0, _vegaUtil.isObject)(clip)) { - if (clip.signal) expr = clip.signal; - else if (clip.path) expr = "pathShape(" + param(clip.path) + ")"; - else if (clip.sphere) expr = "geoShape(" + param(clip.sphere) + ', {type: "Sphere"})'; - } - return expr ? scope.signalRef(expr) : !!clip; -} -function param(value) { - return (0, _vegaUtil.isObject)(value) && value.signal ? value.signal : (0, _vegaUtil.stringValue)(value); -} -function getRole(spec) { - const role = spec.role || ""; - return !role.indexOf("axis") || !role.indexOf("legend") || !role.indexOf("title") ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole; +function autoLayout(_, orient, encode, userEncode) { + const auto = (value, dim)=>value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false; + const autoY = auto(_("titleX"), "x"), autoX = auto(_("titleY"), "y"); + encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY)); } -function definition(spec) { - return { - marktype: spec.type, - name: spec.name || undefined, - role: spec.role || getRole(spec), - zindex: +spec.zindex || undefined, - aria: spec.aria, - description: spec.description +function parseAxis(spec, scope) { + const config = axisConfig(spec, scope), encode = spec.encode || {}, axisEncode = encode.axis || {}, name = axisEncode.name || undefined, interactive = axisEncode.interactive, style = axisEncode.style, _ = lookup(spec, config), band = tickBand(_); // single-element data source for axis group + const datum = { + scale: spec.scale, + ticks: !!_("ticks"), + labels: !!_("labels"), + grid: !!_("grid"), + domain: !!_("domain"), + title: spec.title != null }; + const dataRef = ref(scope.add(Collect({}, [ + datum + ]))); // data source for axis ticks + const ticksRef = ref(scope.add(AxisTicks({ + scale: scope.scaleRef(spec.scale), + extra: scope.property(band.extra), + count: scope.objectProperty(spec.tickCount), + values: scope.objectProperty(spec.values), + minstep: scope.property(spec.tickMinStep), + formatType: scope.property(spec.formatType), + formatSpecifier: scope.property(spec.format) + }))); // generate axis marks + const children = []; + let size; // include axis gridlines if requested + if (datum.grid) children.push(axisGrid(spec, config, encode.grid, ticksRef, band)); + // include axis ticks if requested + if (datum.ticks) { + size = _("tickSize"); + children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band)); + } // include axis labels if requested + if (datum.labels) { + size = datum.ticks ? size : 0; + children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band)); + } // include axis domain path if requested + if (datum.domain) children.push(axisDomain(spec, config, encode.domain, dataRef)); + // include axis title if defined + if (datum.title) children.push(axisTitle(spec, config, encode.title, dataRef)); + // parse axis specification + return parseMark(guideGroup({ + role: AxisRole, + from: dataRef, + encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip), + marks: children, + aria: _("aria"), + description: _("description"), + zindex: _("zindex"), + name, + interactive, + style + }), scope); } -function interactive(spec, scope) { - return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true; -} -/** - * Parse a data transform specification. - */ function parseTransform(spec, scope) { - const def = (0, _vegaDataflow.definition)(spec.type); - if (!def) (0, _vegaUtil.error)("Unrecognized transform type: " + (0, _vegaUtil.stringValue)(spec.type)); - const t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope)); - if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t)); - t.metadata = def.metadata || {}; - return t; +function buildAxisEncode(_, spec) { + const encode = { + enter: {}, + update: {} + }; + addEncoders(encode, { + orient: _("orient"), + offset: _("offset") || 0, + position: value(spec.position, 0), + titlePadding: _("titlePadding"), + minExtent: _("minExtent"), + maxExtent: _("maxExtent"), + range: { + signal: `abs(span(range("${spec.scale}")))` + }, + translate: _("translate"), + // accessibility support + format: spec.format, + formatType: spec.formatType + }); + return encode; } -/** - * Parse all parameters of a data transform. - */ function parseParameters(def, spec, scope) { - const params = {}, n = def.params.length; - for(let i = 0; i < n; ++i){ - const pdef = def.params[i]; - params[pdef.name] = parseParameter(pdef, spec, scope); - } - return params; +function parseScope(spec, scope, preprocessed) { + const signals = (0, _vegaUtil.array)(spec.signals), scales = (0, _vegaUtil.array)(spec.scales); // parse signal definitions, if not already preprocessed + if (!preprocessed) signals.forEach((_)=>parseSignal(_, scope)); // parse cartographic projection definitions + (0, _vegaUtil.array)(spec.projections).forEach((_)=>parseProjection(_, scope)); // initialize scale references + scales.forEach((_)=>initScale(_, scope)); // parse data sources + (0, _vegaUtil.array)(spec.data).forEach((_)=>parseData(_, scope)); // parse scale definitions + scales.forEach((_)=>parseScale(_, scope)); // parse signal updates + (preprocessed || signals).forEach((_)=>parseSignalUpdates(_, scope)); // parse axis definitions + (0, _vegaUtil.array)(spec.axes).forEach((_)=>parseAxis(_, scope)); // parse mark definitions + (0, _vegaUtil.array)(spec.marks).forEach((_)=>parseMark(_, scope)); // parse legend definitions + (0, _vegaUtil.array)(spec.legends).forEach((_)=>parseLegend(_, scope)); // parse title, if defined + if (spec.title) parseTitle(spec.title, scope); // parse collected lambda (anonymous) expressions + scope.parseLambdas(); + return scope; } -/** - * Parse a data transform parameter. - */ function parseParameter(def, spec, scope) { - const type = def.type, value = spec[def.name]; - if (type === "index") return parseIndexParameter(def, spec, scope); - else if (value === undefined) { - if (def.required) (0, _vegaUtil.error)("Missing required " + (0, _vegaUtil.stringValue)(spec.type) + " parameter: " + (0, _vegaUtil.stringValue)(def.name)); - return; - } else if (type === "param") return parseSubParameters(def, spec, scope); - else if (type === "projection") return scope.projectionRef(spec[def.name]); - return def.array && !isSignal(value) ? value.map((v)=>parameterValue(def, v, scope)) : parameterValue(def, value, scope); +const rootEncode = (spec)=>extendEncode({ + enter: { + x: { + value: 0 + }, + y: { + value: 0 + } + }, + update: { + width: { + signal: "width" + }, + height: { + signal: "height" + } + } + }, spec); +function parseView(spec, scope) { + const config = scope.config; // add scenegraph root + const root = ref(scope.root = scope.add(operator())); // parse top-level signal definitions + const signals = collectSignals(spec, config); + signals.forEach((_)=>parseSignal(_, scope)); // assign description, event, legend, and locale configuration + scope.description = spec.description || config.description; + scope.eventConfig = config.events; + scope.legends = scope.objectProperty(config.legend && config.legend.layout); + scope.locale = config.locale; // store root group item + const input = scope.add(Collect()); // encode root group item + const encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, { + pulse: ref(input) + }))); // perform view layout + const parent = scope.add(ViewLayout({ + layout: scope.objectProperty(spec.layout), + legends: scope.legends, + autosize: scope.signalRef("autosize"), + mark: root, + pulse: ref(encode) + })); + scope.operators.pop(); // parse remainder of specification + scope.pushState(ref(encode), ref(parent), null); + parseScope(spec, scope, signals); + scope.operators.push(parent); // bound / render / sieve root item + let op = scope.add(Bound({ + mark: root, + pulse: ref(parent) + })); + op = scope.add(Render({ + pulse: ref(op) + })); + op = scope.add(Sieve({ + pulse: ref(op) + })); // track metadata for root item + scope.addData("root", new DataScope(scope, input, input, op)); + return scope; } -/** - * Parse a single parameter value. - */ function parameterValue(def, value, scope) { - const type = def.type; - if (isSignal(value)) return isExpr(type) ? (0, _vegaUtil.error)("Expression references can not be signals.") : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal); - else { - const expr = def.expr || isField(type); - return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? (0, _vegaFunctions.parseExpression)(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value; - } +function signalObject(name, value) { + return value && value.signal ? { + name, + update: value.signal + } : { + name, + value + }; } /** - * Parse parameter for accessing an index of another data set. - */ function parseIndexParameter(def, spec, scope) { - if (!(0, _vegaUtil.isString)(spec.from)) (0, _vegaUtil.error)('Lookup "from" parameter must be a string literal.'); - return scope.getData(spec.from).lookupRef(scope, spec.key); + * Collect top-level signals, merging values as needed. Signals + * defined in the config signals arrays are added only if that + * signal is not explicitly defined in the specification. + * Built-in signals (autosize, background, padding, width, height) + * receive special treatment. They are initialized using the + * top-level spec property, or, if undefined in the spec, using + * the corresponding top-level config property. If this property + * is a signal reference object, the signal expression maps to the + * signal 'update' property. If the spec's top-level signal array + * contains an entry that matches a built-in signal, that entry + * will be merged with the built-in specification, potentially + * overwriting existing 'value' or 'update' properties. + */ function collectSignals(spec, config) { + const _ = (name)=>value(spec[name], config[name]), signals = [ + signalObject("background", _("background")), + signalObject("autosize", parseAutosize(_("autosize"))), + signalObject("padding", parsePadding(_("padding"))), + signalObject("width", _("width") || 0), + signalObject("height", _("height") || 0) + ], pre = signals.reduce((p, s)=>(p[s.name] = s, p), {}), map = {}; // add spec signal array + (0, _vegaUtil.array)(spec.signals).forEach((s)=>{ + if ((0, _vegaUtil.hasOwnProperty)(pre, s.name)) // merge if built-in signal + s = (0, _vegaUtil.extend)(pre[s.name], s); + else // otherwise add to signal list + signals.push(s); + map[s.name] = s; + }); // add config signal array + (0, _vegaUtil.array)(config.signals).forEach((s)=>{ + if (!(0, _vegaUtil.hasOwnProperty)(map, s.name) && !(0, _vegaUtil.hasOwnProperty)(pre, s.name)) // add to signal list if not already defined + signals.push(s); + }); + return signals; } -/** - * Parse a parameter that contains one or more sub-parameter objects. - */ function parseSubParameters(def, spec, scope) { - const value = spec[def.name]; - if (def.array) { - if (!(0, _vegaUtil.isArray)(value)) // signals not allowed! - (0, _vegaUtil.error)("Expected an array of sub-parameters. Instead: " + (0, _vegaUtil.stringValue)(value)); - return value.map((v)=>parseSubParameter(def, v, scope)); - } else return parseSubParameter(def, value, scope); -} -/** - * Parse a sub-parameter object. - */ function parseSubParameter(def, value, scope) { - const n = def.params.length; - let pdef; // loop over defs to find matching key - for(let i = 0; i < n; ++i){ - pdef = def.params[i]; - for(const k in pdef.key)if (pdef.key[k] !== value[k]) { - pdef = null; - break; - } - if (pdef) break; - } // raise error if matching key not found - if (!pdef) (0, _vegaUtil.error)("Unsupported parameter: " + (0, _vegaUtil.stringValue)(value)); // parse params, create Params transform, return ref - const params = (0, _vegaUtil.extend)(parseParameters(pdef, value, scope), pdef.key); - return ref(scope.add(Params(params))); -} // -- Utilities ----- -const outerExpr = (_)=>_ && _.expr; -const outerField = (_)=>_ && _.field; -const isData = (_)=>_ === "data"; -const isExpr = (_)=>_ === "expr"; -const isField = (_)=>_ === "field"; -const isCompare = (_)=>_ === "compare"; -function parseData$1(from, group, scope) { - let facet, key, op, dataRef, parent; // if no source data, generate singleton datum - if (!from) dataRef = ref(scope.add(Collect(null, [ - {} - ]))); - else if (facet = from.facet) { - if (!group) (0, _vegaUtil.error)("Only group marks can be faceted."); // use pre-faceted source data, if available - if (facet.field != null) dataRef = parent = getDataRef(facet, scope); - else { - // generate facet aggregates if no direct data specification - if (!from.data) { - op = parseTransform((0, _vegaUtil.extend)({ - type: "aggregate", - groupby: (0, _vegaUtil.array)(facet.groupby) - }, facet.aggregate), scope); - op.params.key = scope.keyRef(facet.groupby); - op.params.pulse = getDataRef(facet, scope); - dataRef = parent = ref(scope.add(op)); - } else parent = ref(scope.getData(from.data).aggregate); - key = scope.keyRef(facet.groupby, true); - } - } // if not yet defined, get source data reference - if (!dataRef) dataRef = getDataRef(from, scope); - return { - key: key, - pulse: dataRef, - parent: parent - }; -} -function getDataRef(from, scope) { - return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output); -} -function DataScope(scope, input, output, values, aggr) { - this.scope = scope; // parent scope object - this.input = input; // first operator in pipeline (tuple input) - this.output = output; // last operator in pipeline (tuple output) - this.values = values; // operator for accessing tuples (but not tuple flow) - // last aggregate in transform pipeline - this.aggregate = aggr; // lookup table of field indices - this.index = {}; -} -DataScope.fromEntries = function(scope, entries) { - const n = entries.length, values = entries[n - 1], output = entries[n - 2]; - let input = entries[0], aggr = null, i = 1; - if (input && input.type === "load") input = entries[1]; - // add operator entries to this scope, wire up pulse chain - scope.add(entries[0]); - for(; i < n; ++i){ - entries[i].params.pulse = ref(entries[i - 1]); - scope.add(entries[i]); - if (entries[i].type === "aggregate") aggr = entries[i]; - } - return new DataScope(scope, input, output, values, aggr); -}; -function fieldKey(field) { - return (0, _vegaUtil.isString)(field) ? field : null; -} -function addSortField(scope, p, sort) { - const as = aggrField(sort.op, sort.field); - let s; - if (p.ops) for(let i = 0, n = p.as.length; i < n; ++i){ - if (p.as[i] === as) return; - } - else { - p.ops = [ - "count" - ]; - p.fields = [ - null - ]; - p.as = [ - "count" - ]; - } - if (sort.op) { - p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op); - p.fields.push(scope.fieldRef(sort.field)); - p.as.push(as); - } +function Scope(config, options) { + this.config = config || {}; + this.options = options || {}; + this.bindings = []; + this.field = {}; + this.signals = {}; + this.lambdas = {}; + this.scales = {}; + this.events = {}; + this.data = {}; + this.streams = []; + this.updates = []; + this.operators = []; + this.eventConfig = null; + this.locale = null; + this._id = 0; + this._subid = 0; + this._nextsub = [ + 0 + ]; + this._parent = []; + this._encode = []; + this._lookup = []; + this._markpath = []; } -function cache(scope, ds, name, optype, field, counts, index) { - const cache = ds[name] || (ds[name] = {}), sort = sortKey(counts); - let k = fieldKey(field), v, op; - if (k != null) { - scope = ds.scope; - k = k + (sort ? "|" + sort : ""); - v = cache[k]; - } - if (!v) { - const params = counts ? { - field: keyFieldRef, - pulse: ds.countsRef(scope, field, counts) - } : { - field: scope.fieldRef(field), - pulse: ref(ds.output) - }; - if (sort) params.sort = scope.sortRef(counts); - op = scope.add(entry(optype, undefined, params)); - if (index) ds.index[field] = op; - v = ref(op); - if (k != null) cache[k] = v; - } - return v; +function Subscope(scope) { + this.config = scope.config; + this.options = scope.options; + this.legends = scope.legends; + this.field = Object.create(scope.field); + this.signals = Object.create(scope.signals); + this.lambdas = Object.create(scope.lambdas); + this.scales = Object.create(scope.scales); + this.events = Object.create(scope.events); + this.data = Object.create(scope.data); + this.streams = []; + this.updates = []; + this.operators = []; + this._id = 0; + this._subid = ++scope._nextsub[0]; + this._nextsub = scope._nextsub; + this._parent = scope._parent.slice(); + this._encode = scope._encode.slice(); + this._lookup = scope._lookup.slice(); + this._markpath = scope._markpath; } -DataScope.prototype = { - countsRef (scope, field, sort) { - const ds = this, cache = ds.counts || (ds.counts = {}), k = fieldKey(field); - let v, a, p; - if (k != null) { - scope = ds.scope; - v = cache[k]; - } - if (!v) { - p = { - groupby: scope.fieldRef(field, "key"), - pulse: ref(ds.output) - }; - if (sort && sort.field) addSortField(scope, p, sort); - a = scope.add(Aggregate(p)); - v = scope.add(Collect({ - pulse: ref(a) - })); - v = { - agg: a, - ref: ref(v) - }; - if (k != null) cache[k] = v; - } else if (sort && sort.field) addSortField(scope, v.agg.params, sort); - return v.ref; +Scope.prototype = Subscope.prototype = { + parse (spec) { + return parseScope(spec, this); }, - tuplesRef () { - return ref(this.values); + fork () { + return new Subscope(this); }, - extentRef (scope, field) { - return cache(scope, this, "extent", "extent", field, false); + isSubscope () { + return this._subid > 0; }, - domainRef (scope, field) { - return cache(scope, this, "domain", "values", field, false); + toRuntime () { + this.finish(); + return { + description: this.description, + operators: this.operators, + streams: this.streams, + updates: this.updates, + bindings: this.bindings, + eventConfig: this.eventConfig, + locale: this.locale + }; }, - valuesRef (scope, field, sort) { - return cache(scope, this, "vals", "values", field, sort || true); + id () { + return (this._subid ? this._subid + ":" : 0) + this._id++; }, - lookupRef (scope, field) { - return cache(scope, this, "lookup", "tupleindex", field, false); + add (op) { + this.operators.push(op); + op.id = this.id(); // if pre-registration references exist, resolve them now + if (op.refs) { + op.refs.forEach((ref)=>{ + ref.$ref = op.id; + }); + op.refs = null; + } + return op; }, - indataRef (scope, field) { - return cache(scope, this, "indata", "tupleindex", field, true, true); - } -}; -function parseFacet(spec, scope, group) { - const facet = spec.from.facet, name = facet.name, data = getDataRef(facet, scope); - let op; - if (!facet.name) (0, _vegaUtil.error)("Facet must have a name: " + (0, _vegaUtil.stringValue)(facet)); - if (!facet.data) (0, _vegaUtil.error)("Facet must reference a data set: " + (0, _vegaUtil.stringValue)(facet)); - if (facet.field) op = scope.add(PreFacet({ - field: scope.fieldRef(facet.field), - pulse: data - })); - else if (facet.groupby) op = scope.add(Facet({ - key: scope.keyRef(facet.groupby), - group: ref(scope.proxy(group.parent)), - pulse: data - })); - else (0, _vegaUtil.error)("Facet must specify groupby or field: " + (0, _vegaUtil.stringValue)(facet)); - // initialize facet subscope - const subscope = scope.fork(), source = subscope.add(Collect()), values = subscope.add(Sieve({ - pulse: ref(source) - })); - subscope.addData(name, new DataScope(subscope, source, source, values)); - subscope.addSignal("parent", null); // parse faceted subflow - op.params.subflow = { - $subflow: subscope.parse(spec).toRuntime() - }; -} -function parseSubflow(spec, scope, input) { - const op = scope.add(PreFacet({ - pulse: input.pulse - })), subscope = scope.fork(); - subscope.add(Sieve()); - subscope.addSignal("parent", null); // parse group mark subflow - op.params.subflow = { - $subflow: subscope.parse(spec).toRuntime() - }; -} -function parseTrigger(spec, scope, name) { - const remove = spec.remove, insert = spec.insert, toggle = spec.toggle, modify = spec.modify, values = spec.values, op = scope.add(operator()); - const update = "if(" + spec.trigger + ',modify("' + name + '",' + [ - insert, - remove, - toggle, - modify, - values - ].map((_)=>_ == null ? "null" : _).join(",") + "),0)"; - const expr = (0, _vegaFunctions.parseExpression)(update, scope); - op.update = expr.$expr; - op.params = expr.$params; -} -function parseMark(spec, scope) { - const role = getRole(spec), group = spec.type === GroupMark, facet = spec.from && spec.from.facet, overlap = spec.overlap; - let layout = spec.layout || role === ScopeRole || role === FrameRole, ops, op, store, enc, name, layoutRef, boundRef; - const nested = role === MarkRole || layout || facet; // resolve input data - const input = parseData$1(spec.from, group, scope); // data join to map tuples to visual items - op = scope.add(DataJoin({ - key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined), - pulse: input.pulse, - clean: !group - })); - const joinRef = ref(op); // collect visual items - op = store = scope.add(Collect({ - pulse: joinRef - })); // connect visual items to scenegraph - op = scope.add(Mark({ - markdef: definition(spec), - interactive: interactive(spec.interactive, scope), - clip: clip(spec.clip, scope), - context: { - $context: true - }, - groups: scope.lookup(), - parent: scope.signals.parent ? scope.signalRef("parent") : null, - index: scope.markpath(), - pulse: ref(op) - })); - const markRef = ref(op); // add visual encoders - op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, { - mod: false, - pulse: markRef - }))); // monitor parent marks to propagate changes - op.params.parent = scope.encode(); // add post-encoding transforms, if defined - if (spec.transform) spec.transform.forEach((_)=>{ - const tx = parseTransform(_, scope), md = tx.metadata; - if (md.generates || md.changes) (0, _vegaUtil.error)("Mark transforms should not generate new data."); - if (!md.nomod) enc.params.mod = true; // update encode mod handling - tx.params.pulse = ref(op); - scope.add(op = tx); - }); - // if item sort specified, perform post-encoding - if (spec.sort) op = scope.add(SortItems({ - sort: scope.compareRef(spec.sort), - pulse: ref(op) - })); - const encodeRef = ref(op); // add view layout operator if needed - if (facet || layout) { - layout = scope.add(ViewLayout({ - layout: scope.objectProperty(spec.layout), - legends: scope.legends, - mark: markRef, - pulse: encodeRef + proxy (op) { + const vref = op instanceof Entry ? ref(op) : op; + return this.add(Proxy({ + value: vref })); - layoutRef = ref(layout); - } // compute bounding boxes - const bound = scope.add(Bound({ - mark: markRef, - pulse: layoutRef || encodeRef - })); - boundRef = ref(bound); // if group mark, recurse to parse nested content - if (group) { - // juggle layout & bounds to ensure they run *after* any faceting transforms - if (nested) { - ops = scope.operators; - ops.pop(); - if (layout) ops.pop(); + }, + addStream (stream) { + this.streams.push(stream); + stream.id = this.id(); + return stream; + }, + addUpdate (update) { + this.updates.push(update); + return update; + }, + // Apply metadata + finish () { + let name, ds; // annotate root + if (this.root) this.root.root = true; // annotate signals + for(name in this.signals)this.signals[name].signal = name; + // annotate scales + for(name in this.scales)this.scales[name].scale = name; + // annotate data sets + function annotate(op, name, type) { + let data, list; + if (op) { + data = op.data || (op.data = {}); + list = data[name] || (data[name] = []); + list.push(type); + } } - scope.pushState(encodeRef, layoutRef || boundRef, joinRef); - facet ? parseFacet(spec, scope, input) // explicit facet - : nested ? parseSubflow(spec, scope, input) // standard mark group - : scope.parse(spec); // guide group, we can avoid nested scopes - scope.popState(); - if (nested) { - if (layout) ops.push(layout); - ops.push(bound); + for(name in this.data){ + ds = this.data[name]; + annotate(ds.input, name, "input"); + annotate(ds.output, name, "output"); + annotate(ds.values, name, "values"); + for(const field in ds.index)annotate(ds.index[field], name, "index:" + field); } - } // if requested, add overlap removal transform - if (overlap) boundRef = parseOverlap(overlap, boundRef, scope); - // render / sieve items - const render = scope.add(Render({ - pulse: boundRef - })), sieve = scope.add(Sieve({ - pulse: ref(render) - }, undefined, scope.parent())); // if mark is named, make accessible as reactive geometry - // add trigger updates if defined - if (spec.name != null) { - name = spec.name; - scope.addData(name, new DataScope(scope, store, render, sieve)); - if (spec.on) spec.on.forEach((on)=>{ - if (on.insert || on.remove || on.toggle) (0, _vegaUtil.error)("Marks only support modify triggers."); - parseTrigger(on, scope, name); - }); - } -} -function parseOverlap(overlap, source, scope) { - const method = overlap.method, bound = overlap.bound, sep = overlap.separation; - const params = { - separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep, - method: isSignal(method) ? scope.signalRef(method.signal) : method, - pulse: source - }; - if (overlap.order) params.sort = scope.compareRef({ - field: overlap.order - }); - if (bound) { - const tol = bound.tolerance; - params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol; - params.boundScale = scope.scaleRef(bound.scale); - params.boundOrient = bound.orient; - } - return ref(scope.add(Overlap(params))); -} -function parseLegend(spec, scope) { - const config = scope.config.legend, encode = spec.encode || {}, _ = lookup(spec, config), legendEncode = encode.legend || {}, name = legendEncode.name || undefined, interactive = legendEncode.interactive, style = legendEncode.style, scales = {}; - let scale = 0, entryLayout, params, children; // resolve scales and 'canonical' scale name - LegendScales.forEach((s)=>spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0); - if (!scale) (0, _vegaUtil.error)("Missing valid scale for legend."); // resolve legend type (symbol, gradient, or discrete gradient) - const type = legendType(spec, scope.scaleType(scale)); // single-element data source for legend group - const datum = { - title: spec.title != null, - scales: scales, - type: type, - vgrad: type !== "symbol" && _.isVertical() - }; - const dataRef = ref(scope.add(Collect(null, [ - datum - ]))); // encoding properties for legend entry sub-group - const entryEncode = { - enter: { - x: { - value: 0 - }, - y: { - value: 0 - } + return this; + }, + // ---- + pushState (encode, parent, lookup) { + this._encode.push(ref(this.add(Sieve({ + pulse: encode + })))); + this._parent.push(parent); + this._lookup.push(lookup ? ref(this.proxy(lookup)) : null); + this._markpath.push(-1); + }, + popState () { + this._encode.pop(); + this._parent.pop(); + this._lookup.pop(); + this._markpath.pop(); + }, + parent () { + return (0, _vegaUtil.peek)(this._parent); + }, + encode () { + return (0, _vegaUtil.peek)(this._encode); + }, + lookup () { + return (0, _vegaUtil.peek)(this._lookup); + }, + markpath () { + const p = this._markpath; + return ++p[p.length - 1]; + }, + // ---- + fieldRef (field, name) { + if ((0, _vegaUtil.isString)(field)) return fieldRef$1(field, name); + if (!field.signal) (0, _vegaUtil.error)("Unsupported field reference: " + (0, _vegaUtil.stringValue)(field)); + const s = field.signal; + let f = this.field[s]; + if (!f) { + const params = { + name: this.signalRef(s) + }; + if (name) params.as = name; + this.field[s] = f = ref(this.add(Field(params))); } - }; // data source for legend values - const entryRef = ref(scope.add(LegendEntries(params = { - type: type, - scale: scope.scaleRef(scale), - count: scope.objectProperty(_("tickCount")), - limit: scope.property(_("symbolLimit")), - values: scope.objectProperty(spec.values), - minstep: scope.property(spec.tickMinStep), - formatType: scope.property(spec.formatType), - formatSpecifier: scope.property(spec.format) - }))); // continuous gradient legend - if (type === Gradient) { - children = [ - legendGradient(spec, scale, config, encode.gradient), - legendGradientLabels(spec, config, encode.labels, entryRef) - ]; // adjust default tick count based on the gradient length - params.count = params.count || scope.signalRef(`max(2,2*floor((${deref(_.gradientLength())})/100))`); - } else if (type === Discrete) children = [ - legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), - legendGradientLabels(spec, config, encode.labels, entryRef) - ]; - else { - // determine legend symbol group layout - entryLayout = legendSymbolLayout(spec, config); - children = [ - legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns)) - ]; // pass symbol size information to legend entry generator - params.size = sizeExpression(spec, scope, children[0].marks); - } // generate legend marks - children = [ - guideGroup({ - role: LegendEntryRole, - from: dataRef, - encode: entryEncode, - marks: children, - layout: entryLayout, - interactive - }) - ]; // include legend title if defined - if (datum.title) children.push(legendTitle(spec, config, encode.title, dataRef)); - // parse legend specification - return parseMark(guideGroup({ - role: LegendRole, - from: dataRef, - encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip), - marks: children, - aria: _("aria"), - description: _("description"), - zindex: _("zindex"), - name, - interactive, - style - }), scope); -} -function legendType(spec, scaleType) { - let type = spec.type || Symbols; - if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) type = (0, _vegaScale.isContinuous)(scaleType) ? Gradient : (0, _vegaScale.isDiscretizing)(scaleType) ? Discrete : Symbols; - return type !== Gradient ? type : (0, _vegaScale.isDiscretizing)(scaleType) ? Discrete : Gradient; -} -function scaleCount(spec) { - return LegendScales.reduce((count, type)=>count + (spec[type] ? 1 : 0), 0); -} -function buildLegendEncode(_, spec, config) { - const encode = { - enter: {}, - update: {} - }; - addEncoders(encode, { - orient: _("orient"), - offset: _("offset"), - padding: _("padding"), - titlePadding: _("titlePadding"), - cornerRadius: _("cornerRadius"), - fill: _("fillColor"), - stroke: _("strokeColor"), - strokeWidth: config.strokeWidth, - strokeDash: config.strokeDash, - x: _("legendX"), - y: _("legendY"), - // accessibility support - format: spec.format, - formatType: spec.formatType - }); - return encode; -} -function sizeExpression(spec, scope, marks) { - const size = deref(getChannel("size", spec, marks)), strokeWidth = deref(getChannel("strokeWidth", spec, marks)), fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle)); - return (0, _vegaFunctions.parseExpression)(`max(ceil(sqrt(${size})+${strokeWidth}),${fontSize})`, scope); -} -function getChannel(name, spec, marks) { - return spec[name] ? `scale("${spec[name]}",datum)` : getEncoding(name, marks[0].encode); -} -function getFontSize(encode, scope, style) { - return getEncoding("fontSize", encode) || getStyle("fontSize", scope, style); -} -const angleExpr = `item.orient==="${Left}"?-90:item.orient==="${Right}"?90:0`; -function parseTitle(spec, scope) { - spec = (0, _vegaUtil.isString)(spec) ? { - text: spec - } : spec; - const _ = lookup(spec, scope.config.title), encode = spec.encode || {}, userEncode = encode.group || {}, name = userEncode.name || undefined, interactive = userEncode.interactive, style = userEncode.style, children = []; // single-element data source for group title - const datum = {}, dataRef = ref(scope.add(Collect(null, [ - datum - ]))); // include title text - children.push(buildTitle(spec, _, titleEncode(spec), dataRef)); // include subtitle text - if (spec.subtitle) children.push(buildSubTitle(spec, _, encode.subtitle, dataRef)); - // parse title specification - return parseMark(guideGroup({ - role: TitleRole, - from: dataRef, - encode: groupEncode(_, userEncode), - marks: children, - aria: _("aria"), - description: _("description"), - zindex: _("zindex"), - name, - interactive, - style - }), scope); -} // provide backwards-compatibility for title custom encode; -// the top-level encode block has been *deprecated*. -function titleEncode(spec) { - const encode = spec.encode; - return encode && encode.title || (0, _vegaUtil.extend)({ - name: spec.name, - interactive: spec.interactive, - style: spec.style - }, encode); -} -function groupEncode(_, userEncode) { - const encode = { - enter: {}, - update: {} - }; - addEncoders(encode, { - orient: _("orient"), - anchor: _("anchor"), - align: { - signal: alignExpr$1 - }, - angle: { - signal: angleExpr - }, - limit: _("limit"), - frame: _("frame"), - offset: _("offset") || 0, - padding: _("subtitlePadding") - }); - return extendEncode(encode, userEncode, Skip); -} -function buildTitle(spec, _, userEncode, dataRef) { - const zero = { - value: 0 - }, text = spec.text, encode = { - enter: { - opacity: zero - }, - update: { - opacity: { - value: 1 - } - }, - exit: { - opacity: zero - } - }; - addEncoders(encode, { - text: text, - align: { - signal: "item.mark.group.align" - }, - angle: { - signal: "item.mark.group.angle" - }, - limit: { - signal: "item.mark.group.limit" - }, - baseline: "top", - dx: _("dx"), - dy: _("dy"), - fill: _("color"), - font: _("font"), - fontSize: _("fontSize"), - fontStyle: _("fontStyle"), - fontWeight: _("fontWeight"), - lineHeight: _("lineHeight") - }, { - // update - align: _("align"), - angle: _("angle"), - baseline: _("baseline") - }); - return guideMark({ - type: TextMark, - role: TitleTextRole, - style: GroupTitleStyle, - from: dataRef, - encode - }, userEncode); -} -function buildSubTitle(spec, _, userEncode, dataRef) { - const zero = { - value: 0 - }, text = spec.subtitle, encode = { - enter: { - opacity: zero - }, - update: { - opacity: { - value: 1 - } - }, - exit: { - opacity: zero - } - }; - addEncoders(encode, { - text: text, - align: { - signal: "item.mark.group.align" - }, - angle: { - signal: "item.mark.group.angle" - }, - limit: { - signal: "item.mark.group.limit" - }, - baseline: "top", - dx: _("dx"), - dy: _("dy"), - fill: _("subtitleColor"), - font: _("subtitleFont"), - fontSize: _("subtitleFontSize"), - fontStyle: _("subtitleFontStyle"), - fontWeight: _("subtitleFontWeight"), - lineHeight: _("subtitleLineHeight") - }, { - // update - align: _("align"), - angle: _("angle"), - baseline: _("baseline") - }); - return guideMark({ - type: TextMark, - role: TitleSubtitleRole, - style: GroupSubtitleStyle, - from: dataRef, - encode - }, userEncode); -} -function parseData(data, scope) { - const transforms = []; - if (data.transform) data.transform.forEach((tx)=>{ - transforms.push(parseTransform(tx, scope)); - }); - if (data.on) data.on.forEach((on)=>{ - parseTrigger(on, scope, data.name); - }); - scope.addDataPipeline(data.name, analyze(data, scope, transforms)); -} -/** - * Analyze a data pipeline, add needed operators. - */ function analyze(data, scope, ops) { - const output = []; - let source = null, modify = false, generate = false, upstream, i, n, t, m; - if (data.values) { - // hard-wired input data set - if (isSignal(data.values) || hasSignal(data.format)) { - // if either values is signal or format has signal, use dynamic loader - output.push(load(scope, data)); - output.push(source = collect()); - } else // otherwise, ingest upon dataflow init - output.push(source = collect({ - $ingest: data.values, - $format: data.format - })); - } else if (data.url) { - // load data from external source - if (hasSignal(data.url) || hasSignal(data.format)) { - // if either url or format has signal, use dynamic loader - output.push(load(scope, data)); - output.push(source = collect()); - } else // otherwise, request load upon dataflow init - output.push(source = collect({ - $request: data.url, - $format: data.format - })); - } else if (data.source) { - // derives from one or more other data sets - source = upstream = (0, _vegaUtil.array)(data.source).map((d)=>ref(scope.getData(d).output)); - output.push(null); // populate later - } // scan data transforms, add collectors as needed - for(i = 0, n = ops.length; i < n; ++i){ - t = ops[i]; - m = t.metadata; - if (!source && !m.source) output.push(source = collect()); - output.push(t); - if (m.generates) generate = true; - if (m.modifies && !generate) modify = true; - if (m.source) source = t; - else if (m.changes) source = null; - } - if (upstream) { - n = upstream.length - 1; - output[0] = Relay({ - derive: modify, - pulse: n ? upstream : upstream[0] - }); - if (modify || n) // collect derived and multi-pulse tuples - output.splice(1, 0, collect()); - } - if (!source) output.push(collect()); - output.push(Sieve({})); - return output; -} -function collect(values) { - const s = Collect({}, values); - s.metadata = { - source: true - }; - return s; -} -function load(scope, data) { - return Load({ - url: data.url ? scope.property(data.url) : undefined, - async: data.async ? scope.property(data.async) : undefined, - values: data.values ? scope.property(data.values) : undefined, - format: scope.objectProperty(data.format) - }); -} -const isX = (orient)=>orient === Bottom || orient === Top; // get sign coefficient based on axis orient -const getSign = (orient, a, b)=>isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b; // condition on axis x-direction -const ifX = (orient, a, b)=>isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b; // condition on axis y-direction -const ifY = (orient, a, b)=>isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a; -const ifTop = (orient, a, b)=>isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? { - value: a - } : { - value: b - }; -const ifRight = (orient, a, b)=>isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? { - value: a - } : { - value: b - }; -const ifXEnc = ($orient, a, b)=>ifEnc(`${$orient} === '${Top}' || ${$orient} === '${Bottom}'`, a, b); -const ifYEnc = ($orient, a, b)=>ifEnc(`${$orient} !== '${Top}' && ${$orient} !== '${Bottom}'`, a, b); -const ifLeftTopExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Left}' || ${$orient} === '${Top}'`, a, b); -const ifTopExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Top}'`, a, b); -const ifRightExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Right}'`, a, b); -const ifEnc = (test, a, b)=>{ - // ensure inputs are encoder objects (or null) - a = a != null ? encoder(a) : a; - b = b != null ? encoder(b) : b; - if (isSimple(a) && isSimple(b)) { - // if possible generate simple signal expression - a = a ? a.signal || (0, _vegaUtil.stringValue)(a.value) : null; - b = b ? b.signal || (0, _vegaUtil.stringValue)(b.value) : null; - return { - signal: `${test} ? (${a}) : (${b})` - }; - } else // otherwise generate rule set - return [ - (0, _vegaUtil.extend)({ - test - }, a) - ].concat(b || []); -}; -const isSimple = (enc)=>enc == null || Object.keys(enc).length === 1; -const ifExpr = (test, a, b)=>({ - signal: `${test} ? (${toExpr(a)}) : (${toExpr(b)})` - }); -const ifOrient = ($orient, t, b, l, r)=>({ - signal: (l != null ? `${$orient} === '${Left}' ? (${toExpr(l)}) : ` : "") + (b != null ? `${$orient} === '${Bottom}' ? (${toExpr(b)}) : ` : "") + (r != null ? `${$orient} === '${Right}' ? (${toExpr(r)}) : ` : "") + (t != null ? `${$orient} === '${Top}' ? (${toExpr(t)}) : ` : "") + "(null)" - }); -const toExpr = (v)=>isSignal(v) ? v.signal : v == null ? null : (0, _vegaUtil.stringValue)(v); -const mult = (sign, value)=>value === 0 ? 0 : isSignal(sign) ? { - signal: `(${sign.signal}) * ${value}` - } : { - value: sign * value - }; -const patch = (value, base)=>{ - const s = value.signal; - return s && s.endsWith("(null)") ? { - signal: s.slice(0, -6) + base.signal - } : value; -}; -function fallback(prop, config, axisConfig, style) { - let styleProp; - if (config && (0, _vegaUtil.hasOwnProperty)(config, prop)) return config[prop]; - else if ((0, _vegaUtil.hasOwnProperty)(axisConfig, prop)) return axisConfig[prop]; - else if (prop.startsWith("title")) { - switch(prop){ - case "titleColor": - styleProp = "fill"; - break; - case "titleFont": - case "titleFontSize": - case "titleFontWeight": - styleProp = prop[5].toLowerCase() + prop.slice(6); - } - return style[GuideTitleStyle][styleProp]; - } else if (prop.startsWith("label")) { - switch(prop){ - case "labelColor": - styleProp = "fill"; - break; - case "labelFont": - case "labelFontSize": - styleProp = prop[5].toLowerCase() + prop.slice(6); - } - return style[GuideLabelStyle][styleProp]; - } - return null; -} -function keys(objects) { - const map = {}; - for (const obj of objects){ - if (!obj) continue; - for(const key in obj)map[key] = 1; - } - return Object.keys(map); -} -function axisConfig(spec, scope) { - var config = scope.config, style = config.style, axis = config.axis, band = scope.scaleType(spec.scale) === "band" && config.axisBand, orient = spec.orient, xy, or, key; - if (isSignal(orient)) { - const xyKeys = keys([ - config.axisX, - config.axisY - ]), orientKeys = keys([ - config.axisTop, - config.axisBottom, - config.axisLeft, - config.axisRight - ]); - xy = {}; - for (key of xyKeys)xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style)); - or = {}; - for (key of orientKeys)or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style)); - } else { - xy = orient === Top || orient === Bottom ? config.axisX : config.axisY; - or = config["axis" + orient[0].toUpperCase() + orient.slice(1)]; - } - const result = xy || or || band ? (0, _vegaUtil.extend)({}, axis, xy, or, band) : axis; - return result; -} -function axisDomain(spec, config, userEncode, dataRef) { - const _ = lookup(spec, config), orient = spec.orient; - let enter, update; - const encode = { - enter: enter = { - opacity: zero - }, - update: update = { - opacity: one - }, - exit: { - opacity: zero - } - }; - addEncoders(encode, { - stroke: _("domainColor"), - strokeCap: _("domainCap"), - strokeDash: _("domainDash"), - strokeDashOffset: _("domainDashOffset"), - strokeWidth: _("domainWidth"), - strokeOpacity: _("domainOpacity") - }); - const pos0 = position(spec, 0); - const pos1 = position(spec, 1); - enter.x = update.x = ifX(orient, pos0, zero); - enter.x2 = update.x2 = ifX(orient, pos1); - enter.y = update.y = ifY(orient, pos0, zero); - enter.y2 = update.y2 = ifY(orient, pos1); - return guideMark({ - type: RuleMark, - role: AxisDomainRole, - from: dataRef, - encode - }, userEncode); -} -function position(spec, pos) { - return { - scale: spec.scale, - range: pos - }; -} -function axisGrid(spec, config, userEncode, dataRef, band) { - const _ = lookup(spec, config), orient = spec.orient, vscale = spec.gridScale, sign = getSign(orient, 1, -1), offset = offsetValue(spec.offset, sign); - let enter, exit, update; - const encode = { - enter: enter = { - opacity: zero - }, - update: update = { - opacity: one - }, - exit: exit = { - opacity: zero - } - }; - addEncoders(encode, { - stroke: _("gridColor"), - strokeCap: _("gridCap"), - strokeDash: _("gridDash"), - strokeDashOffset: _("gridDashOffset"), - strokeOpacity: _("gridOpacity"), - strokeWidth: _("gridWidth") - }); - const tickPos = { - scale: spec.scale, - field: Value, - band: band.band, - extra: band.extra, - offset: band.offset, - round: _("tickRound") - }; - const sz = ifX(orient, { - signal: "height" - }, { - signal: "width" - }); - const gridStart = vscale ? { - scale: vscale, - range: 0, - mult: sign, - offset: offset - } : { - value: 0, - offset: offset - }; - const gridEnd = vscale ? { - scale: vscale, - range: 1, - mult: sign, - offset: offset - } : (0, _vegaUtil.extend)(sz, { - mult: sign, - offset: offset - }); - enter.x = update.x = ifX(orient, tickPos, gridStart); - enter.y = update.y = ifY(orient, tickPos, gridStart); - enter.x2 = update.x2 = ifY(orient, gridEnd); - enter.y2 = update.y2 = ifX(orient, gridEnd); - exit.x = ifX(orient, tickPos); - exit.y = ifY(orient, tickPos); - return guideMark({ - type: RuleMark, - role: AxisGridRole, - key: Value, - from: dataRef, - encode - }, userEncode); -} -function offsetValue(offset, sign) { - if (sign === 1) ; - else if (!(0, _vegaUtil.isObject)(offset)) offset = isSignal(sign) ? { - signal: `(${sign.signal}) * (${offset || 0})` - } : sign * (offset || 0); - else { - let entry = offset = (0, _vegaUtil.extend)({}, offset); - while(entry.mult != null)if (!(0, _vegaUtil.isObject)(entry.mult)) { - entry.mult = isSignal(sign) // no offset if sign === 1 - ? { - signal: `(${entry.mult}) * (${sign.signal})` - } : entry.mult * sign; - return offset; - } else entry = entry.mult = (0, _vegaUtil.extend)({}, entry.mult); - entry.mult = sign; - } - return offset; -} -function axisTicks(spec, config, userEncode, dataRef, size, band) { - const _ = lookup(spec, config), orient = spec.orient, sign = getSign(orient, -1, 1); - let enter, exit, update; - const encode = { - enter: enter = { - opacity: zero - }, - update: update = { - opacity: one - }, - exit: exit = { - opacity: zero - } - }; - addEncoders(encode, { - stroke: _("tickColor"), - strokeCap: _("tickCap"), - strokeDash: _("tickDash"), - strokeDashOffset: _("tickDashOffset"), - strokeOpacity: _("tickOpacity"), - strokeWidth: _("tickWidth") - }); - const tickSize = encoder(size); - tickSize.mult = sign; - const tickPos = { - scale: spec.scale, - field: Value, - band: band.band, - extra: band.extra, - offset: band.offset, - round: _("tickRound") - }; - update.y = enter.y = ifX(orient, zero, tickPos); - update.y2 = enter.y2 = ifX(orient, tickSize); - exit.x = ifX(orient, tickPos); - update.x = enter.x = ifY(orient, zero, tickPos); - update.x2 = enter.x2 = ifY(orient, tickSize); - exit.y = ifY(orient, tickPos); - return guideMark({ - type: RuleMark, - role: AxisTickRole, - key: Value, - from: dataRef, - encode - }, userEncode); -} -function flushExpr(scale, threshold, a, b, c) { - return { - signal: 'flush(range("' + scale + '"), ' + 'scale("' + scale + '", datum.value), ' + threshold + "," + a + "," + b + "," + c + ")" - }; -} -function axisLabels(spec, config, userEncode, dataRef, size, band) { - const _ = lookup(spec, config), orient = spec.orient, scale = spec.scale, sign = getSign(orient, -1, 1), flush = deref(_("labelFlush")), flushOffset = deref(_("labelFlushOffset")), labelAlign = _("labelAlign"), labelBaseline = _("labelBaseline"); - let flushOn = flush === 0 || !!flush, update; - const tickSize = encoder(size); - tickSize.mult = sign; - tickSize.offset = encoder(_("labelPadding") || 0); - tickSize.offset.mult = sign; - const tickPos = { - scale: scale, - field: Value, - band: 0.5, - offset: extendOffset(band.offset, _("labelOffset")) - }; - const align = ifX(orient, flushOn ? flushExpr(scale, flush, '"left"', '"right"', '"center"') : { - value: "center" - }, ifRight(orient, "left", "right")); - const baseline = ifX(orient, ifTop(orient, "bottom", "top"), flushOn ? flushExpr(scale, flush, '"top"', '"bottom"', '"middle"') : { - value: "middle" - }); - const offsetExpr = flushExpr(scale, flush, `-(${flushOffset})`, flushOffset, 0); - flushOn = flushOn && flushOffset; - const enter = { - opacity: zero, - x: ifX(orient, tickPos, tickSize), - y: ifY(orient, tickPos, tickSize) - }; - const encode = { - enter: enter, - update: update = { - opacity: one, - text: { - field: Label - }, - x: enter.x, - y: enter.y, - align, - baseline - }, - exit: { - opacity: zero, - x: enter.x, - y: enter.y - } - }; - addEncoders(encode, { - dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null, - dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null - }); - addEncoders(encode, { - angle: _("labelAngle"), - fill: _("labelColor"), - fillOpacity: _("labelOpacity"), - font: _("labelFont"), - fontSize: _("labelFontSize"), - fontWeight: _("labelFontWeight"), - fontStyle: _("labelFontStyle"), - limit: _("labelLimit"), - lineHeight: _("labelLineHeight") - }, { - align: labelAlign, - baseline: labelBaseline - }); - const bound = _("labelBound"); - let overlap = _("labelOverlap"); // if overlap method or bound defined, request label overlap removal - overlap = overlap || bound ? { - separation: _("labelSeparation"), - method: overlap, - order: "datum.index", - bound: bound ? { - scale, - orient, - tolerance: bound - } : null - } : undefined; - if (update.align !== align) update.align = patch(update.align, align); - if (update.baseline !== baseline) update.baseline = patch(update.baseline, baseline); - return guideMark({ - type: TextMark, - role: AxisLabelRole, - style: GuideLabelStyle, - key: Value, - from: dataRef, - encode, - overlap - }, userEncode); -} -function axisTitle(spec, config, userEncode, dataRef) { - const _ = lookup(spec, config), orient = spec.orient, sign = getSign(orient, -1, 1); - let enter, update; - const encode = { - enter: enter = { - opacity: zero, - anchor: encoder(_("titleAnchor", null)), - align: { - signal: alignExpr$1 - } - }, - update: update = (0, _vegaUtil.extend)({}, enter, { - opacity: one, - text: encoder(spec.title) - }), - exit: { - opacity: zero - } - }; - const titlePos = { - signal: `lerp(range("${spec.scale}"), ${anchorExpr(0, 1, 0.5)})` - }; - update.x = ifX(orient, titlePos); - update.y = ifY(orient, titlePos); - enter.angle = ifX(orient, zero, mult(sign, 90)); - enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), { - value: Bottom - }); - update.angle = enter.angle; - update.baseline = enter.baseline; - addEncoders(encode, { - fill: _("titleColor"), - fillOpacity: _("titleOpacity"), - font: _("titleFont"), - fontSize: _("titleFontSize"), - fontStyle: _("titleFontStyle"), - fontWeight: _("titleFontWeight"), - limit: _("titleLimit"), - lineHeight: _("titleLineHeight") - }, { - // require update - align: _("titleAlign"), - angle: _("titleAngle"), - baseline: _("titleBaseline") - }); - autoLayout(_, orient, encode, userEncode); - encode.update.align = patch(encode.update.align, enter.align); - encode.update.angle = patch(encode.update.angle, enter.angle); - encode.update.baseline = patch(encode.update.baseline, enter.baseline); - return guideMark({ - type: TextMark, - role: AxisTitleRole, - style: GuideTitleStyle, - from: dataRef, - encode - }, userEncode); -} -function autoLayout(_, orient, encode, userEncode) { - const auto = (value, dim)=>value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false; - const autoY = auto(_("titleX"), "x"), autoX = auto(_("titleY"), "y"); - encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY)); -} -function parseAxis(spec, scope) { - const config = axisConfig(spec, scope), encode = spec.encode || {}, axisEncode = encode.axis || {}, name = axisEncode.name || undefined, interactive = axisEncode.interactive, style = axisEncode.style, _ = lookup(spec, config), band = tickBand(_); // single-element data source for axis group - const datum = { - scale: spec.scale, - ticks: !!_("ticks"), - labels: !!_("labels"), - grid: !!_("grid"), - domain: !!_("domain"), - title: spec.title != null - }; - const dataRef = ref(scope.add(Collect({}, [ - datum - ]))); // data source for axis ticks - const ticksRef = ref(scope.add(AxisTicks({ - scale: scope.scaleRef(spec.scale), - extra: scope.property(band.extra), - count: scope.objectProperty(spec.tickCount), - values: scope.objectProperty(spec.values), - minstep: scope.property(spec.tickMinStep), - formatType: scope.property(spec.formatType), - formatSpecifier: scope.property(spec.format) - }))); // generate axis marks - const children = []; - let size; // include axis gridlines if requested - if (datum.grid) children.push(axisGrid(spec, config, encode.grid, ticksRef, band)); - // include axis ticks if requested - if (datum.ticks) { - size = _("tickSize"); - children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band)); - } // include axis labels if requested - if (datum.labels) { - size = datum.ticks ? size : 0; - children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band)); - } // include axis domain path if requested - if (datum.domain) children.push(axisDomain(spec, config, encode.domain, dataRef)); - // include axis title if defined - if (datum.title) children.push(axisTitle(spec, config, encode.title, dataRef)); - // parse axis specification - return parseMark(guideGroup({ - role: AxisRole, - from: dataRef, - encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip), - marks: children, - aria: _("aria"), - description: _("description"), - zindex: _("zindex"), - name, - interactive, - style - }), scope); -} -function buildAxisEncode(_, spec) { - const encode = { - enter: {}, - update: {} - }; - addEncoders(encode, { - orient: _("orient"), - offset: _("offset") || 0, - position: value(spec.position, 0), - titlePadding: _("titlePadding"), - minExtent: _("minExtent"), - maxExtent: _("maxExtent"), - range: { - signal: `abs(span(range("${spec.scale}")))` - }, - translate: _("translate"), - // accessibility support - format: spec.format, - formatType: spec.formatType - }); - return encode; -} -function parseScope(spec, scope, preprocessed) { - const signals = (0, _vegaUtil.array)(spec.signals), scales = (0, _vegaUtil.array)(spec.scales); // parse signal definitions, if not already preprocessed - if (!preprocessed) signals.forEach((_)=>parseSignal(_, scope)); // parse cartographic projection definitions - (0, _vegaUtil.array)(spec.projections).forEach((_)=>parseProjection(_, scope)); // initialize scale references - scales.forEach((_)=>initScale(_, scope)); // parse data sources - (0, _vegaUtil.array)(spec.data).forEach((_)=>parseData(_, scope)); // parse scale definitions - scales.forEach((_)=>parseScale(_, scope)); // parse signal updates - (preprocessed || signals).forEach((_)=>parseSignalUpdates(_, scope)); // parse axis definitions - (0, _vegaUtil.array)(spec.axes).forEach((_)=>parseAxis(_, scope)); // parse mark definitions - (0, _vegaUtil.array)(spec.marks).forEach((_)=>parseMark(_, scope)); // parse legend definitions - (0, _vegaUtil.array)(spec.legends).forEach((_)=>parseLegend(_, scope)); // parse title, if defined - if (spec.title) parseTitle(spec.title, scope); // parse collected lambda (anonymous) expressions - scope.parseLambdas(); - return scope; -} -const rootEncode = (spec)=>extendEncode({ - enter: { - x: { - value: 0 - }, - y: { - value: 0 - } - }, - update: { - width: { - signal: "width" - }, - height: { - signal: "height" - } - } - }, spec); -function parseView(spec, scope) { - const config = scope.config; // add scenegraph root - const root = ref(scope.root = scope.add(operator())); // parse top-level signal definitions - const signals = collectSignals(spec, config); - signals.forEach((_)=>parseSignal(_, scope)); // assign description, event, legend, and locale configuration - scope.description = spec.description || config.description; - scope.eventConfig = config.events; - scope.legends = scope.objectProperty(config.legend && config.legend.layout); - scope.locale = config.locale; // store root group item - const input = scope.add(Collect()); // encode root group item - const encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, { - pulse: ref(input) - }))); // perform view layout - const parent = scope.add(ViewLayout({ - layout: scope.objectProperty(spec.layout), - legends: scope.legends, - autosize: scope.signalRef("autosize"), - mark: root, - pulse: ref(encode) - })); - scope.operators.pop(); // parse remainder of specification - scope.pushState(ref(encode), ref(parent), null); - parseScope(spec, scope, signals); - scope.operators.push(parent); // bound / render / sieve root item - let op = scope.add(Bound({ - mark: root, - pulse: ref(parent) - })); - op = scope.add(Render({ - pulse: ref(op) - })); - op = scope.add(Sieve({ - pulse: ref(op) - })); // track metadata for root item - scope.addData("root", new DataScope(scope, input, input, op)); - return scope; -} -function signalObject(name, value) { - return value && value.signal ? { - name, - update: value.signal - } : { - name, - value - }; -} -/** - * Collect top-level signals, merging values as needed. Signals - * defined in the config signals arrays are added only if that - * signal is not explicitly defined in the specification. - * Built-in signals (autosize, background, padding, width, height) - * receive special treatment. They are initialized using the - * top-level spec property, or, if undefined in the spec, using - * the corresponding top-level config property. If this property - * is a signal reference object, the signal expression maps to the - * signal 'update' property. If the spec's top-level signal array - * contains an entry that matches a built-in signal, that entry - * will be merged with the built-in specification, potentially - * overwriting existing 'value' or 'update' properties. - */ function collectSignals(spec, config) { - const _ = (name)=>value(spec[name], config[name]), signals = [ - signalObject("background", _("background")), - signalObject("autosize", parseAutosize(_("autosize"))), - signalObject("padding", parsePadding(_("padding"))), - signalObject("width", _("width") || 0), - signalObject("height", _("height") || 0) - ], pre = signals.reduce((p, s)=>(p[s.name] = s, p), {}), map = {}; // add spec signal array - (0, _vegaUtil.array)(spec.signals).forEach((s)=>{ - if ((0, _vegaUtil.hasOwnProperty)(pre, s.name)) // merge if built-in signal - s = (0, _vegaUtil.extend)(pre[s.name], s); - else // otherwise add to signal list - signals.push(s); - map[s.name] = s; - }); // add config signal array - (0, _vegaUtil.array)(config.signals).forEach((s)=>{ - if (!(0, _vegaUtil.hasOwnProperty)(map, s.name) && !(0, _vegaUtil.hasOwnProperty)(pre, s.name)) // add to signal list if not already defined - signals.push(s); - }); - return signals; -} -function Scope(config, options) { - this.config = config || {}; - this.options = options || {}; - this.bindings = []; - this.field = {}; - this.signals = {}; - this.lambdas = {}; - this.scales = {}; - this.events = {}; - this.data = {}; - this.streams = []; - this.updates = []; - this.operators = []; - this.eventConfig = null; - this.locale = null; - this._id = 0; - this._subid = 0; - this._nextsub = [ - 0 - ]; - this._parent = []; - this._encode = []; - this._lookup = []; - this._markpath = []; -} -function Subscope(scope) { - this.config = scope.config; - this.options = scope.options; - this.legends = scope.legends; - this.field = Object.create(scope.field); - this.signals = Object.create(scope.signals); - this.lambdas = Object.create(scope.lambdas); - this.scales = Object.create(scope.scales); - this.events = Object.create(scope.events); - this.data = Object.create(scope.data); - this.streams = []; - this.updates = []; - this.operators = []; - this._id = 0; - this._subid = ++scope._nextsub[0]; - this._nextsub = scope._nextsub; - this._parent = scope._parent.slice(); - this._encode = scope._encode.slice(); - this._lookup = scope._lookup.slice(); - this._markpath = scope._markpath; -} -Scope.prototype = Subscope.prototype = { - parse (spec) { - return parseScope(spec, this); - }, - fork () { - return new Subscope(this); - }, - isSubscope () { - return this._subid > 0; - }, - toRuntime () { - this.finish(); - return { - description: this.description, - operators: this.operators, - streams: this.streams, - updates: this.updates, - bindings: this.bindings, - eventConfig: this.eventConfig, - locale: this.locale - }; - }, - id () { - return (this._subid ? this._subid + ":" : 0) + this._id++; - }, - add (op) { - this.operators.push(op); - op.id = this.id(); // if pre-registration references exist, resolve them now - if (op.refs) { - op.refs.forEach((ref)=>{ - ref.$ref = op.id; - }); - op.refs = null; - } - return op; - }, - proxy (op) { - const vref = op instanceof Entry ? ref(op) : op; - return this.add(Proxy({ - value: vref - })); - }, - addStream (stream) { - this.streams.push(stream); - stream.id = this.id(); - return stream; - }, - addUpdate (update) { - this.updates.push(update); - return update; - }, - // Apply metadata - finish () { - let name, ds; // annotate root - if (this.root) this.root.root = true; // annotate signals - for(name in this.signals)this.signals[name].signal = name; - // annotate scales - for(name in this.scales)this.scales[name].scale = name; - // annotate data sets - function annotate(op, name, type) { - let data, list; - if (op) { - data = op.data || (op.data = {}); - list = data[name] || (data[name] = []); - list.push(type); - } - } - for(name in this.data){ - ds = this.data[name]; - annotate(ds.input, name, "input"); - annotate(ds.output, name, "output"); - annotate(ds.values, name, "values"); - for(const field in ds.index)annotate(ds.index[field], name, "index:" + field); - } - return this; - }, - // ---- - pushState (encode, parent, lookup) { - this._encode.push(ref(this.add(Sieve({ - pulse: encode - })))); - this._parent.push(parent); - this._lookup.push(lookup ? ref(this.proxy(lookup)) : null); - this._markpath.push(-1); - }, - popState () { - this._encode.pop(); - this._parent.pop(); - this._lookup.pop(); - this._markpath.pop(); - }, - parent () { - return (0, _vegaUtil.peek)(this._parent); - }, - encode () { - return (0, _vegaUtil.peek)(this._encode); - }, - lookup () { - return (0, _vegaUtil.peek)(this._lookup); - }, - markpath () { - const p = this._markpath; - return ++p[p.length - 1]; - }, - // ---- - fieldRef (field, name) { - if ((0, _vegaUtil.isString)(field)) return fieldRef$1(field, name); - if (!field.signal) (0, _vegaUtil.error)("Unsupported field reference: " + (0, _vegaUtil.stringValue)(field)); - const s = field.signal; - let f = this.field[s]; - if (!f) { - const params = { - name: this.signalRef(s) - }; - if (name) params.as = name; - this.field[s] = f = ref(this.add(Field(params))); - } - return f; - }, - compareRef (cmp) { - let signal = false; - const check = (_)=>isSignal(_) ? (signal = true, this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, this.exprRef(_.expr)) : _; - const fields = (0, _vegaUtil.array)(cmp.field).map(check), orders = (0, _vegaUtil.array)(cmp.order).map(check); - return signal ? ref(this.add(Compare({ - fields: fields, - orders: orders - }))) : compareRef(fields, orders); - }, - keyRef (fields, flat) { - let signal = false; - const check = (_)=>isSignal(_) ? (signal = true, ref(sig[_.signal])) : _; - const sig = this.signals; - fields = (0, _vegaUtil.array)(fields).map(check); - return signal ? ref(this.add(Key({ - fields: fields, - flat: flat - }))) : keyRef(fields, flat); - }, - sortRef (sort) { - if (!sort) return sort; // including id ensures stable sorting - const a = aggrField(sort.op, sort.field), o = sort.order || Ascending; - return o.signal ? ref(this.add(Compare({ - fields: a, - orders: this.signalRef(o.signal) - }))) : compareRef(a, o); - }, - // ---- - event (source, type) { - const key = source + ":" + type; - if (!this.events[key]) { - const id = this.id(); - this.streams.push({ - id: id, - source: source, - type: type - }); - this.events[key] = id; - } - return this.events[key]; - }, - // ---- - hasOwnSignal (name) { - return (0, _vegaUtil.hasOwnProperty)(this.signals, name); - }, - addSignal (name, value) { - if (this.hasOwnSignal(name)) (0, _vegaUtil.error)("Duplicate signal name: " + (0, _vegaUtil.stringValue)(name)); - const op = value instanceof Entry ? value : this.add(operator(value)); - return this.signals[name] = op; - }, - getSignal (name) { - if (!this.signals[name]) (0, _vegaUtil.error)("Unrecognized signal name: " + (0, _vegaUtil.stringValue)(name)); - return this.signals[name]; - }, - signalRef (s) { - if (this.signals[s]) return ref(this.signals[s]); - else if (!(0, _vegaUtil.hasOwnProperty)(this.lambdas, s)) this.lambdas[s] = this.add(operator(null)); - return ref(this.lambdas[s]); - }, - parseLambdas () { - const code = Object.keys(this.lambdas); - for(let i = 0, n = code.length; i < n; ++i){ - const s = code[i], e = (0, _vegaFunctions.parseExpression)(s, this), op = this.lambdas[s]; - op.params = e.$params; - op.update = e.$expr; - } - }, - property (spec) { - return spec && spec.signal ? this.signalRef(spec.signal) : spec; - }, - objectProperty (spec) { - return !spec || !(0, _vegaUtil.isObject)(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec)); - }, - exprRef (code, name) { - const params = { - expr: (0, _vegaFunctions.parseExpression)(code, this) - }; - if (name) params.expr.$name = name; - return ref(this.add(Expression(params))); - }, - addBinding (name, bind) { - if (!this.bindings) (0, _vegaUtil.error)("Nested signals do not support binding: " + (0, _vegaUtil.stringValue)(name)); - this.bindings.push((0, _vegaUtil.extend)({ - signal: name - }, bind)); - }, - // ---- - addScaleProj (name, transform) { - if ((0, _vegaUtil.hasOwnProperty)(this.scales, name)) (0, _vegaUtil.error)("Duplicate scale or projection name: " + (0, _vegaUtil.stringValue)(name)); - this.scales[name] = this.add(transform); - }, - addScale (name, params) { - this.addScaleProj(name, Scale(params)); - }, - addProjection (name, params) { - this.addScaleProj(name, Projection(params)); - }, - getScale (name) { - if (!this.scales[name]) (0, _vegaUtil.error)("Unrecognized scale name: " + (0, _vegaUtil.stringValue)(name)); - return this.scales[name]; - }, - scaleRef (name) { - return ref(this.getScale(name)); - }, - scaleType (name) { - return this.getScale(name).params.type; - }, - projectionRef (name) { - return this.scaleRef(name); - }, - projectionType (name) { - return this.scaleType(name); - }, - // ---- - addData (name, dataScope) { - if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); - return this.data[name] = dataScope; - }, - getData (name) { - if (!this.data[name]) (0, _vegaUtil.error)("Undefined data set name: " + (0, _vegaUtil.stringValue)(name)); - return this.data[name]; - }, - addDataPipeline (name, entries) { - if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); - return this.addData(name, DataScope.fromEntries(this, entries)); - } -}; -function propertyLambda(spec) { - return ((0, _vegaUtil.isArray)(spec) ? arrayLambda : objectLambda)(spec); -} -function arrayLambda(array) { - const n = array.length; - let code = "["; - for(let i = 0; i < n; ++i){ - const value = array[i]; - code += (i > 0 ? "," : "") + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); - } - return code + "]"; -} -function objectLambda(obj) { - let code = "{", i = 0, key, value; - for(key in obj){ - value = obj[key]; - code += (++i > 1 ? "," : "") + (0, _vegaUtil.stringValue)(key) + ":" + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); - } - return code + "}"; -} -/** - * Standard configuration defaults for Vega specification parsing. - * Users can provide their own (sub-)set of these default values - * by passing in a config object to the top-level parse method. - */ function defaults() { - const defaultFont = "sans-serif", defaultSymbolSize = 30, defaultStrokeWidth = 2, defaultColor = "#4c78a8", black = "#000", gray = "#888", lightGray = "#ddd"; - return { - // default visualization description - description: "Vega visualization", - // default padding around visualization - padding: 0, - // default for automatic sizing; options: 'none', 'pad', 'fit' - // or provide an object (e.g., {'type': 'pad', 'resize': true}) - autosize: "pad", - // default view background color - // covers the entire view component - background: null, - // default event handling configuration - // preventDefault for view-sourced event types except 'wheel' - events: { - defaults: { - allow: [ - "wheel" - ] - } - }, - // defaults for top-level group marks - // accepts mark properties (fill, stroke, etc) - // covers the data rectangle within group width/height - group: null, - // defaults for basic mark types - // each subset accepts mark properties (fill, stroke, etc) - mark: null, - arc: { - fill: defaultColor - }, - area: { - fill: defaultColor - }, - image: null, - line: { - stroke: defaultColor, - strokeWidth: defaultStrokeWidth - }, - path: { - stroke: defaultColor - }, - rect: { - fill: defaultColor - }, - rule: { - stroke: black - }, - shape: { - stroke: defaultColor - }, - symbol: { - fill: defaultColor, - size: 64 - }, - text: { - fill: black, - font: defaultFont, - fontSize: 11 - }, - trail: { - fill: defaultColor, - size: defaultStrokeWidth - }, - // style definitions - style: { - // axis & legend labels - "guide-label": { - fill: black, - font: defaultFont, - fontSize: 10 - }, - // axis & legend titles - "guide-title": { - fill: black, - font: defaultFont, - fontSize: 11, - fontWeight: "bold" - }, - // headers, including chart title - "group-title": { - fill: black, - font: defaultFont, - fontSize: 13, - fontWeight: "bold" - }, - // chart subtitle - "group-subtitle": { - fill: black, - font: defaultFont, - fontSize: 12 - }, - // defaults for styled point marks in Vega-Lite - point: { - size: defaultSymbolSize, - strokeWidth: defaultStrokeWidth, - shape: "circle" - }, - circle: { - size: defaultSymbolSize, - strokeWidth: defaultStrokeWidth - }, - square: { - size: defaultSymbolSize, - strokeWidth: defaultStrokeWidth, - shape: "square" - }, - // defaults for styled group marks in Vega-Lite - cell: { - fill: "transparent", - stroke: lightGray - } - }, - // defaults for title - title: { - orient: "top", - anchor: "middle", - offset: 4, - subtitlePadding: 3 - }, - // defaults for axes - axis: { - minExtent: 0, - maxExtent: 200, - bandPosition: 0.5, - domain: true, - domainWidth: 1, - domainColor: gray, - grid: false, - gridWidth: 1, - gridColor: lightGray, - labels: true, - labelAngle: 0, - labelLimit: 180, - labelOffset: 0, - labelPadding: 2, - ticks: true, - tickColor: gray, - tickOffset: 0, - tickRound: true, - tickSize: 5, - tickWidth: 1, - titlePadding: 4 - }, - // correction for centering bias - axisBand: { - tickOffset: -0.5 - }, - // defaults for cartographic projection - projection: { - type: "mercator" - }, - // defaults for legends - legend: { - orient: "right", - padding: 0, - gridAlign: "each", - columnPadding: 10, - rowPadding: 2, - symbolDirection: "vertical", - gradientDirection: "vertical", - gradientLength: 200, - gradientThickness: 16, - gradientStrokeColor: lightGray, - gradientStrokeWidth: 0, - gradientLabelOffset: 2, - labelAlign: "left", - labelBaseline: "middle", - labelLimit: 160, - labelOffset: 4, - labelOverlap: true, - symbolLimit: 30, - symbolType: "circle", - symbolSize: 100, - symbolOffset: 0, - symbolStrokeWidth: 1.5, - symbolBaseFillColor: "transparent", - symbolBaseStrokeColor: gray, - titleLimit: 180, - titleOrient: "top", - titlePadding: 5, - layout: { - offset: 18, - direction: "horizontal", - left: { - direction: "vertical" - }, - right: { - direction: "vertical" - } - } - }, - // defaults for scale ranges - range: { - category: { - scheme: "tableau10" - }, - ordinal: { - scheme: "blues" - }, - heatmap: { - scheme: "yellowgreenblue" - }, - ramp: { - scheme: "blues" - }, - diverging: { - scheme: "blueorange", - extent: [ - 1, - 0 - ] - }, - symbol: [ - "circle", - "square", - "triangle-up", - "cross", - "diamond", - "triangle-right", - "triangle-down", - "triangle-left" - ] - } - }; -} -function parse(spec, config, options) { - if (!(0, _vegaUtil.isObject)(spec)) (0, _vegaUtil.error)("Input Vega specification must be an object."); - config = (0, _vegaUtil.mergeConfig)(defaults(), config, spec.config); - return parseView(spec, new Scope(config, options)).toRuntime(); -} - -},{"vega-util":"dPFAY","vega-functions":"92bWe","vega-event-selector":"lNasS","vega-scale":"evQIv","vega-dataflow":"4kvYg","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lNasS":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "parseSelector", ()=>eventSelector); -const VIEW = "view", LBRACK = "[", RBRACK = "]", LBRACE = "{", RBRACE = "}", COLON = ":", COMMA = ",", NAME = "@", GT = ">", ILLEGAL = /[[\]{}]/, DEFAULT_MARKS = { - "*": 1, - arc: 1, - area: 1, - group: 1, - image: 1, - line: 1, - path: 1, - rect: 1, - rule: 1, - shape: 1, - symbol: 1, - text: 1, - trail: 1 -}; -let DEFAULT_SOURCE, MARKS; -/** - * Parse an event selector string. - * Returns an array of event stream definitions. - */ function eventSelector(selector, source, marks) { - DEFAULT_SOURCE = source || VIEW; - MARKS = marks || DEFAULT_MARKS; - return parseMerge(selector.trim()).map(parseSelector); -} -function isMarkType(type) { - return MARKS[type]; -} -function find(s, i, endChar, pushChar, popChar) { - const n = s.length; - let count = 0, c; - for(; i < n; ++i){ - c = s[i]; - if (!count && c === endChar) return i; - else if (popChar && popChar.indexOf(c) >= 0) --count; - else if (pushChar && pushChar.indexOf(c) >= 0) ++count; - } - return i; -} -function parseMerge(s) { - const output = [], n = s.length; - let start = 0, i = 0; - while(i < n){ - i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE); - output.push(s.substring(start, i).trim()); - start = ++i; - } - if (output.length === 0) throw "Empty event selector: " + s; - return output; -} -function parseSelector(s) { - return s[0] === "[" ? parseBetween(s) : parseStream(s); -} -function parseBetween(s) { - const n = s.length; - let i = 1, b; - i = find(s, i, RBRACK, LBRACK, RBRACK); - if (i === n) throw "Empty between selector: " + s; - b = parseMerge(s.substring(1, i)); - if (b.length !== 2) throw "Between selector must have two elements: " + s; - s = s.slice(i + 1).trim(); - if (s[0] !== GT) throw "Expected '>' after between selector: " + s; - b = b.map(parseSelector); - const stream = parseSelector(s.slice(1).trim()); - if (stream.between) return { - between: b, - stream: stream - }; - else stream.between = b; - return stream; -} -function parseStream(s) { - const stream = { - source: DEFAULT_SOURCE - }, source = []; - let throttle = [ - 0, - 0 - ], markname = 0, start = 0, n = s.length, i = 0, j, filter; // extract throttle from end - if (s[n - 1] === RBRACE) { - i = s.lastIndexOf(LBRACE); - if (i >= 0) { - try { - throttle = parseThrottle(s.substring(i + 1, n - 1)); - } catch (e) { - throw "Invalid throttle specification: " + s; - } - s = s.slice(0, i).trim(); - n = s.length; - } else throw "Unmatched right brace: " + s; - i = 0; - } - if (!n) throw s; // set name flag based on first char - if (s[0] === NAME) markname = ++i; // extract first part of multi-part stream selector - j = find(s, i, COLON); - if (j < n) { - source.push(s.substring(start, j).trim()); - start = i = ++j; - } // extract remaining part of stream selector - i = find(s, i, LBRACK); - if (i === n) source.push(s.substring(start, n).trim()); - else { - source.push(s.substring(start, i).trim()); - filter = []; - start = ++i; - if (start === n) throw "Unmatched left bracket: " + s; - } // extract filters - while(i < n){ - i = find(s, i, RBRACK); - if (i === n) throw "Unmatched left bracket: " + s; - filter.push(s.substring(start, i).trim()); - if (i < n - 1 && s[++i] !== LBRACK) throw "Expected left bracket: " + s; - start = ++i; - } // marshall event stream specification - if (!(n = source.length) || ILLEGAL.test(source[n - 1])) throw "Invalid event selector: " + s; - if (n > 1) { - stream.type = source[1]; - if (markname) stream.markname = source[0].slice(1); - else if (isMarkType(source[0])) stream.marktype = source[0]; - else stream.source = source[0]; - } else stream.type = source[0]; - if (stream.type.slice(-1) === "!") { - stream.consume = true; - stream.type = stream.type.slice(0, -1); - } - if (filter != null) stream.filter = filter; - if (throttle[0]) stream.throttle = throttle[0]; - if (throttle[1]) stream.debounce = throttle[1]; - return stream; -} -function parseThrottle(s) { - const a = s.split(COMMA); - if (!s.length || a.length > 2) throw s; - return a.map((_)=>{ - const x = +_; - if (x !== x) throw s; - return x; - }); -} - -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kqWZH":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "ASTNode", ()=>ASTNode); -parcelHelpers.export(exports, "ArrayExpression", ()=>ArrayExpression); -parcelHelpers.export(exports, "BinaryExpression", ()=>BinaryExpression); -parcelHelpers.export(exports, "CallExpression", ()=>CallExpression); -parcelHelpers.export(exports, "ConditionalExpression", ()=>ConditionalExpression); -parcelHelpers.export(exports, "Identifier", ()=>Identifier); -parcelHelpers.export(exports, "Literal", ()=>Literal); -parcelHelpers.export(exports, "LogicalExpression", ()=>LogicalExpression); -parcelHelpers.export(exports, "MemberExpression", ()=>MemberExpression); -parcelHelpers.export(exports, "ObjectExpression", ()=>ObjectExpression); -parcelHelpers.export(exports, "Property", ()=>Property); -parcelHelpers.export(exports, "RawCode", ()=>RawCode); -parcelHelpers.export(exports, "UnaryExpression", ()=>UnaryExpression); -parcelHelpers.export(exports, "codegen", ()=>codegen); -parcelHelpers.export(exports, "constants", ()=>Constants); -parcelHelpers.export(exports, "functions", ()=>Functions); -parcelHelpers.export(exports, "parse", ()=>parser); -var _vegaUtil = require("vega-util"); -const RawCode = "RawCode"; -const Literal = "Literal"; -const Property = "Property"; -const Identifier = "Identifier"; -const ArrayExpression = "ArrayExpression"; -const BinaryExpression = "BinaryExpression"; -const CallExpression = "CallExpression"; -const ConditionalExpression = "ConditionalExpression"; -const LogicalExpression = "LogicalExpression"; -const MemberExpression = "MemberExpression"; -const ObjectExpression = "ObjectExpression"; -const UnaryExpression = "UnaryExpression"; -function ASTNode(type) { - this.type = type; -} -ASTNode.prototype.visit = function(visitor) { - let c, i, n; - if (visitor(this)) return 1; - for(c = children(this), i = 0, n = c.length; i < n; ++i){ - if (c[i].visit(visitor)) return 1; - } -}; -function children(node) { - switch(node.type){ - case ArrayExpression: - return node.elements; - case BinaryExpression: - case LogicalExpression: - return [ - node.left, - node.right - ]; - case CallExpression: - return [ - node.callee - ].concat(node.arguments); - case ConditionalExpression: - return [ - node.test, - node.consequent, - node.alternate - ]; - case MemberExpression: - return [ - node.object, - node.property - ]; - case ObjectExpression: - return node.properties; - case Property: - return [ - node.key, - node.value - ]; - case UnaryExpression: - return [ - node.argument - ]; - case Identifier: - case Literal: - case RawCode: - default: - return []; - } -} -/* - The following expression parser is based on Esprima (http://esprima.org/). - Original header comment and license for Esprima is included here: - - Copyright (C) 2013 Ariya Hidayat - Copyright (C) 2013 Thaddee Tyl - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ var TokenName, source, index, length, lookahead; -var TokenBooleanLiteral = 1, TokenEOF = 2, TokenIdentifier = 3, TokenKeyword = 4, TokenNullLiteral = 5, TokenNumericLiteral = 6, TokenPunctuator = 7, TokenStringLiteral = 8, TokenRegularExpression = 9; -TokenName = {}; -TokenName[TokenBooleanLiteral] = "Boolean"; -TokenName[TokenEOF] = ""; -TokenName[TokenIdentifier] = "Identifier"; -TokenName[TokenKeyword] = "Keyword"; -TokenName[TokenNullLiteral] = "Null"; -TokenName[TokenNumericLiteral] = "Numeric"; -TokenName[TokenPunctuator] = "Punctuator"; -TokenName[TokenStringLiteral] = "String"; -TokenName[TokenRegularExpression] = "RegularExpression"; -var SyntaxArrayExpression = "ArrayExpression", SyntaxBinaryExpression = "BinaryExpression", SyntaxCallExpression = "CallExpression", SyntaxConditionalExpression = "ConditionalExpression", SyntaxIdentifier = "Identifier", SyntaxLiteral = "Literal", SyntaxLogicalExpression = "LogicalExpression", SyntaxMemberExpression = "MemberExpression", SyntaxObjectExpression = "ObjectExpression", SyntaxProperty = "Property", SyntaxUnaryExpression = "UnaryExpression"; // Error messages should be identical to V8. -var MessageUnexpectedToken = "Unexpected token %0", MessageUnexpectedNumber = "Unexpected number", MessageUnexpectedString = "Unexpected string", MessageUnexpectedIdentifier = "Unexpected identifier", MessageUnexpectedReserved = "Unexpected reserved word", MessageUnexpectedEOS = "Unexpected end of input", MessageInvalidRegExp = "Invalid regular expression", MessageUnterminatedRegExp = "Invalid regular expression: missing /", MessageStrictOctalLiteral = "Octal literals are not allowed in strict mode.", MessageStrictDuplicateProperty = "Duplicate data property in object literal not allowed in strict mode"; -var ILLEGAL = "ILLEGAL", DISABLED = "Disabled."; // See also tools/generate-unicode-regex.py. -var RegexNonAsciiIdentifierStart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), // eslint-disable-next-line no-misleading-character-class -RegexNonAsciiIdentifierPart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"); // Ensure the condition is true, otherwise throw an error. -// This is only to have a better contract semantic, i.e. another safety net -// to catch a logic error. The condition shall be fulfilled in normal case. -// Do NOT use this to enforce a certain condition on any user input. -function assert(condition, message) { - /* istanbul ignore next */ if (!condition) throw new Error("ASSERT: " + message); -} -function isDecimalDigit(ch) { - return ch >= 0x30 && ch <= 0x39; // 0..9 -} -function isHexDigit(ch) { - return "0123456789abcdefABCDEF".indexOf(ch) >= 0; -} -function isOctalDigit(ch) { - return "01234567".indexOf(ch) >= 0; -} // 7.2 White Space -function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [ - 0x1680, - 0x180E, - 0x2000, - 0x2001, - 0x2002, - 0x2003, - 0x2004, - 0x2005, - 0x2006, - 0x2007, - 0x2008, - 0x2009, - 0x200A, - 0x202F, - 0x205F, - 0x3000, - 0xFEFF - ].indexOf(ch) >= 0; -} // 7.3 Line Terminators -function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; -} // 7.6 Identifier Names and Identifiers -function isIdentifierStart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)); -} -function isIdentifierPart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch >= 0x30 && ch <= 0x39 || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)); -} // 7.6.1.1 Keywords -const keywords = { - "if": 1, - "in": 1, - "do": 1, - "var": 1, - "for": 1, - "new": 1, - "try": 1, - "let": 1, - "this": 1, - "else": 1, - "case": 1, - "void": 1, - "with": 1, - "enum": 1, - "while": 1, - "break": 1, - "catch": 1, - "throw": 1, - "const": 1, - "yield": 1, - "class": 1, - "super": 1, - "return": 1, - "typeof": 1, - "delete": 1, - "switch": 1, - "export": 1, - "import": 1, - "public": 1, - "static": 1, - "default": 1, - "finally": 1, - "extends": 1, - "package": 1, - "private": 1, - "function": 1, - "continue": 1, - "debugger": 1, - "interface": 1, - "protected": 1, - "instanceof": 1, - "implements": 1 -}; -function skipComment() { - while(index < length){ - const ch = source.charCodeAt(index); - if (isWhiteSpace(ch) || isLineTerminator(ch)) ++index; - else break; - } -} -function scanHexEscape(prefix) { - var i, len, ch, code = 0; - len = prefix === "u" ? 4 : 2; - for(i = 0; i < len; ++i)if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); - } else throwError({}, MessageUnexpectedToken, ILLEGAL); - return String.fromCharCode(code); -} -function scanUnicodeCodePointEscape() { - var ch, code, cu1, cu2; - ch = source[index]; - code = 0; // At least, one hex digit is required. - if (ch === "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - while(index < length){ - ch = source[index++]; - if (!isHexDigit(ch)) break; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); - } - if (code > 0x10FFFF || ch !== "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - // UTF-16 Encoding - if (code <= 0xFFFF) return String.fromCharCode(code); - cu1 = (code - 0x10000 >> 10) + 0xD800; - cu2 = (code - 0x10000 & 1023) + 0xDC00; - return String.fromCharCode(cu1, cu2); -} -function getEscapedIdentifier() { - var ch, id; - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierStart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id = ch; - } - while(index < length){ - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) break; - ++index; - id += String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierPart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id += ch; - } - } - return id; -} -function getIdentifier() { - var start, ch; - start = index++; - while(index < length){ - ch = source.charCodeAt(index); - if (ch === 0x5C) { - // Blackslash (U+005C) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); - } - if (isIdentifierPart(ch)) ++index; - else break; - } - return source.slice(start, index); -} -function scanIdentifier() { - var start, id, type; - start = index; // Backslash (U+005C) starts an escaped character. - id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) type = TokenIdentifier; - else if (keywords.hasOwnProperty(id)) // eslint-disable-line no-prototype-builtins - type = TokenKeyword; - else if (id === "null") type = TokenNullLiteral; - else if (id === "true" || id === "false") type = TokenBooleanLiteral; - else type = TokenIdentifier; - return { - type: type, - value: id, - start: start, - end: index - }; -} // 7.7 Punctuators -function scanPunctuator() { - var start = index, code = source.charCodeAt(index), code2, ch1 = source[index], ch2, ch3, ch4; - switch(code){ - // Check for most common single-character punctuators. - case 0x2E: - case 0x28: - case 0x29: - case 0x3B: - case 0x2C: - case 0x7B: - case 0x7D: - case 0x5B: - case 0x5D: - case 0x3A: - case 0x3F: - case 0x7E: - // ~ - ++index; - return { - type: TokenPunctuator, - value: String.fromCharCode(code), - start: start, - end: index - }; - default: - code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator. - if (code2 === 0x3D) switch(code){ - case 0x2B: - case 0x2D: - case 0x2F: - case 0x3C: - case 0x3E: - case 0x5E: - case 0x7C: - case 0x25: - case 0x26: - case 0x2A: - // * - index += 2; - return { - type: TokenPunctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - start: start, - end: index - }; - case 0x21: - case 0x3D: - // = - index += 2; // !== and === - if (source.charCodeAt(index) === 0x3D) ++index; - return { - type: TokenPunctuator, - value: source.slice(start, index), - start: start, - end: index - }; - } - } // 4-character punctuator: >>>= - ch4 = source.substr(index, 4); - if (ch4 === ">>>=") { - index += 4; - return { - type: TokenPunctuator, - value: ch4, - start: start, - end: index - }; - } // 3-character punctuators: === !== >>> <<= >>= - ch3 = ch4.substr(0, 3); - if (ch3 === ">>>" || ch3 === "<<=" || ch3 === ">>=") { - index += 3; - return { - type: TokenPunctuator, - value: ch3, - start: start, - end: index - }; - } // Other 2-character punctuators: ++ -- << >> && || - ch2 = ch3.substr(0, 2); - if (ch1 === ch2[1] && "+-<>&|".indexOf(ch1) >= 0 || ch2 === "=>") { - index += 2; - return { - type: TokenPunctuator, - value: ch2, - start: start, - end: index - }; - } - if (ch2 === "//") throwError({}, MessageUnexpectedToken, ILLEGAL); - // 1-character punctuators: < > = ! + - * % & | ^ / - if ("<>=!+-*%&|^/".indexOf(ch1) >= 0) { - ++index; - return { - type: TokenPunctuator, - value: ch1, - start: start, - end: index - }; - } - throwError({}, MessageUnexpectedToken, ILLEGAL); -} // 7.8.3 Numeric Literals -function scanHexLiteral(start) { - let number = ""; - while(index < length){ - if (!isHexDigit(source[index])) break; - number += source[index++]; - } - if (number.length === 0) throwError({}, MessageUnexpectedToken, ILLEGAL); - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt("0x" + number, 16), - start: start, - end: index - }; -} -function scanOctalLiteral(start) { - let number = "0" + source[index++]; - while(index < length){ - if (!isOctalDigit(source[index])) break; - number += source[index++]; - } - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt(number, 8), - octal: true, - start: start, - end: index - }; -} -function scanNumericLiteral() { - var number, start, ch; - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || ch === ".", "Numeric literal must start with a decimal digit or a decimal point"); - start = index; - number = ""; - if (ch !== ".") { - number = source[index++]; - ch = source[index]; // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === "0") { - if (ch === "x" || ch === "X") { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) return scanOctalLiteral(start); - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - } - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === ".") { - number += source[index++]; - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === "e" || ch === "E") { - number += source[index++]; - ch = source[index]; - if (ch === "+" || ch === "-") number += source[index++]; - if (isDecimalDigit(source.charCodeAt(index))) while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - else throwError({}, MessageUnexpectedToken, ILLEGAL); - } - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseFloat(number), - start: start, - end: index - }; -} // 7.8.4 String Literals -function scanStringLiteral() { - var str = "", quote, start, ch, code, octal = false; - quote = source[index]; - assert(quote === "'" || quote === '"', "String literal must starts with a quote"); - start = index; - ++index; - while(index < length){ - ch = source[index++]; - if (ch === quote) { - quote = ""; - break; - } else if (ch === "\\") { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) switch(ch){ - case "u": - case "x": - if (source[index] === "{") { - ++index; - str += scanUnicodeCodePointEscape(); - } else str += scanHexEscape(ch); - break; - case "n": - str += "\n"; - break; - case "r": - str += "\r"; - break; - case "t": - str += " "; - break; - case "b": - str += "\b"; - break; - case "f": - str += "\f"; - break; - case "v": - str += "\v"; - break; - default: - if (isOctalDigit(ch)) { - code = "01234567".indexOf(ch); // \0 is not octal escape sequence - if (code !== 0) octal = true; - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + "01234567".indexOf(source[index++]); // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ("0123".indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) code = code * 8 + "01234567".indexOf(source[index++]); - } - str += String.fromCharCode(code); - } else str += ch; - break; - } - else if (ch === "\r" && source[index] === "\n") ++index; - } else if (isLineTerminator(ch.charCodeAt(0))) break; - else str += ch; - } - if (quote !== "") throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenStringLiteral, - value: str, - octal: octal, - start: start, - end: index - }; -} -function testRegExp(pattern, flags) { - let tmp = pattern; - if (flags.indexOf("u") >= 0) // Replace each astral symbol and every Unicode code point - // escape sequence with a single ASCII symbol to avoid throwing on - // regular expressions that are only valid in combination with the - // `/u` flag. - // Note: replacing with the ASCII symbol `x` might cause false - // negatives in unlikely scenarios. For example, `[\u{61}-b]` is a - // perfectly valid pattern that is equivalent to `[a-b]`, but it - // would be replaced by `[x-b]` which throws an error. - tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g, ($0, $1)=>{ - if (parseInt($1, 16) <= 0x10FFFF) return "x"; - throwError({}, MessageInvalidRegExp); - }).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, "x"); - // First, detect invalid regular expressions. - try { - new RegExp(tmp); - } catch (e) { - throwError({}, MessageInvalidRegExp); - } // Return a regular expression object for this pattern-flag pair, or - // `null` in case the current environment doesn't support the flags it - // uses. - try { - return new RegExp(pattern, flags); - } catch (exception) { - return null; - } -} -function scanRegExpBody() { - var ch, str, classMarker, terminated, body; - ch = source[index]; - assert(ch === "/", "Regular expression literal must start with a slash"); - str = source[index++]; - classMarker = false; - terminated = false; - while(index < length){ - ch = source[index++]; - str += ch; - if (ch === "\\") { - ch = source[index++]; // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - str += ch; - } else if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - else if (classMarker) { - if (ch === "]") classMarker = false; - } else { - if (ch === "/") { - terminated = true; - break; - } else if (ch === "[") classMarker = true; - } - } - if (!terminated) throwError({}, MessageUnterminatedRegExp); - // Exclude leading and trailing slash. - body = str.substr(1, str.length - 2); - return { - value: body, - literal: str - }; -} -function scanRegExpFlags() { - var ch, str, flags; - str = ""; - flags = ""; - while(index < length){ - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) break; - ++index; - if (ch === "\\" && index < length) throwError({}, MessageUnexpectedToken, ILLEGAL); - else { - flags += ch; - str += ch; - } - } - if (flags.search(/[^gimuy]/g) >= 0) throwError({}, MessageInvalidRegExp, flags); - return { - value: flags, - literal: str - }; -} -function scanRegExp() { - var start, body, flags, value; - lookahead = null; - skipComment(); - start = index; - body = scanRegExpBody(); - flags = scanRegExpFlags(); - value = testRegExp(body.value, flags.value); - return { - literal: body.literal + flags.literal, - value: value, - regex: { - pattern: body.value, - flags: flags.value - }, - start: start, - end: index - }; -} -function isIdentifierName(token) { - return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral; -} -function advance() { - skipComment(); - if (index >= length) return { - type: TokenEOF, - start: index, - end: index - }; - const ch = source.charCodeAt(index); - if (isIdentifierStart(ch)) return scanIdentifier(); - // Very common: ( and ) and ; - if (ch === 0x28 || ch === 0x29 || ch === 0x3B) return scanPunctuator(); - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (ch === 0x27 || ch === 0x22) return scanStringLiteral(); - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (ch === 0x2E) { - if (isDecimalDigit(source.charCodeAt(index + 1))) return scanNumericLiteral(); - return scanPunctuator(); - } - if (isDecimalDigit(ch)) return scanNumericLiteral(); - return scanPunctuator(); -} -function lex() { - const token = lookahead; - index = token.end; - lookahead = advance(); - index = token.end; - return token; -} -function peek() { - const pos = index; - lookahead = advance(); - index = pos; -} -function finishArrayExpression(elements) { - const node = new ASTNode(SyntaxArrayExpression); - node.elements = elements; - return node; -} -function finishBinaryExpression(operator, left, right) { - const node = new ASTNode(operator === "||" || operator === "&&" ? SyntaxLogicalExpression : SyntaxBinaryExpression); - node.operator = operator; - node.left = left; - node.right = right; - return node; -} -function finishCallExpression(callee, args) { - const node = new ASTNode(SyntaxCallExpression); - node.callee = callee; - node.arguments = args; - return node; -} -function finishConditionalExpression(test, consequent, alternate) { - const node = new ASTNode(SyntaxConditionalExpression); - node.test = test; - node.consequent = consequent; - node.alternate = alternate; - return node; -} -function finishIdentifier(name) { - const node = new ASTNode(SyntaxIdentifier); - node.name = name; - return node; -} -function finishLiteral(token) { - const node = new ASTNode(SyntaxLiteral); - node.value = token.value; - node.raw = source.slice(token.start, token.end); - if (token.regex) { - if (node.raw === "//") node.raw = "/(?:)/"; - node.regex = token.regex; - } - return node; -} -function finishMemberExpression(accessor, object, property) { - const node = new ASTNode(SyntaxMemberExpression); - node.computed = accessor === "["; - node.object = object; - node.property = property; - if (!node.computed) property.member = true; - return node; -} -function finishObjectExpression(properties) { - const node = new ASTNode(SyntaxObjectExpression); - node.properties = properties; - return node; -} -function finishProperty(kind, key, value) { - const node = new ASTNode(SyntaxProperty); - node.key = key; - node.value = value; - node.kind = kind; - return node; -} -function finishUnaryExpression(operator, argument) { - const node = new ASTNode(SyntaxUnaryExpression); - node.operator = operator; - node.argument = argument; - node.prefix = true; - return node; -} // Throw an exception -function throwError(token, messageFormat) { - var error, args = Array.prototype.slice.call(arguments, 2), msg = messageFormat.replace(/%(\d)/g, (whole, index)=>{ - assert(index < args.length, "Message reference must be in range"); - return args[index]; - }); - error = new Error(msg); - error.index = index; - error.description = msg; - throw error; -} // Throw an exception because of the token. -function throwUnexpected(token) { - if (token.type === TokenEOF) throwError(token, MessageUnexpectedEOS); - if (token.type === TokenNumericLiteral) throwError(token, MessageUnexpectedNumber); - if (token.type === TokenStringLiteral) throwError(token, MessageUnexpectedString); - if (token.type === TokenIdentifier) throwError(token, MessageUnexpectedIdentifier); - if (token.type === TokenKeyword) throwError(token, MessageUnexpectedReserved); - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, MessageUnexpectedToken, token.value); -} // Expect the next token to match the specified punctuator. -// If not, an exception will be thrown. -function expect(value) { - const token = lex(); - if (token.type !== TokenPunctuator || token.value !== value) throwUnexpected(token); -} // Return true if the next token matches the specified punctuator. -function match(value) { - return lookahead.type === TokenPunctuator && lookahead.value === value; -} // Return true if the next token matches the specified keyword -function matchKeyword(keyword) { - return lookahead.type === TokenKeyword && lookahead.value === keyword; -} // 11.1.4 Array Initialiser -function parseArrayInitialiser() { - const elements = []; - index = lookahead.start; - expect("["); - while(!match("]"))if (match(",")) { - lex(); - elements.push(null); - } else { - elements.push(parseConditionalExpression()); - if (!match("]")) expect(","); - } - lex(); - return finishArrayExpression(elements); -} // 11.1.5 Object Initialiser -function parseObjectPropertyKey() { - index = lookahead.start; - const token = lex(); // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) { - if (token.octal) throwError(token, MessageStrictOctalLiteral); - return finishLiteral(token); - } - return finishIdentifier(token.value); -} -function parseObjectProperty() { - var token, key, id, value; - index = lookahead.start; - token = lookahead; - if (token.type === TokenIdentifier) { - id = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", id, value); - } - if (token.type === TokenEOF || token.type === TokenPunctuator) throwUnexpected(token); - else { - key = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", key, value); - } -} -function parseObjectInitialiser() { - var properties = [], property, name, key, map = {}, toString = String; - index = lookahead.start; - expect("{"); - while(!match("}")){ - property = parseObjectProperty(); - if (property.key.type === SyntaxIdentifier) name = property.key.name; - else name = toString(property.key.value); - key = "$" + name; - if (Object.prototype.hasOwnProperty.call(map, key)) throwError({}, MessageStrictDuplicateProperty); - else map[key] = true; - properties.push(property); - if (!match("}")) expect(","); - } - expect("}"); - return finishObjectExpression(properties); -} // 11.1.6 The Grouping Operator -function parseGroupExpression() { - expect("("); - const expr = parseExpression(); - expect(")"); - return expr; -} // 11.1 Primary Expressions -const legalKeywords = { - "if": 1 -}; -function parsePrimaryExpression() { - var type, token, expr; - if (match("(")) return parseGroupExpression(); - if (match("[")) return parseArrayInitialiser(); - if (match("{")) return parseObjectInitialiser(); - type = lookahead.type; - index = lookahead.start; - if (type === TokenIdentifier || legalKeywords[lookahead.value]) expr = finishIdentifier(lex().value); - else if (type === TokenStringLiteral || type === TokenNumericLiteral) { - if (lookahead.octal) throwError(lookahead, MessageStrictOctalLiteral); - expr = finishLiteral(lex()); - } else if (type === TokenKeyword) throw new Error(DISABLED); - else if (type === TokenBooleanLiteral) { - token = lex(); - token.value = token.value === "true"; - expr = finishLiteral(token); - } else if (type === TokenNullLiteral) { - token = lex(); - token.value = null; - expr = finishLiteral(token); - } else if (match("/") || match("/=")) { - expr = finishLiteral(scanRegExp()); - peek(); - } else throwUnexpected(lex()); - return expr; -} // 11.2 Left-Hand-Side Expressions -function parseArguments() { - const args = []; - expect("("); - if (!match(")")) while(index < length){ - args.push(parseConditionalExpression()); - if (match(")")) break; - expect(","); - } - expect(")"); - return args; -} -function parseNonComputedProperty() { - index = lookahead.start; - const token = lex(); - if (!isIdentifierName(token)) throwUnexpected(token); - return finishIdentifier(token.value); -} -function parseNonComputedMember() { - expect("."); - return parseNonComputedProperty(); -} -function parseComputedMember() { - expect("["); - const expr = parseExpression(); - expect("]"); - return expr; -} -function parseLeftHandSideExpressionAllowCall() { - var expr, args, property; - expr = parsePrimaryExpression(); - for(;;){ - if (match(".")) { - property = parseNonComputedMember(); - expr = finishMemberExpression(".", expr, property); - } else if (match("(")) { - args = parseArguments(); - expr = finishCallExpression(expr, args); - } else if (match("[")) { - property = parseComputedMember(); - expr = finishMemberExpression("[", expr, property); - } else break; - } - return expr; -} // 11.3 Postfix Expressions -function parsePostfixExpression() { - const expr = parseLeftHandSideExpressionAllowCall(); - if (lookahead.type === TokenPunctuator) { - if (match("++") || match("--")) throw new Error(DISABLED); - } - return expr; -} // 11.4 Unary Operators -function parseUnaryExpression() { - var token, expr; - if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) expr = parsePostfixExpression(); - else if (match("++") || match("--")) throw new Error(DISABLED); - else if (match("+") || match("-") || match("~") || match("!")) { - token = lex(); - expr = parseUnaryExpression(); - expr = finishUnaryExpression(token.value, expr); - } else if (matchKeyword("delete") || matchKeyword("void") || matchKeyword("typeof")) throw new Error(DISABLED); - else expr = parsePostfixExpression(); - return expr; -} -function binaryPrecedence(token) { - let prec = 0; - if (token.type !== TokenPunctuator && token.type !== TokenKeyword) return 0; - switch(token.value){ - case "||": - prec = 1; - break; - case "&&": - prec = 2; - break; - case "|": - prec = 3; - break; - case "^": - prec = 4; - break; - case "&": - prec = 5; - break; - case "==": - case "!=": - case "===": - case "!==": - prec = 6; - break; - case "<": - case ">": - case "<=": - case ">=": - case "instanceof": - case "in": - prec = 7; - break; - case "<<": - case ">>": - case ">>>": - prec = 8; - break; - case "+": - case "-": - prec = 9; - break; - case "*": - case "/": - case "%": - prec = 11; - break; - } - return prec; -} // 11.5 Multiplicative Operators -// 11.6 Additive Operators -// 11.7 Bitwise Shift Operators -// 11.8 Relational Operators -// 11.9 Equality Operators -// 11.10 Binary Bitwise Operators -// 11.11 Binary Logical Operators -function parseBinaryExpression() { - var marker, markers, expr, token, prec, stack, right, operator, left, i; - marker = lookahead; - left = parseUnaryExpression(); - token = lookahead; - prec = binaryPrecedence(token); - if (prec === 0) return left; - token.prec = prec; - lex(); - markers = [ - marker, - lookahead - ]; - right = parseUnaryExpression(); - stack = [ - left, - token, - right - ]; - while((prec = binaryPrecedence(lookahead)) > 0){ - // Reduce: make a binary expression from the three topmost entries. - while(stack.length > 2 && prec <= stack[stack.length - 2].prec){ - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - markers.pop(); - expr = finishBinaryExpression(operator, left, right); - stack.push(expr); - } // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - markers.push(lookahead); - expr = parseUnaryExpression(); - stack.push(expr); - } // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - markers.pop(); - while(i > 1){ - markers.pop(); - expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - } - return expr; -} // 11.12 Conditional Operator -function parseConditionalExpression() { - var expr, consequent, alternate; - expr = parseBinaryExpression(); - if (match("?")) { - lex(); - consequent = parseConditionalExpression(); - expect(":"); - alternate = parseConditionalExpression(); - expr = finishConditionalExpression(expr, consequent, alternate); + return f; + }, + compareRef (cmp) { + let signal = false; + const check = (_)=>isSignal(_) ? (signal = true, this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, this.exprRef(_.expr)) : _; + const fields = (0, _vegaUtil.array)(cmp.field).map(check), orders = (0, _vegaUtil.array)(cmp.order).map(check); + return signal ? ref(this.add(Compare({ + fields: fields, + orders: orders + }))) : compareRef(fields, orders); + }, + keyRef (fields, flat) { + let signal = false; + const check = (_)=>isSignal(_) ? (signal = true, ref(sig[_.signal])) : _; + const sig = this.signals; + fields = (0, _vegaUtil.array)(fields).map(check); + return signal ? ref(this.add(Key({ + fields: fields, + flat: flat + }))) : keyRef(fields, flat); + }, + sortRef (sort) { + if (!sort) return sort; // including id ensures stable sorting + const a = aggrField(sort.op, sort.field), o = sort.order || Ascending; + return o.signal ? ref(this.add(Compare({ + fields: a, + orders: this.signalRef(o.signal) + }))) : compareRef(a, o); + }, + // ---- + event (source, type) { + const key = source + ":" + type; + if (!this.events[key]) { + const id = this.id(); + this.streams.push({ + id: id, + source: source, + type: type + }); + this.events[key] = id; + } + return this.events[key]; + }, + // ---- + hasOwnSignal (name) { + return (0, _vegaUtil.hasOwnProperty)(this.signals, name); + }, + addSignal (name, value) { + if (this.hasOwnSignal(name)) (0, _vegaUtil.error)("Duplicate signal name: " + (0, _vegaUtil.stringValue)(name)); + const op = value instanceof Entry ? value : this.add(operator(value)); + return this.signals[name] = op; + }, + getSignal (name) { + if (!this.signals[name]) (0, _vegaUtil.error)("Unrecognized signal name: " + (0, _vegaUtil.stringValue)(name)); + return this.signals[name]; + }, + signalRef (s) { + if (this.signals[s]) return ref(this.signals[s]); + else if (!(0, _vegaUtil.hasOwnProperty)(this.lambdas, s)) this.lambdas[s] = this.add(operator(null)); + return ref(this.lambdas[s]); + }, + parseLambdas () { + const code = Object.keys(this.lambdas); + for(let i = 0, n = code.length; i < n; ++i){ + const s = code[i], e = (0, _vegaFunctions.parseExpression)(s, this), op = this.lambdas[s]; + op.params = e.$params; + op.update = e.$expr; + } + }, + property (spec) { + return spec && spec.signal ? this.signalRef(spec.signal) : spec; + }, + objectProperty (spec) { + return !spec || !(0, _vegaUtil.isObject)(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec)); + }, + exprRef (code, name) { + const params = { + expr: (0, _vegaFunctions.parseExpression)(code, this) + }; + if (name) params.expr.$name = name; + return ref(this.add(Expression(params))); + }, + addBinding (name, bind) { + if (!this.bindings) (0, _vegaUtil.error)("Nested signals do not support binding: " + (0, _vegaUtil.stringValue)(name)); + this.bindings.push((0, _vegaUtil.extend)({ + signal: name + }, bind)); + }, + // ---- + addScaleProj (name, transform) { + if ((0, _vegaUtil.hasOwnProperty)(this.scales, name)) (0, _vegaUtil.error)("Duplicate scale or projection name: " + (0, _vegaUtil.stringValue)(name)); + this.scales[name] = this.add(transform); + }, + addScale (name, params) { + this.addScaleProj(name, Scale(params)); + }, + addProjection (name, params) { + this.addScaleProj(name, Projection(params)); + }, + getScale (name) { + if (!this.scales[name]) (0, _vegaUtil.error)("Unrecognized scale name: " + (0, _vegaUtil.stringValue)(name)); + return this.scales[name]; + }, + scaleRef (name) { + return ref(this.getScale(name)); + }, + scaleType (name) { + return this.getScale(name).params.type; + }, + projectionRef (name) { + return this.scaleRef(name); + }, + projectionType (name) { + return this.scaleType(name); + }, + // ---- + addData (name, dataScope) { + if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); + return this.data[name] = dataScope; + }, + getData (name) { + if (!this.data[name]) (0, _vegaUtil.error)("Undefined data set name: " + (0, _vegaUtil.stringValue)(name)); + return this.data[name]; + }, + addDataPipeline (name, entries) { + if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); + return this.addData(name, DataScope.fromEntries(this, entries)); } - return expr; -} // 11.14 Comma Operator -function parseExpression() { - const expr = parseConditionalExpression(); - if (match(",")) throw new Error(DISABLED); // no sequence expressions - return expr; -} -function parser(code) { - source = code; - index = 0; - length = source.length; - lookahead = null; - peek(); - const expr = parseExpression(); - if (lookahead.type !== TokenEOF) throw new Error("Unexpect token after expression."); - return expr; -} -var Constants = { - NaN: "NaN", - E: "Math.E", - LN2: "Math.LN2", - LN10: "Math.LN10", - LOG2E: "Math.LOG2E", - LOG10E: "Math.LOG10E", - PI: "Math.PI", - SQRT1_2: "Math.SQRT1_2", - SQRT2: "Math.SQRT2", - MIN_VALUE: "Number.MIN_VALUE", - MAX_VALUE: "Number.MAX_VALUE" }; -function Functions(codegen) { - function fncall(name, args, cast, type) { - let obj = codegen(args[0]); - if (cast) { - obj = cast + "(" + obj + ")"; - if (cast.lastIndexOf("new ", 0) === 0) obj = "(" + obj + ")"; - } - return obj + "." + name + (type < 0 ? "" : type === 0 ? "()" : "(" + args.slice(1).map(codegen).join(",") + ")"); +function propertyLambda(spec) { + return ((0, _vegaUtil.isArray)(spec) ? arrayLambda : objectLambda)(spec); +} +function arrayLambda(array) { + const n = array.length; + let code = "["; + for(let i = 0; i < n; ++i){ + const value = array[i]; + code += (i > 0 ? "," : "") + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); } - function fn(name, cast, type) { - return (args)=>fncall(name, args, cast, type); + return code + "]"; +} +function objectLambda(obj) { + let code = "{", i = 0, key, value; + for(key in obj){ + value = obj[key]; + code += (++i > 1 ? "," : "") + (0, _vegaUtil.stringValue)(key) + ":" + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); } - const DATE = "new Date", STRING = "String", REGEXP = "RegExp"; + return code + "}"; +} +/** + * Standard configuration defaults for Vega specification parsing. + * Users can provide their own (sub-)set of these default values + * by passing in a config object to the top-level parse method. + */ function defaults() { + const defaultFont = "sans-serif", defaultSymbolSize = 30, defaultStrokeWidth = 2, defaultColor = "#4c78a8", black = "#000", gray = "#888", lightGray = "#ddd"; return { - // MATH functions - isNaN: "Number.isNaN", - isFinite: "Number.isFinite", - abs: "Math.abs", - acos: "Math.acos", - asin: "Math.asin", - atan: "Math.atan", - atan2: "Math.atan2", - ceil: "Math.ceil", - cos: "Math.cos", - exp: "Math.exp", - floor: "Math.floor", - log: "Math.log", - max: "Math.max", - min: "Math.min", - pow: "Math.pow", - random: "Math.random", - round: "Math.round", - sin: "Math.sin", - sqrt: "Math.sqrt", - tan: "Math.tan", - clamp: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to clamp function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to clamp function."); - const a = args.map(codegen); - return "Math.max(" + a[1] + ", Math.min(" + a[2] + "," + a[0] + "))"; + // default visualization description + description: "Vega visualization", + // default padding around visualization + padding: 0, + // default for automatic sizing; options: 'none', 'pad', 'fit' + // or provide an object (e.g., {'type': 'pad', 'resize': true}) + autosize: "pad", + // default view background color + // covers the entire view component + background: null, + // default event handling configuration + // preventDefault for view-sourced event types except 'wheel' + events: { + defaults: { + allow: [ + "wheel" + ] + } }, - // DATE functions - now: "Date.now", - utc: "Date.UTC", - datetime: DATE, - date: fn("getDate", DATE, 0), - day: fn("getDay", DATE, 0), - year: fn("getFullYear", DATE, 0), - month: fn("getMonth", DATE, 0), - hours: fn("getHours", DATE, 0), - minutes: fn("getMinutes", DATE, 0), - seconds: fn("getSeconds", DATE, 0), - milliseconds: fn("getMilliseconds", DATE, 0), - time: fn("getTime", DATE, 0), - timezoneoffset: fn("getTimezoneOffset", DATE, 0), - utcdate: fn("getUTCDate", DATE, 0), - utcday: fn("getUTCDay", DATE, 0), - utcyear: fn("getUTCFullYear", DATE, 0), - utcmonth: fn("getUTCMonth", DATE, 0), - utchours: fn("getUTCHours", DATE, 0), - utcminutes: fn("getUTCMinutes", DATE, 0), - utcseconds: fn("getUTCSeconds", DATE, 0), - utcmilliseconds: fn("getUTCMilliseconds", DATE, 0), - // sequence functions - length: fn("length", null, -1), - // STRING functions - parseFloat: "parseFloat", - parseInt: "parseInt", - upper: fn("toUpperCase", STRING, 0), - lower: fn("toLowerCase", STRING, 0), - substring: fn("substring", STRING), - split: fn("split", STRING), - trim: fn("trim", STRING, 0), - // REGEXP functions - regexp: REGEXP, - test: fn("test", REGEXP), - // Control Flow functions - if: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to if function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to if function."); - const a = args.map(codegen); - return "(" + a[0] + "?" + a[1] + ":" + a[2] + ")"; - } - }; -} -function stripQuotes(s) { - const n = s && s.length - 1; - return n && (s[0] === '"' && s[n] === '"' || s[0] === "'" && s[n] === "'") ? s.slice(1, -1) : s; -} -function codegen(opt) { - opt = opt || {}; - const allowed = opt.allowed ? (0, _vegaUtil.toSet)(opt.allowed) : {}, forbidden = opt.forbidden ? (0, _vegaUtil.toSet)(opt.forbidden) : {}, constants = opt.constants || Constants, functions = (opt.functions || Functions)(visit), globalvar = opt.globalvar, fieldvar = opt.fieldvar, outputGlobal = (0, _vegaUtil.isFunction)(globalvar) ? globalvar : (id)=>"".concat(globalvar, '["').concat(id, '"]'); - let globals = {}, fields = {}, memberDepth = 0; - function visit(ast) { - if ((0, _vegaUtil.isString)(ast)) return ast; - const generator = Generators[ast.type]; - if (generator == null) (0, _vegaUtil.error)("Unsupported type: " + ast.type); - return generator(ast); - } - const Generators = { - Literal: (n)=>n.raw, - Identifier: (n)=>{ - const id = n.name; - if (memberDepth > 0) return id; - else if ((0, _vegaUtil.hasOwnProperty)(forbidden, id)) return (0, _vegaUtil.error)("Illegal identifier: " + id); - else if ((0, _vegaUtil.hasOwnProperty)(constants, id)) return constants[id]; - else if ((0, _vegaUtil.hasOwnProperty)(allowed, id)) return id; - else { - globals[id] = 1; - return outputGlobal(id); + // defaults for top-level group marks + // accepts mark properties (fill, stroke, etc) + // covers the data rectangle within group width/height + group: null, + // defaults for basic mark types + // each subset accepts mark properties (fill, stroke, etc) + mark: null, + arc: { + fill: defaultColor + }, + area: { + fill: defaultColor + }, + image: null, + line: { + stroke: defaultColor, + strokeWidth: defaultStrokeWidth + }, + path: { + stroke: defaultColor + }, + rect: { + fill: defaultColor + }, + rule: { + stroke: black + }, + shape: { + stroke: defaultColor + }, + symbol: { + fill: defaultColor, + size: 64 + }, + text: { + fill: black, + font: defaultFont, + fontSize: 11 + }, + trail: { + fill: defaultColor, + size: defaultStrokeWidth + }, + // style definitions + style: { + // axis & legend labels + "guide-label": { + fill: black, + font: defaultFont, + fontSize: 10 + }, + // axis & legend titles + "guide-title": { + fill: black, + font: defaultFont, + fontSize: 11, + fontWeight: "bold" + }, + // headers, including chart title + "group-title": { + fill: black, + font: defaultFont, + fontSize: 13, + fontWeight: "bold" + }, + // chart subtitle + "group-subtitle": { + fill: black, + font: defaultFont, + fontSize: 12 + }, + // defaults for styled point marks in Vega-Lite + point: { + size: defaultSymbolSize, + strokeWidth: defaultStrokeWidth, + shape: "circle" + }, + circle: { + size: defaultSymbolSize, + strokeWidth: defaultStrokeWidth + }, + square: { + size: defaultSymbolSize, + strokeWidth: defaultStrokeWidth, + shape: "square" + }, + // defaults for styled group marks in Vega-Lite + cell: { + fill: "transparent", + stroke: lightGray } }, - MemberExpression: (n)=>{ - const d = !n.computed, o = visit(n.object); - if (d) memberDepth += 1; - const p = visit(n.property); - if (o === fieldvar) // strip quotes to sanitize field name (#1653) - fields[stripQuotes(p)] = 1; - if (d) memberDepth -= 1; - return o + (d ? "." + p : "[" + p + "]"); + // defaults for title + title: { + orient: "top", + anchor: "middle", + offset: 4, + subtitlePadding: 3 }, - CallExpression: (n)=>{ - if (n.callee.type !== "Identifier") (0, _vegaUtil.error)("Illegal callee type: " + n.callee.type); - const callee = n.callee.name, args = n.arguments, fn = (0, _vegaUtil.hasOwnProperty)(functions, callee) && functions[callee]; - if (!fn) (0, _vegaUtil.error)("Unrecognized function: " + callee); - return (0, _vegaUtil.isFunction)(fn) ? fn(args) : fn + "(" + args.map(visit).join(",") + ")"; + // defaults for axes + axis: { + minExtent: 0, + maxExtent: 200, + bandPosition: 0.5, + domain: true, + domainWidth: 1, + domainColor: gray, + grid: false, + gridWidth: 1, + gridColor: lightGray, + labels: true, + labelAngle: 0, + labelLimit: 180, + labelOffset: 0, + labelPadding: 2, + ticks: true, + tickColor: gray, + tickOffset: 0, + tickRound: true, + tickSize: 5, + tickWidth: 1, + titlePadding: 4 }, - ArrayExpression: (n)=>"[" + n.elements.map(visit).join(",") + "]", - BinaryExpression: (n)=>"(" + visit(n.left) + " " + n.operator + " " + visit(n.right) + ")", - UnaryExpression: (n)=>"(" + n.operator + visit(n.argument) + ")", - ConditionalExpression: (n)=>"(" + visit(n.test) + "?" + visit(n.consequent) + ":" + visit(n.alternate) + ")", - LogicalExpression: (n)=>"(" + visit(n.left) + n.operator + visit(n.right) + ")", - ObjectExpression: (n)=>"{" + n.properties.map(visit).join(",") + "}", - Property: (n)=>{ - memberDepth += 1; - const k = visit(n.key); - memberDepth -= 1; - return k + ":" + visit(n.value); + // correction for centering bias + axisBand: { + tickOffset: -0.5 + }, + // defaults for cartographic projection + projection: { + type: "mercator" + }, + // defaults for legends + legend: { + orient: "right", + padding: 0, + gridAlign: "each", + columnPadding: 10, + rowPadding: 2, + symbolDirection: "vertical", + gradientDirection: "vertical", + gradientLength: 200, + gradientThickness: 16, + gradientStrokeColor: lightGray, + gradientStrokeWidth: 0, + gradientLabelOffset: 2, + labelAlign: "left", + labelBaseline: "middle", + labelLimit: 160, + labelOffset: 4, + labelOverlap: true, + symbolLimit: 30, + symbolType: "circle", + symbolSize: 100, + symbolOffset: 0, + symbolStrokeWidth: 1.5, + symbolBaseFillColor: "transparent", + symbolBaseStrokeColor: gray, + titleLimit: 180, + titleOrient: "top", + titlePadding: 5, + layout: { + offset: 18, + direction: "horizontal", + left: { + direction: "vertical" + }, + right: { + direction: "vertical" + } + } + }, + // defaults for scale ranges + range: { + category: { + scheme: "tableau10" + }, + ordinal: { + scheme: "blues" + }, + heatmap: { + scheme: "yellowgreenblue" + }, + ramp: { + scheme: "blues" + }, + diverging: { + scheme: "blueorange", + extent: [ + 1, + 0 + ] + }, + symbol: [ + "circle", + "square", + "triangle-up", + "cross", + "diamond", + "triangle-right", + "triangle-down", + "triangle-left" + ] } }; - function codegen(ast) { - const result = { - code: visit(ast), - globals: Object.keys(globals), - fields: Object.keys(fields) - }; - globals = {}; - fields = {}; - return result; - } - codegen.functions = functions; - codegen.constants = constants; - return codegen; +} +function parse(spec, config, options) { + if (!(0, _vegaUtil.isObject)(spec)) (0, _vegaUtil.error)("Input Vega specification must be an object."); + config = (0, _vegaUtil.mergeConfig)(defaults(), config, spec.config); + return parseView(spec, new Scope(config, options)).toRuntime(); } -},{"vega-util":"dPFAY","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kbnnw":[function(require,module,exports) { +},{"vega-util":"dPFAY","vega-functions":"92bWe","vega-event-selector":"kbnnw","vega-scale":"evQIv","vega-dataflow":"4kvYg","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kbnnw":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "selector", ()=>eventSelector); +parcelHelpers.export(exports, "parseSelector", ()=>eventSelector); const VIEW = "view", LBRACK = "[", RBRACK = "]", LBRACE = "{", RBRACE = "}", COLON = ":", COMMA = ",", NAME = "@", GT = ">", ILLEGAL = /[[\]{}]/, DEFAULT_MARKS = { "*": 1, arc: 1, diff --git a/docs/tests/v4/es6/js/sanddance-test-es6.js b/docs/tests/v4/es6/js/sanddance-test-es6.js index 484da8f9d..537103fb4 100644 --- a/docs/tests/v4/es6/js/sanddance-test-es6.js +++ b/docs/tests/v4/es6/js/sanddance-test-es6.js @@ -216,9 +216,9 @@ parcelHelpers.export(exports, "timeFormatLocale", ()=>(0, _vegaFormat.timeFormat parcelHelpers.export(exports, "expressionFunction", ()=>(0, _vegaFunctions.expressionFunction)); parcelHelpers.export(exports, "parse", ()=>(0, _vegaParser.parse)); parcelHelpers.export(exports, "runtimeContext", ()=>(0, _vegaRuntime.context)); -parcelHelpers.export(exports, "codegenExpression", ()=>(0, _vegaExpression.codegen)); -parcelHelpers.export(exports, "parseExpression", ()=>(0, _vegaExpression.parse)); -parcelHelpers.export(exports, "parseSelector", ()=>(0, _vegaEventSelector.selector)); +parcelHelpers.export(exports, "codegenExpression", ()=>(0, _vegaExpression.codegenExpression)); +parcelHelpers.export(exports, "parseExpression", ()=>(0, _vegaExpression.parseExpression)); +parcelHelpers.export(exports, "parseSelector", ()=>(0, _vegaEventSelector.parseSelector)); parcelHelpers.export(exports, "version", ()=>version); var _vegaUtil = require("vega-util"); var _vegaDataflow = require("vega-dataflow"); @@ -251,90 +251,9 @@ var _vegaParser = require("vega-parser"); var _vegaRuntime = require("vega-runtime"); var _vegaExpression = require("vega-expression"); var _vegaEventSelector = require("vega-event-selector"); -var name = "vega"; -var version$1 = "5.20.2"; -var description = "The Vega visualization grammar."; -var keywords = [ - "vega", - "visualization", - "interaction", - "dataflow", - "library", - "data", - "d3" -]; -var license = "BSD-3-Clause"; -var author = "UW Interactive Data Lab (http://idl.cs.washington.edu)"; -var main = "build/vega-node.js"; -var module = "build/vega.module.js"; -var unpkg = "build/vega.min.js"; -var jsdelivr = "build/vega.min.js"; -var types = "index.d.ts"; -var repository = "vega/vega"; -var scripts = { - bundle: "rollup -c --config-bundle", - prebuild: "rimraf build && rimraf build-es5", - build: "rollup -c --config-core --config-bundle --config-ie", - postbuild: "node schema-copy", - pretest: "yarn build --config-test", - test: "TZ=America/Los_Angeles tape 'test/**/*-test.js'", - prepublishOnly: "yarn test && yarn build", - postpublish: "./schema-deploy.sh" -}; -var dependencies = { - "vega-crossfilter": "~4.0.5", - "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", - "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", - "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", - "vega-wordcloud": "~4.1.3" -}; -var devDependencies = { - "vega-schema": "*" -}; -var gitHead = "e251dbc61ab6645689d9f349e7dd9d15ddb85bce"; -var pkg = { - name: name, - version: version$1, - description: description, - keywords: keywords, - license: license, - author: author, - main: main, - module: module, - unpkg: unpkg, - jsdelivr: jsdelivr, - types: types, - repository: repository, - scripts: scripts, - dependencies: dependencies, - devDependencies: devDependencies, - gitHead: gitHead -}; +var version = "5.22.1"; // -- Transforms ----- (0, _vegaUtil.extend)((0, _vegaDataflow.transforms), _vegaTransforms, _vegaViewTransforms, _vegaEncode, _vegaGeo, _vegaForce, _vegaLabel, _vegaHierarchy, _vegaRegression, _vegaVoronoi, _vegaWordcloud, _vegaCrossfilter); // -- Exports ----- -const version = pkg.version; },{"vega-util":"bApja","vega-dataflow":"3NitK","vega-transforms":"gA9mK","vega-view-transforms":"i63Ad","vega-encode":"fpesP","vega-geo":"3rF9B","vega-force":"4JCry","vega-hierarchy":"lserr","vega-label":"lZyUZ","vega-regression":"elv3U","vega-voronoi":"96rkJ","vega-wordcloud":"7Z7Aq","vega-crossfilter":"8iEZv","vega-statistics":"5ncfv","vega-time":"27kpp","vega-loader":"gmbOr","vega-scenegraph":"jattk","vega-scale":"bEydG","vega-projection":"4wv4C","vega-view":"cGC2i","vega-format":"47kOt","vega-functions":"iuqsd","vega-parser":"hsy9Z","vega-runtime":"k7ppL","vega-expression":"2l1no","vega-event-selector":"gXMNx","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bApja":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -506,7 +425,7 @@ const Error$1 = 1; const Warn = 2; const Info = 3; const Debug = 4; -function logger(_, method) { +function logger(_, method, handler = log$1) { let level = _ || None; return { level (_) { @@ -516,19 +435,19 @@ function logger(_, method) { } else return level; }, error () { - if (level >= Error$1) log$1(method || "error", "ERROR", arguments); + if (level >= Error$1) handler(method || "error", "ERROR", arguments); return this; }, warn () { - if (level >= Warn) log$1(method || "warn", "WARN", arguments); + if (level >= Warn) handler(method || "warn", "WARN", arguments); return this; }, info () { - if (level >= Info) log$1(method || "log", "INFO", arguments); + if (level >= Info) handler(method || "log", "INFO", arguments); return this; }, debug () { - if (level >= Debug) log$1(method || "log", "DEBUG", arguments); + if (level >= Debug) handler(method || "log", "DEBUG", arguments); return this; } }; @@ -4034,6 +3953,9 @@ parcelHelpers.export(exports, "bisectLeft", ()=>(0, _bisectJs.bisectLeft)); parcelHelpers.export(exports, "bisectCenter", ()=>(0, _bisectJs.bisectCenter)); parcelHelpers.export(exports, "ascending", ()=>(0, _ascendingJsDefault.default)); parcelHelpers.export(exports, "bisector", ()=>(0, _bisectorJsDefault.default)); +parcelHelpers.export(exports, "blur", ()=>(0, _blurJs.blur)); +parcelHelpers.export(exports, "blur2", ()=>(0, _blurJs.blur2)); +parcelHelpers.export(exports, "blurImage", ()=>(0, _blurJs.blurImage)); parcelHelpers.export(exports, "count", ()=>(0, _countJsDefault.default)); parcelHelpers.export(exports, "cross", ()=>(0, _crossJsDefault.default)); parcelHelpers.export(exports, "cumsum", ()=>(0, _cumsumJsDefault.default)); @@ -4044,6 +3966,8 @@ parcelHelpers.export(exports, "Adder", ()=>(0, _fsumJs.Adder)); parcelHelpers.export(exports, "fsum", ()=>(0, _fsumJs.fsum)); parcelHelpers.export(exports, "fcumsum", ()=>(0, _fsumJs.fcumsum)); parcelHelpers.export(exports, "group", ()=>(0, _groupJsDefault.default)); +parcelHelpers.export(exports, "flatGroup", ()=>(0, _groupJs.flatGroup)); +parcelHelpers.export(exports, "flatRollup", ()=>(0, _groupJs.flatRollup)); parcelHelpers.export(exports, "groups", ()=>(0, _groupJs.groups)); parcelHelpers.export(exports, "index", ()=>(0, _groupJs.index)); parcelHelpers.export(exports, "indexes", ()=>(0, _groupJs.indexes)); @@ -4060,16 +3984,20 @@ parcelHelpers.export(exports, "max", ()=>(0, _maxJsDefault.default)); parcelHelpers.export(exports, "maxIndex", ()=>(0, _maxIndexJsDefault.default)); parcelHelpers.export(exports, "mean", ()=>(0, _meanJsDefault.default)); parcelHelpers.export(exports, "median", ()=>(0, _medianJsDefault.default)); +parcelHelpers.export(exports, "medianIndex", ()=>(0, _medianJs.medianIndex)); parcelHelpers.export(exports, "merge", ()=>(0, _mergeJsDefault.default)); parcelHelpers.export(exports, "min", ()=>(0, _minJsDefault.default)); parcelHelpers.export(exports, "minIndex", ()=>(0, _minIndexJsDefault.default)); +parcelHelpers.export(exports, "mode", ()=>(0, _modeJsDefault.default)); parcelHelpers.export(exports, "nice", ()=>(0, _niceJsDefault.default)); parcelHelpers.export(exports, "pairs", ()=>(0, _pairsJsDefault.default)); parcelHelpers.export(exports, "permute", ()=>(0, _permuteJsDefault.default)); parcelHelpers.export(exports, "quantile", ()=>(0, _quantileJsDefault.default)); +parcelHelpers.export(exports, "quantileIndex", ()=>(0, _quantileJs.quantileIndex)); parcelHelpers.export(exports, "quantileSorted", ()=>(0, _quantileJs.quantileSorted)); parcelHelpers.export(exports, "quickselect", ()=>(0, _quickselectJsDefault.default)); parcelHelpers.export(exports, "range", ()=>(0, _rangeJsDefault.default)); +parcelHelpers.export(exports, "rank", ()=>(0, _rankJsDefault.default)); parcelHelpers.export(exports, "least", ()=>(0, _leastJsDefault.default)); parcelHelpers.export(exports, "leastIndex", ()=>(0, _leastIndexJsDefault.default)); parcelHelpers.export(exports, "greatest", ()=>(0, _greatestJsDefault.default)); @@ -4106,6 +4034,7 @@ var _ascendingJs = require("./ascending.js"); var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); var _bisectorJs = require("./bisector.js"); var _bisectorJsDefault = parcelHelpers.interopDefault(_bisectorJs); +var _blurJs = require("./blur.js"); var _countJs = require("./count.js"); var _countJsDefault = parcelHelpers.interopDefault(_countJs); var _crossJs = require("./cross.js"); @@ -4145,6 +4074,8 @@ var _minJs = require("./min.js"); var _minJsDefault = parcelHelpers.interopDefault(_minJs); var _minIndexJs = require("./minIndex.js"); var _minIndexJsDefault = parcelHelpers.interopDefault(_minIndexJs); +var _modeJs = require("./mode.js"); +var _modeJsDefault = parcelHelpers.interopDefault(_modeJs); var _niceJs = require("./nice.js"); var _niceJsDefault = parcelHelpers.interopDefault(_niceJs); var _pairsJs = require("./pairs.js"); @@ -4157,6 +4088,8 @@ var _quickselectJs = require("./quickselect.js"); var _quickselectJsDefault = parcelHelpers.interopDefault(_quickselectJs); var _rangeJs = require("./range.js"); var _rangeJsDefault = parcelHelpers.interopDefault(_rangeJs); +var _rankJs = require("./rank.js"); +var _rankJsDefault = parcelHelpers.interopDefault(_rankJs); var _leastJs = require("./least.js"); var _leastJsDefault = parcelHelpers.interopDefault(_leastJs); var _leastIndexJs = require("./leastIndex.js"); @@ -4207,7 +4140,7 @@ var _unionJs = require("./union.js"); var _unionJsDefault = parcelHelpers.interopDefault(_unionJs); var _internmap = require("internmap"); -},{"./bisect.js":"iJojn","./ascending.js":"60o1Z","./bisector.js":"k5JwJ","./count.js":false,"./cross.js":false,"./cumsum.js":false,"./descending.js":false,"./deviation.js":"euifj","./extent.js":false,"./fsum.js":"g7Aa0","./group.js":false,"./groupSort.js":false,"./bin.js":false,"./threshold/freedmanDiaconis.js":false,"./threshold/scott.js":false,"./threshold/sturges.js":false,"./max.js":"5fCPh","./maxIndex.js":false,"./mean.js":"8HbAa","./median.js":"ai1Kc","./merge.js":"d56l7","./min.js":"h0RAg","./minIndex.js":false,"./nice.js":false,"./pairs.js":false,"./permute.js":"3ydIg","./quantile.js":"49cDh","./quickselect.js":"doA4Q","./range.js":"7QVPN","./least.js":false,"./leastIndex.js":false,"./greatest.js":false,"./greatestIndex.js":false,"./scan.js":false,"./shuffle.js":false,"./sum.js":"hdZOC","./ticks.js":"71MAh","./transpose.js":false,"./variance.js":"gba1Y","./zip.js":false,"./every.js":false,"./some.js":false,"./filter.js":false,"./map.js":false,"./reduce.js":false,"./reverse.js":false,"./sort.js":false,"./difference.js":false,"./disjoint.js":false,"./intersection.js":false,"./subset.js":false,"./superset.js":false,"./union.js":false,"internmap":"3ULAv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"iJojn":[function(require,module,exports) { +},{"./bisect.js":"iJojn","./ascending.js":"60o1Z","./bisector.js":"k5JwJ","./blur.js":false,"./count.js":false,"./cross.js":false,"./cumsum.js":false,"./descending.js":"kIC2x","./deviation.js":"euifj","./extent.js":false,"./fsum.js":"g7Aa0","./group.js":false,"./groupSort.js":false,"./bin.js":false,"./threshold/freedmanDiaconis.js":false,"./threshold/scott.js":false,"./threshold/sturges.js":false,"./max.js":"5fCPh","./maxIndex.js":"fm7WL","./mean.js":"8HbAa","./median.js":"ai1Kc","./merge.js":"d56l7","./min.js":"h0RAg","./minIndex.js":"3rpRW","./mode.js":false,"./nice.js":false,"./pairs.js":false,"./permute.js":"3ydIg","./quantile.js":"49cDh","./quickselect.js":"doA4Q","./range.js":"7QVPN","./rank.js":false,"./least.js":false,"./leastIndex.js":false,"./greatest.js":"c4GrS","./greatestIndex.js":false,"./scan.js":false,"./shuffle.js":false,"./sum.js":"hdZOC","./ticks.js":"71MAh","./transpose.js":false,"./variance.js":"gba1Y","./zip.js":false,"./every.js":false,"./some.js":false,"./filter.js":false,"./map.js":false,"./reduce.js":false,"./reverse.js":false,"./sort.js":"bV3FZ","./difference.js":false,"./disjoint.js":false,"./intersection.js":false,"./subset.js":false,"./superset.js":false,"./union.js":false,"internmap":"3ULAv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"iJojn":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "bisectRight", ()=>bisectRight); @@ -4228,45 +4161,57 @@ exports.default = bisectRight; },{"./ascending.js":"60o1Z","./bisector.js":"k5JwJ","./number.js":"gcMRK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"60o1Z":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -exports.default = function(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -}; +function ascending(a, b) { + return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; +} +exports.default = ascending; },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"k5JwJ":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _ascendingJs = require("./ascending.js"); var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); -exports.default = function(f) { - let delta = f; - let compare = f; - if (f.length === 1) { +var _descendingJs = require("./descending.js"); +var _descendingJsDefault = parcelHelpers.interopDefault(_descendingJs); +function bisector(f) { + let compare1, compare2, delta; + // If an accessor is specified, promote it to a comparator. In this case we + // can test whether the search value is (self-) comparable. We can’t do this + // for a comparator (except for specific, known comparators) because we can’t + // tell if the comparator is symmetric, and an asymmetric comparator can’t be + // used to test whether a single value is comparable. + if (f.length !== 2) { + compare1 = (0, _ascendingJsDefault.default); + compare2 = (d, x)=>(0, _ascendingJsDefault.default)(f(d), x); delta = (d, x)=>f(d) - x; - compare = ascendingComparator(f); + } else { + compare1 = f === (0, _ascendingJsDefault.default) || f === (0, _descendingJsDefault.default) ? f : zero; + compare2 = f; + delta = f; } - function left(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while(lo < hi){ - const mid = lo + hi >>> 1; - if (compare(a[mid], x) < 0) lo = mid + 1; - else hi = mid; + function left(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = lo + hi >>> 1; + if (compare2(a[mid], x) < 0) lo = mid + 1; + else hi = mid; + }while (lo < hi); } return lo; } - function right(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while(lo < hi){ - const mid = lo + hi >>> 1; - if (compare(a[mid], x) > 0) hi = mid; - else lo = mid + 1; + function right(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = lo + hi >>> 1; + if (compare2(a[mid], x) <= 0) lo = mid + 1; + else hi = mid; + }while (lo < hi); } return lo; } - function center(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; + function center(a, x, lo = 0, hi = a.length) { const i = left(a, x, lo, hi - 1); return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i; } @@ -4275,18 +4220,28 @@ exports.default = function(f) { center, right }; -}; -function ascendingComparator(f) { - return (d, x)=>(0, _ascendingJsDefault.default)(f(d), x); +} +exports.default = bisector; +function zero() { + return 0; } -},{"./ascending.js":"60o1Z","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gcMRK":[function(require,module,exports) { +},{"./ascending.js":"60o1Z","./descending.js":"kIC2x","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kIC2x":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function descending(a, b) { + return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; +} +exports.default = descending; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gcMRK":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "numbers", ()=>numbers); -exports.default = function(x) { +function number(x) { return x === null ? NaN : +x; -}; +} +exports.default = number; function* numbers(values, valueof) { if (valueof === undefined) { for (let value of values)if (value != null && (value = +value) >= value) yield value; @@ -4409,6 +4364,24 @@ function max(values, valueof) { } exports.default = max; +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fm7WL":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function maxIndex(values, valueof) { + let max; + let maxIndex = -1; + let index = -1; + if (valueof === undefined) for (const value of values){ + ++index; + if (value != null && (max < value || max === undefined && value >= value)) max = value, maxIndex = index; + } + else { + for (let value1 of values)if ((value1 = valueof(value1, ++index, values)) != null && (max < value1 || max === undefined && value1 >= value1)) max = value1, maxIndex = index; + } + return maxIndex; +} +exports.default = maxIndex; + },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8HbAa":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -4428,24 +4401,37 @@ exports.default = mean; },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ai1Kc":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "medianIndex", ()=>medianIndex); var _quantileJs = require("./quantile.js"); var _quantileJsDefault = parcelHelpers.interopDefault(_quantileJs); -exports.default = function(values, valueof) { +function median(values, valueof) { return (0, _quantileJsDefault.default)(values, 0.5, valueof); -}; +} +exports.default = median; +function medianIndex(values, valueof) { + return (0, _quantileJs.quantileIndex)(values, 0.5, valueof); +} },{"./quantile.js":"49cDh","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"49cDh":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "quantileSorted", ()=>quantileSorted); +parcelHelpers.export(exports, "quantileIndex", ()=>quantileIndex); var _maxJs = require("./max.js"); var _maxJsDefault = parcelHelpers.interopDefault(_maxJs); +var _maxIndexJs = require("./maxIndex.js"); +var _maxIndexJsDefault = parcelHelpers.interopDefault(_maxIndexJs); var _minJs = require("./min.js"); var _minJsDefault = parcelHelpers.interopDefault(_minJs); +var _minIndexJs = require("./minIndex.js"); +var _minIndexJsDefault = parcelHelpers.interopDefault(_minIndexJs); var _quickselectJs = require("./quickselect.js"); var _quickselectJsDefault = parcelHelpers.interopDefault(_quickselectJs); var _numberJs = require("./number.js"); var _numberJsDefault = parcelHelpers.interopDefault(_numberJs); +var _sortJs = require("./sort.js"); +var _greatestJs = require("./greatest.js"); +var _greatestJsDefault = parcelHelpers.interopDefault(_greatestJs); function quantile(values, p, valueof) { values = Float64Array.from((0, _numberJs.numbers)(values, valueof)); if (!(n = values.length)) return; @@ -4462,8 +4448,16 @@ function quantileSorted(values, p, valueof = (0, _numberJsDefault.default)) { var n, i = (n - 1) * p, i0 = Math.floor(i), value0 = +valueof(values[i0], i0, values), value1 = +valueof(values[i0 + 1], i0 + 1, values); return value0 + (value1 - value0) * (i - i0); } +function quantileIndex(values, p, valueof) { + values = Float64Array.from((0, _numberJs.numbers)(values, valueof)); + if (!(n = values.length)) return; + if ((p = +p) <= 0 || n < 2) return (0, _minIndexJsDefault.default)(values); + if (p >= 1) return (0, _maxIndexJsDefault.default)(values); + var n, i = Math.floor((n - 1) * p), order = (i, j)=>(0, _sortJs.ascendingDefined)(values[i], values[j]), index = (0, _quickselectJsDefault.default)(Uint32Array.from(values, (_, i)=>i), i, 0, n - 1, order); + return (0, _greatestJsDefault.default)(index.subarray(0, i + 1), (i)=>values[i]); +} -},{"./max.js":"5fCPh","./min.js":"h0RAg","./quickselect.js":"doA4Q","./number.js":"gcMRK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"h0RAg":[function(require,module,exports) { +},{"./max.js":"5fCPh","./maxIndex.js":"fm7WL","./min.js":"h0RAg","./minIndex.js":"3rpRW","./quickselect.js":"doA4Q","./number.js":"gcMRK","./sort.js":"bV3FZ","./greatest.js":"c4GrS","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"h0RAg":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); function min(values, valueof) { @@ -4478,12 +4472,30 @@ function min(values, valueof) { } exports.default = min; +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3rpRW":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function minIndex(values, valueof) { + let min; + let minIndex = -1; + let index = -1; + if (valueof === undefined) for (const value of values){ + ++index; + if (value != null && (min > value || min === undefined && value >= value)) min = value, minIndex = index; + } + else { + for (let value1 of values)if ((value1 = valueof(value1, ++index, values)) != null && (min > value1 || min === undefined && value1 >= value1)) min = value1, minIndex = index; + } + return minIndex; +} +exports.default = minIndex; + },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"doA4Q":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var _ascendingJs = require("./ascending.js"); -var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); -function quickselect(array, k, left = 0, right = array.length - 1, compare = (0, _ascendingJsDefault.default)) { +var _sortJs = require("./sort.js"); +function quickselect(array, k, left = 0, right = array.length - 1, compare) { + compare = compare === undefined ? (0, _sortJs.ascendingDefined) : (0, _sortJs.compareDefined)(compare); while(right > left){ if (right - left > 600) { const n = right - left + 1; @@ -4519,6 +4531,87 @@ function swap(array, i, j) { array[j] = t; } +},{"./sort.js":"bV3FZ","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bV3FZ":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "compareDefined", ()=>compareDefined); +parcelHelpers.export(exports, "ascendingDefined", ()=>ascendingDefined); +var _ascendingJs = require("./ascending.js"); +var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); +var _permuteJs = require("./permute.js"); +var _permuteJsDefault = parcelHelpers.interopDefault(_permuteJs); +function sort(values, ...F) { + if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); + values = Array.from(values); + let [f] = F; + if (f && f.length !== 2 || F.length > 1) { + const index = Uint32Array.from(values, (d, i)=>i); + if (F.length > 1) { + F = F.map((f)=>values.map(f)); + index.sort((i, j)=>{ + for (const f of F){ + const c = ascendingDefined(f[i], f[j]); + if (c) return c; + } + }); + } else { + f = values.map(f); + index.sort((i, j)=>ascendingDefined(f[i], f[j])); + } + return (0, _permuteJsDefault.default)(values, index); + } + return values.sort(compareDefined(f)); +} +exports.default = sort; +function compareDefined(compare = (0, _ascendingJsDefault.default)) { + if (compare === (0, _ascendingJsDefault.default)) return ascendingDefined; + if (typeof compare !== "function") throw new TypeError("compare is not a function"); + return (a, b)=>{ + const x = compare(a, b); + if (x || x === 0) return x; + return (compare(b, b) === 0) - (compare(a, a) === 0); + }; +} +function ascendingDefined(a, b) { + return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0); +} + +},{"./ascending.js":"60o1Z","./permute.js":"3ydIg","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3ydIg":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function permute(source, keys) { + return Array.from(keys, (key)=>source[key]); +} +exports.default = permute; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"c4GrS":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _ascendingJs = require("./ascending.js"); +var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); +function greatest(values, compare = (0, _ascendingJsDefault.default)) { + let max; + let defined = false; + if (compare.length === 1) { + let maxValue; + for (const element of values){ + const value = compare(element); + if (defined ? (0, _ascendingJsDefault.default)(value, maxValue) > 0 : (0, _ascendingJsDefault.default)(value, value) === 0) { + max = element; + maxValue = value; + defined = true; + } + } + } else { + for (const value1 of values)if (defined ? compare(value1, max) > 0 : compare(value1, value1) === 0) { + max = value1; + defined = true; + } + } + return max; +} +exports.default = greatest; + },{"./ascending.js":"60o1Z","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"d56l7":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -4530,22 +4623,16 @@ function merge(arrays) { } exports.default = merge; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3ydIg":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -exports.default = function(source, keys) { - return Array.from(keys, (key)=>source[key]); -}; - },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7QVPN":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -exports.default = function(start, stop, step) { +function range(start, stop, step) { start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; var i = -1, n = Math.max(0, Math.ceil((stop - start) / step)) | 0, range = new Array(n); while(++i < n)range[i] = start + i * step; return range; -}; +} +exports.default = range; },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hdZOC":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -4568,7 +4655,7 @@ parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "tickIncrement", ()=>tickIncrement); parcelHelpers.export(exports, "tickStep", ()=>tickStep); var e10 = Math.sqrt(50), e5 = Math.sqrt(10), e2 = Math.sqrt(2); -exports.default = function(start, stop, count) { +function ticks(start, stop, count) { var reverse, i = -1, n, ticks, step; stop = +stop, start = +start, count = +count; if (start === stop && count > 0) return [ @@ -4592,7 +4679,8 @@ exports.default = function(start, stop, count) { } if (reverse) ticks.reverse(); return ticks; -}; +} +exports.default = ticks; function tickIncrement(start, stop, count) { var step = (stop - start) / Math.max(0, count), power = Math.floor(Math.log(step) / Math.LN10), error = step / Math.pow(10, power); return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); @@ -4672,7 +4760,7 @@ function intern_set({ _intern , _key }, value) { function intern_delete({ _intern , _key }, value) { const key = _key(value); if (_intern.has(key)) { - value = _intern.get(value); + value = _intern.get(key); _intern.delete(key); } return value; @@ -11032,8 +11120,8 @@ Extent.Definition = { }); if (!Number.isFinite(min) || !Number.isFinite(max)) { let name = (0, _vegaUtil.accessorName)(field); - if (name) name = ` for field "${name}"`; - pulse.dataflow.warn(`Infinite extent${name}: [${min}, ${max}]`); + if (name) name = ' for field "'.concat(name, '"'); + pulse.dataflow.warn("Infinite extent".concat(name, ": [").concat(min, ", ").concat(max, "]")); min = max = undefined; } this.value = [ @@ -12551,7 +12639,7 @@ TimeUnit.Definition = { transform (_, pulse) { const field = _.field, band = _.interval !== false, utc = _.timezone === "utc", floor = this._floor(_, pulse), offset = (utc ? (0, _vegaTime.utcInterval) : (0, _vegaTime.timeInterval))(floor.unit).offset, as = _.as || OUTPUT, u0 = as[0], u1 = as[1], step = floor.step; let min = floor.start || Infinity, max = floor.stop || -Infinity, flag = pulse.ADD; - if (_.modified() || pulse.modified((0, _vegaUtil.accessorFields)(field))) { + if (_.modified() || pulse.changed(pulse.REM) || pulse.modified((0, _vegaUtil.accessorFields)(field))) { pulse = pulse.reflow(true); flag = pulse.SOURCE; min = Infinity; @@ -14906,6 +14994,7 @@ function viewSizeLayout(view, group, viewBounds, _) { },{"vega-dataflow":"3NitK","vega-scenegraph":"jattk","vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"jattk":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "path", ()=>(0, _d3Path.path)); parcelHelpers.export(exports, "Bounds", ()=>Bounds); parcelHelpers.export(exports, "CanvasHandler", ()=>CanvasHandler); parcelHelpers.export(exports, "CanvasRenderer", ()=>CanvasRenderer); @@ -14943,7 +15032,7 @@ parcelHelpers.export(exports, "markup", ()=>markup); parcelHelpers.export(exports, "multiLineOffset", ()=>multiLineOffset); parcelHelpers.export(exports, "pathCurves", ()=>curves); parcelHelpers.export(exports, "pathEqual", ()=>pathEqual); -parcelHelpers.export(exports, "pathParse", ()=>pathParse); +parcelHelpers.export(exports, "pathParse", ()=>parse); parcelHelpers.export(exports, "pathRectangle", ()=>vg_rect); parcelHelpers.export(exports, "pathRender", ()=>pathRender); parcelHelpers.export(exports, "pathSymbols", ()=>symbols); @@ -15094,51 +15183,60 @@ function curves(type, orientation, tension) { } return curve; } -// Path parsing and rendering code adapted from fabric.js -- Thanks! -const cmdlen = { +const paramCounts = { m: 2, l: 2, h: 1, v: 1, + z: 0, c: 6, s: 4, q: 4, t: 2, a: 7 -}, regexp = [ - /([MLHVCSQTAZmlhvcsqtaz])/g, - /###/, - /(\.\d+)(\.\d)/g, - /(\d)([-+])/g, - /\s|,|###/ -]; -function pathParse(pathstr) { - const result = []; - let curr, chunks, parsed, param, cmd, len, i, j, n, m; // First, break path into command sequence - const path = pathstr.slice().replace(regexp[0], "###$1").split(regexp[1]).slice(1); // Next, parse each command in turn - for(i = 0, n = path.length; i < n; ++i){ - curr = path[i]; - chunks = curr.slice(1).trim().replace(regexp[2], "$1###$2").replace(regexp[3], "$1###$2").split(regexp[4]); - cmd = curr.charAt(0); - parsed = [ - cmd - ]; - for(j = 0, m = chunks.length; j < m; ++j)if ((param = +chunks[j]) === param) // not NaN - parsed.push(param); - len = cmdlen[cmd.toLowerCase()]; - if (parsed.length - 1 > len) { - const m1 = parsed.length; - j = 1; - result.push([ - cmd - ].concat(parsed.slice(j, j += len))); // handle implicit lineTo (#2803) - cmd = cmd === "M" ? "L" : cmd === "m" ? "l" : cmd; - for(; j < m1; j += len)result.push([ - cmd - ].concat(parsed.slice(j, j + len))); - } else result.push(parsed); +}; +const commandPattern = /[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi; +const numberPattern = /^[+-]?(([0-9]*\.[0-9]+)|([0-9]+\.)|([0-9]+))([eE][+-]?[0-9]+)?/; +const spacePattern = /^((\s+,?\s*)|(,\s*))/; +const flagPattern = /^[01]/; +function parse(path) { + const commands = []; + const matches = path.match(commandPattern) || []; + matches.forEach((str)=>{ + let cmd = str[0]; + const type = cmd.toLowerCase(); // parse parameters + const paramCount = paramCounts[type]; + const params = parseParams(type, paramCount, str.slice(1).trim()); + const count = params.length; // error checking based on parameter count + if (count < paramCount || count && count % paramCount !== 0) throw Error("Invalid SVG path, incorrect parameter count"); + // register the command + commands.push([ + cmd, + ...params.slice(0, paramCount) + ]); // exit now if we're done, also handles zero-param 'z' + if (count === paramCount) return; + // handle implicit line-to + if (type === "m") cmd = cmd === "M" ? "L" : "l"; + // repeat command when given extended param list + for(let i = paramCount; i < count; i += paramCount)commands.push([ + cmd, + ...params.slice(i, i + paramCount) + ]); + }); + return commands; +} +function parseParams(type, paramCount, segment) { + const params = []; + for(let index = 0; paramCount && index < segment.length;)for(let i = 0; i < paramCount; ++i){ + const pattern = type === "a" && (i === 3 || i === 4) ? flagPattern : numberPattern; + const match = segment.slice(index).match(pattern); + if (match === null) throw Error("Invalid SVG path, incorrect parameter type"); + index += match[0].length; + params.push(+match[0]); + const ws = segment.slice(index).match(spacePattern); + if (ws !== null) index += ws[0].length; } - return result; + return params; } const DegToRad = Math.PI / 180; const Epsilon = 1e-14; @@ -15263,7 +15361,7 @@ function pathRender(context, path, l, t, sX, sY) { y = 0, // current y controlX = 0, // current control point x controlY = 0, // current control point y - tempX, tempY, tempControlX, tempControlY; + tempX, tempY, tempControlX, tempControlY, anchorX = 0, anchorY = 0; if (l == null) l = 0; if (t == null) t = 0; if (sX == null) sX = 1; @@ -15310,12 +15408,16 @@ function pathRender(context, path, l, t, sX, sY) { // moveTo, relative x += current[1]; y += current[2]; + anchorX = x; + anchorY = y; context.moveTo(x + l, y + t); break; case "M": // moveTo, absolute x = current[1]; y = current[2]; + anchorX = x; + anchorY = y; context.moveTo(x + l, y + t); break; case "c": @@ -15452,6 +15554,8 @@ function pathRender(context, path, l, t, sX, sY) { break; case "z": case "Z": + x = anchorX; + y = anchorY; context.closePath(); break; } @@ -15589,7 +15693,7 @@ function symbols(_) { var custom = {}; function customSymbol(path) { if (!(0, _vegaUtil.hasOwnProperty)(custom, path)) { - const parsed = pathParse(path); + const parsed = parse(path); custom[path] = { draw: function(context, size) { pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2); @@ -16679,7 +16783,7 @@ function path$1(context, item) { var path = item.path; if (path == null) return true; var x = item.x || 0, y = item.y || 0, sx = item.scaleX || 1, sy = item.scaleY || 1, a = (item.angle || 0) * DegToRad, cache = item.pathCache; - if (!cache || cache.path !== path) (item.pathCache = cache = pathParse(path)).path = path; + if (!cache || cache.path !== path) (item.pathCache = cache = parse(path)).path = path; if (a && context.rotate && context.translate) { context.translate(x, y); context.rotate(a); @@ -16793,7 +16897,7 @@ function measureWidth(item, text) { return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item)); } function _measureWidth(text, currentFont) { - const key = `(${currentFont}) ${text}`; + const key = "(".concat(currentFont, ") ").concat(text); let width = widthCache.get(key); if (width === undefined) { context.font = currentFont; @@ -17250,10 +17354,10 @@ Handler.prototype = { }, /** * Add an event handler. Subclasses should override this method. - */ on () /*type, handler*/ {}, + */ on () {}, /** * Remove an event handler. Subclasses should override this method. - */ off () /*type, handler*/ {}, + */ off () {}, /** * Utility method for finding the array index of an event handler. * @param {Array} h - An array of registered event handlers. @@ -17414,7 +17518,7 @@ Renderer.prototype = { * This base class method does nothing. Subclasses that perform * incremental should implement this method. * @param {Item} item - The dirty item whose bounds should be redrawn. - */ dirty () /*item*/ {}, + */ dirty () {}, /** * Render an input scenegraph, potentially with a set of dirty items. * This method will perform an immediate rendering with available resources. @@ -17439,7 +17543,7 @@ Renderer.prototype = { * Internal rendering method. Renderer subclasses should override this * method to actually perform rendering. * @param {object} scene - The root mark of a scenegraph to render. - */ _render () /*scene*/ {}, + */ _render () {}, /** * Asynchronous rendering method. Similar to render, but returns a Promise * that resolves when all rendering is completed. Sometimes a renderer must @@ -17869,11 +17973,11 @@ const AriaGuides = { }, "title-text": { desc: "title", - caption: (item)=>`Title text '${titleCaption(item)}'` + caption: (item)=>"Title text '".concat(titleCaption(item), "'") }, "title-subtitle": { desc: "subtitle", - caption: (item)=>`Subtitle text '${titleCaption(item)}'` + caption: (item)=>"Subtitle text '".concat(titleCaption(item), "'") } }; // aria properties generated for mark item encoding channels const AriaEncode = { @@ -17889,7 +17993,7 @@ function ariaItemAttributes(emit, item) { const type = item.mark.marktype; emit(ARIA_LABEL, item.description); emit(ARIA_ROLE, item.ariaRole || (type === "group" ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL)); - emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || `${type} mark`); + emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || "".concat(type, " mark")); } } function ariaMarkAttributes(mark) { @@ -17900,7 +18004,7 @@ function ariaMarkAttributes(mark) { function ariaMark(mark) { const type = mark.marktype; const recurse = type === "group" || type === "text" || mark.items.some((_)=>_.description != null && _.aria !== false); - return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, `${type} mark container`, mark.description); + return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, "".concat(type, " mark container"), mark.description); } function ariaGuide(mark, opt) { try { @@ -17915,11 +18019,11 @@ function titleCaption(item) { } function axisCaption(item) { const datum = item.datum, orient = item.orient, title = datum.title ? extractTitle(item) : null, ctx = item.context, scale = ctx.scales[datum.scale].value, locale = ctx.dataflow.locale(), type = scale.type, xy = orient === "left" || orient === "right" ? "Y" : "X"; - return `${xy}-axis` + (title ? ` titled '${title}'` : "") + ` for a ${(0, _vegaScale.isDiscrete)(type) ? "discrete" : type} scale` + ` with ${(0, _vegaScale.domainCaption)(locale, scale, item)}`; + return "".concat(xy, "-axis") + (title ? " titled '".concat(title, "'") : "") + " for a ".concat((0, _vegaScale.isDiscrete)(type) ? "discrete" : type, " scale") + " with ".concat((0, _vegaScale.domainCaption)(locale, scale, item)); } function legendCaption(item) { - const datum = item.datum, title = datum.title ? extractTitle(item) : null, type = `${datum.type || ""} legend`.trim(), scales = datum.scales, props = Object.keys(scales), ctx = item.context, scale = ctx.scales[scales[props[0]]].value, locale = ctx.dataflow.locale(); - return capitalize(type) + (title ? ` titled '${title}'` : "") + ` for ${channelCaption(props)}` + ` with ${(0, _vegaScale.domainCaption)(locale, scale, item)}`; + const datum = item.datum, title = datum.title ? extractTitle(item) : null, type = "".concat(datum.type || "", " legend").trim(), scales = datum.scales, props = Object.keys(scales), ctx = item.context, scale = ctx.scales[scales[props[0]]].value, locale = ctx.dataflow.locale(); + return capitalize(type) + (title ? " titled '".concat(title, "'") : "") + " for ".concat(channelCaption(props)) + " with ".concat((0, _vegaScale.domainCaption)(locale, scale, item)); } function extractTitle(item) { try { @@ -17941,24 +18045,25 @@ function markup() { let buf = "", outer = "", inner = ""; const stack = [], clear = ()=>outer = inner = "", push = (tag)=>{ if (outer) { - buf += `${outer}>${inner}`; + buf += "".concat(outer, ">").concat(inner); clear(); } stack.push(tag); }, attr = (name, value)=>{ - if (value != null) outer += ` ${name}="${attrText(value)}"`; + if (value != null) outer += " ".concat(name, '="').concat(attrText(value), '"'); return m; }, m = { - open (tag, ...attrs) { + open (tag) { push(tag); outer = "<" + tag; + for(var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)attrs[_key - 1] = arguments[_key]; for (const set of attrs)for(const key in set)attr(key, set[key]); return m; }, close () { const tag = stack.pop(); - if (outer) buf += outer + (inner ? `>${inner}` : "/>"); - else buf += ``; + if (outer) buf += outer + (inner ? ">".concat(inner, "") : "/>"); + else buf += ""); clear(); return m; }, @@ -17976,16 +18081,13 @@ function _serialize(m, node) { for(let i = 0; i < n; ++i)m.attr(attrs[i].name, attrs[i].value); } if (node.hasChildNodes()) { - const children = node.childNodes, n1 = children.length; - for(let i1 = 0; i1 < n1; i1++){ - const child = children[i1]; - child.nodeType === 3 // text node - ? m.text(child.nodeValue) : _serialize(m, child); - } + const children = node.childNodes; + for (const child of children)child.nodeType === 3 // text node + ? m.text(child.nodeValue) : _serialize(m, child); } return m.close(); } -const styles = { +const stylesAttr = { fill: "fill", fillOpacity: "fill-opacity", stroke: "stroke", @@ -17996,7 +18098,9 @@ const styles = { strokeDash: "stroke-dasharray", strokeDashOffset: "stroke-dashoffset", strokeMiterLimit: "stroke-miterlimit", - opacity: "opacity", + opacity: "opacity" +}; +const stylesCss = { blend: "mix-blend-mode" }; // ensure miter limit default is consistent with canvas (#2498) const rootAttributes = { @@ -18063,9 +18167,9 @@ const base = Renderer.prototype; setAttributes(this._svg, { width: this._width * this._scale, height: this._height * this._scale, - viewBox: `0 0 ${this._width} ${this._height}` + viewBox: "0 0 ".concat(this._width, " ").concat(this._height) }); - this._root.setAttribute("transform", `translate(${this._origin})`); + this._root.setAttribute("transform", "translate(".concat(this._origin, ")")); } this._dirty = []; return this; @@ -18128,7 +18232,7 @@ const base = Renderer.prototype; * Check if a mark item is considered dirty. * @param {Item} item - The mark item. */ isDirty (item) { - return this._dirtyAll || !item._svg || item.dirty === this._dirtyID; + return this._dirtyAll || !item._svg || !item._svg.ownerSVGElement || item.dirty === this._dirtyID; }, /** * Internal method to check dirty status and, if possible, @@ -18190,13 +18294,13 @@ const base = Renderer.prototype; */ mark (el, scene, prev) { if (!this.isDirty(scene)) return scene._svg; const svg = this._svg, mdef = Marks[scene.marktype], events = scene.interactive === false ? "none" : null, isGroup = mdef.tag === "g"; - let sibling = null, i = 0; const parent = bind(scene, el, prev, "g", svg); parent.setAttribute("class", cssClass(scene)); // apply aria attributes to parent container element const aria = ariaMarkAttributes(scene); for(const key in aria)setAttribute(parent, key, aria[key]); if (!isGroup) setAttribute(parent, "pointer-events", events); setAttribute(parent, "clip-path", scene.clip ? clip$1(this, scene, scene.group) : null); + let sibling = null, i = 0; const process = (item)=>{ const dirty = this.isDirty(item), node = bind(item, parent, sibling, mdef.tag, svg); if (dirty) { @@ -18235,10 +18339,10 @@ const base = Renderer.prototype; * @param {Item} item - The mark item. */ style (el, item) { if (item == null) return; - for(const prop in styles){ + for(const prop in stylesAttr){ let value = prop === "font" ? fontFamily(item) : item[prop]; if (value === values[prop]) continue; - const name = styles[prop]; + const name = stylesAttr[prop]; if (value == null) el.removeAttribute(name); else { if (isGradient(value)) value = gradientRef(value, this._defs.gradient, href()); @@ -18246,6 +18350,7 @@ const base = Renderer.prototype; } values[prop] = value; } + for(const prop1 in stylesCss)setStyle(el, stylesCss[prop1], item[prop1]); }, /** * Render SVG defs, as needed. @@ -18298,7 +18403,7 @@ function updateGradient(el, grad, index) { setAttributes(pt, { width: 1, height: 1, - fill: `url(${href()}#${grad.id})` + fill: "url(".concat(href(), "#").concat(grad.id, ")") }); el = domChild(el, index++, "radialGradient", svgns); setAttributes(el, { @@ -18348,6 +18453,8 @@ function updateClipping(el, clip, index) { return index + 1; } // Recursively process group contents. function recurse(renderer, el, group) { + // child 'g' element is second to last among children (path, g, path) + // other children here are foreground and background path elements el = el.lastChild.previousSibling; let prev, idx = 0; visit(group, (item)=>{ @@ -18524,7 +18631,7 @@ function SVGStringRenderer(loader) { class: "marks", width: this._width * this._scale, height: this._height * this._scale, - viewBox: `0 0 ${this._width} ${this._height}` + viewBox: "0 0 ".concat(this._width, " ").concat(this._height) })); // background, if defined const bg = this._bgcolor; if (bg && bg !== "transparent" && bg !== "none") m.open("rect", { @@ -18700,6 +18807,7 @@ function SVGStringRenderer(loader) { } }); // Helper function for attr for style presentation attributes function style(s, item, scene, tag, defs) { + let styleList; if (item == null) return s; if (tag === "bgrect" && scene.interactive === false) s["pointer-events"] = "none"; if (tag === "bgfore") { @@ -18707,7 +18815,10 @@ function style(s, item, scene, tag, defs) { s.display = "none"; if (item.fill !== null) return s; } - if (tag === "image" && item.smooth === false) s.style = "image-rendering: optimizeSpeed; image-rendering: pixelated;"; + if (tag === "image" && item.smooth === false) styleList = [ + "image-rendering: optimizeSpeed;", + "image-rendering: pixelated;" + ]; if (tag === "text") { s["font-family"] = fontFamily(item); s["font-size"] = fontSize(item) + "px"; @@ -18715,15 +18826,23 @@ function style(s, item, scene, tag, defs) { s["font-variant"] = item.fontVariant; s["font-weight"] = item.fontWeight; } - for(const prop in styles){ + for(const prop in stylesAttr){ let value = item[prop]; - const name = styles[prop]; + const name = stylesAttr[prop]; if (value === "transparent" && (name === "fill" || name === "stroke")) ; else if (value != null) { if (isGradient(value)) value = gradientRef(value, defs.gradient, ""); s[name] = value; } } + for(const prop1 in stylesCss){ + const value1 = item[prop1]; + if (value1 != null) { + styleList = styleList || []; + styleList.push("".concat(stylesCss[prop1], ": ").concat(value1, ";")); + } + } + if (styleList) s.style = styleList.join(" "); return s; } const Canvas = "canvas"; @@ -18812,7 +18931,7 @@ function sceneEqual(a, b, key) { return a === b ? true : key === "path" ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : (0, _vegaUtil.isNumber)(a) && (0, _vegaUtil.isNumber)(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !(0, _vegaUtil.isObject)(a) && !(0, _vegaUtil.isObject)(b) ? a == b : objectEqual(a, b); } function pathEqual(a, b) { - return sceneEqual(pathParse(a), pathParse(b)); + return sceneEqual(parse(a), parse(b)); } function objectEqual(a, b) { var ka = Object.keys(a), kb = Object.keys(b), key, i; @@ -18847,18 +18966,27 @@ parcelHelpers.export(exports, "lineRadial", ()=>(0, _lineRadialJsDefault.default ; parcelHelpers.export(exports, "radialLine", ()=>(0, _lineRadialJsDefault.default)); parcelHelpers.export(exports, "pointRadial", ()=>(0, _pointRadialJsDefault.default)); -parcelHelpers.export(exports, "linkHorizontal", ()=>(0, _indexJs.linkHorizontal)); -parcelHelpers.export(exports, "linkVertical", ()=>(0, _indexJs.linkVertical)); -parcelHelpers.export(exports, "linkRadial", ()=>(0, _indexJs.linkRadial)); +parcelHelpers.export(exports, "link", ()=>(0, _linkJs.link)); +parcelHelpers.export(exports, "linkHorizontal", ()=>(0, _linkJs.linkHorizontal)); +parcelHelpers.export(exports, "linkVertical", ()=>(0, _linkJs.linkVertical)); +parcelHelpers.export(exports, "linkRadial", ()=>(0, _linkJs.linkRadial)); parcelHelpers.export(exports, "symbol", ()=>(0, _symbolJsDefault.default)); -parcelHelpers.export(exports, "symbols", ()=>(0, _symbolJs.symbols)); +parcelHelpers.export(exports, "symbolsStroke", ()=>(0, _symbolJs.symbolsStroke)); +parcelHelpers.export(exports, "symbolsFill", ()=>(0, _symbolJs.symbolsFill)); +parcelHelpers.export(exports, "symbols", ()=>(0, _symbolJs.symbolsFill)); +parcelHelpers.export(exports, "symbolAsterisk", ()=>(0, _asteriskJsDefault.default)); parcelHelpers.export(exports, "symbolCircle", ()=>(0, _circleJsDefault.default)); parcelHelpers.export(exports, "symbolCross", ()=>(0, _crossJsDefault.default)); parcelHelpers.export(exports, "symbolDiamond", ()=>(0, _diamondJsDefault.default)); +parcelHelpers.export(exports, "symbolDiamond2", ()=>(0, _diamond2JsDefault.default)); +parcelHelpers.export(exports, "symbolPlus", ()=>(0, _plusJsDefault.default)); parcelHelpers.export(exports, "symbolSquare", ()=>(0, _squareJsDefault.default)); +parcelHelpers.export(exports, "symbolSquare2", ()=>(0, _square2JsDefault.default)); parcelHelpers.export(exports, "symbolStar", ()=>(0, _starJsDefault.default)); parcelHelpers.export(exports, "symbolTriangle", ()=>(0, _triangleJsDefault.default)); +parcelHelpers.export(exports, "symbolTriangle2", ()=>(0, _triangle2JsDefault.default)); parcelHelpers.export(exports, "symbolWye", ()=>(0, _wyeJsDefault.default)); +parcelHelpers.export(exports, "symbolX", ()=>(0, _xJsDefault.default)); parcelHelpers.export(exports, "curveBasisClosed", ()=>(0, _basisClosedJsDefault.default)); parcelHelpers.export(exports, "curveBasisOpen", ()=>(0, _basisOpenJsDefault.default)); parcelHelpers.export(exports, "curveBasis", ()=>(0, _basisJsDefault.default)); @@ -18905,23 +19033,35 @@ var _lineRadialJs = require("./lineRadial.js"); var _lineRadialJsDefault = parcelHelpers.interopDefault(_lineRadialJs); var _pointRadialJs = require("./pointRadial.js"); var _pointRadialJsDefault = parcelHelpers.interopDefault(_pointRadialJs); -var _indexJs = require("./link/index.js"); +var _linkJs = require("./link.js"); var _symbolJs = require("./symbol.js"); var _symbolJsDefault = parcelHelpers.interopDefault(_symbolJs); +var _asteriskJs = require("./symbol/asterisk.js"); +var _asteriskJsDefault = parcelHelpers.interopDefault(_asteriskJs); var _circleJs = require("./symbol/circle.js"); var _circleJsDefault = parcelHelpers.interopDefault(_circleJs); var _crossJs = require("./symbol/cross.js"); var _crossJsDefault = parcelHelpers.interopDefault(_crossJs); var _diamondJs = require("./symbol/diamond.js"); var _diamondJsDefault = parcelHelpers.interopDefault(_diamondJs); +var _diamond2Js = require("./symbol/diamond2.js"); +var _diamond2JsDefault = parcelHelpers.interopDefault(_diamond2Js); +var _plusJs = require("./symbol/plus.js"); +var _plusJsDefault = parcelHelpers.interopDefault(_plusJs); var _squareJs = require("./symbol/square.js"); var _squareJsDefault = parcelHelpers.interopDefault(_squareJs); +var _square2Js = require("./symbol/square2.js"); +var _square2JsDefault = parcelHelpers.interopDefault(_square2Js); var _starJs = require("./symbol/star.js"); var _starJsDefault = parcelHelpers.interopDefault(_starJs); var _triangleJs = require("./symbol/triangle.js"); var _triangleJsDefault = parcelHelpers.interopDefault(_triangleJs); +var _triangle2Js = require("./symbol/triangle2.js"); +var _triangle2JsDefault = parcelHelpers.interopDefault(_triangle2Js); var _wyeJs = require("./symbol/wye.js"); var _wyeJsDefault = parcelHelpers.interopDefault(_wyeJs); +var _xJs = require("./symbol/x.js"); +var _xJsDefault = parcelHelpers.interopDefault(_xJs); var _basisClosedJs = require("./curve/basisClosed.js"); var _basisClosedJsDefault = parcelHelpers.interopDefault(_basisClosedJs); var _basisOpenJs = require("./curve/basisOpen.js"); @@ -18977,7 +19117,7 @@ var _noneJsDefault1 = parcelHelpers.interopDefault(_noneJs1); var _reverseJs = require("./order/reverse.js"); var _reverseJsDefault = parcelHelpers.interopDefault(_reverseJs); -},{"./arc.js":"c3ptb","./area.js":"lblzF","./line.js":"jVTJi","./pie.js":false,"./areaRadial.js":false,"./lineRadial.js":false,"./pointRadial.js":false,"./link/index.js":false,"./symbol.js":"bcejp","./symbol/circle.js":"7RXTA","./symbol/cross.js":"4cmA2","./symbol/diamond.js":"1gK3j","./symbol/square.js":"fXRAH","./symbol/star.js":"8nJiq","./symbol/triangle.js":"bClaq","./symbol/wye.js":"2D9bg","./curve/basisClosed.js":"3uf9r","./curve/basisOpen.js":"4LPKP","./curve/basis.js":"gNfFM","./curve/bump.js":false,"./curve/bundle.js":"7Gw48","./curve/cardinalClosed.js":"e0Ty2","./curve/cardinalOpen.js":"4cTvH","./curve/cardinal.js":"i0afA","./curve/catmullRomClosed.js":"kfNnJ","./curve/catmullRomOpen.js":"amodp","./curve/catmullRom.js":"8d6GP","./curve/linearClosed.js":"gpcM0","./curve/linear.js":"huz8f","./curve/monotone.js":"kghkb","./curve/natural.js":"4f94Q","./curve/step.js":"l5kmS","./stack.js":false,"./offset/expand.js":false,"./offset/diverging.js":false,"./offset/none.js":false,"./offset/silhouette.js":false,"./offset/wiggle.js":false,"./order/appearance.js":false,"./order/ascending.js":false,"./order/descending.js":false,"./order/insideOut.js":false,"./order/none.js":false,"./order/reverse.js":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"c3ptb":[function(require,module,exports) { +},{"./arc.js":"c3ptb","./area.js":"lblzF","./line.js":"jVTJi","./pie.js":false,"./areaRadial.js":false,"./lineRadial.js":false,"./pointRadial.js":false,"./link.js":false,"./symbol.js":"bcejp","./symbol/asterisk.js":"kHR3A","./symbol/circle.js":"7RXTA","./symbol/cross.js":"4cmA2","./symbol/diamond.js":"1gK3j","./symbol/diamond2.js":"WsFhi","./symbol/plus.js":"a9FVq","./symbol/square.js":"fXRAH","./symbol/square2.js":"69bxi","./symbol/star.js":"8nJiq","./symbol/triangle.js":"bClaq","./symbol/triangle2.js":"8s1uD","./symbol/wye.js":"2D9bg","./symbol/x.js":"fnfky","./curve/basisClosed.js":"3uf9r","./curve/basisOpen.js":"4LPKP","./curve/basis.js":"gNfFM","./curve/bump.js":false,"./curve/bundle.js":"7Gw48","./curve/cardinalClosed.js":"e0Ty2","./curve/cardinalOpen.js":"4cTvH","./curve/cardinal.js":"i0afA","./curve/catmullRomClosed.js":"kfNnJ","./curve/catmullRomOpen.js":"amodp","./curve/catmullRom.js":"8d6GP","./curve/linearClosed.js":"gpcM0","./curve/linear.js":"huz8f","./curve/monotone.js":"kghkb","./curve/natural.js":"4f94Q","./curve/step.js":"l5kmS","./stack.js":false,"./offset/expand.js":false,"./offset/diverging.js":false,"./offset/none.js":false,"./offset/silhouette.js":false,"./offset/wiggle.js":false,"./order/appearance.js":false,"./order/ascending.js":false,"./order/descending.js":false,"./order/insideOut.js":false,"./order/none.js":false,"./order/reverse.js":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"c3ptb":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _d3Path = require("d3-path"); @@ -19232,17 +19372,17 @@ parcelHelpers.export(exports, "halfPi", ()=>halfPi); parcelHelpers.export(exports, "tau", ()=>tau); parcelHelpers.export(exports, "acos", ()=>acos); parcelHelpers.export(exports, "asin", ()=>asin); -var abs = Math.abs; -var atan2 = Math.atan2; -var cos = Math.cos; -var max = Math.max; -var min = Math.min; -var sin = Math.sin; -var sqrt = Math.sqrt; -var epsilon = 1e-12; -var pi = Math.PI; -var halfPi = pi / 2; -var tau = 2 * pi; +const abs = Math.abs; +const atan2 = Math.atan2; +const cos = Math.cos; +const max = Math.max; +const min = Math.min; +const sin = Math.sin; +const sqrt = Math.sqrt; +const epsilon = 1e-12; +const pi = Math.PI; +const halfPi = pi / 2; +const tau = 2 * pi; function acos(x) { return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); } @@ -19372,7 +19512,7 @@ Linear.prototype = { this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: - this._point = 2; // proceed + this._point = 2; // falls through default: this._context.lineTo(x, y); break; @@ -19443,25 +19583,38 @@ function y(p) { },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bcejp":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "symbols", ()=>symbols); +parcelHelpers.export(exports, "symbolsFill", ()=>symbolsFill); +parcelHelpers.export(exports, "symbolsStroke", ()=>symbolsStroke); var _d3Path = require("d3-path"); +var _constantJs = require("./constant.js"); +var _constantJsDefault = parcelHelpers.interopDefault(_constantJs); +var _asteriskJs = require("./symbol/asterisk.js"); +var _asteriskJsDefault = parcelHelpers.interopDefault(_asteriskJs); var _circleJs = require("./symbol/circle.js"); var _circleJsDefault = parcelHelpers.interopDefault(_circleJs); var _crossJs = require("./symbol/cross.js"); var _crossJsDefault = parcelHelpers.interopDefault(_crossJs); var _diamondJs = require("./symbol/diamond.js"); var _diamondJsDefault = parcelHelpers.interopDefault(_diamondJs); -var _starJs = require("./symbol/star.js"); -var _starJsDefault = parcelHelpers.interopDefault(_starJs); +var _diamond2Js = require("./symbol/diamond2.js"); +var _diamond2JsDefault = parcelHelpers.interopDefault(_diamond2Js); +var _plusJs = require("./symbol/plus.js"); +var _plusJsDefault = parcelHelpers.interopDefault(_plusJs); var _squareJs = require("./symbol/square.js"); var _squareJsDefault = parcelHelpers.interopDefault(_squareJs); +var _square2Js = require("./symbol/square2.js"); +var _square2JsDefault = parcelHelpers.interopDefault(_square2Js); +var _starJs = require("./symbol/star.js"); +var _starJsDefault = parcelHelpers.interopDefault(_starJs); var _triangleJs = require("./symbol/triangle.js"); var _triangleJsDefault = parcelHelpers.interopDefault(_triangleJs); +var _triangle2Js = require("./symbol/triangle2.js"); +var _triangle2JsDefault = parcelHelpers.interopDefault(_triangle2Js); var _wyeJs = require("./symbol/wye.js"); var _wyeJsDefault = parcelHelpers.interopDefault(_wyeJs); -var _constantJs = require("./constant.js"); -var _constantJsDefault = parcelHelpers.interopDefault(_constantJs); -var symbols = [ +var _xJs = require("./symbol/x.js"); +var _xJsDefault = parcelHelpers.interopDefault(_xJs); +const symbolsFill = [ (0, _circleJsDefault.default), (0, _crossJsDefault.default), (0, _diamondJsDefault.default), @@ -19470,12 +19623,21 @@ var symbols = [ (0, _triangleJsDefault.default), (0, _wyeJsDefault.default) ]; -exports.default = function(type, size) { - var context = null; +const symbolsStroke = [ + (0, _circleJsDefault.default), + (0, _plusJsDefault.default), + (0, _xJsDefault.default), + (0, _triangle2JsDefault.default), + (0, _asteriskJsDefault.default), + (0, _square2JsDefault.default), + (0, _diamond2JsDefault.default) +]; +function Symbol(type, size) { + let context = null; type = typeof type === "function" ? type : (0, _constantJsDefault.default)(type || (0, _circleJsDefault.default)); size = typeof size === "function" ? size : (0, _constantJsDefault.default)(size === undefined ? 64 : +size); function symbol() { - var buffer; + let buffer; if (!context) context = buffer = (0, _d3Path.path)(); type.apply(this, arguments).draw(context, +size.apply(this, arguments)); if (buffer) return context = null, buffer + "" || null; @@ -19490,15 +19652,35 @@ exports.default = function(type, size) { return arguments.length ? (context = _ == null ? null : _, symbol) : context; }; return symbol; +} +exports.default = Symbol; + +},{"d3-path":"cRa94","./constant.js":"12DQf","./symbol/asterisk.js":"kHR3A","./symbol/circle.js":"7RXTA","./symbol/cross.js":"4cmA2","./symbol/diamond.js":"1gK3j","./symbol/diamond2.js":"WsFhi","./symbol/plus.js":"a9FVq","./symbol/square.js":"fXRAH","./symbol/square2.js":"69bxi","./symbol/star.js":"8nJiq","./symbol/triangle.js":"bClaq","./symbol/triangle2.js":"8s1uD","./symbol/wye.js":"2D9bg","./symbol/x.js":"fnfky","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kHR3A":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const sqrt3 = (0, _mathJs.sqrt)(3); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size + (0, _mathJs.min)(size / 28, 0.75)) * 0.59436; + const t = r / 2; + const u = t * sqrt3; + context.moveTo(0, r); + context.lineTo(0, -r); + context.moveTo(-u, -t); + context.lineTo(u, t); + context.moveTo(-u, t); + context.lineTo(u, -t); + } }; -},{"d3-path":"cRa94","./symbol/circle.js":"7RXTA","./symbol/cross.js":"4cmA2","./symbol/diamond.js":"1gK3j","./symbol/star.js":"8nJiq","./symbol/square.js":"fXRAH","./symbol/triangle.js":"bClaq","./symbol/wye.js":"2D9bg","./constant.js":"12DQf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7RXTA":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7RXTA":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size / (0, _mathJs.pi)); + draw (context, size) { + const r = (0, _mathJs.sqrt)(size / (0, _mathJs.pi)); context.moveTo(r, 0); context.arc(0, 0, r, 0, (0, _mathJs.tau)); } @@ -19507,9 +19689,10 @@ exports.default = { },{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4cmA2":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size / 5) / 2; + draw (context, size) { + const r = (0, _mathJs.sqrt)(size / 5) / 2; context.moveTo(-3 * r, -r); context.lineTo(-r, -r); context.lineTo(-r, -3 * r); @@ -19526,13 +19709,16 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1gK3j":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1gK3j":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var tan30 = Math.sqrt(1 / 3), tan30_2 = tan30 * 2; +var _mathJs = require("../math.js"); +const tan30 = (0, _mathJs.sqrt)(1 / 3); +const tan30_2 = tan30 * 2; exports.default = { - draw: function(context, size) { - var y = Math.sqrt(size / tan30_2), x = y * tan30; + draw (context, size) { + const y = (0, _mathJs.sqrt)(size / tan30_2); + const x = y * tan30; context.moveTo(0, -y); context.lineTo(x, 0); context.lineTo(0, y); @@ -19541,42 +19727,96 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8nJiq":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"WsFhi":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _mathJs = require("../math.js"); -var ka = 0.89081309152928522810, kr = Math.sin((0, _mathJs.pi) / 10) / Math.sin(7 * (0, _mathJs.pi) / 10), kx = Math.sin((0, _mathJs.tau) / 10) * kr, ky = -Math.cos((0, _mathJs.tau) / 10) * kr; exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size * ka), x = kx * r, y = ky * r; + draw (context, size) { + const r = (0, _mathJs.sqrt)(size) * 0.62625; context.moveTo(0, -r); - context.lineTo(x, y); - for(var i = 1; i < 5; ++i){ - var a = (0, _mathJs.tau) * i / 5, c = Math.cos(a), s = Math.sin(a); - context.lineTo(s * r, -c * r); - context.lineTo(c * x - s * y, s * x + c * y); - } + context.lineTo(r, 0); + context.lineTo(0, r); + context.lineTo(-r, 0); context.closePath(); } }; +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"a9FVq":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size - (0, _mathJs.min)(size / 7, 2)) * 0.87559; + context.moveTo(-r, 0); + context.lineTo(r, 0); + context.moveTo(0, r); + context.lineTo(0, -r); + } +}; + },{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fXRAH":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var w = Math.sqrt(size), x = -w / 2; + draw (context, size) { + const w = (0, _mathJs.sqrt)(size); + const x = -w / 2; context.rect(x, x, w, w); } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bClaq":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"69bxi":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size) * 0.4431; + context.moveTo(r, r); + context.lineTo(r, -r); + context.lineTo(-r, -r); + context.lineTo(-r, r); + context.closePath(); + } +}; + +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8nJiq":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var sqrt3 = Math.sqrt(3); +var _mathJs = require("../math.js"); +const ka = 0.89081309152928522810; +const kr = (0, _mathJs.sin)((0, _mathJs.pi) / 10) / (0, _mathJs.sin)(7 * (0, _mathJs.pi) / 10); +const kx = (0, _mathJs.sin)((0, _mathJs.tau) / 10) * kr; +const ky = -(0, _mathJs.cos)((0, _mathJs.tau) / 10) * kr; +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size * ka); + const x = kx * r; + const y = ky * r; + context.moveTo(0, -r); + context.lineTo(x, y); + for(let i = 1; i < 5; ++i){ + const a = (0, _mathJs.tau) * i / 5; + const c = (0, _mathJs.cos)(a); + const s = (0, _mathJs.sin)(a); + context.lineTo(s * r, -c * r); + context.lineTo(c * x - s * y, s * x + c * y); + } + context.closePath(); + } +}; + +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bClaq":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const sqrt3 = (0, _mathJs.sqrt)(3); exports.default = { - draw: function(context, size) { - var y = -Math.sqrt(size / (sqrt3 * 3)); + draw (context, size) { + const y = -(0, _mathJs.sqrt)(size / (sqrt3 * 3)); context.moveTo(0, y * 2); context.lineTo(-sqrt3 * y, -y); context.lineTo(sqrt3 * y, -y); @@ -19584,13 +19824,37 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2D9bg":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8s1uD":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const sqrt3 = (0, _mathJs.sqrt)(3); +exports.default = { + draw (context, size) { + const s = (0, _mathJs.sqrt)(size) * 0.6824; + const t = s / 2; + const u = s * sqrt3 / 2; // cos(Math.PI / 6) + context.moveTo(0, -s); + context.lineTo(u, t); + context.lineTo(-u, t); + context.closePath(); + } +}; + +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2D9bg":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var c = -0.5, s = Math.sqrt(3) / 2, k = 1 / Math.sqrt(12), a = (k / 2 + 1) * 3; +var _mathJs = require("../math.js"); +const c = -0.5; +const s = (0, _mathJs.sqrt)(3) / 2; +const k = 1 / (0, _mathJs.sqrt)(12); +const a = (k / 2 + 1) * 3; exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size / a), x0 = r / 2, y0 = r * k, x1 = x0, y1 = r * k + r, x2 = -x1, y2 = y1; + draw (context, size) { + const r = (0, _mathJs.sqrt)(size / a); + const x0 = r / 2, y0 = r * k; + const x1 = x0, y1 = r * k + r; + const x2 = -x1, y2 = y1; context.moveTo(x0, y0); context.lineTo(x1, y1); context.lineTo(x2, y2); @@ -19604,7 +19868,21 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3uf9r":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fnfky":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size - (0, _mathJs.min)(size / 6, 1.7)) * 0.6189; + context.moveTo(-r, -r); + context.lineTo(r, r); + context.moveTo(-r, r); + context.lineTo(r, -r); + } +}; + +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3uf9r":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _noopJs = require("../noop.js"); @@ -19696,7 +19974,7 @@ Basis.prototype = { lineEnd: function() { switch(this._point){ case 3: - point(this, this._x1, this._y1); // proceed + point(this, this._x1, this._y1); // falls through case 2: this._context.lineTo(this._x1, this._y1); break; @@ -19716,7 +19994,7 @@ Basis.prototype = { break; case 2: this._point = 3; - this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed + this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through default: point(this, x, y); break; @@ -19766,7 +20044,7 @@ BasisOpen.prototype = { this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; case 3: - this._point = 4; // proceed + this._point = 4; // falls through default: (0, _basisJs.point)(this, x, y); break; @@ -19935,7 +20213,7 @@ Cardinal.prototype = { this._x1 = x, this._y1 = y; break; case 2: - this._point = 3; // proceed + this._point = 3; // falls through default: point(this, x, y); break; @@ -19992,7 +20270,7 @@ CardinalOpen.prototype = { this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: - this._point = 4; // proceed + this._point = 4; // falls through default: (0, _cardinalJs.point)(this, x, y); break; @@ -20147,7 +20425,7 @@ CatmullRom.prototype = { this._point = 2; break; case 2: - this._point = 3; // proceed + this._point = 3; // falls through default: point(this, x, y); break; @@ -20210,7 +20488,7 @@ CatmullRomOpen.prototype = { this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: - this._point = 4; // proceed + this._point = 4; // falls through default: (0, _catmullRomJs.point)(this, x, y); break; @@ -20456,7 +20734,7 @@ Step.prototype = { this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: - this._point = 2; // proceed + this._point = 2; // falls through default: if (this._t <= 0) { this._context.lineTo(this._x, y); @@ -20800,80 +21078,80 @@ function scale(type, scale, metadata) { return this; } else return isValidScaleType(type) ? scales[type] : undefined; } // identity scale -scale(Identity, (0, _d3Scale.scaleIdentity)); // continuous scales -scale(Linear, (0, _d3Scale.scaleLinear), Continuous); -scale(Log, (0, _d3Scale.scaleLog), [ +scale(Identity, _d3Scale.scaleIdentity); // continuous scales +scale(Linear, _d3Scale.scaleLinear, Continuous); +scale(Log, _d3Scale.scaleLog, [ Continuous, Log ]); -scale(Pow, (0, _d3Scale.scalePow), Continuous); -scale(Sqrt, (0, _d3Scale.scaleSqrt), Continuous); -scale(Symlog, (0, _d3Scale.scaleSymlog), Continuous); -scale(Time, (0, _d3Scale.scaleTime), [ +scale(Pow, _d3Scale.scalePow, Continuous); +scale(Sqrt, _d3Scale.scaleSqrt, Continuous); +scale(Symlog, _d3Scale.scaleSymlog, Continuous); +scale(Time, _d3Scale.scaleTime, [ Continuous, Temporal ]); -scale(UTC, (0, _d3Scale.scaleUtc), [ +scale(UTC, _d3Scale.scaleUtc, [ Continuous, Temporal ]); // sequential scales -scale(Sequential, (0, _d3Scale.scaleSequential), [ +scale(Sequential, _d3Scale.scaleSequential, [ Continuous, Interpolating ]); // backwards compat -scale("".concat(Sequential, "-").concat(Linear), (0, _d3Scale.scaleSequential), [ +scale("".concat(Sequential, "-").concat(Linear), _d3Scale.scaleSequential, [ Continuous, Interpolating ]); -scale("".concat(Sequential, "-").concat(Log), (0, _d3Scale.scaleSequentialLog), [ +scale("".concat(Sequential, "-").concat(Log), _d3Scale.scaleSequentialLog, [ Continuous, Interpolating, Log ]); -scale("".concat(Sequential, "-").concat(Pow), (0, _d3Scale.scaleSequentialPow), [ +scale("".concat(Sequential, "-").concat(Pow), _d3Scale.scaleSequentialPow, [ Continuous, Interpolating ]); -scale("".concat(Sequential, "-").concat(Sqrt), (0, _d3Scale.scaleSequentialSqrt), [ +scale("".concat(Sequential, "-").concat(Sqrt), _d3Scale.scaleSequentialSqrt, [ Continuous, Interpolating ]); -scale("".concat(Sequential, "-").concat(Symlog), (0, _d3Scale.scaleSequentialSymlog), [ +scale("".concat(Sequential, "-").concat(Symlog), _d3Scale.scaleSequentialSymlog, [ Continuous, Interpolating ]); // diverging scales -scale("".concat(Diverging, "-").concat(Linear), (0, _d3Scale.scaleDiverging), [ +scale("".concat(Diverging, "-").concat(Linear), _d3Scale.scaleDiverging, [ Continuous, Interpolating ]); -scale("".concat(Diverging, "-").concat(Log), (0, _d3Scale.scaleDivergingLog), [ +scale("".concat(Diverging, "-").concat(Log), _d3Scale.scaleDivergingLog, [ Continuous, Interpolating, Log ]); -scale("".concat(Diverging, "-").concat(Pow), (0, _d3Scale.scaleDivergingPow), [ +scale("".concat(Diverging, "-").concat(Pow), _d3Scale.scaleDivergingPow, [ Continuous, Interpolating ]); -scale("".concat(Diverging, "-").concat(Sqrt), (0, _d3Scale.scaleDivergingSqrt), [ +scale("".concat(Diverging, "-").concat(Sqrt), _d3Scale.scaleDivergingSqrt, [ Continuous, Interpolating ]); -scale("".concat(Diverging, "-").concat(Symlog), (0, _d3Scale.scaleDivergingSymlog), [ +scale("".concat(Diverging, "-").concat(Symlog), _d3Scale.scaleDivergingSymlog, [ Continuous, Interpolating ]); // discretizing scales -scale(Quantile, (0, _d3Scale.scaleQuantile), [ +scale(Quantile, _d3Scale.scaleQuantile, [ Discretizing, Quantile ]); -scale(Quantize, (0, _d3Scale.scaleQuantize), Discretizing); -scale(Threshold, (0, _d3Scale.scaleThreshold), Discretizing); // discrete scales +scale(Quantize, _d3Scale.scaleQuantize, Discretizing); +scale(Threshold, _d3Scale.scaleThreshold, Discretizing); // discrete scales scale(BinOrdinal, scaleBinOrdinal, [ Discrete, Discretizing ]); -scale(Ordinal, (0, _d3Scale.scaleOrdinal), Discrete); +scale(Ordinal, _d3Scale.scaleOrdinal, Discrete); scale(Band, band, Discrete); scale(Point, point, Discrete); function isValidScaleType(type) { @@ -20917,7 +21195,7 @@ function interpolateRange(interpolator, range) { }; } function interpolateColors(colors, type, gamma) { - return (0, _d3Interpolate.piecewise)(interpolate(type || "rgb", gamma), colors); + return _d3Interpolate.piecewise(interpolate(type || "rgb", gamma), colors); } function quantizeInterpolator(interpolator, count) { const samples = new Array(count), n = count + 1; @@ -21297,7 +21575,161 @@ var _divergingJsDefault = parcelHelpers.interopDefault(_divergingJs); var _tickFormatJs = require("./tickFormat.js"); var _tickFormatJsDefault = parcelHelpers.interopDefault(_tickFormatJs); -},{"./band.js":false,"./identity.js":"le9d2","./linear.js":"5CETT","./log.js":"2gcSE","./symlog.js":"iUUr7","./ordinal.js":"1j3zZ","./pow.js":"i4lyo","./radial.js":false,"./quantile.js":"aAURo","./quantize.js":"jjcn6","./threshold.js":"8ndX3","./time.js":"cjAqm","./utcTime.js":"cM5gE","./sequential.js":"f1sM1","./sequentialQuantile.js":false,"./diverging.js":"9Qcq3","./tickFormat.js":"dksn9","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"le9d2":[function(require,module,exports) { +},{"./band.js":"6WWiS","./identity.js":"le9d2","./linear.js":"5CETT","./log.js":"2gcSE","./symlog.js":"iUUr7","./ordinal.js":"1j3zZ","./pow.js":"i4lyo","./radial.js":"5ODOz","./quantile.js":"aAURo","./quantize.js":"jjcn6","./threshold.js":"8ndX3","./time.js":"cjAqm","./utcTime.js":"cM5gE","./sequential.js":"f1sM1","./sequentialQuantile.js":"cSmYu","./diverging.js":"9Qcq3","./tickFormat.js":"dksn9","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"6WWiS":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "point", ()=>point); +var _d3Array = require("d3-array"); +var _initJs = require("./init.js"); +var _ordinalJs = require("./ordinal.js"); +var _ordinalJsDefault = parcelHelpers.interopDefault(_ordinalJs); +function band() { + var scale = (0, _ordinalJsDefault.default)().unknown(undefined), domain = scale.domain, ordinalRange = scale.range, r0 = 0, r1 = 1, step, bandwidth, round = false, paddingInner = 0, paddingOuter = 0, align = 0.5; + delete scale.unknown; + function rescale() { + var n = domain().length, reverse = r1 < r0, start = reverse ? r1 : r0, stop = reverse ? r0 : r1; + step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); + if (round) step = Math.floor(step); + start += (stop - start - step * (n - paddingInner)) * align; + bandwidth = step * (1 - paddingInner); + if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); + var values = (0, _d3Array.range)(n).map(function(i) { + return start + step * i; + }); + return ordinalRange(reverse ? values.reverse() : values); + } + scale.domain = function(_) { + return arguments.length ? (domain(_), rescale()) : domain(); + }; + scale.range = function(_) { + return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [ + r0, + r1 + ]; + }; + scale.rangeRound = function(_) { + return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale(); + }; + scale.bandwidth = function() { + return bandwidth; + }; + scale.step = function() { + return step; + }; + scale.round = function(_) { + return arguments.length ? (round = !!_, rescale()) : round; + }; + scale.padding = function(_) { + return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; + }; + scale.paddingInner = function(_) { + return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; + }; + scale.paddingOuter = function(_) { + return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; + }; + scale.align = function(_) { + return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; + }; + scale.copy = function() { + return band(domain(), [ + r0, + r1 + ]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align); + }; + return (0, _initJs.initRange).apply(rescale(), arguments); +} +exports.default = band; +function pointish(scale) { + var copy = scale.copy; + scale.padding = scale.paddingOuter; + delete scale.paddingInner; + delete scale.paddingOuter; + scale.copy = function() { + return pointish(copy()); + }; + return scale; +} +function point() { + return pointish(band.apply(null, arguments).paddingInner(1)); +} + +},{"d3-array":"6IwJG","./init.js":"kLKEv","./ordinal.js":"1j3zZ","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kLKEv":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "initRange", ()=>initRange); +parcelHelpers.export(exports, "initInterpolator", ()=>initInterpolator); +function initRange(domain, range) { + switch(arguments.length){ + case 0: + break; + case 1: + this.range(domain); + break; + default: + this.range(range).domain(domain); + break; + } + return this; +} +function initInterpolator(domain, interpolator) { + switch(arguments.length){ + case 0: + break; + case 1: + if (typeof domain === "function") this.interpolator(domain); + else this.range(domain); + break; + default: + this.domain(domain); + if (typeof interpolator === "function") this.interpolator(interpolator); + else this.range(interpolator); + break; + } + return this; +} + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1j3zZ":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "implicit", ()=>implicit); +var _d3Array = require("d3-array"); +var _initJs = require("./init.js"); +const implicit = Symbol("implicit"); +function ordinal() { + var index = new (0, _d3Array.InternMap)(), domain = [], range = [], unknown = implicit; + function scale(d) { + let i = index.get(d); + if (i === undefined) { + if (unknown !== implicit) return unknown; + index.set(d, i = domain.push(d) - 1); + } + return range[i % range.length]; + } + scale.domain = function(_) { + if (!arguments.length) return domain.slice(); + domain = [], index = new (0, _d3Array.InternMap)(); + for (const value of _){ + if (index.has(value)) continue; + index.set(value, domain.push(value) - 1); + } + return scale; + }; + scale.range = function(_) { + return arguments.length ? (range = Array.from(_), scale) : range.slice(); + }; + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function() { + return ordinal(domain, range).unknown(unknown); + }; + (0, _initJs.initRange).apply(scale, arguments); + return scale; +} +exports.default = ordinal; + +},{"d3-array":"6IwJG","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"le9d2":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _linearJs = require("./linear.js"); @@ -21622,34 +22054,7 @@ var _defineJsDefault = parcelHelpers.interopDefault(_defineJs); function Color() {} var darker = 0.7; var brighter = 1 / darker; -var reI = "\\s*([+-]?\\d+)\\s*", reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp("^rgb\\(" + [ - reI, - reI, - reI -] + "\\)$"), reRgbPercent = new RegExp("^rgb\\(" + [ - reP, - reP, - reP -] + "\\)$"), reRgbaInteger = new RegExp("^rgba\\(" + [ - reI, - reI, - reI, - reN -] + "\\)$"), reRgbaPercent = new RegExp("^rgba\\(" + [ - reP, - reP, - reP, - reN -] + "\\)$"), reHslPercent = new RegExp("^hsl\\(" + [ - reN, - reP, - reP -] + "\\)$"), reHslaPercent = new RegExp("^hsla\\(" + [ - reN, - reP, - reP, - reN -] + "\\)$"); +var reI = "\\s*([+-]?\\d+)\\s*", reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`), reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`), reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`), reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`), reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`), reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`); var named = { aliceblue: 0xf0f8ff, antiquewhite: 0xfaebd7, @@ -21801,14 +22206,15 @@ var named = { yellowgreen: 0x9acd32 }; (0, _defineJsDefault.default)(Color, color, { - copy: function(channels) { + copy (channels) { return Object.assign(new this.constructor, this, channels); }, - displayable: function() { + displayable () { return this.rgb().displayable(); }, hex: color_formatHex, formatHex: color_formatHex, + formatHex8: color_formatHex8, formatHsl: color_formatHsl, formatRgb: color_formatRgb, toString: color_formatRgb @@ -21816,6 +22222,9 @@ var named = { function color_formatHex() { return this.rgb().formatHex(); } +function color_formatHex8() { + return this.rgb().formatHex8(); +} function color_formatHsl() { return hslConvert(this).formatHsl(); } @@ -21863,35 +22272,47 @@ function Rgb(r, g, b, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Rgb, rgb, (0, _defineJs.extend)(Color, { - brighter: function(k) { + brighter (k) { k = k == null ? brighter : Math.pow(brighter, k); return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); }, - darker: function(k) { + darker (k) { k = k == null ? darker : Math.pow(darker, k); return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); }, - rgb: function() { + rgb () { return this; }, - displayable: function() { + clamp () { + return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity)); + }, + displayable () { return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1; }, hex: rgb_formatHex, formatHex: rgb_formatHex, + formatHex8: rgb_formatHex8, formatRgb: rgb_formatRgb, toString: rgb_formatRgb })); function rgb_formatHex() { - return "#" + hex(this.r) + hex(this.g) + hex(this.b); + return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`; +} +function rgb_formatHex8() { + return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; } function rgb_formatRgb() { - var a = this.opacity; - a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "rgb(" : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (a === 1 ? ")" : ", " + a + ")"); + const a = clampa(this.opacity); + return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`; +} +function clampa(opacity) { + return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity)); +} +function clampi(value) { + return Math.max(0, Math.min(255, Math.round(value) || 0)); } function hex(value) { - value = Math.max(0, Math.min(255, Math.round(value) || 0)); + value = clampi(value); return (value < 16 ? "0" : "") + value.toString(16); } function hsla(h, s, l, a) { @@ -21926,27 +22347,36 @@ function Hsl(h, s, l, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Hsl, hsl, (0, _defineJs.extend)(Color, { - brighter: function(k) { + brighter (k) { k = k == null ? brighter : Math.pow(brighter, k); return new Hsl(this.h, this.s, this.l * k, this.opacity); }, - darker: function(k) { + darker (k) { k = k == null ? darker : Math.pow(darker, k); return new Hsl(this.h, this.s, this.l * k, this.opacity); }, - rgb: function() { + rgb () { var h = this.h % 360 + (this.h < 0) * 360, s = isNaN(h) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2; return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity); }, - displayable: function() { + clamp () { + return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity)); + }, + displayable () { return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1; }, - formatHsl: function() { - var a = this.opacity; - a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "hsl(" : "hsla(") + (this.h || 0) + ", " + (this.s || 0) * 100 + "%, " + (this.l || 0) * 100 + "%" + (a === 1 ? ")" : ", " + a + ")"); + formatHsl () { + const a = clampa(this.opacity); + return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`; } })); +function clamph(value) { + value = (value || 0) % 360; + return value < 0 ? value + 360 : value; +} +function clampt(value) { + return Math.max(0, Math.min(1, value || 0)); +} /* From FvD 13.37, CSS Color Module Level 3 */ function hsl2rgb(h, m1, m2) { return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255; } @@ -22005,13 +22435,13 @@ function Lab(l, a, b, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Lab, lab, (0, _defineJs.extend)((0, _colorJs.Color), { - brighter: function(k) { + brighter (k) { return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); }, - darker: function(k) { + darker (k) { return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); }, - rgb: function() { + rgb () { var y = (this.l + 16) / 116, x = isNaN(this.a) ? y : y + this.a / 500, z = isNaN(this.b) ? y : y - this.b / 200; x = Xn * lab2xyz(x); y = Yn * lab2xyz(y); @@ -22056,13 +22486,13 @@ function hcl2lab(o) { return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); } (0, _defineJsDefault.default)(Hcl, hcl, (0, _defineJs.extend)((0, _colorJs.Color), { - brighter: function(k) { + brighter (k) { return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); }, - darker: function(k) { + darker (k) { return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); }, - rgb: function() { + rgb () { return hcl2lab(this).rgb(); } })); @@ -22101,15 +22531,15 @@ function Cubehelix(h, s, l, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Cubehelix, cubehelix, (0, _defineJs.extend)((0, _colorJs.Color), { - brighter: function(k) { + brighter (k) { k = k == null ? (0, _colorJs.brighter) : Math.pow((0, _colorJs.brighter), k); return new Cubehelix(this.h, this.s, this.l * k, this.opacity); }, - darker: function(k) { + darker (k) { k = k == null ? (0, _colorJs.darker) : Math.pow((0, _colorJs.darker), k); return new Cubehelix(this.h, this.s, this.l * k, this.opacity); }, - rgb: function() { + rgb () { var h = isNaN(this.h) ? 0 : (this.h + 120) * (0, _mathJs.radians), l = +this.l, a = isNaN(this.s) ? 0 : this.s * l * (1 - l), cosh = Math.cos(h), sinh = Math.sin(h); return new (0, _colorJs.Rgb)(255 * (l + a * (A * cosh + B * sinh)), 255 * (l + a * (C * cosh + D * sinh)), 255 * (l + a * (E * cosh)), this.opacity); } @@ -22691,41 +23121,6 @@ function number(x) { } exports.default = number; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kLKEv":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "initRange", ()=>initRange); -parcelHelpers.export(exports, "initInterpolator", ()=>initInterpolator); -function initRange(domain, range) { - switch(arguments.length){ - case 0: - break; - case 1: - this.range(domain); - break; - default: - this.range(range).domain(domain); - break; - } - return this; -} -function initInterpolator(domain, interpolator) { - switch(arguments.length){ - case 0: - break; - case 1: - if (typeof domain === "function") this.interpolator(domain); - else this.range(domain); - break; - default: - this.domain(domain); - if (typeof interpolator === "function") this.interpolator(interpolator); - else this.range(interpolator); - break; - } - return this; -} - },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"dksn9":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -22781,22 +23176,20 @@ function pow10(x) { return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; } function powp(base) { - return base === 10 ? pow10 : base === Math.E ? Math.exp : function(x) { - return Math.pow(base, x); - }; + return base === 10 ? pow10 : base === Math.E ? Math.exp : (x)=>Math.pow(base, x); } function logp(base) { - return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), function(x) { - return Math.log(x) / base; - }); + return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), (x)=>Math.log(x) / base); } function reflect(f) { - return function(x) { - return -f(-x); - }; + return (x, k)=>-f(-x, k); } function loggish(transform) { - var scale = transform(transformLog, transformExp), domain = scale.domain, base = 10, logs, pows; + const scale = transform(transformLog, transformExp); + const domain = scale.domain; + let base = 10; + let logs; + let pows; function rescale() { logs = logp(base), pows = powp(base); if (domain()[0] < 0) { @@ -22811,20 +23204,31 @@ function loggish(transform) { scale.domain = function(_) { return arguments.length ? (domain(_), rescale()) : domain(); }; - scale.ticks = function(count) { - var d = domain(), u = d[0], v = d[d.length - 1], r; - if (r = v < u) i = u, u = v, v = i; - var i = logs(u), j = logs(v), p, k, t, n = count == null ? 10 : +count, z = []; + scale.ticks = (count)=>{ + const d = domain(); + let u = d[0]; + let v = d[d.length - 1]; + const r = v < u; + if (r) [u, v] = [ + v, + u + ]; + let i = logs(u); + let j = logs(v); + let k; + let t; + const n = count == null ? 10 : +count; + let z = []; if (!(base % 1) && j - i < n) { i = Math.floor(i), j = Math.ceil(j); - if (u > 0) for(; i <= j; ++i)for(k = 1, p = pows(i); k < base; ++k){ - t = p * k; + if (u > 0) for(; i <= j; ++i)for(k = 1; k < base; ++k){ + t = i < 0 ? k / pows(-i) : k * pows(i); if (t < u) continue; if (t > v) break; z.push(t); } - else for(; i <= j; ++i)for(k = base - 1, p = pows(i); k >= 1; --k){ - t = p * k; + else for(; i <= j; ++i)for(k = base - 1; k >= 1; --k){ + t = i > 0 ? k / pows(-i) : k * pows(i); if (t < u) continue; if (t > v) break; z.push(t); @@ -22833,38 +23237,35 @@ function loggish(transform) { } else z = (0, _d3Array.ticks)(i, j, Math.min(j - i, n)).map(pows); return r ? z.reverse() : z; }; - scale.tickFormat = function(count, specifier) { - if (specifier == null) specifier = base === 10 ? ".0e" : ","; - if (typeof specifier !== "function") specifier = (0, _d3Format.format)(specifier); - if (count === Infinity) return specifier; + scale.tickFormat = (count, specifier)=>{ if (count == null) count = 10; - var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? - return function(d) { - var i = d / pows(Math.round(logs(d))); + if (specifier == null) specifier = base === 10 ? "s" : ","; + if (typeof specifier !== "function") { + if (!(base % 1) && (specifier = (0, _d3Format.formatSpecifier)(specifier)).precision == null) specifier.trim = true; + specifier = (0, _d3Format.format)(specifier); + } + if (count === Infinity) return specifier; + const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? + return (d)=>{ + let i = d / pows(Math.round(logs(d))); if (i * base < base - 0.5) i *= base; return i <= k ? specifier(d) : ""; }; }; - scale.nice = function() { + scale.nice = ()=>{ return domain((0, _niceJsDefault.default)(domain(), { - floor: function(x) { - return pows(Math.floor(logs(x))); - }, - ceil: function(x) { - return pows(Math.ceil(logs(x))); - } + floor: (x)=>pows(Math.floor(logs(x))), + ceil: (x)=>pows(Math.ceil(logs(x))) })); }; return scale; } function log() { - var scale = loggish((0, _continuousJs.transformer)()).domain([ + const scale = loggish((0, _continuousJs.transformer)()).domain([ 1, 10 ]); - scale.copy = function() { - return (0, _continuousJs.copy)(scale, log()).base(scale.base()); - }; + scale.copy = ()=>(0, _continuousJs.copy)(scale, log()).base(scale.base()); (0, _initJs.initRange).apply(scale, arguments); return scale; } @@ -22919,47 +23320,7 @@ function symlog() { } exports.default = symlog; -},{"./linear.js":"5CETT","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1j3zZ":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "implicit", ()=>implicit); -var _initJs = require("./init.js"); -const implicit = Symbol("implicit"); -function ordinal() { - var index = new Map(), domain = [], range = [], unknown = implicit; - function scale(d) { - var key = d + "", i = index.get(key); - if (!i) { - if (unknown !== implicit) return unknown; - index.set(key, i = domain.push(d)); - } - return range[(i - 1) % range.length]; - } - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = [], index = new Map(); - for (const value of _){ - const key = value + ""; - if (index.has(key)) continue; - index.set(key, domain.push(value)); - } - return scale; - }; - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), scale) : range.slice(); - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - scale.copy = function() { - return ordinal(domain, range).unknown(unknown); - }; - (0, _initJs.initRange).apply(scale, arguments); - return scale; -} -exports.default = ordinal; - -},{"./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i4lyo":[function(require,module,exports) { +},{"./linear.js":"5CETT","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i4lyo":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "powish", ()=>powish); @@ -23001,7 +23362,60 @@ function sqrt() { return pow.apply(null, arguments).exponent(0.5); } -},{"./linear.js":"5CETT","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"aAURo":[function(require,module,exports) { +},{"./linear.js":"5CETT","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"5ODOz":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _continuousJs = require("./continuous.js"); +var _continuousJsDefault = parcelHelpers.interopDefault(_continuousJs); +var _initJs = require("./init.js"); +var _linearJs = require("./linear.js"); +var _numberJs = require("./number.js"); +var _numberJsDefault = parcelHelpers.interopDefault(_numberJs); +function square(x) { + return Math.sign(x) * x * x; +} +function unsquare(x) { + return Math.sign(x) * Math.sqrt(Math.abs(x)); +} +function radial() { + var squared = (0, _continuousJsDefault.default)(), range = [ + 0, + 1 + ], round = false, unknown; + function scale(x) { + var y = unsquare(squared(x)); + return isNaN(y) ? unknown : round ? Math.round(y) : y; + } + scale.invert = function(y) { + return squared.invert(square(y)); + }; + scale.domain = function(_) { + return arguments.length ? (squared.domain(_), scale) : squared.domain(); + }; + scale.range = function(_) { + return arguments.length ? (squared.range((range = Array.from(_, (0, _numberJsDefault.default))).map(square)), scale) : range.slice(); + }; + scale.rangeRound = function(_) { + return scale.range(_).round(true); + }; + scale.round = function(_) { + return arguments.length ? (round = !!_, scale) : round; + }; + scale.clamp = function(_) { + return arguments.length ? (squared.clamp(_), scale) : squared.clamp(); + }; + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function() { + return radial(squared.domain(), range).round(round).clamp(squared.clamp()).unknown(unknown); + }; + (0, _initJs.initRange).apply(scale, arguments); + return (0, _linearJs.linearish)(scale); +} +exports.default = radial; + +},{"./continuous.js":"it8xE","./init.js":"kLKEv","./linear.js":"5CETT","./number.js":"bOzsY","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"aAURo":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _d3Array = require("d3-array"); @@ -23310,7 +23724,43 @@ function sequentialSqrt() { return sequentialPow.apply(null, arguments).exponent(0.5); } -},{"d3-interpolate":"6gbPP","./continuous.js":"it8xE","./init.js":"kLKEv","./linear.js":"5CETT","./log.js":"2gcSE","./symlog.js":"iUUr7","./pow.js":"i4lyo","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9Qcq3":[function(require,module,exports) { +},{"d3-interpolate":"6gbPP","./continuous.js":"it8xE","./init.js":"kLKEv","./linear.js":"5CETT","./log.js":"2gcSE","./symlog.js":"iUUr7","./pow.js":"i4lyo","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"cSmYu":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _d3Array = require("d3-array"); +var _continuousJs = require("./continuous.js"); +var _initJs = require("./init.js"); +function sequentialQuantile() { + var domain = [], interpolator = (0, _continuousJs.identity); + function scale(x) { + if (x != null && !isNaN(x = +x)) return interpolator(((0, _d3Array.bisect)(domain, x, 1) - 1) / (domain.length - 1)); + } + scale.domain = function(_) { + if (!arguments.length) return domain.slice(); + domain = []; + for (let d of _)if (d != null && !isNaN(d = +d)) domain.push(d); + domain.sort((0, _d3Array.ascending)); + return scale; + }; + scale.interpolator = function(_) { + return arguments.length ? (interpolator = _, scale) : interpolator; + }; + scale.range = function() { + return domain.map((d, i)=>interpolator(i / (domain.length - 1))); + }; + scale.quantiles = function(n) { + return Array.from({ + length: n + 1 + }, (_, i)=>(0, _d3Array.quantile)(domain, i / n)); + }; + scale.copy = function() { + return sequentialQuantile(interpolator).domain(domain); + }; + return (0, _initJs.initInterpolator).apply(scale, arguments); +} +exports.default = sequentialQuantile; + +},{"d3-array":"6IwJG","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9Qcq3":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "divergingLog", ()=>divergingLog); @@ -26809,8 +27259,7 @@ var _d3Array = require("d3-array"); var _cartesianJs = require("./cartesian.js"); var _mathJs = require("./math.js"); function longitude(point) { - if ((0, _mathJs.abs)(point[0]) <= (0, _mathJs.pi)) return point[0]; - else return (0, _mathJs.sign)(point[0]) * (((0, _mathJs.abs)(point[0]) + (0, _mathJs.pi)) % (0, _mathJs.tau) - (0, _mathJs.pi)); + return (0, _mathJs.abs)(point[0]) <= (0, _mathJs.pi) ? point[0] : (0, _mathJs.sign)(point[0]) * (((0, _mathJs.abs)(point[0]) + (0, _mathJs.pi)) % (0, _mathJs.tau) - (0, _mathJs.pi)); } exports.default = function(polygon, point) { var lambda = longitude(point), phi = point[1], sinPhi = (0, _mathJs.sin)(phi), normal = [ @@ -28824,41 +29273,41 @@ exports.default = function() { },{"../math.js":"74X19","./mercator.js":"iIGjZ","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ixW8K":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "geoAiry", ()=>(0, _airyDefault.default)); -parcelHelpers.export(exports, "geoAiryRaw", ()=>(0, _airy.airyRaw)); -parcelHelpers.export(exports, "geoAitoff", ()=>(0, _aitoffDefault.default)); -parcelHelpers.export(exports, "geoAitoffRaw", ()=>(0, _aitoff.aitoffRaw)); -parcelHelpers.export(exports, "geoArmadillo", ()=>(0, _armadilloDefault.default)); -parcelHelpers.export(exports, "geoArmadilloRaw", ()=>(0, _armadillo.armadilloRaw)); -parcelHelpers.export(exports, "geoAugust", ()=>(0, _augustDefault.default)); -parcelHelpers.export(exports, "geoAugustRaw", ()=>(0, _august.augustRaw)); -parcelHelpers.export(exports, "geoBaker", ()=>(0, _bakerDefault.default)); -parcelHelpers.export(exports, "geoBakerRaw", ()=>(0, _baker.bakerRaw)); -parcelHelpers.export(exports, "geoBerghaus", ()=>(0, _berghausDefault.default)); -parcelHelpers.export(exports, "geoBerghausRaw", ()=>(0, _berghaus.berghausRaw)); -parcelHelpers.export(exports, "geoBertin1953", ()=>(0, _bertinDefault.default)); -parcelHelpers.export(exports, "geoBertin1953Raw", ()=>(0, _bertin.bertin1953Raw)); -parcelHelpers.export(exports, "geoBoggs", ()=>(0, _boggsDefault.default)); -parcelHelpers.export(exports, "geoBoggsRaw", ()=>(0, _boggs.boggsRaw)); -parcelHelpers.export(exports, "geoBonne", ()=>(0, _bonneDefault.default)); -parcelHelpers.export(exports, "geoBonneRaw", ()=>(0, _bonne.bonneRaw)); -parcelHelpers.export(exports, "geoBottomley", ()=>(0, _bottomleyDefault.default)); -parcelHelpers.export(exports, "geoBottomleyRaw", ()=>(0, _bottomley.bottomleyRaw)); -parcelHelpers.export(exports, "geoBromley", ()=>(0, _bromleyDefault.default)); -parcelHelpers.export(exports, "geoBromleyRaw", ()=>(0, _bromley.bromleyRaw)); -parcelHelpers.export(exports, "geoChamberlin", ()=>(0, _chamberlinDefault.default)); -parcelHelpers.export(exports, "geoChamberlinRaw", ()=>(0, _chamberlin.chamberlinRaw)); -parcelHelpers.export(exports, "geoChamberlinAfrica", ()=>(0, _chamberlin.chamberlinAfrica)); -parcelHelpers.export(exports, "geoCollignon", ()=>(0, _collignonDefault.default)); -parcelHelpers.export(exports, "geoCollignonRaw", ()=>(0, _collignon.collignonRaw)); -parcelHelpers.export(exports, "geoCraig", ()=>(0, _craigDefault.default)); -parcelHelpers.export(exports, "geoCraigRaw", ()=>(0, _craig.craigRaw)); -parcelHelpers.export(exports, "geoCraster", ()=>(0, _crasterDefault.default)); -parcelHelpers.export(exports, "geoCrasterRaw", ()=>(0, _craster.crasterRaw)); -parcelHelpers.export(exports, "geoCylindricalEqualArea", ()=>(0, _cylindricalEqualAreaDefault.default)); -parcelHelpers.export(exports, "geoCylindricalEqualAreaRaw", ()=>(0, _cylindricalEqualArea.cylindricalEqualAreaRaw)); -parcelHelpers.export(exports, "geoCylindricalStereographic", ()=>(0, _cylindricalStereographicDefault.default)); -parcelHelpers.export(exports, "geoCylindricalStereographicRaw", ()=>(0, _cylindricalStereographic.cylindricalStereographicRaw)); +parcelHelpers.export(exports, "geoAiry", ()=>(0, _airyJsDefault.default)); +parcelHelpers.export(exports, "geoAiryRaw", ()=>(0, _airyJs.airyRaw)); +parcelHelpers.export(exports, "geoAitoff", ()=>(0, _aitoffJsDefault.default)); +parcelHelpers.export(exports, "geoAitoffRaw", ()=>(0, _aitoffJs.aitoffRaw)); +parcelHelpers.export(exports, "geoArmadillo", ()=>(0, _armadilloJsDefault.default)); +parcelHelpers.export(exports, "geoArmadilloRaw", ()=>(0, _armadilloJs.armadilloRaw)); +parcelHelpers.export(exports, "geoAugust", ()=>(0, _augustJsDefault.default)); +parcelHelpers.export(exports, "geoAugustRaw", ()=>(0, _augustJs.augustRaw)); +parcelHelpers.export(exports, "geoBaker", ()=>(0, _bakerJsDefault.default)); +parcelHelpers.export(exports, "geoBakerRaw", ()=>(0, _bakerJs.bakerRaw)); +parcelHelpers.export(exports, "geoBerghaus", ()=>(0, _berghausJsDefault.default)); +parcelHelpers.export(exports, "geoBerghausRaw", ()=>(0, _berghausJs.berghausRaw)); +parcelHelpers.export(exports, "geoBertin1953", ()=>(0, _bertinJsDefault.default)); +parcelHelpers.export(exports, "geoBertin1953Raw", ()=>(0, _bertinJs.bertin1953Raw)); +parcelHelpers.export(exports, "geoBoggs", ()=>(0, _boggsJsDefault.default)); +parcelHelpers.export(exports, "geoBoggsRaw", ()=>(0, _boggsJs.boggsRaw)); +parcelHelpers.export(exports, "geoBonne", ()=>(0, _bonneJsDefault.default)); +parcelHelpers.export(exports, "geoBonneRaw", ()=>(0, _bonneJs.bonneRaw)); +parcelHelpers.export(exports, "geoBottomley", ()=>(0, _bottomleyJsDefault.default)); +parcelHelpers.export(exports, "geoBottomleyRaw", ()=>(0, _bottomleyJs.bottomleyRaw)); +parcelHelpers.export(exports, "geoBromley", ()=>(0, _bromleyJsDefault.default)); +parcelHelpers.export(exports, "geoBromleyRaw", ()=>(0, _bromleyJs.bromleyRaw)); +parcelHelpers.export(exports, "geoChamberlin", ()=>(0, _chamberlinJsDefault.default)); +parcelHelpers.export(exports, "geoChamberlinRaw", ()=>(0, _chamberlinJs.chamberlinRaw)); +parcelHelpers.export(exports, "geoChamberlinAfrica", ()=>(0, _chamberlinJs.chamberlinAfrica)); +parcelHelpers.export(exports, "geoCollignon", ()=>(0, _collignonJsDefault.default)); +parcelHelpers.export(exports, "geoCollignonRaw", ()=>(0, _collignonJs.collignonRaw)); +parcelHelpers.export(exports, "geoCraig", ()=>(0, _craigJsDefault.default)); +parcelHelpers.export(exports, "geoCraigRaw", ()=>(0, _craigJs.craigRaw)); +parcelHelpers.export(exports, "geoCraster", ()=>(0, _crasterJsDefault.default)); +parcelHelpers.export(exports, "geoCrasterRaw", ()=>(0, _crasterJs.crasterRaw)); +parcelHelpers.export(exports, "geoCylindricalEqualArea", ()=>(0, _cylindricalEqualAreaJsDefault.default)); +parcelHelpers.export(exports, "geoCylindricalEqualAreaRaw", ()=>(0, _cylindricalEqualAreaJs.cylindricalEqualAreaRaw)); +parcelHelpers.export(exports, "geoCylindricalStereographic", ()=>(0, _cylindricalStereographicJsDefault.default)); +parcelHelpers.export(exports, "geoCylindricalStereographicRaw", ()=>(0, _cylindricalStereographicJs.cylindricalStereographicRaw)); parcelHelpers.export(exports, "geoEckert1", ()=>(0, _eckert1JsDefault.default)); parcelHelpers.export(exports, "geoEckert1Raw", ()=>(0, _eckert1Js.eckert1Raw)); parcelHelpers.export(exports, "geoEckert2", ()=>(0, _eckert2JsDefault.default)); @@ -28908,91 +29357,91 @@ parcelHelpers.export(exports, "geoHomolosine", ()=>(0, _homolosineJsDefault.defa parcelHelpers.export(exports, "geoHomolosineRaw", ()=>(0, _homolosineJs.homolosineRaw)); parcelHelpers.export(exports, "geoHufnagel", ()=>(0, _hufnagelJsDefault.default)); parcelHelpers.export(exports, "geoHufnagelRaw", ()=>(0, _hufnagelJs.hufnagelRaw)); -parcelHelpers.export(exports, "geoHyperelliptical", ()=>(0, _hyperellipticalDefault.default)); -parcelHelpers.export(exports, "geoHyperellipticalRaw", ()=>(0, _hyperelliptical.hyperellipticalRaw)); -parcelHelpers.export(exports, "geoInterrupt", ()=>(0, _indexDefault.default)); -parcelHelpers.export(exports, "geoInterruptedBoggs", ()=>(0, _boggsDefault1.default)); -parcelHelpers.export(exports, "geoInterruptedHomolosine", ()=>(0, _homolosineDefault.default)); -parcelHelpers.export(exports, "geoInterruptedMollweide", ()=>(0, _mollweideDefault.default)); -parcelHelpers.export(exports, "geoInterruptedMollweideHemispheres", ()=>(0, _mollweideHemispheresDefault.default)); -parcelHelpers.export(exports, "geoInterruptedSinuMollweide", ()=>(0, _sinuMollweideDefault.default)); -parcelHelpers.export(exports, "geoInterruptedSinusoidal", ()=>(0, _sinusoidalDefault.default)); +parcelHelpers.export(exports, "geoHyperelliptical", ()=>(0, _hyperellipticalJsDefault.default)); +parcelHelpers.export(exports, "geoHyperellipticalRaw", ()=>(0, _hyperellipticalJs.hyperellipticalRaw)); +parcelHelpers.export(exports, "geoInterrupt", ()=>(0, _indexJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedBoggs", ()=>(0, _boggsJsDefault1.default)); +parcelHelpers.export(exports, "geoInterruptedHomolosine", ()=>(0, _homolosineJsDefault1.default)); +parcelHelpers.export(exports, "geoInterruptedMollweide", ()=>(0, _mollweideJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedMollweideHemispheres", ()=>(0, _mollweideHemispheresJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedSinuMollweide", ()=>(0, _sinuMollweideJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedSinusoidal", ()=>(0, _sinusoidalJsDefault.default)); parcelHelpers.export(exports, "geoKavrayskiy7", ()=>(0, _kavrayskiy7JsDefault.default)); parcelHelpers.export(exports, "geoKavrayskiy7Raw", ()=>(0, _kavrayskiy7Js.kavrayskiy7Raw)); parcelHelpers.export(exports, "geoLagrange", ()=>(0, _lagrangeJsDefault.default)); parcelHelpers.export(exports, "geoLagrangeRaw", ()=>(0, _lagrangeJs.lagrangeRaw)); -parcelHelpers.export(exports, "geoLarrivee", ()=>(0, _larriveeDefault.default)); -parcelHelpers.export(exports, "geoLarriveeRaw", ()=>(0, _larrivee.larriveeRaw)); -parcelHelpers.export(exports, "geoLaskowski", ()=>(0, _laskowskiDefault.default)); -parcelHelpers.export(exports, "geoLaskowskiRaw", ()=>(0, _laskowski.laskowskiRaw)); +parcelHelpers.export(exports, "geoLarrivee", ()=>(0, _larriveeJsDefault.default)); +parcelHelpers.export(exports, "geoLarriveeRaw", ()=>(0, _larriveeJs.larriveeRaw)); +parcelHelpers.export(exports, "geoLaskowski", ()=>(0, _laskowskiJsDefault.default)); +parcelHelpers.export(exports, "geoLaskowskiRaw", ()=>(0, _laskowskiJs.laskowskiRaw)); parcelHelpers.export(exports, "geoLittrow", ()=>(0, _littrowJsDefault.default)); parcelHelpers.export(exports, "geoLittrowRaw", ()=>(0, _littrowJs.littrowRaw)); parcelHelpers.export(exports, "geoLoximuthal", ()=>(0, _loximuthalJsDefault.default)); parcelHelpers.export(exports, "geoLoximuthalRaw", ()=>(0, _loximuthalJs.loximuthalRaw)); -parcelHelpers.export(exports, "geoMiller", ()=>(0, _millerDefault.default)); -parcelHelpers.export(exports, "geoMillerRaw", ()=>(0, _miller.millerRaw)); -parcelHelpers.export(exports, "geoModifiedStereographic", ()=>(0, _modifiedStereographicDefault.default)); -parcelHelpers.export(exports, "geoModifiedStereographicRaw", ()=>(0, _modifiedStereographic.modifiedStereographicRaw)); -parcelHelpers.export(exports, "geoModifiedStereographicAlaska", ()=>(0, _modifiedStereographic.modifiedStereographicAlaska)); -parcelHelpers.export(exports, "geoModifiedStereographicGs48", ()=>(0, _modifiedStereographic.modifiedStereographicGs48)); -parcelHelpers.export(exports, "geoModifiedStereographicGs50", ()=>(0, _modifiedStereographic.modifiedStereographicGs50)); -parcelHelpers.export(exports, "geoModifiedStereographicMiller", ()=>(0, _modifiedStereographic.modifiedStereographicMiller)); -parcelHelpers.export(exports, "geoModifiedStereographicLee", ()=>(0, _modifiedStereographic.modifiedStereographicLee)); -parcelHelpers.export(exports, "geoMollweide", ()=>(0, _mollweideDefault1.default)); -parcelHelpers.export(exports, "geoMollweideRaw", ()=>(0, _mollweide1.mollweideRaw)); -parcelHelpers.export(exports, "geoMtFlatPolarParabolic", ()=>(0, _mtFlatPolarParabolicDefault.default)); -parcelHelpers.export(exports, "geoMtFlatPolarParabolicRaw", ()=>(0, _mtFlatPolarParabolic.mtFlatPolarParabolicRaw)); -parcelHelpers.export(exports, "geoMtFlatPolarQuartic", ()=>(0, _mtFlatPolarQuarticDefault.default)); -parcelHelpers.export(exports, "geoMtFlatPolarQuarticRaw", ()=>(0, _mtFlatPolarQuartic.mtFlatPolarQuarticRaw)); -parcelHelpers.export(exports, "geoMtFlatPolarSinusoidal", ()=>(0, _mtFlatPolarSinusoidalDefault.default)); -parcelHelpers.export(exports, "geoMtFlatPolarSinusoidalRaw", ()=>(0, _mtFlatPolarSinusoidal.mtFlatPolarSinusoidalRaw)); -parcelHelpers.export(exports, "geoNaturalEarth2", ()=>(0, _naturalEarth2Default.default)); -parcelHelpers.export(exports, "geoNaturalEarth2Raw", ()=>(0, _naturalEarth2.naturalEarth2Raw)); -parcelHelpers.export(exports, "geoNellHammer", ()=>(0, _nellHammerDefault.default)); -parcelHelpers.export(exports, "geoNellHammerRaw", ()=>(0, _nellHammer.nellHammerRaw)); -parcelHelpers.export(exports, "geoInterruptedQuarticAuthalic", ()=>(0, _quarticAuthalicDefault.default)); -parcelHelpers.export(exports, "geoNicolosi", ()=>(0, _nicolosiDefault.default)); -parcelHelpers.export(exports, "geoNicolosiRaw", ()=>(0, _nicolosi.nicolosiRaw)); -parcelHelpers.export(exports, "geoPatterson", ()=>(0, _pattersonDefault.default)); -parcelHelpers.export(exports, "geoPattersonRaw", ()=>(0, _patterson.pattersonRaw)); -parcelHelpers.export(exports, "geoPolyconic", ()=>(0, _polyconicDefault.default)); -parcelHelpers.export(exports, "geoPolyconicRaw", ()=>(0, _polyconic.polyconicRaw)); -parcelHelpers.export(exports, "geoPolyhedral", ()=>(0, _indexJsDefault.default)); +parcelHelpers.export(exports, "geoMiller", ()=>(0, _millerJsDefault.default)); +parcelHelpers.export(exports, "geoMillerRaw", ()=>(0, _millerJs.millerRaw)); +parcelHelpers.export(exports, "geoModifiedStereographic", ()=>(0, _modifiedStereographicJsDefault.default)); +parcelHelpers.export(exports, "geoModifiedStereographicRaw", ()=>(0, _modifiedStereographicJs.modifiedStereographicRaw)); +parcelHelpers.export(exports, "geoModifiedStereographicAlaska", ()=>(0, _modifiedStereographicJs.modifiedStereographicAlaska)); +parcelHelpers.export(exports, "geoModifiedStereographicGs48", ()=>(0, _modifiedStereographicJs.modifiedStereographicGs48)); +parcelHelpers.export(exports, "geoModifiedStereographicGs50", ()=>(0, _modifiedStereographicJs.modifiedStereographicGs50)); +parcelHelpers.export(exports, "geoModifiedStereographicMiller", ()=>(0, _modifiedStereographicJs.modifiedStereographicMiller)); +parcelHelpers.export(exports, "geoModifiedStereographicLee", ()=>(0, _modifiedStereographicJs.modifiedStereographicLee)); +parcelHelpers.export(exports, "geoMollweide", ()=>(0, _mollweideJsDefault1.default)); +parcelHelpers.export(exports, "geoMollweideRaw", ()=>(0, _mollweideJs1.mollweideRaw)); +parcelHelpers.export(exports, "geoMtFlatPolarParabolic", ()=>(0, _mtFlatPolarParabolicJsDefault.default)); +parcelHelpers.export(exports, "geoMtFlatPolarParabolicRaw", ()=>(0, _mtFlatPolarParabolicJs.mtFlatPolarParabolicRaw)); +parcelHelpers.export(exports, "geoMtFlatPolarQuartic", ()=>(0, _mtFlatPolarQuarticJsDefault.default)); +parcelHelpers.export(exports, "geoMtFlatPolarQuarticRaw", ()=>(0, _mtFlatPolarQuarticJs.mtFlatPolarQuarticRaw)); +parcelHelpers.export(exports, "geoMtFlatPolarSinusoidal", ()=>(0, _mtFlatPolarSinusoidalJsDefault.default)); +parcelHelpers.export(exports, "geoMtFlatPolarSinusoidalRaw", ()=>(0, _mtFlatPolarSinusoidalJs.mtFlatPolarSinusoidalRaw)); +parcelHelpers.export(exports, "geoNaturalEarth2", ()=>(0, _naturalEarth2JsDefault.default)); +parcelHelpers.export(exports, "geoNaturalEarth2Raw", ()=>(0, _naturalEarth2Js.naturalEarth2Raw)); +parcelHelpers.export(exports, "geoNellHammer", ()=>(0, _nellHammerJsDefault.default)); +parcelHelpers.export(exports, "geoNellHammerRaw", ()=>(0, _nellHammerJs.nellHammerRaw)); +parcelHelpers.export(exports, "geoInterruptedQuarticAuthalic", ()=>(0, _quarticAuthalicJsDefault.default)); +parcelHelpers.export(exports, "geoNicolosi", ()=>(0, _nicolosiJsDefault.default)); +parcelHelpers.export(exports, "geoNicolosiRaw", ()=>(0, _nicolosiJs.nicolosiRaw)); +parcelHelpers.export(exports, "geoPatterson", ()=>(0, _pattersonJsDefault.default)); +parcelHelpers.export(exports, "geoPattersonRaw", ()=>(0, _pattersonJs.pattersonRaw)); +parcelHelpers.export(exports, "geoPolyconic", ()=>(0, _polyconicJsDefault.default)); +parcelHelpers.export(exports, "geoPolyconicRaw", ()=>(0, _polyconicJs.polyconicRaw)); +parcelHelpers.export(exports, "geoPolyhedral", ()=>(0, _indexJsDefault1.default)); parcelHelpers.export(exports, "geoPolyhedralButterfly", ()=>(0, _butterflyJsDefault.default)); -parcelHelpers.export(exports, "geoPolyhedralCollignon", ()=>(0, _collignonJsDefault.default)); +parcelHelpers.export(exports, "geoPolyhedralCollignon", ()=>(0, _collignonJsDefault1.default)); parcelHelpers.export(exports, "geoPolyhedralWaterman", ()=>(0, _watermanJsDefault.default)); -parcelHelpers.export(exports, "geoProject", ()=>(0, _indexDefault1.default)); +parcelHelpers.export(exports, "geoProject", ()=>(0, _indexJsDefault2.default)); parcelHelpers.export(exports, "geoGringortenQuincuncial", ()=>(0, _gringortenJsDefault1.default)); parcelHelpers.export(exports, "geoPeirceQuincuncial", ()=>(0, _peirceJsDefault.default)); -parcelHelpers.export(exports, "geoQuantize", ()=>(0, _quantizeDefault.default)); -parcelHelpers.export(exports, "geoQuincuncial", ()=>(0, _indexJsDefault1.default)); -parcelHelpers.export(exports, "geoRectangularPolyconic", ()=>(0, _rectangularPolyconicDefault.default)); -parcelHelpers.export(exports, "geoRectangularPolyconicRaw", ()=>(0, _rectangularPolyconic.rectangularPolyconicRaw)); -parcelHelpers.export(exports, "geoRobinson", ()=>(0, _robinsonDefault.default)); -parcelHelpers.export(exports, "geoRobinsonRaw", ()=>(0, _robinson.robinsonRaw)); -parcelHelpers.export(exports, "geoSatellite", ()=>(0, _satelliteDefault.default)); -parcelHelpers.export(exports, "geoSatelliteRaw", ()=>(0, _satellite.satelliteRaw)); -parcelHelpers.export(exports, "geoSinuMollweide", ()=>(0, _sinuMollweideDefault1.default)); -parcelHelpers.export(exports, "geoSinuMollweideRaw", ()=>(0, _sinuMollweide1.sinuMollweideRaw)); -parcelHelpers.export(exports, "geoSinusoidal", ()=>(0, _sinusoidalDefault1.default)); -parcelHelpers.export(exports, "geoSinusoidalRaw", ()=>(0, _sinusoidal1.sinusoidalRaw)); -parcelHelpers.export(exports, "geoStitch", ()=>(0, _stitchDefault.default)); -parcelHelpers.export(exports, "geoTimes", ()=>(0, _timesDefault.default)); -parcelHelpers.export(exports, "geoTimesRaw", ()=>(0, _times.timesRaw)); -parcelHelpers.export(exports, "geoTwoPointAzimuthal", ()=>(0, _twoPointAzimuthalDefault.default)); -parcelHelpers.export(exports, "geoTwoPointAzimuthalRaw", ()=>(0, _twoPointAzimuthal.twoPointAzimuthalRaw)); -parcelHelpers.export(exports, "geoTwoPointAzimuthalUsa", ()=>(0, _twoPointAzimuthal.twoPointAzimuthalUsa)); -parcelHelpers.export(exports, "geoTwoPointEquidistant", ()=>(0, _twoPointEquidistantDefault.default)); -parcelHelpers.export(exports, "geoTwoPointEquidistantRaw", ()=>(0, _twoPointEquidistant.twoPointEquidistantRaw)); -parcelHelpers.export(exports, "geoTwoPointEquidistantUsa", ()=>(0, _twoPointEquidistant.twoPointEquidistantUsa)); -parcelHelpers.export(exports, "geoVanDerGrinten", ()=>(0, _vanDerGrintenDefault.default)); -parcelHelpers.export(exports, "geoVanDerGrintenRaw", ()=>(0, _vanDerGrinten.vanDerGrintenRaw)); -parcelHelpers.export(exports, "geoVanDerGrinten2", ()=>(0, _vanDerGrinten2Default.default)); -parcelHelpers.export(exports, "geoVanDerGrinten2Raw", ()=>(0, _vanDerGrinten2.vanDerGrinten2Raw)); -parcelHelpers.export(exports, "geoVanDerGrinten3", ()=>(0, _vanDerGrinten3Default.default)); -parcelHelpers.export(exports, "geoVanDerGrinten3Raw", ()=>(0, _vanDerGrinten3.vanDerGrinten3Raw)); -parcelHelpers.export(exports, "geoVanDerGrinten4", ()=>(0, _vanDerGrinten4Default.default)); -parcelHelpers.export(exports, "geoVanDerGrinten4Raw", ()=>(0, _vanDerGrinten4.vanDerGrinten4Raw)); +parcelHelpers.export(exports, "geoQuantize", ()=>(0, _quantizeJsDefault.default)); +parcelHelpers.export(exports, "geoQuincuncial", ()=>(0, _indexJsDefault3.default)); +parcelHelpers.export(exports, "geoRectangularPolyconic", ()=>(0, _rectangularPolyconicJsDefault.default)); +parcelHelpers.export(exports, "geoRectangularPolyconicRaw", ()=>(0, _rectangularPolyconicJs.rectangularPolyconicRaw)); +parcelHelpers.export(exports, "geoRobinson", ()=>(0, _robinsonJsDefault.default)); +parcelHelpers.export(exports, "geoRobinsonRaw", ()=>(0, _robinsonJs.robinsonRaw)); +parcelHelpers.export(exports, "geoSatellite", ()=>(0, _satelliteJsDefault.default)); +parcelHelpers.export(exports, "geoSatelliteRaw", ()=>(0, _satelliteJs.satelliteRaw)); +parcelHelpers.export(exports, "geoSinuMollweide", ()=>(0, _sinuMollweideJsDefault1.default)); +parcelHelpers.export(exports, "geoSinuMollweideRaw", ()=>(0, _sinuMollweideJs1.sinuMollweideRaw)); +parcelHelpers.export(exports, "geoSinusoidal", ()=>(0, _sinusoidalJsDefault1.default)); +parcelHelpers.export(exports, "geoSinusoidalRaw", ()=>(0, _sinusoidalJs1.sinusoidalRaw)); +parcelHelpers.export(exports, "geoStitch", ()=>(0, _stitchJsDefault.default)); +parcelHelpers.export(exports, "geoTimes", ()=>(0, _timesJsDefault.default)); +parcelHelpers.export(exports, "geoTimesRaw", ()=>(0, _timesJs.timesRaw)); +parcelHelpers.export(exports, "geoTwoPointAzimuthal", ()=>(0, _twoPointAzimuthalJsDefault.default)); +parcelHelpers.export(exports, "geoTwoPointAzimuthalRaw", ()=>(0, _twoPointAzimuthalJs.twoPointAzimuthalRaw)); +parcelHelpers.export(exports, "geoTwoPointAzimuthalUsa", ()=>(0, _twoPointAzimuthalJs.twoPointAzimuthalUsa)); +parcelHelpers.export(exports, "geoTwoPointEquidistant", ()=>(0, _twoPointEquidistantJsDefault.default)); +parcelHelpers.export(exports, "geoTwoPointEquidistantRaw", ()=>(0, _twoPointEquidistantJs.twoPointEquidistantRaw)); +parcelHelpers.export(exports, "geoTwoPointEquidistantUsa", ()=>(0, _twoPointEquidistantJs.twoPointEquidistantUsa)); +parcelHelpers.export(exports, "geoVanDerGrinten", ()=>(0, _vanDerGrintenJsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrintenRaw", ()=>(0, _vanDerGrintenJs.vanDerGrintenRaw)); +parcelHelpers.export(exports, "geoVanDerGrinten2", ()=>(0, _vanDerGrinten2JsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrinten2Raw", ()=>(0, _vanDerGrinten2Js.vanDerGrinten2Raw)); +parcelHelpers.export(exports, "geoVanDerGrinten3", ()=>(0, _vanDerGrinten3JsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrinten3Raw", ()=>(0, _vanDerGrinten3Js.vanDerGrinten3Raw)); +parcelHelpers.export(exports, "geoVanDerGrinten4", ()=>(0, _vanDerGrinten4JsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrinten4Raw", ()=>(0, _vanDerGrinten4Js.vanDerGrinten4Raw)); parcelHelpers.export(exports, "geoWagner", ()=>(0, _wagnerJsDefault.default)); parcelHelpers.export(exports, "geoWagner7", ()=>(0, _wagnerJs.wagner7)); parcelHelpers.export(exports, "geoWagnerRaw", ()=>(0, _wagnerJs.wagnerRaw)); @@ -29002,42 +29451,42 @@ parcelHelpers.export(exports, "geoWagner6", ()=>(0, _wagner6JsDefault.default)); parcelHelpers.export(exports, "geoWagner6Raw", ()=>(0, _wagner6Js.wagner6Raw)); parcelHelpers.export(exports, "geoWiechel", ()=>(0, _wiechelJsDefault.default)); parcelHelpers.export(exports, "geoWiechelRaw", ()=>(0, _wiechelJs.wiechelRaw)); -parcelHelpers.export(exports, "geoWinkel3", ()=>(0, _winkel3Default.default)); -parcelHelpers.export(exports, "geoWinkel3Raw", ()=>(0, _winkel3.winkel3Raw)); -var _airy = require("./airy"); -var _airyDefault = parcelHelpers.interopDefault(_airy); -var _aitoff = require("./aitoff"); -var _aitoffDefault = parcelHelpers.interopDefault(_aitoff); -var _armadillo = require("./armadillo"); -var _armadilloDefault = parcelHelpers.interopDefault(_armadillo); -var _august = require("./august"); -var _augustDefault = parcelHelpers.interopDefault(_august); -var _baker = require("./baker"); -var _bakerDefault = parcelHelpers.interopDefault(_baker); -var _berghaus = require("./berghaus"); -var _berghausDefault = parcelHelpers.interopDefault(_berghaus); -var _bertin = require("./bertin"); -var _bertinDefault = parcelHelpers.interopDefault(_bertin); -var _boggs = require("./boggs"); -var _boggsDefault = parcelHelpers.interopDefault(_boggs); -var _bonne = require("./bonne"); -var _bonneDefault = parcelHelpers.interopDefault(_bonne); -var _bottomley = require("./bottomley"); -var _bottomleyDefault = parcelHelpers.interopDefault(_bottomley); -var _bromley = require("./bromley"); -var _bromleyDefault = parcelHelpers.interopDefault(_bromley); -var _chamberlin = require("./chamberlin"); -var _chamberlinDefault = parcelHelpers.interopDefault(_chamberlin); -var _collignon = require("./collignon"); -var _collignonDefault = parcelHelpers.interopDefault(_collignon); -var _craig = require("./craig"); -var _craigDefault = parcelHelpers.interopDefault(_craig); -var _craster = require("./craster"); -var _crasterDefault = parcelHelpers.interopDefault(_craster); -var _cylindricalEqualArea = require("./cylindricalEqualArea"); -var _cylindricalEqualAreaDefault = parcelHelpers.interopDefault(_cylindricalEqualArea); -var _cylindricalStereographic = require("./cylindricalStereographic"); -var _cylindricalStereographicDefault = parcelHelpers.interopDefault(_cylindricalStereographic); +parcelHelpers.export(exports, "geoWinkel3", ()=>(0, _winkel3JsDefault.default)); +parcelHelpers.export(exports, "geoWinkel3Raw", ()=>(0, _winkel3Js.winkel3Raw)); +var _airyJs = require("./airy.js"); +var _airyJsDefault = parcelHelpers.interopDefault(_airyJs); +var _aitoffJs = require("./aitoff.js"); +var _aitoffJsDefault = parcelHelpers.interopDefault(_aitoffJs); +var _armadilloJs = require("./armadillo.js"); +var _armadilloJsDefault = parcelHelpers.interopDefault(_armadilloJs); +var _augustJs = require("./august.js"); +var _augustJsDefault = parcelHelpers.interopDefault(_augustJs); +var _bakerJs = require("./baker.js"); +var _bakerJsDefault = parcelHelpers.interopDefault(_bakerJs); +var _berghausJs = require("./berghaus.js"); +var _berghausJsDefault = parcelHelpers.interopDefault(_berghausJs); +var _bertinJs = require("./bertin.js"); +var _bertinJsDefault = parcelHelpers.interopDefault(_bertinJs); +var _boggsJs = require("./boggs.js"); +var _boggsJsDefault = parcelHelpers.interopDefault(_boggsJs); +var _bonneJs = require("./bonne.js"); +var _bonneJsDefault = parcelHelpers.interopDefault(_bonneJs); +var _bottomleyJs = require("./bottomley.js"); +var _bottomleyJsDefault = parcelHelpers.interopDefault(_bottomleyJs); +var _bromleyJs = require("./bromley.js"); +var _bromleyJsDefault = parcelHelpers.interopDefault(_bromleyJs); +var _chamberlinJs = require("./chamberlin.js"); +var _chamberlinJsDefault = parcelHelpers.interopDefault(_chamberlinJs); +var _collignonJs = require("./collignon.js"); +var _collignonJsDefault = parcelHelpers.interopDefault(_collignonJs); +var _craigJs = require("./craig.js"); +var _craigJsDefault = parcelHelpers.interopDefault(_craigJs); +var _crasterJs = require("./craster.js"); +var _crasterJsDefault = parcelHelpers.interopDefault(_crasterJs); +var _cylindricalEqualAreaJs = require("./cylindricalEqualArea.js"); +var _cylindricalEqualAreaJsDefault = parcelHelpers.interopDefault(_cylindricalEqualAreaJs); +var _cylindricalStereographicJs = require("./cylindricalStereographic.js"); +var _cylindricalStereographicJsDefault = parcelHelpers.interopDefault(_cylindricalStereographicJs); var _eckert1Js = require("./eckert1.js"); var _eckert1JsDefault = parcelHelpers.interopDefault(_eckert1Js); var _eckert2Js = require("./eckert2.js"); @@ -29088,102 +29537,102 @@ var _homolosineJs = require("./homolosine.js"); var _homolosineJsDefault = parcelHelpers.interopDefault(_homolosineJs); var _hufnagelJs = require("./hufnagel.js"); var _hufnagelJsDefault = parcelHelpers.interopDefault(_hufnagelJs); -var _hyperelliptical = require("./hyperelliptical"); -var _hyperellipticalDefault = parcelHelpers.interopDefault(_hyperelliptical); -var _index = require("./interrupted/index"); -var _indexDefault = parcelHelpers.interopDefault(_index); -var _boggs1 = require("./interrupted/boggs"); -var _boggsDefault1 = parcelHelpers.interopDefault(_boggs1); -var _homolosine = require("./interrupted/homolosine"); -var _homolosineDefault = parcelHelpers.interopDefault(_homolosine); -var _mollweide = require("./interrupted/mollweide"); -var _mollweideDefault = parcelHelpers.interopDefault(_mollweide); -var _mollweideHemispheres = require("./interrupted/mollweideHemispheres"); -var _mollweideHemispheresDefault = parcelHelpers.interopDefault(_mollweideHemispheres); -var _sinuMollweide = require("./interrupted/sinuMollweide"); -var _sinuMollweideDefault = parcelHelpers.interopDefault(_sinuMollweide); -var _sinusoidal = require("./interrupted/sinusoidal"); -var _sinusoidalDefault = parcelHelpers.interopDefault(_sinusoidal); +var _hyperellipticalJs = require("./hyperelliptical.js"); +var _hyperellipticalJsDefault = parcelHelpers.interopDefault(_hyperellipticalJs); +var _indexJs = require("./interrupted/index.js"); +var _indexJsDefault = parcelHelpers.interopDefault(_indexJs); +var _boggsJs1 = require("./interrupted/boggs.js"); +var _boggsJsDefault1 = parcelHelpers.interopDefault(_boggsJs1); +var _homolosineJs1 = require("./interrupted/homolosine.js"); +var _homolosineJsDefault1 = parcelHelpers.interopDefault(_homolosineJs1); +var _mollweideJs = require("./interrupted/mollweide.js"); +var _mollweideJsDefault = parcelHelpers.interopDefault(_mollweideJs); +var _mollweideHemispheresJs = require("./interrupted/mollweideHemispheres.js"); +var _mollweideHemispheresJsDefault = parcelHelpers.interopDefault(_mollweideHemispheresJs); +var _sinuMollweideJs = require("./interrupted/sinuMollweide.js"); +var _sinuMollweideJsDefault = parcelHelpers.interopDefault(_sinuMollweideJs); +var _sinusoidalJs = require("./interrupted/sinusoidal.js"); +var _sinusoidalJsDefault = parcelHelpers.interopDefault(_sinusoidalJs); var _kavrayskiy7Js = require("./kavrayskiy7.js"); var _kavrayskiy7JsDefault = parcelHelpers.interopDefault(_kavrayskiy7Js); var _lagrangeJs = require("./lagrange.js"); var _lagrangeJsDefault = parcelHelpers.interopDefault(_lagrangeJs); -var _larrivee = require("./larrivee"); -var _larriveeDefault = parcelHelpers.interopDefault(_larrivee); -var _laskowski = require("./laskowski"); -var _laskowskiDefault = parcelHelpers.interopDefault(_laskowski); +var _larriveeJs = require("./larrivee.js"); +var _larriveeJsDefault = parcelHelpers.interopDefault(_larriveeJs); +var _laskowskiJs = require("./laskowski.js"); +var _laskowskiJsDefault = parcelHelpers.interopDefault(_laskowskiJs); var _littrowJs = require("./littrow.js"); var _littrowJsDefault = parcelHelpers.interopDefault(_littrowJs); var _loximuthalJs = require("./loximuthal.js"); var _loximuthalJsDefault = parcelHelpers.interopDefault(_loximuthalJs); -var _miller = require("./miller"); -var _millerDefault = parcelHelpers.interopDefault(_miller); -var _modifiedStereographic = require("./modifiedStereographic"); -var _modifiedStereographicDefault = parcelHelpers.interopDefault(_modifiedStereographic); -var _mollweide1 = require("./mollweide"); -var _mollweideDefault1 = parcelHelpers.interopDefault(_mollweide1); -var _mtFlatPolarParabolic = require("./mtFlatPolarParabolic"); -var _mtFlatPolarParabolicDefault = parcelHelpers.interopDefault(_mtFlatPolarParabolic); -var _mtFlatPolarQuartic = require("./mtFlatPolarQuartic"); -var _mtFlatPolarQuarticDefault = parcelHelpers.interopDefault(_mtFlatPolarQuartic); -var _mtFlatPolarSinusoidal = require("./mtFlatPolarSinusoidal"); -var _mtFlatPolarSinusoidalDefault = parcelHelpers.interopDefault(_mtFlatPolarSinusoidal); -var _naturalEarth2 = require("./naturalEarth2"); -var _naturalEarth2Default = parcelHelpers.interopDefault(_naturalEarth2); -var _nellHammer = require("./nellHammer"); -var _nellHammerDefault = parcelHelpers.interopDefault(_nellHammer); -var _quarticAuthalic = require("./interrupted/quarticAuthalic"); -var _quarticAuthalicDefault = parcelHelpers.interopDefault(_quarticAuthalic); -var _nicolosi = require("./nicolosi"); -var _nicolosiDefault = parcelHelpers.interopDefault(_nicolosi); -var _patterson = require("./patterson"); -var _pattersonDefault = parcelHelpers.interopDefault(_patterson); -var _polyconic = require("./polyconic"); -var _polyconicDefault = parcelHelpers.interopDefault(_polyconic); -var _indexJs = require("./polyhedral/index.js"); -var _indexJsDefault = parcelHelpers.interopDefault(_indexJs); +var _millerJs = require("./miller.js"); +var _millerJsDefault = parcelHelpers.interopDefault(_millerJs); +var _modifiedStereographicJs = require("./modifiedStereographic.js"); +var _modifiedStereographicJsDefault = parcelHelpers.interopDefault(_modifiedStereographicJs); +var _mollweideJs1 = require("./mollweide.js"); +var _mollweideJsDefault1 = parcelHelpers.interopDefault(_mollweideJs1); +var _mtFlatPolarParabolicJs = require("./mtFlatPolarParabolic.js"); +var _mtFlatPolarParabolicJsDefault = parcelHelpers.interopDefault(_mtFlatPolarParabolicJs); +var _mtFlatPolarQuarticJs = require("./mtFlatPolarQuartic.js"); +var _mtFlatPolarQuarticJsDefault = parcelHelpers.interopDefault(_mtFlatPolarQuarticJs); +var _mtFlatPolarSinusoidalJs = require("./mtFlatPolarSinusoidal.js"); +var _mtFlatPolarSinusoidalJsDefault = parcelHelpers.interopDefault(_mtFlatPolarSinusoidalJs); +var _naturalEarth2Js = require("./naturalEarth2.js"); +var _naturalEarth2JsDefault = parcelHelpers.interopDefault(_naturalEarth2Js); +var _nellHammerJs = require("./nellHammer.js"); +var _nellHammerJsDefault = parcelHelpers.interopDefault(_nellHammerJs); +var _quarticAuthalicJs = require("./interrupted/quarticAuthalic.js"); +var _quarticAuthalicJsDefault = parcelHelpers.interopDefault(_quarticAuthalicJs); +var _nicolosiJs = require("./nicolosi.js"); +var _nicolosiJsDefault = parcelHelpers.interopDefault(_nicolosiJs); +var _pattersonJs = require("./patterson.js"); +var _pattersonJsDefault = parcelHelpers.interopDefault(_pattersonJs); +var _polyconicJs = require("./polyconic.js"); +var _polyconicJsDefault = parcelHelpers.interopDefault(_polyconicJs); +var _indexJs1 = require("./polyhedral/index.js"); +var _indexJsDefault1 = parcelHelpers.interopDefault(_indexJs1); var _butterflyJs = require("./polyhedral/butterfly.js"); var _butterflyJsDefault = parcelHelpers.interopDefault(_butterflyJs); -var _collignonJs = require("./polyhedral/collignon.js"); -var _collignonJsDefault = parcelHelpers.interopDefault(_collignonJs); +var _collignonJs1 = require("./polyhedral/collignon.js"); +var _collignonJsDefault1 = parcelHelpers.interopDefault(_collignonJs1); var _watermanJs = require("./polyhedral/waterman.js"); var _watermanJsDefault = parcelHelpers.interopDefault(_watermanJs); -var _index1 = require("./project/index"); -var _indexDefault1 = parcelHelpers.interopDefault(_index1); +var _indexJs2 = require("./project/index.js"); +var _indexJsDefault2 = parcelHelpers.interopDefault(_indexJs2); var _gringortenJs1 = require("./quincuncial/gringorten.js"); var _gringortenJsDefault1 = parcelHelpers.interopDefault(_gringortenJs1); var _peirceJs = require("./quincuncial/peirce.js"); var _peirceJsDefault = parcelHelpers.interopDefault(_peirceJs); -var _quantize = require("./quantize"); -var _quantizeDefault = parcelHelpers.interopDefault(_quantize); -var _indexJs1 = require("./quincuncial/index.js"); -var _indexJsDefault1 = parcelHelpers.interopDefault(_indexJs1); -var _rectangularPolyconic = require("./rectangularPolyconic"); -var _rectangularPolyconicDefault = parcelHelpers.interopDefault(_rectangularPolyconic); -var _robinson = require("./robinson"); -var _robinsonDefault = parcelHelpers.interopDefault(_robinson); -var _satellite = require("./satellite"); -var _satelliteDefault = parcelHelpers.interopDefault(_satellite); -var _sinuMollweide1 = require("./sinuMollweide"); -var _sinuMollweideDefault1 = parcelHelpers.interopDefault(_sinuMollweide1); -var _sinusoidal1 = require("./sinusoidal"); -var _sinusoidalDefault1 = parcelHelpers.interopDefault(_sinusoidal1); -var _stitch = require("./stitch"); -var _stitchDefault = parcelHelpers.interopDefault(_stitch); -var _times = require("./times"); -var _timesDefault = parcelHelpers.interopDefault(_times); -var _twoPointAzimuthal = require("./twoPointAzimuthal"); -var _twoPointAzimuthalDefault = parcelHelpers.interopDefault(_twoPointAzimuthal); -var _twoPointEquidistant = require("./twoPointEquidistant"); -var _twoPointEquidistantDefault = parcelHelpers.interopDefault(_twoPointEquidistant); -var _vanDerGrinten = require("./vanDerGrinten"); -var _vanDerGrintenDefault = parcelHelpers.interopDefault(_vanDerGrinten); -var _vanDerGrinten2 = require("./vanDerGrinten2"); -var _vanDerGrinten2Default = parcelHelpers.interopDefault(_vanDerGrinten2); -var _vanDerGrinten3 = require("./vanDerGrinten3"); -var _vanDerGrinten3Default = parcelHelpers.interopDefault(_vanDerGrinten3); -var _vanDerGrinten4 = require("./vanDerGrinten4"); -var _vanDerGrinten4Default = parcelHelpers.interopDefault(_vanDerGrinten4); +var _quantizeJs = require("./quantize.js"); +var _quantizeJsDefault = parcelHelpers.interopDefault(_quantizeJs); +var _indexJs3 = require("./quincuncial/index.js"); +var _indexJsDefault3 = parcelHelpers.interopDefault(_indexJs3); +var _rectangularPolyconicJs = require("./rectangularPolyconic.js"); +var _rectangularPolyconicJsDefault = parcelHelpers.interopDefault(_rectangularPolyconicJs); +var _robinsonJs = require("./robinson.js"); +var _robinsonJsDefault = parcelHelpers.interopDefault(_robinsonJs); +var _satelliteJs = require("./satellite.js"); +var _satelliteJsDefault = parcelHelpers.interopDefault(_satelliteJs); +var _sinuMollweideJs1 = require("./sinuMollweide.js"); +var _sinuMollweideJsDefault1 = parcelHelpers.interopDefault(_sinuMollweideJs1); +var _sinusoidalJs1 = require("./sinusoidal.js"); +var _sinusoidalJsDefault1 = parcelHelpers.interopDefault(_sinusoidalJs1); +var _stitchJs = require("./stitch.js"); +var _stitchJsDefault = parcelHelpers.interopDefault(_stitchJs); +var _timesJs = require("./times.js"); +var _timesJsDefault = parcelHelpers.interopDefault(_timesJs); +var _twoPointAzimuthalJs = require("./twoPointAzimuthal.js"); +var _twoPointAzimuthalJsDefault = parcelHelpers.interopDefault(_twoPointAzimuthalJs); +var _twoPointEquidistantJs = require("./twoPointEquidistant.js"); +var _twoPointEquidistantJsDefault = parcelHelpers.interopDefault(_twoPointEquidistantJs); +var _vanDerGrintenJs = require("./vanDerGrinten.js"); +var _vanDerGrintenJsDefault = parcelHelpers.interopDefault(_vanDerGrintenJs); +var _vanDerGrinten2Js = require("./vanDerGrinten2.js"); +var _vanDerGrinten2JsDefault = parcelHelpers.interopDefault(_vanDerGrinten2Js); +var _vanDerGrinten3Js = require("./vanDerGrinten3.js"); +var _vanDerGrinten3JsDefault = parcelHelpers.interopDefault(_vanDerGrinten3Js); +var _vanDerGrinten4Js = require("./vanDerGrinten4.js"); +var _vanDerGrinten4JsDefault = parcelHelpers.interopDefault(_vanDerGrinten4Js); var _wagnerJs = require("./wagner.js"); var _wagnerJsDefault = parcelHelpers.interopDefault(_wagnerJs); var _wagner4Js = require("./wagner4.js"); @@ -29192,10 +29641,10 @@ var _wagner6Js = require("./wagner6.js"); var _wagner6JsDefault = parcelHelpers.interopDefault(_wagner6Js); var _wiechelJs = require("./wiechel.js"); var _wiechelJsDefault = parcelHelpers.interopDefault(_wiechelJs); -var _winkel3 = require("./winkel3"); -var _winkel3Default = parcelHelpers.interopDefault(_winkel3); +var _winkel3Js = require("./winkel3.js"); +var _winkel3JsDefault = parcelHelpers.interopDefault(_winkel3Js); -},{"./airy":false,"./aitoff":false,"./armadillo":false,"./august":false,"./baker":false,"./berghaus":false,"./bertin":false,"./boggs":false,"./bonne":false,"./bottomley":false,"./bromley":false,"./chamberlin":false,"./collignon":false,"./craig":false,"./craster":false,"./cylindricalEqualArea":false,"./cylindricalStereographic":false,"./eckert1.js":false,"./eckert2.js":false,"./eckert3.js":false,"./eckert4.js":false,"./eckert5.js":false,"./eckert6.js":false,"./eisenlohr.js":false,"./fahey.js":false,"./foucaut.js":false,"./foucautSinusoidal.js":false,"./gilbert.js":false,"./gingery.js":false,"./ginzburg4.js":false,"./ginzburg5.js":false,"./ginzburg6.js":false,"./ginzburg8.js":false,"./ginzburg9.js":false,"./gringorten.js":false,"./guyou.js":false,"./hammer.js":false,"./hammerRetroazimuthal.js":false,"./healpix.js":false,"./hill.js":false,"./homolosine.js":false,"./hufnagel.js":false,"./hyperelliptical":false,"./interrupted/index":false,"./interrupted/boggs":false,"./interrupted/homolosine":false,"./interrupted/mollweide":false,"./interrupted/mollweideHemispheres":false,"./interrupted/sinuMollweide":false,"./interrupted/sinusoidal":false,"./kavrayskiy7.js":false,"./lagrange.js":false,"./larrivee":false,"./laskowski":false,"./littrow.js":false,"./loximuthal.js":false,"./miller":false,"./modifiedStereographic":false,"./mollweide":"dkpmT","./mtFlatPolarParabolic":false,"./mtFlatPolarQuartic":false,"./mtFlatPolarSinusoidal":false,"./naturalEarth2":false,"./nellHammer":false,"./interrupted/quarticAuthalic":false,"./nicolosi":false,"./patterson":false,"./polyconic":false,"./polyhedral/index.js":false,"./polyhedral/butterfly.js":false,"./polyhedral/collignon.js":false,"./polyhedral/waterman.js":false,"./project/index":false,"./quincuncial/gringorten.js":false,"./quincuncial/peirce.js":false,"./quantize":false,"./quincuncial/index.js":false,"./rectangularPolyconic":false,"./robinson":false,"./satellite":false,"./sinuMollweide":false,"./sinusoidal":false,"./stitch":false,"./times":false,"./twoPointAzimuthal":false,"./twoPointEquidistant":false,"./vanDerGrinten":false,"./vanDerGrinten2":false,"./vanDerGrinten3":false,"./vanDerGrinten4":false,"./wagner.js":false,"./wagner4.js":false,"./wagner6.js":false,"./wiechel.js":false,"./winkel3":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"dkpmT":[function(require,module,exports) { +},{"./airy.js":false,"./aitoff.js":false,"./armadillo.js":false,"./august.js":false,"./baker.js":false,"./berghaus.js":false,"./bertin.js":false,"./boggs.js":false,"./bonne.js":false,"./bottomley.js":false,"./bromley.js":false,"./chamberlin.js":false,"./collignon.js":false,"./craig.js":false,"./craster.js":false,"./cylindricalEqualArea.js":false,"./cylindricalStereographic.js":false,"./eckert1.js":false,"./eckert2.js":false,"./eckert3.js":false,"./eckert4.js":false,"./eckert5.js":false,"./eckert6.js":false,"./eisenlohr.js":false,"./fahey.js":false,"./foucaut.js":false,"./foucautSinusoidal.js":false,"./gilbert.js":false,"./gingery.js":false,"./ginzburg4.js":false,"./ginzburg5.js":false,"./ginzburg6.js":false,"./ginzburg8.js":false,"./ginzburg9.js":false,"./gringorten.js":false,"./guyou.js":false,"./hammer.js":false,"./hammerRetroazimuthal.js":false,"./healpix.js":false,"./hill.js":false,"./homolosine.js":false,"./hufnagel.js":false,"./hyperelliptical.js":false,"./interrupted/index.js":false,"./interrupted/boggs.js":false,"./interrupted/homolosine.js":false,"./interrupted/mollweide.js":false,"./interrupted/mollweideHemispheres.js":false,"./interrupted/sinuMollweide.js":false,"./interrupted/sinusoidal.js":false,"./kavrayskiy7.js":false,"./lagrange.js":false,"./larrivee.js":false,"./laskowski.js":false,"./littrow.js":false,"./loximuthal.js":false,"./miller.js":false,"./modifiedStereographic.js":false,"./mollweide.js":"dkpmT","./mtFlatPolarParabolic.js":false,"./mtFlatPolarQuartic.js":false,"./mtFlatPolarSinusoidal.js":false,"./naturalEarth2.js":false,"./nellHammer.js":false,"./interrupted/quarticAuthalic.js":false,"./nicolosi.js":false,"./patterson.js":false,"./polyconic.js":false,"./polyhedral/index.js":false,"./polyhedral/butterfly.js":false,"./polyhedral/collignon.js":false,"./polyhedral/waterman.js":false,"./project/index.js":false,"./quincuncial/gringorten.js":false,"./quincuncial/peirce.js":false,"./quantize.js":false,"./quincuncial/index.js":false,"./rectangularPolyconic.js":false,"./robinson.js":false,"./satellite.js":false,"./sinuMollweide.js":false,"./sinusoidal.js":false,"./stitch.js":false,"./times.js":false,"./twoPointAzimuthal.js":false,"./twoPointEquidistant.js":false,"./vanDerGrinten.js":false,"./vanDerGrinten2.js":false,"./vanDerGrinten3.js":false,"./vanDerGrinten4.js":false,"./wagner.js":false,"./wagner4.js":false,"./wagner6.js":false,"./wiechel.js":false,"./winkel3.js":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"dkpmT":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "mollweideBromleyTheta", ()=>mollweideBromleyTheta); @@ -30606,7 +31055,7 @@ function timerFlush() { ++frame; // Pretend we’ve set an alarm, if we haven’t already. var t = taskHead, e; while(t){ - if ((e = clockNow - t._time) >= 0) t._call.call(null, e); + if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e); t = t._next; } --frame; @@ -30896,7 +31345,7 @@ function setFields(node, fields, as) { for(let i = 0; i < n; ++i)t[as[i]] = node[fields[i]]; t[as[n]] = node.children ? node.children.length : 0; } -const Output = [ +const Output$3 = [ "x", "y", "r", @@ -30946,8 +31395,8 @@ Pack.Definition = { "name": "as", "type": "string", "array": true, - "length": Output.length, - "default": Output + "length": Output$3.length, + "default": Output$3 } ] }; @@ -30958,9 +31407,9 @@ Pack.Definition = { "size", "padding" ], - fields: Output + fields: Output$3 }); -const Output$1 = [ +const Output$2 = [ "x0", "y0", "x1", @@ -31011,8 +31460,8 @@ Partition.Definition = { "name": "as", "type": "string", "array": true, - "length": Output$1.length, - "default": Output$1 + "length": Output$2.length, + "default": Output$2 } ] }; @@ -31023,7 +31472,7 @@ Partition.Definition = { "round", "padding" ], - fields: Output$1 + fields: Output$2 }); /** * Stratify a collection of tuples into a tree structure based on @@ -31070,7 +31519,7 @@ const Layouts = { tidy: (0, _d3Hierarchy.tree), cluster: (0, _d3Hierarchy.cluster) }; -const Output$2 = [ +const Output$1 = [ "x", "y", "depth", @@ -31129,8 +31578,8 @@ Tree.Definition = { "name": "as", "type": "string", "array": true, - "length": Output$2.length, - "default": Output$2 + "length": Output$1.length, + "default": Output$1 } ] }; @@ -31146,7 +31595,7 @@ Tree.Definition = { "size", "nodeSize" ], - fields: Output$2 + fields: Output$1 }); /** * Generate tuples representing links between tree nodes. @@ -31200,7 +31649,7 @@ const Tiles = { squarify: (0, _d3Hierarchy.treemapSquarify), resquarify: (0, _d3Hierarchy.treemapResquarify) }; -const Output$3 = [ +const Output = [ "x0", "y0", "x1", @@ -31299,8 +31748,8 @@ Treemap.Definition = { "name": "as", "type": "string", "array": true, - "length": Output$3.length, - "default": Output$3 + "length": Output.length, + "default": Output } ] }; @@ -31333,7 +31782,7 @@ Treemap.Definition = { "paddingBottom", "paddingLeft" ], - fields: Output$3 + fields: Output }); },{"vega-dataflow":"3NitK","vega-util":"bApja","d3-hierarchy":"4fr5p","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4fr5p":[function(require,module,exports) { @@ -31341,6 +31790,7 @@ var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "cluster", ()=>(0, _clusterJsDefault.default)); parcelHelpers.export(exports, "hierarchy", ()=>(0, _indexJsDefault.default)); +parcelHelpers.export(exports, "Node", ()=>(0, _indexJs.Node)); parcelHelpers.export(exports, "pack", ()=>(0, _indexJsDefault1.default)); parcelHelpers.export(exports, "packSiblings", ()=>(0, _siblingsJsDefault.default)); parcelHelpers.export(exports, "packEnclose", ()=>(0, _encloseJsDefault.default)); @@ -31725,19 +32175,22 @@ exports.default = function*() { },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"eQFOB":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var _siblingsJs = require("./siblings.js"); var _accessorsJs = require("../accessors.js"); var _constantJs = require("../constant.js"); var _constantJsDefault = parcelHelpers.interopDefault(_constantJs); +var _lcgJs = require("../lcg.js"); +var _lcgJsDefault = parcelHelpers.interopDefault(_lcgJs); +var _siblingsJs = require("./siblings.js"); function defaultRadius(d) { return Math.sqrt(d.value); } exports.default = function() { var radius = null, dx = 1, dy = 1, padding = (0, _constantJs.constantZero); function pack(root) { + const random = (0, _lcgJsDefault.default)(); root.x = dx / 2, root.y = dy / 2; - if (radius) root.eachBefore(radiusLeaf(radius)).eachAfter(packChildren(padding, 0.5)).eachBefore(translateChild(1)); - else root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildren((0, _constantJs.constantZero), 1)).eachAfter(packChildren(padding, root.r / Math.min(dx, dy))).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); + if (radius) root.eachBefore(radiusLeaf(radius)).eachAfter(packChildrenRandom(padding, 0.5, random)).eachBefore(translateChild(1)); + else root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildrenRandom((0, _constantJs.constantZero), 1, random)).eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random)).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); return root; } pack.radius = function(x) { @@ -31759,12 +32212,12 @@ function radiusLeaf(radius) { if (!node.children) node.r = Math.max(0, +radius(node) || 0); }; } -function packChildren(padding, k) { +function packChildrenRandom(padding, k, random) { return function(node) { if (children = node.children) { var children, i, n = children.length, r = padding(node) * k || 0, e; if (r) for(i = 0; i < n; ++i)children[i].r += r; - e = (0, _siblingsJs.packEnclose)(children); + e = (0, _siblingsJs.packSiblingsRandom)(children, random); if (r) for(i = 0; i < n; ++i)children[i].r -= r; node.r = e + r; } @@ -31781,14 +32234,53 @@ function translateChild(k) { }; } -},{"./siblings.js":"8RhM7","../accessors.js":"i242w","../constant.js":"i6Ely","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8RhM7":[function(require,module,exports) { +},{"../accessors.js":"i242w","../constant.js":"i6Ely","../lcg.js":"9jKig","./siblings.js":"8RhM7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i242w":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "optional", ()=>optional); +parcelHelpers.export(exports, "required", ()=>required); +function optional(f) { + return f == null ? null : required(f); +} +function required(f) { + if (typeof f !== "function") throw new Error; + return f; +} + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i6Ely":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "constantZero", ()=>constantZero); +function constantZero() { + return 0; +} +exports.default = function(x) { + return function() { + return x; + }; +}; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9jKig":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "packEnclose", ()=>packEnclose); +// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use +const a = 1664525; +const c = 1013904223; +const m = 4294967296; // 2^32 +exports.default = function() { + let s = 1; + return ()=>(s = (a * s + c) % m) / m; +}; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8RhM7":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "packSiblingsRandom", ()=>packSiblingsRandom); var _arrayJs = require("../array.js"); var _arrayJsDefault = parcelHelpers.interopDefault(_arrayJs); +var _lcgJs = require("../lcg.js"); +var _lcgJsDefault = parcelHelpers.interopDefault(_lcgJs); var _encloseJs = require("./enclose.js"); -var _encloseJsDefault = parcelHelpers.interopDefault(_encloseJs); function place(b, a, c) { var dx = b.x - a.x, x, a2, dy = b.y - a.y, y, b2, d2 = dx * dx + dy * dy; if (d2) { @@ -31823,7 +32315,7 @@ function Node(circle) { this.next = null; this.previous = null; } -function packEnclose(circles) { +function packSiblingsRandom(circles, random) { if (!(n = (circles = (0, _arrayJsDefault.default)(circles)).length)) return 0; var a, b, c, n, aa, ca, i, j, k, sj, sk; // Place the first circle. @@ -31872,17 +32364,17 @@ function packEnclose(circles) { b._ ], c = b; while((c = c.next) !== b)a.push(c._); - c = (0, _encloseJsDefault.default)(a); + c = (0, _encloseJs.packEncloseRandom)(a, random); // Translate the circles to put the enclosing circle around the origin. for(i = 0; i < n; ++i)a = circles[i], a.x -= c.x, a.y -= c.y; return c.r; } exports.default = function(circles) { - packEnclose(circles); + packSiblingsRandom(circles, (0, _lcgJsDefault.default)()); return circles; }; -},{"../array.js":"4vcaT","./enclose.js":"gBh5f","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4vcaT":[function(require,module,exports) { +},{"../array.js":"4vcaT","../lcg.js":"9jKig","./enclose.js":"gBh5f","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4vcaT":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "shuffle", ()=>shuffle); @@ -31890,10 +32382,10 @@ exports.default = function(x) { return typeof x === "object" && "length" in x ? x // Array, TypedArray, NodeList, array-like : Array.from(x); // Map, Set, iterable, string, or anything else }; -function shuffle(array) { - var m = array.length, t, i; +function shuffle(array, random) { + let m = array.length, t, i; while(m){ - i = Math.random() * m-- | 0; + i = random() * m-- | 0; t = array[m]; array[m] = array[i]; array[i] = t; @@ -31904,16 +32396,22 @@ function shuffle(array) { },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gBh5f":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "packEncloseRandom", ()=>packEncloseRandom); var _arrayJs = require("../array.js"); +var _lcgJs = require("../lcg.js"); +var _lcgJsDefault = parcelHelpers.interopDefault(_lcgJs); exports.default = function(circles) { - var i = 0, n = (circles = (0, _arrayJs.shuffle)(Array.from(circles))).length, B = [], p, e; + return packEncloseRandom(circles, (0, _lcgJsDefault.default)()); +}; +function packEncloseRandom(circles, random) { + var i = 0, n = (circles = (0, _arrayJs.shuffle)(Array.from(circles), random)).length, B = [], p, e; while(i < n){ p = circles[i]; if (e && enclosesWeak(e, p)) ++i; else e = encloseBasis(B = extendBasis(B, p)), i = 0; } return e; -}; +} function extendBasis(B, p) { var i, j; if (enclosesWeakAll(p, B)) return [ @@ -31977,7 +32475,7 @@ function encloseBasis2(a, b) { }; } function encloseBasis3(a, b, c) { - var x1 = a.x, y1 = a.y, r1 = a.r, x2 = b.x, y2 = b.y, r2 = b.r, x3 = c.x, y3 = c.y, r3 = c.r, a2 = x1 - x2, a3 = x1 - x3, b2 = y1 - y2, b3 = y1 - y3, c2 = r2 - r1, c3 = r3 - r1, d1 = x1 * x1 + y1 * y1 - r1 * r1, d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, ab = a3 * b2 - a2 * b3, xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, xb = (b3 * c2 - b2 * c3) / ab, ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, yb = (a2 * c3 - a3 * c2) / ab, A = xb * xb + yb * yb - 1, B = 2 * (r1 + xa * xb + ya * yb), C = xa * xa + ya * ya - r1 * r1, r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); + var x1 = a.x, y1 = a.y, r1 = a.r, x2 = b.x, y2 = b.y, r2 = b.r, x3 = c.x, y3 = c.y, r3 = c.r, a2 = x1 - x2, a3 = x1 - x3, b2 = y1 - y2, b3 = y1 - y3, c2 = r2 - r1, c3 = r3 - r1, d1 = x1 * x1 + y1 * y1 - r1 * r1, d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, ab = a3 * b2 - a2 * b3, xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, xb = (b3 * c2 - b2 * c3) / ab, ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, yb = (a2 * c3 - a3 * c2) / ab, A = xb * xb + yb * yb - 1, B = 2 * (r1 + xa * xb + ya * yb), C = xa * xa + ya * ya - r1 * r1, r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); return { x: x1 + xa + xb * r, y: y1 + ya + yb * r, @@ -31985,33 +32483,7 @@ function encloseBasis3(a, b, c) { }; } -},{"../array.js":"4vcaT","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i242w":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "optional", ()=>optional); -parcelHelpers.export(exports, "required", ()=>required); -function optional(f) { - return f == null ? null : required(f); -} -function required(f) { - if (typeof f !== "function") throw new Error; - return f; -} - -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i6Ely":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "constantZero", ()=>constantZero); -function constantZero() { - return 0; -} -exports.default = function(x) { - return function() { - return x; - }; -}; - -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hfHoW":[function(require,module,exports) { +},{"../array.js":"4vcaT","../lcg.js":"9jKig","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hfHoW":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _roundJs = require("./treemap/round.js"); @@ -32084,7 +32556,7 @@ var _accessorsJs = require("./accessors.js"); var _indexJs = require("./hierarchy/index.js"); var preroot = { depth: -1 -}, ambiguous = {}; +}, ambiguous = {}, imputed = {}; function defaultId(d) { return d.id; } @@ -32092,16 +32564,29 @@ function defaultParentId(d) { return d.parentId; } exports.default = function() { - var id = defaultId, parentId = defaultParentId; + var id = defaultId, parentId = defaultParentId, path; function stratify(data) { - var nodes = Array.from(data), n = nodes.length, d, i, root, parent, node, nodeId, nodeKey, nodeByKey = new Map; - for(i = 0; i < n; ++i){ + var nodes = Array.from(data), currentId = id, currentParentId = parentId, n, d, i, root, parent, node, nodeId, nodeKey, nodeByKey = new Map; + if (path != null) { + const I = nodes.map((d, i)=>normalize(path(d, i, data))); + const P = I.map(parentof); + const S = new Set(I).add(""); + for (const i1 of P)if (!S.has(i1)) { + S.add(i1); + I.push(i1); + P.push(parentof(i1)); + nodes.push(imputed); + } + currentId = (_, i)=>I[i]; + currentParentId = (_, i)=>P[i]; + } + for(i = 0, n = nodes.length; i < n; ++i){ d = nodes[i], node = nodes[i] = new (0, _indexJs.Node)(d); - if ((nodeId = id(d, i, data)) != null && (nodeId += "")) { + if ((nodeId = currentId(d, i, data)) != null && (nodeId += "")) { nodeKey = node.id = nodeId; nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node); } - if ((nodeId = parentId(d, i, data)) != null && (nodeId += "")) node.parent = nodeId; + if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += "")) node.parent = nodeId; } for(i = 0; i < n; ++i){ node = nodes[i]; @@ -32120,6 +32605,16 @@ exports.default = function() { } } if (!root) throw new Error("no root"); + // When imputing internal nodes, only introduce roots if needed. + // Then replace the imputed marker data with null. + if (path != null) { + while(root.data === imputed && root.children.length === 1)root = root.children[0], --n; + for(let i2 = nodes.length - 1; i2 >= 0; --i2){ + node = nodes[i2]; + if (node.data !== imputed) break; + node.data = null; + } + } root.parent = preroot; root.eachBefore(function(node) { node.depth = node.parent.depth + 1; @@ -32130,13 +32625,45 @@ exports.default = function() { return root; } stratify.id = function(x) { - return arguments.length ? (id = (0, _accessorsJs.required)(x), stratify) : id; + return arguments.length ? (id = (0, _accessorsJs.optional)(x), stratify) : id; }; stratify.parentId = function(x) { - return arguments.length ? (parentId = (0, _accessorsJs.required)(x), stratify) : parentId; + return arguments.length ? (parentId = (0, _accessorsJs.optional)(x), stratify) : parentId; + }; + stratify.path = function(x) { + return arguments.length ? (path = (0, _accessorsJs.optional)(x), stratify) : path; }; return stratify; }; +// To normalize a path, we coerce to a string, strip the trailing slash if any +// (as long as the trailing slash is not immediately preceded by another slash), +// and add leading slash if missing. +function normalize(path) { + path = `${path}`; + let i = path.length; + if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1); + return path[0] === "/" ? path : `/${path}`; +} +// Walk backwards to find the first slash that is not the leading slash, e.g.: +// "/foo/bar" ⇥ "/foo", "/foo" ⇥ "/", "/" ↦ "". (The root is special-cased +// because the id of the root must be a truthy value.) +function parentof(path) { + let i = path.length; + if (i < 2) return ""; + while(--i > 1)if (slash(path, i)) break; + return path.slice(0, i); +} +// Slashes can be escaped; to determine whether a slash is a path delimiter, we +// count the number of preceding backslashes escaping the forward slash: an odd +// number indicates an escaped forward slash. +function slash(path, i) { + if (path[i] === "/") { + let k = 0; + while(i > 0 && path[--i] === "\\")++k; + if ((k & 1) === 0) return true; + } + return false; +} },{"./accessors.js":"i242w","./hierarchy/index.js":"jtgBj","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"5MDZW":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -32553,13 +33080,11 @@ exports.default = function custom(ratio) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "label", ()=>Label); +var _vegaScenegraph = require("vega-scenegraph"); var _vegaCanvas = require("vega-canvas"); var _vegaDataflow = require("vega-dataflow"); -var _vegaScenegraph = require("vega-scenegraph"); var _vegaUtil = require("vega-util"); -const ALPHA_MASK = 0xff000000; // alpha value equivalent to opacity 0.0625 -const INSIDE_OPACITY_IN_ALPHA = 0x10000000; -const INSIDE_OPACITY = 0.0625; +const ALPHA_MASK = 0xff000000; function baseBitmaps($, data) { const bitmap = $.bitmap(); // when there is no base mark but data points are to be avoided (data || []).forEach((d)=>bitmap.set($(d.boundary[0]), $(d.boundary[3]))); @@ -32568,19 +33093,25 @@ function baseBitmaps($, data) { undefined ]; } -function markBitmaps($, avoidMarks, labelInside, isGroupArea) { +function markBitmaps($, baseMark, avoidMarks, labelInside, isGroupArea) { // create canvas - const width = $.width, height = $.height, border = labelInside || isGroupArea, context = (0, _vegaCanvas.canvas)(width, height).getContext("2d"); // render all marks to be avoided into canvas - avoidMarks.forEach((items)=>draw(context, items, border)); // get canvas buffer, create bitmaps - const buffer = new Uint32Array(context.getImageData(0, 0, width, height).data.buffer), layer1 = $.bitmap(), layer2 = border && $.bitmap(); // populate bitmap layers - let x, y, u, v, alpha; + const width = $.width, height = $.height, border = labelInside || isGroupArea, context = (0, _vegaCanvas.canvas)(width, height).getContext("2d"), baseMarkContext = (0, _vegaCanvas.canvas)(width, height).getContext("2d"), strokeContext = border && (0, _vegaCanvas.canvas)(width, height).getContext("2d"); // render all marks to be avoided into canvas + avoidMarks.forEach((items)=>draw(context, items, false)); + draw(baseMarkContext, baseMark, false); + if (border) draw(strokeContext, baseMark, true); + // get canvas buffer, create bitmaps + const buffer = getBuffer(context, width, height), baseMarkBuffer = getBuffer(baseMarkContext, width, height), strokeBuffer = border && getBuffer(strokeContext, width, height), layer1 = $.bitmap(), layer2 = border && $.bitmap(); // populate bitmap layers + let x, y, u, v, index, alpha, strokeAlpha, baseMarkAlpha; for(y = 0; y < height; ++y)for(x = 0; x < width; ++x){ - alpha = buffer[y * width + x] & ALPHA_MASK; - if (alpha) { + index = y * width + x; + alpha = buffer[index] & ALPHA_MASK; + baseMarkAlpha = baseMarkBuffer[index] & ALPHA_MASK; + strokeAlpha = border && strokeBuffer[index] & ALPHA_MASK; + if (alpha || strokeAlpha || baseMarkAlpha) { u = $(x); v = $(y); - if (!isGroupArea) layer1.set(u, v); // update interior bitmap - if (border && alpha ^ INSIDE_OPACITY_IN_ALPHA) layer2.set(u, v); // update border bitmap + if (!isGroupArea && (alpha || baseMarkAlpha)) layer1.set(u, v); // update interior bitmap + if (border && (alpha || strokeAlpha)) layer2.set(u, v); // update border bitmap } } return [ @@ -32588,6 +33119,9 @@ function markBitmaps($, avoidMarks, labelInside, isGroupArea) { layer2 ]; } +function getBuffer(context, width, height) { + return new Uint32Array(context.getImageData(0, 0, width, height).data.buffer); +} function draw(context, items, interior) { if (!items.length) return; const type = items[0].mark.marktype; @@ -32604,13 +33138,12 @@ function draw(context, items, interior) { * @returns prepared item */ function prepare(source) { const item = (0, _vegaDataflow.rederive)(source, {}); - if (item.stroke) item.strokeOpacity = 1; - if (item.fill) { - item.fillOpacity = INSIDE_OPACITY; - item.stroke = "#000"; - item.strokeOpacity = 1; - item.strokeWidth = 2; - } + if (item.stroke && item.strokeOpacity !== 0 || item.fill && item.fillOpacity !== 0) return { + ...item, + strokeOpacity: 1, + stroke: "#000", + fillOpacity: 0 + }; return item; } const DIV = 5, // bit shift from x, y index to bit vector array index @@ -32938,9 +33471,10 @@ const Aligns = [ function placeMarkLabel($, bitmaps, anchors, offsets) { const width = $.width, height = $.height, bm0 = bitmaps[0], bm1 = bitmaps[1], n = offsets.length; return function(d) { + var _d$textWidth; const boundary = d.boundary, textHeight = d.datum.fontSize; // can not be placed if the mark is not visible in the graph bound if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) return false; - let textWidth = 0, dx, dy, isInside, sizeFactor, insideFactor, x1, x2, y1, y2, xc, yc, _x1, _x2, _y1, _y2; // for each anchor and offset + let textWidth = (_d$textWidth = d.textWidth) !== null && _d$textWidth !== void 0 ? _d$textWidth : 0, dx, dy, isInside, sizeFactor, insideFactor, x1, x2, y1, y2, xc, yc, _x1, _x2, _y1, _y2; // for each anchor and offset for(let i = 0; i < n; ++i){ dx = (anchors[i] & 0x3) - 1; dy = (anchors[i] >>> 0x2 & 0x3) - 1; @@ -32979,10 +33513,7 @@ function placeMarkLabel($, bitmaps, anchors, offsets) { }; } // Test if a label with the given dimensions can be added without overlap function test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) { - return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 ? bm1.getRange(_x1, _y1, _x2, _y2) || !isInMarkBound(x1, y1, x2, y2, boundary) : bm0.getRange(_x1, _y1, _x2, _y2))); -} -function isInMarkBound(x1, y1, x2, y2, boundary) { - return boundary[0] <= x1 && x2 <= boundary[2] && boundary[3] <= y1 && y2 <= boundary[5]; + return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 || bm0).getRange(_x1, _y1, _x2, _y2)); } const TOP = 0x0, MIDDLE = 0x4, BOTTOM = 0x8, LEFT = 0x0, CENTER = 0x1, RIGHT = 0x2; // Mapping from text anchor to number representation const anchorCode = { @@ -33004,16 +33535,25 @@ const placeAreaLabel = { function labelLayout(texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) { // early exit for empty data if (!texts.length) return texts; - const positions = Math.max(offset.length, anchor.length), offsets = getOffsets(offset, positions), anchors = getAnchors(anchor, positions), marktype = markType(texts[0].datum), grouptype = marktype === "group" && texts[0].datum.items[markIndex].marktype, isGroupArea = grouptype === "area", boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex), $ = scaler(size[0], size[1], padding), isNaiveGroupArea = isGroupArea && method === "naive"; // prepare text mark data for placing - const data = texts.map((d)=>({ + const positions = Math.max(offset.length, anchor.length), offsets = getOffsets(offset, positions), anchors = getAnchors(anchor, positions), marktype = markType(texts[0].datum), grouptype = marktype === "group" && texts[0].datum.items[markIndex].marktype, isGroupArea = grouptype === "area", boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex), infPadding = padding === null || padding === Infinity, isNaiveGroupArea = isGroupArea && method === "naive"; + let maxTextWidth = -1, maxTextHeight = -1; // prepare text mark data for placing + const data = texts.map((d)=>{ + const textWidth = infPadding ? (0, _vegaScenegraph.textMetrics).width(d, d.text) : undefined; + maxTextWidth = Math.max(maxTextWidth, textWidth); + maxTextHeight = Math.max(maxTextHeight, d.fontSize); + return { datum: d, opacity: 0, x: undefined, y: undefined, align: undefined, baseline: undefined, - boundary: boundary(d) - })); + boundary: boundary(d), + textWidth + }; + }); + padding = padding === null || padding === Infinity ? Math.max(maxTextWidth, maxTextHeight) + Math.max(...offset) : padding; + const $ = scaler(size[0], size[1], padding); let bitmaps; if (!isNaiveGroupArea) { // sort labels in priority order, if comparator is provided @@ -33025,11 +33565,8 @@ function labelLayout(texts, size, compare, offset, anchor, avoidMarks, avoidBase labelInside = anchors[i] === 0x5 || offsets[i] < 0; // extract data information from base mark when base mark is to be avoided // base mark is implicitly avoided if it is a group area - if (marktype && (avoidBaseMark || isGroupArea)) avoidMarks = [ - texts.map((d)=>d.datum) - ].concat(avoidMarks); - // generate bitmaps for layout calculation - bitmaps = avoidMarks.length ? markBitmaps($, avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data); + const baseMark = (marktype && avoidBaseMark || isGroupArea) && texts.map((d)=>d.datum); // generate bitmaps for layout calculation + bitmaps = avoidMarks.length || baseMark ? markBitmaps($, baseMark || [], avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data); } // generate label placement function const place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets); // place all labels data.forEach((d)=>d.opacity = +place(d)); @@ -33054,7 +33591,7 @@ function markType(item) { * Factory function for function for getting base mark boundary, depending * on mark and group type. When mark type is undefined, line or area: boundary * is the coordinate of each data point. When base mark is grouped line, - * boundary is either at the beginning or end of the line depending on the + * boundary is either at the start or end of the line depending on the * value of lineAnchor. Otherwise, use bounds of base mark. */ function markBoundary(marktype, grouptype, lineAnchor, markIndex) { const xy = (d)=>[ @@ -33114,8 +33651,9 @@ const Anchors = [ * The available options are 'top-left', 'left', 'bottom-left', 'top', * 'bottom', 'top-right', 'right', 'bottom-right', 'middle'. * @param {Array} [params.offset] - Label offsets (in pixels) from the base mark bounding box. - * This parameter is parallel to the list of anchor points. - * @param {number} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size. + * This parameter is parallel to the list of anchor points. + * @param {number | null} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size. + * If this parameter is null, a label may exceed the layout size without any boundary. * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor * position for labels. One of 'start' or 'end'. * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating @@ -33165,7 +33703,8 @@ Label.Definition = { { name: "padding", type: "number", - default: 0 + default: 0, + null: true }, { name: "lineAnchor", @@ -33215,7 +33754,7 @@ Label.Definition = { if (!(mod || pulse.changed(pulse.ADD_REM) || modp("sort"))) return; if (!_.size || _.size.length !== 2) (0, _vegaUtil.error)("Size parameter should be specified as a [width, height] array."); const as = _.as || Output; // run label layout - labelLayout(pulse.materialize(pulse.SOURCE).source, _.size, _.sort, (0, _vegaUtil.array)(_.offset || 1), (0, _vegaUtil.array)(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark === false ? false : true, _.lineAnchor || "end", _.markIndex || 0, _.padding || 0, _.method || "naive").forEach((l)=>{ + labelLayout(pulse.materialize(pulse.SOURCE).source || [], _.size, _.sort, (0, _vegaUtil.array)(_.offset == null ? 1 : _.offset), (0, _vegaUtil.array)(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark !== false, _.lineAnchor || "end", _.markIndex || 0, _.padding === undefined ? 0 : _.padding, _.method || "naive").forEach((l)=>{ // write layout results to data stream const t = l.datum; t[as[0]] = l.x; @@ -33228,7 +33767,7 @@ Label.Definition = { } }); -},{"vega-canvas":"f0yaA","vega-dataflow":"3NitK","vega-scenegraph":"jattk","vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"elv3U":[function(require,module,exports) { +},{"vega-scenegraph":"jattk","vega-canvas":"f0yaA","vega-dataflow":"3NitK","vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"elv3U":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "loess", ()=>Loess); @@ -33641,10 +34180,12 @@ class Delaunay { this.triangles = new Int32Array(3).fill(-1); this.halfedges = new Int32Array(3).fill(-1); this.triangles[0] = hull[0]; - this.triangles[1] = hull[1]; - this.triangles[2] = hull[1]; inedges[hull[0]] = 1; - if (hull.length === 2) inedges[hull[1]] = 0; + if (hull.length === 2) { + inedges[hull[1]] = 0; + this.triangles[1] = hull[1]; + this.triangles[2] = hull[1]; + } } } voronoi(bounds) { @@ -33719,7 +34260,9 @@ class Delaunay { this.renderHull(context); return buffer && buffer.value(); } - renderPoints(context, r = 2) { + renderPoints(context, r) { + if (r === undefined && (!context || typeof context.moveTo !== "function")) r = context, context = null; + r = r == undefined ? 2 : +r; const buffer = context == null ? context = new (0, _pathJsDefault.default) : undefined; const { points } = this; for(let i = 0, n = points.length; i < n; i += 2){ @@ -33791,6 +34334,7 @@ function* flatIterable(points, fx, fy, that) { },{"delaunator":"auyGo","./path.js":"60Yfe","./polygon.js":"5nsXD","./voronoi.js":"a33Bo","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"auyGo":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +var _robustPredicates = require("robust-predicates"); const EPSILON = Math.pow(2, -52); const EDGE_STACK = new Uint32Array(512); class Delaunator { @@ -33898,7 +34442,7 @@ class Delaunator { return; } // swap the order of the seed points for counter-clockwise orientation - if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) { + if ((0, _robustPredicates.orient2d)(i0x, i0y, i1x, i1y, i2x, i2y) < 0) { const i8 = i1; const x1 = i1x; const y1 = i1y; @@ -33948,7 +34492,7 @@ class Delaunator { } start = hullPrev[start]; let e = start, q; - while(q = hullNext[e], !orient(x2, y2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])){ + while(q = hullNext[e], (0, _robustPredicates.orient2d)(x2, y2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0){ e = q; if (e === start) { e = -1; @@ -33964,7 +34508,7 @@ class Delaunator { hullSize++; // walk forward through the hull, adding more triangles and flipping recursively let n1 = hullNext[e]; - while(q = hullNext[n1], orient(x2, y2, coords[2 * n1], coords[2 * n1 + 1], coords[2 * q], coords[2 * q + 1])){ + while(q = hullNext[n1], (0, _robustPredicates.orient2d)(x2, y2, coords[2 * n1], coords[2 * n1 + 1], coords[2 * q], coords[2 * q + 1]) < 0){ t = this._addTriangle(n1, i10, q, hullTri[i10], -1, hullTri[n1]); hullTri[i10] = this._legalize(t + 2); hullNext[n1] = n1; // mark as removed @@ -33972,7 +34516,7 @@ class Delaunator { n1 = q; } // walk backward from the other side, adding more triangles and flipping - if (e === start) while(q = hullPrev[e], orient(x2, y2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])){ + if (e === start) while(q = hullPrev[e], (0, _robustPredicates.orient2d)(x2, y2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0){ t = this._addTriangle(q, i10, e, -1, hullTri[e], hullTri[q]); this._legalize(t + 2); hullTri[q] = t; @@ -34092,17 +34636,6 @@ function dist(ax, ay, bx, by) { const dy = ay - by; return dx * dx + dy * dy; } -// return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check -function orientIfSure(px, py, rx, ry, qx, qy) { - const l = (ry - py) * (qx - px); - const r = (rx - px) * (qy - py); - return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0; -} -// a more robust orientation test that's stable in a given triangle (to fix robustness issues) -function orient(rx, ry, qx, qy, px, py) { - const sign = orientIfSure(px, py, rx, ry, qx, qy) || orientIfSure(rx, ry, qx, qy, px, py) || orientIfSure(qx, qy, px, py, rx, ry); - return sign < 0; -} function inCircle(ax, ay, bx, by, cx, cy, px, py) { const dx = ax - px; const dy = ay - py; @@ -34191,7 +34724,2058 @@ function defaultGetY(p) { return p[1]; } -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"60Yfe":[function(require,module,exports) { +},{"robust-predicates":"KLZHK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"KLZHK":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "orient2d", ()=>(0, _orient2DJs.orient2d)); +parcelHelpers.export(exports, "orient2dfast", ()=>(0, _orient2DJs.orient2dfast)); +parcelHelpers.export(exports, "orient3d", ()=>(0, _orient3DJs.orient3d)); +parcelHelpers.export(exports, "orient3dfast", ()=>(0, _orient3DJs.orient3dfast)); +parcelHelpers.export(exports, "incircle", ()=>(0, _incircleJs.incircle)); +parcelHelpers.export(exports, "incirclefast", ()=>(0, _incircleJs.incirclefast)); +parcelHelpers.export(exports, "insphere", ()=>(0, _insphereJs.insphere)); +parcelHelpers.export(exports, "inspherefast", ()=>(0, _insphereJs.inspherefast)); +var _orient2DJs = require("./esm/orient2d.js"); +var _orient3DJs = require("./esm/orient3d.js"); +var _incircleJs = require("./esm/incircle.js"); +var _insphereJs = require("./esm/insphere.js"); + +},{"./esm/orient2d.js":"9dV6v","./esm/orient3d.js":"60Ijp","./esm/incircle.js":"eSgV9","./esm/insphere.js":"lKwEh","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9dV6v":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "orient2d", ()=>orient2d); +parcelHelpers.export(exports, "orient2dfast", ()=>orient2dfast); +var _utilJs = require("./util.js"); +const ccwerrboundA = (3 + 16 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const ccwerrboundB = (2 + 12 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const ccwerrboundC = (9 + 64 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const B = (0, _utilJs.vec)(4); +const C1 = (0, _utilJs.vec)(8); +const C2 = (0, _utilJs.vec)(12); +const D = (0, _utilJs.vec)(16); +const u = (0, _utilJs.vec)(4); +function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) { + let acxtail, acytail, bcxtail, bcytail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const acx = ax - cx; + const bcx = bx - cx; + const acy = ay - cy; + const bcy = by - cy; + s1 = acx * bcy; + c = (0, _utilJs.splitter) * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = (0, _utilJs.splitter) * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcx; + c = (0, _utilJs.splitter) * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = (0, _utilJs.splitter) * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + B[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + B[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + B[2] = _j - (u3 - bvirt) + (_i - bvirt); + B[3] = u3; + let det = (0, _utilJs.estimate)(4, B); + let errbound = ccwerrboundB * detsum; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - acx; + acxtail = ax - (acx + bvirt) + (bvirt - cx); + bvirt = bx - bcx; + bcxtail = bx - (bcx + bvirt) + (bvirt - cx); + bvirt = ay - acy; + acytail = ay - (acy + bvirt) + (bvirt - cy); + bvirt = by - bcy; + bcytail = by - (bcy + bvirt) + (bvirt - cy); + if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) return det; + errbound = ccwerrboundC * detsum + (0, _utilJs.resulterrbound) * Math.abs(det); + det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail); + if (det >= errbound || -det >= errbound) return det; + s1 = acxtail * bcy; + c = (0, _utilJs.splitter) * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = (0, _utilJs.splitter) * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcx; + c = (0, _utilJs.splitter) * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = (0, _utilJs.splitter) * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C1len = (0, _utilJs.sum)(4, B, 4, u, C1); + s1 = acx * bcytail; + c = (0, _utilJs.splitter) * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = (0, _utilJs.splitter) * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcxtail; + c = (0, _utilJs.splitter) * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = (0, _utilJs.splitter) * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C2len = (0, _utilJs.sum)(C1len, C1, 4, u, C2); + s1 = acxtail * bcytail; + c = (0, _utilJs.splitter) * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = (0, _utilJs.splitter) * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcxtail; + c = (0, _utilJs.splitter) * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = (0, _utilJs.splitter) * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const Dlen = (0, _utilJs.sum)(C2len, C2, 4, u, D); + return D[Dlen - 1]; +} +function orient2d(ax, ay, bx, by, cx, cy) { + const detleft = (ay - cy) * (bx - cx); + const detright = (ax - cx) * (by - cy); + const det = detleft - detright; + if (detleft === 0 || detright === 0 || detleft > 0 !== detright > 0) return det; + const detsum = Math.abs(detleft + detright); + if (Math.abs(det) >= ccwerrboundA * detsum) return det; + return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum); +} +function orient2dfast(ax, ay, bx, by, cx, cy) { + return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy); +} + +},{"./util.js":"3WWl7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3WWl7":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "epsilon", ()=>epsilon); +parcelHelpers.export(exports, "splitter", ()=>splitter); +parcelHelpers.export(exports, "resulterrbound", ()=>resulterrbound); +// fast_expansion_sum_zeroelim routine from oritinal code +parcelHelpers.export(exports, "sum", ()=>sum); +parcelHelpers.export(exports, "sum_three", ()=>sum_three); +// scale_expansion_zeroelim routine from oritinal code +parcelHelpers.export(exports, "scale", ()=>scale); +parcelHelpers.export(exports, "negate", ()=>negate); +parcelHelpers.export(exports, "estimate", ()=>estimate); +parcelHelpers.export(exports, "vec", ()=>vec); +const epsilon = 1.1102230246251565e-16; +const splitter = 134217729; +const resulterrbound = (3 + 8 * epsilon) * epsilon; +function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + while(eindex < elen && findex < flen){ + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + } + } + while(eindex < elen){ + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + } + while(findex < flen){ + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + } + if (Q !== 0 || hindex === 0) h[hindex++] = Q; + return hindex; +} +function sum_three(alen, a, blen, b, clen, c, tmp, out) { + return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out); +} +function scale(elen, e, b, h) { + let Q, sum, hh, product1, product0; + let bvirt, c, ahi, alo, bhi, blo; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + let enow = e[0]; + Q = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo); + let hindex = 0; + if (hh !== 0) h[hindex++] = hh; + for(let i = 1; i < elen; i++){ + enow = e[i]; + product1 = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo); + sum = Q + product0; + bvirt = sum - Q; + hh = Q - (sum - bvirt) + (product0 - bvirt); + if (hh !== 0) h[hindex++] = hh; + Q = product1 + sum; + hh = sum - (Q - product1); + if (hh !== 0) h[hindex++] = hh; + } + if (Q !== 0 || hindex === 0) h[hindex++] = Q; + return hindex; +} +function negate(elen, e) { + for(let i = 0; i < elen; i++)e[i] = -e[i]; + return elen; +} +function estimate(elen, e) { + let Q = e[0]; + for(let i = 1; i < elen; i++)Q += e[i]; + return Q; +} +function vec(n) { + return new Float64Array(n); +} + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"60Ijp":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "orient3d", ()=>orient3d); +parcelHelpers.export(exports, "orient3dfast", ()=>orient3dfast); +var _utilJs = require("./util.js"); +const o3derrboundA = (7 + 56 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const o3derrboundB = (3 + 28 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const o3derrboundC = (26 + 288 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const bc = (0, _utilJs.vec)(4); +const ca = (0, _utilJs.vec)(4); +const ab = (0, _utilJs.vec)(4); +const at_b = (0, _utilJs.vec)(4); +const at_c = (0, _utilJs.vec)(4); +const bt_c = (0, _utilJs.vec)(4); +const bt_a = (0, _utilJs.vec)(4); +const ct_a = (0, _utilJs.vec)(4); +const ct_b = (0, _utilJs.vec)(4); +const bct = (0, _utilJs.vec)(8); +const cat = (0, _utilJs.vec)(8); +const abt = (0, _utilJs.vec)(8); +const u = (0, _utilJs.vec)(4); +const _8 = (0, _utilJs.vec)(8); +const _8b = (0, _utilJs.vec)(8); +const _16 = (0, _utilJs.vec)(8); +const _12 = (0, _utilJs.vec)(12); +let fin = (0, _utilJs.vec)(192); +let fin2 = (0, _utilJs.vec)(192); +function finadd(finlen, alen, a) { + finlen = (0, _utilJs.sum)(finlen, fin, alen, a, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; +} +function tailinit(xtail, ytail, ax, ay, bx, by, a, b) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate; + if (xtail === 0) { + if (ytail === 0) { + a[0] = 0; + b[0] = 0; + return 1; + } else { + negate = -ytail; + s1 = negate * ax; + c = (0, _utilJs.splitter) * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = (0, _utilJs.splitter) * ax; + bhi = c - (c - ax); + blo = ax - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + s1 = ytail * bx; + c = (0, _utilJs.splitter) * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = (0, _utilJs.splitter) * bx; + bhi = c - (c - bx); + blo = bx - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } + } else if (ytail === 0) { + s1 = xtail * ay; + c = (0, _utilJs.splitter) * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + negate = -xtail; + s1 = negate * by; + c = (0, _utilJs.splitter) * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } else { + s1 = xtail * ay; + c = (0, _utilJs.splitter) * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ytail * ax; + c = (0, _utilJs.splitter) * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = (0, _utilJs.splitter) * ax; + bhi = c - (c - ax); + blo = ax - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + a[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + a[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + a[2] = _j - (u3 - bvirt) + (_i - bvirt); + a[3] = u3; + s1 = ytail * bx; + c = (0, _utilJs.splitter) * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = (0, _utilJs.splitter) * bx; + bhi = c - (c - bx); + blo = bx - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = xtail * by; + c = (0, _utilJs.splitter) * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + b[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + b[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + b[2] = _j - (u3 - bvirt) + (_i - bvirt); + b[3] = u3; + return 4; + } +} +function tailadd(finlen, a, b, k, z) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3; + s1 = a * b; + c = (0, _utilJs.splitter) * a; + ahi = c - (c - a); + alo = a - ahi; + c = (0, _utilJs.splitter) * b; + bhi = c - (c - b); + blo = b - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + c = (0, _utilJs.splitter) * k; + bhi = c - (c - k); + blo = k - bhi; + _i = s0 * k; + c = (0, _utilJs.splitter) * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * k; + c = (0, _utilJs.splitter) * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + if (z !== 0) { + c = (0, _utilJs.splitter) * z; + bhi = c - (c - z); + blo = z - bhi; + _i = s0 * z; + c = (0, _utilJs.splitter) * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * z; + c = (0, _utilJs.splitter) * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + } + return finlen; +} +function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail; + let adytail, bdytail, cdytail; + let adztail, bdztail, cdztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + s1 = bdx * cdy; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = (0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.scale)(4, bc, adz, _8), _8, (0, _utilJs.scale)(4, ca, bdz, _8b), _8b, _16), _16, (0, _utilJs.scale)(4, ab, cdz, _8), _8, fin); + let det = (0, _utilJs.estimate)(finlen, fin); + let errbound = o3derrboundB * permanent; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + bvirt = az - adz; + adztail = az - (adz + bvirt) + (bvirt - dz); + bvirt = bz - bdz; + bdztail = bz - (bdz + bvirt) + (bvirt - dz); + bvirt = cz - cdz; + cdztail = cz - (cdz + bvirt) + (bvirt - dz); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0 && adztail === 0 && bdztail === 0 && cdztail === 0) return det; + errbound = o3derrboundC * permanent + (0, _utilJs.resulterrbound) * Math.abs(det); + det += adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) + bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) + cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx); + if (det >= errbound || -det >= errbound) return det; + const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c); + const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a); + const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b); + const bctlen = (0, _utilJs.sum)(bt_len, bt_c, ct_len, ct_b, bct); + finlen = finadd(finlen, (0, _utilJs.scale)(bctlen, bct, adz, _16), _16); + const catlen = (0, _utilJs.sum)(ct_len, ct_a, at_len, at_c, cat); + finlen = finadd(finlen, (0, _utilJs.scale)(catlen, cat, bdz, _16), _16); + const abtlen = (0, _utilJs.sum)(at_len, at_b, bt_len, bt_a, abt); + finlen = finadd(finlen, (0, _utilJs.scale)(abtlen, abt, cdz, _16), _16); + if (adztail !== 0) { + finlen = finadd(finlen, (0, _utilJs.scale)(4, bc, adztail, _12), _12); + finlen = finadd(finlen, (0, _utilJs.scale)(bctlen, bct, adztail, _16), _16); + } + if (bdztail !== 0) { + finlen = finadd(finlen, (0, _utilJs.scale)(4, ca, bdztail, _12), _12); + finlen = finadd(finlen, (0, _utilJs.scale)(catlen, cat, bdztail, _16), _16); + } + if (cdztail !== 0) { + finlen = finadd(finlen, (0, _utilJs.scale)(4, ab, cdztail, _12), _12); + finlen = finadd(finlen, (0, _utilJs.scale)(abtlen, abt, cdztail, _16), _16); + } + if (adxtail !== 0) { + if (bdytail !== 0) finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail); + if (cdytail !== 0) finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail); + } + if (bdxtail !== 0) { + if (cdytail !== 0) finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail); + if (adytail !== 0) finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail); + } + if (cdxtail !== 0) { + if (adytail !== 0) finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail); + if (bdytail !== 0) finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail); + } + return fin[finlen - 1]; +} +function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz); + const errbound = o3derrboundA * permanent; + if (det > errbound || -det > errbound) return det; + return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent); +} +function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + return adx * (bdy * cdz - bdz * cdy) + bdx * (cdy * adz - cdz * ady) + cdx * (ady * bdz - adz * bdy); +} + +},{"./util.js":"3WWl7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"eSgV9":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "incircle", ()=>incircle); +parcelHelpers.export(exports, "incirclefast", ()=>incirclefast); +var _utilJs = require("./util.js"); +const iccerrboundA = (10 + 96 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const iccerrboundB = (4 + 48 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const iccerrboundC = (44 + 576 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const bc = (0, _utilJs.vec)(4); +const ca = (0, _utilJs.vec)(4); +const ab = (0, _utilJs.vec)(4); +const aa = (0, _utilJs.vec)(4); +const bb = (0, _utilJs.vec)(4); +const cc = (0, _utilJs.vec)(4); +const u = (0, _utilJs.vec)(4); +const v = (0, _utilJs.vec)(4); +const axtbc = (0, _utilJs.vec)(8); +const aytbc = (0, _utilJs.vec)(8); +const bxtca = (0, _utilJs.vec)(8); +const bytca = (0, _utilJs.vec)(8); +const cxtab = (0, _utilJs.vec)(8); +const cytab = (0, _utilJs.vec)(8); +const abt = (0, _utilJs.vec)(8); +const bct = (0, _utilJs.vec)(8); +const cat = (0, _utilJs.vec)(8); +const abtt = (0, _utilJs.vec)(4); +const bctt = (0, _utilJs.vec)(4); +const catt = (0, _utilJs.vec)(4); +const _8 = (0, _utilJs.vec)(8); +const _16 = (0, _utilJs.vec)(16); +const _16b = (0, _utilJs.vec)(16); +const _16c = (0, _utilJs.vec)(16); +const _32 = (0, _utilJs.vec)(32); +const _32b = (0, _utilJs.vec)(32); +const _48 = (0, _utilJs.vec)(48); +const _64 = (0, _utilJs.vec)(64); +let fin = (0, _utilJs.vec)(1152); +let fin2 = (0, _utilJs.vec)(1152); +function finadd(finlen, a, alen) { + finlen = (0, _utilJs.sum)(finlen, fin, a, alen, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; +} +function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail; + let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen; + let abtlen, bctlen, catlen; + let abttlen, bcttlen, cattlen; + let n1, n0; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + s1 = bdx * cdy; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = (0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.scale)((0, _utilJs.scale)(4, bc, adx, _8), _8, adx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32, (0, _utilJs.sum)((0, _utilJs.scale)((0, _utilJs.scale)(4, ca, bdx, _8), _8, bdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64, (0, _utilJs.sum)((0, _utilJs.scale)((0, _utilJs.scale)(4, ab, cdx, _8), _8, cdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin); + let det = (0, _utilJs.estimate)(finlen, fin); + let errbound = iccerrboundB * permanent; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) return det; + errbound = iccerrboundC * permanent + (0, _utilJs.resulterrbound) * Math.abs(det); + det += (adx * adx + ady * ady) * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx) + ((bdx * bdx + bdy * bdy) * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) + ((cdx * cdx + cdy * cdy) * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx)); + if (det >= errbound || -det >= errbound) return det; + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = adx * adx; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = ady * ady; + c = (0, _utilJs.splitter) * ady; + ahi = c - (c - ady); + alo = ady - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + aa[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + aa[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + aa[2] = _j - (u3 - bvirt) + (_i - bvirt); + aa[3] = u3; + } + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = bdx * bdx; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = bdy * bdy; + c = (0, _utilJs.splitter) * bdy; + ahi = c - (c - bdy); + alo = bdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + bb[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + bb[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + bb[2] = _j - (u3 - bvirt) + (_i - bvirt); + bb[3] = u3; + } + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = cdx * cdx; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = cdy * cdy; + c = (0, _utilJs.splitter) * cdy; + ahi = c - (c - cdy); + alo = cdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + cc[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + cc[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + cc[2] = _j - (u3 - bvirt) + (_i - bvirt); + cc[3] = u3; + } + if (adxtail !== 0) { + axtbclen = (0, _utilJs.scale)(4, bc, adxtail, axtbc); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(axtbclen, axtbc, 2 * adx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, adxtail, _8), _8, bdy, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48); + } + if (adytail !== 0) { + aytbclen = (0, _utilJs.scale)(4, bc, adytail, aytbc); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(aytbclen, aytbc, 2 * ady, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, adytail, _8), _8, cdx, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48); + } + if (bdxtail !== 0) { + bxtcalen = (0, _utilJs.scale)(4, ca, bdxtail, bxtca); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(bxtcalen, bxtca, 2 * bdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, bdxtail, _8), _8, cdy, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48); + } + if (bdytail !== 0) { + bytcalen = (0, _utilJs.scale)(4, ca, bdytail, bytca); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(bytcalen, bytca, 2 * bdy, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, bdytail, _8), _8, adx, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48); + } + if (cdxtail !== 0) { + cxtablen = (0, _utilJs.scale)(4, ab, cdxtail, cxtab); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(cxtablen, cxtab, 2 * cdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, cdxtail, _8), _8, ady, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48); + } + if (cdytail !== 0) { + cytablen = (0, _utilJs.scale)(4, ab, cdytail, cytab); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(cytablen, cytab, 2 * cdy, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, cdytail, _8), _8, bdx, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48); + } + if (adxtail !== 0 || adytail !== 0) { + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = bdxtail * cdy; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * cdytail; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + s1 = cdxtail * -bdy; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * -bdy; + bhi = c - (c - -bdy); + blo = -bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * -bdytail; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * -bdytail; + bhi = c - (c - -bdytail); + blo = -bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + bctlen = (0, _utilJs.sum)(4, u, 4, v, bct); + s1 = bdxtail * cdytail; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdxtail * bdytail; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bctt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bctt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bctt[2] = _j - (u3 - bvirt) + (_i - bvirt); + bctt[3] = u3; + bcttlen = 4; + } else { + bct[0] = 0; + bctlen = 1; + bctt[0] = 0; + bcttlen = 1; + } + if (adxtail !== 0) { + const len = (0, _utilJs.scale)(bctlen, bct, adxtail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(axtbclen, axtbc, adxtail, _16), _16, (0, _utilJs.scale)(len, _16c, 2 * adx, _32), _32, _48), _48); + const len2 = (0, _utilJs.scale)(bcttlen, bctt, adxtail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len2, _8, 2 * adx, _16), _16, (0, _utilJs.scale)(len2, _8, adxtail, _16b), _16b, (0, _utilJs.scale)(len, _16c, adxtail, _32), _32, _32b, _64), _64); + if (bdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, adxtail, _8), _8, bdytail, _16), _16); + if (cdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, -adxtail, _8), _8, cdytail, _16), _16); + } + if (adytail !== 0) { + const len1 = (0, _utilJs.scale)(bctlen, bct, adytail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(aytbclen, aytbc, adytail, _16), _16, (0, _utilJs.scale)(len1, _16c, 2 * ady, _32), _32, _48), _48); + const len21 = (0, _utilJs.scale)(bcttlen, bctt, adytail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len21, _8, 2 * ady, _16), _16, (0, _utilJs.scale)(len21, _8, adytail, _16b), _16b, (0, _utilJs.scale)(len1, _16c, adytail, _32), _32, _32b, _64), _64); + } + } + if (bdxtail !== 0 || bdytail !== 0) { + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = cdxtail * ady; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * adytail; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -cdy; + n0 = -cdytail; + s1 = adxtail * n1; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * n0; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + catlen = (0, _utilJs.sum)(4, u, 4, v, cat); + s1 = cdxtail * adytail; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adxtail * cdytail; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + catt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + catt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + catt[2] = _j - (u3 - bvirt) + (_i - bvirt); + catt[3] = u3; + cattlen = 4; + } else { + cat[0] = 0; + catlen = 1; + catt[0] = 0; + cattlen = 1; + } + if (bdxtail !== 0) { + const len3 = (0, _utilJs.scale)(catlen, cat, bdxtail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(bxtcalen, bxtca, bdxtail, _16), _16, (0, _utilJs.scale)(len3, _16c, 2 * bdx, _32), _32, _48), _48); + const len22 = (0, _utilJs.scale)(cattlen, catt, bdxtail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len22, _8, 2 * bdx, _16), _16, (0, _utilJs.scale)(len22, _8, bdxtail, _16b), _16b, (0, _utilJs.scale)(len3, _16c, bdxtail, _32), _32, _32b, _64), _64); + if (cdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, bdxtail, _8), _8, cdytail, _16), _16); + if (adytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, -bdxtail, _8), _8, adytail, _16), _16); + } + if (bdytail !== 0) { + const len4 = (0, _utilJs.scale)(catlen, cat, bdytail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(bytcalen, bytca, bdytail, _16), _16, (0, _utilJs.scale)(len4, _16c, 2 * bdy, _32), _32, _48), _48); + const len23 = (0, _utilJs.scale)(cattlen, catt, bdytail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len23, _8, 2 * bdy, _16), _16, (0, _utilJs.scale)(len23, _8, bdytail, _16b), _16b, (0, _utilJs.scale)(len4, _16c, bdytail, _32), _32, _32b, _64), _64); + } + } + if (cdxtail !== 0 || cdytail !== 0) { + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = adxtail * bdy; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * bdytail; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -ady; + n0 = -adytail; + s1 = bdxtail * n1; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * n0; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + abtlen = (0, _utilJs.sum)(4, u, 4, v, abt); + s1 = adxtail * bdytail; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdxtail * adytail; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + abtt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + abtt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + abtt[2] = _j - (u3 - bvirt) + (_i - bvirt); + abtt[3] = u3; + abttlen = 4; + } else { + abt[0] = 0; + abtlen = 1; + abtt[0] = 0; + abttlen = 1; + } + if (cdxtail !== 0) { + const len5 = (0, _utilJs.scale)(abtlen, abt, cdxtail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(cxtablen, cxtab, cdxtail, _16), _16, (0, _utilJs.scale)(len5, _16c, 2 * cdx, _32), _32, _48), _48); + const len24 = (0, _utilJs.scale)(abttlen, abtt, cdxtail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len24, _8, 2 * cdx, _16), _16, (0, _utilJs.scale)(len24, _8, cdxtail, _16b), _16b, (0, _utilJs.scale)(len5, _16c, cdxtail, _32), _32, _32b, _64), _64); + if (adytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, cdxtail, _8), _8, adytail, _16), _16); + if (bdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, -cdxtail, _8), _8, bdytail, _16), _16); + } + if (cdytail !== 0) { + const len6 = (0, _utilJs.scale)(abtlen, abt, cdytail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(cytablen, cytab, cdytail, _16), _16, (0, _utilJs.scale)(len6, _16c, 2 * cdy, _32), _32, _48), _48); + const len25 = (0, _utilJs.scale)(abttlen, abtt, cdytail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len25, _8, 2 * cdy, _16), _16, (0, _utilJs.scale)(len25, _8, cdytail, _16b), _16b, (0, _utilJs.scale)(len6, _16c, cdytail, _32), _32, _32b, _64), _64); + } + } + return fin[finlen - 1]; +} +function incircle(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const alift = adx * adx + ady * ady; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const blift = bdx * bdx + bdy * bdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const clift = cdx * cdx + cdy * cdy; + const det = alift * (bdxcdy - cdxbdy) + blift * (cdxady - adxcdy) + clift * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift + (Math.abs(cdxady) + Math.abs(adxcdy)) * blift + (Math.abs(adxbdy) + Math.abs(bdxady)) * clift; + const errbound = iccerrboundA * permanent; + if (det > errbound || -det > errbound) return det; + return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent); +} +function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const ady = ay - dy; + const bdx = bx - dx; + const bdy = by - dy; + const cdx = cx - dx; + const cdy = cy - dy; + const abdet = adx * bdy - bdx * ady; + const bcdet = bdx * cdy - cdx * bdy; + const cadet = cdx * ady - adx * cdy; + const alift = adx * adx + ady * ady; + const blift = bdx * bdx + bdy * bdy; + const clift = cdx * cdx + cdy * cdy; + return alift * bcdet + blift * cadet + clift * abdet; +} + +},{"./util.js":"3WWl7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lKwEh":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "insphere", ()=>insphere); +parcelHelpers.export(exports, "inspherefast", ()=>inspherefast); +var _utilJs = require("./util.js"); +const isperrboundA = (16 + 224 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const isperrboundB = (5 + 72 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const isperrboundC = (71 + 1408 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const ab = (0, _utilJs.vec)(4); +const bc = (0, _utilJs.vec)(4); +const cd = (0, _utilJs.vec)(4); +const de = (0, _utilJs.vec)(4); +const ea = (0, _utilJs.vec)(4); +const ac = (0, _utilJs.vec)(4); +const bd = (0, _utilJs.vec)(4); +const ce = (0, _utilJs.vec)(4); +const da = (0, _utilJs.vec)(4); +const eb = (0, _utilJs.vec)(4); +const abc = (0, _utilJs.vec)(24); +const bcd = (0, _utilJs.vec)(24); +const cde = (0, _utilJs.vec)(24); +const dea = (0, _utilJs.vec)(24); +const eab = (0, _utilJs.vec)(24); +const abd = (0, _utilJs.vec)(24); +const bce = (0, _utilJs.vec)(24); +const cda = (0, _utilJs.vec)(24); +const deb = (0, _utilJs.vec)(24); +const eac = (0, _utilJs.vec)(24); +const adet = (0, _utilJs.vec)(1152); +const bdet = (0, _utilJs.vec)(1152); +const cdet = (0, _utilJs.vec)(1152); +const ddet = (0, _utilJs.vec)(1152); +const edet = (0, _utilJs.vec)(1152); +const abdet = (0, _utilJs.vec)(2304); +const cddet = (0, _utilJs.vec)(2304); +const cdedet = (0, _utilJs.vec)(3456); +const deter = (0, _utilJs.vec)(5760); +const _8 = (0, _utilJs.vec)(8); +const _8b = (0, _utilJs.vec)(8); +const _8c = (0, _utilJs.vec)(8); +const _16 = (0, _utilJs.vec)(16); +const _24 = (0, _utilJs.vec)(24); +const _48 = (0, _utilJs.vec)(48); +const _48b = (0, _utilJs.vec)(48); +const _96 = (0, _utilJs.vec)(96); +const _192 = (0, _utilJs.vec)(192); +const _384x = (0, _utilJs.vec)(384); +const _384y = (0, _utilJs.vec)(384); +const _384z = (0, _utilJs.vec)(384); +const _768 = (0, _utilJs.vec)(768); +function sum_three_scale(a, b, c, az, bz, cz, out) { + return (0, _utilJs.sum_three)((0, _utilJs.scale)(4, a, az, _8), _8, (0, _utilJs.scale)(4, b, bz, _8b), _8b, (0, _utilJs.scale)(4, c, cz, _8c), _8c, _16, out); +} +function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) { + const len = (0, _utilJs.sum)((0, _utilJs.sum)(alen, a, blen, b, _48), _48, (0, _utilJs.negate)((0, _utilJs.sum)(clen, c, dlen, d, _48b), _48b), _48b, _96); + return (0, _utilJs.sum_three)((0, _utilJs.scale)((0, _utilJs.scale)(len, _96, x, _192), _192, x, _384x), _384x, (0, _utilJs.scale)((0, _utilJs.scale)(len, _96, y, _192), _192, y, _384y), _384y, (0, _utilJs.scale)((0, _utilJs.scale)(len, _96, z, _192), _192, z, _384z), _384z, _768, out); +} +function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + s1 = ax * by; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ay; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + s1 = bx * cy; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * by; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cx * dy; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * cy; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + cd[2] = _j - (u3 - bvirt) + (_i - bvirt); + cd[3] = u3; + s1 = dx * ey; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * dy; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + de[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + de[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + de[2] = _j - (u3 - bvirt) + (_i - bvirt); + de[3] = u3; + s1 = ex * ay; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * ey; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ea[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ea[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ea[2] = _j - (u3 - bvirt) + (_i - bvirt); + ea[3] = u3; + s1 = ax * cy; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * ay; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ac[2] = _j - (u3 - bvirt) + (_i - bvirt); + ac[3] = u3; + s1 = bx * dy; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * by; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bd[2] = _j - (u3 - bvirt) + (_i - bvirt); + bd[3] = u3; + s1 = cx * ey; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * cy; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ce[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ce[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ce[2] = _j - (u3 - bvirt) + (_i - bvirt); + ce[3] = u3; + s1 = dx * ay; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * dy; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + da[2] = _j - (u3 - bvirt) + (_i - bvirt); + da[3] = u3; + s1 = ex * by; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ey; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + eb[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + eb[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + eb[2] = _j - (u3 - bvirt) + (_i - bvirt); + eb[3] = u3; + const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc); + const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd); + const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde); + const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea); + const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab); + const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd); + const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce); + const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda); + const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb); + const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac); + const deterlen = (0, _utilJs.sum_three)(liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet, liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet, (0, _utilJs.sum_three)(liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet, liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet, liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter); + return deter[deterlen - 1]; +} +const xdet = (0, _utilJs.vec)(96); +const ydet = (0, _utilJs.vec)(96); +const zdet = (0, _utilJs.vec)(96); +const fin = (0, _utilJs.vec)(1152); +function liftadapt(a, b, c, az, bz, cz, x, y, z, out) { + const len = sum_three_scale(a, b, c, az, bz, cz, _24); + return (0, _utilJs.sum_three)((0, _utilJs.scale)((0, _utilJs.scale)(len, _24, x, _48), _48, x, xdet), xdet, (0, _utilJs.scale)((0, _utilJs.scale)(len, _24, y, _48), _48, y, ydet), ydet, (0, _utilJs.scale)((0, _utilJs.scale)(len, _24, z, _48), _48, z, zdet), zdet, _192, out); +} +function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) { + let ab3, bc3, cd3, da3, ac3, bd3; + let aextail, bextail, cextail, dextail; + let aeytail, beytail, ceytail, deytail; + let aeztail, beztail, ceztail, deztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0; + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + s1 = aex * bey; + c = (0, _utilJs.splitter) * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = (0, _utilJs.splitter) * bey; + bhi = c - (c - bey); + blo = bey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bex * aey; + c = (0, _utilJs.splitter) * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = (0, _utilJs.splitter) * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + ab3 = _j + _i; + bvirt = ab3 - _j; + ab[2] = _j - (ab3 - bvirt) + (_i - bvirt); + ab[3] = ab3; + s1 = bex * cey; + c = (0, _utilJs.splitter) * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = (0, _utilJs.splitter) * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * bey; + c = (0, _utilJs.splitter) * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = (0, _utilJs.splitter) * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + bc3 = _j + _i; + bvirt = bc3 - _j; + bc[2] = _j - (bc3 - bvirt) + (_i - bvirt); + bc[3] = bc3; + s1 = cex * dey; + c = (0, _utilJs.splitter) * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = (0, _utilJs.splitter) * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * cey; + c = (0, _utilJs.splitter) * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = (0, _utilJs.splitter) * cey; + bhi = c - (c - cey); + blo = cey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + cd3 = _j + _i; + bvirt = cd3 - _j; + cd[2] = _j - (cd3 - bvirt) + (_i - bvirt); + cd[3] = cd3; + s1 = dex * aey; + c = (0, _utilJs.splitter) * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = (0, _utilJs.splitter) * aey; + bhi = c - (c - aey); + blo = aey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = aex * dey; + c = (0, _utilJs.splitter) * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = (0, _utilJs.splitter) * dey; + bhi = c - (c - dey); + blo = dey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + da3 = _j + _i; + bvirt = da3 - _j; + da[2] = _j - (da3 - bvirt) + (_i - bvirt); + da[3] = da3; + s1 = aex * cey; + c = (0, _utilJs.splitter) * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = (0, _utilJs.splitter) * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * aey; + c = (0, _utilJs.splitter) * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = (0, _utilJs.splitter) * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + ac3 = _j + _i; + bvirt = ac3 - _j; + ac[2] = _j - (ac3 - bvirt) + (_i - bvirt); + ac[3] = ac3; + s1 = bex * dey; + c = (0, _utilJs.splitter) * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = (0, _utilJs.splitter) * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * bey; + c = (0, _utilJs.splitter) * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = (0, _utilJs.splitter) * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + bd3 = _j + _i; + bvirt = bd3 - _j; + bd[2] = _j - (bd3 - bvirt) + (_i - bvirt); + bd[3] = bd3; + const finlen = (0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.negate)(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet, liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet, (0, _utilJs.sum)((0, _utilJs.negate)(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet, liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin); + let det = (0, _utilJs.estimate)(finlen, fin); + let errbound = isperrboundB * permanent; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - aex; + aextail = ax - (aex + bvirt) + (bvirt - ex); + bvirt = ay - aey; + aeytail = ay - (aey + bvirt) + (bvirt - ey); + bvirt = az - aez; + aeztail = az - (aez + bvirt) + (bvirt - ez); + bvirt = bx - bex; + bextail = bx - (bex + bvirt) + (bvirt - ex); + bvirt = by - bey; + beytail = by - (bey + bvirt) + (bvirt - ey); + bvirt = bz - bez; + beztail = bz - (bez + bvirt) + (bvirt - ez); + bvirt = cx - cex; + cextail = cx - (cex + bvirt) + (bvirt - ex); + bvirt = cy - cey; + ceytail = cy - (cey + bvirt) + (bvirt - ey); + bvirt = cz - cez; + ceztail = cz - (cez + bvirt) + (bvirt - ez); + bvirt = dx - dex; + dextail = dx - (dex + bvirt) + (bvirt - ex); + bvirt = dy - dey; + deytail = dy - (dey + bvirt) + (bvirt - ey); + bvirt = dz - dez; + deztail = dz - (dez + bvirt) + (bvirt - ez); + if (aextail === 0 && aeytail === 0 && aeztail === 0 && bextail === 0 && beytail === 0 && beztail === 0 && cextail === 0 && ceytail === 0 && ceztail === 0 && dextail === 0 && deytail === 0 && deztail === 0) return det; + errbound = isperrboundC * permanent + (0, _utilJs.resulterrbound) * Math.abs(det); + const abeps = aex * beytail + bey * aextail - (aey * bextail + bex * aeytail); + const bceps = bex * ceytail + cey * bextail - (bey * cextail + cex * beytail); + const cdeps = cex * deytail + dey * cextail - (cey * dextail + dex * ceytail); + const daeps = dex * aeytail + aey * dextail - (dey * aextail + aex * deytail); + const aceps = aex * ceytail + cey * aextail - (aey * cextail + cex * aeytail); + const bdeps = bex * deytail + dey * bextail - (bey * dextail + dex * beytail); + det += (bex * bex + bey * bey + bez * bez) * (cez * daeps + dez * aceps + aez * cdeps + (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) * (aez * bceps - bez * aceps + cez * abeps + (aeztail * bc3 - beztail * ac3 + ceztail * ab3)) - ((aex * aex + aey * aey + aez * aez) * (bez * cdeps - cez * bdeps + dez * bceps + (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) * (dez * abeps + aez * bdeps + bez * daeps + (deztail * ab3 + aeztail * bd3 + beztail * da3))) + 2 * ((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) + (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3) - ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) + (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3))); + if (det >= errbound || -det >= errbound) return det; + return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez); +} +function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + const aexbey = aex * bey; + const bexaey = bex * aey; + const ab = aexbey - bexaey; + const bexcey = bex * cey; + const cexbey = cex * bey; + const bc = bexcey - cexbey; + const cexdey = cex * dey; + const dexcey = dex * cey; + const cd = cexdey - dexcey; + const dexaey = dex * aey; + const aexdey = aex * dey; + const da = dexaey - aexdey; + const aexcey = aex * cey; + const cexaey = cex * aey; + const ac = aexcey - cexaey; + const bexdey = bex * dey; + const dexbey = dex * bey; + const bd = bexdey - dexbey; + const abc = aez * bc - bez * ac + cez * ab; + const bcd = bez * cd - cez * bd + dez * bc; + const cda = cez * da + dez * ac + aez * cd; + const dab = dez * ab + aez * bd + bez * da; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + const det = clift * dab - dlift * abc + (alift * bcd - blift * cda); + const aezplus = Math.abs(aez); + const bezplus = Math.abs(bez); + const cezplus = Math.abs(cez); + const dezplus = Math.abs(dez); + const aexbeyplus = Math.abs(aexbey); + const bexaeyplus = Math.abs(bexaey); + const bexceyplus = Math.abs(bexcey); + const cexbeyplus = Math.abs(cexbey); + const cexdeyplus = Math.abs(cexdey); + const dexceyplus = Math.abs(dexcey); + const dexaeyplus = Math.abs(dexaey); + const aexdeyplus = Math.abs(aexdey); + const aexceyplus = Math.abs(aexcey); + const cexaeyplus = Math.abs(cexaey); + const bexdeyplus = Math.abs(bexdey); + const dexbeyplus = Math.abs(dexbey); + const permanent = ((cexdeyplus + dexceyplus) * bezplus + (dexbeyplus + bexdeyplus) * cezplus + (bexceyplus + cexbeyplus) * dezplus) * alift + ((dexaeyplus + aexdeyplus) * cezplus + (aexceyplus + cexaeyplus) * dezplus + (cexdeyplus + dexceyplus) * aezplus) * blift + ((aexbeyplus + bexaeyplus) * dezplus + (bexdeyplus + dexbeyplus) * aezplus + (dexaeyplus + aexdeyplus) * bezplus) * clift + ((bexceyplus + cexbeyplus) * aezplus + (cexaeyplus + aexceyplus) * bezplus + (aexbeyplus + bexaeyplus) * cezplus) * dlift; + const errbound = isperrboundA * permanent; + if (det > errbound || -det > errbound) return det; + return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent); +} +function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) { + const aex = pax - pex; + const bex = pbx - pex; + const cex = pcx - pex; + const dex = pdx - pex; + const aey = pay - pey; + const bey = pby - pey; + const cey = pcy - pey; + const dey = pdy - pey; + const aez = paz - pez; + const bez = pbz - pez; + const cez = pcz - pez; + const dez = pdz - pez; + const ab = aex * bey - bex * aey; + const bc = bex * cey - cex * bey; + const cd = cex * dey - dex * cey; + const da = dex * aey - aex * dey; + const ac = aex * cey - cex * aey; + const bd = bex * dey - dex * bey; + const abc = aez * bc - bez * ac + cez * ab; + const bcd = bez * cd - cez * bd + dez * bc; + const cda = cez * da + dez * ac + aez * cd; + const dab = dez * ab + aez * bd + bez * da; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + return clift * dab - dlift * abc + (alift * bcd - blift * cda); +} + +},{"./util.js":"3WWl7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"60Yfe":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); const epsilon = 1e-6; @@ -34304,19 +36888,25 @@ class Voronoi { const dy = y2 - y1; const ex = x3 - x1; const ey = y3 - y1; - const bl = dx * dx + dy * dy; - const cl = ex * ex + ey * ey; const ab = (dx * ey - dy * ex) * 2; - if (!ab) { + if (Math.abs(ab) < 1e-9) { // degenerate case (collinear diagram) - x = (x1 + x3) / 2 - 1e8 * ey; - y = (y1 + y3) / 2 + 1e8 * ex; - } else if (Math.abs(ab) < 1e-8) { // almost equal points (degenerate triangle) - x = (x1 + x3) / 2; - y = (y1 + y3) / 2; + // the circumcenter is at the infinity, in a + // direction that is: + // 1. orthogonal to the halfedge. + let a = 1e9; + // 2. points away from the center; since the list of triangles starts + // in the center, the first point of the first triangle + // will be our reference + const r = triangles[0] * 2; + a *= Math.sign((points[r] - x1) * ey - (points[r + 1] - y1) * ex); + x = (x1 + x3) / 2 - a * ey; + y = (y1 + y3) / 2 + a * ex; } else { const d = 1 / ab; + const bl = dx * dx + dy * dy; + const cl = ex * ex + ey * ey; x = x1 + (ey * bl - dy * cl) * d; y = y1 + (dx * cl - ex * bl) * d; } @@ -34459,7 +37049,7 @@ class Voronoi { let P = null; let x0, y0, x1 = points[n - 2], y1 = points[n - 1]; let c0, c1 = this._regioncode(x1, y1); - let e0, e1; + let e0, e1 = 0; for(let j = 0; j < n; j += 2){ x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1]; c0 = c1, c1 = this._regioncode(x1, y1); @@ -34577,6 +37167,8 @@ class Voronoi { e0 = 5, x = this.xmin, y = this.ymin; break; // left } + // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are + // undefined, the conditional statement will be executed. if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) P.splice(j, 0, x, y), j += 2; } if (P.length > 4) for(let i1 = 0; i1 < P.length; i1 += 2){ @@ -35802,7 +38394,7 @@ function prevent(view, type) { function permit(view, key, type) { const rule = view._eventConfig && view._eventConfig[key]; if (rule === false || (0, _vegaUtil.isObject)(rule) && !rule[type]) { - view.warn(`Blocked ${key} ${type} event listener.`); + view.warn("Blocked ".concat(key, " ").concat(type, " event listener.")); return false; } return true; @@ -36151,7 +38743,7 @@ function lookup(view, el, clear) { } } if (el && clear) try { - el.innerHTML = ""; + el.textContent = ""; } catch (e) { el = null; view.error(e); @@ -36799,9 +39391,9 @@ function internalScaleFunctions(codegen, fnctx, visitors) { const ref = (arg)=>"_[" + (arg.type === (0, _vegaExpression.Literal) ? (0, _vegaUtil.stringValue)(ScalePrefix + arg.value) : (0, _vegaUtil.stringValue)(ScalePrefix) + "+" + codegen(arg)) + "]"; // define and return internal scale function code generators // these internal functions are called by mark encoders return { - _bandwidth: (args)=>`this.__bandwidth(${ref(args[0])})`, - _range: (args)=>`${ref(args[0])}.range()`, - _scale: (args)=>`${ref(args[0])}(${codegen(args[1])})` + _bandwidth: (args)=>"this.__bandwidth(".concat(ref(args[0]), ")"), + _range: (args)=>"".concat(ref(args[0]), ".range()"), + _scale: (args)=>"".concat(ref(args[0]), "(").concat(codegen(args[1]), ")") }; } function geoMethod(methodName, globalMethod) { @@ -36929,16 +39521,20 @@ function array(seq) { function sequence(seq) { return array(seq) || ((0, _vegaUtil.isString)(seq) ? seq : null); } -function join(seq, ...args) { +function join(seq) { + for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)args[_key - 1] = arguments[_key]; return array(seq).join(...args); } -function indexof(seq, ...args) { +function indexof(seq) { + for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++)args[_key2 - 1] = arguments[_key2]; return sequence(seq).indexOf(...args); } -function lastindexof(seq, ...args) { +function lastindexof(seq) { + for(var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++)args[_key3 - 1] = arguments[_key3]; return sequence(seq).lastIndexOf(...args); } -function slice(seq, ...args) { +function slice(seq) { + for(var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++)args[_key4 - 1] = arguments[_key4]; return sequence(seq).slice(...args); } function replace(str, pattern, repl) { @@ -37056,6 +39652,87 @@ function filter(opt) { } return p; } +/** + * Appends a new point to the lasso + * + * @param {*} lasso the lasso in pixel space + * @param {*} x the x coordinate in pixel space + * @param {*} y the y coordinate in pixel space + * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point + * @returns a new array containing the lasso with the new point + */ function lassoAppend(lasso, x, y) { + let minDist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5; + const last = lasso[lasso.length - 1]; // Add point to lasso if distance to last point exceed minDist or its the first point + if (last === undefined || Math.sqrt((last[0] - x) ** 2 + (last[1] - y) ** 2) > minDist) { + lasso.push([ + x, + y + ]); + return [ + ...lasso + ]; + } + return lasso; +} +/** + * Generates a svg path command which draws a lasso + * + * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...] + * @returns the svg path command that draws the lasso + */ function lassoPath(lasso) { + return (lasso !== null && lasso !== void 0 ? lasso : []).reduce((svg, _ref, i)=>{ + let [x, y] = _ref; + return svg += i == 0 ? "M ".concat(x, ",").concat(y, " ") : i === lasso.length - 1 ? " Z" : "L ".concat(x, ",").concat(y, " "); + }, ""); +} +/** + * Inverts the lasso from pixel space to an array of vega scenegraph tuples + * + * @param {*} data the dataset + * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...] + * @param {*} unit the unit where the lasso is defined + * + * @returns an array of vega scenegraph tuples + */ function intersectLasso(markname, pixelLasso, unit) { + const { x , y , mark } = unit; + const bb = new (0, _vegaScenegraph.Bounds)().set(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER); // Get bounding box around lasso + for (const [px, py] of pixelLasso){ + if (px < bb.x1) bb.x1 = px; + if (px > bb.x2) bb.x2 = px; + if (py < bb.y1) bb.y1 = py; + if (py > bb.y2) bb.y2 = py; + } // Translate bb against unit coordinates + bb.translate(x, y); + const intersection = intersect([ + [ + bb.x1, + bb.y1 + ], + [ + bb.x2, + bb.y2 + ] + ], markname, mark); // Check every point against the lasso + return intersection.filter((tuple)=>pointInPolygon(tuple.x, tuple.y, pixelLasso)); +} +/** + * Performs a test if a point is inside a polygon based on the idea from + * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html + * + * This method will not need the same start/end point since it wraps around the edges of the array + * + * @param {*} test a point to test against + * @param {*} polygon a polygon in the form [[x,y], [x,y], ...] + * @returns true if the point lies inside the polygon, false otherwise + */ function pointInPolygon(testx, testy, polygon) { + let intersections = 0; + for(let i = 0, j = polygon.length - 1; i < polygon.length; j = i++){ + const [prevX, prevY] = polygon[j]; + const [x, y] = polygon[i]; // count intersections + if (y > testy != prevY > testy && testx < (prevX - x) * (testy - y) / (prevY - y) + x) intersections++; + } // point is in polygon if intersection count is odd + return intersections & 1; +} const functionContext = { random () { return (0, _vegaStatistics.random)(); @@ -37088,8 +39765,11 @@ const functionContext = { return _ != null && _ === _; }, toBoolean: (0, _vegaUtil.toBoolean), - toDate: (0, _vegaUtil.toDate), - toNumber: (0, _vegaUtil.toNumber), + toDate (_) { + return (0, _vegaUtil.toDate)(_); + }, + toNumber: // suppress extra arguments + (0, _vegaUtil.toNumber), toString: (0, _vegaUtil.toString), indexof, join, @@ -37136,7 +39816,10 @@ const functionContext = { warn, info, debug, - extent: (0, _vegaUtil.extent), + extent (_) { + return (0, _vegaUtil.extent)(_); + }, + // suppress extra arguments inScope, intersect, clampRange: (0, _vegaUtil.clampRange), @@ -37157,7 +39840,10 @@ const functionContext = { zoomPow: (0, _vegaUtil.zoomPow), zoomSymlog: (0, _vegaUtil.zoomSymlog), encode, - modify + modify, + lassoAppend, + lassoPath, + intersectLasso }; const eventFunctions = [ "view", @@ -37181,7 +39867,7 @@ const codegenParams = { "item" ], fieldvar: "datum", - globalvar: (id)=>`_[${(0, _vegaUtil.stringValue)(SignalPrefix + id)}]`, + globalvar: (id)=>"_[".concat((0, _vegaUtil.stringValue)(SignalPrefix + id), "]"), functions: buildFunctions, constants: (0, _vegaExpression.constants), visitors: astVisitors @@ -37252,7 +39938,7 @@ function parser(expr, scope) { }; } -},{"vega-util":"bApja","vega-expression":"53Uxk","d3-geo":"lY61T","d3-color":"7SCp9","vega-dataflow":"3NitK","vega-scale":"bEydG","vega-scenegraph":"jattk","vega-selections":"674qo","vega-statistics":"5ncfv","vega-time":"27kpp","d3-array":"6IwJG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"53Uxk":[function(require,module,exports) { +},{"vega-util":"bApja","vega-expression":"2l1no","d3-geo":"lY61T","d3-color":"7SCp9","vega-dataflow":"3NitK","vega-scale":"bEydG","vega-scenegraph":"jattk","vega-selections":"674qo","vega-statistics":"5ncfv","vega-time":"27kpp","d3-array":"6IwJG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2l1no":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "ASTNode", ()=>ASTNode); @@ -38731,7 +41417,7 @@ function selectionVisitor(name, args, scope, params) { if (!(0, _vegaUtil.hasOwnProperty)(params, dataName)) params[dataName] = scope.getData(data).tuplesRef(); } -},{"d3-array":"lLsmU","vega-util":"bApja","vega-expression":"9KcWf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lLsmU":[function(require,module,exports) { +},{"d3-array":"lLsmU","vega-util":"bApja","vega-expression":"2l1no","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lLsmU":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "bisect", ()=>(0, _bisectJsDefault.default)); @@ -39008,2959 +41694,2916 @@ function union(...others) { } exports.default = union; -},{"internmap":"3ULAv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9KcWf":[function(require,module,exports) { +},{"internmap":"3ULAv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"k7ppL":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "ASTNode", ()=>ASTNode); -parcelHelpers.export(exports, "ArrayExpression", ()=>ArrayExpression); -parcelHelpers.export(exports, "BinaryExpression", ()=>BinaryExpression); -parcelHelpers.export(exports, "CallExpression", ()=>CallExpression); -parcelHelpers.export(exports, "ConditionalExpression", ()=>ConditionalExpression); -parcelHelpers.export(exports, "Identifier", ()=>Identifier); -parcelHelpers.export(exports, "Literal", ()=>Literal); -parcelHelpers.export(exports, "LogicalExpression", ()=>LogicalExpression); -parcelHelpers.export(exports, "MemberExpression", ()=>MemberExpression); -parcelHelpers.export(exports, "ObjectExpression", ()=>ObjectExpression); -parcelHelpers.export(exports, "Property", ()=>Property); -parcelHelpers.export(exports, "RawCode", ()=>RawCode); -parcelHelpers.export(exports, "UnaryExpression", ()=>UnaryExpression); -parcelHelpers.export(exports, "codegenExpression", ()=>codegen); -parcelHelpers.export(exports, "constants", ()=>Constants); -parcelHelpers.export(exports, "functions", ()=>Functions); -parcelHelpers.export(exports, "parseExpression", ()=>parser); +parcelHelpers.export(exports, "context", ()=>context); var _vegaUtil = require("vega-util"); -const RawCode = "RawCode"; -const Literal = "Literal"; -const Property = "Property"; -const Identifier = "Identifier"; -const ArrayExpression = "ArrayExpression"; -const BinaryExpression = "BinaryExpression"; -const CallExpression = "CallExpression"; -const ConditionalExpression = "ConditionalExpression"; -const LogicalExpression = "LogicalExpression"; -const MemberExpression = "MemberExpression"; -const ObjectExpression = "ObjectExpression"; -const UnaryExpression = "UnaryExpression"; -function ASTNode(type) { - this.type = type; +var _vegaDataflow = require("vega-dataflow"); +/** + * Parse a serialized dataflow specification. + */ function parse(spec) { + const ctx = this, operators = spec.operators || []; // parse background + if (spec.background) ctx.background = spec.background; + // parse event configuration + if (spec.eventConfig) ctx.eventConfig = spec.eventConfig; + // parse locale configuration + if (spec.locale) ctx.locale = spec.locale; + // parse operators + operators.forEach((entry)=>ctx.parseOperator(entry)); // parse operator parameters + operators.forEach((entry)=>ctx.parseOperatorParameters(entry)); // parse streams + (spec.streams || []).forEach((entry)=>ctx.parseStream(entry)); // parse updates + (spec.updates || []).forEach((entry)=>ctx.parseUpdate(entry)); + return ctx.resolve(); } -ASTNode.prototype.visit = function(visitor) { - let c, i, n; - if (visitor(this)) return 1; - for(c = children(this), i = 0, n = c.length; i < n; ++i){ - if (c[i].visit(visitor)) return 1; +const Skip = (0, _vegaUtil.toSet)([ + "rule" +]), Swap = (0, _vegaUtil.toSet)([ + "group", + "image", + "rect" +]); +function adjustSpatial(encode, marktype) { + let code = ""; + if (Skip[marktype]) return code; + if (encode.x2) { + if (encode.x) { + if (Swap[marktype]) code += "if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"; + code += "o.width=o.x2-o.x;"; + } else code += "o.x=o.x2-(o.width||0);"; } -}; -function children(node) { - switch(node.type){ - case ArrayExpression: - return node.elements; - case BinaryExpression: - case LogicalExpression: - return [ - node.left, - node.right - ]; - case CallExpression: - return [ - node.callee - ].concat(node.arguments); - case ConditionalExpression: - return [ - node.test, - node.consequent, - node.alternate - ]; - case MemberExpression: - return [ - node.object, - node.property - ]; - case ObjectExpression: - return node.properties; - case Property: - return [ - node.key, - node.value - ]; - case UnaryExpression: - return [ - node.argument - ]; - case Identifier: - case Literal: - case RawCode: - default: - return []; + if (encode.xc) code += "o.x=o.xc-(o.width||0)/2;"; + if (encode.y2) { + if (encode.y) { + if (Swap[marktype]) code += "if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"; + code += "o.height=o.y2-o.y;"; + } else code += "o.y=o.y2-(o.height||0);"; } + if (encode.yc) code += "o.y=o.yc-(o.height||0)/2;"; + return code; } -/* - The following expression parser is based on Esprima (http://esprima.org/). - Original header comment and license for Esprima is included here: - - Copyright (C) 2013 Ariya Hidayat - Copyright (C) 2013 Thaddee Tyl - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ var TokenName, source, index, length, lookahead; -var TokenBooleanLiteral = 1, TokenEOF = 2, TokenIdentifier = 3, TokenKeyword = 4, TokenNullLiteral = 5, TokenNumericLiteral = 6, TokenPunctuator = 7, TokenStringLiteral = 8, TokenRegularExpression = 9; -TokenName = {}; -TokenName[TokenBooleanLiteral] = "Boolean"; -TokenName[TokenEOF] = ""; -TokenName[TokenIdentifier] = "Identifier"; -TokenName[TokenKeyword] = "Keyword"; -TokenName[TokenNullLiteral] = "Null"; -TokenName[TokenNumericLiteral] = "Numeric"; -TokenName[TokenPunctuator] = "Punctuator"; -TokenName[TokenStringLiteral] = "String"; -TokenName[TokenRegularExpression] = "RegularExpression"; -var SyntaxArrayExpression = "ArrayExpression", SyntaxBinaryExpression = "BinaryExpression", SyntaxCallExpression = "CallExpression", SyntaxConditionalExpression = "ConditionalExpression", SyntaxIdentifier = "Identifier", SyntaxLiteral = "Literal", SyntaxLogicalExpression = "LogicalExpression", SyntaxMemberExpression = "MemberExpression", SyntaxObjectExpression = "ObjectExpression", SyntaxProperty = "Property", SyntaxUnaryExpression = "UnaryExpression"; // Error messages should be identical to V8. -var MessageUnexpectedToken = "Unexpected token %0", MessageUnexpectedNumber = "Unexpected number", MessageUnexpectedString = "Unexpected string", MessageUnexpectedIdentifier = "Unexpected identifier", MessageUnexpectedReserved = "Unexpected reserved word", MessageUnexpectedEOS = "Unexpected end of input", MessageInvalidRegExp = "Invalid regular expression", MessageUnterminatedRegExp = "Invalid regular expression: missing /", MessageStrictOctalLiteral = "Octal literals are not allowed in strict mode.", MessageStrictDuplicateProperty = "Duplicate data property in object literal not allowed in strict mode"; -var ILLEGAL = "ILLEGAL", DISABLED = "Disabled."; // See also tools/generate-unicode-regex.py. -var RegexNonAsciiIdentifierStart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), // eslint-disable-next-line no-misleading-character-class -RegexNonAsciiIdentifierPart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"); // Ensure the condition is true, otherwise throw an error. -// This is only to have a better contract semantic, i.e. another safety net -// to catch a logic error. The condition shall be fulfilled in normal case. -// Do NOT use this to enforce a certain condition on any user input. -function assert(condition, message) { - /* istanbul ignore next */ if (!condition) throw new Error("ASSERT: " + message); +function canonicalType(type) { + return (type + "").toLowerCase(); } -function isDecimalDigit(ch) { - return ch >= 0x30 && ch <= 0x39; // 0..9 +function isOperator(type) { + return canonicalType(type) === "operator"; } -function isHexDigit(ch) { - return "0123456789abcdefABCDEF".indexOf(ch) >= 0; +function isCollect(type) { + return canonicalType(type) === "collect"; } -function isOctalDigit(ch) { - return "01234567".indexOf(ch) >= 0; -} // 7.2 White Space -function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [ - 0x1680, - 0x180E, - 0x2000, - 0x2001, - 0x2002, - 0x2003, - 0x2004, - 0x2005, - 0x2006, - 0x2007, - 0x2008, - 0x2009, - 0x200A, - 0x202F, - 0x205F, - 0x3000, - 0xFEFF - ].indexOf(ch) >= 0; -} // 7.3 Line Terminators -function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; -} // 7.6 Identifier Names and Identifiers -function isIdentifierStart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)); +function expression(ctx, args, code) { + // wrap code in return statement if expression does not terminate + if (code[code.length - 1] !== ";") code = "return(" + code + ");"; + const fn = Function(...args.concat(code)); + return ctx && ctx.functions ? fn.bind(ctx.functions) : fn; +} // generate code for comparing a single field +function _compare(u, v, lt, gt) { + return "((u = ".concat(u, ") < (v = ").concat(v, ") || u == null) && v != null ? ").concat(lt, "\n : (u > v || v == null) && u != null ? ").concat(gt, "\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ").concat(lt, "\n : v !== v && u === u ? ").concat(gt, " : "); } -function isIdentifierPart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch >= 0x30 && ch <= 0x39 || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)); -} // 7.6.1.1 Keywords -const keywords = { - "if": 1, - "in": 1, - "do": 1, - "var": 1, - "for": 1, - "new": 1, - "try": 1, - "let": 1, - "this": 1, - "else": 1, - "case": 1, - "void": 1, - "with": 1, - "enum": 1, - "while": 1, - "break": 1, - "catch": 1, - "throw": 1, - "const": 1, - "yield": 1, - "class": 1, - "super": 1, - "return": 1, - "typeof": 1, - "delete": 1, - "switch": 1, - "export": 1, - "import": 1, - "public": 1, - "static": 1, - "default": 1, - "finally": 1, - "extends": 1, - "package": 1, - "private": 1, - "function": 1, - "continue": 1, - "debugger": 1, - "interface": 1, - "protected": 1, - "instanceof": 1, - "implements": 1 -}; -function skipComment() { - while(index < length){ - const ch = source.charCodeAt(index); - if (isWhiteSpace(ch) || isLineTerminator(ch)) ++index; - else break; +var expressionCodegen = { + /** + * Parse an expression used to update an operator value. + */ operator: (ctx, expr)=>expression(ctx, [ + "_" + ], expr.code), + /** + * Parse an expression provided as an operator parameter value. + */ parameter: (ctx, expr)=>expression(ctx, [ + "datum", + "_" + ], expr.code), + /** + * Parse an expression applied to an event stream. + */ event: (ctx, expr)=>expression(ctx, [ + "event" + ], expr.code), + /** + * Parse an expression used to handle an event-driven operator update. + */ handler: (ctx, expr)=>{ + const code = "var datum=event.item&&event.item.datum;return ".concat(expr.code, ";"); + return expression(ctx, [ + "_", + "event" + ], code); + }, + /** + * Parse an expression that performs visual encoding. + */ encode: (ctx, encode)=>{ + const { marktype , channels } = encode; + let code = "var o=item,datum=o.datum,m=0,$;"; + for(const name in channels){ + const o = "o[" + (0, _vegaUtil.stringValue)(name) + "]"; + code += "$=".concat(channels[name].code, ";if(").concat(o, "!==$)").concat(o, "=$,m=1;"); + } + code += adjustSpatial(channels, marktype); + code += "return m;"; + return expression(ctx, [ + "item", + "_" + ], code); + }, + /** + * Optimized code generators for access and comparison. + */ codegen: { + get (path) { + const ref = "[".concat(path.map((0, _vegaUtil.stringValue)).join("]["), "]"); + const get = Function("_", "return _".concat(ref, ";")); + get.path = ref; + return get; + }, + comparator (fields, orders) { + let t; + const map = (f, i)=>{ + const o = orders[i]; + let u, v; + if (f.path) { + u = "a".concat(f.path); + v = "b".concat(f.path); + } else { + (t = t || {})["f" + i] = f; + u = "this.f".concat(i, "(a)"); + v = "this.f".concat(i, "(b)"); + } + return _compare(u, v, -o, o); + }; + const fn = Function("a", "b", "var u, v; return " + fields.map(map).join("") + "0;"); + return t ? fn.bind(t) : fn; + } } +}; +/** + * Parse a dataflow operator. + */ function parseOperator(spec) { + const ctx = this; + if (isOperator(spec.type) || !spec.type) ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null); + else ctx.transform(spec, spec.type); } -function scanHexEscape(prefix) { - var i, len, ch, code = 0; - len = prefix === "u" ? 4 : 2; - for(i = 0; i < len; ++i)if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); - } else throwError({}, MessageUnexpectedToken, ILLEGAL); - return String.fromCharCode(code); -} -function scanUnicodeCodePointEscape() { - var ch, code, cu1, cu2; - ch = source[index]; - code = 0; // At least, one hex digit is required. - if (ch === "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - while(index < length){ - ch = source[index++]; - if (!isHexDigit(ch)) break; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); +/** + * Parse and assign operator parameters. + */ function parseOperatorParameters(spec) { + const ctx = this; + if (spec.params) { + const op = ctx.get(spec.id); + if (!op) (0, _vegaUtil.error)("Invalid operator id: " + spec.id); + ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly)); } - if (code > 0x10FFFF || ch !== "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - // UTF-16 Encoding - if (code <= 0xFFFF) return String.fromCharCode(code); - cu1 = (code - 0x10000 >> 10) + 0xD800; - cu2 = (code - 0x10000 & 1023) + 0xDC00; - return String.fromCharCode(cu1, cu2); } -function getEscapedIdentifier() { - var ch, id; - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierStart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id = ch; +/** + * Parse a set of operator parameters. + */ function parseParameters(spec, params) { + params = params || {}; + const ctx = this; + for(const key in spec){ + const value = spec[key]; + params[key] = (0, _vegaUtil.isArray)(value) ? value.map((v)=>parseParameter(v, ctx, params)) : parseParameter(value, ctx, params); } - while(index < length){ - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) break; - ++index; - id += String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierPart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id += ch; - } + return params; +} +/** + * Parse a single parameter. + */ function parseParameter(spec, ctx, params) { + if (!spec || !(0, _vegaUtil.isObject)(spec)) return spec; + for(let i = 0, n = PARSERS.length, p; i < n; ++i){ + p = PARSERS[i]; + if ((0, _vegaUtil.hasOwnProperty)(spec, p.key)) return p.parse(spec, ctx, params); } - return id; + return spec; } -function getIdentifier() { - var start, ch; - start = index++; - while(index < length){ - ch = source.charCodeAt(index); - if (ch === 0x5C) { - // Blackslash (U+005C) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); - } - if (isIdentifierPart(ch)) ++index; - else break; +/** Reference parsers. */ var PARSERS = [ + { + key: "$ref", + parse: getOperator + }, + { + key: "$key", + parse: getKey + }, + { + key: "$expr", + parse: getExpression + }, + { + key: "$field", + parse: getField + }, + { + key: "$encode", + parse: getEncode + }, + { + key: "$compare", + parse: getCompare + }, + { + key: "$context", + parse: getContext + }, + { + key: "$subflow", + parse: getSubflow + }, + { + key: "$tupleid", + parse: getTupleId } - return source.slice(start, index); +]; +/** + * Resolve an operator reference. + */ function getOperator(_, ctx) { + return ctx.get(_.$ref) || (0, _vegaUtil.error)("Operator not defined: " + _.$ref); } -function scanIdentifier() { - var start, id, type; - start = index; // Backslash (U+005C) starts an escaped character. - id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) type = TokenIdentifier; - else if (keywords.hasOwnProperty(id)) // eslint-disable-line no-prototype-builtins - type = TokenKeyword; - else if (id === "null") type = TokenNullLiteral; - else if (id === "true" || id === "false") type = TokenBooleanLiteral; - else type = TokenIdentifier; - return { - type: type, - value: id, - start: start, - end: index - }; -} // 7.7 Punctuators -function scanPunctuator() { - var start = index, code = source.charCodeAt(index), code2, ch1 = source[index], ch2, ch3, ch4; - switch(code){ - // Check for most common single-character punctuators. - case 0x2E: - case 0x28: - case 0x29: - case 0x3B: - case 0x2C: - case 0x7B: - case 0x7D: - case 0x5B: - case 0x5D: - case 0x3A: - case 0x3F: - case 0x7E: - // ~ - ++index; - return { - type: TokenPunctuator, - value: String.fromCharCode(code), - start: start, - end: index - }; - default: - code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator. - if (code2 === 0x3D) switch(code){ - case 0x2B: - case 0x2D: - case 0x2F: - case 0x3C: - case 0x3E: - case 0x5E: - case 0x7C: - case 0x25: - case 0x26: - case 0x2A: - // * - index += 2; - return { - type: TokenPunctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - start: start, - end: index - }; - case 0x21: - case 0x3D: - // = - index += 2; // !== and === - if (source.charCodeAt(index) === 0x3D) ++index; - return { - type: TokenPunctuator, - value: source.slice(start, index), - start: start, - end: index - }; - } - } // 4-character punctuator: >>>= - ch4 = source.substr(index, 4); - if (ch4 === ">>>=") { - index += 4; - return { - type: TokenPunctuator, - value: ch4, - start: start, - end: index - }; - } // 3-character punctuators: === !== >>> <<= >>= - ch3 = ch4.substr(0, 3); - if (ch3 === ">>>" || ch3 === "<<=" || ch3 === ">>=") { - index += 3; - return { - type: TokenPunctuator, - value: ch3, - start: start, - end: index - }; - } // Other 2-character punctuators: ++ -- << >> && || - ch2 = ch3.substr(0, 2); - if (ch1 === ch2[1] && "+-<>&|".indexOf(ch1) >= 0 || ch2 === "=>") { - index += 2; - return { - type: TokenPunctuator, - value: ch2, - start: start, - end: index - }; - } - if (ch2 === "//") throwError({}, MessageUnexpectedToken, ILLEGAL); - // 1-character punctuators: < > = ! + - * % & | ^ / - if ("<>=!+-*%&|^/".indexOf(ch1) >= 0) { - ++index; - return { - type: TokenPunctuator, - value: ch1, - start: start, - end: index - }; - } - throwError({}, MessageUnexpectedToken, ILLEGAL); -} // 7.8.3 Numeric Literals -function scanHexLiteral(start) { - let number = ""; - while(index < length){ - if (!isHexDigit(source[index])) break; - number += source[index++]; - } - if (number.length === 0) throwError({}, MessageUnexpectedToken, ILLEGAL); - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt("0x" + number, 16), - start: start, - end: index - }; +/** + * Resolve an expression reference. + */ function getExpression(_, ctx, params) { + if (_.$params) // parse expression parameters + ctx.parseParameters(_.$params, params); + const k = "e:" + _.$expr.code + "_" + _.$name; + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.accessor)(ctx.parameterExpression(_.$expr), _.$fields, _.$name)); } -function scanOctalLiteral(start) { - let number = "0" + source[index++]; - while(index < length){ - if (!isOctalDigit(source[index])) break; - number += source[index++]; - } - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt(number, 8), - octal: true, - start: start, - end: index - }; +/** + * Resolve a key accessor reference. + */ function getKey(_, ctx) { + const k = "k:" + _.$key + "_" + !!_.$flat; + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.key)(_.$key, _.$flat, ctx.expr.codegen)); } -function scanNumericLiteral() { - var number, start, ch; - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || ch === ".", "Numeric literal must start with a decimal digit or a decimal point"); - start = index; - number = ""; - if (ch !== ".") { - number = source[index++]; - ch = source[index]; // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === "0") { - if (ch === "x" || ch === "X") { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) return scanOctalLiteral(start); - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - } - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === ".") { - number += source[index++]; - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === "e" || ch === "E") { - number += source[index++]; - ch = source[index]; - if (ch === "+" || ch === "-") number += source[index++]; - if (isDecimalDigit(source.charCodeAt(index))) while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - else throwError({}, MessageUnexpectedToken, ILLEGAL); - } - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseFloat(number), - start: start, - end: index - }; -} // 7.8.4 String Literals -function scanStringLiteral() { - var str = "", quote, start, ch, code, octal = false; - quote = source[index]; - assert(quote === "'" || quote === '"', "String literal must starts with a quote"); - start = index; - ++index; - while(index < length){ - ch = source[index++]; - if (ch === quote) { - quote = ""; - break; - } else if (ch === "\\") { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) switch(ch){ - case "u": - case "x": - if (source[index] === "{") { - ++index; - str += scanUnicodeCodePointEscape(); - } else str += scanHexEscape(ch); - break; - case "n": - str += "\n"; - break; - case "r": - str += "\r"; - break; - case "t": - str += " "; - break; - case "b": - str += "\b"; - break; - case "f": - str += "\f"; - break; - case "v": - str += "\v"; - break; - default: - if (isOctalDigit(ch)) { - code = "01234567".indexOf(ch); // \0 is not octal escape sequence - if (code !== 0) octal = true; - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + "01234567".indexOf(source[index++]); // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ("0123".indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) code = code * 8 + "01234567".indexOf(source[index++]); - } - str += String.fromCharCode(code); - } else str += ch; - break; - } - else if (ch === "\r" && source[index] === "\n") ++index; - } else if (isLineTerminator(ch.charCodeAt(0))) break; - else str += ch; - } - if (quote !== "") throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenStringLiteral, - value: str, - octal: octal, - start: start, - end: index - }; +/** + * Resolve a field accessor reference. + */ function getField(_, ctx) { + if (!_.$field) return null; + const k = "f:" + _.$field + "_" + _.$name; + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.field)(_.$field, _.$name, ctx.expr.codegen)); } -function testRegExp(pattern, flags) { - let tmp = pattern; - if (flags.indexOf("u") >= 0) // Replace each astral symbol and every Unicode code point - // escape sequence with a single ASCII symbol to avoid throwing on - // regular expressions that are only valid in combination with the - // `/u` flag. - // Note: replacing with the ASCII symbol `x` might cause false - // negatives in unlikely scenarios. For example, `[\u{61}-b]` is a - // perfectly valid pattern that is equivalent to `[a-b]`, but it - // would be replaced by `[x-b]` which throws an error. - tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g, ($0, $1)=>{ - if (parseInt($1, 16) <= 0x10FFFF) return "x"; - throwError({}, MessageInvalidRegExp); - }).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, "x"); - // First, detect invalid regular expressions. - try { - new RegExp(tmp); - } catch (e) { - throwError({}, MessageInvalidRegExp); - } // Return a regular expression object for this pattern-flag pair, or - // `null` in case the current environment doesn't support the flags it - // uses. - try { - return new RegExp(pattern, flags); - } catch (exception) { - return null; - } +/** + * Resolve a comparator function reference. + */ function getCompare(_, ctx) { + // As of Vega 5.5.3, $tupleid sort is no longer used. + // Keep here for now for backwards compatibility. + const k = "c:" + _.$compare + "_" + _.$order, c = (0, _vegaUtil.array)(_.$compare).map((_)=>_ && _.$tupleid ? (0, _vegaDataflow.tupleid) : _); + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.compare)(c, _.$order, ctx.expr.codegen)); } -function scanRegExpBody() { - var ch, str, classMarker, terminated, body; - ch = source[index]; - assert(ch === "/", "Regular expression literal must start with a slash"); - str = source[index++]; - classMarker = false; - terminated = false; - while(index < length){ - ch = source[index++]; - str += ch; - if (ch === "\\") { - ch = source[index++]; // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - str += ch; - } else if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - else if (classMarker) { - if (ch === "]") classMarker = false; - } else { - if (ch === "/") { - terminated = true; - break; - } else if (ch === "[") classMarker = true; - } +/** + * Resolve an encode operator reference. + */ function getEncode(_, ctx) { + const spec = _.$encode, encode = {}; + for(const name in spec){ + const enc = spec[name]; + encode[name] = (0, _vegaUtil.accessor)(ctx.encodeExpression(enc.$expr), enc.$fields); + encode[name].output = enc.$output; } - if (!terminated) throwError({}, MessageUnterminatedRegExp); - // Exclude leading and trailing slash. - body = str.substr(1, str.length - 2); - return { - value: body, - literal: str - }; + return encode; } -function scanRegExpFlags() { - var ch, str, flags; - str = ""; - flags = ""; - while(index < length){ - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) break; - ++index; - if (ch === "\\" && index < length) throwError({}, MessageUnexpectedToken, ILLEGAL); - else { - flags += ch; - str += ch; - } - } - if (flags.search(/[^gimuy]/g) >= 0) throwError({}, MessageInvalidRegExp, flags); - return { - value: flags, - literal: str - }; +/** + * Resolve a context reference. + */ function getContext(_, ctx) { + return ctx; } -function scanRegExp() { - var start, body, flags, value; - lookahead = null; - skipComment(); - start = index; - body = scanRegExpBody(); - flags = scanRegExpFlags(); - value = testRegExp(body.value, flags.value); - return { - literal: body.literal + flags.literal, - value: value, - regex: { - pattern: body.value, - flags: flags.value - }, - start: start, - end: index +/** + * Resolve a recursive subflow specification. + */ function getSubflow(_, ctx) { + const spec = _.$subflow; + return function(dataflow, key, parent) { + const subctx = ctx.fork().parse(spec), op = subctx.get(spec.operators[0].id), p = subctx.signals.parent; + if (p) p.set(parent); + op.detachSubflow = ()=>ctx.detach(subctx); + return op; }; } -function isIdentifierName(token) { - return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral; +/** + * Resolve a tuple id reference. + */ function getTupleId() { + return 0, _vegaDataflow.tupleid; } -function advance() { - skipComment(); - if (index >= length) return { - type: TokenEOF, - start: index, - end: index - }; - const ch = source.charCodeAt(index); - if (isIdentifierStart(ch)) return scanIdentifier(); - // Very common: ( and ) and ; - if (ch === 0x28 || ch === 0x29 || ch === 0x3B) return scanPunctuator(); - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (ch === 0x27 || ch === 0x22) return scanStringLiteral(); - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (ch === 0x2E) { - if (isDecimalDigit(source.charCodeAt(index + 1))) return scanNumericLiteral(); - return scanPunctuator(); +/** + * Parse an event stream specification. + */ function parseStream(spec) { + var ctx = this, filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined, stream = spec.stream != null ? ctx.get(spec.stream) : undefined, args; + if (spec.source) stream = ctx.events(spec.source, spec.type, filter); + else if (spec.merge) { + args = spec.merge.map((_)=>ctx.get(_)); + stream = args[0].merge.apply(args[0], args.slice(1)); } - if (isDecimalDigit(ch)) return scanNumericLiteral(); - return scanPunctuator(); -} -function lex() { - const token = lookahead; - index = token.end; - lookahead = advance(); - index = token.end; - return token; -} -function peek() { - const pos = index; - lookahead = advance(); - index = pos; -} -function finishArrayExpression(elements) { - const node = new ASTNode(SyntaxArrayExpression); - node.elements = elements; - return node; + if (spec.between) { + args = spec.between.map((_)=>ctx.get(_)); + stream = stream.between(args[0], args[1]); + } + if (spec.filter) stream = stream.filter(filter); + if (spec.throttle != null) stream = stream.throttle(+spec.throttle); + if (spec.debounce != null) stream = stream.debounce(+spec.debounce); + if (stream == null) (0, _vegaUtil.error)("Invalid stream definition: " + JSON.stringify(spec)); + if (spec.consume) stream.consume(true); + ctx.stream(spec, stream); } -function finishBinaryExpression(operator, left, right) { - const node = new ASTNode(operator === "||" || operator === "&&" ? SyntaxLogicalExpression : SyntaxBinaryExpression); - node.operator = operator; - node.left = left; - node.right = right; - return node; +/** + * Parse an event-driven operator update. + */ function parseUpdate(spec) { + var ctx = this, srcid = (0, _vegaUtil.isObject)(srcid = spec.source) ? srcid.$ref : srcid, source = ctx.get(srcid), target = null, update = spec.update, params = undefined; + if (!source) (0, _vegaUtil.error)("Source not defined: " + spec.source); + target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target); + if (update && update.$expr) { + if (update.$params) params = ctx.parseParameters(update.$params); + update = ctx.handlerExpression(update.$expr); + } + ctx.update(spec, source, target, update, params); } -function finishCallExpression(callee, args) { - const node = new ASTNode(SyntaxCallExpression); - node.callee = callee; - node.arguments = args; - return node; +const SKIP = { + skip: true +}; +function getState(options) { + var ctx = this, state = {}; + if (options.signals) { + var signals = state.signals = {}; + Object.keys(ctx.signals).forEach((key)=>{ + const op = ctx.signals[key]; + if (options.signals(key, op)) signals[key] = op.value; + }); + } + if (options.data) { + var data = state.data = {}; + Object.keys(ctx.data).forEach((key)=>{ + const dataset = ctx.data[key]; + if (options.data(key, dataset)) data[key] = dataset.input.value; + }); + } + if (ctx.subcontext && options.recurse !== false) state.subcontext = ctx.subcontext.map((ctx)=>ctx.getState(options)); + return state; } -function finishConditionalExpression(test, consequent, alternate) { - const node = new ASTNode(SyntaxConditionalExpression); - node.test = test; - node.consequent = consequent; - node.alternate = alternate; - return node; +function setState(state) { + var ctx = this, df = ctx.dataflow, data = state.data, signals = state.signals; + Object.keys(signals || {}).forEach((key)=>{ + df.update(ctx.signals[key], signals[key], SKIP); + }); + Object.keys(data || {}).forEach((key)=>{ + df.pulse(ctx.data[key].input, df.changeset().remove((0, _vegaUtil.truthy)).insert(data[key])); + }); + (state.subcontext || []).forEach((substate, i)=>{ + const subctx = ctx.subcontext[i]; + if (subctx) subctx.setState(substate); + }); } -function finishIdentifier(name) { - const node = new ASTNode(SyntaxIdentifier); - node.name = name; - return node; +/** + * Context objects store the current parse state. + * Enables lookup of parsed operators, event streams, accessors, etc. + * Provides a 'fork' method for creating child contexts for subflows. + */ function context(df, transforms, functions, expr) { + return new Context(df, transforms, functions, expr); } -function finishLiteral(token) { - const node = new ASTNode(SyntaxLiteral); - node.value = token.value; - node.raw = source.slice(token.start, token.end); - if (token.regex) { - if (node.raw === "//") node.raw = "/(?:)/"; - node.regex = token.regex; +function Context(df, transforms, functions, expr) { + this.dataflow = df; + this.transforms = transforms; + this.events = df.events.bind(df); + this.expr = expr || expressionCodegen, this.signals = {}; + this.scales = {}; + this.nodes = {}; + this.data = {}; + this.fn = {}; + if (functions) { + this.functions = Object.create(functions); + this.functions.context = this; } - return node; -} -function finishMemberExpression(accessor, object, property) { - const node = new ASTNode(SyntaxMemberExpression); - node.computed = accessor === "["; - node.object = object; - node.property = property; - if (!node.computed) property.member = true; - return node; } -function finishObjectExpression(properties) { - const node = new ASTNode(SyntaxObjectExpression); - node.properties = properties; - return node; +function Subcontext(ctx) { + this.dataflow = ctx.dataflow; + this.transforms = ctx.transforms; + this.events = ctx.events; + this.expr = ctx.expr; + this.signals = Object.create(ctx.signals); + this.scales = Object.create(ctx.scales); + this.nodes = Object.create(ctx.nodes); + this.data = Object.create(ctx.data); + this.fn = Object.create(ctx.fn); + if (ctx.functions) { + this.functions = Object.create(ctx.functions); + this.functions.context = this; + } } -function finishProperty(kind, key, value) { - const node = new ASTNode(SyntaxProperty); - node.key = key; - node.value = value; - node.kind = kind; - return node; +Context.prototype = Subcontext.prototype = { + fork () { + const ctx = new Subcontext(this); + (this.subcontext || (this.subcontext = [])).push(ctx); + return ctx; + }, + detach (ctx) { + this.subcontext = this.subcontext.filter((c)=>c !== ctx); // disconnect all nodes in the subcontext + // wipe out targets first for better efficiency + const keys = Object.keys(ctx.nodes); + for (const key of keys)ctx.nodes[key]._targets = null; + for (const key1 of keys)ctx.nodes[key1].detach(); + ctx.nodes = null; + }, + get (id) { + return this.nodes[id]; + }, + set (id, node) { + return this.nodes[id] = node; + }, + add (spec, op) { + const ctx = this, df = ctx.dataflow, data = spec.value; + ctx.set(spec.id, op); + if (isCollect(spec.type) && data) { + if (data.$ingest) df.ingest(op, data.$ingest, data.$format); + else if (data.$request) df.preload(op, data.$request, data.$format); + else df.pulse(op, df.changeset().insert(data)); + } + if (spec.root) ctx.root = op; + if (spec.parent) { + let p = ctx.get(spec.parent.$ref); + if (p) { + df.connect(p, [ + op + ]); + op.targets().add(p); + } else (ctx.unresolved = ctx.unresolved || []).push(()=>{ + p = ctx.get(spec.parent.$ref); + df.connect(p, [ + op + ]); + op.targets().add(p); + }); + } + if (spec.signal) ctx.signals[spec.signal] = op; + if (spec.scale) ctx.scales[spec.scale] = op; + if (spec.data) for(const name in spec.data){ + const data1 = ctx.data[name] || (ctx.data[name] = {}); + spec.data[name].forEach((role)=>data1[role] = op); + } + }, + resolve () { + (this.unresolved || []).forEach((fn)=>fn()); + delete this.unresolved; + return this; + }, + operator (spec, update) { + this.add(spec, this.dataflow.add(spec.value, update)); + }, + transform (spec, type) { + this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)])); + }, + stream (spec, stream) { + this.set(spec.id, stream); + }, + update (spec, stream, target, update, params) { + this.dataflow.on(stream, target, update, params, spec.options); + }, + // expression parsing + operatorExpression (expr) { + return this.expr.operator(this, expr); + }, + parameterExpression (expr) { + return this.expr.parameter(this, expr); + }, + eventExpression (expr) { + return this.expr.event(this, expr); + }, + handlerExpression (expr) { + return this.expr.handler(this, expr); + }, + encodeExpression (encode) { + return this.expr.encode(this, encode); + }, + // parse methods + parse, + parseOperator, + parseOperatorParameters, + parseParameters, + parseStream, + parseUpdate, + // state methods + getState, + setState +}; + +},{"vega-util":"bApja","vega-dataflow":"3NitK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hsy9Z":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "AxisDomainRole", ()=>AxisDomainRole); +parcelHelpers.export(exports, "AxisGridRole", ()=>AxisGridRole); +parcelHelpers.export(exports, "AxisLabelRole", ()=>AxisLabelRole); +parcelHelpers.export(exports, "AxisRole", ()=>AxisRole); +parcelHelpers.export(exports, "AxisTickRole", ()=>AxisTickRole); +parcelHelpers.export(exports, "AxisTitleRole", ()=>AxisTitleRole); +parcelHelpers.export(exports, "DataScope", ()=>DataScope); +parcelHelpers.export(exports, "FrameRole", ()=>FrameRole); +parcelHelpers.export(exports, "LegendEntryRole", ()=>LegendEntryRole); +parcelHelpers.export(exports, "LegendLabelRole", ()=>LegendLabelRole); +parcelHelpers.export(exports, "LegendRole", ()=>LegendRole); +parcelHelpers.export(exports, "LegendSymbolRole", ()=>LegendSymbolRole); +parcelHelpers.export(exports, "LegendTitleRole", ()=>LegendTitleRole); +parcelHelpers.export(exports, "MarkRole", ()=>MarkRole); +parcelHelpers.export(exports, "Scope", ()=>Scope); +parcelHelpers.export(exports, "ScopeRole", ()=>ScopeRole); +parcelHelpers.export(exports, "config", ()=>defaults); +parcelHelpers.export(exports, "parse", ()=>parse); +parcelHelpers.export(exports, "signal", ()=>parseSignal); +parcelHelpers.export(exports, "signalUpdates", ()=>parseSignalUpdates); +parcelHelpers.export(exports, "stream", ()=>parseStream); +var _vegaUtil = require("vega-util"); +var _vegaFunctions = require("vega-functions"); +var _vegaEventSelector = require("vega-event-selector"); +var _vegaScale = require("vega-scale"); +var _vegaDataflow = require("vega-dataflow"); +function parseAutosize(spec) { + return (0, _vegaUtil.isObject)(spec) ? spec : { + type: spec || "pad" + }; } -function finishUnaryExpression(operator, argument) { - const node = new ASTNode(SyntaxUnaryExpression); - node.operator = operator; - node.argument = argument; - node.prefix = true; - return node; -} // Throw an exception -function throwError(token, messageFormat) { - var error, args = Array.prototype.slice.call(arguments, 2), msg = messageFormat.replace(/%(\d)/g, (whole, index)=>{ - assert(index < args.length, "Message reference must be in range"); - return args[index]; +const number = (_)=>+_ || 0; +const paddingObject = (_)=>({ + top: _, + bottom: _, + left: _, + right: _ }); - error = new Error(msg); - error.index = index; - error.description = msg; - throw error; -} // Throw an exception because of the token. -function throwUnexpected(token) { - if (token.type === TokenEOF) throwError(token, MessageUnexpectedEOS); - if (token.type === TokenNumericLiteral) throwError(token, MessageUnexpectedNumber); - if (token.type === TokenStringLiteral) throwError(token, MessageUnexpectedString); - if (token.type === TokenIdentifier) throwError(token, MessageUnexpectedIdentifier); - if (token.type === TokenKeyword) throwError(token, MessageUnexpectedReserved); - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, MessageUnexpectedToken, token.value); -} // Expect the next token to match the specified punctuator. -// If not, an exception will be thrown. -function expect(value) { - const token = lex(); - if (token.type !== TokenPunctuator || token.value !== value) throwUnexpected(token); -} // Return true if the next token matches the specified punctuator. -function match(value) { - return lookahead.type === TokenPunctuator && lookahead.value === value; -} // Return true if the next token matches the specified keyword -function matchKeyword(keyword) { - return lookahead.type === TokenKeyword && lookahead.value === keyword; -} // 11.1.4 Array Initialiser -function parseArrayInitialiser() { - const elements = []; - index = lookahead.start; - expect("["); - while(!match("]"))if (match(",")) { - lex(); - elements.push(null); - } else { - elements.push(parseConditionalExpression()); - if (!match("]")) expect(","); - } - lex(); - return finishArrayExpression(elements); -} // 11.1.5 Object Initialiser -function parseObjectPropertyKey() { - index = lookahead.start; - const token = lex(); // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) { - if (token.octal) throwError(token, MessageStrictOctalLiteral); - return finishLiteral(token); - } - return finishIdentifier(token.value); +function parsePadding(spec) { + return !(0, _vegaUtil.isObject)(spec) ? paddingObject(number(spec)) : spec.signal ? spec : { + top: number(spec.top), + bottom: number(spec.bottom), + left: number(spec.left), + right: number(spec.right) + }; } -function parseObjectProperty() { - var token, key, id, value; - index = lookahead.start; - token = lookahead; - if (token.type === TokenIdentifier) { - id = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", id, value); - } - if (token.type === TokenEOF || token.type === TokenPunctuator) throwUnexpected(token); - else { - key = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", key, value); - } +const encoder = (_)=>(0, _vegaUtil.isObject)(_) && !(0, _vegaUtil.isArray)(_) ? (0, _vegaUtil.extend)({}, _) : { + value: _ + }; +function addEncode(object, name, value, set) { + if (value != null) { + const isEncoder = (0, _vegaUtil.isObject)(value) && !(0, _vegaUtil.isArray)(value) || (0, _vegaUtil.isArray)(value) && value.length && (0, _vegaUtil.isObject)(value[0]); // Always assign signal to update, even if the signal is from the enter block + if (isEncoder) object.update[name] = value; + else object[set || "enter"][name] = { + value: value + }; + return 1; + } else return 0; } -function parseObjectInitialiser() { - var properties = [], property, name, key, map = {}, toString = String; - index = lookahead.start; - expect("{"); - while(!match("}")){ - property = parseObjectProperty(); - if (property.key.type === SyntaxIdentifier) name = property.key.name; - else name = toString(property.key.value); - key = "$" + name; - if (Object.prototype.hasOwnProperty.call(map, key)) throwError({}, MessageStrictDuplicateProperty); - else map[key] = true; - properties.push(property); - if (!match("}")) expect(","); +function addEncoders(object, enter, update) { + for(const name in enter)addEncode(object, name, enter[name]); + for(const name1 in update)addEncode(object, name1, update[name1], "update"); +} +function extendEncode(encode, extra, skip) { + for(const name in extra){ + if (skip && (0, _vegaUtil.hasOwnProperty)(skip, name)) continue; + encode[name] = (0, _vegaUtil.extend)(encode[name] || {}, extra[name]); } - expect("}"); - return finishObjectExpression(properties); -} // 11.1.6 The Grouping Operator -function parseGroupExpression() { - expect("("); - const expr = parseExpression(); - expect(")"); - return expr; -} // 11.1 Primary Expressions -const legalKeywords = { - "if": 1 -}; -function parsePrimaryExpression() { - var type, token, expr; - if (match("(")) return parseGroupExpression(); - if (match("[")) return parseArrayInitialiser(); - if (match("{")) return parseObjectInitialiser(); - type = lookahead.type; - index = lookahead.start; - if (type === TokenIdentifier || legalKeywords[lookahead.value]) expr = finishIdentifier(lex().value); - else if (type === TokenStringLiteral || type === TokenNumericLiteral) { - if (lookahead.octal) throwError(lookahead, MessageStrictOctalLiteral); - expr = finishLiteral(lex()); - } else if (type === TokenKeyword) throw new Error(DISABLED); - else if (type === TokenBooleanLiteral) { - token = lex(); - token.value = token.value === "true"; - expr = finishLiteral(token); - } else if (type === TokenNullLiteral) { - token = lex(); - token.value = null; - expr = finishLiteral(token); - } else if (match("/") || match("/=")) { - expr = finishLiteral(scanRegExp()); - peek(); - } else throwUnexpected(lex()); - return expr; -} // 11.2 Left-Hand-Side Expressions -function parseArguments() { - const args = []; - expect("("); - if (!match(")")) while(index < length){ - args.push(parseConditionalExpression()); - if (match(")")) break; - expect(","); + return encode; +} +function has(key, encode) { + return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]); +} +const MarkRole = "mark"; +const FrameRole = "frame"; +const ScopeRole = "scope"; +const AxisRole = "axis"; +const AxisDomainRole = "axis-domain"; +const AxisGridRole = "axis-grid"; +const AxisLabelRole = "axis-label"; +const AxisTickRole = "axis-tick"; +const AxisTitleRole = "axis-title"; +const LegendRole = "legend"; +const LegendBandRole = "legend-band"; +const LegendEntryRole = "legend-entry"; +const LegendGradientRole = "legend-gradient"; +const LegendLabelRole = "legend-label"; +const LegendSymbolRole = "legend-symbol"; +const LegendTitleRole = "legend-title"; +const TitleRole = "title"; +const TitleTextRole = "title-text"; +const TitleSubtitleRole = "title-subtitle"; +function applyDefaults(encode, type, role, style, config) { + const defaults = {}, enter = {}; + let update, key, skip, props; // if text mark, apply global lineBreak settings (#2370) + key = "lineBreak"; + if (type === "text" && config[key] != null && !has(key, encode)) applyDefault(defaults, key, config[key]); + // ignore legend and axis roles + if (role == "legend" || String(role).startsWith("axis")) role = null; + // resolve mark config + props = role === FrameRole ? config.group : role === MarkRole ? (0, _vegaUtil.extend)({}, config.mark, config[type]) : null; + for(key in props){ + // do not apply defaults if relevant fields are defined + skip = has(key, encode) || (key === "fill" || key === "stroke") && (has("fill", encode) || has("stroke", encode)); + if (!skip) applyDefault(defaults, key, props[key]); + } // resolve styles, apply with increasing precedence + (0, _vegaUtil.array)(style).forEach((name)=>{ + const props = config.style && config.style[name]; + for(const key in props)if (!has(key, encode)) applyDefault(defaults, key, props[key]); + }); + encode = (0, _vegaUtil.extend)({}, encode); // defensive copy + for(key in defaults){ + props = defaults[key]; + if (props.signal) (update = update || {})[key] = props; + else enter[key] = props; } - expect(")"); - return args; + encode.enter = (0, _vegaUtil.extend)(enter, encode.enter); + if (update) encode.update = (0, _vegaUtil.extend)(update, encode.update); + return encode; } -function parseNonComputedProperty() { - index = lookahead.start; - const token = lex(); - if (!isIdentifierName(token)) throwUnexpected(token); - return finishIdentifier(token.value); +function applyDefault(defaults, key, value) { + defaults[key] = value && value.signal ? { + signal: value.signal + } : { + value: value + }; } -function parseNonComputedMember() { - expect("."); - return parseNonComputedProperty(); +const scaleRef = (scale)=>(0, _vegaUtil.isString)(scale) ? (0, _vegaUtil.stringValue)(scale) : scale.signal ? `(${scale.signal})` : field(scale); +function entry$1(enc) { + if (enc.gradient != null) return gradient(enc); + let value = enc.signal ? `(${enc.signal})` : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? (0, _vegaUtil.stringValue)(enc.value) : undefined; + if (enc.scale != null) value = scale(enc, value); + if (value === undefined) value = null; + if (enc.exponent != null) value = `pow(${value},${property(enc.exponent)})`; + if (enc.mult != null) value += `*${property(enc.mult)}`; + if (enc.offset != null) value += `+${property(enc.offset)}`; + if (enc.round) value = `round(${value})`; + return value; } -function parseComputedMember() { - expect("["); - const expr = parseExpression(); - expect("]"); - return expr; +const _color = (type, x, y, z)=>`(${type}(${[ + x, + y, + z + ].map(entry$1).join(",")})+'')`; +function color(enc) { + return enc.c ? _color("hcl", enc.h, enc.c, enc.l) : enc.h || enc.s ? _color("hsl", enc.h, enc.s, enc.l) : enc.l || enc.a ? _color("lab", enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color("rgb", enc.r, enc.g, enc.b) : null; } -function parseLeftHandSideExpressionAllowCall() { - var expr, args, property; - expr = parsePrimaryExpression(); - for(;;){ - if (match(".")) { - property = parseNonComputedMember(); - expr = finishMemberExpression(".", expr, property); - } else if (match("(")) { - args = parseArguments(); - expr = finishCallExpression(expr, args); - } else if (match("[")) { - property = parseComputedMember(); - expr = finishMemberExpression("[", expr, property); - } else break; - } - return expr; -} // 11.3 Postfix Expressions -function parsePostfixExpression() { - const expr = parseLeftHandSideExpressionAllowCall(); - if (lookahead.type === TokenPunctuator) { - if (match("++") || match("--")) throw new Error(DISABLED); +function gradient(enc) { + // map undefined to null; expression lang does not allow undefined + const args = [ + enc.start, + enc.stop, + enc.count + ].map((_)=>_ == null ? null : (0, _vegaUtil.stringValue)(_)); // trim null inputs from the end + while(args.length && (0, _vegaUtil.peek)(args) == null)args.pop(); + args.unshift(scaleRef(enc.gradient)); + return `gradient(${args.join(",")})`; +} +function property(property) { + return (0, _vegaUtil.isObject)(property) ? "(" + entry$1(property) + ")" : property; +} +function field(ref) { + return resolveField((0, _vegaUtil.isObject)(ref) ? ref : { + datum: ref + }); +} +function resolveField(ref) { + let object, level, field; + if (ref.signal) { + object = "datum"; + field = ref.signal; + } else if (ref.group || ref.parent) { + level = Math.max(1, ref.level || 1); + object = "item"; + while(level-- > 0)object += ".mark.group"; + if (ref.parent) { + field = ref.parent; + object += ".datum"; + } else field = ref.group; + } else if (ref.datum) { + object = "datum"; + field = ref.datum; + } else (0, _vegaUtil.error)("Invalid field reference: " + (0, _vegaUtil.stringValue)(ref)); + if (!ref.signal) field = (0, _vegaUtil.isString)(field) ? (0, _vegaUtil.splitAccessPath)(field).map((0, _vegaUtil.stringValue)).join("][") : resolveField(field); + return object + "[" + field + "]"; +} +function scale(enc, value) { + const scale = scaleRef(enc.scale); + if (enc.range != null) // pull value from scale range + value = `lerp(_range(${scale}), ${+enc.range})`; + else { + // run value through scale and/or pull scale bandwidth + if (value !== undefined) value = `_scale(${scale}, ${value})`; + if (enc.band) { + value = (value ? value + "+" : "") + `_bandwidth(${scale})` + (+enc.band === 1 ? "" : "*" + property(enc.band)); + if (enc.extra) // include logic to handle extraneous elements + value = `(datum.extra ? _scale(${scale}, datum.extra.value) : ${value})`; + } + if (value == null) value = "0"; } - return expr; -} // 11.4 Unary Operators -function parseUnaryExpression() { - var token, expr; - if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) expr = parsePostfixExpression(); - else if (match("++") || match("--")) throw new Error(DISABLED); - else if (match("+") || match("-") || match("~") || match("!")) { - token = lex(); - expr = parseUnaryExpression(); - expr = finishUnaryExpression(token.value, expr); - } else if (matchKeyword("delete") || matchKeyword("void") || matchKeyword("typeof")) throw new Error(DISABLED); - else expr = parsePostfixExpression(); - return expr; + return value; } -function binaryPrecedence(token) { - let prec = 0; - if (token.type !== TokenPunctuator && token.type !== TokenKeyword) return 0; - switch(token.value){ - case "||": - prec = 1; - break; - case "&&": - prec = 2; - break; - case "|": - prec = 3; - break; - case "^": - prec = 4; - break; - case "&": - prec = 5; - break; - case "==": - case "!=": - case "===": - case "!==": - prec = 6; - break; - case "<": - case ">": - case "<=": - case ">=": - case "instanceof": - case "in": - prec = 7; - break; - case "<<": - case ">>": - case ">>>": - prec = 8; - break; - case "+": - case "-": - prec = 9; - break; - case "*": - case "/": - case "%": - prec = 11; - break; - } - return prec; -} // 11.5 Multiplicative Operators -// 11.6 Additive Operators -// 11.7 Bitwise Shift Operators -// 11.8 Relational Operators -// 11.9 Equality Operators -// 11.10 Binary Bitwise Operators -// 11.11 Binary Logical Operators -function parseBinaryExpression() { - var marker, markers, expr, token, prec, stack, right, operator, left, i; - marker = lookahead; - left = parseUnaryExpression(); - token = lookahead; - prec = binaryPrecedence(token); - if (prec === 0) return left; - token.prec = prec; - lex(); - markers = [ - marker, - lookahead - ]; - right = parseUnaryExpression(); - stack = [ - left, - token, - right - ]; - while((prec = binaryPrecedence(lookahead)) > 0){ - // Reduce: make a binary expression from the three topmost entries. - while(stack.length > 2 && prec <= stack[stack.length - 2].prec){ - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - markers.pop(); - expr = finishBinaryExpression(operator, left, right); - stack.push(expr); - } // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - markers.push(lookahead); - expr = parseUnaryExpression(); - stack.push(expr); - } // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - markers.pop(); - while(i > 1){ - markers.pop(); - expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - } - return expr; -} // 11.12 Conditional Operator -function parseConditionalExpression() { - var expr, consequent, alternate; - expr = parseBinaryExpression(); - if (match("?")) { - lex(); - consequent = parseConditionalExpression(); - expect(":"); - alternate = parseConditionalExpression(); - expr = finishConditionalExpression(expr, consequent, alternate); - } - return expr; -} // 11.14 Comma Operator -function parseExpression() { - const expr = parseConditionalExpression(); - if (match(",")) throw new Error(DISABLED); // no sequence expressions - return expr; +function rule(enc) { + let code = ""; + enc.forEach((rule)=>{ + const value = entry$1(rule); + code += rule.test ? `(${rule.test})?${value}:` : value; + }); // if no else clause, terminate with null (#1366) + if ((0, _vegaUtil.peek)(code) === ":") code += "null"; + return code; } -function parser(code) { - source = code; - index = 0; - length = source.length; - lookahead = null; - peek(); - const expr = parseExpression(); - if (lookahead.type !== TokenEOF) throw new Error("Unexpect token after expression."); - return expr; +function parseEncode(encode, type, role, style, scope, params) { + const enc = {}; + params = params || {}; + params.encoders = { + $encode: enc + }; + encode = applyDefaults(encode, type, role, style, scope.config); + for(const key in encode)enc[key] = parseBlock(encode[key], type, params, scope); + return params; } -var Constants = { - NaN: "NaN", - E: "Math.E", - LN2: "Math.LN2", - LN10: "Math.LN10", - LOG2E: "Math.LOG2E", - LOG10E: "Math.LOG10E", - PI: "Math.PI", - SQRT1_2: "Math.SQRT1_2", - SQRT2: "Math.SQRT2", - MIN_VALUE: "Number.MIN_VALUE", - MAX_VALUE: "Number.MAX_VALUE" -}; -function Functions(codegen) { - function fncall(name, args, cast, type) { - let obj = codegen(args[0]); - if (cast) { - obj = cast + "(" + obj + ")"; - if (cast.lastIndexOf("new ", 0) === 0) obj = "(" + obj + ")"; - } - return obj + "." + name + (type < 0 ? "" : type === 0 ? "()" : "(" + args.slice(1).map(codegen).join(",") + ")"); - } - function fn(name, cast, type) { - return (args)=>fncall(name, args, cast, type); - } - const DATE = "new Date", STRING = "String", REGEXP = "RegExp"; +function parseBlock(block, marktype, params, scope) { + const channels = {}, fields = {}; + for(const name in block)if (block[name] != null) // skip any null entries + channels[name] = parse$1(expr(block[name]), scope, params, fields); return { - // MATH functions - isNaN: "Number.isNaN", - isFinite: "Number.isFinite", - abs: "Math.abs", - acos: "Math.acos", - asin: "Math.asin", - atan: "Math.atan", - atan2: "Math.atan2", - ceil: "Math.ceil", - cos: "Math.cos", - exp: "Math.exp", - floor: "Math.floor", - log: "Math.log", - max: "Math.max", - min: "Math.min", - pow: "Math.pow", - random: "Math.random", - round: "Math.round", - sin: "Math.sin", - sqrt: "Math.sqrt", - tan: "Math.tan", - clamp: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to clamp function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to clamp function."); - const a = args.map(codegen); - return "Math.max(" + a[1] + ", Math.min(" + a[2] + "," + a[0] + "))"; + $expr: { + marktype, + channels }, - // DATE functions - now: "Date.now", - utc: "Date.UTC", - datetime: DATE, - date: fn("getDate", DATE, 0), - day: fn("getDay", DATE, 0), - year: fn("getFullYear", DATE, 0), - month: fn("getMonth", DATE, 0), - hours: fn("getHours", DATE, 0), - minutes: fn("getMinutes", DATE, 0), - seconds: fn("getSeconds", DATE, 0), - milliseconds: fn("getMilliseconds", DATE, 0), - time: fn("getTime", DATE, 0), - timezoneoffset: fn("getTimezoneOffset", DATE, 0), - utcdate: fn("getUTCDate", DATE, 0), - utcday: fn("getUTCDay", DATE, 0), - utcyear: fn("getUTCFullYear", DATE, 0), - utcmonth: fn("getUTCMonth", DATE, 0), - utchours: fn("getUTCHours", DATE, 0), - utcminutes: fn("getUTCMinutes", DATE, 0), - utcseconds: fn("getUTCSeconds", DATE, 0), - utcmilliseconds: fn("getUTCMilliseconds", DATE, 0), - // sequence functions - length: fn("length", null, -1), - // STRING functions - parseFloat: "parseFloat", - parseInt: "parseInt", - upper: fn("toUpperCase", STRING, 0), - lower: fn("toLowerCase", STRING, 0), - substring: fn("substring", STRING), - split: fn("split", STRING), - trim: fn("trim", STRING, 0), - // REGEXP functions - regexp: REGEXP, - test: fn("test", REGEXP), - // Control Flow functions - if: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to if function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to if function."); - const a = args.map(codegen); - return "(" + a[0] + "?" + a[1] + ":" + a[2] + ")"; - } + $fields: Object.keys(fields), + $output: Object.keys(block) }; } -function stripQuotes(s) { - const n = s && s.length - 1; - return n && (s[0] === '"' && s[n] === '"' || s[0] === "'" && s[n] === "'") ? s.slice(1, -1) : s; +function expr(enc) { + return (0, _vegaUtil.isArray)(enc) ? rule(enc) : entry$1(enc); } -function codegen(opt) { - opt = opt || {}; - const allowed = opt.allowed ? (0, _vegaUtil.toSet)(opt.allowed) : {}, forbidden = opt.forbidden ? (0, _vegaUtil.toSet)(opt.forbidden) : {}, constants = opt.constants || Constants, functions = (opt.functions || Functions)(visit), globalvar = opt.globalvar, fieldvar = opt.fieldvar, outputGlobal = (0, _vegaUtil.isFunction)(globalvar) ? globalvar : (id)=>`${globalvar}["${id}"]`; - let globals = {}, fields = {}, memberDepth = 0; - function visit(ast) { - if ((0, _vegaUtil.isString)(ast)) return ast; - const generator = Generators[ast.type]; - if (generator == null) (0, _vegaUtil.error)("Unsupported type: " + ast.type); - return generator(ast); +function parse$1(code, scope, params, fields) { + const expr = (0, _vegaFunctions.parseExpression)(code, scope); + expr.$fields.forEach((name)=>fields[name] = 1); + (0, _vegaUtil.extend)(params, expr.$params); + return expr.$expr; +} +const OUTER = "outer", OUTER_INVALID = [ + "value", + "update", + "init", + "react", + "bind" +]; +function outerError(prefix, name) { + (0, _vegaUtil.error)(prefix + ' for "outer" push: ' + (0, _vegaUtil.stringValue)(name)); +} +function parseSignal(signal, scope) { + const name = signal.name; + if (signal.push === OUTER) { + // signal must already be defined, raise error if not + if (!scope.signals[name]) outerError("No prior signal definition", name); // signal push must not use properties reserved for standard definition + OUTER_INVALID.forEach((prop)=>{ + if (signal[prop] !== undefined) outerError("Invalid property ", prop); + }); + } else { + // define a new signal in the current scope + const op = scope.addSignal(name, signal.value); + if (signal.react === false) op.react = false; + if (signal.bind) scope.addBinding(name, signal.bind); } - const Generators = { - Literal: (n)=>n.raw, - Identifier: (n)=>{ - const id = n.name; - if (memberDepth > 0) return id; - else if ((0, _vegaUtil.hasOwnProperty)(forbidden, id)) return (0, _vegaUtil.error)("Illegal identifier: " + id); - else if ((0, _vegaUtil.hasOwnProperty)(constants, id)) return constants[id]; - else if ((0, _vegaUtil.hasOwnProperty)(allowed, id)) return id; - else { - globals[id] = 1; - return outputGlobal(id); - } - }, - MemberExpression: (n)=>{ - const d = !n.computed, o = visit(n.object); - if (d) memberDepth += 1; - const p = visit(n.property); - if (o === fieldvar) // strip quotes to sanitize field name (#1653) - fields[stripQuotes(p)] = 1; - if (d) memberDepth -= 1; - return o + (d ? "." + p : "[" + p + "]"); - }, - CallExpression: (n)=>{ - if (n.callee.type !== "Identifier") (0, _vegaUtil.error)("Illegal callee type: " + n.callee.type); - const callee = n.callee.name, args = n.arguments, fn = (0, _vegaUtil.hasOwnProperty)(functions, callee) && functions[callee]; - if (!fn) (0, _vegaUtil.error)("Unrecognized function: " + callee); - return (0, _vegaUtil.isFunction)(fn) ? fn(args) : fn + "(" + args.map(visit).join(",") + ")"; - }, - ArrayExpression: (n)=>"[" + n.elements.map(visit).join(",") + "]", - BinaryExpression: (n)=>"(" + visit(n.left) + " " + n.operator + " " + visit(n.right) + ")", - UnaryExpression: (n)=>"(" + n.operator + visit(n.argument) + ")", - ConditionalExpression: (n)=>"(" + visit(n.test) + "?" + visit(n.consequent) + ":" + visit(n.alternate) + ")", - LogicalExpression: (n)=>"(" + visit(n.left) + n.operator + visit(n.right) + ")", - ObjectExpression: (n)=>"{" + n.properties.map(visit).join(",") + "}", - Property: (n)=>{ - memberDepth += 1; - const k = visit(n.key); - memberDepth -= 1; - return k + ":" + visit(n.value); - } +} +function Entry(type, value, params, parent) { + this.id = -1; + this.type = type; + this.value = value; + this.params = params; + if (parent) this.parent = parent; +} +function entry(type, value, params, parent) { + return new Entry(type, value, params, parent); +} +function operator(value, params) { + return entry("operator", value, params); +} // ----- +function ref(op) { + const ref = { + $ref: op.id + }; // if operator not yet registered, cache ref to resolve later + if (op.id < 0) (op.refs = op.refs || []).push(ref); + return ref; +} +function fieldRef$1(field, name) { + return name ? { + $field: field, + $name: name + } : { + $field: field }; - function codegen(ast) { - const result = { - code: visit(ast), - globals: Object.keys(globals), - fields: Object.keys(fields) - }; - globals = {}; - fields = {}; - return result; - } - codegen.functions = functions; - codegen.constants = constants; - return codegen; } - -},{"vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"k7ppL":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "context", ()=>context); -var _vegaUtil = require("vega-util"); -var _vegaDataflow = require("vega-dataflow"); -/** - * Parse a serialized dataflow specification. - */ function parse(spec) { - const ctx = this, operators = spec.operators || []; // parse background - if (spec.background) ctx.background = spec.background; - // parse event configuration - if (spec.eventConfig) ctx.eventConfig = spec.eventConfig; - // parse locale configuration - if (spec.locale) ctx.locale = spec.locale; - // parse operators - operators.forEach((entry)=>ctx.parseOperator(entry)); // parse operator parameters - operators.forEach((entry)=>ctx.parseOperatorParameters(entry)); // parse streams - (spec.streams || []).forEach((entry)=>ctx.parseStream(entry)); // parse updates - (spec.updates || []).forEach((entry)=>ctx.parseUpdate(entry)); - return ctx.resolve(); +const keyFieldRef = fieldRef$1("key"); +function compareRef(fields, orders) { + return { + $compare: fields, + $order: orders + }; } -const Skip = (0, _vegaUtil.toSet)([ - "rule" -]), Swap = (0, _vegaUtil.toSet)([ - "group", - "image", - "rect" -]); -function adjustSpatial(encode, marktype) { - let code = ""; - if (Skip[marktype]) return code; - if (encode.x2) { - if (encode.x) { - if (Swap[marktype]) code += "if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"; - code += "o.width=o.x2-o.x;"; - } else code += "o.x=o.x2-(o.width||0);"; - } - if (encode.xc) code += "o.x=o.xc-(o.width||0)/2;"; - if (encode.y2) { - if (encode.y) { - if (Swap[marktype]) code += "if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"; - code += "o.height=o.y2-o.y;"; - } else code += "o.y=o.y2-(o.height||0);"; +function keyRef(fields, flat) { + const ref = { + $key: fields + }; + if (flat) ref.$flat = true; + return ref; +} // ----- +const Ascending = "ascending"; +const Descending = "descending"; +function sortKey(sort) { + return !(0, _vegaUtil.isObject)(sort) ? "" : (sort.order === Descending ? "-" : "+") + aggrField(sort.op, sort.field); +} +function aggrField(op, field) { + return (op && op.signal ? "$" + op.signal : op || "") + (op && field ? "_" : "") + (field && field.signal ? "$" + field.signal : field || ""); +} // ----- +const Scope$1 = "scope"; +const View = "view"; +function isSignal(_) { + return _ && _.signal; +} +function isExpr$1(_) { + return _ && _.expr; +} +function hasSignal(_) { + if (isSignal(_)) return true; + if ((0, _vegaUtil.isObject)(_)) for(const key in _){ + if (hasSignal(_[key])) return true; } - if (encode.yc) code += "o.y=o.yc-(o.height||0)/2;"; - return code; + return false; } -function canonicalType(type) { - return (type + "").toLowerCase(); +function value(specValue, defaultValue) { + return specValue != null ? specValue : defaultValue; } -function isOperator(type) { - return canonicalType(type) === "operator"; +function deref(v) { + return v && v.signal || v; } -function isCollect(type) { - return canonicalType(type) === "collect"; +const Timer = "timer"; +function parseStream(stream, scope) { + const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : (0, _vegaUtil.error)("Invalid stream specification: " + (0, _vegaUtil.stringValue)(stream)); + return method(stream, scope); } -function expression(ctx, args, code) { - // wrap code in return statement if expression does not terminate - if (code[code.length - 1] !== ";") code = "return(" + code + ");"; - const fn = Function(...args.concat(code)); - return ctx && ctx.functions ? fn.bind(ctx.functions) : fn; -} // generate code for comparing a single field -function _compare(u, v, lt, gt) { - return "((u = ".concat(u, ") < (v = ").concat(v, ") || u == null) && v != null ? ").concat(lt, "\n : (u > v || v == null) && u != null ? ").concat(gt, "\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ").concat(lt, "\n : v !== v && u === u ? ").concat(gt, " : "); +function eventSource(source) { + return source === Scope$1 ? View : source || View; } -var expressionCodegen = { - /** - * Parse an expression used to update an operator value. - */ operator: (ctx, expr)=>expression(ctx, [ - "_" - ], expr.code), - /** - * Parse an expression provided as an operator parameter value. - */ parameter: (ctx, expr)=>expression(ctx, [ - "datum", - "_" - ], expr.code), - /** - * Parse an expression applied to an event stream. - */ event: (ctx, expr)=>expression(ctx, [ - "event" - ], expr.code), - /** - * Parse an expression used to handle an event-driven operator update. - */ handler: (ctx, expr)=>{ - const code = "var datum=event.item&&event.item.datum;return ".concat(expr.code, ";"); - return expression(ctx, [ - "_", - "event" - ], code); - }, - /** - * Parse an expression that performs visual encoding. - */ encode: (ctx, encode)=>{ - const { marktype , channels } = encode; - let code = "var o=item,datum=o.datum,m=0,$;"; - for(const name in channels){ - const o = "o[" + (0, _vegaUtil.stringValue)(name) + "]"; - code += "$=".concat(channels[name].code, ";if(").concat(o, "!==$)").concat(o, "=$,m=1;"); - } - code += adjustSpatial(channels, marktype); - code += "return m;"; - return expression(ctx, [ - "item", - "_" - ], code); - }, - /** - * Optimized code generators for access and comparison. - */ codegen: { - get (path) { - const ref = "[".concat(path.map((0, _vegaUtil.stringValue)).join("]["), "]"); - const get = Function("_", "return _".concat(ref, ";")); - get.path = ref; - return get; - }, - comparator (fields, orders) { - let t; - const map = (f, i)=>{ - const o = orders[i]; - let u, v; - if (f.path) { - u = "a".concat(f.path); - v = "b".concat(f.path); - } else { - (t = t || {})["f" + i] = f; - u = "this.f".concat(i, "(a)"); - v = "this.f".concat(i, "(b)"); - } - return _compare(u, v, -o, o); - }; - const fn = Function("a", "b", "var u, v; return " + fields.map(map).join("") + "0;"); - return t ? fn.bind(t) : fn; - } - } -}; -/** - * Parse a dataflow operator. - */ function parseOperator(spec) { - const ctx = this; - if (isOperator(spec.type) || !spec.type) ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null); - else ctx.transform(spec, spec.type); +function mergeStream(stream, scope) { + const list = stream.merge.map((s)=>parseStream(s, scope)), entry = streamParameters({ + merge: list + }, stream, scope); + return scope.addStream(entry).id; } -/** - * Parse and assign operator parameters. - */ function parseOperatorParameters(spec) { - const ctx = this; - if (spec.params) { - const op = ctx.get(spec.id); - if (!op) (0, _vegaUtil.error)("Invalid operator id: " + spec.id); - ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly)); - } +function nestedStream(stream, scope) { + const id = parseStream(stream.stream, scope), entry = streamParameters({ + stream: id + }, stream, scope); + return scope.addStream(entry).id; } -/** - * Parse a set of operator parameters. - */ function parseParameters(spec, params) { - params = params || {}; - const ctx = this; - for(const key in spec){ - const value = spec[key]; - params[key] = (0, _vegaUtil.isArray)(value) ? value.map((v)=>parseParameter(v, ctx, params)) : parseParameter(value, ctx, params); - } - return params; +function eventStream(stream, scope) { + let id; + if (stream.type === Timer) { + id = scope.event(Timer, stream.throttle); + stream = { + between: stream.between, + filter: stream.filter + }; + } else id = scope.event(eventSource(stream.source), stream.type); + const entry = streamParameters({ + stream: id + }, stream, scope); + return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id; } -/** - * Parse a single parameter. - */ function parseParameter(spec, ctx, params) { - if (!spec || !(0, _vegaUtil.isObject)(spec)) return spec; - for(let i = 0, n = PARSERS.length, p; i < n; ++i){ - p = PARSERS[i]; - if ((0, _vegaUtil.hasOwnProperty)(spec, p.key)) return p.parse(spec, ctx, params); +function streamParameters(entry, stream, scope) { + let param = stream.between; + if (param) { + if (param.length !== 2) (0, _vegaUtil.error)('Stream "between" parameter must have 2 entries: ' + (0, _vegaUtil.stringValue)(stream)); + entry.between = [ + parseStream(param[0], scope), + parseStream(param[1], scope) + ]; } - return spec; + param = stream.filter ? [].concat(stream.filter) : []; + if (stream.marktype || stream.markname || stream.markrole) // add filter for mark type, name and/or role + param.push(filterMark(stream.marktype, stream.markname, stream.markrole)); + if (stream.source === Scope$1) // add filter to limit events from sub-scope only + param.push("inScope(event.item)"); + if (param.length) entry.filter = (0, _vegaFunctions.parseExpression)("(" + param.join(")&&(") + ")", scope).$expr; + if ((param = stream.throttle) != null) entry.throttle = +param; + if ((param = stream.debounce) != null) entry.debounce = +param; + if (stream.consume) entry.consume = true; + return entry; } -/** Reference parsers. */ var PARSERS = [ - { - key: "$ref", - parse: getOperator - }, - { - key: "$key", - parse: getKey - }, - { - key: "$expr", - parse: getExpression - }, - { - key: "$field", - parse: getField - }, - { - key: "$encode", - parse: getEncode - }, - { - key: "$compare", - parse: getCompare - }, - { - key: "$context", - parse: getContext - }, - { - key: "$subflow", - parse: getSubflow - }, - { - key: "$tupleid", - parse: getTupleId +function filterMark(type, name, role) { + const item = "event.item"; + return item + (type && type !== "*" ? "&&" + item + ".mark.marktype==='" + type + "'" : "") + (role ? "&&" + item + ".mark.role==='" + role + "'" : "") + (name ? "&&" + item + ".mark.name==='" + name + "'" : ""); +} +const OP_VALUE_EXPR = { + code: "_.$value", + ast: { + type: "Identifier", + value: "value" } -]; -/** - * Resolve an operator reference. - */ function getOperator(_, ctx) { - return ctx.get(_.$ref) || (0, _vegaUtil.error)("Operator not defined: " + _.$ref); +}; +function parseUpdate(spec, scope, target) { + const encode = spec.encode, entry = { + target: target + }; + let events = spec.events, update = spec.update, sources = []; + if (!events) (0, _vegaUtil.error)("Signal update missing events specification."); + // interpret as an event selector string + if ((0, _vegaUtil.isString)(events)) events = (0, _vegaEventSelector.parseSelector)(events, scope.isSubscope() ? Scope$1 : View); + // separate event streams from signal updates + events = (0, _vegaUtil.array)(events).filter((s)=>s.signal || s.scale ? (sources.push(s), 0) : 1); // merge internal operator listeners + if (sources.length > 1) sources = [ + mergeSources(sources) + ]; + // merge event streams, include as source + if (events.length) sources.push(events.length > 1 ? { + merge: events + } : events[0]); + if (encode != null) { + if (update) (0, _vegaUtil.error)("Signal encode and update are mutually exclusive."); + update = "encode(item()," + (0, _vegaUtil.stringValue)(encode) + ")"; + } // resolve update value + entry.update = (0, _vegaUtil.isString)(update) ? (0, _vegaFunctions.parseExpression)(update, scope) : update.expr != null ? (0, _vegaFunctions.parseExpression)(update.expr, scope) : update.value != null ? update.value : update.signal != null ? { + $expr: OP_VALUE_EXPR, + $params: { + $value: scope.signalRef(update.signal) + } + } : (0, _vegaUtil.error)("Invalid signal update specification."); + if (spec.force) entry.options = { + force: true + }; + sources.forEach((source)=>scope.addUpdate((0, _vegaUtil.extend)(streamSource(source, scope), entry))); } -/** - * Resolve an expression reference. - */ function getExpression(_, ctx, params) { - if (_.$params) // parse expression parameters - ctx.parseParameters(_.$params, params); - const k = "e:" + _.$expr.code + "_" + _.$name; - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.accessor)(ctx.parameterExpression(_.$expr), _.$fields, _.$name)); +function streamSource(stream, scope) { + return { + source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope) + }; } -/** - * Resolve a key accessor reference. - */ function getKey(_, ctx) { - const k = "k:" + _.$key + "_" + !!_.$flat; - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.key)(_.$key, _.$flat, ctx.expr.codegen)); +function mergeSources(sources) { + return { + signal: "[" + sources.map((s)=>s.scale ? 'scale("' + s.scale + '")' : s.signal) + "]" + }; } -/** - * Resolve a field accessor reference. - */ function getField(_, ctx) { - if (!_.$field) return null; - const k = "f:" + _.$field + "_" + _.$name; - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.field)(_.$field, _.$name, ctx.expr.codegen)); +function parseSignalUpdates(signal, scope) { + const op = scope.getSignal(signal.name); + let expr = signal.update; + if (signal.init) { + if (expr) (0, _vegaUtil.error)("Signals can not include both init and update expressions."); + else { + expr = signal.init; + op.initonly = true; + } + } + if (expr) { + expr = (0, _vegaFunctions.parseExpression)(expr, scope); + op.update = expr.$expr; + op.params = expr.$params; + } + if (signal.on) signal.on.forEach((_)=>parseUpdate(_, scope, op.id)); } -/** - * Resolve a comparator function reference. - */ function getCompare(_, ctx) { - // As of Vega 5.5.3, $tupleid sort is no longer used. - // Keep here for now for backwards compatibility. - const k = "c:" + _.$compare + "_" + _.$order, c = (0, _vegaUtil.array)(_.$compare).map((_)=>_ && _.$tupleid ? (0, _vegaDataflow.tupleid) : _); - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.compare)(c, _.$order, ctx.expr.codegen)); +const transform = (name)=>(params, value, parent)=>entry(name, value, params || undefined, parent); +const Aggregate = transform("aggregate"); +const AxisTicks = transform("axisticks"); +const Bound = transform("bound"); +const Collect = transform("collect"); +const Compare = transform("compare"); +const DataJoin = transform("datajoin"); +const Encode = transform("encode"); +const Expression = transform("expression"); +const Facet = transform("facet"); +const Field = transform("field"); +const Key = transform("key"); +const LegendEntries = transform("legendentries"); +const Load = transform("load"); +const Mark = transform("mark"); +const MultiExtent = transform("multiextent"); +const MultiValues = transform("multivalues"); +const Overlap = transform("overlap"); +const Params = transform("params"); +const PreFacet = transform("prefacet"); +const Projection = transform("projection"); +const Proxy = transform("proxy"); +const Relay = transform("relay"); +const Render = transform("render"); +const Scale = transform("scale"); +const Sieve = transform("sieve"); +const SortItems = transform("sortitems"); +const ViewLayout = transform("viewlayout"); +const Values = transform("values"); +let FIELD_REF_ID = 0; +const MULTIDOMAIN_SORT_OPS = { + min: "min", + max: "max", + count: "sum" +}; +function initScale(spec, scope) { + const type = spec.type || "linear"; + if (!(0, _vegaScale.isValidScaleType)(type)) (0, _vegaUtil.error)("Unrecognized scale type: " + (0, _vegaUtil.stringValue)(type)); + scope.addScale(spec.name, { + type, + domain: undefined + }); } -/** - * Resolve an encode operator reference. - */ function getEncode(_, ctx) { - const spec = _.$encode, encode = {}; - for(const name in spec){ - const enc = spec[name]; - encode[name] = (0, _vegaUtil.accessor)(ctx.encodeExpression(enc.$expr), enc.$fields); - encode[name].output = enc.$output; +function parseScale(spec, scope) { + const params = scope.getScale(spec.name).params; + let key; + params.domain = parseScaleDomain(spec.domain, spec, scope); + if (spec.range != null) params.range = parseScaleRange(spec, scope, params); + if (spec.interpolate != null) parseScaleInterpolate(spec.interpolate, params); + if (spec.nice != null) params.nice = parseScaleNice(spec.nice); + if (spec.bins != null) params.bins = parseScaleBins(spec.bins, scope); + for(key in spec){ + if ((0, _vegaUtil.hasOwnProperty)(params, key) || key === "name") continue; + params[key] = parseLiteral(spec[key], scope); } - return encode; -} -/** - * Resolve a context reference. - */ function getContext(_, ctx) { - return ctx; } -/** - * Resolve a recursive subflow specification. - */ function getSubflow(_, ctx) { - const spec = _.$subflow; - return function(dataflow, key, parent) { - const subctx = ctx.fork().parse(spec), op = subctx.get(spec.operators[0].id), p = subctx.signals.parent; - if (p) p.set(parent); - op.detachSubflow = ()=>ctx.detach(subctx); - return op; - }; +function parseLiteral(v, scope) { + return !(0, _vegaUtil.isObject)(v) ? v : v.signal ? scope.signalRef(v.signal) : (0, _vegaUtil.error)("Unsupported object: " + (0, _vegaUtil.stringValue)(v)); } -/** - * Resolve a tuple id reference. - */ function getTupleId() { - return 0, _vegaDataflow.tupleid; +function parseArray(v, scope) { + return v.signal ? scope.signalRef(v.signal) : v.map((v)=>parseLiteral(v, scope)); } -/** - * Parse an event stream specification. - */ function parseStream(spec) { - var ctx = this, filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined, stream = spec.stream != null ? ctx.get(spec.stream) : undefined, args; - if (spec.source) stream = ctx.events(spec.source, spec.type, filter); - else if (spec.merge) { - args = spec.merge.map((_)=>ctx.get(_)); - stream = args[0].merge.apply(args[0], args.slice(1)); - } - if (spec.between) { - args = spec.between.map((_)=>ctx.get(_)); - stream = stream.between(args[0], args[1]); +function dataLookupError(name) { + (0, _vegaUtil.error)("Can not find data set: " + (0, _vegaUtil.stringValue)(name)); +} // -- SCALE DOMAIN ---- +function parseScaleDomain(domain, spec, scope) { + if (!domain) { + if (spec.domainMin != null || spec.domainMax != null) (0, _vegaUtil.error)("No scale domain defined for domainMin/domainMax to override."); + return; // default domain } - if (spec.filter) stream = stream.filter(filter); - if (spec.throttle != null) stream = stream.throttle(+spec.throttle); - if (spec.debounce != null) stream = stream.debounce(+spec.debounce); - if (stream == null) (0, _vegaUtil.error)("Invalid stream definition: " + JSON.stringify(spec)); - if (spec.consume) stream.consume(true); - ctx.stream(spec, stream); + return domain.signal ? scope.signalRef(domain.signal) : ((0, _vegaUtil.isArray)(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope); } -/** - * Parse an event-driven operator update. - */ function parseUpdate(spec) { - var ctx = this, srcid = (0, _vegaUtil.isObject)(srcid = spec.source) ? srcid.$ref : srcid, source = ctx.get(srcid), target = null, update = spec.update, params = undefined; - if (!source) (0, _vegaUtil.error)("Source not defined: " + spec.source); - target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target); - if (update && update.$expr) { - if (update.$params) params = ctx.parseParameters(update.$params); - update = ctx.handlerExpression(update.$expr); - } - ctx.update(spec, source, target, update, params); +function explicitDomain(domain, spec, scope) { + return domain.map((v)=>parseLiteral(v, scope)); } -const SKIP = { - skip: true -}; -function getState(options) { - var ctx = this, state = {}; - if (options.signals) { - var signals = state.signals = {}; - Object.keys(ctx.signals).forEach((key)=>{ - const op = ctx.signals[key]; - if (options.signals(key, op)) signals[key] = op.value; - }); - } - if (options.data) { - var data = state.data = {}; - Object.keys(ctx.data).forEach((key)=>{ - const dataset = ctx.data[key]; - if (options.data(key, dataset)) data[key] = dataset.input.value; - }); - } - if (ctx.subcontext && options.recurse !== false) state.subcontext = ctx.subcontext.map((ctx)=>ctx.getState(options)); - return state; +function singularDomain(domain, spec, scope) { + const data = scope.getData(domain.data); + if (!data) dataLookupError(domain.data); + return (0, _vegaScale.isDiscrete)(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : (0, _vegaScale.isQuantile)(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field); } -function setState(state) { - var ctx = this, df = ctx.dataflow, data = state.data, signals = state.signals; - Object.keys(signals || {}).forEach((key)=>{ - df.update(ctx.signals[key], signals[key], SKIP); - }); - Object.keys(data || {}).forEach((key)=>{ - df.pulse(ctx.data[key].input, df.changeset().remove((0, _vegaUtil.truthy)).insert(data[key])); - }); - (state.subcontext || []).forEach((substate, i)=>{ - const subctx = ctx.subcontext[i]; - if (subctx) subctx.setState(substate); - }); +function multipleDomain(domain, spec, scope) { + const data = domain.data, fields = domain.fields.reduce((dom, d)=>{ + d = (0, _vegaUtil.isString)(d) ? { + data: data, + field: d + } : (0, _vegaUtil.isArray)(d) || d.signal ? fieldRef(d, scope) : d; + dom.push(d); + return dom; + }, []); + return ((0, _vegaScale.isDiscrete)(spec.type) ? ordinalMultipleDomain : (0, _vegaScale.isQuantile)(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields); } -/** - * Context objects store the current parse state. - * Enables lookup of parsed operators, event streams, accessors, etc. - * Provides a 'fork' method for creating child contexts for subflows. - */ function context(df, transforms, functions, expr) { - return new Context(df, transforms, functions, expr); +function fieldRef(data, scope) { + const name = "_:vega:_" + FIELD_REF_ID++, coll = Collect({}); + if ((0, _vegaUtil.isArray)(data)) coll.value = { + $ingest: data + }; + else if (data.signal) { + const code = "setdata(" + (0, _vegaUtil.stringValue)(name) + "," + data.signal + ")"; + coll.params.input = scope.signalRef(code); + } + scope.addDataPipeline(name, [ + coll, + Sieve({}) + ]); + return { + data: name, + field: "data" + }; } -function Context(df, transforms, functions, expr) { - this.dataflow = df; - this.transforms = transforms; - this.events = df.events.bind(df); - this.expr = expr || expressionCodegen, this.signals = {}; - this.scales = {}; - this.nodes = {}; - this.data = {}; - this.fn = {}; - if (functions) { - this.functions = Object.create(functions); - this.functions.context = this; +function ordinalMultipleDomain(domain, scope, fields) { + const sort = parseSort(domain.sort, true); + let a, v; // get value counts for each domain field + const counts = fields.map((f)=>{ + const data = scope.getData(f.data); + if (!data) dataLookupError(f.data); + return data.countsRef(scope, f.field, sort); + }); // aggregate the results from each domain field + const p = { + groupby: keyFieldRef, + pulse: counts + }; + if (sort) { + a = sort.op || "count"; + v = sort.field ? aggrField(a, sort.field) : "count"; + p.ops = [ + MULTIDOMAIN_SORT_OPS[a] + ]; + p.fields = [ + scope.fieldRef(v) + ]; + p.as = [ + v + ]; } + a = scope.add(Aggregate(p)); // collect aggregate output + const c = scope.add(Collect({ + pulse: ref(a) + })); // extract values for combined domain + v = scope.add(Values({ + field: keyFieldRef, + sort: scope.sortRef(sort), + pulse: ref(c) + })); + return ref(v); } -function Subcontext(ctx) { - this.dataflow = ctx.dataflow; - this.transforms = ctx.transforms; - this.events = ctx.events; - this.expr = ctx.expr; - this.signals = Object.create(ctx.signals); - this.scales = Object.create(ctx.scales); - this.nodes = Object.create(ctx.nodes); - this.data = Object.create(ctx.data); - this.fn = Object.create(ctx.fn); - if (ctx.functions) { - this.functions = Object.create(ctx.functions); - this.functions.context = this; +function parseSort(sort, multidomain) { + if (sort) { + if (!sort.field && !sort.op) { + if ((0, _vegaUtil.isObject)(sort)) sort.field = "key"; + else sort = { + field: "key" + }; + } else if (!sort.field && sort.op !== "count") (0, _vegaUtil.error)("No field provided for sort aggregate op: " + sort.op); + else if (multidomain && sort.field) { + if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) (0, _vegaUtil.error)("Multiple domain scales can not be sorted using " + sort.op); + } } + return sort; } -Context.prototype = Subcontext.prototype = { - fork () { - const ctx = new Subcontext(this); - (this.subcontext || (this.subcontext = [])).push(ctx); - return ctx; - }, - detach (ctx) { - this.subcontext = this.subcontext.filter((c)=>c !== ctx); // disconnect all nodes in the subcontext - // wipe out targets first for better efficiency - const keys = Object.keys(ctx.nodes); - for (const key of keys)ctx.nodes[key]._targets = null; - for (const key1 of keys)ctx.nodes[key1].detach(); - ctx.nodes = null; - }, - get (id) { - return this.nodes[id]; - }, - set (id, node) { - return this.nodes[id] = node; - }, - add (spec, op) { - const ctx = this, df = ctx.dataflow, data = spec.value; - ctx.set(spec.id, op); - if (isCollect(spec.type) && data) { - if (data.$ingest) df.ingest(op, data.$ingest, data.$format); - else if (data.$request) df.preload(op, data.$request, data.$format); - else df.pulse(op, df.changeset().insert(data)); - } - if (spec.root) ctx.root = op; - if (spec.parent) { - let p = ctx.get(spec.parent.$ref); - if (p) { - df.connect(p, [ - op - ]); - op.targets().add(p); - } else (ctx.unresolved = ctx.unresolved || []).push(()=>{ - p = ctx.get(spec.parent.$ref); - df.connect(p, [ - op - ]); - op.targets().add(p); - }); - } - if (spec.signal) ctx.signals[spec.signal] = op; - if (spec.scale) ctx.scales[spec.scale] = op; - if (spec.data) for(const name in spec.data){ - const data1 = ctx.data[name] || (ctx.data[name] = {}); - spec.data[name].forEach((role)=>data1[role] = op); - } - }, - resolve () { - (this.unresolved || []).forEach((fn)=>fn()); - delete this.unresolved; - return this; - }, - operator (spec, update) { - this.add(spec, this.dataflow.add(spec.value, update)); - }, - transform (spec, type) { - this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)])); - }, - stream (spec, stream) { - this.set(spec.id, stream); - }, - update (spec, stream, target, update, params) { - this.dataflow.on(stream, target, update, params, spec.options); - }, - // expression parsing - operatorExpression (expr) { - return this.expr.operator(this, expr); - }, - parameterExpression (expr) { - return this.expr.parameter(this, expr); - }, - eventExpression (expr) { - return this.expr.event(this, expr); - }, - handlerExpression (expr) { - return this.expr.handler(this, expr); - }, - encodeExpression (encode) { - return this.expr.encode(this, encode); - }, - // parse methods - parse, - parseOperator, - parseOperatorParameters, - parseParameters, - parseStream, - parseUpdate, - // state methods - getState, - setState -}; - -},{"vega-util":"bApja","vega-dataflow":"3NitK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hsy9Z":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "AxisDomainRole", ()=>AxisDomainRole); -parcelHelpers.export(exports, "AxisGridRole", ()=>AxisGridRole); -parcelHelpers.export(exports, "AxisLabelRole", ()=>AxisLabelRole); -parcelHelpers.export(exports, "AxisRole", ()=>AxisRole); -parcelHelpers.export(exports, "AxisTickRole", ()=>AxisTickRole); -parcelHelpers.export(exports, "AxisTitleRole", ()=>AxisTitleRole); -parcelHelpers.export(exports, "DataScope", ()=>DataScope); -parcelHelpers.export(exports, "FrameRole", ()=>FrameRole); -parcelHelpers.export(exports, "LegendEntryRole", ()=>LegendEntryRole); -parcelHelpers.export(exports, "LegendLabelRole", ()=>LegendLabelRole); -parcelHelpers.export(exports, "LegendRole", ()=>LegendRole); -parcelHelpers.export(exports, "LegendSymbolRole", ()=>LegendSymbolRole); -parcelHelpers.export(exports, "LegendTitleRole", ()=>LegendTitleRole); -parcelHelpers.export(exports, "MarkRole", ()=>MarkRole); -parcelHelpers.export(exports, "Scope", ()=>Scope); -parcelHelpers.export(exports, "ScopeRole", ()=>ScopeRole); -parcelHelpers.export(exports, "config", ()=>defaults); -parcelHelpers.export(exports, "parse", ()=>parse); -parcelHelpers.export(exports, "signal", ()=>parseSignal); -parcelHelpers.export(exports, "signalUpdates", ()=>parseSignalUpdates); -parcelHelpers.export(exports, "stream", ()=>parseStream); -var _vegaUtil = require("vega-util"); -var _vegaFunctions = require("vega-functions"); -var _vegaEventSelector = require("vega-event-selector"); -var _vegaScale = require("vega-scale"); -var _vegaDataflow = require("vega-dataflow"); -function parseAutosize(spec) { - return (0, _vegaUtil.isObject)(spec) ? spec : { - type: spec || "pad" - }; -} -const number = (_)=>+_ || 0; -const paddingObject = (_)=>({ - top: _, - bottom: _, - left: _, - right: _ - }); -function parsePadding(spec) { - return !(0, _vegaUtil.isObject)(spec) ? paddingObject(number(spec)) : spec.signal ? spec : { - top: number(spec.top), - bottom: number(spec.bottom), - left: number(spec.left), - right: number(spec.right) - }; -} -const encoder = (_)=>(0, _vegaUtil.isObject)(_) && !(0, _vegaUtil.isArray)(_) ? (0, _vegaUtil.extend)({}, _) : { - value: _ - }; -function addEncode(object, name, value, set) { - if (value != null) { - const isEncoder = (0, _vegaUtil.isObject)(value) && !(0, _vegaUtil.isArray)(value) || (0, _vegaUtil.isArray)(value) && value.length && (0, _vegaUtil.isObject)(value[0]); // Always assign signal to update, even if the signal is from the enter block - if (isEncoder) object.update[name] = value; - else object[set || "enter"][name] = { - value: value - }; - return 1; - } else return 0; -} -function addEncoders(object, enter, update) { - for(const name in enter)addEncode(object, name, enter[name]); - for(const name1 in update)addEncode(object, name1, update[name1], "update"); -} -function extendEncode(encode, extra, skip) { - for(const name in extra){ - if (skip && (0, _vegaUtil.hasOwnProperty)(skip, name)) continue; - encode[name] = (0, _vegaUtil.extend)(encode[name] || {}, extra[name]); - } - return encode; -} -function has(key, encode) { - return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]); +function quantileMultipleDomain(domain, scope, fields) { + // get value arrays for each domain field + const values = fields.map((f)=>{ + const data = scope.getData(f.data); + if (!data) dataLookupError(f.data); + return data.domainRef(scope, f.field); + }); // combine value arrays + return ref(scope.add(MultiValues({ + values: values + }))); } -const MarkRole = "mark"; -const FrameRole = "frame"; -const ScopeRole = "scope"; -const AxisRole = "axis"; -const AxisDomainRole = "axis-domain"; -const AxisGridRole = "axis-grid"; -const AxisLabelRole = "axis-label"; -const AxisTickRole = "axis-tick"; -const AxisTitleRole = "axis-title"; -const LegendRole = "legend"; -const LegendBandRole = "legend-band"; -const LegendEntryRole = "legend-entry"; -const LegendGradientRole = "legend-gradient"; -const LegendLabelRole = "legend-label"; -const LegendSymbolRole = "legend-symbol"; -const LegendTitleRole = "legend-title"; -const TitleRole = "title"; -const TitleTextRole = "title-text"; -const TitleSubtitleRole = "title-subtitle"; -function applyDefaults(encode, type, role, style, config) { - const defaults = {}, enter = {}; - let update, key, skip, props; // if text mark, apply global lineBreak settings (#2370) - key = "lineBreak"; - if (type === "text" && config[key] != null && !has(key, encode)) applyDefault(defaults, key, config[key]); - // ignore legend and axis roles - if (role == "legend" || String(role).startsWith("axis")) role = null; - // resolve mark config - props = role === FrameRole ? config.group : role === MarkRole ? (0, _vegaUtil.extend)({}, config.mark, config[type]) : null; - for(key in props){ - // do not apply defaults if relevant fields are defined - skip = has(key, encode) || (key === "fill" || key === "stroke") && (has("fill", encode) || has("stroke", encode)); - if (!skip) applyDefault(defaults, key, props[key]); - } // resolve styles, apply with increasing precedence - (0, _vegaUtil.array)(style).forEach((name)=>{ - const props = config.style && config.style[name]; - for(const key in props)if (!has(key, encode)) applyDefault(defaults, key, props[key]); - }); - encode = (0, _vegaUtil.extend)({}, encode); // defensive copy - for(key in defaults){ - props = defaults[key]; - if (props.signal) (update = update || {})[key] = props; - else enter[key] = props; - } - encode.enter = (0, _vegaUtil.extend)(enter, encode.enter); - if (update) encode.update = (0, _vegaUtil.extend)(update, encode.update); - return encode; +function numericMultipleDomain(domain, scope, fields) { + // get extents for each domain field + const extents = fields.map((f)=>{ + const data = scope.getData(f.data); + if (!data) dataLookupError(f.data); + return data.extentRef(scope, f.field); + }); // combine extents + return ref(scope.add(MultiExtent({ + extents: extents + }))); +} // -- SCALE BINS ----- +function parseScaleBins(v, scope) { + return v.signal || (0, _vegaUtil.isArray)(v) ? parseArray(v, scope) : scope.objectProperty(v); +} // -- SCALE NICE ----- +function parseScaleNice(nice) { + return (0, _vegaUtil.isObject)(nice) ? { + interval: parseLiteral(nice.interval), + step: parseLiteral(nice.step) + } : parseLiteral(nice); +} // -- SCALE INTERPOLATION ----- +function parseScaleInterpolate(interpolate, params) { + params.interpolate = parseLiteral(interpolate.type || interpolate); + if (interpolate.gamma != null) params.interpolateGamma = parseLiteral(interpolate.gamma); +} // -- SCALE RANGE ----- +function parseScaleRange(spec, scope, params) { + const config = scope.config.range; + let range = spec.range; + if (range.signal) return scope.signalRef(range.signal); + else if ((0, _vegaUtil.isString)(range)) { + if (config && (0, _vegaUtil.hasOwnProperty)(config, range)) { + spec = (0, _vegaUtil.extend)({}, spec, { + range: config[range] + }); + return parseScaleRange(spec, scope, params); + } else if (range === "width") range = [ + 0, + { + signal: "width" + } + ]; + else if (range === "height") range = (0, _vegaScale.isDiscrete)(spec.type) ? [ + 0, + { + signal: "height" + } + ] : [ + { + signal: "height" + }, + 0 + ]; + else (0, _vegaUtil.error)("Unrecognized scale range value: " + (0, _vegaUtil.stringValue)(range)); + } else if (range.scheme) { + params.scheme = (0, _vegaUtil.isArray)(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope); + if (range.extent) params.schemeExtent = parseArray(range.extent, scope); + if (range.count) params.schemeCount = parseLiteral(range.count, scope); + return; + } else if (range.step) { + params.rangeStep = parseLiteral(range.step, scope); + return; + } else if ((0, _vegaScale.isDiscrete)(spec.type) && !(0, _vegaUtil.isArray)(range)) return parseScaleDomain(range, spec, scope); + else if (!(0, _vegaUtil.isArray)(range)) (0, _vegaUtil.error)("Unsupported range type: " + (0, _vegaUtil.stringValue)(range)); + return range.map((v)=>((0, _vegaUtil.isArray)(v) ? parseArray : parseLiteral)(v, scope)); } -function applyDefault(defaults, key, value) { - defaults[key] = value && value.signal ? { - signal: value.signal - } : { - value: value - }; +function parseProjection(proj, scope) { + const config = scope.config.projection || {}, params = {}; + for(const name in proj){ + if (name === "name") continue; + params[name] = parseParameter$1(proj[name], name, scope); + } // apply projection defaults from config + for(const name1 in config)if (params[name1] == null) params[name1] = parseParameter$1(config[name1], name1, scope); + scope.addProjection(proj.name, params); } -const scaleRef = (scale)=>(0, _vegaUtil.isString)(scale) ? (0, _vegaUtil.stringValue)(scale) : scale.signal ? `(${scale.signal})` : field(scale); -function entry$1(enc) { - if (enc.gradient != null) return gradient(enc); - let value = enc.signal ? `(${enc.signal})` : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? (0, _vegaUtil.stringValue)(enc.value) : undefined; - if (enc.scale != null) value = scale(enc, value); - if (value === undefined) value = null; - if (enc.exponent != null) value = `pow(${value},${property(enc.exponent)})`; - if (enc.mult != null) value += `*${property(enc.mult)}`; - if (enc.offset != null) value += `+${property(enc.offset)}`; - if (enc.round) value = `round(${value})`; - return value; +function parseParameter$1(_, name, scope) { + return (0, _vegaUtil.isArray)(_) ? _.map((_)=>parseParameter$1(_, name, scope)) : !(0, _vegaUtil.isObject)(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === "fit" ? _ : (0, _vegaUtil.error)("Unsupported parameter object: " + (0, _vegaUtil.stringValue)(_)); } -const _color = (type, x, y, z)=>`(${type}(${[ - x, - y, - z - ].map(entry$1).join(",")})+'')`; -function color(enc) { - return enc.c ? _color("hcl", enc.h, enc.c, enc.l) : enc.h || enc.s ? _color("hsl", enc.h, enc.s, enc.l) : enc.l || enc.a ? _color("lab", enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color("rgb", enc.r, enc.g, enc.b) : null; +const Top = "top"; +const Left = "left"; +const Right = "right"; +const Bottom = "bottom"; +const Center = "center"; +const Vertical = "vertical"; +const Start = "start"; +const Middle = "middle"; +const End = "end"; +const Index = "index"; +const Label = "label"; +const Offset = "offset"; +const Perc = "perc"; +const Perc2 = "perc2"; +const Value = "value"; +const GuideLabelStyle = "guide-label"; +const GuideTitleStyle = "guide-title"; +const GroupTitleStyle = "group-title"; +const GroupSubtitleStyle = "group-subtitle"; +const Symbols = "symbol"; +const Gradient = "gradient"; +const Discrete = "discrete"; +const Size = "size"; +const Shape = "shape"; +const Fill = "fill"; +const Stroke = "stroke"; +const StrokeWidth = "strokeWidth"; +const StrokeDash = "strokeDash"; +const Opacity = "opacity"; // Encoding channels supported by legends +// In priority order of 'canonical' scale +const LegendScales = [ + Size, + Shape, + Fill, + Stroke, + StrokeWidth, + StrokeDash, + Opacity +]; +const Skip = { + name: 1, + style: 1, + interactive: 1 +}; +const zero = { + value: 0 +}; +const one = { + value: 1 +}; +const GroupMark = "group"; +const RectMark = "rect"; +const RuleMark = "rule"; +const SymbolMark = "symbol"; +const TextMark = "text"; +function guideGroup(mark) { + mark.type = GroupMark; + mark.interactive = mark.interactive || false; + return mark; } -function gradient(enc) { - // map undefined to null; expression lang does not allow undefined - const args = [ - enc.start, - enc.stop, - enc.count - ].map((_)=>_ == null ? null : (0, _vegaUtil.stringValue)(_)); // trim null inputs from the end - while(args.length && (0, _vegaUtil.peek)(args) == null)args.pop(); - args.unshift(scaleRef(enc.gradient)); - return `gradient(${args.join(",")})`; +function lookup(spec, config) { + const _ = (name, dflt)=>value(spec[name], value(config[name], dflt)); + _.isVertical = (s)=>Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection)); + _.gradientLength = ()=>value(spec.gradientLength, config.gradientLength || config.gradientWidth); + _.gradientThickness = ()=>value(spec.gradientThickness, config.gradientThickness || config.gradientHeight); + _.entryColumns = ()=>value(spec.columns, value(config.columns, +_.isVertical(true))); + return _; } -function property(property) { - return (0, _vegaUtil.isObject)(property) ? "(" + entry$1(property) + ")" : property; +function getEncoding(name, encode) { + const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]); + return v && v.signal ? v : v ? v.value : null; } -function field(ref) { - return resolveField((0, _vegaUtil.isObject)(ref) ? ref : { - datum: ref - }); +function getStyle(name, scope, style) { + const s = scope.config.style[style]; + return s && s[name]; } -function resolveField(ref) { - let object, level, field; - if (ref.signal) { - object = "datum"; - field = ref.signal; - } else if (ref.group || ref.parent) { - level = Math.max(1, ref.level || 1); - object = "item"; - while(level-- > 0)object += ".mark.group"; - if (ref.parent) { - field = ref.parent; - object += ".datum"; - } else field = ref.group; - } else if (ref.datum) { - object = "datum"; - field = ref.datum; - } else (0, _vegaUtil.error)("Invalid field reference: " + (0, _vegaUtil.stringValue)(ref)); - if (!ref.signal) field = (0, _vegaUtil.isString)(field) ? (0, _vegaUtil.splitAccessPath)(field).map((0, _vegaUtil.stringValue)).join("][") : resolveField(field); - return object + "[" + field + "]"; +function anchorExpr(s, e, m) { + return `item.anchor === '${Start}' ? ${s} : item.anchor === '${End}' ? ${e} : ${m}`; } -function scale(enc, value) { - const scale = scaleRef(enc.scale); - if (enc.range != null) // pull value from scale range - value = `lerp(_range(${scale}), ${+enc.range})`; - else { - // run value through scale and/or pull scale bandwidth - if (value !== undefined) value = `_scale(${scale}, ${value})`; - if (enc.band) { - value = (value ? value + "+" : "") + `_bandwidth(${scale})` + (+enc.band === 1 ? "" : "*" + property(enc.band)); - if (enc.extra) // include logic to handle extraneous elements - value = `(datum.extra ? _scale(${scale}, datum.extra.value) : ${value})`; - } - if (value == null) value = "0"; +const alignExpr$1 = anchorExpr((0, _vegaUtil.stringValue)(Left), (0, _vegaUtil.stringValue)(Right), (0, _vegaUtil.stringValue)(Center)); +function tickBand(_) { + const v = _("tickBand"); + let offset = _("tickOffset"), band, extra; + if (!v) { + // if no tick band entry, fall back on other properties + band = _("bandPosition"); + extra = _("tickExtra"); + } else if (v.signal) { + // if signal, augment code to interpret values + band = { + signal: `(${v.signal}) === 'extent' ? 1 : 0.5` + }; + extra = { + signal: `(${v.signal}) === 'extent'` + }; + if (!(0, _vegaUtil.isObject)(offset)) offset = { + signal: `(${v.signal}) === 'extent' ? 0 : ${offset}` + }; + } else if (v === "extent") { + // if constant, simply set values + band = 1; + extra = true; + offset = 0; + } else { + band = 0.5; + extra = false; } - return value; -} -function rule(enc) { - let code = ""; - enc.forEach((rule)=>{ - const value = entry$1(rule); - code += rule.test ? `(${rule.test})?${value}:` : value; - }); // if no else clause, terminate with null (#1366) - if ((0, _vegaUtil.peek)(code) === ":") code += "null"; - return code; -} -function parseEncode(encode, type, role, style, scope, params) { - const enc = {}; - params = params || {}; - params.encoders = { - $encode: enc - }; - encode = applyDefaults(encode, type, role, style, scope.config); - for(const key in encode)enc[key] = parseBlock(encode[key], type, params, scope); - return params; -} -function parseBlock(block, marktype, params, scope) { - const channels = {}, fields = {}; - for(const name in block)if (block[name] != null) // skip any null entries - channels[name] = parse$1(expr(block[name]), scope, params, fields); return { - $expr: { - marktype, - channels - }, - $fields: Object.keys(fields), - $output: Object.keys(block) + extra, + band, + offset }; } -function expr(enc) { - return (0, _vegaUtil.isArray)(enc) ? rule(enc) : entry$1(enc); +function extendOffset(value, offset) { + return !offset ? value : !value ? offset : !(0, _vegaUtil.isObject)(value) ? { + value, + offset + } : Object.assign({}, value, { + offset: extendOffset(value.offset, offset) + }); } -function parse$1(code, scope, params, fields) { - const expr = (0, _vegaFunctions.parseExpression)(code, scope); - expr.$fields.forEach((name)=>fields[name] = 1); - (0, _vegaUtil.extend)(params, expr.$params); - return expr.$expr; +function guideMark(mark, extras) { + if (extras) { + mark.name = extras.name; + mark.style = extras.style || mark.style; + mark.interactive = !!extras.interactive; + mark.encode = extendEncode(mark.encode, extras, Skip); + } else mark.interactive = false; + return mark; } -const OUTER = "outer", OUTER_INVALID = [ - "value", - "update", - "init", - "react", - "bind" -]; -function outerError(prefix, name) { - (0, _vegaUtil.error)(prefix + ' for "outer" push: ' + (0, _vegaUtil.stringValue)(name)); -} -function parseSignal(signal, scope) { - const name = signal.name; - if (signal.push === OUTER) { - // signal must already be defined, raise error if not - if (!scope.signals[name]) outerError("No prior signal definition", name); // signal push must not use properties reserved for standard definition - OUTER_INVALID.forEach((prop)=>{ - if (signal[prop] !== undefined) outerError("Invalid property ", prop); - }); +function legendGradient(spec, scale, config, userEncode) { + const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); + let enter, start, stop, width, height; + if (vertical) { + start = [ + 0, + 1 + ]; + stop = [ + 0, + 0 + ]; + width = thickness; + height = length; } else { - // define a new signal in the current scope - const op = scope.addSignal(name, signal.value); - if (signal.react === false) op.react = false; - if (signal.bind) scope.addBinding(name, signal.bind); + start = [ + 0, + 0 + ]; + stop = [ + 1, + 0 + ]; + width = length; + height = thickness; } -} -function Entry(type, value, params, parent) { - this.id = -1; - this.type = type; - this.value = value; - this.params = params; - if (parent) this.parent = parent; -} -function entry(type, value, params, parent) { - return new Entry(type, value, params, parent); -} -function operator(value, params) { - return entry("operator", value, params); -} // ----- -function ref(op) { - const ref = { - $ref: op.id - }; // if operator not yet registered, cache ref to resolve later - if (op.id < 0) (op.refs = op.refs || []).push(ref); - return ref; -} -function fieldRef$1(field, name) { - return name ? { - $field: field, - $name: name - } : { - $field: field + const encode = { + enter: enter = { + opacity: zero, + x: zero, + y: zero, + width: encoder(width), + height: encoder(height) + }, + update: (0, _vegaUtil.extend)({}, enter, { + opacity: one, + fill: { + gradient: scale, + start: start, + stop: stop + } + }), + exit: { + opacity: zero + } }; + addEncoders(encode, { + stroke: _("gradientStrokeColor"), + strokeWidth: _("gradientStrokeWidth") + }, { + // update + opacity: _("gradientOpacity") + }); + return guideMark({ + type: RectMark, + role: LegendGradientRole, + encode + }, userEncode); } -const keyFieldRef = fieldRef$1("key"); -function compareRef(fields, orders) { - return { - $compare: fields, - $order: orders +function legendGradientDiscrete(spec, scale, config, userEncode, dataRef) { + const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); + let u, v, uu, vv, adjust = ""; + vertical ? (u = "y", uu = "y2", v = "x", vv = "width", adjust = "1-") : (u = "x", uu = "x2", v = "y", vv = "height"); + const enter = { + opacity: zero, + fill: { + scale: scale, + field: Value + } }; -} -function keyRef(fields, flat) { - const ref = { - $key: fields + enter[u] = { + signal: adjust + "datum." + Perc, + mult: length }; - if (flat) ref.$flat = true; - return ref; -} // ----- -const Ascending = "ascending"; -const Descending = "descending"; -function sortKey(sort) { - return !(0, _vegaUtil.isObject)(sort) ? "" : (sort.order === Descending ? "-" : "+") + aggrField(sort.op, sort.field); -} -function aggrField(op, field) { - return (op && op.signal ? "$" + op.signal : op || "") + (op && field ? "_" : "") + (field && field.signal ? "$" + field.signal : field || ""); -} // ----- -const Scope$1 = "scope"; -const View = "view"; -function isSignal(_) { - return _ && _.signal; -} -function isExpr$1(_) { - return _ && _.expr; -} -function hasSignal(_) { - if (isSignal(_)) return true; - if ((0, _vegaUtil.isObject)(_)) for(const key in _){ - if (hasSignal(_[key])) return true; - } - return false; -} -function value(specValue, defaultValue) { - return specValue != null ? specValue : defaultValue; -} -function deref(v) { - return v && v.signal || v; -} -const Timer = "timer"; -function parseStream(stream, scope) { - const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : (0, _vegaUtil.error)("Invalid stream specification: " + (0, _vegaUtil.stringValue)(stream)); - return method(stream, scope); -} -function eventSource(source) { - return source === Scope$1 ? View : source || View; -} -function mergeStream(stream, scope) { - const list = stream.merge.map((s)=>parseStream(s, scope)), entry = streamParameters({ - merge: list - }, stream, scope); - return scope.addStream(entry).id; -} -function nestedStream(stream, scope) { - const id = parseStream(stream.stream, scope), entry = streamParameters({ - stream: id - }, stream, scope); - return scope.addStream(entry).id; + enter[v] = zero; + enter[uu] = { + signal: adjust + "datum." + Perc2, + mult: length + }; + enter[vv] = encoder(thickness); + const encode = { + enter: enter, + update: (0, _vegaUtil.extend)({}, enter, { + opacity: one + }), + exit: { + opacity: zero + } + }; + addEncoders(encode, { + stroke: _("gradientStrokeColor"), + strokeWidth: _("gradientStrokeWidth") + }, { + // update + opacity: _("gradientOpacity") + }); + return guideMark({ + type: RectMark, + role: LegendBandRole, + key: Value, + from: dataRef, + encode + }, userEncode); } -function eventStream(stream, scope) { - let id; - if (stream.type === Timer) { - id = scope.event(Timer, stream.throttle); - stream = { - between: stream.between, - filter: stream.filter +const alignExpr = `datum.${Perc}<=0?"${Left}":datum.${Perc}>=1?"${Right}":"${Center}"`, baselineExpr = `datum.${Perc}<=0?"${Bottom}":datum.${Perc}>=1?"${Top}":"${Middle}"`; +function legendGradientLabels(spec, config, userEncode, dataRef) { + const _ = lookup(spec, config), vertical = _.isVertical(), thickness = encoder(_.gradientThickness()), length = _.gradientLength(); + let overlap = _("labelOverlap"), enter, update, u, v, adjust = ""; + const encode = { + enter: enter = { + opacity: zero + }, + update: update = { + opacity: one, + text: { + field: Label + } + }, + exit: { + opacity: zero + } + }; + addEncoders(encode, { + fill: _("labelColor"), + fillOpacity: _("labelOpacity"), + font: _("labelFont"), + fontSize: _("labelFontSize"), + fontStyle: _("labelFontStyle"), + fontWeight: _("labelFontWeight"), + limit: value(spec.labelLimit, config.gradientLabelLimit) + }); + if (vertical) { + enter.align = { + value: "left" }; - } else id = scope.event(eventSource(stream.source), stream.type); - const entry = streamParameters({ - stream: id - }, stream, scope); - return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id; -} -function streamParameters(entry, stream, scope) { - let param = stream.between; - if (param) { - if (param.length !== 2) (0, _vegaUtil.error)('Stream "between" parameter must have 2 entries: ' + (0, _vegaUtil.stringValue)(stream)); - entry.between = [ - parseStream(param[0], scope), - parseStream(param[1], scope) - ]; + enter.baseline = update.baseline = { + signal: baselineExpr + }; + u = "y"; + v = "x"; + adjust = "1-"; + } else { + enter.align = update.align = { + signal: alignExpr + }; + enter.baseline = { + value: "top" + }; + u = "x"; + v = "y"; } - param = stream.filter ? [].concat(stream.filter) : []; - if (stream.marktype || stream.markname || stream.markrole) // add filter for mark type, name and/or role - param.push(filterMark(stream.marktype, stream.markname, stream.markrole)); - if (stream.source === Scope$1) // add filter to limit events from sub-scope only - param.push("inScope(event.item)"); - if (param.length) entry.filter = (0, _vegaFunctions.parseExpression)("(" + param.join(")&&(") + ")", scope).$expr; - if ((param = stream.throttle) != null) entry.throttle = +param; - if ((param = stream.debounce) != null) entry.debounce = +param; - if (stream.consume) entry.consume = true; - return entry; -} -function filterMark(type, name, role) { - const item = "event.item"; - return item + (type && type !== "*" ? "&&" + item + ".mark.marktype==='" + type + "'" : "") + (role ? "&&" + item + ".mark.role==='" + role + "'" : "") + (name ? "&&" + item + ".mark.name==='" + name + "'" : ""); + enter[u] = update[u] = { + signal: adjust + "datum." + Perc, + mult: length + }; + enter[v] = update[v] = thickness; + thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0; + overlap = overlap ? { + separation: _("labelSeparation"), + method: overlap, + order: "datum." + Index + } : undefined; // type, role, style, key, dataRef, encode, extras + return guideMark({ + type: TextMark, + role: LegendLabelRole, + style: GuideLabelStyle, + key: Value, + from: dataRef, + encode, + overlap + }, userEncode); } -const OP_VALUE_EXPR = { - code: "_.$value", - ast: { - type: "Identifier", - value: "value" +function legendSymbolGroups(spec, config, userEncode, dataRef, columns) { + const _ = lookup(spec, config), entries = userEncode.entries, interactive = !!(entries && entries.interactive), name = entries ? entries.name : undefined, height = _("clipHeight"), symbolOffset = _("symbolOffset"), valueRef = { + data: "value" + }, xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`, yEncode = height ? encoder(height) : { + field: Size + }, index = `datum.${Index}`, ncols = `max(1, ${columns})`; + let encode, enter, update, nrows, sort; + yEncode.mult = 0.5; // -- LEGEND SYMBOLS -- + encode = { + enter: enter = { + opacity: zero, + x: { + signal: xSignal, + mult: 0.5, + offset: symbolOffset + }, + y: yEncode + }, + update: update = { + opacity: one, + x: enter.x, + y: enter.y + }, + exit: { + opacity: zero + } + }; + let baseFill = null, baseStroke = null; + if (!spec.fill) { + baseFill = config.symbolBaseFillColor; + baseStroke = config.symbolBaseStrokeColor; } -}; -function parseUpdate(spec, scope, target) { - const encode = spec.encode, entry = { - target: target + addEncoders(encode, { + fill: _("symbolFillColor", baseFill), + shape: _("symbolType"), + size: _("symbolSize"), + stroke: _("symbolStrokeColor", baseStroke), + strokeDash: _("symbolDash"), + strokeDashOffset: _("symbolDashOffset"), + strokeWidth: _("symbolStrokeWidth") + }, { + // update + opacity: _("symbolOpacity") + }); + LegendScales.forEach((scale)=>{ + if (spec[scale]) update[scale] = enter[scale] = { + scale: spec[scale], + field: Value + }; + }); + const symbols = guideMark({ + type: SymbolMark, + role: LegendSymbolRole, + key: Value, + from: valueRef, + clip: height ? true : undefined, + encode + }, userEncode.symbols); // -- LEGEND LABELS -- + const labelOffset = encoder(symbolOffset); + labelOffset.offset = _("labelOffset"); + encode = { + enter: enter = { + opacity: zero, + x: { + signal: xSignal, + offset: labelOffset + }, + y: yEncode + }, + update: update = { + opacity: one, + text: { + field: Label + }, + x: enter.x, + y: enter.y + }, + exit: { + opacity: zero + } }; - let events = spec.events, update = spec.update, sources = []; - if (!events) (0, _vegaUtil.error)("Signal update missing events specification."); - // interpret as an event selector string - if ((0, _vegaUtil.isString)(events)) events = (0, _vegaEventSelector.parseSelector)(events, scope.isSubscope() ? Scope$1 : View); - // separate event streams from signal updates - events = (0, _vegaUtil.array)(events).filter((s)=>s.signal || s.scale ? (sources.push(s), 0) : 1); // merge internal operator listeners - if (sources.length > 1) sources = [ - mergeSources(sources) - ]; - // merge event streams, include as source - if (events.length) sources.push(events.length > 1 ? { - merge: events - } : events[0]); - if (encode != null) { - if (update) (0, _vegaUtil.error)("Signal encode and update are mutually exclusive."); - update = "encode(item()," + (0, _vegaUtil.stringValue)(encode) + ")"; - } // resolve update value - entry.update = (0, _vegaUtil.isString)(update) ? (0, _vegaFunctions.parseExpression)(update, scope) : update.expr != null ? (0, _vegaFunctions.parseExpression)(update.expr, scope) : update.value != null ? update.value : update.signal != null ? { - $expr: OP_VALUE_EXPR, - $params: { - $value: scope.signalRef(update.signal) + addEncoders(encode, { + align: _("labelAlign"), + baseline: _("labelBaseline"), + fill: _("labelColor"), + fillOpacity: _("labelOpacity"), + font: _("labelFont"), + fontSize: _("labelFontSize"), + fontStyle: _("labelFontStyle"), + fontWeight: _("labelFontWeight"), + limit: _("labelLimit") + }); + const labels = guideMark({ + type: TextMark, + role: LegendLabelRole, + style: GuideLabelStyle, + key: Value, + from: valueRef, + encode + }, userEncode.labels); // -- LEGEND ENTRY GROUPS -- + encode = { + enter: { + noBound: { + value: !height + }, + // ignore width/height in bounds calc + width: zero, + height: height ? encoder(height) : zero, + opacity: zero + }, + exit: { + opacity: zero + }, + update: update = { + opacity: one, + row: { + signal: null + }, + column: { + signal: null + } + } + }; // annotate and sort groups to ensure correct ordering + if (_.isVertical(true)) { + nrows = `ceil(item.mark.items.length / ${ncols})`; + update.row.signal = `${index}%${nrows}`; + update.column.signal = `floor(${index} / ${nrows})`; + sort = { + field: [ + "row", + index + ] + }; + } else { + update.row.signal = `floor(${index} / ${ncols})`; + update.column.signal = `${index} % ${ncols}`; + sort = { + field: index + }; + } // handle zero column case (implies infinite columns) + update.column.signal = `(${columns})?${update.column.signal}:${index}`; // facet legend entries into sub-groups + dataRef = { + facet: { + data: dataRef, + name: "value", + groupby: Index } - } : (0, _vegaUtil.error)("Invalid signal update specification."); - if (spec.force) entry.options = { - force: true }; - sources.forEach((source)=>scope.addUpdate((0, _vegaUtil.extend)(streamSource(source, scope), entry))); + return guideGroup({ + role: ScopeRole, + from: dataRef, + encode: extendEncode(encode, entries, Skip), + marks: [ + symbols, + labels + ], + name, + interactive, + sort + }); } -function streamSource(stream, scope) { +function legendSymbolLayout(spec, config) { + const _ = lookup(spec, config); // layout parameters for legend entries return { - source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope) + align: _("gridAlign"), + columns: _.entryColumns(), + center: { + row: true, + column: false + }, + padding: { + row: _("rowPadding"), + column: _("columnPadding") + } }; } -function mergeSources(sources) { - return { - signal: "[" + sources.map((s)=>s.scale ? 'scale("' + s.scale + '")' : s.signal) + "]" +const isL = 'item.orient === "left"', isR = 'item.orient === "right"', isLR = `(${isL} || ${isR})`, isVG = `datum.vgrad && ${isLR}`, baseline = anchorExpr('"top"', '"bottom"', '"middle"'), alignFlip = anchorExpr('"right"', '"left"', '"center"'), exprAlign = `datum.vgrad && ${isR} ? (${alignFlip}) : (${isLR} && !(datum.vgrad && ${isL})) ? "left" : ${alignExpr$1}`, exprAnchor = `item._anchor || (${isLR} ? "middle" : "start")`, exprAngle = `${isVG} ? (${isL} ? -90 : 90) : 0`, exprBaseline = `${isLR} ? (datum.vgrad ? (${isR} ? "bottom" : "top") : ${baseline}) : "top"`; +function legendTitle(spec, config, userEncode, dataRef) { + const _ = lookup(spec, config); + const encode = { + enter: { + opacity: zero + }, + update: { + opacity: one, + x: { + field: { + group: "padding" + } + }, + y: { + field: { + group: "padding" + } + } + }, + exit: { + opacity: zero + } }; + addEncoders(encode, { + orient: _("titleOrient"), + _anchor: _("titleAnchor"), + anchor: { + signal: exprAnchor + }, + angle: { + signal: exprAngle + }, + align: { + signal: exprAlign + }, + baseline: { + signal: exprBaseline + }, + text: spec.title, + fill: _("titleColor"), + fillOpacity: _("titleOpacity"), + font: _("titleFont"), + fontSize: _("titleFontSize"), + fontStyle: _("titleFontStyle"), + fontWeight: _("titleFontWeight"), + limit: _("titleLimit"), + lineHeight: _("titleLineHeight") + }, { + // require update + align: _("titleAlign"), + baseline: _("titleBaseline") + }); + return guideMark({ + type: TextMark, + role: LegendTitleRole, + style: GuideTitleStyle, + from: dataRef, + encode + }, userEncode); } -function parseSignalUpdates(signal, scope) { - const op = scope.getSignal(signal.name); - let expr = signal.update; - if (signal.init) { - if (expr) (0, _vegaUtil.error)("Signals can not include both init and update expressions."); - else { - expr = signal.init; - op.initonly = true; - } - } - if (expr) { - expr = (0, _vegaFunctions.parseExpression)(expr, scope); - op.update = expr.$expr; - op.params = expr.$params; +function clip(clip, scope) { + let expr; + if ((0, _vegaUtil.isObject)(clip)) { + if (clip.signal) expr = clip.signal; + else if (clip.path) expr = "pathShape(" + param(clip.path) + ")"; + else if (clip.sphere) expr = "geoShape(" + param(clip.sphere) + ', {type: "Sphere"})'; } - if (signal.on) signal.on.forEach((_)=>parseUpdate(_, scope, op.id)); + return expr ? scope.signalRef(expr) : !!clip; } -const transform = (name)=>(params, value, parent)=>entry(name, value, params || undefined, parent); -const Aggregate = transform("aggregate"); -const AxisTicks = transform("axisticks"); -const Bound = transform("bound"); -const Collect = transform("collect"); -const Compare = transform("compare"); -const DataJoin = transform("datajoin"); -const Encode = transform("encode"); -const Expression = transform("expression"); -const Facet = transform("facet"); -const Field = transform("field"); -const Key = transform("key"); -const LegendEntries = transform("legendentries"); -const Load = transform("load"); -const Mark = transform("mark"); -const MultiExtent = transform("multiextent"); -const MultiValues = transform("multivalues"); -const Overlap = transform("overlap"); -const Params = transform("params"); -const PreFacet = transform("prefacet"); -const Projection = transform("projection"); -const Proxy = transform("proxy"); -const Relay = transform("relay"); -const Render = transform("render"); -const Scale = transform("scale"); -const Sieve = transform("sieve"); -const SortItems = transform("sortitems"); -const ViewLayout = transform("viewlayout"); -const Values = transform("values"); -let FIELD_REF_ID = 0; -const MULTIDOMAIN_SORT_OPS = { - min: "min", - max: "max", - count: "sum" -}; -function initScale(spec, scope) { - const type = spec.type || "linear"; - if (!(0, _vegaScale.isValidScaleType)(type)) (0, _vegaUtil.error)("Unrecognized scale type: " + (0, _vegaUtil.stringValue)(type)); - scope.addScale(spec.name, { - type, - domain: undefined - }); +function param(value) { + return (0, _vegaUtil.isObject)(value) && value.signal ? value.signal : (0, _vegaUtil.stringValue)(value); } -function parseScale(spec, scope) { - const params = scope.getScale(spec.name).params; - let key; - params.domain = parseScaleDomain(spec.domain, spec, scope); - if (spec.range != null) params.range = parseScaleRange(spec, scope, params); - if (spec.interpolate != null) parseScaleInterpolate(spec.interpolate, params); - if (spec.nice != null) params.nice = parseScaleNice(spec.nice); - if (spec.bins != null) params.bins = parseScaleBins(spec.bins, scope); - for(key in spec){ - if ((0, _vegaUtil.hasOwnProperty)(params, key) || key === "name") continue; - params[key] = parseLiteral(spec[key], scope); - } +function getRole(spec) { + const role = spec.role || ""; + return !role.indexOf("axis") || !role.indexOf("legend") || !role.indexOf("title") ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole; } -function parseLiteral(v, scope) { - return !(0, _vegaUtil.isObject)(v) ? v : v.signal ? scope.signalRef(v.signal) : (0, _vegaUtil.error)("Unsupported object: " + (0, _vegaUtil.stringValue)(v)); +function definition(spec) { + return { + marktype: spec.type, + name: spec.name || undefined, + role: spec.role || getRole(spec), + zindex: +spec.zindex || undefined, + aria: spec.aria, + description: spec.description + }; } -function parseArray(v, scope) { - return v.signal ? scope.signalRef(v.signal) : v.map((v)=>parseLiteral(v, scope)); +function interactive(spec, scope) { + return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true; } -function dataLookupError(name) { - (0, _vegaUtil.error)("Can not find data set: " + (0, _vegaUtil.stringValue)(name)); -} // -- SCALE DOMAIN ---- -function parseScaleDomain(domain, spec, scope) { - if (!domain) { - if (spec.domainMin != null || spec.domainMax != null) (0, _vegaUtil.error)("No scale domain defined for domainMin/domainMax to override."); - return; // default domain +/** + * Parse a data transform specification. + */ function parseTransform(spec, scope) { + const def = (0, _vegaDataflow.definition)(spec.type); + if (!def) (0, _vegaUtil.error)("Unrecognized transform type: " + (0, _vegaUtil.stringValue)(spec.type)); + const t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope)); + if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t)); + t.metadata = def.metadata || {}; + return t; +} +/** + * Parse all parameters of a data transform. + */ function parseParameters(def, spec, scope) { + const params = {}, n = def.params.length; + for(let i = 0; i < n; ++i){ + const pdef = def.params[i]; + params[pdef.name] = parseParameter(pdef, spec, scope); } - return domain.signal ? scope.signalRef(domain.signal) : ((0, _vegaUtil.isArray)(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope); + return params; } -function explicitDomain(domain, spec, scope) { - return domain.map((v)=>parseLiteral(v, scope)); +/** + * Parse a data transform parameter. + */ function parseParameter(def, spec, scope) { + const type = def.type, value = spec[def.name]; + if (type === "index") return parseIndexParameter(def, spec, scope); + else if (value === undefined) { + if (def.required) (0, _vegaUtil.error)("Missing required " + (0, _vegaUtil.stringValue)(spec.type) + " parameter: " + (0, _vegaUtil.stringValue)(def.name)); + return; + } else if (type === "param") return parseSubParameters(def, spec, scope); + else if (type === "projection") return scope.projectionRef(spec[def.name]); + return def.array && !isSignal(value) ? value.map((v)=>parameterValue(def, v, scope)) : parameterValue(def, value, scope); } -function singularDomain(domain, spec, scope) { - const data = scope.getData(domain.data); - if (!data) dataLookupError(domain.data); - return (0, _vegaScale.isDiscrete)(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : (0, _vegaScale.isQuantile)(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field); +/** + * Parse a single parameter value. + */ function parameterValue(def, value, scope) { + const type = def.type; + if (isSignal(value)) return isExpr(type) ? (0, _vegaUtil.error)("Expression references can not be signals.") : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal); + else { + const expr = def.expr || isField(type); + return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? (0, _vegaFunctions.parseExpression)(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value; + } } -function multipleDomain(domain, spec, scope) { - const data = domain.data, fields = domain.fields.reduce((dom, d)=>{ - d = (0, _vegaUtil.isString)(d) ? { - data: data, - field: d - } : (0, _vegaUtil.isArray)(d) || d.signal ? fieldRef(d, scope) : d; - dom.push(d); - return dom; - }, []); - return ((0, _vegaScale.isDiscrete)(spec.type) ? ordinalMultipleDomain : (0, _vegaScale.isQuantile)(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields); +/** + * Parse parameter for accessing an index of another data set. + */ function parseIndexParameter(def, spec, scope) { + if (!(0, _vegaUtil.isString)(spec.from)) (0, _vegaUtil.error)('Lookup "from" parameter must be a string literal.'); + return scope.getData(spec.from).lookupRef(scope, spec.key); } -function fieldRef(data, scope) { - const name = "_:vega:_" + FIELD_REF_ID++, coll = Collect({}); - if ((0, _vegaUtil.isArray)(data)) coll.value = { - $ingest: data - }; - else if (data.signal) { - const code = "setdata(" + (0, _vegaUtil.stringValue)(name) + "," + data.signal + ")"; - coll.params.input = scope.signalRef(code); - } - scope.addDataPipeline(name, [ - coll, - Sieve({}) - ]); +/** + * Parse a parameter that contains one or more sub-parameter objects. + */ function parseSubParameters(def, spec, scope) { + const value = spec[def.name]; + if (def.array) { + if (!(0, _vegaUtil.isArray)(value)) // signals not allowed! + (0, _vegaUtil.error)("Expected an array of sub-parameters. Instead: " + (0, _vegaUtil.stringValue)(value)); + return value.map((v)=>parseSubParameter(def, v, scope)); + } else return parseSubParameter(def, value, scope); +} +/** + * Parse a sub-parameter object. + */ function parseSubParameter(def, value, scope) { + const n = def.params.length; + let pdef; // loop over defs to find matching key + for(let i = 0; i < n; ++i){ + pdef = def.params[i]; + for(const k in pdef.key)if (pdef.key[k] !== value[k]) { + pdef = null; + break; + } + if (pdef) break; + } // raise error if matching key not found + if (!pdef) (0, _vegaUtil.error)("Unsupported parameter: " + (0, _vegaUtil.stringValue)(value)); // parse params, create Params transform, return ref + const params = (0, _vegaUtil.extend)(parseParameters(pdef, value, scope), pdef.key); + return ref(scope.add(Params(params))); +} // -- Utilities ----- +const outerExpr = (_)=>_ && _.expr; +const outerField = (_)=>_ && _.field; +const isData = (_)=>_ === "data"; +const isExpr = (_)=>_ === "expr"; +const isField = (_)=>_ === "field"; +const isCompare = (_)=>_ === "compare"; +function parseData$1(from, group, scope) { + let facet, key, op, dataRef, parent; // if no source data, generate singleton datum + if (!from) dataRef = ref(scope.add(Collect(null, [ + {} + ]))); + else if (facet = from.facet) { + if (!group) (0, _vegaUtil.error)("Only group marks can be faceted."); // use pre-faceted source data, if available + if (facet.field != null) dataRef = parent = getDataRef(facet, scope); + else { + // generate facet aggregates if no direct data specification + if (!from.data) { + op = parseTransform((0, _vegaUtil.extend)({ + type: "aggregate", + groupby: (0, _vegaUtil.array)(facet.groupby) + }, facet.aggregate), scope); + op.params.key = scope.keyRef(facet.groupby); + op.params.pulse = getDataRef(facet, scope); + dataRef = parent = ref(scope.add(op)); + } else parent = ref(scope.getData(from.data).aggregate); + key = scope.keyRef(facet.groupby, true); + } + } // if not yet defined, get source data reference + if (!dataRef) dataRef = getDataRef(from, scope); return { - data: name, - field: "data" + key: key, + pulse: dataRef, + parent: parent }; } -function ordinalMultipleDomain(domain, scope, fields) { - const sort = parseSort(domain.sort, true); - let a, v; // get value counts for each domain field - const counts = fields.map((f)=>{ - const data = scope.getData(f.data); - if (!data) dataLookupError(f.data); - return data.countsRef(scope, f.field, sort); - }); // aggregate the results from each domain field - const p = { - groupby: keyFieldRef, - pulse: counts - }; - if (sort) { - a = sort.op || "count"; - v = sort.field ? aggrField(a, sort.field) : "count"; +function getDataRef(from, scope) { + return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output); +} +function DataScope(scope, input, output, values, aggr) { + this.scope = scope; // parent scope object + this.input = input; // first operator in pipeline (tuple input) + this.output = output; // last operator in pipeline (tuple output) + this.values = values; // operator for accessing tuples (but not tuple flow) + // last aggregate in transform pipeline + this.aggregate = aggr; // lookup table of field indices + this.index = {}; +} +DataScope.fromEntries = function(scope, entries) { + const n = entries.length, values = entries[n - 1], output = entries[n - 2]; + let input = entries[0], aggr = null, i = 1; + if (input && input.type === "load") input = entries[1]; + // add operator entries to this scope, wire up pulse chain + scope.add(entries[0]); + for(; i < n; ++i){ + entries[i].params.pulse = ref(entries[i - 1]); + scope.add(entries[i]); + if (entries[i].type === "aggregate") aggr = entries[i]; + } + return new DataScope(scope, input, output, values, aggr); +}; +function fieldKey(field) { + return (0, _vegaUtil.isString)(field) ? field : null; +} +function addSortField(scope, p, sort) { + const as = aggrField(sort.op, sort.field); + let s; + if (p.ops) for(let i = 0, n = p.as.length; i < n; ++i){ + if (p.as[i] === as) return; + } + else { p.ops = [ - MULTIDOMAIN_SORT_OPS[a] + "count" ]; p.fields = [ - scope.fieldRef(v) + null ]; p.as = [ - v + "count" ]; } - a = scope.add(Aggregate(p)); // collect aggregate output - const c = scope.add(Collect({ - pulse: ref(a) - })); // extract values for combined domain - v = scope.add(Values({ - field: keyFieldRef, - sort: scope.sortRef(sort), - pulse: ref(c) - })); - return ref(v); + if (sort.op) { + p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op); + p.fields.push(scope.fieldRef(sort.field)); + p.as.push(as); + } } -function parseSort(sort, multidomain) { - if (sort) { - if (!sort.field && !sort.op) { - if ((0, _vegaUtil.isObject)(sort)) sort.field = "key"; - else sort = { - field: "key" - }; - } else if (!sort.field && sort.op !== "count") (0, _vegaUtil.error)("No field provided for sort aggregate op: " + sort.op); - else if (multidomain && sort.field) { - if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) (0, _vegaUtil.error)("Multiple domain scales can not be sorted using " + sort.op); +function cache(scope, ds, name, optype, field, counts, index) { + const cache = ds[name] || (ds[name] = {}), sort = sortKey(counts); + let k = fieldKey(field), v, op; + if (k != null) { + scope = ds.scope; + k = k + (sort ? "|" + sort : ""); + v = cache[k]; + } + if (!v) { + const params = counts ? { + field: keyFieldRef, + pulse: ds.countsRef(scope, field, counts) + } : { + field: scope.fieldRef(field), + pulse: ref(ds.output) + }; + if (sort) params.sort = scope.sortRef(counts); + op = scope.add(entry(optype, undefined, params)); + if (index) ds.index[field] = op; + v = ref(op); + if (k != null) cache[k] = v; + } + return v; +} +DataScope.prototype = { + countsRef (scope, field, sort) { + const ds = this, cache = ds.counts || (ds.counts = {}), k = fieldKey(field); + let v, a, p; + if (k != null) { + scope = ds.scope; + v = cache[k]; } + if (!v) { + p = { + groupby: scope.fieldRef(field, "key"), + pulse: ref(ds.output) + }; + if (sort && sort.field) addSortField(scope, p, sort); + a = scope.add(Aggregate(p)); + v = scope.add(Collect({ + pulse: ref(a) + })); + v = { + agg: a, + ref: ref(v) + }; + if (k != null) cache[k] = v; + } else if (sort && sort.field) addSortField(scope, v.agg.params, sort); + return v.ref; + }, + tuplesRef () { + return ref(this.values); + }, + extentRef (scope, field) { + return cache(scope, this, "extent", "extent", field, false); + }, + domainRef (scope, field) { + return cache(scope, this, "domain", "values", field, false); + }, + valuesRef (scope, field, sort) { + return cache(scope, this, "vals", "values", field, sort || true); + }, + lookupRef (scope, field) { + return cache(scope, this, "lookup", "tupleindex", field, false); + }, + indataRef (scope, field) { + return cache(scope, this, "indata", "tupleindex", field, true, true); } - return sort; +}; +function parseFacet(spec, scope, group) { + const facet = spec.from.facet, name = facet.name, data = getDataRef(facet, scope); + let op; + if (!facet.name) (0, _vegaUtil.error)("Facet must have a name: " + (0, _vegaUtil.stringValue)(facet)); + if (!facet.data) (0, _vegaUtil.error)("Facet must reference a data set: " + (0, _vegaUtil.stringValue)(facet)); + if (facet.field) op = scope.add(PreFacet({ + field: scope.fieldRef(facet.field), + pulse: data + })); + else if (facet.groupby) op = scope.add(Facet({ + key: scope.keyRef(facet.groupby), + group: ref(scope.proxy(group.parent)), + pulse: data + })); + else (0, _vegaUtil.error)("Facet must specify groupby or field: " + (0, _vegaUtil.stringValue)(facet)); + // initialize facet subscope + const subscope = scope.fork(), source = subscope.add(Collect()), values = subscope.add(Sieve({ + pulse: ref(source) + })); + subscope.addData(name, new DataScope(subscope, source, source, values)); + subscope.addSignal("parent", null); // parse faceted subflow + op.params.subflow = { + $subflow: subscope.parse(spec).toRuntime() + }; } -function quantileMultipleDomain(domain, scope, fields) { - // get value arrays for each domain field - const values = fields.map((f)=>{ - const data = scope.getData(f.data); - if (!data) dataLookupError(f.data); - return data.domainRef(scope, f.field); - }); // combine value arrays - return ref(scope.add(MultiValues({ - values: values - }))); +function parseSubflow(spec, scope, input) { + const op = scope.add(PreFacet({ + pulse: input.pulse + })), subscope = scope.fork(); + subscope.add(Sieve()); + subscope.addSignal("parent", null); // parse group mark subflow + op.params.subflow = { + $subflow: subscope.parse(spec).toRuntime() + }; } -function numericMultipleDomain(domain, scope, fields) { - // get extents for each domain field - const extents = fields.map((f)=>{ - const data = scope.getData(f.data); - if (!data) dataLookupError(f.data); - return data.extentRef(scope, f.field); - }); // combine extents - return ref(scope.add(MultiExtent({ - extents: extents - }))); -} // -- SCALE BINS ----- -function parseScaleBins(v, scope) { - return v.signal || (0, _vegaUtil.isArray)(v) ? parseArray(v, scope) : scope.objectProperty(v); -} // -- SCALE NICE ----- -function parseScaleNice(nice) { - return (0, _vegaUtil.isObject)(nice) ? { - interval: parseLiteral(nice.interval), - step: parseLiteral(nice.step) - } : parseLiteral(nice); -} // -- SCALE INTERPOLATION ----- -function parseScaleInterpolate(interpolate, params) { - params.interpolate = parseLiteral(interpolate.type || interpolate); - if (interpolate.gamma != null) params.interpolateGamma = parseLiteral(interpolate.gamma); -} // -- SCALE RANGE ----- -function parseScaleRange(spec, scope, params) { - const config = scope.config.range; - let range = spec.range; - if (range.signal) return scope.signalRef(range.signal); - else if ((0, _vegaUtil.isString)(range)) { - if (config && (0, _vegaUtil.hasOwnProperty)(config, range)) { - spec = (0, _vegaUtil.extend)({}, spec, { - range: config[range] - }); - return parseScaleRange(spec, scope, params); - } else if (range === "width") range = [ - 0, - { - signal: "width" - } - ]; - else if (range === "height") range = (0, _vegaScale.isDiscrete)(spec.type) ? [ - 0, - { - signal: "height" - } - ] : [ - { - signal: "height" - }, - 0 - ]; - else (0, _vegaUtil.error)("Unrecognized scale range value: " + (0, _vegaUtil.stringValue)(range)); - } else if (range.scheme) { - params.scheme = (0, _vegaUtil.isArray)(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope); - if (range.extent) params.schemeExtent = parseArray(range.extent, scope); - if (range.count) params.schemeCount = parseLiteral(range.count, scope); - return; - } else if (range.step) { - params.rangeStep = parseLiteral(range.step, scope); - return; - } else if ((0, _vegaScale.isDiscrete)(spec.type) && !(0, _vegaUtil.isArray)(range)) return parseScaleDomain(range, spec, scope); - else if (!(0, _vegaUtil.isArray)(range)) (0, _vegaUtil.error)("Unsupported range type: " + (0, _vegaUtil.stringValue)(range)); - return range.map((v)=>((0, _vegaUtil.isArray)(v) ? parseArray : parseLiteral)(v, scope)); +function parseTrigger(spec, scope, name) { + const remove = spec.remove, insert = spec.insert, toggle = spec.toggle, modify = spec.modify, values = spec.values, op = scope.add(operator()); + const update = "if(" + spec.trigger + ',modify("' + name + '",' + [ + insert, + remove, + toggle, + modify, + values + ].map((_)=>_ == null ? "null" : _).join(",") + "),0)"; + const expr = (0, _vegaFunctions.parseExpression)(update, scope); + op.update = expr.$expr; + op.params = expr.$params; } -function parseProjection(proj, scope) { - const config = scope.config.projection || {}, params = {}; - for(const name in proj){ - if (name === "name") continue; - params[name] = parseParameter$1(proj[name], name, scope); - } // apply projection defaults from config - for(const name1 in config)if (params[name1] == null) params[name1] = parseParameter$1(config[name1], name1, scope); - scope.addProjection(proj.name, params); +function parseMark(spec, scope) { + const role = getRole(spec), group = spec.type === GroupMark, facet = spec.from && spec.from.facet, overlap = spec.overlap; + let layout = spec.layout || role === ScopeRole || role === FrameRole, ops, op, store, enc, name, layoutRef, boundRef; + const nested = role === MarkRole || layout || facet; // resolve input data + const input = parseData$1(spec.from, group, scope); // data join to map tuples to visual items + op = scope.add(DataJoin({ + key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined), + pulse: input.pulse, + clean: !group + })); + const joinRef = ref(op); // collect visual items + op = store = scope.add(Collect({ + pulse: joinRef + })); // connect visual items to scenegraph + op = scope.add(Mark({ + markdef: definition(spec), + interactive: interactive(spec.interactive, scope), + clip: clip(spec.clip, scope), + context: { + $context: true + }, + groups: scope.lookup(), + parent: scope.signals.parent ? scope.signalRef("parent") : null, + index: scope.markpath(), + pulse: ref(op) + })); + const markRef = ref(op); // add visual encoders + op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, { + mod: false, + pulse: markRef + }))); // monitor parent marks to propagate changes + op.params.parent = scope.encode(); // add post-encoding transforms, if defined + if (spec.transform) spec.transform.forEach((_)=>{ + const tx = parseTransform(_, scope), md = tx.metadata; + if (md.generates || md.changes) (0, _vegaUtil.error)("Mark transforms should not generate new data."); + if (!md.nomod) enc.params.mod = true; // update encode mod handling + tx.params.pulse = ref(op); + scope.add(op = tx); + }); + // if item sort specified, perform post-encoding + if (spec.sort) op = scope.add(SortItems({ + sort: scope.compareRef(spec.sort), + pulse: ref(op) + })); + const encodeRef = ref(op); // add view layout operator if needed + if (facet || layout) { + layout = scope.add(ViewLayout({ + layout: scope.objectProperty(spec.layout), + legends: scope.legends, + mark: markRef, + pulse: encodeRef + })); + layoutRef = ref(layout); + } // compute bounding boxes + const bound = scope.add(Bound({ + mark: markRef, + pulse: layoutRef || encodeRef + })); + boundRef = ref(bound); // if group mark, recurse to parse nested content + if (group) { + // juggle layout & bounds to ensure they run *after* any faceting transforms + if (nested) { + ops = scope.operators; + ops.pop(); + if (layout) ops.pop(); + } + scope.pushState(encodeRef, layoutRef || boundRef, joinRef); + facet ? parseFacet(spec, scope, input) // explicit facet + : nested ? parseSubflow(spec, scope, input) // standard mark group + : scope.parse(spec); // guide group, we can avoid nested scopes + scope.popState(); + if (nested) { + if (layout) ops.push(layout); + ops.push(bound); + } + } // if requested, add overlap removal transform + if (overlap) boundRef = parseOverlap(overlap, boundRef, scope); + // render / sieve items + const render = scope.add(Render({ + pulse: boundRef + })), sieve = scope.add(Sieve({ + pulse: ref(render) + }, undefined, scope.parent())); // if mark is named, make accessible as reactive geometry + // add trigger updates if defined + if (spec.name != null) { + name = spec.name; + scope.addData(name, new DataScope(scope, store, render, sieve)); + if (spec.on) spec.on.forEach((on)=>{ + if (on.insert || on.remove || on.toggle) (0, _vegaUtil.error)("Marks only support modify triggers."); + parseTrigger(on, scope, name); + }); + } } -function parseParameter$1(_, name, scope) { - return (0, _vegaUtil.isArray)(_) ? _.map((_)=>parseParameter$1(_, name, scope)) : !(0, _vegaUtil.isObject)(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === "fit" ? _ : (0, _vegaUtil.error)("Unsupported parameter object: " + (0, _vegaUtil.stringValue)(_)); +function parseOverlap(overlap, source, scope) { + const method = overlap.method, bound = overlap.bound, sep = overlap.separation; + const params = { + separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep, + method: isSignal(method) ? scope.signalRef(method.signal) : method, + pulse: source + }; + if (overlap.order) params.sort = scope.compareRef({ + field: overlap.order + }); + if (bound) { + const tol = bound.tolerance; + params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol; + params.boundScale = scope.scaleRef(bound.scale); + params.boundOrient = bound.orient; + } + return ref(scope.add(Overlap(params))); } -const Top = "top"; -const Left = "left"; -const Right = "right"; -const Bottom = "bottom"; -const Center = "center"; -const Vertical = "vertical"; -const Start = "start"; -const Middle = "middle"; -const End = "end"; -const Index = "index"; -const Label = "label"; -const Offset = "offset"; -const Perc = "perc"; -const Perc2 = "perc2"; -const Value = "value"; -const GuideLabelStyle = "guide-label"; -const GuideTitleStyle = "guide-title"; -const GroupTitleStyle = "group-title"; -const GroupSubtitleStyle = "group-subtitle"; -const Symbols = "symbol"; -const Gradient = "gradient"; -const Discrete = "discrete"; -const Size = "size"; -const Shape = "shape"; -const Fill = "fill"; -const Stroke = "stroke"; -const StrokeWidth = "strokeWidth"; -const StrokeDash = "strokeDash"; -const Opacity = "opacity"; // Encoding channels supported by legends -// In priority order of 'canonical' scale -const LegendScales = [ - Size, - Shape, - Fill, - Stroke, - StrokeWidth, - StrokeDash, - Opacity -]; -const Skip = { - name: 1, - style: 1, - interactive: 1 -}; -const zero = { - value: 0 -}; -const one = { - value: 1 -}; -const GroupMark = "group"; -const RectMark = "rect"; -const RuleMark = "rule"; -const SymbolMark = "symbol"; -const TextMark = "text"; -function guideGroup(mark) { - mark.type = GroupMark; - mark.interactive = mark.interactive || false; - return mark; +function parseLegend(spec, scope) { + const config = scope.config.legend, encode = spec.encode || {}, _ = lookup(spec, config), legendEncode = encode.legend || {}, name = legendEncode.name || undefined, interactive = legendEncode.interactive, style = legendEncode.style, scales = {}; + let scale = 0, entryLayout, params, children; // resolve scales and 'canonical' scale name + LegendScales.forEach((s)=>spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0); + if (!scale) (0, _vegaUtil.error)("Missing valid scale for legend."); // resolve legend type (symbol, gradient, or discrete gradient) + const type = legendType(spec, scope.scaleType(scale)); // single-element data source for legend group + const datum = { + title: spec.title != null, + scales: scales, + type: type, + vgrad: type !== "symbol" && _.isVertical() + }; + const dataRef = ref(scope.add(Collect(null, [ + datum + ]))); // encoding properties for legend entry sub-group + const entryEncode = { + enter: { + x: { + value: 0 + }, + y: { + value: 0 + } + } + }; // data source for legend values + const entryRef = ref(scope.add(LegendEntries(params = { + type: type, + scale: scope.scaleRef(scale), + count: scope.objectProperty(_("tickCount")), + limit: scope.property(_("symbolLimit")), + values: scope.objectProperty(spec.values), + minstep: scope.property(spec.tickMinStep), + formatType: scope.property(spec.formatType), + formatSpecifier: scope.property(spec.format) + }))); // continuous gradient legend + if (type === Gradient) { + children = [ + legendGradient(spec, scale, config, encode.gradient), + legendGradientLabels(spec, config, encode.labels, entryRef) + ]; // adjust default tick count based on the gradient length + params.count = params.count || scope.signalRef(`max(2,2*floor((${deref(_.gradientLength())})/100))`); + } else if (type === Discrete) children = [ + legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), + legendGradientLabels(spec, config, encode.labels, entryRef) + ]; + else { + // determine legend symbol group layout + entryLayout = legendSymbolLayout(spec, config); + children = [ + legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns)) + ]; // pass symbol size information to legend entry generator + params.size = sizeExpression(spec, scope, children[0].marks); + } // generate legend marks + children = [ + guideGroup({ + role: LegendEntryRole, + from: dataRef, + encode: entryEncode, + marks: children, + layout: entryLayout, + interactive + }) + ]; // include legend title if defined + if (datum.title) children.push(legendTitle(spec, config, encode.title, dataRef)); + // parse legend specification + return parseMark(guideGroup({ + role: LegendRole, + from: dataRef, + encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip), + marks: children, + aria: _("aria"), + description: _("description"), + zindex: _("zindex"), + name, + interactive, + style + }), scope); } -function lookup(spec, config) { - const _ = (name, dflt)=>value(spec[name], value(config[name], dflt)); - _.isVertical = (s)=>Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection)); - _.gradientLength = ()=>value(spec.gradientLength, config.gradientLength || config.gradientWidth); - _.gradientThickness = ()=>value(spec.gradientThickness, config.gradientThickness || config.gradientHeight); - _.entryColumns = ()=>value(spec.columns, value(config.columns, +_.isVertical(true))); - return _; +function legendType(spec, scaleType) { + let type = spec.type || Symbols; + if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) type = (0, _vegaScale.isContinuous)(scaleType) ? Gradient : (0, _vegaScale.isDiscretizing)(scaleType) ? Discrete : Symbols; + return type !== Gradient ? type : (0, _vegaScale.isDiscretizing)(scaleType) ? Discrete : Gradient; } -function getEncoding(name, encode) { - const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]); - return v && v.signal ? v : v ? v.value : null; +function scaleCount(spec) { + return LegendScales.reduce((count, type)=>count + (spec[type] ? 1 : 0), 0); } -function getStyle(name, scope, style) { - const s = scope.config.style[style]; - return s && s[name]; +function buildLegendEncode(_, spec, config) { + const encode = { + enter: {}, + update: {} + }; + addEncoders(encode, { + orient: _("orient"), + offset: _("offset"), + padding: _("padding"), + titlePadding: _("titlePadding"), + cornerRadius: _("cornerRadius"), + fill: _("fillColor"), + stroke: _("strokeColor"), + strokeWidth: config.strokeWidth, + strokeDash: config.strokeDash, + x: _("legendX"), + y: _("legendY"), + // accessibility support + format: spec.format, + formatType: spec.formatType + }); + return encode; } -function anchorExpr(s, e, m) { - return `item.anchor === '${Start}' ? ${s} : item.anchor === '${End}' ? ${e} : ${m}`; +function sizeExpression(spec, scope, marks) { + const size = deref(getChannel("size", spec, marks)), strokeWidth = deref(getChannel("strokeWidth", spec, marks)), fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle)); + return (0, _vegaFunctions.parseExpression)(`max(ceil(sqrt(${size})+${strokeWidth}),${fontSize})`, scope); } -const alignExpr$1 = anchorExpr((0, _vegaUtil.stringValue)(Left), (0, _vegaUtil.stringValue)(Right), (0, _vegaUtil.stringValue)(Center)); -function tickBand(_) { - const v = _("tickBand"); - let offset = _("tickOffset"), band, extra; - if (!v) { - // if no tick band entry, fall back on other properties - band = _("bandPosition"); - extra = _("tickExtra"); - } else if (v.signal) { - // if signal, augment code to interpret values - band = { - signal: `(${v.signal}) === 'extent' ? 1 : 0.5` - }; - extra = { - signal: `(${v.signal}) === 'extent'` - }; - if (!(0, _vegaUtil.isObject)(offset)) offset = { - signal: `(${v.signal}) === 'extent' ? 0 : ${offset}` - }; - } else if (v === "extent") { - // if constant, simply set values - band = 1; - extra = true; - offset = 0; - } else { - band = 0.5; - extra = false; - } - return { - extra, - band, - offset - }; +function getChannel(name, spec, marks) { + return spec[name] ? `scale("${spec[name]}",datum)` : getEncoding(name, marks[0].encode); } -function extendOffset(value, offset) { - return !offset ? value : !value ? offset : !(0, _vegaUtil.isObject)(value) ? { - value, - offset - } : Object.assign({}, value, { - offset: extendOffset(value.offset, offset) - }); +function getFontSize(encode, scope, style) { + return getEncoding("fontSize", encode) || getStyle("fontSize", scope, style); } -function guideMark(mark, extras) { - if (extras) { - mark.name = extras.name; - mark.style = extras.style || mark.style; - mark.interactive = !!extras.interactive; - mark.encode = extendEncode(mark.encode, extras, Skip); - } else mark.interactive = false; - return mark; +const angleExpr = `item.orient==="${Left}"?-90:item.orient==="${Right}"?90:0`; +function parseTitle(spec, scope) { + spec = (0, _vegaUtil.isString)(spec) ? { + text: spec + } : spec; + const _ = lookup(spec, scope.config.title), encode = spec.encode || {}, userEncode = encode.group || {}, name = userEncode.name || undefined, interactive = userEncode.interactive, style = userEncode.style, children = []; // single-element data source for group title + const datum = {}, dataRef = ref(scope.add(Collect(null, [ + datum + ]))); // include title text + children.push(buildTitle(spec, _, titleEncode(spec), dataRef)); // include subtitle text + if (spec.subtitle) children.push(buildSubTitle(spec, _, encode.subtitle, dataRef)); + // parse title specification + return parseMark(guideGroup({ + role: TitleRole, + from: dataRef, + encode: groupEncode(_, userEncode), + marks: children, + aria: _("aria"), + description: _("description"), + zindex: _("zindex"), + name, + interactive, + style + }), scope); +} // provide backwards-compatibility for title custom encode; +// the top-level encode block has been *deprecated*. +function titleEncode(spec) { + const encode = spec.encode; + return encode && encode.title || (0, _vegaUtil.extend)({ + name: spec.name, + interactive: spec.interactive, + style: spec.style + }, encode); } -function legendGradient(spec, scale, config, userEncode) { - const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); - let enter, start, stop, width, height; - if (vertical) { - start = [ - 0, - 1 - ]; - stop = [ - 0, - 0 - ]; - width = thickness; - height = length; - } else { - start = [ - 0, - 0 - ]; - stop = [ - 1, - 0 - ]; - width = length; - height = thickness; - } +function groupEncode(_, userEncode) { const encode = { - enter: enter = { - opacity: zero, - x: zero, - y: zero, - width: encoder(width), - height: encoder(height) + enter: {}, + update: {} + }; + addEncoders(encode, { + orient: _("orient"), + anchor: _("anchor"), + align: { + signal: alignExpr$1 }, - update: (0, _vegaUtil.extend)({}, enter, { - opacity: one, - fill: { - gradient: scale, - start: start, - stop: stop + angle: { + signal: angleExpr + }, + limit: _("limit"), + frame: _("frame"), + offset: _("offset") || 0, + padding: _("subtitlePadding") + }); + return extendEncode(encode, userEncode, Skip); +} +function buildTitle(spec, _, userEncode, dataRef) { + const zero = { + value: 0 + }, text = spec.text, encode = { + enter: { + opacity: zero + }, + update: { + opacity: { + value: 1 } - }), + }, exit: { opacity: zero } }; addEncoders(encode, { - stroke: _("gradientStrokeColor"), - strokeWidth: _("gradientStrokeWidth") - }, { - // update - opacity: _("gradientOpacity") + text: text, + align: { + signal: "item.mark.group.align" + }, + angle: { + signal: "item.mark.group.angle" + }, + limit: { + signal: "item.mark.group.limit" + }, + baseline: "top", + dx: _("dx"), + dy: _("dy"), + fill: _("color"), + font: _("font"), + fontSize: _("fontSize"), + fontStyle: _("fontStyle"), + fontWeight: _("fontWeight"), + lineHeight: _("lineHeight") + }, { + // update + align: _("align"), + angle: _("angle"), + baseline: _("baseline") }); return guideMark({ - type: RectMark, - role: LegendGradientRole, + type: TextMark, + role: TitleTextRole, + style: GroupTitleStyle, + from: dataRef, encode }, userEncode); } -function legendGradientDiscrete(spec, scale, config, userEncode, dataRef) { - const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); - let u, v, uu, vv, adjust = ""; - vertical ? (u = "y", uu = "y2", v = "x", vv = "width", adjust = "1-") : (u = "x", uu = "x2", v = "y", vv = "height"); - const enter = { - opacity: zero, - fill: { - scale: scale, - field: Value - } - }; - enter[u] = { - signal: adjust + "datum." + Perc, - mult: length - }; - enter[v] = zero; - enter[uu] = { - signal: adjust + "datum." + Perc2, - mult: length - }; - enter[vv] = encoder(thickness); - const encode = { - enter: enter, - update: (0, _vegaUtil.extend)({}, enter, { - opacity: one - }), +function buildSubTitle(spec, _, userEncode, dataRef) { + const zero = { + value: 0 + }, text = spec.subtitle, encode = { + enter: { + opacity: zero + }, + update: { + opacity: { + value: 1 + } + }, exit: { opacity: zero } }; addEncoders(encode, { - stroke: _("gradientStrokeColor"), - strokeWidth: _("gradientStrokeWidth") + text: text, + align: { + signal: "item.mark.group.align" + }, + angle: { + signal: "item.mark.group.angle" + }, + limit: { + signal: "item.mark.group.limit" + }, + baseline: "top", + dx: _("dx"), + dy: _("dy"), + fill: _("subtitleColor"), + font: _("subtitleFont"), + fontSize: _("subtitleFontSize"), + fontStyle: _("subtitleFontStyle"), + fontWeight: _("subtitleFontWeight"), + lineHeight: _("subtitleLineHeight") }, { // update - opacity: _("gradientOpacity") + align: _("align"), + angle: _("angle"), + baseline: _("baseline") }); return guideMark({ - type: RectMark, - role: LegendBandRole, - key: Value, + type: TextMark, + role: TitleSubtitleRole, + style: GroupSubtitleStyle, from: dataRef, encode }, userEncode); } -const alignExpr = `datum.${Perc}<=0?"${Left}":datum.${Perc}>=1?"${Right}":"${Center}"`, baselineExpr = `datum.${Perc}<=0?"${Bottom}":datum.${Perc}>=1?"${Top}":"${Middle}"`; -function legendGradientLabels(spec, config, userEncode, dataRef) { - const _ = lookup(spec, config), vertical = _.isVertical(), thickness = encoder(_.gradientThickness()), length = _.gradientLength(); - let overlap = _("labelOverlap"), enter, update, u, v, adjust = ""; +function parseData(data, scope) { + const transforms = []; + if (data.transform) data.transform.forEach((tx)=>{ + transforms.push(parseTransform(tx, scope)); + }); + if (data.on) data.on.forEach((on)=>{ + parseTrigger(on, scope, data.name); + }); + scope.addDataPipeline(data.name, analyze(data, scope, transforms)); +} +/** + * Analyze a data pipeline, add needed operators. + */ function analyze(data, scope, ops) { + const output = []; + let source = null, modify = false, generate = false, upstream, i, n, t, m; + if (data.values) { + // hard-wired input data set + if (isSignal(data.values) || hasSignal(data.format)) { + // if either values is signal or format has signal, use dynamic loader + output.push(load(scope, data)); + output.push(source = collect()); + } else // otherwise, ingest upon dataflow init + output.push(source = collect({ + $ingest: data.values, + $format: data.format + })); + } else if (data.url) { + // load data from external source + if (hasSignal(data.url) || hasSignal(data.format)) { + // if either url or format has signal, use dynamic loader + output.push(load(scope, data)); + output.push(source = collect()); + } else // otherwise, request load upon dataflow init + output.push(source = collect({ + $request: data.url, + $format: data.format + })); + } else if (data.source) { + // derives from one or more other data sets + source = upstream = (0, _vegaUtil.array)(data.source).map((d)=>ref(scope.getData(d).output)); + output.push(null); // populate later + } // scan data transforms, add collectors as needed + for(i = 0, n = ops.length; i < n; ++i){ + t = ops[i]; + m = t.metadata; + if (!source && !m.source) output.push(source = collect()); + output.push(t); + if (m.generates) generate = true; + if (m.modifies && !generate) modify = true; + if (m.source) source = t; + else if (m.changes) source = null; + } + if (upstream) { + n = upstream.length - 1; + output[0] = Relay({ + derive: modify, + pulse: n ? upstream : upstream[0] + }); + if (modify || n) // collect derived and multi-pulse tuples + output.splice(1, 0, collect()); + } + if (!source) output.push(collect()); + output.push(Sieve({})); + return output; +} +function collect(values) { + const s = Collect({}, values); + s.metadata = { + source: true + }; + return s; +} +function load(scope, data) { + return Load({ + url: data.url ? scope.property(data.url) : undefined, + async: data.async ? scope.property(data.async) : undefined, + values: data.values ? scope.property(data.values) : undefined, + format: scope.objectProperty(data.format) + }); +} +const isX = (orient)=>orient === Bottom || orient === Top; // get sign coefficient based on axis orient +const getSign = (orient, a, b)=>isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b; // condition on axis x-direction +const ifX = (orient, a, b)=>isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b; // condition on axis y-direction +const ifY = (orient, a, b)=>isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a; +const ifTop = (orient, a, b)=>isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? { + value: a + } : { + value: b + }; +const ifRight = (orient, a, b)=>isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? { + value: a + } : { + value: b + }; +const ifXEnc = ($orient, a, b)=>ifEnc(`${$orient} === '${Top}' || ${$orient} === '${Bottom}'`, a, b); +const ifYEnc = ($orient, a, b)=>ifEnc(`${$orient} !== '${Top}' && ${$orient} !== '${Bottom}'`, a, b); +const ifLeftTopExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Left}' || ${$orient} === '${Top}'`, a, b); +const ifTopExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Top}'`, a, b); +const ifRightExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Right}'`, a, b); +const ifEnc = (test, a, b)=>{ + // ensure inputs are encoder objects (or null) + a = a != null ? encoder(a) : a; + b = b != null ? encoder(b) : b; + if (isSimple(a) && isSimple(b)) { + // if possible generate simple signal expression + a = a ? a.signal || (0, _vegaUtil.stringValue)(a.value) : null; + b = b ? b.signal || (0, _vegaUtil.stringValue)(b.value) : null; + return { + signal: `${test} ? (${a}) : (${b})` + }; + } else // otherwise generate rule set + return [ + (0, _vegaUtil.extend)({ + test + }, a) + ].concat(b || []); +}; +const isSimple = (enc)=>enc == null || Object.keys(enc).length === 1; +const ifExpr = (test, a, b)=>({ + signal: `${test} ? (${toExpr(a)}) : (${toExpr(b)})` + }); +const ifOrient = ($orient, t, b, l, r)=>({ + signal: (l != null ? `${$orient} === '${Left}' ? (${toExpr(l)}) : ` : "") + (b != null ? `${$orient} === '${Bottom}' ? (${toExpr(b)}) : ` : "") + (r != null ? `${$orient} === '${Right}' ? (${toExpr(r)}) : ` : "") + (t != null ? `${$orient} === '${Top}' ? (${toExpr(t)}) : ` : "") + "(null)" + }); +const toExpr = (v)=>isSignal(v) ? v.signal : v == null ? null : (0, _vegaUtil.stringValue)(v); +const mult = (sign, value)=>value === 0 ? 0 : isSignal(sign) ? { + signal: `(${sign.signal}) * ${value}` + } : { + value: sign * value + }; +const patch = (value, base)=>{ + const s = value.signal; + return s && s.endsWith("(null)") ? { + signal: s.slice(0, -6) + base.signal + } : value; +}; +function fallback(prop, config, axisConfig, style) { + let styleProp; + if (config && (0, _vegaUtil.hasOwnProperty)(config, prop)) return config[prop]; + else if ((0, _vegaUtil.hasOwnProperty)(axisConfig, prop)) return axisConfig[prop]; + else if (prop.startsWith("title")) { + switch(prop){ + case "titleColor": + styleProp = "fill"; + break; + case "titleFont": + case "titleFontSize": + case "titleFontWeight": + styleProp = prop[5].toLowerCase() + prop.slice(6); + } + return style[GuideTitleStyle][styleProp]; + } else if (prop.startsWith("label")) { + switch(prop){ + case "labelColor": + styleProp = "fill"; + break; + case "labelFont": + case "labelFontSize": + styleProp = prop[5].toLowerCase() + prop.slice(6); + } + return style[GuideLabelStyle][styleProp]; + } + return null; +} +function keys(objects) { + const map = {}; + for (const obj of objects){ + if (!obj) continue; + for(const key in obj)map[key] = 1; + } + return Object.keys(map); +} +function axisConfig(spec, scope) { + var config = scope.config, style = config.style, axis = config.axis, band = scope.scaleType(spec.scale) === "band" && config.axisBand, orient = spec.orient, xy, or, key; + if (isSignal(orient)) { + const xyKeys = keys([ + config.axisX, + config.axisY + ]), orientKeys = keys([ + config.axisTop, + config.axisBottom, + config.axisLeft, + config.axisRight + ]); + xy = {}; + for (key of xyKeys)xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style)); + or = {}; + for (key of orientKeys)or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style)); + } else { + xy = orient === Top || orient === Bottom ? config.axisX : config.axisY; + or = config["axis" + orient[0].toUpperCase() + orient.slice(1)]; + } + const result = xy || or || band ? (0, _vegaUtil.extend)({}, axis, xy, or, band) : axis; + return result; +} +function axisDomain(spec, config, userEncode, dataRef) { + const _ = lookup(spec, config), orient = spec.orient; + let enter, update; const encode = { enter: enter = { opacity: zero }, update: update = { - opacity: one, - text: { - field: Label - } + opacity: one }, exit: { opacity: zero } }; addEncoders(encode, { - fill: _("labelColor"), - fillOpacity: _("labelOpacity"), - font: _("labelFont"), - fontSize: _("labelFontSize"), - fontStyle: _("labelFontStyle"), - fontWeight: _("labelFontWeight"), - limit: value(spec.labelLimit, config.gradientLabelLimit) + stroke: _("domainColor"), + strokeCap: _("domainCap"), + strokeDash: _("domainDash"), + strokeDashOffset: _("domainDashOffset"), + strokeWidth: _("domainWidth"), + strokeOpacity: _("domainOpacity") }); - if (vertical) { - enter.align = { - value: "left" - }; - enter.baseline = update.baseline = { - signal: baselineExpr - }; - u = "y"; - v = "x"; - adjust = "1-"; - } else { - enter.align = update.align = { - signal: alignExpr - }; - enter.baseline = { - value: "top" - }; - u = "x"; - v = "y"; - } - enter[u] = update[u] = { - signal: adjust + "datum." + Perc, - mult: length - }; - enter[v] = update[v] = thickness; - thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0; - overlap = overlap ? { - separation: _("labelSeparation"), - method: overlap, - order: "datum." + Index - } : undefined; // type, role, style, key, dataRef, encode, extras + const pos0 = position(spec, 0); + const pos1 = position(spec, 1); + enter.x = update.x = ifX(orient, pos0, zero); + enter.x2 = update.x2 = ifX(orient, pos1); + enter.y = update.y = ifY(orient, pos0, zero); + enter.y2 = update.y2 = ifY(orient, pos1); return guideMark({ - type: TextMark, - role: LegendLabelRole, - style: GuideLabelStyle, - key: Value, + type: RuleMark, + role: AxisDomainRole, from: dataRef, - encode, - overlap + encode }, userEncode); } -function legendSymbolGroups(spec, config, userEncode, dataRef, columns) { - const _ = lookup(spec, config), entries = userEncode.entries, interactive = !!(entries && entries.interactive), name = entries ? entries.name : undefined, height = _("clipHeight"), symbolOffset = _("symbolOffset"), valueRef = { - data: "value" - }, xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`, yEncode = height ? encoder(height) : { - field: Size - }, index = `datum.${Index}`, ncols = `max(1, ${columns})`; - let encode, enter, update, nrows, sort; - yEncode.mult = 0.5; // -- LEGEND SYMBOLS -- - encode = { +function position(spec, pos) { + return { + scale: spec.scale, + range: pos + }; +} +function axisGrid(spec, config, userEncode, dataRef, band) { + const _ = lookup(spec, config), orient = spec.orient, vscale = spec.gridScale, sign = getSign(orient, 1, -1), offset = offsetValue(spec.offset, sign); + let enter, exit, update; + const encode = { enter: enter = { - opacity: zero, - x: { - signal: xSignal, - mult: 0.5, - offset: symbolOffset - }, - y: yEncode + opacity: zero }, update: update = { - opacity: one, - x: enter.x, - y: enter.y + opacity: one }, - exit: { + exit: exit = { opacity: zero } }; - let baseFill = null, baseStroke = null; - if (!spec.fill) { - baseFill = config.symbolBaseFillColor; - baseStroke = config.symbolBaseStrokeColor; - } addEncoders(encode, { - fill: _("symbolFillColor", baseFill), - shape: _("symbolType"), - size: _("symbolSize"), - stroke: _("symbolStrokeColor", baseStroke), - strokeDash: _("symbolDash"), - strokeDashOffset: _("symbolDashOffset"), - strokeWidth: _("symbolStrokeWidth") + stroke: _("gridColor"), + strokeCap: _("gridCap"), + strokeDash: _("gridDash"), + strokeDashOffset: _("gridDashOffset"), + strokeOpacity: _("gridOpacity"), + strokeWidth: _("gridWidth") + }); + const tickPos = { + scale: spec.scale, + field: Value, + band: band.band, + extra: band.extra, + offset: band.offset, + round: _("tickRound") + }; + const sz = ifX(orient, { + signal: "height" }, { - // update - opacity: _("symbolOpacity") + signal: "width" }); - LegendScales.forEach((scale)=>{ - if (spec[scale]) update[scale] = enter[scale] = { - scale: spec[scale], - field: Value - }; + const gridStart = vscale ? { + scale: vscale, + range: 0, + mult: sign, + offset: offset + } : { + value: 0, + offset: offset + }; + const gridEnd = vscale ? { + scale: vscale, + range: 1, + mult: sign, + offset: offset + } : (0, _vegaUtil.extend)(sz, { + mult: sign, + offset: offset }); - const symbols = guideMark({ - type: SymbolMark, - role: LegendSymbolRole, + enter.x = update.x = ifX(orient, tickPos, gridStart); + enter.y = update.y = ifY(orient, tickPos, gridStart); + enter.x2 = update.x2 = ifY(orient, gridEnd); + enter.y2 = update.y2 = ifX(orient, gridEnd); + exit.x = ifX(orient, tickPos); + exit.y = ifY(orient, tickPos); + return guideMark({ + type: RuleMark, + role: AxisGridRole, key: Value, - from: valueRef, - clip: height ? true : undefined, + from: dataRef, encode - }, userEncode.symbols); // -- LEGEND LABELS -- - const labelOffset = encoder(symbolOffset); - labelOffset.offset = _("labelOffset"); - encode = { + }, userEncode); +} +function offsetValue(offset, sign) { + if (sign === 1) ; + else if (!(0, _vegaUtil.isObject)(offset)) offset = isSignal(sign) ? { + signal: `(${sign.signal}) * (${offset || 0})` + } : sign * (offset || 0); + else { + let entry = offset = (0, _vegaUtil.extend)({}, offset); + while(entry.mult != null)if (!(0, _vegaUtil.isObject)(entry.mult)) { + entry.mult = isSignal(sign) // no offset if sign === 1 + ? { + signal: `(${entry.mult}) * (${sign.signal})` + } : entry.mult * sign; + return offset; + } else entry = entry.mult = (0, _vegaUtil.extend)({}, entry.mult); + entry.mult = sign; + } + return offset; +} +function axisTicks(spec, config, userEncode, dataRef, size, band) { + const _ = lookup(spec, config), orient = spec.orient, sign = getSign(orient, -1, 1); + let enter, exit, update; + const encode = { enter: enter = { - opacity: zero, - x: { - signal: xSignal, - offset: labelOffset - }, - y: yEncode + opacity: zero }, update: update = { - opacity: one, - text: { - field: Label - }, - x: enter.x, - y: enter.y + opacity: one }, - exit: { + exit: exit = { opacity: zero } }; addEncoders(encode, { - align: _("labelAlign"), - baseline: _("labelBaseline"), + stroke: _("tickColor"), + strokeCap: _("tickCap"), + strokeDash: _("tickDash"), + strokeDashOffset: _("tickDashOffset"), + strokeOpacity: _("tickOpacity"), + strokeWidth: _("tickWidth") + }); + const tickSize = encoder(size); + tickSize.mult = sign; + const tickPos = { + scale: spec.scale, + field: Value, + band: band.band, + extra: band.extra, + offset: band.offset, + round: _("tickRound") + }; + update.y = enter.y = ifX(orient, zero, tickPos); + update.y2 = enter.y2 = ifX(orient, tickSize); + exit.x = ifX(orient, tickPos); + update.x = enter.x = ifY(orient, zero, tickPos); + update.x2 = enter.x2 = ifY(orient, tickSize); + exit.y = ifY(orient, tickPos); + return guideMark({ + type: RuleMark, + role: AxisTickRole, + key: Value, + from: dataRef, + encode + }, userEncode); +} +function flushExpr(scale, threshold, a, b, c) { + return { + signal: 'flush(range("' + scale + '"), ' + 'scale("' + scale + '", datum.value), ' + threshold + "," + a + "," + b + "," + c + ")" + }; +} +function axisLabels(spec, config, userEncode, dataRef, size, band) { + const _ = lookup(spec, config), orient = spec.orient, scale = spec.scale, sign = getSign(orient, -1, 1), flush = deref(_("labelFlush")), flushOffset = deref(_("labelFlushOffset")), labelAlign = _("labelAlign"), labelBaseline = _("labelBaseline"); + let flushOn = flush === 0 || !!flush, update; + const tickSize = encoder(size); + tickSize.mult = sign; + tickSize.offset = encoder(_("labelPadding") || 0); + tickSize.offset.mult = sign; + const tickPos = { + scale: scale, + field: Value, + band: 0.5, + offset: extendOffset(band.offset, _("labelOffset")) + }; + const align = ifX(orient, flushOn ? flushExpr(scale, flush, '"left"', '"right"', '"center"') : { + value: "center" + }, ifRight(orient, "left", "right")); + const baseline = ifX(orient, ifTop(orient, "bottom", "top"), flushOn ? flushExpr(scale, flush, '"top"', '"bottom"', '"middle"') : { + value: "middle" + }); + const offsetExpr = flushExpr(scale, flush, `-(${flushOffset})`, flushOffset, 0); + flushOn = flushOn && flushOffset; + const enter = { + opacity: zero, + x: ifX(orient, tickPos, tickSize), + y: ifY(orient, tickPos, tickSize) + }; + const encode = { + enter: enter, + update: update = { + opacity: one, + text: { + field: Label + }, + x: enter.x, + y: enter.y, + align, + baseline + }, + exit: { + opacity: zero, + x: enter.x, + y: enter.y + } + }; + addEncoders(encode, { + dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null, + dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null + }); + addEncoders(encode, { + angle: _("labelAngle"), fill: _("labelColor"), fillOpacity: _("labelOpacity"), font: _("labelFont"), fontSize: _("labelFontSize"), - fontStyle: _("labelFontStyle"), fontWeight: _("labelFontWeight"), - limit: _("labelLimit") + fontStyle: _("labelFontStyle"), + limit: _("labelLimit"), + lineHeight: _("labelLineHeight") + }, { + align: labelAlign, + baseline: labelBaseline }); - const labels = guideMark({ + const bound = _("labelBound"); + let overlap = _("labelOverlap"); // if overlap method or bound defined, request label overlap removal + overlap = overlap || bound ? { + separation: _("labelSeparation"), + method: overlap, + order: "datum.index", + bound: bound ? { + scale, + orient, + tolerance: bound + } : null + } : undefined; + if (update.align !== align) update.align = patch(update.align, align); + if (update.baseline !== baseline) update.baseline = patch(update.baseline, baseline); + return guideMark({ type: TextMark, - role: LegendLabelRole, + role: AxisLabelRole, style: GuideLabelStyle, key: Value, - from: valueRef, - encode - }, userEncode.labels); // -- LEGEND ENTRY GROUPS -- - encode = { - enter: { - noBound: { - value: !height - }, - // ignore width/height in bounds calc - width: zero, - height: height ? encoder(height) : zero, - opacity: zero - }, - exit: { - opacity: zero - }, - update: update = { - opacity: one, - row: { - signal: null - }, - column: { - signal: null - } - } - }; // annotate and sort groups to ensure correct ordering - if (_.isVertical(true)) { - nrows = `ceil(item.mark.items.length / ${ncols})`; - update.row.signal = `${index}%${nrows}`; - update.column.signal = `floor(${index} / ${nrows})`; - sort = { - field: [ - "row", - index - ] - }; - } else { - update.row.signal = `floor(${index} / ${ncols})`; - update.column.signal = `${index} % ${ncols}`; - sort = { - field: index - }; - } // handle zero column case (implies infinite columns) - update.column.signal = `(${columns})?${update.column.signal}:${index}`; // facet legend entries into sub-groups - dataRef = { - facet: { - data: dataRef, - name: "value", - groupby: Index - } - }; - return guideGroup({ - role: ScopeRole, from: dataRef, - encode: extendEncode(encode, entries, Skip), - marks: [ - symbols, - labels - ], - name, - interactive, - sort - }); -} -function legendSymbolLayout(spec, config) { - const _ = lookup(spec, config); // layout parameters for legend entries - return { - align: _("gridAlign"), - columns: _.entryColumns(), - center: { - row: true, - column: false - }, - padding: { - row: _("rowPadding"), - column: _("columnPadding") - } - }; + encode, + overlap + }, userEncode); } -const isL = 'item.orient === "left"', isR = 'item.orient === "right"', isLR = `(${isL} || ${isR})`, isVG = `datum.vgrad && ${isLR}`, baseline = anchorExpr('"top"', '"bottom"', '"middle"'), alignFlip = anchorExpr('"right"', '"left"', '"center"'), exprAlign = `datum.vgrad && ${isR} ? (${alignFlip}) : (${isLR} && !(datum.vgrad && ${isL})) ? "left" : ${alignExpr$1}`, exprAnchor = `item._anchor || (${isLR} ? "middle" : "start")`, exprAngle = `${isVG} ? (${isL} ? -90 : 90) : 0`, exprBaseline = `${isLR} ? (datum.vgrad ? (${isR} ? "bottom" : "top") : ${baseline}) : "top"`; -function legendTitle(spec, config, userEncode, dataRef) { - const _ = lookup(spec, config); +function axisTitle(spec, config, userEncode, dataRef) { + const _ = lookup(spec, config), orient = spec.orient, sign = getSign(orient, -1, 1); + let enter, update; const encode = { - enter: { - opacity: zero - }, - update: { - opacity: one, - x: { - field: { - group: "padding" - } - }, - y: { - field: { - group: "padding" - } + enter: enter = { + opacity: zero, + anchor: encoder(_("titleAnchor", null)), + align: { + signal: alignExpr$1 } }, + update: update = (0, _vegaUtil.extend)({}, enter, { + opacity: one, + text: encoder(spec.title) + }), exit: { opacity: zero } }; + const titlePos = { + signal: `lerp(range("${spec.scale}"), ${anchorExpr(0, 1, 0.5)})` + }; + update.x = ifX(orient, titlePos); + update.y = ifY(orient, titlePos); + enter.angle = ifX(orient, zero, mult(sign, 90)); + enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), { + value: Bottom + }); + update.angle = enter.angle; + update.baseline = enter.baseline; addEncoders(encode, { - orient: _("titleOrient"), - _anchor: _("titleAnchor"), - anchor: { - signal: exprAnchor - }, - angle: { - signal: exprAngle - }, - align: { - signal: exprAlign - }, - baseline: { - signal: exprBaseline - }, - text: spec.title, fill: _("titleColor"), fillOpacity: _("titleOpacity"), font: _("titleFont"), @@ -41972,3355 +44615,765 @@ function legendTitle(spec, config, userEncode, dataRef) { }, { // require update align: _("titleAlign"), + angle: _("titleAngle"), baseline: _("titleBaseline") }); + autoLayout(_, orient, encode, userEncode); + encode.update.align = patch(encode.update.align, enter.align); + encode.update.angle = patch(encode.update.angle, enter.angle); + encode.update.baseline = patch(encode.update.baseline, enter.baseline); return guideMark({ type: TextMark, - role: LegendTitleRole, + role: AxisTitleRole, style: GuideTitleStyle, from: dataRef, encode }, userEncode); } -function clip(clip, scope) { - let expr; - if ((0, _vegaUtil.isObject)(clip)) { - if (clip.signal) expr = clip.signal; - else if (clip.path) expr = "pathShape(" + param(clip.path) + ")"; - else if (clip.sphere) expr = "geoShape(" + param(clip.sphere) + ', {type: "Sphere"})'; - } - return expr ? scope.signalRef(expr) : !!clip; -} -function param(value) { - return (0, _vegaUtil.isObject)(value) && value.signal ? value.signal : (0, _vegaUtil.stringValue)(value); -} -function getRole(spec) { - const role = spec.role || ""; - return !role.indexOf("axis") || !role.indexOf("legend") || !role.indexOf("title") ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole; +function autoLayout(_, orient, encode, userEncode) { + const auto = (value, dim)=>value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false; + const autoY = auto(_("titleX"), "x"), autoX = auto(_("titleY"), "y"); + encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY)); } -function definition(spec) { - return { - marktype: spec.type, - name: spec.name || undefined, - role: spec.role || getRole(spec), - zindex: +spec.zindex || undefined, - aria: spec.aria, - description: spec.description +function parseAxis(spec, scope) { + const config = axisConfig(spec, scope), encode = spec.encode || {}, axisEncode = encode.axis || {}, name = axisEncode.name || undefined, interactive = axisEncode.interactive, style = axisEncode.style, _ = lookup(spec, config), band = tickBand(_); // single-element data source for axis group + const datum = { + scale: spec.scale, + ticks: !!_("ticks"), + labels: !!_("labels"), + grid: !!_("grid"), + domain: !!_("domain"), + title: spec.title != null }; + const dataRef = ref(scope.add(Collect({}, [ + datum + ]))); // data source for axis ticks + const ticksRef = ref(scope.add(AxisTicks({ + scale: scope.scaleRef(spec.scale), + extra: scope.property(band.extra), + count: scope.objectProperty(spec.tickCount), + values: scope.objectProperty(spec.values), + minstep: scope.property(spec.tickMinStep), + formatType: scope.property(spec.formatType), + formatSpecifier: scope.property(spec.format) + }))); // generate axis marks + const children = []; + let size; // include axis gridlines if requested + if (datum.grid) children.push(axisGrid(spec, config, encode.grid, ticksRef, band)); + // include axis ticks if requested + if (datum.ticks) { + size = _("tickSize"); + children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band)); + } // include axis labels if requested + if (datum.labels) { + size = datum.ticks ? size : 0; + children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band)); + } // include axis domain path if requested + if (datum.domain) children.push(axisDomain(spec, config, encode.domain, dataRef)); + // include axis title if defined + if (datum.title) children.push(axisTitle(spec, config, encode.title, dataRef)); + // parse axis specification + return parseMark(guideGroup({ + role: AxisRole, + from: dataRef, + encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip), + marks: children, + aria: _("aria"), + description: _("description"), + zindex: _("zindex"), + name, + interactive, + style + }), scope); } -function interactive(spec, scope) { - return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true; -} -/** - * Parse a data transform specification. - */ function parseTransform(spec, scope) { - const def = (0, _vegaDataflow.definition)(spec.type); - if (!def) (0, _vegaUtil.error)("Unrecognized transform type: " + (0, _vegaUtil.stringValue)(spec.type)); - const t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope)); - if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t)); - t.metadata = def.metadata || {}; - return t; +function buildAxisEncode(_, spec) { + const encode = { + enter: {}, + update: {} + }; + addEncoders(encode, { + orient: _("orient"), + offset: _("offset") || 0, + position: value(spec.position, 0), + titlePadding: _("titlePadding"), + minExtent: _("minExtent"), + maxExtent: _("maxExtent"), + range: { + signal: `abs(span(range("${spec.scale}")))` + }, + translate: _("translate"), + // accessibility support + format: spec.format, + formatType: spec.formatType + }); + return encode; } -/** - * Parse all parameters of a data transform. - */ function parseParameters(def, spec, scope) { - const params = {}, n = def.params.length; - for(let i = 0; i < n; ++i){ - const pdef = def.params[i]; - params[pdef.name] = parseParameter(pdef, spec, scope); - } - return params; +function parseScope(spec, scope, preprocessed) { + const signals = (0, _vegaUtil.array)(spec.signals), scales = (0, _vegaUtil.array)(spec.scales); // parse signal definitions, if not already preprocessed + if (!preprocessed) signals.forEach((_)=>parseSignal(_, scope)); // parse cartographic projection definitions + (0, _vegaUtil.array)(spec.projections).forEach((_)=>parseProjection(_, scope)); // initialize scale references + scales.forEach((_)=>initScale(_, scope)); // parse data sources + (0, _vegaUtil.array)(spec.data).forEach((_)=>parseData(_, scope)); // parse scale definitions + scales.forEach((_)=>parseScale(_, scope)); // parse signal updates + (preprocessed || signals).forEach((_)=>parseSignalUpdates(_, scope)); // parse axis definitions + (0, _vegaUtil.array)(spec.axes).forEach((_)=>parseAxis(_, scope)); // parse mark definitions + (0, _vegaUtil.array)(spec.marks).forEach((_)=>parseMark(_, scope)); // parse legend definitions + (0, _vegaUtil.array)(spec.legends).forEach((_)=>parseLegend(_, scope)); // parse title, if defined + if (spec.title) parseTitle(spec.title, scope); // parse collected lambda (anonymous) expressions + scope.parseLambdas(); + return scope; } -/** - * Parse a data transform parameter. - */ function parseParameter(def, spec, scope) { - const type = def.type, value = spec[def.name]; - if (type === "index") return parseIndexParameter(def, spec, scope); - else if (value === undefined) { - if (def.required) (0, _vegaUtil.error)("Missing required " + (0, _vegaUtil.stringValue)(spec.type) + " parameter: " + (0, _vegaUtil.stringValue)(def.name)); - return; - } else if (type === "param") return parseSubParameters(def, spec, scope); - else if (type === "projection") return scope.projectionRef(spec[def.name]); - return def.array && !isSignal(value) ? value.map((v)=>parameterValue(def, v, scope)) : parameterValue(def, value, scope); +const rootEncode = (spec)=>extendEncode({ + enter: { + x: { + value: 0 + }, + y: { + value: 0 + } + }, + update: { + width: { + signal: "width" + }, + height: { + signal: "height" + } + } + }, spec); +function parseView(spec, scope) { + const config = scope.config; // add scenegraph root + const root = ref(scope.root = scope.add(operator())); // parse top-level signal definitions + const signals = collectSignals(spec, config); + signals.forEach((_)=>parseSignal(_, scope)); // assign description, event, legend, and locale configuration + scope.description = spec.description || config.description; + scope.eventConfig = config.events; + scope.legends = scope.objectProperty(config.legend && config.legend.layout); + scope.locale = config.locale; // store root group item + const input = scope.add(Collect()); // encode root group item + const encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, { + pulse: ref(input) + }))); // perform view layout + const parent = scope.add(ViewLayout({ + layout: scope.objectProperty(spec.layout), + legends: scope.legends, + autosize: scope.signalRef("autosize"), + mark: root, + pulse: ref(encode) + })); + scope.operators.pop(); // parse remainder of specification + scope.pushState(ref(encode), ref(parent), null); + parseScope(spec, scope, signals); + scope.operators.push(parent); // bound / render / sieve root item + let op = scope.add(Bound({ + mark: root, + pulse: ref(parent) + })); + op = scope.add(Render({ + pulse: ref(op) + })); + op = scope.add(Sieve({ + pulse: ref(op) + })); // track metadata for root item + scope.addData("root", new DataScope(scope, input, input, op)); + return scope; } -/** - * Parse a single parameter value. - */ function parameterValue(def, value, scope) { - const type = def.type; - if (isSignal(value)) return isExpr(type) ? (0, _vegaUtil.error)("Expression references can not be signals.") : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal); - else { - const expr = def.expr || isField(type); - return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? (0, _vegaFunctions.parseExpression)(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value; - } +function signalObject(name, value) { + return value && value.signal ? { + name, + update: value.signal + } : { + name, + value + }; } /** - * Parse parameter for accessing an index of another data set. - */ function parseIndexParameter(def, spec, scope) { - if (!(0, _vegaUtil.isString)(spec.from)) (0, _vegaUtil.error)('Lookup "from" parameter must be a string literal.'); - return scope.getData(spec.from).lookupRef(scope, spec.key); + * Collect top-level signals, merging values as needed. Signals + * defined in the config signals arrays are added only if that + * signal is not explicitly defined in the specification. + * Built-in signals (autosize, background, padding, width, height) + * receive special treatment. They are initialized using the + * top-level spec property, or, if undefined in the spec, using + * the corresponding top-level config property. If this property + * is a signal reference object, the signal expression maps to the + * signal 'update' property. If the spec's top-level signal array + * contains an entry that matches a built-in signal, that entry + * will be merged with the built-in specification, potentially + * overwriting existing 'value' or 'update' properties. + */ function collectSignals(spec, config) { + const _ = (name)=>value(spec[name], config[name]), signals = [ + signalObject("background", _("background")), + signalObject("autosize", parseAutosize(_("autosize"))), + signalObject("padding", parsePadding(_("padding"))), + signalObject("width", _("width") || 0), + signalObject("height", _("height") || 0) + ], pre = signals.reduce((p, s)=>(p[s.name] = s, p), {}), map = {}; // add spec signal array + (0, _vegaUtil.array)(spec.signals).forEach((s)=>{ + if ((0, _vegaUtil.hasOwnProperty)(pre, s.name)) // merge if built-in signal + s = (0, _vegaUtil.extend)(pre[s.name], s); + else // otherwise add to signal list + signals.push(s); + map[s.name] = s; + }); // add config signal array + (0, _vegaUtil.array)(config.signals).forEach((s)=>{ + if (!(0, _vegaUtil.hasOwnProperty)(map, s.name) && !(0, _vegaUtil.hasOwnProperty)(pre, s.name)) // add to signal list if not already defined + signals.push(s); + }); + return signals; } -/** - * Parse a parameter that contains one or more sub-parameter objects. - */ function parseSubParameters(def, spec, scope) { - const value = spec[def.name]; - if (def.array) { - if (!(0, _vegaUtil.isArray)(value)) // signals not allowed! - (0, _vegaUtil.error)("Expected an array of sub-parameters. Instead: " + (0, _vegaUtil.stringValue)(value)); - return value.map((v)=>parseSubParameter(def, v, scope)); - } else return parseSubParameter(def, value, scope); -} -/** - * Parse a sub-parameter object. - */ function parseSubParameter(def, value, scope) { - const n = def.params.length; - let pdef; // loop over defs to find matching key - for(let i = 0; i < n; ++i){ - pdef = def.params[i]; - for(const k in pdef.key)if (pdef.key[k] !== value[k]) { - pdef = null; - break; - } - if (pdef) break; - } // raise error if matching key not found - if (!pdef) (0, _vegaUtil.error)("Unsupported parameter: " + (0, _vegaUtil.stringValue)(value)); // parse params, create Params transform, return ref - const params = (0, _vegaUtil.extend)(parseParameters(pdef, value, scope), pdef.key); - return ref(scope.add(Params(params))); -} // -- Utilities ----- -const outerExpr = (_)=>_ && _.expr; -const outerField = (_)=>_ && _.field; -const isData = (_)=>_ === "data"; -const isExpr = (_)=>_ === "expr"; -const isField = (_)=>_ === "field"; -const isCompare = (_)=>_ === "compare"; -function parseData$1(from, group, scope) { - let facet, key, op, dataRef, parent; // if no source data, generate singleton datum - if (!from) dataRef = ref(scope.add(Collect(null, [ - {} - ]))); - else if (facet = from.facet) { - if (!group) (0, _vegaUtil.error)("Only group marks can be faceted."); // use pre-faceted source data, if available - if (facet.field != null) dataRef = parent = getDataRef(facet, scope); - else { - // generate facet aggregates if no direct data specification - if (!from.data) { - op = parseTransform((0, _vegaUtil.extend)({ - type: "aggregate", - groupby: (0, _vegaUtil.array)(facet.groupby) - }, facet.aggregate), scope); - op.params.key = scope.keyRef(facet.groupby); - op.params.pulse = getDataRef(facet, scope); - dataRef = parent = ref(scope.add(op)); - } else parent = ref(scope.getData(from.data).aggregate); - key = scope.keyRef(facet.groupby, true); - } - } // if not yet defined, get source data reference - if (!dataRef) dataRef = getDataRef(from, scope); - return { - key: key, - pulse: dataRef, - parent: parent - }; -} -function getDataRef(from, scope) { - return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output); -} -function DataScope(scope, input, output, values, aggr) { - this.scope = scope; // parent scope object - this.input = input; // first operator in pipeline (tuple input) - this.output = output; // last operator in pipeline (tuple output) - this.values = values; // operator for accessing tuples (but not tuple flow) - // last aggregate in transform pipeline - this.aggregate = aggr; // lookup table of field indices - this.index = {}; -} -DataScope.fromEntries = function(scope, entries) { - const n = entries.length, values = entries[n - 1], output = entries[n - 2]; - let input = entries[0], aggr = null, i = 1; - if (input && input.type === "load") input = entries[1]; - // add operator entries to this scope, wire up pulse chain - scope.add(entries[0]); - for(; i < n; ++i){ - entries[i].params.pulse = ref(entries[i - 1]); - scope.add(entries[i]); - if (entries[i].type === "aggregate") aggr = entries[i]; - } - return new DataScope(scope, input, output, values, aggr); -}; -function fieldKey(field) { - return (0, _vegaUtil.isString)(field) ? field : null; -} -function addSortField(scope, p, sort) { - const as = aggrField(sort.op, sort.field); - let s; - if (p.ops) for(let i = 0, n = p.as.length; i < n; ++i){ - if (p.as[i] === as) return; - } - else { - p.ops = [ - "count" - ]; - p.fields = [ - null - ]; - p.as = [ - "count" - ]; - } - if (sort.op) { - p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op); - p.fields.push(scope.fieldRef(sort.field)); - p.as.push(as); - } +function Scope(config, options) { + this.config = config || {}; + this.options = options || {}; + this.bindings = []; + this.field = {}; + this.signals = {}; + this.lambdas = {}; + this.scales = {}; + this.events = {}; + this.data = {}; + this.streams = []; + this.updates = []; + this.operators = []; + this.eventConfig = null; + this.locale = null; + this._id = 0; + this._subid = 0; + this._nextsub = [ + 0 + ]; + this._parent = []; + this._encode = []; + this._lookup = []; + this._markpath = []; } -function cache(scope, ds, name, optype, field, counts, index) { - const cache = ds[name] || (ds[name] = {}), sort = sortKey(counts); - let k = fieldKey(field), v, op; - if (k != null) { - scope = ds.scope; - k = k + (sort ? "|" + sort : ""); - v = cache[k]; - } - if (!v) { - const params = counts ? { - field: keyFieldRef, - pulse: ds.countsRef(scope, field, counts) - } : { - field: scope.fieldRef(field), - pulse: ref(ds.output) - }; - if (sort) params.sort = scope.sortRef(counts); - op = scope.add(entry(optype, undefined, params)); - if (index) ds.index[field] = op; - v = ref(op); - if (k != null) cache[k] = v; - } - return v; +function Subscope(scope) { + this.config = scope.config; + this.options = scope.options; + this.legends = scope.legends; + this.field = Object.create(scope.field); + this.signals = Object.create(scope.signals); + this.lambdas = Object.create(scope.lambdas); + this.scales = Object.create(scope.scales); + this.events = Object.create(scope.events); + this.data = Object.create(scope.data); + this.streams = []; + this.updates = []; + this.operators = []; + this._id = 0; + this._subid = ++scope._nextsub[0]; + this._nextsub = scope._nextsub; + this._parent = scope._parent.slice(); + this._encode = scope._encode.slice(); + this._lookup = scope._lookup.slice(); + this._markpath = scope._markpath; } -DataScope.prototype = { - countsRef (scope, field, sort) { - const ds = this, cache = ds.counts || (ds.counts = {}), k = fieldKey(field); - let v, a, p; - if (k != null) { - scope = ds.scope; - v = cache[k]; - } - if (!v) { - p = { - groupby: scope.fieldRef(field, "key"), - pulse: ref(ds.output) - }; - if (sort && sort.field) addSortField(scope, p, sort); - a = scope.add(Aggregate(p)); - v = scope.add(Collect({ - pulse: ref(a) - })); - v = { - agg: a, - ref: ref(v) - }; - if (k != null) cache[k] = v; - } else if (sort && sort.field) addSortField(scope, v.agg.params, sort); - return v.ref; +Scope.prototype = Subscope.prototype = { + parse (spec) { + return parseScope(spec, this); }, - tuplesRef () { - return ref(this.values); + fork () { + return new Subscope(this); }, - extentRef (scope, field) { - return cache(scope, this, "extent", "extent", field, false); + isSubscope () { + return this._subid > 0; }, - domainRef (scope, field) { - return cache(scope, this, "domain", "values", field, false); + toRuntime () { + this.finish(); + return { + description: this.description, + operators: this.operators, + streams: this.streams, + updates: this.updates, + bindings: this.bindings, + eventConfig: this.eventConfig, + locale: this.locale + }; }, - valuesRef (scope, field, sort) { - return cache(scope, this, "vals", "values", field, sort || true); + id () { + return (this._subid ? this._subid + ":" : 0) + this._id++; }, - lookupRef (scope, field) { - return cache(scope, this, "lookup", "tupleindex", field, false); + add (op) { + this.operators.push(op); + op.id = this.id(); // if pre-registration references exist, resolve them now + if (op.refs) { + op.refs.forEach((ref)=>{ + ref.$ref = op.id; + }); + op.refs = null; + } + return op; }, - indataRef (scope, field) { - return cache(scope, this, "indata", "tupleindex", field, true, true); - } -}; -function parseFacet(spec, scope, group) { - const facet = spec.from.facet, name = facet.name, data = getDataRef(facet, scope); - let op; - if (!facet.name) (0, _vegaUtil.error)("Facet must have a name: " + (0, _vegaUtil.stringValue)(facet)); - if (!facet.data) (0, _vegaUtil.error)("Facet must reference a data set: " + (0, _vegaUtil.stringValue)(facet)); - if (facet.field) op = scope.add(PreFacet({ - field: scope.fieldRef(facet.field), - pulse: data - })); - else if (facet.groupby) op = scope.add(Facet({ - key: scope.keyRef(facet.groupby), - group: ref(scope.proxy(group.parent)), - pulse: data - })); - else (0, _vegaUtil.error)("Facet must specify groupby or field: " + (0, _vegaUtil.stringValue)(facet)); - // initialize facet subscope - const subscope = scope.fork(), source = subscope.add(Collect()), values = subscope.add(Sieve({ - pulse: ref(source) - })); - subscope.addData(name, new DataScope(subscope, source, source, values)); - subscope.addSignal("parent", null); // parse faceted subflow - op.params.subflow = { - $subflow: subscope.parse(spec).toRuntime() - }; -} -function parseSubflow(spec, scope, input) { - const op = scope.add(PreFacet({ - pulse: input.pulse - })), subscope = scope.fork(); - subscope.add(Sieve()); - subscope.addSignal("parent", null); // parse group mark subflow - op.params.subflow = { - $subflow: subscope.parse(spec).toRuntime() - }; -} -function parseTrigger(spec, scope, name) { - const remove = spec.remove, insert = spec.insert, toggle = spec.toggle, modify = spec.modify, values = spec.values, op = scope.add(operator()); - const update = "if(" + spec.trigger + ',modify("' + name + '",' + [ - insert, - remove, - toggle, - modify, - values - ].map((_)=>_ == null ? "null" : _).join(",") + "),0)"; - const expr = (0, _vegaFunctions.parseExpression)(update, scope); - op.update = expr.$expr; - op.params = expr.$params; -} -function parseMark(spec, scope) { - const role = getRole(spec), group = spec.type === GroupMark, facet = spec.from && spec.from.facet, overlap = spec.overlap; - let layout = spec.layout || role === ScopeRole || role === FrameRole, ops, op, store, enc, name, layoutRef, boundRef; - const nested = role === MarkRole || layout || facet; // resolve input data - const input = parseData$1(spec.from, group, scope); // data join to map tuples to visual items - op = scope.add(DataJoin({ - key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined), - pulse: input.pulse, - clean: !group - })); - const joinRef = ref(op); // collect visual items - op = store = scope.add(Collect({ - pulse: joinRef - })); // connect visual items to scenegraph - op = scope.add(Mark({ - markdef: definition(spec), - interactive: interactive(spec.interactive, scope), - clip: clip(spec.clip, scope), - context: { - $context: true - }, - groups: scope.lookup(), - parent: scope.signals.parent ? scope.signalRef("parent") : null, - index: scope.markpath(), - pulse: ref(op) - })); - const markRef = ref(op); // add visual encoders - op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, { - mod: false, - pulse: markRef - }))); // monitor parent marks to propagate changes - op.params.parent = scope.encode(); // add post-encoding transforms, if defined - if (spec.transform) spec.transform.forEach((_)=>{ - const tx = parseTransform(_, scope), md = tx.metadata; - if (md.generates || md.changes) (0, _vegaUtil.error)("Mark transforms should not generate new data."); - if (!md.nomod) enc.params.mod = true; // update encode mod handling - tx.params.pulse = ref(op); - scope.add(op = tx); - }); - // if item sort specified, perform post-encoding - if (spec.sort) op = scope.add(SortItems({ - sort: scope.compareRef(spec.sort), - pulse: ref(op) - })); - const encodeRef = ref(op); // add view layout operator if needed - if (facet || layout) { - layout = scope.add(ViewLayout({ - layout: scope.objectProperty(spec.layout), - legends: scope.legends, - mark: markRef, - pulse: encodeRef + proxy (op) { + const vref = op instanceof Entry ? ref(op) : op; + return this.add(Proxy({ + value: vref })); - layoutRef = ref(layout); - } // compute bounding boxes - const bound = scope.add(Bound({ - mark: markRef, - pulse: layoutRef || encodeRef - })); - boundRef = ref(bound); // if group mark, recurse to parse nested content - if (group) { - // juggle layout & bounds to ensure they run *after* any faceting transforms - if (nested) { - ops = scope.operators; - ops.pop(); - if (layout) ops.pop(); + }, + addStream (stream) { + this.streams.push(stream); + stream.id = this.id(); + return stream; + }, + addUpdate (update) { + this.updates.push(update); + return update; + }, + // Apply metadata + finish () { + let name, ds; // annotate root + if (this.root) this.root.root = true; // annotate signals + for(name in this.signals)this.signals[name].signal = name; + // annotate scales + for(name in this.scales)this.scales[name].scale = name; + // annotate data sets + function annotate(op, name, type) { + let data, list; + if (op) { + data = op.data || (op.data = {}); + list = data[name] || (data[name] = []); + list.push(type); + } } - scope.pushState(encodeRef, layoutRef || boundRef, joinRef); - facet ? parseFacet(spec, scope, input) // explicit facet - : nested ? parseSubflow(spec, scope, input) // standard mark group - : scope.parse(spec); // guide group, we can avoid nested scopes - scope.popState(); - if (nested) { - if (layout) ops.push(layout); - ops.push(bound); + for(name in this.data){ + ds = this.data[name]; + annotate(ds.input, name, "input"); + annotate(ds.output, name, "output"); + annotate(ds.values, name, "values"); + for(const field in ds.index)annotate(ds.index[field], name, "index:" + field); } - } // if requested, add overlap removal transform - if (overlap) boundRef = parseOverlap(overlap, boundRef, scope); - // render / sieve items - const render = scope.add(Render({ - pulse: boundRef - })), sieve = scope.add(Sieve({ - pulse: ref(render) - }, undefined, scope.parent())); // if mark is named, make accessible as reactive geometry - // add trigger updates if defined - if (spec.name != null) { - name = spec.name; - scope.addData(name, new DataScope(scope, store, render, sieve)); - if (spec.on) spec.on.forEach((on)=>{ - if (on.insert || on.remove || on.toggle) (0, _vegaUtil.error)("Marks only support modify triggers."); - parseTrigger(on, scope, name); - }); - } -} -function parseOverlap(overlap, source, scope) { - const method = overlap.method, bound = overlap.bound, sep = overlap.separation; - const params = { - separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep, - method: isSignal(method) ? scope.signalRef(method.signal) : method, - pulse: source - }; - if (overlap.order) params.sort = scope.compareRef({ - field: overlap.order - }); - if (bound) { - const tol = bound.tolerance; - params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol; - params.boundScale = scope.scaleRef(bound.scale); - params.boundOrient = bound.orient; - } - return ref(scope.add(Overlap(params))); -} -function parseLegend(spec, scope) { - const config = scope.config.legend, encode = spec.encode || {}, _ = lookup(spec, config), legendEncode = encode.legend || {}, name = legendEncode.name || undefined, interactive = legendEncode.interactive, style = legendEncode.style, scales = {}; - let scale = 0, entryLayout, params, children; // resolve scales and 'canonical' scale name - LegendScales.forEach((s)=>spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0); - if (!scale) (0, _vegaUtil.error)("Missing valid scale for legend."); // resolve legend type (symbol, gradient, or discrete gradient) - const type = legendType(spec, scope.scaleType(scale)); // single-element data source for legend group - const datum = { - title: spec.title != null, - scales: scales, - type: type, - vgrad: type !== "symbol" && _.isVertical() - }; - const dataRef = ref(scope.add(Collect(null, [ - datum - ]))); // encoding properties for legend entry sub-group - const entryEncode = { - enter: { - x: { - value: 0 - }, - y: { - value: 0 - } + return this; + }, + // ---- + pushState (encode, parent, lookup) { + this._encode.push(ref(this.add(Sieve({ + pulse: encode + })))); + this._parent.push(parent); + this._lookup.push(lookup ? ref(this.proxy(lookup)) : null); + this._markpath.push(-1); + }, + popState () { + this._encode.pop(); + this._parent.pop(); + this._lookup.pop(); + this._markpath.pop(); + }, + parent () { + return (0, _vegaUtil.peek)(this._parent); + }, + encode () { + return (0, _vegaUtil.peek)(this._encode); + }, + lookup () { + return (0, _vegaUtil.peek)(this._lookup); + }, + markpath () { + const p = this._markpath; + return ++p[p.length - 1]; + }, + // ---- + fieldRef (field, name) { + if ((0, _vegaUtil.isString)(field)) return fieldRef$1(field, name); + if (!field.signal) (0, _vegaUtil.error)("Unsupported field reference: " + (0, _vegaUtil.stringValue)(field)); + const s = field.signal; + let f = this.field[s]; + if (!f) { + const params = { + name: this.signalRef(s) + }; + if (name) params.as = name; + this.field[s] = f = ref(this.add(Field(params))); } - }; // data source for legend values - const entryRef = ref(scope.add(LegendEntries(params = { - type: type, - scale: scope.scaleRef(scale), - count: scope.objectProperty(_("tickCount")), - limit: scope.property(_("symbolLimit")), - values: scope.objectProperty(spec.values), - minstep: scope.property(spec.tickMinStep), - formatType: scope.property(spec.formatType), - formatSpecifier: scope.property(spec.format) - }))); // continuous gradient legend - if (type === Gradient) { - children = [ - legendGradient(spec, scale, config, encode.gradient), - legendGradientLabels(spec, config, encode.labels, entryRef) - ]; // adjust default tick count based on the gradient length - params.count = params.count || scope.signalRef(`max(2,2*floor((${deref(_.gradientLength())})/100))`); - } else if (type === Discrete) children = [ - legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), - legendGradientLabels(spec, config, encode.labels, entryRef) - ]; - else { - // determine legend symbol group layout - entryLayout = legendSymbolLayout(spec, config); - children = [ - legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns)) - ]; // pass symbol size information to legend entry generator - params.size = sizeExpression(spec, scope, children[0].marks); - } // generate legend marks - children = [ - guideGroup({ - role: LegendEntryRole, - from: dataRef, - encode: entryEncode, - marks: children, - layout: entryLayout, - interactive - }) - ]; // include legend title if defined - if (datum.title) children.push(legendTitle(spec, config, encode.title, dataRef)); - // parse legend specification - return parseMark(guideGroup({ - role: LegendRole, - from: dataRef, - encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip), - marks: children, - aria: _("aria"), - description: _("description"), - zindex: _("zindex"), - name, - interactive, - style - }), scope); -} -function legendType(spec, scaleType) { - let type = spec.type || Symbols; - if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) type = (0, _vegaScale.isContinuous)(scaleType) ? Gradient : (0, _vegaScale.isDiscretizing)(scaleType) ? Discrete : Symbols; - return type !== Gradient ? type : (0, _vegaScale.isDiscretizing)(scaleType) ? Discrete : Gradient; -} -function scaleCount(spec) { - return LegendScales.reduce((count, type)=>count + (spec[type] ? 1 : 0), 0); -} -function buildLegendEncode(_, spec, config) { - const encode = { - enter: {}, - update: {} - }; - addEncoders(encode, { - orient: _("orient"), - offset: _("offset"), - padding: _("padding"), - titlePadding: _("titlePadding"), - cornerRadius: _("cornerRadius"), - fill: _("fillColor"), - stroke: _("strokeColor"), - strokeWidth: config.strokeWidth, - strokeDash: config.strokeDash, - x: _("legendX"), - y: _("legendY"), - // accessibility support - format: spec.format, - formatType: spec.formatType - }); - return encode; -} -function sizeExpression(spec, scope, marks) { - const size = deref(getChannel("size", spec, marks)), strokeWidth = deref(getChannel("strokeWidth", spec, marks)), fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle)); - return (0, _vegaFunctions.parseExpression)(`max(ceil(sqrt(${size})+${strokeWidth}),${fontSize})`, scope); -} -function getChannel(name, spec, marks) { - return spec[name] ? `scale("${spec[name]}",datum)` : getEncoding(name, marks[0].encode); -} -function getFontSize(encode, scope, style) { - return getEncoding("fontSize", encode) || getStyle("fontSize", scope, style); -} -const angleExpr = `item.orient==="${Left}"?-90:item.orient==="${Right}"?90:0`; -function parseTitle(spec, scope) { - spec = (0, _vegaUtil.isString)(spec) ? { - text: spec - } : spec; - const _ = lookup(spec, scope.config.title), encode = spec.encode || {}, userEncode = encode.group || {}, name = userEncode.name || undefined, interactive = userEncode.interactive, style = userEncode.style, children = []; // single-element data source for group title - const datum = {}, dataRef = ref(scope.add(Collect(null, [ - datum - ]))); // include title text - children.push(buildTitle(spec, _, titleEncode(spec), dataRef)); // include subtitle text - if (spec.subtitle) children.push(buildSubTitle(spec, _, encode.subtitle, dataRef)); - // parse title specification - return parseMark(guideGroup({ - role: TitleRole, - from: dataRef, - encode: groupEncode(_, userEncode), - marks: children, - aria: _("aria"), - description: _("description"), - zindex: _("zindex"), - name, - interactive, - style - }), scope); -} // provide backwards-compatibility for title custom encode; -// the top-level encode block has been *deprecated*. -function titleEncode(spec) { - const encode = spec.encode; - return encode && encode.title || (0, _vegaUtil.extend)({ - name: spec.name, - interactive: spec.interactive, - style: spec.style - }, encode); -} -function groupEncode(_, userEncode) { - const encode = { - enter: {}, - update: {} - }; - addEncoders(encode, { - orient: _("orient"), - anchor: _("anchor"), - align: { - signal: alignExpr$1 - }, - angle: { - signal: angleExpr - }, - limit: _("limit"), - frame: _("frame"), - offset: _("offset") || 0, - padding: _("subtitlePadding") - }); - return extendEncode(encode, userEncode, Skip); -} -function buildTitle(spec, _, userEncode, dataRef) { - const zero = { - value: 0 - }, text = spec.text, encode = { - enter: { - opacity: zero - }, - update: { - opacity: { - value: 1 - } - }, - exit: { - opacity: zero - } - }; - addEncoders(encode, { - text: text, - align: { - signal: "item.mark.group.align" - }, - angle: { - signal: "item.mark.group.angle" - }, - limit: { - signal: "item.mark.group.limit" - }, - baseline: "top", - dx: _("dx"), - dy: _("dy"), - fill: _("color"), - font: _("font"), - fontSize: _("fontSize"), - fontStyle: _("fontStyle"), - fontWeight: _("fontWeight"), - lineHeight: _("lineHeight") - }, { - // update - align: _("align"), - angle: _("angle"), - baseline: _("baseline") - }); - return guideMark({ - type: TextMark, - role: TitleTextRole, - style: GroupTitleStyle, - from: dataRef, - encode - }, userEncode); -} -function buildSubTitle(spec, _, userEncode, dataRef) { - const zero = { - value: 0 - }, text = spec.subtitle, encode = { - enter: { - opacity: zero - }, - update: { - opacity: { - value: 1 - } - }, - exit: { - opacity: zero - } - }; - addEncoders(encode, { - text: text, - align: { - signal: "item.mark.group.align" - }, - angle: { - signal: "item.mark.group.angle" - }, - limit: { - signal: "item.mark.group.limit" - }, - baseline: "top", - dx: _("dx"), - dy: _("dy"), - fill: _("subtitleColor"), - font: _("subtitleFont"), - fontSize: _("subtitleFontSize"), - fontStyle: _("subtitleFontStyle"), - fontWeight: _("subtitleFontWeight"), - lineHeight: _("subtitleLineHeight") - }, { - // update - align: _("align"), - angle: _("angle"), - baseline: _("baseline") - }); - return guideMark({ - type: TextMark, - role: TitleSubtitleRole, - style: GroupSubtitleStyle, - from: dataRef, - encode - }, userEncode); -} -function parseData(data, scope) { - const transforms = []; - if (data.transform) data.transform.forEach((tx)=>{ - transforms.push(parseTransform(tx, scope)); - }); - if (data.on) data.on.forEach((on)=>{ - parseTrigger(on, scope, data.name); - }); - scope.addDataPipeline(data.name, analyze(data, scope, transforms)); -} -/** - * Analyze a data pipeline, add needed operators. - */ function analyze(data, scope, ops) { - const output = []; - let source = null, modify = false, generate = false, upstream, i, n, t, m; - if (data.values) { - // hard-wired input data set - if (isSignal(data.values) || hasSignal(data.format)) { - // if either values is signal or format has signal, use dynamic loader - output.push(load(scope, data)); - output.push(source = collect()); - } else // otherwise, ingest upon dataflow init - output.push(source = collect({ - $ingest: data.values, - $format: data.format - })); - } else if (data.url) { - // load data from external source - if (hasSignal(data.url) || hasSignal(data.format)) { - // if either url or format has signal, use dynamic loader - output.push(load(scope, data)); - output.push(source = collect()); - } else // otherwise, request load upon dataflow init - output.push(source = collect({ - $request: data.url, - $format: data.format - })); - } else if (data.source) { - // derives from one or more other data sets - source = upstream = (0, _vegaUtil.array)(data.source).map((d)=>ref(scope.getData(d).output)); - output.push(null); // populate later - } // scan data transforms, add collectors as needed - for(i = 0, n = ops.length; i < n; ++i){ - t = ops[i]; - m = t.metadata; - if (!source && !m.source) output.push(source = collect()); - output.push(t); - if (m.generates) generate = true; - if (m.modifies && !generate) modify = true; - if (m.source) source = t; - else if (m.changes) source = null; - } - if (upstream) { - n = upstream.length - 1; - output[0] = Relay({ - derive: modify, - pulse: n ? upstream : upstream[0] - }); - if (modify || n) // collect derived and multi-pulse tuples - output.splice(1, 0, collect()); - } - if (!source) output.push(collect()); - output.push(Sieve({})); - return output; -} -function collect(values) { - const s = Collect({}, values); - s.metadata = { - source: true - }; - return s; -} -function load(scope, data) { - return Load({ - url: data.url ? scope.property(data.url) : undefined, - async: data.async ? scope.property(data.async) : undefined, - values: data.values ? scope.property(data.values) : undefined, - format: scope.objectProperty(data.format) - }); -} -const isX = (orient)=>orient === Bottom || orient === Top; // get sign coefficient based on axis orient -const getSign = (orient, a, b)=>isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b; // condition on axis x-direction -const ifX = (orient, a, b)=>isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b; // condition on axis y-direction -const ifY = (orient, a, b)=>isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a; -const ifTop = (orient, a, b)=>isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? { - value: a - } : { - value: b - }; -const ifRight = (orient, a, b)=>isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? { - value: a - } : { - value: b - }; -const ifXEnc = ($orient, a, b)=>ifEnc(`${$orient} === '${Top}' || ${$orient} === '${Bottom}'`, a, b); -const ifYEnc = ($orient, a, b)=>ifEnc(`${$orient} !== '${Top}' && ${$orient} !== '${Bottom}'`, a, b); -const ifLeftTopExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Left}' || ${$orient} === '${Top}'`, a, b); -const ifTopExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Top}'`, a, b); -const ifRightExpr = ($orient, a, b)=>ifExpr(`${$orient} === '${Right}'`, a, b); -const ifEnc = (test, a, b)=>{ - // ensure inputs are encoder objects (or null) - a = a != null ? encoder(a) : a; - b = b != null ? encoder(b) : b; - if (isSimple(a) && isSimple(b)) { - // if possible generate simple signal expression - a = a ? a.signal || (0, _vegaUtil.stringValue)(a.value) : null; - b = b ? b.signal || (0, _vegaUtil.stringValue)(b.value) : null; - return { - signal: `${test} ? (${a}) : (${b})` - }; - } else // otherwise generate rule set - return [ - (0, _vegaUtil.extend)({ - test - }, a) - ].concat(b || []); -}; -const isSimple = (enc)=>enc == null || Object.keys(enc).length === 1; -const ifExpr = (test, a, b)=>({ - signal: `${test} ? (${toExpr(a)}) : (${toExpr(b)})` - }); -const ifOrient = ($orient, t, b, l, r)=>({ - signal: (l != null ? `${$orient} === '${Left}' ? (${toExpr(l)}) : ` : "") + (b != null ? `${$orient} === '${Bottom}' ? (${toExpr(b)}) : ` : "") + (r != null ? `${$orient} === '${Right}' ? (${toExpr(r)}) : ` : "") + (t != null ? `${$orient} === '${Top}' ? (${toExpr(t)}) : ` : "") + "(null)" - }); -const toExpr = (v)=>isSignal(v) ? v.signal : v == null ? null : (0, _vegaUtil.stringValue)(v); -const mult = (sign, value)=>value === 0 ? 0 : isSignal(sign) ? { - signal: `(${sign.signal}) * ${value}` - } : { - value: sign * value - }; -const patch = (value, base)=>{ - const s = value.signal; - return s && s.endsWith("(null)") ? { - signal: s.slice(0, -6) + base.signal - } : value; -}; -function fallback(prop, config, axisConfig, style) { - let styleProp; - if (config && (0, _vegaUtil.hasOwnProperty)(config, prop)) return config[prop]; - else if ((0, _vegaUtil.hasOwnProperty)(axisConfig, prop)) return axisConfig[prop]; - else if (prop.startsWith("title")) { - switch(prop){ - case "titleColor": - styleProp = "fill"; - break; - case "titleFont": - case "titleFontSize": - case "titleFontWeight": - styleProp = prop[5].toLowerCase() + prop.slice(6); - } - return style[GuideTitleStyle][styleProp]; - } else if (prop.startsWith("label")) { - switch(prop){ - case "labelColor": - styleProp = "fill"; - break; - case "labelFont": - case "labelFontSize": - styleProp = prop[5].toLowerCase() + prop.slice(6); - } - return style[GuideLabelStyle][styleProp]; - } - return null; -} -function keys(objects) { - const map = {}; - for (const obj of objects){ - if (!obj) continue; - for(const key in obj)map[key] = 1; - } - return Object.keys(map); -} -function axisConfig(spec, scope) { - var config = scope.config, style = config.style, axis = config.axis, band = scope.scaleType(spec.scale) === "band" && config.axisBand, orient = spec.orient, xy, or, key; - if (isSignal(orient)) { - const xyKeys = keys([ - config.axisX, - config.axisY - ]), orientKeys = keys([ - config.axisTop, - config.axisBottom, - config.axisLeft, - config.axisRight - ]); - xy = {}; - for (key of xyKeys)xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style)); - or = {}; - for (key of orientKeys)or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style)); - } else { - xy = orient === Top || orient === Bottom ? config.axisX : config.axisY; - or = config["axis" + orient[0].toUpperCase() + orient.slice(1)]; - } - const result = xy || or || band ? (0, _vegaUtil.extend)({}, axis, xy, or, band) : axis; - return result; -} -function axisDomain(spec, config, userEncode, dataRef) { - const _ = lookup(spec, config), orient = spec.orient; - let enter, update; - const encode = { - enter: enter = { - opacity: zero - }, - update: update = { - opacity: one - }, - exit: { - opacity: zero - } - }; - addEncoders(encode, { - stroke: _("domainColor"), - strokeCap: _("domainCap"), - strokeDash: _("domainDash"), - strokeDashOffset: _("domainDashOffset"), - strokeWidth: _("domainWidth"), - strokeOpacity: _("domainOpacity") - }); - const pos0 = position(spec, 0); - const pos1 = position(spec, 1); - enter.x = update.x = ifX(orient, pos0, zero); - enter.x2 = update.x2 = ifX(orient, pos1); - enter.y = update.y = ifY(orient, pos0, zero); - enter.y2 = update.y2 = ifY(orient, pos1); - return guideMark({ - type: RuleMark, - role: AxisDomainRole, - from: dataRef, - encode - }, userEncode); -} -function position(spec, pos) { - return { - scale: spec.scale, - range: pos - }; -} -function axisGrid(spec, config, userEncode, dataRef, band) { - const _ = lookup(spec, config), orient = spec.orient, vscale = spec.gridScale, sign = getSign(orient, 1, -1), offset = offsetValue(spec.offset, sign); - let enter, exit, update; - const encode = { - enter: enter = { - opacity: zero - }, - update: update = { - opacity: one - }, - exit: exit = { - opacity: zero - } - }; - addEncoders(encode, { - stroke: _("gridColor"), - strokeCap: _("gridCap"), - strokeDash: _("gridDash"), - strokeDashOffset: _("gridDashOffset"), - strokeOpacity: _("gridOpacity"), - strokeWidth: _("gridWidth") - }); - const tickPos = { - scale: spec.scale, - field: Value, - band: band.band, - extra: band.extra, - offset: band.offset, - round: _("tickRound") - }; - const sz = ifX(orient, { - signal: "height" - }, { - signal: "width" - }); - const gridStart = vscale ? { - scale: vscale, - range: 0, - mult: sign, - offset: offset - } : { - value: 0, - offset: offset - }; - const gridEnd = vscale ? { - scale: vscale, - range: 1, - mult: sign, - offset: offset - } : (0, _vegaUtil.extend)(sz, { - mult: sign, - offset: offset - }); - enter.x = update.x = ifX(orient, tickPos, gridStart); - enter.y = update.y = ifY(orient, tickPos, gridStart); - enter.x2 = update.x2 = ifY(orient, gridEnd); - enter.y2 = update.y2 = ifX(orient, gridEnd); - exit.x = ifX(orient, tickPos); - exit.y = ifY(orient, tickPos); - return guideMark({ - type: RuleMark, - role: AxisGridRole, - key: Value, - from: dataRef, - encode - }, userEncode); -} -function offsetValue(offset, sign) { - if (sign === 1) ; - else if (!(0, _vegaUtil.isObject)(offset)) offset = isSignal(sign) ? { - signal: `(${sign.signal}) * (${offset || 0})` - } : sign * (offset || 0); - else { - let entry = offset = (0, _vegaUtil.extend)({}, offset); - while(entry.mult != null)if (!(0, _vegaUtil.isObject)(entry.mult)) { - entry.mult = isSignal(sign) // no offset if sign === 1 - ? { - signal: `(${entry.mult}) * (${sign.signal})` - } : entry.mult * sign; - return offset; - } else entry = entry.mult = (0, _vegaUtil.extend)({}, entry.mult); - entry.mult = sign; - } - return offset; -} -function axisTicks(spec, config, userEncode, dataRef, size, band) { - const _ = lookup(spec, config), orient = spec.orient, sign = getSign(orient, -1, 1); - let enter, exit, update; - const encode = { - enter: enter = { - opacity: zero - }, - update: update = { - opacity: one - }, - exit: exit = { - opacity: zero - } - }; - addEncoders(encode, { - stroke: _("tickColor"), - strokeCap: _("tickCap"), - strokeDash: _("tickDash"), - strokeDashOffset: _("tickDashOffset"), - strokeOpacity: _("tickOpacity"), - strokeWidth: _("tickWidth") - }); - const tickSize = encoder(size); - tickSize.mult = sign; - const tickPos = { - scale: spec.scale, - field: Value, - band: band.band, - extra: band.extra, - offset: band.offset, - round: _("tickRound") - }; - update.y = enter.y = ifX(orient, zero, tickPos); - update.y2 = enter.y2 = ifX(orient, tickSize); - exit.x = ifX(orient, tickPos); - update.x = enter.x = ifY(orient, zero, tickPos); - update.x2 = enter.x2 = ifY(orient, tickSize); - exit.y = ifY(orient, tickPos); - return guideMark({ - type: RuleMark, - role: AxisTickRole, - key: Value, - from: dataRef, - encode - }, userEncode); -} -function flushExpr(scale, threshold, a, b, c) { - return { - signal: 'flush(range("' + scale + '"), ' + 'scale("' + scale + '", datum.value), ' + threshold + "," + a + "," + b + "," + c + ")" - }; -} -function axisLabels(spec, config, userEncode, dataRef, size, band) { - const _ = lookup(spec, config), orient = spec.orient, scale = spec.scale, sign = getSign(orient, -1, 1), flush = deref(_("labelFlush")), flushOffset = deref(_("labelFlushOffset")), labelAlign = _("labelAlign"), labelBaseline = _("labelBaseline"); - let flushOn = flush === 0 || !!flush, update; - const tickSize = encoder(size); - tickSize.mult = sign; - tickSize.offset = encoder(_("labelPadding") || 0); - tickSize.offset.mult = sign; - const tickPos = { - scale: scale, - field: Value, - band: 0.5, - offset: extendOffset(band.offset, _("labelOffset")) - }; - const align = ifX(orient, flushOn ? flushExpr(scale, flush, '"left"', '"right"', '"center"') : { - value: "center" - }, ifRight(orient, "left", "right")); - const baseline = ifX(orient, ifTop(orient, "bottom", "top"), flushOn ? flushExpr(scale, flush, '"top"', '"bottom"', '"middle"') : { - value: "middle" - }); - const offsetExpr = flushExpr(scale, flush, `-(${flushOffset})`, flushOffset, 0); - flushOn = flushOn && flushOffset; - const enter = { - opacity: zero, - x: ifX(orient, tickPos, tickSize), - y: ifY(orient, tickPos, tickSize) - }; - const encode = { - enter: enter, - update: update = { - opacity: one, - text: { - field: Label - }, - x: enter.x, - y: enter.y, - align, - baseline - }, - exit: { - opacity: zero, - x: enter.x, - y: enter.y - } - }; - addEncoders(encode, { - dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null, - dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null - }); - addEncoders(encode, { - angle: _("labelAngle"), - fill: _("labelColor"), - fillOpacity: _("labelOpacity"), - font: _("labelFont"), - fontSize: _("labelFontSize"), - fontWeight: _("labelFontWeight"), - fontStyle: _("labelFontStyle"), - limit: _("labelLimit"), - lineHeight: _("labelLineHeight") - }, { - align: labelAlign, - baseline: labelBaseline - }); - const bound = _("labelBound"); - let overlap = _("labelOverlap"); // if overlap method or bound defined, request label overlap removal - overlap = overlap || bound ? { - separation: _("labelSeparation"), - method: overlap, - order: "datum.index", - bound: bound ? { - scale, - orient, - tolerance: bound - } : null - } : undefined; - if (update.align !== align) update.align = patch(update.align, align); - if (update.baseline !== baseline) update.baseline = patch(update.baseline, baseline); - return guideMark({ - type: TextMark, - role: AxisLabelRole, - style: GuideLabelStyle, - key: Value, - from: dataRef, - encode, - overlap - }, userEncode); -} -function axisTitle(spec, config, userEncode, dataRef) { - const _ = lookup(spec, config), orient = spec.orient, sign = getSign(orient, -1, 1); - let enter, update; - const encode = { - enter: enter = { - opacity: zero, - anchor: encoder(_("titleAnchor", null)), - align: { - signal: alignExpr$1 - } - }, - update: update = (0, _vegaUtil.extend)({}, enter, { - opacity: one, - text: encoder(spec.title) - }), - exit: { - opacity: zero - } - }; - const titlePos = { - signal: `lerp(range("${spec.scale}"), ${anchorExpr(0, 1, 0.5)})` - }; - update.x = ifX(orient, titlePos); - update.y = ifY(orient, titlePos); - enter.angle = ifX(orient, zero, mult(sign, 90)); - enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), { - value: Bottom - }); - update.angle = enter.angle; - update.baseline = enter.baseline; - addEncoders(encode, { - fill: _("titleColor"), - fillOpacity: _("titleOpacity"), - font: _("titleFont"), - fontSize: _("titleFontSize"), - fontStyle: _("titleFontStyle"), - fontWeight: _("titleFontWeight"), - limit: _("titleLimit"), - lineHeight: _("titleLineHeight") - }, { - // require update - align: _("titleAlign"), - angle: _("titleAngle"), - baseline: _("titleBaseline") - }); - autoLayout(_, orient, encode, userEncode); - encode.update.align = patch(encode.update.align, enter.align); - encode.update.angle = patch(encode.update.angle, enter.angle); - encode.update.baseline = patch(encode.update.baseline, enter.baseline); - return guideMark({ - type: TextMark, - role: AxisTitleRole, - style: GuideTitleStyle, - from: dataRef, - encode - }, userEncode); -} -function autoLayout(_, orient, encode, userEncode) { - const auto = (value, dim)=>value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false; - const autoY = auto(_("titleX"), "x"), autoX = auto(_("titleY"), "y"); - encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY)); -} -function parseAxis(spec, scope) { - const config = axisConfig(spec, scope), encode = spec.encode || {}, axisEncode = encode.axis || {}, name = axisEncode.name || undefined, interactive = axisEncode.interactive, style = axisEncode.style, _ = lookup(spec, config), band = tickBand(_); // single-element data source for axis group - const datum = { - scale: spec.scale, - ticks: !!_("ticks"), - labels: !!_("labels"), - grid: !!_("grid"), - domain: !!_("domain"), - title: spec.title != null - }; - const dataRef = ref(scope.add(Collect({}, [ - datum - ]))); // data source for axis ticks - const ticksRef = ref(scope.add(AxisTicks({ - scale: scope.scaleRef(spec.scale), - extra: scope.property(band.extra), - count: scope.objectProperty(spec.tickCount), - values: scope.objectProperty(spec.values), - minstep: scope.property(spec.tickMinStep), - formatType: scope.property(spec.formatType), - formatSpecifier: scope.property(spec.format) - }))); // generate axis marks - const children = []; - let size; // include axis gridlines if requested - if (datum.grid) children.push(axisGrid(spec, config, encode.grid, ticksRef, band)); - // include axis ticks if requested - if (datum.ticks) { - size = _("tickSize"); - children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band)); - } // include axis labels if requested - if (datum.labels) { - size = datum.ticks ? size : 0; - children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band)); - } // include axis domain path if requested - if (datum.domain) children.push(axisDomain(spec, config, encode.domain, dataRef)); - // include axis title if defined - if (datum.title) children.push(axisTitle(spec, config, encode.title, dataRef)); - // parse axis specification - return parseMark(guideGroup({ - role: AxisRole, - from: dataRef, - encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip), - marks: children, - aria: _("aria"), - description: _("description"), - zindex: _("zindex"), - name, - interactive, - style - }), scope); -} -function buildAxisEncode(_, spec) { - const encode = { - enter: {}, - update: {} - }; - addEncoders(encode, { - orient: _("orient"), - offset: _("offset") || 0, - position: value(spec.position, 0), - titlePadding: _("titlePadding"), - minExtent: _("minExtent"), - maxExtent: _("maxExtent"), - range: { - signal: `abs(span(range("${spec.scale}")))` - }, - translate: _("translate"), - // accessibility support - format: spec.format, - formatType: spec.formatType - }); - return encode; -} -function parseScope(spec, scope, preprocessed) { - const signals = (0, _vegaUtil.array)(spec.signals), scales = (0, _vegaUtil.array)(spec.scales); // parse signal definitions, if not already preprocessed - if (!preprocessed) signals.forEach((_)=>parseSignal(_, scope)); // parse cartographic projection definitions - (0, _vegaUtil.array)(spec.projections).forEach((_)=>parseProjection(_, scope)); // initialize scale references - scales.forEach((_)=>initScale(_, scope)); // parse data sources - (0, _vegaUtil.array)(spec.data).forEach((_)=>parseData(_, scope)); // parse scale definitions - scales.forEach((_)=>parseScale(_, scope)); // parse signal updates - (preprocessed || signals).forEach((_)=>parseSignalUpdates(_, scope)); // parse axis definitions - (0, _vegaUtil.array)(spec.axes).forEach((_)=>parseAxis(_, scope)); // parse mark definitions - (0, _vegaUtil.array)(spec.marks).forEach((_)=>parseMark(_, scope)); // parse legend definitions - (0, _vegaUtil.array)(spec.legends).forEach((_)=>parseLegend(_, scope)); // parse title, if defined - if (spec.title) parseTitle(spec.title, scope); // parse collected lambda (anonymous) expressions - scope.parseLambdas(); - return scope; -} -const rootEncode = (spec)=>extendEncode({ - enter: { - x: { - value: 0 - }, - y: { - value: 0 - } - }, - update: { - width: { - signal: "width" - }, - height: { - signal: "height" - } - } - }, spec); -function parseView(spec, scope) { - const config = scope.config; // add scenegraph root - const root = ref(scope.root = scope.add(operator())); // parse top-level signal definitions - const signals = collectSignals(spec, config); - signals.forEach((_)=>parseSignal(_, scope)); // assign description, event, legend, and locale configuration - scope.description = spec.description || config.description; - scope.eventConfig = config.events; - scope.legends = scope.objectProperty(config.legend && config.legend.layout); - scope.locale = config.locale; // store root group item - const input = scope.add(Collect()); // encode root group item - const encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, { - pulse: ref(input) - }))); // perform view layout - const parent = scope.add(ViewLayout({ - layout: scope.objectProperty(spec.layout), - legends: scope.legends, - autosize: scope.signalRef("autosize"), - mark: root, - pulse: ref(encode) - })); - scope.operators.pop(); // parse remainder of specification - scope.pushState(ref(encode), ref(parent), null); - parseScope(spec, scope, signals); - scope.operators.push(parent); // bound / render / sieve root item - let op = scope.add(Bound({ - mark: root, - pulse: ref(parent) - })); - op = scope.add(Render({ - pulse: ref(op) - })); - op = scope.add(Sieve({ - pulse: ref(op) - })); // track metadata for root item - scope.addData("root", new DataScope(scope, input, input, op)); - return scope; -} -function signalObject(name, value) { - return value && value.signal ? { - name, - update: value.signal - } : { - name, - value - }; -} -/** - * Collect top-level signals, merging values as needed. Signals - * defined in the config signals arrays are added only if that - * signal is not explicitly defined in the specification. - * Built-in signals (autosize, background, padding, width, height) - * receive special treatment. They are initialized using the - * top-level spec property, or, if undefined in the spec, using - * the corresponding top-level config property. If this property - * is a signal reference object, the signal expression maps to the - * signal 'update' property. If the spec's top-level signal array - * contains an entry that matches a built-in signal, that entry - * will be merged with the built-in specification, potentially - * overwriting existing 'value' or 'update' properties. - */ function collectSignals(spec, config) { - const _ = (name)=>value(spec[name], config[name]), signals = [ - signalObject("background", _("background")), - signalObject("autosize", parseAutosize(_("autosize"))), - signalObject("padding", parsePadding(_("padding"))), - signalObject("width", _("width") || 0), - signalObject("height", _("height") || 0) - ], pre = signals.reduce((p, s)=>(p[s.name] = s, p), {}), map = {}; // add spec signal array - (0, _vegaUtil.array)(spec.signals).forEach((s)=>{ - if ((0, _vegaUtil.hasOwnProperty)(pre, s.name)) // merge if built-in signal - s = (0, _vegaUtil.extend)(pre[s.name], s); - else // otherwise add to signal list - signals.push(s); - map[s.name] = s; - }); // add config signal array - (0, _vegaUtil.array)(config.signals).forEach((s)=>{ - if (!(0, _vegaUtil.hasOwnProperty)(map, s.name) && !(0, _vegaUtil.hasOwnProperty)(pre, s.name)) // add to signal list if not already defined - signals.push(s); - }); - return signals; -} -function Scope(config, options) { - this.config = config || {}; - this.options = options || {}; - this.bindings = []; - this.field = {}; - this.signals = {}; - this.lambdas = {}; - this.scales = {}; - this.events = {}; - this.data = {}; - this.streams = []; - this.updates = []; - this.operators = []; - this.eventConfig = null; - this.locale = null; - this._id = 0; - this._subid = 0; - this._nextsub = [ - 0 - ]; - this._parent = []; - this._encode = []; - this._lookup = []; - this._markpath = []; -} -function Subscope(scope) { - this.config = scope.config; - this.options = scope.options; - this.legends = scope.legends; - this.field = Object.create(scope.field); - this.signals = Object.create(scope.signals); - this.lambdas = Object.create(scope.lambdas); - this.scales = Object.create(scope.scales); - this.events = Object.create(scope.events); - this.data = Object.create(scope.data); - this.streams = []; - this.updates = []; - this.operators = []; - this._id = 0; - this._subid = ++scope._nextsub[0]; - this._nextsub = scope._nextsub; - this._parent = scope._parent.slice(); - this._encode = scope._encode.slice(); - this._lookup = scope._lookup.slice(); - this._markpath = scope._markpath; -} -Scope.prototype = Subscope.prototype = { - parse (spec) { - return parseScope(spec, this); - }, - fork () { - return new Subscope(this); - }, - isSubscope () { - return this._subid > 0; - }, - toRuntime () { - this.finish(); - return { - description: this.description, - operators: this.operators, - streams: this.streams, - updates: this.updates, - bindings: this.bindings, - eventConfig: this.eventConfig, - locale: this.locale - }; - }, - id () { - return (this._subid ? this._subid + ":" : 0) + this._id++; - }, - add (op) { - this.operators.push(op); - op.id = this.id(); // if pre-registration references exist, resolve them now - if (op.refs) { - op.refs.forEach((ref)=>{ - ref.$ref = op.id; - }); - op.refs = null; - } - return op; - }, - proxy (op) { - const vref = op instanceof Entry ? ref(op) : op; - return this.add(Proxy({ - value: vref - })); - }, - addStream (stream) { - this.streams.push(stream); - stream.id = this.id(); - return stream; - }, - addUpdate (update) { - this.updates.push(update); - return update; - }, - // Apply metadata - finish () { - let name, ds; // annotate root - if (this.root) this.root.root = true; // annotate signals - for(name in this.signals)this.signals[name].signal = name; - // annotate scales - for(name in this.scales)this.scales[name].scale = name; - // annotate data sets - function annotate(op, name, type) { - let data, list; - if (op) { - data = op.data || (op.data = {}); - list = data[name] || (data[name] = []); - list.push(type); - } - } - for(name in this.data){ - ds = this.data[name]; - annotate(ds.input, name, "input"); - annotate(ds.output, name, "output"); - annotate(ds.values, name, "values"); - for(const field in ds.index)annotate(ds.index[field], name, "index:" + field); - } - return this; - }, - // ---- - pushState (encode, parent, lookup) { - this._encode.push(ref(this.add(Sieve({ - pulse: encode - })))); - this._parent.push(parent); - this._lookup.push(lookup ? ref(this.proxy(lookup)) : null); - this._markpath.push(-1); - }, - popState () { - this._encode.pop(); - this._parent.pop(); - this._lookup.pop(); - this._markpath.pop(); - }, - parent () { - return (0, _vegaUtil.peek)(this._parent); - }, - encode () { - return (0, _vegaUtil.peek)(this._encode); - }, - lookup () { - return (0, _vegaUtil.peek)(this._lookup); - }, - markpath () { - const p = this._markpath; - return ++p[p.length - 1]; - }, - // ---- - fieldRef (field, name) { - if ((0, _vegaUtil.isString)(field)) return fieldRef$1(field, name); - if (!field.signal) (0, _vegaUtil.error)("Unsupported field reference: " + (0, _vegaUtil.stringValue)(field)); - const s = field.signal; - let f = this.field[s]; - if (!f) { - const params = { - name: this.signalRef(s) - }; - if (name) params.as = name; - this.field[s] = f = ref(this.add(Field(params))); - } - return f; - }, - compareRef (cmp) { - let signal = false; - const check = (_)=>isSignal(_) ? (signal = true, this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, this.exprRef(_.expr)) : _; - const fields = (0, _vegaUtil.array)(cmp.field).map(check), orders = (0, _vegaUtil.array)(cmp.order).map(check); - return signal ? ref(this.add(Compare({ - fields: fields, - orders: orders - }))) : compareRef(fields, orders); - }, - keyRef (fields, flat) { - let signal = false; - const check = (_)=>isSignal(_) ? (signal = true, ref(sig[_.signal])) : _; - const sig = this.signals; - fields = (0, _vegaUtil.array)(fields).map(check); - return signal ? ref(this.add(Key({ - fields: fields, - flat: flat - }))) : keyRef(fields, flat); - }, - sortRef (sort) { - if (!sort) return sort; // including id ensures stable sorting - const a = aggrField(sort.op, sort.field), o = sort.order || Ascending; - return o.signal ? ref(this.add(Compare({ - fields: a, - orders: this.signalRef(o.signal) - }))) : compareRef(a, o); - }, - // ---- - event (source, type) { - const key = source + ":" + type; - if (!this.events[key]) { - const id = this.id(); - this.streams.push({ - id: id, - source: source, - type: type - }); - this.events[key] = id; - } - return this.events[key]; - }, - // ---- - hasOwnSignal (name) { - return (0, _vegaUtil.hasOwnProperty)(this.signals, name); - }, - addSignal (name, value) { - if (this.hasOwnSignal(name)) (0, _vegaUtil.error)("Duplicate signal name: " + (0, _vegaUtil.stringValue)(name)); - const op = value instanceof Entry ? value : this.add(operator(value)); - return this.signals[name] = op; - }, - getSignal (name) { - if (!this.signals[name]) (0, _vegaUtil.error)("Unrecognized signal name: " + (0, _vegaUtil.stringValue)(name)); - return this.signals[name]; - }, - signalRef (s) { - if (this.signals[s]) return ref(this.signals[s]); - else if (!(0, _vegaUtil.hasOwnProperty)(this.lambdas, s)) this.lambdas[s] = this.add(operator(null)); - return ref(this.lambdas[s]); - }, - parseLambdas () { - const code = Object.keys(this.lambdas); - for(let i = 0, n = code.length; i < n; ++i){ - const s = code[i], e = (0, _vegaFunctions.parseExpression)(s, this), op = this.lambdas[s]; - op.params = e.$params; - op.update = e.$expr; - } - }, - property (spec) { - return spec && spec.signal ? this.signalRef(spec.signal) : spec; - }, - objectProperty (spec) { - return !spec || !(0, _vegaUtil.isObject)(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec)); - }, - exprRef (code, name) { - const params = { - expr: (0, _vegaFunctions.parseExpression)(code, this) - }; - if (name) params.expr.$name = name; - return ref(this.add(Expression(params))); - }, - addBinding (name, bind) { - if (!this.bindings) (0, _vegaUtil.error)("Nested signals do not support binding: " + (0, _vegaUtil.stringValue)(name)); - this.bindings.push((0, _vegaUtil.extend)({ - signal: name - }, bind)); - }, - // ---- - addScaleProj (name, transform) { - if ((0, _vegaUtil.hasOwnProperty)(this.scales, name)) (0, _vegaUtil.error)("Duplicate scale or projection name: " + (0, _vegaUtil.stringValue)(name)); - this.scales[name] = this.add(transform); - }, - addScale (name, params) { - this.addScaleProj(name, Scale(params)); - }, - addProjection (name, params) { - this.addScaleProj(name, Projection(params)); - }, - getScale (name) { - if (!this.scales[name]) (0, _vegaUtil.error)("Unrecognized scale name: " + (0, _vegaUtil.stringValue)(name)); - return this.scales[name]; - }, - scaleRef (name) { - return ref(this.getScale(name)); - }, - scaleType (name) { - return this.getScale(name).params.type; - }, - projectionRef (name) { - return this.scaleRef(name); - }, - projectionType (name) { - return this.scaleType(name); - }, - // ---- - addData (name, dataScope) { - if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); - return this.data[name] = dataScope; - }, - getData (name) { - if (!this.data[name]) (0, _vegaUtil.error)("Undefined data set name: " + (0, _vegaUtil.stringValue)(name)); - return this.data[name]; - }, - addDataPipeline (name, entries) { - if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); - return this.addData(name, DataScope.fromEntries(this, entries)); - } -}; -function propertyLambda(spec) { - return ((0, _vegaUtil.isArray)(spec) ? arrayLambda : objectLambda)(spec); -} -function arrayLambda(array) { - const n = array.length; - let code = "["; - for(let i = 0; i < n; ++i){ - const value = array[i]; - code += (i > 0 ? "," : "") + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); - } - return code + "]"; -} -function objectLambda(obj) { - let code = "{", i = 0, key, value; - for(key in obj){ - value = obj[key]; - code += (++i > 1 ? "," : "") + (0, _vegaUtil.stringValue)(key) + ":" + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); - } - return code + "}"; -} -/** - * Standard configuration defaults for Vega specification parsing. - * Users can provide their own (sub-)set of these default values - * by passing in a config object to the top-level parse method. - */ function defaults() { - const defaultFont = "sans-serif", defaultSymbolSize = 30, defaultStrokeWidth = 2, defaultColor = "#4c78a8", black = "#000", gray = "#888", lightGray = "#ddd"; - return { - // default visualization description - description: "Vega visualization", - // default padding around visualization - padding: 0, - // default for automatic sizing; options: 'none', 'pad', 'fit' - // or provide an object (e.g., {'type': 'pad', 'resize': true}) - autosize: "pad", - // default view background color - // covers the entire view component - background: null, - // default event handling configuration - // preventDefault for view-sourced event types except 'wheel' - events: { - defaults: { - allow: [ - "wheel" - ] - } - }, - // defaults for top-level group marks - // accepts mark properties (fill, stroke, etc) - // covers the data rectangle within group width/height - group: null, - // defaults for basic mark types - // each subset accepts mark properties (fill, stroke, etc) - mark: null, - arc: { - fill: defaultColor - }, - area: { - fill: defaultColor - }, - image: null, - line: { - stroke: defaultColor, - strokeWidth: defaultStrokeWidth - }, - path: { - stroke: defaultColor - }, - rect: { - fill: defaultColor - }, - rule: { - stroke: black - }, - shape: { - stroke: defaultColor - }, - symbol: { - fill: defaultColor, - size: 64 - }, - text: { - fill: black, - font: defaultFont, - fontSize: 11 - }, - trail: { - fill: defaultColor, - size: defaultStrokeWidth - }, - // style definitions - style: { - // axis & legend labels - "guide-label": { - fill: black, - font: defaultFont, - fontSize: 10 - }, - // axis & legend titles - "guide-title": { - fill: black, - font: defaultFont, - fontSize: 11, - fontWeight: "bold" - }, - // headers, including chart title - "group-title": { - fill: black, - font: defaultFont, - fontSize: 13, - fontWeight: "bold" - }, - // chart subtitle - "group-subtitle": { - fill: black, - font: defaultFont, - fontSize: 12 - }, - // defaults for styled point marks in Vega-Lite - point: { - size: defaultSymbolSize, - strokeWidth: defaultStrokeWidth, - shape: "circle" - }, - circle: { - size: defaultSymbolSize, - strokeWidth: defaultStrokeWidth - }, - square: { - size: defaultSymbolSize, - strokeWidth: defaultStrokeWidth, - shape: "square" - }, - // defaults for styled group marks in Vega-Lite - cell: { - fill: "transparent", - stroke: lightGray - } - }, - // defaults for title - title: { - orient: "top", - anchor: "middle", - offset: 4, - subtitlePadding: 3 - }, - // defaults for axes - axis: { - minExtent: 0, - maxExtent: 200, - bandPosition: 0.5, - domain: true, - domainWidth: 1, - domainColor: gray, - grid: false, - gridWidth: 1, - gridColor: lightGray, - labels: true, - labelAngle: 0, - labelLimit: 180, - labelOffset: 0, - labelPadding: 2, - ticks: true, - tickColor: gray, - tickOffset: 0, - tickRound: true, - tickSize: 5, - tickWidth: 1, - titlePadding: 4 - }, - // correction for centering bias - axisBand: { - tickOffset: -0.5 - }, - // defaults for cartographic projection - projection: { - type: "mercator" - }, - // defaults for legends - legend: { - orient: "right", - padding: 0, - gridAlign: "each", - columnPadding: 10, - rowPadding: 2, - symbolDirection: "vertical", - gradientDirection: "vertical", - gradientLength: 200, - gradientThickness: 16, - gradientStrokeColor: lightGray, - gradientStrokeWidth: 0, - gradientLabelOffset: 2, - labelAlign: "left", - labelBaseline: "middle", - labelLimit: 160, - labelOffset: 4, - labelOverlap: true, - symbolLimit: 30, - symbolType: "circle", - symbolSize: 100, - symbolOffset: 0, - symbolStrokeWidth: 1.5, - symbolBaseFillColor: "transparent", - symbolBaseStrokeColor: gray, - titleLimit: 180, - titleOrient: "top", - titlePadding: 5, - layout: { - offset: 18, - direction: "horizontal", - left: { - direction: "vertical" - }, - right: { - direction: "vertical" - } - } - }, - // defaults for scale ranges - range: { - category: { - scheme: "tableau10" - }, - ordinal: { - scheme: "blues" - }, - heatmap: { - scheme: "yellowgreenblue" - }, - ramp: { - scheme: "blues" - }, - diverging: { - scheme: "blueorange", - extent: [ - 1, - 0 - ] - }, - symbol: [ - "circle", - "square", - "triangle-up", - "cross", - "diamond", - "triangle-right", - "triangle-down", - "triangle-left" - ] - } - }; -} -function parse(spec, config, options) { - if (!(0, _vegaUtil.isObject)(spec)) (0, _vegaUtil.error)("Input Vega specification must be an object."); - config = (0, _vegaUtil.mergeConfig)(defaults(), config, spec.config); - return parseView(spec, new Scope(config, options)).toRuntime(); -} - -},{"vega-util":"bApja","vega-functions":"iuqsd","vega-event-selector":"fFzhr","vega-scale":"bEydG","vega-dataflow":"3NitK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fFzhr":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "parseSelector", ()=>eventSelector); -const VIEW = "view", LBRACK = "[", RBRACK = "]", LBRACE = "{", RBRACE = "}", COLON = ":", COMMA = ",", NAME = "@", GT = ">", ILLEGAL = /[[\]{}]/, DEFAULT_MARKS = { - "*": 1, - arc: 1, - area: 1, - group: 1, - image: 1, - line: 1, - path: 1, - rect: 1, - rule: 1, - shape: 1, - symbol: 1, - text: 1, - trail: 1 -}; -let DEFAULT_SOURCE, MARKS; -/** - * Parse an event selector string. - * Returns an array of event stream definitions. - */ function eventSelector(selector, source, marks) { - DEFAULT_SOURCE = source || VIEW; - MARKS = marks || DEFAULT_MARKS; - return parseMerge(selector.trim()).map(parseSelector); -} -function isMarkType(type) { - return MARKS[type]; -} -function find(s, i, endChar, pushChar, popChar) { - const n = s.length; - let count = 0, c; - for(; i < n; ++i){ - c = s[i]; - if (!count && c === endChar) return i; - else if (popChar && popChar.indexOf(c) >= 0) --count; - else if (pushChar && pushChar.indexOf(c) >= 0) ++count; - } - return i; -} -function parseMerge(s) { - const output = [], n = s.length; - let start = 0, i = 0; - while(i < n){ - i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE); - output.push(s.substring(start, i).trim()); - start = ++i; - } - if (output.length === 0) throw "Empty event selector: " + s; - return output; -} -function parseSelector(s) { - return s[0] === "[" ? parseBetween(s) : parseStream(s); -} -function parseBetween(s) { - const n = s.length; - let i = 1, b; - i = find(s, i, RBRACK, LBRACK, RBRACK); - if (i === n) throw "Empty between selector: " + s; - b = parseMerge(s.substring(1, i)); - if (b.length !== 2) throw "Between selector must have two elements: " + s; - s = s.slice(i + 1).trim(); - if (s[0] !== GT) throw "Expected '>' after between selector: " + s; - b = b.map(parseSelector); - const stream = parseSelector(s.slice(1).trim()); - if (stream.between) return { - between: b, - stream: stream - }; - else stream.between = b; - return stream; -} -function parseStream(s) { - const stream = { - source: DEFAULT_SOURCE - }, source = []; - let throttle = [ - 0, - 0 - ], markname = 0, start = 0, n = s.length, i = 0, j, filter; // extract throttle from end - if (s[n - 1] === RBRACE) { - i = s.lastIndexOf(LBRACE); - if (i >= 0) { - try { - throttle = parseThrottle(s.substring(i + 1, n - 1)); - } catch (e) { - throw "Invalid throttle specification: " + s; - } - s = s.slice(0, i).trim(); - n = s.length; - } else throw "Unmatched right brace: " + s; - i = 0; - } - if (!n) throw s; // set name flag based on first char - if (s[0] === NAME) markname = ++i; // extract first part of multi-part stream selector - j = find(s, i, COLON); - if (j < n) { - source.push(s.substring(start, j).trim()); - start = i = ++j; - } // extract remaining part of stream selector - i = find(s, i, LBRACK); - if (i === n) source.push(s.substring(start, n).trim()); - else { - source.push(s.substring(start, i).trim()); - filter = []; - start = ++i; - if (start === n) throw "Unmatched left bracket: " + s; - } // extract filters - while(i < n){ - i = find(s, i, RBRACK); - if (i === n) throw "Unmatched left bracket: " + s; - filter.push(s.substring(start, i).trim()); - if (i < n - 1 && s[++i] !== LBRACK) throw "Expected left bracket: " + s; - start = ++i; - } // marshall event stream specification - if (!(n = source.length) || ILLEGAL.test(source[n - 1])) throw "Invalid event selector: " + s; - if (n > 1) { - stream.type = source[1]; - if (markname) stream.markname = source[0].slice(1); - else if (isMarkType(source[0])) stream.marktype = source[0]; - else stream.source = source[0]; - } else stream.type = source[0]; - if (stream.type.slice(-1) === "!") { - stream.consume = true; - stream.type = stream.type.slice(0, -1); - } - if (filter != null) stream.filter = filter; - if (throttle[0]) stream.throttle = throttle[0]; - if (throttle[1]) stream.debounce = throttle[1]; - return stream; -} -function parseThrottle(s) { - const a = s.split(COMMA); - if (!s.length || a.length > 2) throw s; - return a.map((_)=>{ - const x = +_; - if (x !== x) throw s; - return x; - }); -} - -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2l1no":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "ASTNode", ()=>ASTNode); -parcelHelpers.export(exports, "ArrayExpression", ()=>ArrayExpression); -parcelHelpers.export(exports, "BinaryExpression", ()=>BinaryExpression); -parcelHelpers.export(exports, "CallExpression", ()=>CallExpression); -parcelHelpers.export(exports, "ConditionalExpression", ()=>ConditionalExpression); -parcelHelpers.export(exports, "Identifier", ()=>Identifier); -parcelHelpers.export(exports, "Literal", ()=>Literal); -parcelHelpers.export(exports, "LogicalExpression", ()=>LogicalExpression); -parcelHelpers.export(exports, "MemberExpression", ()=>MemberExpression); -parcelHelpers.export(exports, "ObjectExpression", ()=>ObjectExpression); -parcelHelpers.export(exports, "Property", ()=>Property); -parcelHelpers.export(exports, "RawCode", ()=>RawCode); -parcelHelpers.export(exports, "UnaryExpression", ()=>UnaryExpression); -parcelHelpers.export(exports, "codegen", ()=>codegen); -parcelHelpers.export(exports, "constants", ()=>Constants); -parcelHelpers.export(exports, "functions", ()=>Functions); -parcelHelpers.export(exports, "parse", ()=>parser); -var _vegaUtil = require("vega-util"); -const RawCode = "RawCode"; -const Literal = "Literal"; -const Property = "Property"; -const Identifier = "Identifier"; -const ArrayExpression = "ArrayExpression"; -const BinaryExpression = "BinaryExpression"; -const CallExpression = "CallExpression"; -const ConditionalExpression = "ConditionalExpression"; -const LogicalExpression = "LogicalExpression"; -const MemberExpression = "MemberExpression"; -const ObjectExpression = "ObjectExpression"; -const UnaryExpression = "UnaryExpression"; -function ASTNode(type) { - this.type = type; -} -ASTNode.prototype.visit = function(visitor) { - let c, i, n; - if (visitor(this)) return 1; - for(c = children(this), i = 0, n = c.length; i < n; ++i){ - if (c[i].visit(visitor)) return 1; - } -}; -function children(node) { - switch(node.type){ - case ArrayExpression: - return node.elements; - case BinaryExpression: - case LogicalExpression: - return [ - node.left, - node.right - ]; - case CallExpression: - return [ - node.callee - ].concat(node.arguments); - case ConditionalExpression: - return [ - node.test, - node.consequent, - node.alternate - ]; - case MemberExpression: - return [ - node.object, - node.property - ]; - case ObjectExpression: - return node.properties; - case Property: - return [ - node.key, - node.value - ]; - case UnaryExpression: - return [ - node.argument - ]; - case Identifier: - case Literal: - case RawCode: - default: - return []; - } -} -/* - The following expression parser is based on Esprima (http://esprima.org/). - Original header comment and license for Esprima is included here: - - Copyright (C) 2013 Ariya Hidayat - Copyright (C) 2013 Thaddee Tyl - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ var TokenName, source, index, length, lookahead; -var TokenBooleanLiteral = 1, TokenEOF = 2, TokenIdentifier = 3, TokenKeyword = 4, TokenNullLiteral = 5, TokenNumericLiteral = 6, TokenPunctuator = 7, TokenStringLiteral = 8, TokenRegularExpression = 9; -TokenName = {}; -TokenName[TokenBooleanLiteral] = "Boolean"; -TokenName[TokenEOF] = ""; -TokenName[TokenIdentifier] = "Identifier"; -TokenName[TokenKeyword] = "Keyword"; -TokenName[TokenNullLiteral] = "Null"; -TokenName[TokenNumericLiteral] = "Numeric"; -TokenName[TokenPunctuator] = "Punctuator"; -TokenName[TokenStringLiteral] = "String"; -TokenName[TokenRegularExpression] = "RegularExpression"; -var SyntaxArrayExpression = "ArrayExpression", SyntaxBinaryExpression = "BinaryExpression", SyntaxCallExpression = "CallExpression", SyntaxConditionalExpression = "ConditionalExpression", SyntaxIdentifier = "Identifier", SyntaxLiteral = "Literal", SyntaxLogicalExpression = "LogicalExpression", SyntaxMemberExpression = "MemberExpression", SyntaxObjectExpression = "ObjectExpression", SyntaxProperty = "Property", SyntaxUnaryExpression = "UnaryExpression"; // Error messages should be identical to V8. -var MessageUnexpectedToken = "Unexpected token %0", MessageUnexpectedNumber = "Unexpected number", MessageUnexpectedString = "Unexpected string", MessageUnexpectedIdentifier = "Unexpected identifier", MessageUnexpectedReserved = "Unexpected reserved word", MessageUnexpectedEOS = "Unexpected end of input", MessageInvalidRegExp = "Invalid regular expression", MessageUnterminatedRegExp = "Invalid regular expression: missing /", MessageStrictOctalLiteral = "Octal literals are not allowed in strict mode.", MessageStrictDuplicateProperty = "Duplicate data property in object literal not allowed in strict mode"; -var ILLEGAL = "ILLEGAL", DISABLED = "Disabled."; // See also tools/generate-unicode-regex.py. -var RegexNonAsciiIdentifierStart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), // eslint-disable-next-line no-misleading-character-class -RegexNonAsciiIdentifierPart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"); // Ensure the condition is true, otherwise throw an error. -// This is only to have a better contract semantic, i.e. another safety net -// to catch a logic error. The condition shall be fulfilled in normal case. -// Do NOT use this to enforce a certain condition on any user input. -function assert(condition, message) { - /* istanbul ignore next */ if (!condition) throw new Error("ASSERT: " + message); -} -function isDecimalDigit(ch) { - return ch >= 0x30 && ch <= 0x39; // 0..9 -} -function isHexDigit(ch) { - return "0123456789abcdefABCDEF".indexOf(ch) >= 0; -} -function isOctalDigit(ch) { - return "01234567".indexOf(ch) >= 0; -} // 7.2 White Space -function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [ - 0x1680, - 0x180E, - 0x2000, - 0x2001, - 0x2002, - 0x2003, - 0x2004, - 0x2005, - 0x2006, - 0x2007, - 0x2008, - 0x2009, - 0x200A, - 0x202F, - 0x205F, - 0x3000, - 0xFEFF - ].indexOf(ch) >= 0; -} // 7.3 Line Terminators -function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; -} // 7.6 Identifier Names and Identifiers -function isIdentifierStart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)); -} -function isIdentifierPart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch >= 0x30 && ch <= 0x39 || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)); -} // 7.6.1.1 Keywords -const keywords = { - "if": 1, - "in": 1, - "do": 1, - "var": 1, - "for": 1, - "new": 1, - "try": 1, - "let": 1, - "this": 1, - "else": 1, - "case": 1, - "void": 1, - "with": 1, - "enum": 1, - "while": 1, - "break": 1, - "catch": 1, - "throw": 1, - "const": 1, - "yield": 1, - "class": 1, - "super": 1, - "return": 1, - "typeof": 1, - "delete": 1, - "switch": 1, - "export": 1, - "import": 1, - "public": 1, - "static": 1, - "default": 1, - "finally": 1, - "extends": 1, - "package": 1, - "private": 1, - "function": 1, - "continue": 1, - "debugger": 1, - "interface": 1, - "protected": 1, - "instanceof": 1, - "implements": 1 -}; -function skipComment() { - while(index < length){ - const ch = source.charCodeAt(index); - if (isWhiteSpace(ch) || isLineTerminator(ch)) ++index; - else break; - } -} -function scanHexEscape(prefix) { - var i, len, ch, code = 0; - len = prefix === "u" ? 4 : 2; - for(i = 0; i < len; ++i)if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); - } else throwError({}, MessageUnexpectedToken, ILLEGAL); - return String.fromCharCode(code); -} -function scanUnicodeCodePointEscape() { - var ch, code, cu1, cu2; - ch = source[index]; - code = 0; // At least, one hex digit is required. - if (ch === "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - while(index < length){ - ch = source[index++]; - if (!isHexDigit(ch)) break; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); - } - if (code > 0x10FFFF || ch !== "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - // UTF-16 Encoding - if (code <= 0xFFFF) return String.fromCharCode(code); - cu1 = (code - 0x10000 >> 10) + 0xD800; - cu2 = (code - 0x10000 & 1023) + 0xDC00; - return String.fromCharCode(cu1, cu2); -} -function getEscapedIdentifier() { - var ch, id; - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierStart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id = ch; - } - while(index < length){ - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) break; - ++index; - id += String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierPart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id += ch; - } - } - return id; -} -function getIdentifier() { - var start, ch; - start = index++; - while(index < length){ - ch = source.charCodeAt(index); - if (ch === 0x5C) { - // Blackslash (U+005C) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); - } - if (isIdentifierPart(ch)) ++index; - else break; - } - return source.slice(start, index); -} -function scanIdentifier() { - var start, id, type; - start = index; // Backslash (U+005C) starts an escaped character. - id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) type = TokenIdentifier; - else if (keywords.hasOwnProperty(id)) // eslint-disable-line no-prototype-builtins - type = TokenKeyword; - else if (id === "null") type = TokenNullLiteral; - else if (id === "true" || id === "false") type = TokenBooleanLiteral; - else type = TokenIdentifier; - return { - type: type, - value: id, - start: start, - end: index - }; -} // 7.7 Punctuators -function scanPunctuator() { - var start = index, code = source.charCodeAt(index), code2, ch1 = source[index], ch2, ch3, ch4; - switch(code){ - // Check for most common single-character punctuators. - case 0x2E: - case 0x28: - case 0x29: - case 0x3B: - case 0x2C: - case 0x7B: - case 0x7D: - case 0x5B: - case 0x5D: - case 0x3A: - case 0x3F: - case 0x7E: - // ~ - ++index; - return { - type: TokenPunctuator, - value: String.fromCharCode(code), - start: start, - end: index - }; - default: - code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator. - if (code2 === 0x3D) switch(code){ - case 0x2B: - case 0x2D: - case 0x2F: - case 0x3C: - case 0x3E: - case 0x5E: - case 0x7C: - case 0x25: - case 0x26: - case 0x2A: - // * - index += 2; - return { - type: TokenPunctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - start: start, - end: index - }; - case 0x21: - case 0x3D: - // = - index += 2; // !== and === - if (source.charCodeAt(index) === 0x3D) ++index; - return { - type: TokenPunctuator, - value: source.slice(start, index), - start: start, - end: index - }; - } - } // 4-character punctuator: >>>= - ch4 = source.substr(index, 4); - if (ch4 === ">>>=") { - index += 4; - return { - type: TokenPunctuator, - value: ch4, - start: start, - end: index - }; - } // 3-character punctuators: === !== >>> <<= >>= - ch3 = ch4.substr(0, 3); - if (ch3 === ">>>" || ch3 === "<<=" || ch3 === ">>=") { - index += 3; - return { - type: TokenPunctuator, - value: ch3, - start: start, - end: index - }; - } // Other 2-character punctuators: ++ -- << >> && || - ch2 = ch3.substr(0, 2); - if (ch1 === ch2[1] && "+-<>&|".indexOf(ch1) >= 0 || ch2 === "=>") { - index += 2; - return { - type: TokenPunctuator, - value: ch2, - start: start, - end: index - }; - } - if (ch2 === "//") throwError({}, MessageUnexpectedToken, ILLEGAL); - // 1-character punctuators: < > = ! + - * % & | ^ / - if ("<>=!+-*%&|^/".indexOf(ch1) >= 0) { - ++index; - return { - type: TokenPunctuator, - value: ch1, - start: start, - end: index - }; - } - throwError({}, MessageUnexpectedToken, ILLEGAL); -} // 7.8.3 Numeric Literals -function scanHexLiteral(start) { - let number = ""; - while(index < length){ - if (!isHexDigit(source[index])) break; - number += source[index++]; - } - if (number.length === 0) throwError({}, MessageUnexpectedToken, ILLEGAL); - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt("0x" + number, 16), - start: start, - end: index - }; -} -function scanOctalLiteral(start) { - let number = "0" + source[index++]; - while(index < length){ - if (!isOctalDigit(source[index])) break; - number += source[index++]; - } - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt(number, 8), - octal: true, - start: start, - end: index - }; -} -function scanNumericLiteral() { - var number, start, ch; - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || ch === ".", "Numeric literal must start with a decimal digit or a decimal point"); - start = index; - number = ""; - if (ch !== ".") { - number = source[index++]; - ch = source[index]; // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === "0") { - if (ch === "x" || ch === "X") { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) return scanOctalLiteral(start); - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - } - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === ".") { - number += source[index++]; - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === "e" || ch === "E") { - number += source[index++]; - ch = source[index]; - if (ch === "+" || ch === "-") number += source[index++]; - if (isDecimalDigit(source.charCodeAt(index))) while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - else throwError({}, MessageUnexpectedToken, ILLEGAL); - } - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseFloat(number), - start: start, - end: index - }; -} // 7.8.4 String Literals -function scanStringLiteral() { - var str = "", quote, start, ch, code, octal = false; - quote = source[index]; - assert(quote === "'" || quote === '"', "String literal must starts with a quote"); - start = index; - ++index; - while(index < length){ - ch = source[index++]; - if (ch === quote) { - quote = ""; - break; - } else if (ch === "\\") { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) switch(ch){ - case "u": - case "x": - if (source[index] === "{") { - ++index; - str += scanUnicodeCodePointEscape(); - } else str += scanHexEscape(ch); - break; - case "n": - str += "\n"; - break; - case "r": - str += "\r"; - break; - case "t": - str += " "; - break; - case "b": - str += "\b"; - break; - case "f": - str += "\f"; - break; - case "v": - str += "\v"; - break; - default: - if (isOctalDigit(ch)) { - code = "01234567".indexOf(ch); // \0 is not octal escape sequence - if (code !== 0) octal = true; - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + "01234567".indexOf(source[index++]); // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ("0123".indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) code = code * 8 + "01234567".indexOf(source[index++]); - } - str += String.fromCharCode(code); - } else str += ch; - break; - } - else if (ch === "\r" && source[index] === "\n") ++index; - } else if (isLineTerminator(ch.charCodeAt(0))) break; - else str += ch; - } - if (quote !== "") throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenStringLiteral, - value: str, - octal: octal, - start: start, - end: index - }; -} -function testRegExp(pattern, flags) { - let tmp = pattern; - if (flags.indexOf("u") >= 0) // Replace each astral symbol and every Unicode code point - // escape sequence with a single ASCII symbol to avoid throwing on - // regular expressions that are only valid in combination with the - // `/u` flag. - // Note: replacing with the ASCII symbol `x` might cause false - // negatives in unlikely scenarios. For example, `[\u{61}-b]` is a - // perfectly valid pattern that is equivalent to `[a-b]`, but it - // would be replaced by `[x-b]` which throws an error. - tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g, ($0, $1)=>{ - if (parseInt($1, 16) <= 0x10FFFF) return "x"; - throwError({}, MessageInvalidRegExp); - }).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, "x"); - // First, detect invalid regular expressions. - try { - new RegExp(tmp); - } catch (e) { - throwError({}, MessageInvalidRegExp); - } // Return a regular expression object for this pattern-flag pair, or - // `null` in case the current environment doesn't support the flags it - // uses. - try { - return new RegExp(pattern, flags); - } catch (exception) { - return null; - } -} -function scanRegExpBody() { - var ch, str, classMarker, terminated, body; - ch = source[index]; - assert(ch === "/", "Regular expression literal must start with a slash"); - str = source[index++]; - classMarker = false; - terminated = false; - while(index < length){ - ch = source[index++]; - str += ch; - if (ch === "\\") { - ch = source[index++]; // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - str += ch; - } else if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - else if (classMarker) { - if (ch === "]") classMarker = false; - } else { - if (ch === "/") { - terminated = true; - break; - } else if (ch === "[") classMarker = true; - } - } - if (!terminated) throwError({}, MessageUnterminatedRegExp); - // Exclude leading and trailing slash. - body = str.substr(1, str.length - 2); - return { - value: body, - literal: str - }; -} -function scanRegExpFlags() { - var ch, str, flags; - str = ""; - flags = ""; - while(index < length){ - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) break; - ++index; - if (ch === "\\" && index < length) throwError({}, MessageUnexpectedToken, ILLEGAL); - else { - flags += ch; - str += ch; - } - } - if (flags.search(/[^gimuy]/g) >= 0) throwError({}, MessageInvalidRegExp, flags); - return { - value: flags, - literal: str - }; -} -function scanRegExp() { - var start, body, flags, value; - lookahead = null; - skipComment(); - start = index; - body = scanRegExpBody(); - flags = scanRegExpFlags(); - value = testRegExp(body.value, flags.value); - return { - literal: body.literal + flags.literal, - value: value, - regex: { - pattern: body.value, - flags: flags.value - }, - start: start, - end: index - }; -} -function isIdentifierName(token) { - return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral; -} -function advance() { - skipComment(); - if (index >= length) return { - type: TokenEOF, - start: index, - end: index - }; - const ch = source.charCodeAt(index); - if (isIdentifierStart(ch)) return scanIdentifier(); - // Very common: ( and ) and ; - if (ch === 0x28 || ch === 0x29 || ch === 0x3B) return scanPunctuator(); - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (ch === 0x27 || ch === 0x22) return scanStringLiteral(); - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (ch === 0x2E) { - if (isDecimalDigit(source.charCodeAt(index + 1))) return scanNumericLiteral(); - return scanPunctuator(); - } - if (isDecimalDigit(ch)) return scanNumericLiteral(); - return scanPunctuator(); -} -function lex() { - const token = lookahead; - index = token.end; - lookahead = advance(); - index = token.end; - return token; -} -function peek() { - const pos = index; - lookahead = advance(); - index = pos; -} -function finishArrayExpression(elements) { - const node = new ASTNode(SyntaxArrayExpression); - node.elements = elements; - return node; -} -function finishBinaryExpression(operator, left, right) { - const node = new ASTNode(operator === "||" || operator === "&&" ? SyntaxLogicalExpression : SyntaxBinaryExpression); - node.operator = operator; - node.left = left; - node.right = right; - return node; -} -function finishCallExpression(callee, args) { - const node = new ASTNode(SyntaxCallExpression); - node.callee = callee; - node.arguments = args; - return node; -} -function finishConditionalExpression(test, consequent, alternate) { - const node = new ASTNode(SyntaxConditionalExpression); - node.test = test; - node.consequent = consequent; - node.alternate = alternate; - return node; -} -function finishIdentifier(name) { - const node = new ASTNode(SyntaxIdentifier); - node.name = name; - return node; -} -function finishLiteral(token) { - const node = new ASTNode(SyntaxLiteral); - node.value = token.value; - node.raw = source.slice(token.start, token.end); - if (token.regex) { - if (node.raw === "//") node.raw = "/(?:)/"; - node.regex = token.regex; - } - return node; -} -function finishMemberExpression(accessor, object, property) { - const node = new ASTNode(SyntaxMemberExpression); - node.computed = accessor === "["; - node.object = object; - node.property = property; - if (!node.computed) property.member = true; - return node; -} -function finishObjectExpression(properties) { - const node = new ASTNode(SyntaxObjectExpression); - node.properties = properties; - return node; -} -function finishProperty(kind, key, value) { - const node = new ASTNode(SyntaxProperty); - node.key = key; - node.value = value; - node.kind = kind; - return node; -} -function finishUnaryExpression(operator, argument) { - const node = new ASTNode(SyntaxUnaryExpression); - node.operator = operator; - node.argument = argument; - node.prefix = true; - return node; -} // Throw an exception -function throwError(token, messageFormat) { - var error, args = Array.prototype.slice.call(arguments, 2), msg = messageFormat.replace(/%(\d)/g, (whole, index)=>{ - assert(index < args.length, "Message reference must be in range"); - return args[index]; - }); - error = new Error(msg); - error.index = index; - error.description = msg; - throw error; -} // Throw an exception because of the token. -function throwUnexpected(token) { - if (token.type === TokenEOF) throwError(token, MessageUnexpectedEOS); - if (token.type === TokenNumericLiteral) throwError(token, MessageUnexpectedNumber); - if (token.type === TokenStringLiteral) throwError(token, MessageUnexpectedString); - if (token.type === TokenIdentifier) throwError(token, MessageUnexpectedIdentifier); - if (token.type === TokenKeyword) throwError(token, MessageUnexpectedReserved); - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, MessageUnexpectedToken, token.value); -} // Expect the next token to match the specified punctuator. -// If not, an exception will be thrown. -function expect(value) { - const token = lex(); - if (token.type !== TokenPunctuator || token.value !== value) throwUnexpected(token); -} // Return true if the next token matches the specified punctuator. -function match(value) { - return lookahead.type === TokenPunctuator && lookahead.value === value; -} // Return true if the next token matches the specified keyword -function matchKeyword(keyword) { - return lookahead.type === TokenKeyword && lookahead.value === keyword; -} // 11.1.4 Array Initialiser -function parseArrayInitialiser() { - const elements = []; - index = lookahead.start; - expect("["); - while(!match("]"))if (match(",")) { - lex(); - elements.push(null); - } else { - elements.push(parseConditionalExpression()); - if (!match("]")) expect(","); - } - lex(); - return finishArrayExpression(elements); -} // 11.1.5 Object Initialiser -function parseObjectPropertyKey() { - index = lookahead.start; - const token = lex(); // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) { - if (token.octal) throwError(token, MessageStrictOctalLiteral); - return finishLiteral(token); - } - return finishIdentifier(token.value); -} -function parseObjectProperty() { - var token, key, id, value; - index = lookahead.start; - token = lookahead; - if (token.type === TokenIdentifier) { - id = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", id, value); - } - if (token.type === TokenEOF || token.type === TokenPunctuator) throwUnexpected(token); - else { - key = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", key, value); - } -} -function parseObjectInitialiser() { - var properties = [], property, name, key, map = {}, toString = String; - index = lookahead.start; - expect("{"); - while(!match("}")){ - property = parseObjectProperty(); - if (property.key.type === SyntaxIdentifier) name = property.key.name; - else name = toString(property.key.value); - key = "$" + name; - if (Object.prototype.hasOwnProperty.call(map, key)) throwError({}, MessageStrictDuplicateProperty); - else map[key] = true; - properties.push(property); - if (!match("}")) expect(","); - } - expect("}"); - return finishObjectExpression(properties); -} // 11.1.6 The Grouping Operator -function parseGroupExpression() { - expect("("); - const expr = parseExpression(); - expect(")"); - return expr; -} // 11.1 Primary Expressions -const legalKeywords = { - "if": 1 -}; -function parsePrimaryExpression() { - var type, token, expr; - if (match("(")) return parseGroupExpression(); - if (match("[")) return parseArrayInitialiser(); - if (match("{")) return parseObjectInitialiser(); - type = lookahead.type; - index = lookahead.start; - if (type === TokenIdentifier || legalKeywords[lookahead.value]) expr = finishIdentifier(lex().value); - else if (type === TokenStringLiteral || type === TokenNumericLiteral) { - if (lookahead.octal) throwError(lookahead, MessageStrictOctalLiteral); - expr = finishLiteral(lex()); - } else if (type === TokenKeyword) throw new Error(DISABLED); - else if (type === TokenBooleanLiteral) { - token = lex(); - token.value = token.value === "true"; - expr = finishLiteral(token); - } else if (type === TokenNullLiteral) { - token = lex(); - token.value = null; - expr = finishLiteral(token); - } else if (match("/") || match("/=")) { - expr = finishLiteral(scanRegExp()); - peek(); - } else throwUnexpected(lex()); - return expr; -} // 11.2 Left-Hand-Side Expressions -function parseArguments() { - const args = []; - expect("("); - if (!match(")")) while(index < length){ - args.push(parseConditionalExpression()); - if (match(")")) break; - expect(","); - } - expect(")"); - return args; -} -function parseNonComputedProperty() { - index = lookahead.start; - const token = lex(); - if (!isIdentifierName(token)) throwUnexpected(token); - return finishIdentifier(token.value); -} -function parseNonComputedMember() { - expect("."); - return parseNonComputedProperty(); -} -function parseComputedMember() { - expect("["); - const expr = parseExpression(); - expect("]"); - return expr; -} -function parseLeftHandSideExpressionAllowCall() { - var expr, args, property; - expr = parsePrimaryExpression(); - for(;;){ - if (match(".")) { - property = parseNonComputedMember(); - expr = finishMemberExpression(".", expr, property); - } else if (match("(")) { - args = parseArguments(); - expr = finishCallExpression(expr, args); - } else if (match("[")) { - property = parseComputedMember(); - expr = finishMemberExpression("[", expr, property); - } else break; - } - return expr; -} // 11.3 Postfix Expressions -function parsePostfixExpression() { - const expr = parseLeftHandSideExpressionAllowCall(); - if (lookahead.type === TokenPunctuator) { - if (match("++") || match("--")) throw new Error(DISABLED); - } - return expr; -} // 11.4 Unary Operators -function parseUnaryExpression() { - var token, expr; - if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) expr = parsePostfixExpression(); - else if (match("++") || match("--")) throw new Error(DISABLED); - else if (match("+") || match("-") || match("~") || match("!")) { - token = lex(); - expr = parseUnaryExpression(); - expr = finishUnaryExpression(token.value, expr); - } else if (matchKeyword("delete") || matchKeyword("void") || matchKeyword("typeof")) throw new Error(DISABLED); - else expr = parsePostfixExpression(); - return expr; -} -function binaryPrecedence(token) { - let prec = 0; - if (token.type !== TokenPunctuator && token.type !== TokenKeyword) return 0; - switch(token.value){ - case "||": - prec = 1; - break; - case "&&": - prec = 2; - break; - case "|": - prec = 3; - break; - case "^": - prec = 4; - break; - case "&": - prec = 5; - break; - case "==": - case "!=": - case "===": - case "!==": - prec = 6; - break; - case "<": - case ">": - case "<=": - case ">=": - case "instanceof": - case "in": - prec = 7; - break; - case "<<": - case ">>": - case ">>>": - prec = 8; - break; - case "+": - case "-": - prec = 9; - break; - case "*": - case "/": - case "%": - prec = 11; - break; - } - return prec; -} // 11.5 Multiplicative Operators -// 11.6 Additive Operators -// 11.7 Bitwise Shift Operators -// 11.8 Relational Operators -// 11.9 Equality Operators -// 11.10 Binary Bitwise Operators -// 11.11 Binary Logical Operators -function parseBinaryExpression() { - var marker, markers, expr, token, prec, stack, right, operator, left, i; - marker = lookahead; - left = parseUnaryExpression(); - token = lookahead; - prec = binaryPrecedence(token); - if (prec === 0) return left; - token.prec = prec; - lex(); - markers = [ - marker, - lookahead - ]; - right = parseUnaryExpression(); - stack = [ - left, - token, - right - ]; - while((prec = binaryPrecedence(lookahead)) > 0){ - // Reduce: make a binary expression from the three topmost entries. - while(stack.length > 2 && prec <= stack[stack.length - 2].prec){ - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - markers.pop(); - expr = finishBinaryExpression(operator, left, right); - stack.push(expr); - } // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - markers.push(lookahead); - expr = parseUnaryExpression(); - stack.push(expr); - } // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - markers.pop(); - while(i > 1){ - markers.pop(); - expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - } - return expr; -} // 11.12 Conditional Operator -function parseConditionalExpression() { - var expr, consequent, alternate; - expr = parseBinaryExpression(); - if (match("?")) { - lex(); - consequent = parseConditionalExpression(); - expect(":"); - alternate = parseConditionalExpression(); - expr = finishConditionalExpression(expr, consequent, alternate); + return f; + }, + compareRef (cmp) { + let signal = false; + const check = (_)=>isSignal(_) ? (signal = true, this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, this.exprRef(_.expr)) : _; + const fields = (0, _vegaUtil.array)(cmp.field).map(check), orders = (0, _vegaUtil.array)(cmp.order).map(check); + return signal ? ref(this.add(Compare({ + fields: fields, + orders: orders + }))) : compareRef(fields, orders); + }, + keyRef (fields, flat) { + let signal = false; + const check = (_)=>isSignal(_) ? (signal = true, ref(sig[_.signal])) : _; + const sig = this.signals; + fields = (0, _vegaUtil.array)(fields).map(check); + return signal ? ref(this.add(Key({ + fields: fields, + flat: flat + }))) : keyRef(fields, flat); + }, + sortRef (sort) { + if (!sort) return sort; // including id ensures stable sorting + const a = aggrField(sort.op, sort.field), o = sort.order || Ascending; + return o.signal ? ref(this.add(Compare({ + fields: a, + orders: this.signalRef(o.signal) + }))) : compareRef(a, o); + }, + // ---- + event (source, type) { + const key = source + ":" + type; + if (!this.events[key]) { + const id = this.id(); + this.streams.push({ + id: id, + source: source, + type: type + }); + this.events[key] = id; + } + return this.events[key]; + }, + // ---- + hasOwnSignal (name) { + return (0, _vegaUtil.hasOwnProperty)(this.signals, name); + }, + addSignal (name, value) { + if (this.hasOwnSignal(name)) (0, _vegaUtil.error)("Duplicate signal name: " + (0, _vegaUtil.stringValue)(name)); + const op = value instanceof Entry ? value : this.add(operator(value)); + return this.signals[name] = op; + }, + getSignal (name) { + if (!this.signals[name]) (0, _vegaUtil.error)("Unrecognized signal name: " + (0, _vegaUtil.stringValue)(name)); + return this.signals[name]; + }, + signalRef (s) { + if (this.signals[s]) return ref(this.signals[s]); + else if (!(0, _vegaUtil.hasOwnProperty)(this.lambdas, s)) this.lambdas[s] = this.add(operator(null)); + return ref(this.lambdas[s]); + }, + parseLambdas () { + const code = Object.keys(this.lambdas); + for(let i = 0, n = code.length; i < n; ++i){ + const s = code[i], e = (0, _vegaFunctions.parseExpression)(s, this), op = this.lambdas[s]; + op.params = e.$params; + op.update = e.$expr; + } + }, + property (spec) { + return spec && spec.signal ? this.signalRef(spec.signal) : spec; + }, + objectProperty (spec) { + return !spec || !(0, _vegaUtil.isObject)(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec)); + }, + exprRef (code, name) { + const params = { + expr: (0, _vegaFunctions.parseExpression)(code, this) + }; + if (name) params.expr.$name = name; + return ref(this.add(Expression(params))); + }, + addBinding (name, bind) { + if (!this.bindings) (0, _vegaUtil.error)("Nested signals do not support binding: " + (0, _vegaUtil.stringValue)(name)); + this.bindings.push((0, _vegaUtil.extend)({ + signal: name + }, bind)); + }, + // ---- + addScaleProj (name, transform) { + if ((0, _vegaUtil.hasOwnProperty)(this.scales, name)) (0, _vegaUtil.error)("Duplicate scale or projection name: " + (0, _vegaUtil.stringValue)(name)); + this.scales[name] = this.add(transform); + }, + addScale (name, params) { + this.addScaleProj(name, Scale(params)); + }, + addProjection (name, params) { + this.addScaleProj(name, Projection(params)); + }, + getScale (name) { + if (!this.scales[name]) (0, _vegaUtil.error)("Unrecognized scale name: " + (0, _vegaUtil.stringValue)(name)); + return this.scales[name]; + }, + scaleRef (name) { + return ref(this.getScale(name)); + }, + scaleType (name) { + return this.getScale(name).params.type; + }, + projectionRef (name) { + return this.scaleRef(name); + }, + projectionType (name) { + return this.scaleType(name); + }, + // ---- + addData (name, dataScope) { + if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); + return this.data[name] = dataScope; + }, + getData (name) { + if (!this.data[name]) (0, _vegaUtil.error)("Undefined data set name: " + (0, _vegaUtil.stringValue)(name)); + return this.data[name]; + }, + addDataPipeline (name, entries) { + if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); + return this.addData(name, DataScope.fromEntries(this, entries)); } - return expr; -} // 11.14 Comma Operator -function parseExpression() { - const expr = parseConditionalExpression(); - if (match(",")) throw new Error(DISABLED); // no sequence expressions - return expr; -} -function parser(code) { - source = code; - index = 0; - length = source.length; - lookahead = null; - peek(); - const expr = parseExpression(); - if (lookahead.type !== TokenEOF) throw new Error("Unexpect token after expression."); - return expr; -} -var Constants = { - NaN: "NaN", - E: "Math.E", - LN2: "Math.LN2", - LN10: "Math.LN10", - LOG2E: "Math.LOG2E", - LOG10E: "Math.LOG10E", - PI: "Math.PI", - SQRT1_2: "Math.SQRT1_2", - SQRT2: "Math.SQRT2", - MIN_VALUE: "Number.MIN_VALUE", - MAX_VALUE: "Number.MAX_VALUE" }; -function Functions(codegen) { - function fncall(name, args, cast, type) { - let obj = codegen(args[0]); - if (cast) { - obj = cast + "(" + obj + ")"; - if (cast.lastIndexOf("new ", 0) === 0) obj = "(" + obj + ")"; - } - return obj + "." + name + (type < 0 ? "" : type === 0 ? "()" : "(" + args.slice(1).map(codegen).join(",") + ")"); +function propertyLambda(spec) { + return ((0, _vegaUtil.isArray)(spec) ? arrayLambda : objectLambda)(spec); +} +function arrayLambda(array) { + const n = array.length; + let code = "["; + for(let i = 0; i < n; ++i){ + const value = array[i]; + code += (i > 0 ? "," : "") + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); } - function fn(name, cast, type) { - return (args)=>fncall(name, args, cast, type); + return code + "]"; +} +function objectLambda(obj) { + let code = "{", i = 0, key, value; + for(key in obj){ + value = obj[key]; + code += (++i > 1 ? "," : "") + (0, _vegaUtil.stringValue)(key) + ":" + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); } - const DATE = "new Date", STRING = "String", REGEXP = "RegExp"; + return code + "}"; +} +/** + * Standard configuration defaults for Vega specification parsing. + * Users can provide their own (sub-)set of these default values + * by passing in a config object to the top-level parse method. + */ function defaults() { + const defaultFont = "sans-serif", defaultSymbolSize = 30, defaultStrokeWidth = 2, defaultColor = "#4c78a8", black = "#000", gray = "#888", lightGray = "#ddd"; return { - // MATH functions - isNaN: "Number.isNaN", - isFinite: "Number.isFinite", - abs: "Math.abs", - acos: "Math.acos", - asin: "Math.asin", - atan: "Math.atan", - atan2: "Math.atan2", - ceil: "Math.ceil", - cos: "Math.cos", - exp: "Math.exp", - floor: "Math.floor", - log: "Math.log", - max: "Math.max", - min: "Math.min", - pow: "Math.pow", - random: "Math.random", - round: "Math.round", - sin: "Math.sin", - sqrt: "Math.sqrt", - tan: "Math.tan", - clamp: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to clamp function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to clamp function."); - const a = args.map(codegen); - return "Math.max(" + a[1] + ", Math.min(" + a[2] + "," + a[0] + "))"; + // default visualization description + description: "Vega visualization", + // default padding around visualization + padding: 0, + // default for automatic sizing; options: 'none', 'pad', 'fit' + // or provide an object (e.g., {'type': 'pad', 'resize': true}) + autosize: "pad", + // default view background color + // covers the entire view component + background: null, + // default event handling configuration + // preventDefault for view-sourced event types except 'wheel' + events: { + defaults: { + allow: [ + "wheel" + ] + } }, - // DATE functions - now: "Date.now", - utc: "Date.UTC", - datetime: DATE, - date: fn("getDate", DATE, 0), - day: fn("getDay", DATE, 0), - year: fn("getFullYear", DATE, 0), - month: fn("getMonth", DATE, 0), - hours: fn("getHours", DATE, 0), - minutes: fn("getMinutes", DATE, 0), - seconds: fn("getSeconds", DATE, 0), - milliseconds: fn("getMilliseconds", DATE, 0), - time: fn("getTime", DATE, 0), - timezoneoffset: fn("getTimezoneOffset", DATE, 0), - utcdate: fn("getUTCDate", DATE, 0), - utcday: fn("getUTCDay", DATE, 0), - utcyear: fn("getUTCFullYear", DATE, 0), - utcmonth: fn("getUTCMonth", DATE, 0), - utchours: fn("getUTCHours", DATE, 0), - utcminutes: fn("getUTCMinutes", DATE, 0), - utcseconds: fn("getUTCSeconds", DATE, 0), - utcmilliseconds: fn("getUTCMilliseconds", DATE, 0), - // sequence functions - length: fn("length", null, -1), - // STRING functions - parseFloat: "parseFloat", - parseInt: "parseInt", - upper: fn("toUpperCase", STRING, 0), - lower: fn("toLowerCase", STRING, 0), - substring: fn("substring", STRING), - split: fn("split", STRING), - trim: fn("trim", STRING, 0), - // REGEXP functions - regexp: REGEXP, - test: fn("test", REGEXP), - // Control Flow functions - if: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to if function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to if function."); - const a = args.map(codegen); - return "(" + a[0] + "?" + a[1] + ":" + a[2] + ")"; - } - }; -} -function stripQuotes(s) { - const n = s && s.length - 1; - return n && (s[0] === '"' && s[n] === '"' || s[0] === "'" && s[n] === "'") ? s.slice(1, -1) : s; -} -function codegen(opt) { - opt = opt || {}; - const allowed = opt.allowed ? (0, _vegaUtil.toSet)(opt.allowed) : {}, forbidden = opt.forbidden ? (0, _vegaUtil.toSet)(opt.forbidden) : {}, constants = opt.constants || Constants, functions = (opt.functions || Functions)(visit), globalvar = opt.globalvar, fieldvar = opt.fieldvar, outputGlobal = (0, _vegaUtil.isFunction)(globalvar) ? globalvar : (id)=>"".concat(globalvar, '["').concat(id, '"]'); - let globals = {}, fields = {}, memberDepth = 0; - function visit(ast) { - if ((0, _vegaUtil.isString)(ast)) return ast; - const generator = Generators[ast.type]; - if (generator == null) (0, _vegaUtil.error)("Unsupported type: " + ast.type); - return generator(ast); - } - const Generators = { - Literal: (n)=>n.raw, - Identifier: (n)=>{ - const id = n.name; - if (memberDepth > 0) return id; - else if ((0, _vegaUtil.hasOwnProperty)(forbidden, id)) return (0, _vegaUtil.error)("Illegal identifier: " + id); - else if ((0, _vegaUtil.hasOwnProperty)(constants, id)) return constants[id]; - else if ((0, _vegaUtil.hasOwnProperty)(allowed, id)) return id; - else { - globals[id] = 1; - return outputGlobal(id); + // defaults for top-level group marks + // accepts mark properties (fill, stroke, etc) + // covers the data rectangle within group width/height + group: null, + // defaults for basic mark types + // each subset accepts mark properties (fill, stroke, etc) + mark: null, + arc: { + fill: defaultColor + }, + area: { + fill: defaultColor + }, + image: null, + line: { + stroke: defaultColor, + strokeWidth: defaultStrokeWidth + }, + path: { + stroke: defaultColor + }, + rect: { + fill: defaultColor + }, + rule: { + stroke: black + }, + shape: { + stroke: defaultColor + }, + symbol: { + fill: defaultColor, + size: 64 + }, + text: { + fill: black, + font: defaultFont, + fontSize: 11 + }, + trail: { + fill: defaultColor, + size: defaultStrokeWidth + }, + // style definitions + style: { + // axis & legend labels + "guide-label": { + fill: black, + font: defaultFont, + fontSize: 10 + }, + // axis & legend titles + "guide-title": { + fill: black, + font: defaultFont, + fontSize: 11, + fontWeight: "bold" + }, + // headers, including chart title + "group-title": { + fill: black, + font: defaultFont, + fontSize: 13, + fontWeight: "bold" + }, + // chart subtitle + "group-subtitle": { + fill: black, + font: defaultFont, + fontSize: 12 + }, + // defaults for styled point marks in Vega-Lite + point: { + size: defaultSymbolSize, + strokeWidth: defaultStrokeWidth, + shape: "circle" + }, + circle: { + size: defaultSymbolSize, + strokeWidth: defaultStrokeWidth + }, + square: { + size: defaultSymbolSize, + strokeWidth: defaultStrokeWidth, + shape: "square" + }, + // defaults for styled group marks in Vega-Lite + cell: { + fill: "transparent", + stroke: lightGray } }, - MemberExpression: (n)=>{ - const d = !n.computed, o = visit(n.object); - if (d) memberDepth += 1; - const p = visit(n.property); - if (o === fieldvar) // strip quotes to sanitize field name (#1653) - fields[stripQuotes(p)] = 1; - if (d) memberDepth -= 1; - return o + (d ? "." + p : "[" + p + "]"); + // defaults for title + title: { + orient: "top", + anchor: "middle", + offset: 4, + subtitlePadding: 3 }, - CallExpression: (n)=>{ - if (n.callee.type !== "Identifier") (0, _vegaUtil.error)("Illegal callee type: " + n.callee.type); - const callee = n.callee.name, args = n.arguments, fn = (0, _vegaUtil.hasOwnProperty)(functions, callee) && functions[callee]; - if (!fn) (0, _vegaUtil.error)("Unrecognized function: " + callee); - return (0, _vegaUtil.isFunction)(fn) ? fn(args) : fn + "(" + args.map(visit).join(",") + ")"; + // defaults for axes + axis: { + minExtent: 0, + maxExtent: 200, + bandPosition: 0.5, + domain: true, + domainWidth: 1, + domainColor: gray, + grid: false, + gridWidth: 1, + gridColor: lightGray, + labels: true, + labelAngle: 0, + labelLimit: 180, + labelOffset: 0, + labelPadding: 2, + ticks: true, + tickColor: gray, + tickOffset: 0, + tickRound: true, + tickSize: 5, + tickWidth: 1, + titlePadding: 4 }, - ArrayExpression: (n)=>"[" + n.elements.map(visit).join(",") + "]", - BinaryExpression: (n)=>"(" + visit(n.left) + " " + n.operator + " " + visit(n.right) + ")", - UnaryExpression: (n)=>"(" + n.operator + visit(n.argument) + ")", - ConditionalExpression: (n)=>"(" + visit(n.test) + "?" + visit(n.consequent) + ":" + visit(n.alternate) + ")", - LogicalExpression: (n)=>"(" + visit(n.left) + n.operator + visit(n.right) + ")", - ObjectExpression: (n)=>"{" + n.properties.map(visit).join(",") + "}", - Property: (n)=>{ - memberDepth += 1; - const k = visit(n.key); - memberDepth -= 1; - return k + ":" + visit(n.value); + // correction for centering bias + axisBand: { + tickOffset: -0.5 + }, + // defaults for cartographic projection + projection: { + type: "mercator" + }, + // defaults for legends + legend: { + orient: "right", + padding: 0, + gridAlign: "each", + columnPadding: 10, + rowPadding: 2, + symbolDirection: "vertical", + gradientDirection: "vertical", + gradientLength: 200, + gradientThickness: 16, + gradientStrokeColor: lightGray, + gradientStrokeWidth: 0, + gradientLabelOffset: 2, + labelAlign: "left", + labelBaseline: "middle", + labelLimit: 160, + labelOffset: 4, + labelOverlap: true, + symbolLimit: 30, + symbolType: "circle", + symbolSize: 100, + symbolOffset: 0, + symbolStrokeWidth: 1.5, + symbolBaseFillColor: "transparent", + symbolBaseStrokeColor: gray, + titleLimit: 180, + titleOrient: "top", + titlePadding: 5, + layout: { + offset: 18, + direction: "horizontal", + left: { + direction: "vertical" + }, + right: { + direction: "vertical" + } + } + }, + // defaults for scale ranges + range: { + category: { + scheme: "tableau10" + }, + ordinal: { + scheme: "blues" + }, + heatmap: { + scheme: "yellowgreenblue" + }, + ramp: { + scheme: "blues" + }, + diverging: { + scheme: "blueorange", + extent: [ + 1, + 0 + ] + }, + symbol: [ + "circle", + "square", + "triangle-up", + "cross", + "diamond", + "triangle-right", + "triangle-down", + "triangle-left" + ] } }; - function codegen(ast) { - const result = { - code: visit(ast), - globals: Object.keys(globals), - fields: Object.keys(fields) - }; - globals = {}; - fields = {}; - return result; - } - codegen.functions = functions; - codegen.constants = constants; - return codegen; +} +function parse(spec, config, options) { + if (!(0, _vegaUtil.isObject)(spec)) (0, _vegaUtil.error)("Input Vega specification must be an object."); + config = (0, _vegaUtil.mergeConfig)(defaults(), config, spec.config); + return parseView(spec, new Scope(config, options)).toRuntime(); } -},{"vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gXMNx":[function(require,module,exports) { +},{"vega-util":"bApja","vega-functions":"iuqsd","vega-event-selector":"gXMNx","vega-scale":"bEydG","vega-dataflow":"3NitK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gXMNx":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "selector", ()=>eventSelector); +parcelHelpers.export(exports, "parseSelector", ()=>eventSelector); const VIEW = "view", LBRACK = "[", RBRACK = "]", LBRACE = "{", RBRACE = "}", COLON = ":", COMMA = ",", NAME = "@", GT = ">", ILLEGAL = /[[\]{}]/, DEFAULT_MARKS = { "*": 1, arc: 1, diff --git a/docs/tests/v4/es6/js/vega-morphcharts-test-es6.js b/docs/tests/v4/es6/js/vega-morphcharts-test-es6.js index 2051e494e..71ceb990b 100644 --- a/docs/tests/v4/es6/js/vega-morphcharts-test-es6.js +++ b/docs/tests/v4/es6/js/vega-morphcharts-test-es6.js @@ -241,9 +241,9 @@ parcelHelpers.export(exports, "timeFormatLocale", ()=>(0, _vegaFormat.timeFormat parcelHelpers.export(exports, "expressionFunction", ()=>(0, _vegaFunctions.expressionFunction)); parcelHelpers.export(exports, "parse", ()=>(0, _vegaParser.parse)); parcelHelpers.export(exports, "runtimeContext", ()=>(0, _vegaRuntime.context)); -parcelHelpers.export(exports, "codegenExpression", ()=>(0, _vegaExpression.codegen)); -parcelHelpers.export(exports, "parseExpression", ()=>(0, _vegaExpression.parse)); -parcelHelpers.export(exports, "parseSelector", ()=>(0, _vegaEventSelector.selector)); +parcelHelpers.export(exports, "codegenExpression", ()=>(0, _vegaExpression.codegenExpression)); +parcelHelpers.export(exports, "parseExpression", ()=>(0, _vegaExpression.parseExpression)); +parcelHelpers.export(exports, "parseSelector", ()=>(0, _vegaEventSelector.parseSelector)); parcelHelpers.export(exports, "version", ()=>version); var _vegaUtil = require("vega-util"); var _vegaDataflow = require("vega-dataflow"); @@ -276,90 +276,9 @@ var _vegaParser = require("vega-parser"); var _vegaRuntime = require("vega-runtime"); var _vegaExpression = require("vega-expression"); var _vegaEventSelector = require("vega-event-selector"); -var name = "vega"; -var version$1 = "5.20.2"; -var description = "The Vega visualization grammar."; -var keywords = [ - "vega", - "visualization", - "interaction", - "dataflow", - "library", - "data", - "d3" -]; -var license = "BSD-3-Clause"; -var author = "UW Interactive Data Lab (http://idl.cs.washington.edu)"; -var main = "build/vega-node.js"; -var module = "build/vega.module.js"; -var unpkg = "build/vega.min.js"; -var jsdelivr = "build/vega.min.js"; -var types = "index.d.ts"; -var repository = "vega/vega"; -var scripts = { - bundle: "rollup -c --config-bundle", - prebuild: "rimraf build && rimraf build-es5", - build: "rollup -c --config-core --config-bundle --config-ie", - postbuild: "node schema-copy", - pretest: "yarn build --config-test", - test: "TZ=America/Los_Angeles tape 'test/**/*-test.js'", - prepublishOnly: "yarn test && yarn build", - postpublish: "./schema-deploy.sh" -}; -var dependencies = { - "vega-crossfilter": "~4.0.5", - "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", - "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", - "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", - "vega-wordcloud": "~4.1.3" -}; -var devDependencies = { - "vega-schema": "*" -}; -var gitHead = "e251dbc61ab6645689d9f349e7dd9d15ddb85bce"; -var pkg = { - name: name, - version: version$1, - description: description, - keywords: keywords, - license: license, - author: author, - main: main, - module: module, - unpkg: unpkg, - jsdelivr: jsdelivr, - types: types, - repository: repository, - scripts: scripts, - dependencies: dependencies, - devDependencies: devDependencies, - gitHead: gitHead -}; +var version = "5.22.1"; // -- Transforms ----- (0, _vegaUtil.extend)((0, _vegaDataflow.transforms), _vegaTransforms, _vegaViewTransforms, _vegaEncode, _vegaGeo, _vegaForce, _vegaLabel, _vegaHierarchy, _vegaRegression, _vegaVoronoi, _vegaWordcloud, _vegaCrossfilter); // -- Exports ----- -const version = pkg.version; },{"vega-util":"bApja","vega-dataflow":"3NitK","vega-transforms":"gA9mK","vega-view-transforms":"i63Ad","vega-encode":"fpesP","vega-geo":"3rF9B","vega-force":"4JCry","vega-hierarchy":"lserr","vega-label":"lZyUZ","vega-regression":"elv3U","vega-voronoi":"96rkJ","vega-wordcloud":"7Z7Aq","vega-crossfilter":"8iEZv","vega-statistics":"5ncfv","vega-time":"27kpp","vega-loader":"gmbOr","vega-scenegraph":"jattk","vega-scale":"bEydG","vega-projection":"4wv4C","vega-view":"cGC2i","vega-format":"47kOt","vega-functions":"iuqsd","vega-parser":"hsy9Z","vega-runtime":"k7ppL","vega-expression":"2l1no","vega-event-selector":"gXMNx","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bApja":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -531,7 +450,7 @@ const Error$1 = 1; const Warn = 2; const Info = 3; const Debug = 4; -function logger(_, method) { +function logger(_, method, handler = log$1) { let level = _ || None; return { level (_) { @@ -541,19 +460,19 @@ function logger(_, method) { } else return level; }, error () { - if (level >= Error$1) log$1(method || "error", "ERROR", arguments); + if (level >= Error$1) handler(method || "error", "ERROR", arguments); return this; }, warn () { - if (level >= Warn) log$1(method || "warn", "WARN", arguments); + if (level >= Warn) handler(method || "warn", "WARN", arguments); return this; }, info () { - if (level >= Info) log$1(method || "log", "INFO", arguments); + if (level >= Info) handler(method || "log", "INFO", arguments); return this; }, debug () { - if (level >= Debug) log$1(method || "log", "DEBUG", arguments); + if (level >= Debug) handler(method || "log", "DEBUG", arguments); return this; } }; @@ -4059,6 +3978,9 @@ parcelHelpers.export(exports, "bisectLeft", ()=>(0, _bisectJs.bisectLeft)); parcelHelpers.export(exports, "bisectCenter", ()=>(0, _bisectJs.bisectCenter)); parcelHelpers.export(exports, "ascending", ()=>(0, _ascendingJsDefault.default)); parcelHelpers.export(exports, "bisector", ()=>(0, _bisectorJsDefault.default)); +parcelHelpers.export(exports, "blur", ()=>(0, _blurJs.blur)); +parcelHelpers.export(exports, "blur2", ()=>(0, _blurJs.blur2)); +parcelHelpers.export(exports, "blurImage", ()=>(0, _blurJs.blurImage)); parcelHelpers.export(exports, "count", ()=>(0, _countJsDefault.default)); parcelHelpers.export(exports, "cross", ()=>(0, _crossJsDefault.default)); parcelHelpers.export(exports, "cumsum", ()=>(0, _cumsumJsDefault.default)); @@ -4069,6 +3991,8 @@ parcelHelpers.export(exports, "Adder", ()=>(0, _fsumJs.Adder)); parcelHelpers.export(exports, "fsum", ()=>(0, _fsumJs.fsum)); parcelHelpers.export(exports, "fcumsum", ()=>(0, _fsumJs.fcumsum)); parcelHelpers.export(exports, "group", ()=>(0, _groupJsDefault.default)); +parcelHelpers.export(exports, "flatGroup", ()=>(0, _groupJs.flatGroup)); +parcelHelpers.export(exports, "flatRollup", ()=>(0, _groupJs.flatRollup)); parcelHelpers.export(exports, "groups", ()=>(0, _groupJs.groups)); parcelHelpers.export(exports, "index", ()=>(0, _groupJs.index)); parcelHelpers.export(exports, "indexes", ()=>(0, _groupJs.indexes)); @@ -4085,16 +4009,20 @@ parcelHelpers.export(exports, "max", ()=>(0, _maxJsDefault.default)); parcelHelpers.export(exports, "maxIndex", ()=>(0, _maxIndexJsDefault.default)); parcelHelpers.export(exports, "mean", ()=>(0, _meanJsDefault.default)); parcelHelpers.export(exports, "median", ()=>(0, _medianJsDefault.default)); +parcelHelpers.export(exports, "medianIndex", ()=>(0, _medianJs.medianIndex)); parcelHelpers.export(exports, "merge", ()=>(0, _mergeJsDefault.default)); parcelHelpers.export(exports, "min", ()=>(0, _minJsDefault.default)); parcelHelpers.export(exports, "minIndex", ()=>(0, _minIndexJsDefault.default)); +parcelHelpers.export(exports, "mode", ()=>(0, _modeJsDefault.default)); parcelHelpers.export(exports, "nice", ()=>(0, _niceJsDefault.default)); parcelHelpers.export(exports, "pairs", ()=>(0, _pairsJsDefault.default)); parcelHelpers.export(exports, "permute", ()=>(0, _permuteJsDefault.default)); parcelHelpers.export(exports, "quantile", ()=>(0, _quantileJsDefault.default)); +parcelHelpers.export(exports, "quantileIndex", ()=>(0, _quantileJs.quantileIndex)); parcelHelpers.export(exports, "quantileSorted", ()=>(0, _quantileJs.quantileSorted)); parcelHelpers.export(exports, "quickselect", ()=>(0, _quickselectJsDefault.default)); parcelHelpers.export(exports, "range", ()=>(0, _rangeJsDefault.default)); +parcelHelpers.export(exports, "rank", ()=>(0, _rankJsDefault.default)); parcelHelpers.export(exports, "least", ()=>(0, _leastJsDefault.default)); parcelHelpers.export(exports, "leastIndex", ()=>(0, _leastIndexJsDefault.default)); parcelHelpers.export(exports, "greatest", ()=>(0, _greatestJsDefault.default)); @@ -4131,6 +4059,7 @@ var _ascendingJs = require("./ascending.js"); var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); var _bisectorJs = require("./bisector.js"); var _bisectorJsDefault = parcelHelpers.interopDefault(_bisectorJs); +var _blurJs = require("./blur.js"); var _countJs = require("./count.js"); var _countJsDefault = parcelHelpers.interopDefault(_countJs); var _crossJs = require("./cross.js"); @@ -4170,6 +4099,8 @@ var _minJs = require("./min.js"); var _minJsDefault = parcelHelpers.interopDefault(_minJs); var _minIndexJs = require("./minIndex.js"); var _minIndexJsDefault = parcelHelpers.interopDefault(_minIndexJs); +var _modeJs = require("./mode.js"); +var _modeJsDefault = parcelHelpers.interopDefault(_modeJs); var _niceJs = require("./nice.js"); var _niceJsDefault = parcelHelpers.interopDefault(_niceJs); var _pairsJs = require("./pairs.js"); @@ -4182,6 +4113,8 @@ var _quickselectJs = require("./quickselect.js"); var _quickselectJsDefault = parcelHelpers.interopDefault(_quickselectJs); var _rangeJs = require("./range.js"); var _rangeJsDefault = parcelHelpers.interopDefault(_rangeJs); +var _rankJs = require("./rank.js"); +var _rankJsDefault = parcelHelpers.interopDefault(_rankJs); var _leastJs = require("./least.js"); var _leastJsDefault = parcelHelpers.interopDefault(_leastJs); var _leastIndexJs = require("./leastIndex.js"); @@ -4232,7 +4165,7 @@ var _unionJs = require("./union.js"); var _unionJsDefault = parcelHelpers.interopDefault(_unionJs); var _internmap = require("internmap"); -},{"./bisect.js":"iJojn","./ascending.js":"60o1Z","./bisector.js":"k5JwJ","./count.js":false,"./cross.js":false,"./cumsum.js":false,"./descending.js":false,"./deviation.js":"euifj","./extent.js":false,"./fsum.js":"g7Aa0","./group.js":false,"./groupSort.js":false,"./bin.js":false,"./threshold/freedmanDiaconis.js":false,"./threshold/scott.js":false,"./threshold/sturges.js":false,"./max.js":"5fCPh","./maxIndex.js":false,"./mean.js":"8HbAa","./median.js":"ai1Kc","./merge.js":"d56l7","./min.js":"h0RAg","./minIndex.js":false,"./nice.js":false,"./pairs.js":false,"./permute.js":"3ydIg","./quantile.js":"49cDh","./quickselect.js":"doA4Q","./range.js":"7QVPN","./least.js":false,"./leastIndex.js":false,"./greatest.js":false,"./greatestIndex.js":false,"./scan.js":false,"./shuffle.js":false,"./sum.js":"hdZOC","./ticks.js":"71MAh","./transpose.js":false,"./variance.js":"gba1Y","./zip.js":false,"./every.js":false,"./some.js":false,"./filter.js":false,"./map.js":false,"./reduce.js":false,"./reverse.js":false,"./sort.js":false,"./difference.js":false,"./disjoint.js":false,"./intersection.js":false,"./subset.js":false,"./superset.js":false,"./union.js":false,"internmap":"3ULAv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"iJojn":[function(require,module,exports) { +},{"./bisect.js":"iJojn","./ascending.js":"60o1Z","./bisector.js":"k5JwJ","./blur.js":false,"./count.js":false,"./cross.js":false,"./cumsum.js":false,"./descending.js":"kIC2x","./deviation.js":"euifj","./extent.js":false,"./fsum.js":"g7Aa0","./group.js":false,"./groupSort.js":false,"./bin.js":false,"./threshold/freedmanDiaconis.js":false,"./threshold/scott.js":false,"./threshold/sturges.js":false,"./max.js":"5fCPh","./maxIndex.js":"fm7WL","./mean.js":"8HbAa","./median.js":"ai1Kc","./merge.js":"d56l7","./min.js":"h0RAg","./minIndex.js":"3rpRW","./mode.js":false,"./nice.js":false,"./pairs.js":false,"./permute.js":"3ydIg","./quantile.js":"49cDh","./quickselect.js":"doA4Q","./range.js":"7QVPN","./rank.js":false,"./least.js":false,"./leastIndex.js":false,"./greatest.js":"c4GrS","./greatestIndex.js":false,"./scan.js":false,"./shuffle.js":false,"./sum.js":"hdZOC","./ticks.js":"71MAh","./transpose.js":false,"./variance.js":"gba1Y","./zip.js":false,"./every.js":false,"./some.js":false,"./filter.js":false,"./map.js":false,"./reduce.js":false,"./reverse.js":false,"./sort.js":"bV3FZ","./difference.js":false,"./disjoint.js":false,"./intersection.js":false,"./subset.js":false,"./superset.js":false,"./union.js":false,"internmap":"3ULAv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"iJojn":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "bisectRight", ()=>bisectRight); @@ -4253,45 +4186,57 @@ exports.default = bisectRight; },{"./ascending.js":"60o1Z","./bisector.js":"k5JwJ","./number.js":"gcMRK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"60o1Z":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -exports.default = function(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -}; +function ascending(a, b) { + return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; +} +exports.default = ascending; },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"k5JwJ":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _ascendingJs = require("./ascending.js"); var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); -exports.default = function(f) { - let delta = f; - let compare = f; - if (f.length === 1) { +var _descendingJs = require("./descending.js"); +var _descendingJsDefault = parcelHelpers.interopDefault(_descendingJs); +function bisector(f) { + let compare1, compare2, delta; + // If an accessor is specified, promote it to a comparator. In this case we + // can test whether the search value is (self-) comparable. We can’t do this + // for a comparator (except for specific, known comparators) because we can’t + // tell if the comparator is symmetric, and an asymmetric comparator can’t be + // used to test whether a single value is comparable. + if (f.length !== 2) { + compare1 = (0, _ascendingJsDefault.default); + compare2 = (d, x)=>(0, _ascendingJsDefault.default)(f(d), x); delta = (d, x)=>f(d) - x; - compare = ascendingComparator(f); + } else { + compare1 = f === (0, _ascendingJsDefault.default) || f === (0, _descendingJsDefault.default) ? f : zero; + compare2 = f; + delta = f; } - function left(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while(lo < hi){ - const mid = lo + hi >>> 1; - if (compare(a[mid], x) < 0) lo = mid + 1; - else hi = mid; + function left(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = lo + hi >>> 1; + if (compare2(a[mid], x) < 0) lo = mid + 1; + else hi = mid; + }while (lo < hi); } return lo; } - function right(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while(lo < hi){ - const mid = lo + hi >>> 1; - if (compare(a[mid], x) > 0) hi = mid; - else lo = mid + 1; + function right(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = lo + hi >>> 1; + if (compare2(a[mid], x) <= 0) lo = mid + 1; + else hi = mid; + }while (lo < hi); } return lo; } - function center(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; + function center(a, x, lo = 0, hi = a.length) { const i = left(a, x, lo, hi - 1); return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i; } @@ -4300,18 +4245,28 @@ exports.default = function(f) { center, right }; -}; -function ascendingComparator(f) { - return (d, x)=>(0, _ascendingJsDefault.default)(f(d), x); +} +exports.default = bisector; +function zero() { + return 0; } -},{"./ascending.js":"60o1Z","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gcMRK":[function(require,module,exports) { +},{"./ascending.js":"60o1Z","./descending.js":"kIC2x","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kIC2x":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function descending(a, b) { + return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; +} +exports.default = descending; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gcMRK":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "numbers", ()=>numbers); -exports.default = function(x) { +function number(x) { return x === null ? NaN : +x; -}; +} +exports.default = number; function* numbers(values, valueof) { if (valueof === undefined) { for (let value of values)if (value != null && (value = +value) >= value) yield value; @@ -4434,6 +4389,24 @@ function max(values, valueof) { } exports.default = max; +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fm7WL":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function maxIndex(values, valueof) { + let max; + let maxIndex = -1; + let index = -1; + if (valueof === undefined) for (const value of values){ + ++index; + if (value != null && (max < value || max === undefined && value >= value)) max = value, maxIndex = index; + } + else { + for (let value1 of values)if ((value1 = valueof(value1, ++index, values)) != null && (max < value1 || max === undefined && value1 >= value1)) max = value1, maxIndex = index; + } + return maxIndex; +} +exports.default = maxIndex; + },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8HbAa":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -4453,24 +4426,37 @@ exports.default = mean; },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ai1Kc":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "medianIndex", ()=>medianIndex); var _quantileJs = require("./quantile.js"); var _quantileJsDefault = parcelHelpers.interopDefault(_quantileJs); -exports.default = function(values, valueof) { +function median(values, valueof) { return (0, _quantileJsDefault.default)(values, 0.5, valueof); -}; +} +exports.default = median; +function medianIndex(values, valueof) { + return (0, _quantileJs.quantileIndex)(values, 0.5, valueof); +} },{"./quantile.js":"49cDh","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"49cDh":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "quantileSorted", ()=>quantileSorted); +parcelHelpers.export(exports, "quantileIndex", ()=>quantileIndex); var _maxJs = require("./max.js"); var _maxJsDefault = parcelHelpers.interopDefault(_maxJs); +var _maxIndexJs = require("./maxIndex.js"); +var _maxIndexJsDefault = parcelHelpers.interopDefault(_maxIndexJs); var _minJs = require("./min.js"); var _minJsDefault = parcelHelpers.interopDefault(_minJs); +var _minIndexJs = require("./minIndex.js"); +var _minIndexJsDefault = parcelHelpers.interopDefault(_minIndexJs); var _quickselectJs = require("./quickselect.js"); var _quickselectJsDefault = parcelHelpers.interopDefault(_quickselectJs); var _numberJs = require("./number.js"); var _numberJsDefault = parcelHelpers.interopDefault(_numberJs); +var _sortJs = require("./sort.js"); +var _greatestJs = require("./greatest.js"); +var _greatestJsDefault = parcelHelpers.interopDefault(_greatestJs); function quantile(values, p, valueof) { values = Float64Array.from((0, _numberJs.numbers)(values, valueof)); if (!(n = values.length)) return; @@ -4487,8 +4473,16 @@ function quantileSorted(values, p, valueof = (0, _numberJsDefault.default)) { var n, i = (n - 1) * p, i0 = Math.floor(i), value0 = +valueof(values[i0], i0, values), value1 = +valueof(values[i0 + 1], i0 + 1, values); return value0 + (value1 - value0) * (i - i0); } +function quantileIndex(values, p, valueof) { + values = Float64Array.from((0, _numberJs.numbers)(values, valueof)); + if (!(n = values.length)) return; + if ((p = +p) <= 0 || n < 2) return (0, _minIndexJsDefault.default)(values); + if (p >= 1) return (0, _maxIndexJsDefault.default)(values); + var n, i = Math.floor((n - 1) * p), order = (i, j)=>(0, _sortJs.ascendingDefined)(values[i], values[j]), index = (0, _quickselectJsDefault.default)(Uint32Array.from(values, (_, i)=>i), i, 0, n - 1, order); + return (0, _greatestJsDefault.default)(index.subarray(0, i + 1), (i)=>values[i]); +} -},{"./max.js":"5fCPh","./min.js":"h0RAg","./quickselect.js":"doA4Q","./number.js":"gcMRK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"h0RAg":[function(require,module,exports) { +},{"./max.js":"5fCPh","./maxIndex.js":"fm7WL","./min.js":"h0RAg","./minIndex.js":"3rpRW","./quickselect.js":"doA4Q","./number.js":"gcMRK","./sort.js":"bV3FZ","./greatest.js":"c4GrS","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"h0RAg":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); function min(values, valueof) { @@ -4503,12 +4497,30 @@ function min(values, valueof) { } exports.default = min; +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3rpRW":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function minIndex(values, valueof) { + let min; + let minIndex = -1; + let index = -1; + if (valueof === undefined) for (const value of values){ + ++index; + if (value != null && (min > value || min === undefined && value >= value)) min = value, minIndex = index; + } + else { + for (let value1 of values)if ((value1 = valueof(value1, ++index, values)) != null && (min > value1 || min === undefined && value1 >= value1)) min = value1, minIndex = index; + } + return minIndex; +} +exports.default = minIndex; + },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"doA4Q":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var _ascendingJs = require("./ascending.js"); -var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); -function quickselect(array, k, left = 0, right = array.length - 1, compare = (0, _ascendingJsDefault.default)) { +var _sortJs = require("./sort.js"); +function quickselect(array, k, left = 0, right = array.length - 1, compare) { + compare = compare === undefined ? (0, _sortJs.ascendingDefined) : (0, _sortJs.compareDefined)(compare); while(right > left){ if (right - left > 600) { const n = right - left + 1; @@ -4544,6 +4556,87 @@ function swap(array, i, j) { array[j] = t; } +},{"./sort.js":"bV3FZ","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bV3FZ":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "compareDefined", ()=>compareDefined); +parcelHelpers.export(exports, "ascendingDefined", ()=>ascendingDefined); +var _ascendingJs = require("./ascending.js"); +var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); +var _permuteJs = require("./permute.js"); +var _permuteJsDefault = parcelHelpers.interopDefault(_permuteJs); +function sort(values, ...F) { + if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); + values = Array.from(values); + let [f] = F; + if (f && f.length !== 2 || F.length > 1) { + const index = Uint32Array.from(values, (d, i)=>i); + if (F.length > 1) { + F = F.map((f)=>values.map(f)); + index.sort((i, j)=>{ + for (const f of F){ + const c = ascendingDefined(f[i], f[j]); + if (c) return c; + } + }); + } else { + f = values.map(f); + index.sort((i, j)=>ascendingDefined(f[i], f[j])); + } + return (0, _permuteJsDefault.default)(values, index); + } + return values.sort(compareDefined(f)); +} +exports.default = sort; +function compareDefined(compare = (0, _ascendingJsDefault.default)) { + if (compare === (0, _ascendingJsDefault.default)) return ascendingDefined; + if (typeof compare !== "function") throw new TypeError("compare is not a function"); + return (a, b)=>{ + const x = compare(a, b); + if (x || x === 0) return x; + return (compare(b, b) === 0) - (compare(a, a) === 0); + }; +} +function ascendingDefined(a, b) { + return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0); +} + +},{"./ascending.js":"60o1Z","./permute.js":"3ydIg","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3ydIg":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +function permute(source, keys) { + return Array.from(keys, (key)=>source[key]); +} +exports.default = permute; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"c4GrS":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _ascendingJs = require("./ascending.js"); +var _ascendingJsDefault = parcelHelpers.interopDefault(_ascendingJs); +function greatest(values, compare = (0, _ascendingJsDefault.default)) { + let max; + let defined = false; + if (compare.length === 1) { + let maxValue; + for (const element of values){ + const value = compare(element); + if (defined ? (0, _ascendingJsDefault.default)(value, maxValue) > 0 : (0, _ascendingJsDefault.default)(value, value) === 0) { + max = element; + maxValue = value; + defined = true; + } + } + } else { + for (const value1 of values)if (defined ? compare(value1, max) > 0 : compare(value1, value1) === 0) { + max = value1; + defined = true; + } + } + return max; +} +exports.default = greatest; + },{"./ascending.js":"60o1Z","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"d56l7":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -4555,22 +4648,16 @@ function merge(arrays) { } exports.default = merge; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3ydIg":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -exports.default = function(source, keys) { - return Array.from(keys, (key)=>source[key]); -}; - },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7QVPN":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -exports.default = function(start, stop, step) { +function range(start, stop, step) { start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; var i = -1, n = Math.max(0, Math.ceil((stop - start) / step)) | 0, range = new Array(n); while(++i < n)range[i] = start + i * step; return range; -}; +} +exports.default = range; },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hdZOC":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -4593,7 +4680,7 @@ parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "tickIncrement", ()=>tickIncrement); parcelHelpers.export(exports, "tickStep", ()=>tickStep); var e10 = Math.sqrt(50), e5 = Math.sqrt(10), e2 = Math.sqrt(2); -exports.default = function(start, stop, count) { +function ticks(start, stop, count) { var reverse, i = -1, n, ticks, step; stop = +stop, start = +start, count = +count; if (start === stop && count > 0) return [ @@ -4617,7 +4704,8 @@ exports.default = function(start, stop, count) { } if (reverse) ticks.reverse(); return ticks; -}; +} +exports.default = ticks; function tickIncrement(start, stop, count) { var step = (stop - start) / Math.max(0, count), power = Math.floor(Math.log(step) / Math.LN10), error = step / Math.pow(10, power); return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); @@ -4697,7 +4785,7 @@ function intern_set({ _intern , _key }, value) { function intern_delete({ _intern , _key }, value) { const key = _key(value); if (_intern.has(key)) { - value = _intern.get(value); + value = _intern.get(key); _intern.delete(key); } return value; @@ -11057,8 +11145,8 @@ Extent.Definition = { }); if (!Number.isFinite(min) || !Number.isFinite(max)) { let name = (0, _vegaUtil.accessorName)(field); - if (name) name = ` for field "${name}"`; - pulse.dataflow.warn(`Infinite extent${name}: [${min}, ${max}]`); + if (name) name = ' for field "'.concat(name, '"'); + pulse.dataflow.warn("Infinite extent".concat(name, ": [").concat(min, ", ").concat(max, "]")); min = max = undefined; } this.value = [ @@ -12576,7 +12664,7 @@ TimeUnit.Definition = { transform (_, pulse) { const field = _.field, band = _.interval !== false, utc = _.timezone === "utc", floor = this._floor(_, pulse), offset = (utc ? (0, _vegaTime.utcInterval) : (0, _vegaTime.timeInterval))(floor.unit).offset, as = _.as || OUTPUT, u0 = as[0], u1 = as[1], step = floor.step; let min = floor.start || Infinity, max = floor.stop || -Infinity, flag = pulse.ADD; - if (_.modified() || pulse.modified((0, _vegaUtil.accessorFields)(field))) { + if (_.modified() || pulse.changed(pulse.REM) || pulse.modified((0, _vegaUtil.accessorFields)(field))) { pulse = pulse.reflow(true); flag = pulse.SOURCE; min = Infinity; @@ -14931,6 +15019,7 @@ function viewSizeLayout(view, group, viewBounds, _) { },{"vega-dataflow":"3NitK","vega-scenegraph":"jattk","vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"jattk":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "path", ()=>(0, _d3Path.path)); parcelHelpers.export(exports, "Bounds", ()=>Bounds); parcelHelpers.export(exports, "CanvasHandler", ()=>CanvasHandler); parcelHelpers.export(exports, "CanvasRenderer", ()=>CanvasRenderer); @@ -14968,7 +15057,7 @@ parcelHelpers.export(exports, "markup", ()=>markup); parcelHelpers.export(exports, "multiLineOffset", ()=>multiLineOffset); parcelHelpers.export(exports, "pathCurves", ()=>curves); parcelHelpers.export(exports, "pathEqual", ()=>pathEqual); -parcelHelpers.export(exports, "pathParse", ()=>pathParse); +parcelHelpers.export(exports, "pathParse", ()=>parse); parcelHelpers.export(exports, "pathRectangle", ()=>vg_rect); parcelHelpers.export(exports, "pathRender", ()=>pathRender); parcelHelpers.export(exports, "pathSymbols", ()=>symbols); @@ -15119,51 +15208,60 @@ function curves(type, orientation, tension) { } return curve; } -// Path parsing and rendering code adapted from fabric.js -- Thanks! -const cmdlen = { +const paramCounts = { m: 2, l: 2, h: 1, v: 1, + z: 0, c: 6, s: 4, q: 4, t: 2, a: 7 -}, regexp = [ - /([MLHVCSQTAZmlhvcsqtaz])/g, - /###/, - /(\.\d+)(\.\d)/g, - /(\d)([-+])/g, - /\s|,|###/ -]; -function pathParse(pathstr) { - const result = []; - let curr, chunks, parsed, param, cmd, len, i, j, n, m; // First, break path into command sequence - const path = pathstr.slice().replace(regexp[0], "###$1").split(regexp[1]).slice(1); // Next, parse each command in turn - for(i = 0, n = path.length; i < n; ++i){ - curr = path[i]; - chunks = curr.slice(1).trim().replace(regexp[2], "$1###$2").replace(regexp[3], "$1###$2").split(regexp[4]); - cmd = curr.charAt(0); - parsed = [ - cmd - ]; - for(j = 0, m = chunks.length; j < m; ++j)if ((param = +chunks[j]) === param) // not NaN - parsed.push(param); - len = cmdlen[cmd.toLowerCase()]; - if (parsed.length - 1 > len) { - const m1 = parsed.length; - j = 1; - result.push([ - cmd - ].concat(parsed.slice(j, j += len))); // handle implicit lineTo (#2803) - cmd = cmd === "M" ? "L" : cmd === "m" ? "l" : cmd; - for(; j < m1; j += len)result.push([ - cmd - ].concat(parsed.slice(j, j + len))); - } else result.push(parsed); +}; +const commandPattern = /[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi; +const numberPattern = /^[+-]?(([0-9]*\.[0-9]+)|([0-9]+\.)|([0-9]+))([eE][+-]?[0-9]+)?/; +const spacePattern = /^((\s+,?\s*)|(,\s*))/; +const flagPattern = /^[01]/; +function parse(path) { + const commands = []; + const matches = path.match(commandPattern) || []; + matches.forEach((str)=>{ + let cmd = str[0]; + const type = cmd.toLowerCase(); // parse parameters + const paramCount = paramCounts[type]; + const params = parseParams(type, paramCount, str.slice(1).trim()); + const count = params.length; // error checking based on parameter count + if (count < paramCount || count && count % paramCount !== 0) throw Error("Invalid SVG path, incorrect parameter count"); + // register the command + commands.push([ + cmd, + ...params.slice(0, paramCount) + ]); // exit now if we're done, also handles zero-param 'z' + if (count === paramCount) return; + // handle implicit line-to + if (type === "m") cmd = cmd === "M" ? "L" : "l"; + // repeat command when given extended param list + for(let i = paramCount; i < count; i += paramCount)commands.push([ + cmd, + ...params.slice(i, i + paramCount) + ]); + }); + return commands; +} +function parseParams(type, paramCount, segment) { + const params = []; + for(let index = 0; paramCount && index < segment.length;)for(let i = 0; i < paramCount; ++i){ + const pattern = type === "a" && (i === 3 || i === 4) ? flagPattern : numberPattern; + const match = segment.slice(index).match(pattern); + if (match === null) throw Error("Invalid SVG path, incorrect parameter type"); + index += match[0].length; + params.push(+match[0]); + const ws = segment.slice(index).match(spacePattern); + if (ws !== null) index += ws[0].length; } - return result; + return params; } const DegToRad = Math.PI / 180; const Epsilon = 1e-14; @@ -15288,7 +15386,7 @@ function pathRender(context, path, l, t, sX, sY) { y = 0, // current y controlX = 0, // current control point x controlY = 0, // current control point y - tempX, tempY, tempControlX, tempControlY; + tempX, tempY, tempControlX, tempControlY, anchorX = 0, anchorY = 0; if (l == null) l = 0; if (t == null) t = 0; if (sX == null) sX = 1; @@ -15335,12 +15433,16 @@ function pathRender(context, path, l, t, sX, sY) { // moveTo, relative x += current[1]; y += current[2]; + anchorX = x; + anchorY = y; context.moveTo(x + l, y + t); break; case "M": // moveTo, absolute x = current[1]; y = current[2]; + anchorX = x; + anchorY = y; context.moveTo(x + l, y + t); break; case "c": @@ -15477,6 +15579,8 @@ function pathRender(context, path, l, t, sX, sY) { break; case "z": case "Z": + x = anchorX; + y = anchorY; context.closePath(); break; } @@ -15614,7 +15718,7 @@ function symbols(_) { var custom = {}; function customSymbol(path) { if (!(0, _vegaUtil.hasOwnProperty)(custom, path)) { - const parsed = pathParse(path); + const parsed = parse(path); custom[path] = { draw: function(context, size) { pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2); @@ -16704,7 +16808,7 @@ function path$1(context, item) { var path = item.path; if (path == null) return true; var x = item.x || 0, y = item.y || 0, sx = item.scaleX || 1, sy = item.scaleY || 1, a = (item.angle || 0) * DegToRad, cache = item.pathCache; - if (!cache || cache.path !== path) (item.pathCache = cache = pathParse(path)).path = path; + if (!cache || cache.path !== path) (item.pathCache = cache = parse(path)).path = path; if (a && context.rotate && context.translate) { context.translate(x, y); context.rotate(a); @@ -16818,7 +16922,7 @@ function measureWidth(item, text) { return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item)); } function _measureWidth(text, currentFont) { - const key = `(${currentFont}) ${text}`; + const key = "(".concat(currentFont, ") ").concat(text); let width = widthCache.get(key); if (width === undefined) { context.font = currentFont; @@ -17275,10 +17379,10 @@ Handler.prototype = { }, /** * Add an event handler. Subclasses should override this method. - */ on () /*type, handler*/ {}, + */ on () {}, /** * Remove an event handler. Subclasses should override this method. - */ off () /*type, handler*/ {}, + */ off () {}, /** * Utility method for finding the array index of an event handler. * @param {Array} h - An array of registered event handlers. @@ -17439,7 +17543,7 @@ Renderer.prototype = { * This base class method does nothing. Subclasses that perform * incremental should implement this method. * @param {Item} item - The dirty item whose bounds should be redrawn. - */ dirty () /*item*/ {}, + */ dirty () {}, /** * Render an input scenegraph, potentially with a set of dirty items. * This method will perform an immediate rendering with available resources. @@ -17464,7 +17568,7 @@ Renderer.prototype = { * Internal rendering method. Renderer subclasses should override this * method to actually perform rendering. * @param {object} scene - The root mark of a scenegraph to render. - */ _render () /*scene*/ {}, + */ _render () {}, /** * Asynchronous rendering method. Similar to render, but returns a Promise * that resolves when all rendering is completed. Sometimes a renderer must @@ -17894,11 +17998,11 @@ const AriaGuides = { }, "title-text": { desc: "title", - caption: (item)=>`Title text '${titleCaption(item)}'` + caption: (item)=>"Title text '".concat(titleCaption(item), "'") }, "title-subtitle": { desc: "subtitle", - caption: (item)=>`Subtitle text '${titleCaption(item)}'` + caption: (item)=>"Subtitle text '".concat(titleCaption(item), "'") } }; // aria properties generated for mark item encoding channels const AriaEncode = { @@ -17914,7 +18018,7 @@ function ariaItemAttributes(emit, item) { const type = item.mark.marktype; emit(ARIA_LABEL, item.description); emit(ARIA_ROLE, item.ariaRole || (type === "group" ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL)); - emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || `${type} mark`); + emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || "".concat(type, " mark")); } } function ariaMarkAttributes(mark) { @@ -17925,7 +18029,7 @@ function ariaMarkAttributes(mark) { function ariaMark(mark) { const type = mark.marktype; const recurse = type === "group" || type === "text" || mark.items.some((_)=>_.description != null && _.aria !== false); - return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, `${type} mark container`, mark.description); + return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, "".concat(type, " mark container"), mark.description); } function ariaGuide(mark, opt) { try { @@ -17940,11 +18044,11 @@ function titleCaption(item) { } function axisCaption(item) { const datum = item.datum, orient = item.orient, title = datum.title ? extractTitle(item) : null, ctx = item.context, scale = ctx.scales[datum.scale].value, locale = ctx.dataflow.locale(), type = scale.type, xy = orient === "left" || orient === "right" ? "Y" : "X"; - return `${xy}-axis` + (title ? ` titled '${title}'` : "") + ` for a ${(0, _vegaScale.isDiscrete)(type) ? "discrete" : type} scale` + ` with ${(0, _vegaScale.domainCaption)(locale, scale, item)}`; + return "".concat(xy, "-axis") + (title ? " titled '".concat(title, "'") : "") + " for a ".concat((0, _vegaScale.isDiscrete)(type) ? "discrete" : type, " scale") + " with ".concat((0, _vegaScale.domainCaption)(locale, scale, item)); } function legendCaption(item) { - const datum = item.datum, title = datum.title ? extractTitle(item) : null, type = `${datum.type || ""} legend`.trim(), scales = datum.scales, props = Object.keys(scales), ctx = item.context, scale = ctx.scales[scales[props[0]]].value, locale = ctx.dataflow.locale(); - return capitalize(type) + (title ? ` titled '${title}'` : "") + ` for ${channelCaption(props)}` + ` with ${(0, _vegaScale.domainCaption)(locale, scale, item)}`; + const datum = item.datum, title = datum.title ? extractTitle(item) : null, type = "".concat(datum.type || "", " legend").trim(), scales = datum.scales, props = Object.keys(scales), ctx = item.context, scale = ctx.scales[scales[props[0]]].value, locale = ctx.dataflow.locale(); + return capitalize(type) + (title ? " titled '".concat(title, "'") : "") + " for ".concat(channelCaption(props)) + " with ".concat((0, _vegaScale.domainCaption)(locale, scale, item)); } function extractTitle(item) { try { @@ -17966,24 +18070,25 @@ function markup() { let buf = "", outer = "", inner = ""; const stack = [], clear = ()=>outer = inner = "", push = (tag)=>{ if (outer) { - buf += `${outer}>${inner}`; + buf += "".concat(outer, ">").concat(inner); clear(); } stack.push(tag); }, attr = (name, value)=>{ - if (value != null) outer += ` ${name}="${attrText(value)}"`; + if (value != null) outer += " ".concat(name, '="').concat(attrText(value), '"'); return m; }, m = { - open (tag, ...attrs) { + open (tag) { push(tag); outer = "<" + tag; + for(var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)attrs[_key - 1] = arguments[_key]; for (const set of attrs)for(const key in set)attr(key, set[key]); return m; }, close () { const tag = stack.pop(); - if (outer) buf += outer + (inner ? `>${inner}` : "/>"); - else buf += ``; + if (outer) buf += outer + (inner ? ">".concat(inner, "") : "/>"); + else buf += ""); clear(); return m; }, @@ -18001,16 +18106,13 @@ function _serialize(m, node) { for(let i = 0; i < n; ++i)m.attr(attrs[i].name, attrs[i].value); } if (node.hasChildNodes()) { - const children = node.childNodes, n1 = children.length; - for(let i1 = 0; i1 < n1; i1++){ - const child = children[i1]; - child.nodeType === 3 // text node - ? m.text(child.nodeValue) : _serialize(m, child); - } + const children = node.childNodes; + for (const child of children)child.nodeType === 3 // text node + ? m.text(child.nodeValue) : _serialize(m, child); } return m.close(); } -const styles = { +const stylesAttr = { fill: "fill", fillOpacity: "fill-opacity", stroke: "stroke", @@ -18021,7 +18123,9 @@ const styles = { strokeDash: "stroke-dasharray", strokeDashOffset: "stroke-dashoffset", strokeMiterLimit: "stroke-miterlimit", - opacity: "opacity", + opacity: "opacity" +}; +const stylesCss = { blend: "mix-blend-mode" }; // ensure miter limit default is consistent with canvas (#2498) const rootAttributes = { @@ -18088,9 +18192,9 @@ const base = Renderer.prototype; setAttributes(this._svg, { width: this._width * this._scale, height: this._height * this._scale, - viewBox: `0 0 ${this._width} ${this._height}` + viewBox: "0 0 ".concat(this._width, " ").concat(this._height) }); - this._root.setAttribute("transform", `translate(${this._origin})`); + this._root.setAttribute("transform", "translate(".concat(this._origin, ")")); } this._dirty = []; return this; @@ -18153,7 +18257,7 @@ const base = Renderer.prototype; * Check if a mark item is considered dirty. * @param {Item} item - The mark item. */ isDirty (item) { - return this._dirtyAll || !item._svg || item.dirty === this._dirtyID; + return this._dirtyAll || !item._svg || !item._svg.ownerSVGElement || item.dirty === this._dirtyID; }, /** * Internal method to check dirty status and, if possible, @@ -18215,13 +18319,13 @@ const base = Renderer.prototype; */ mark (el, scene, prev) { if (!this.isDirty(scene)) return scene._svg; const svg = this._svg, mdef = Marks[scene.marktype], events = scene.interactive === false ? "none" : null, isGroup = mdef.tag === "g"; - let sibling = null, i = 0; const parent = bind(scene, el, prev, "g", svg); parent.setAttribute("class", cssClass(scene)); // apply aria attributes to parent container element const aria = ariaMarkAttributes(scene); for(const key in aria)setAttribute(parent, key, aria[key]); if (!isGroup) setAttribute(parent, "pointer-events", events); setAttribute(parent, "clip-path", scene.clip ? clip$1(this, scene, scene.group) : null); + let sibling = null, i = 0; const process = (item)=>{ const dirty = this.isDirty(item), node = bind(item, parent, sibling, mdef.tag, svg); if (dirty) { @@ -18260,10 +18364,10 @@ const base = Renderer.prototype; * @param {Item} item - The mark item. */ style (el, item) { if (item == null) return; - for(const prop in styles){ + for(const prop in stylesAttr){ let value = prop === "font" ? fontFamily(item) : item[prop]; if (value === values[prop]) continue; - const name = styles[prop]; + const name = stylesAttr[prop]; if (value == null) el.removeAttribute(name); else { if (isGradient(value)) value = gradientRef(value, this._defs.gradient, href()); @@ -18271,6 +18375,7 @@ const base = Renderer.prototype; } values[prop] = value; } + for(const prop1 in stylesCss)setStyle(el, stylesCss[prop1], item[prop1]); }, /** * Render SVG defs, as needed. @@ -18323,7 +18428,7 @@ function updateGradient(el, grad, index) { setAttributes(pt, { width: 1, height: 1, - fill: `url(${href()}#${grad.id})` + fill: "url(".concat(href(), "#").concat(grad.id, ")") }); el = domChild(el, index++, "radialGradient", svgns); setAttributes(el, { @@ -18373,6 +18478,8 @@ function updateClipping(el, clip, index) { return index + 1; } // Recursively process group contents. function recurse(renderer, el, group) { + // child 'g' element is second to last among children (path, g, path) + // other children here are foreground and background path elements el = el.lastChild.previousSibling; let prev, idx = 0; visit(group, (item)=>{ @@ -18549,7 +18656,7 @@ function SVGStringRenderer(loader) { class: "marks", width: this._width * this._scale, height: this._height * this._scale, - viewBox: `0 0 ${this._width} ${this._height}` + viewBox: "0 0 ".concat(this._width, " ").concat(this._height) })); // background, if defined const bg = this._bgcolor; if (bg && bg !== "transparent" && bg !== "none") m.open("rect", { @@ -18725,6 +18832,7 @@ function SVGStringRenderer(loader) { } }); // Helper function for attr for style presentation attributes function style(s, item, scene, tag, defs) { + let styleList; if (item == null) return s; if (tag === "bgrect" && scene.interactive === false) s["pointer-events"] = "none"; if (tag === "bgfore") { @@ -18732,7 +18840,10 @@ function style(s, item, scene, tag, defs) { s.display = "none"; if (item.fill !== null) return s; } - if (tag === "image" && item.smooth === false) s.style = "image-rendering: optimizeSpeed; image-rendering: pixelated;"; + if (tag === "image" && item.smooth === false) styleList = [ + "image-rendering: optimizeSpeed;", + "image-rendering: pixelated;" + ]; if (tag === "text") { s["font-family"] = fontFamily(item); s["font-size"] = fontSize(item) + "px"; @@ -18740,15 +18851,23 @@ function style(s, item, scene, tag, defs) { s["font-variant"] = item.fontVariant; s["font-weight"] = item.fontWeight; } - for(const prop in styles){ + for(const prop in stylesAttr){ let value = item[prop]; - const name = styles[prop]; + const name = stylesAttr[prop]; if (value === "transparent" && (name === "fill" || name === "stroke")) ; else if (value != null) { if (isGradient(value)) value = gradientRef(value, defs.gradient, ""); s[name] = value; } } + for(const prop1 in stylesCss){ + const value1 = item[prop1]; + if (value1 != null) { + styleList = styleList || []; + styleList.push("".concat(stylesCss[prop1], ": ").concat(value1, ";")); + } + } + if (styleList) s.style = styleList.join(" "); return s; } const Canvas = "canvas"; @@ -18837,7 +18956,7 @@ function sceneEqual(a, b, key) { return a === b ? true : key === "path" ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : (0, _vegaUtil.isNumber)(a) && (0, _vegaUtil.isNumber)(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !(0, _vegaUtil.isObject)(a) && !(0, _vegaUtil.isObject)(b) ? a == b : objectEqual(a, b); } function pathEqual(a, b) { - return sceneEqual(pathParse(a), pathParse(b)); + return sceneEqual(parse(a), parse(b)); } function objectEqual(a, b) { var ka = Object.keys(a), kb = Object.keys(b), key, i; @@ -18872,18 +18991,27 @@ parcelHelpers.export(exports, "lineRadial", ()=>(0, _lineRadialJsDefault.default ; parcelHelpers.export(exports, "radialLine", ()=>(0, _lineRadialJsDefault.default)); parcelHelpers.export(exports, "pointRadial", ()=>(0, _pointRadialJsDefault.default)); -parcelHelpers.export(exports, "linkHorizontal", ()=>(0, _indexJs.linkHorizontal)); -parcelHelpers.export(exports, "linkVertical", ()=>(0, _indexJs.linkVertical)); -parcelHelpers.export(exports, "linkRadial", ()=>(0, _indexJs.linkRadial)); +parcelHelpers.export(exports, "link", ()=>(0, _linkJs.link)); +parcelHelpers.export(exports, "linkHorizontal", ()=>(0, _linkJs.linkHorizontal)); +parcelHelpers.export(exports, "linkVertical", ()=>(0, _linkJs.linkVertical)); +parcelHelpers.export(exports, "linkRadial", ()=>(0, _linkJs.linkRadial)); parcelHelpers.export(exports, "symbol", ()=>(0, _symbolJsDefault.default)); -parcelHelpers.export(exports, "symbols", ()=>(0, _symbolJs.symbols)); +parcelHelpers.export(exports, "symbolsStroke", ()=>(0, _symbolJs.symbolsStroke)); +parcelHelpers.export(exports, "symbolsFill", ()=>(0, _symbolJs.symbolsFill)); +parcelHelpers.export(exports, "symbols", ()=>(0, _symbolJs.symbolsFill)); +parcelHelpers.export(exports, "symbolAsterisk", ()=>(0, _asteriskJsDefault.default)); parcelHelpers.export(exports, "symbolCircle", ()=>(0, _circleJsDefault.default)); parcelHelpers.export(exports, "symbolCross", ()=>(0, _crossJsDefault.default)); parcelHelpers.export(exports, "symbolDiamond", ()=>(0, _diamondJsDefault.default)); +parcelHelpers.export(exports, "symbolDiamond2", ()=>(0, _diamond2JsDefault.default)); +parcelHelpers.export(exports, "symbolPlus", ()=>(0, _plusJsDefault.default)); parcelHelpers.export(exports, "symbolSquare", ()=>(0, _squareJsDefault.default)); +parcelHelpers.export(exports, "symbolSquare2", ()=>(0, _square2JsDefault.default)); parcelHelpers.export(exports, "symbolStar", ()=>(0, _starJsDefault.default)); parcelHelpers.export(exports, "symbolTriangle", ()=>(0, _triangleJsDefault.default)); +parcelHelpers.export(exports, "symbolTriangle2", ()=>(0, _triangle2JsDefault.default)); parcelHelpers.export(exports, "symbolWye", ()=>(0, _wyeJsDefault.default)); +parcelHelpers.export(exports, "symbolX", ()=>(0, _xJsDefault.default)); parcelHelpers.export(exports, "curveBasisClosed", ()=>(0, _basisClosedJsDefault.default)); parcelHelpers.export(exports, "curveBasisOpen", ()=>(0, _basisOpenJsDefault.default)); parcelHelpers.export(exports, "curveBasis", ()=>(0, _basisJsDefault.default)); @@ -18930,23 +19058,35 @@ var _lineRadialJs = require("./lineRadial.js"); var _lineRadialJsDefault = parcelHelpers.interopDefault(_lineRadialJs); var _pointRadialJs = require("./pointRadial.js"); var _pointRadialJsDefault = parcelHelpers.interopDefault(_pointRadialJs); -var _indexJs = require("./link/index.js"); +var _linkJs = require("./link.js"); var _symbolJs = require("./symbol.js"); var _symbolJsDefault = parcelHelpers.interopDefault(_symbolJs); +var _asteriskJs = require("./symbol/asterisk.js"); +var _asteriskJsDefault = parcelHelpers.interopDefault(_asteriskJs); var _circleJs = require("./symbol/circle.js"); var _circleJsDefault = parcelHelpers.interopDefault(_circleJs); var _crossJs = require("./symbol/cross.js"); var _crossJsDefault = parcelHelpers.interopDefault(_crossJs); var _diamondJs = require("./symbol/diamond.js"); var _diamondJsDefault = parcelHelpers.interopDefault(_diamondJs); +var _diamond2Js = require("./symbol/diamond2.js"); +var _diamond2JsDefault = parcelHelpers.interopDefault(_diamond2Js); +var _plusJs = require("./symbol/plus.js"); +var _plusJsDefault = parcelHelpers.interopDefault(_plusJs); var _squareJs = require("./symbol/square.js"); var _squareJsDefault = parcelHelpers.interopDefault(_squareJs); +var _square2Js = require("./symbol/square2.js"); +var _square2JsDefault = parcelHelpers.interopDefault(_square2Js); var _starJs = require("./symbol/star.js"); var _starJsDefault = parcelHelpers.interopDefault(_starJs); var _triangleJs = require("./symbol/triangle.js"); var _triangleJsDefault = parcelHelpers.interopDefault(_triangleJs); +var _triangle2Js = require("./symbol/triangle2.js"); +var _triangle2JsDefault = parcelHelpers.interopDefault(_triangle2Js); var _wyeJs = require("./symbol/wye.js"); var _wyeJsDefault = parcelHelpers.interopDefault(_wyeJs); +var _xJs = require("./symbol/x.js"); +var _xJsDefault = parcelHelpers.interopDefault(_xJs); var _basisClosedJs = require("./curve/basisClosed.js"); var _basisClosedJsDefault = parcelHelpers.interopDefault(_basisClosedJs); var _basisOpenJs = require("./curve/basisOpen.js"); @@ -19002,7 +19142,7 @@ var _noneJsDefault1 = parcelHelpers.interopDefault(_noneJs1); var _reverseJs = require("./order/reverse.js"); var _reverseJsDefault = parcelHelpers.interopDefault(_reverseJs); -},{"./arc.js":"c3ptb","./area.js":"lblzF","./line.js":"jVTJi","./pie.js":false,"./areaRadial.js":false,"./lineRadial.js":false,"./pointRadial.js":false,"./link/index.js":false,"./symbol.js":"bcejp","./symbol/circle.js":"7RXTA","./symbol/cross.js":"4cmA2","./symbol/diamond.js":"1gK3j","./symbol/square.js":"fXRAH","./symbol/star.js":"8nJiq","./symbol/triangle.js":"bClaq","./symbol/wye.js":"2D9bg","./curve/basisClosed.js":"3uf9r","./curve/basisOpen.js":"4LPKP","./curve/basis.js":"gNfFM","./curve/bump.js":false,"./curve/bundle.js":"7Gw48","./curve/cardinalClosed.js":"e0Ty2","./curve/cardinalOpen.js":"4cTvH","./curve/cardinal.js":"i0afA","./curve/catmullRomClosed.js":"kfNnJ","./curve/catmullRomOpen.js":"amodp","./curve/catmullRom.js":"8d6GP","./curve/linearClosed.js":"gpcM0","./curve/linear.js":"huz8f","./curve/monotone.js":"kghkb","./curve/natural.js":"4f94Q","./curve/step.js":"l5kmS","./stack.js":false,"./offset/expand.js":false,"./offset/diverging.js":false,"./offset/none.js":false,"./offset/silhouette.js":false,"./offset/wiggle.js":false,"./order/appearance.js":false,"./order/ascending.js":false,"./order/descending.js":false,"./order/insideOut.js":false,"./order/none.js":false,"./order/reverse.js":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"c3ptb":[function(require,module,exports) { +},{"./arc.js":"c3ptb","./area.js":"lblzF","./line.js":"jVTJi","./pie.js":false,"./areaRadial.js":false,"./lineRadial.js":false,"./pointRadial.js":false,"./link.js":false,"./symbol.js":"bcejp","./symbol/asterisk.js":"kHR3A","./symbol/circle.js":"7RXTA","./symbol/cross.js":"4cmA2","./symbol/diamond.js":"1gK3j","./symbol/diamond2.js":"WsFhi","./symbol/plus.js":"a9FVq","./symbol/square.js":"fXRAH","./symbol/square2.js":"69bxi","./symbol/star.js":"8nJiq","./symbol/triangle.js":"bClaq","./symbol/triangle2.js":"8s1uD","./symbol/wye.js":"2D9bg","./symbol/x.js":"fnfky","./curve/basisClosed.js":"3uf9r","./curve/basisOpen.js":"4LPKP","./curve/basis.js":"gNfFM","./curve/bump.js":false,"./curve/bundle.js":"7Gw48","./curve/cardinalClosed.js":"e0Ty2","./curve/cardinalOpen.js":"4cTvH","./curve/cardinal.js":"i0afA","./curve/catmullRomClosed.js":"kfNnJ","./curve/catmullRomOpen.js":"amodp","./curve/catmullRom.js":"8d6GP","./curve/linearClosed.js":"gpcM0","./curve/linear.js":"huz8f","./curve/monotone.js":"kghkb","./curve/natural.js":"4f94Q","./curve/step.js":"l5kmS","./stack.js":false,"./offset/expand.js":false,"./offset/diverging.js":false,"./offset/none.js":false,"./offset/silhouette.js":false,"./offset/wiggle.js":false,"./order/appearance.js":false,"./order/ascending.js":false,"./order/descending.js":false,"./order/insideOut.js":false,"./order/none.js":false,"./order/reverse.js":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"c3ptb":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _d3Path = require("d3-path"); @@ -19257,17 +19397,17 @@ parcelHelpers.export(exports, "halfPi", ()=>halfPi); parcelHelpers.export(exports, "tau", ()=>tau); parcelHelpers.export(exports, "acos", ()=>acos); parcelHelpers.export(exports, "asin", ()=>asin); -var abs = Math.abs; -var atan2 = Math.atan2; -var cos = Math.cos; -var max = Math.max; -var min = Math.min; -var sin = Math.sin; -var sqrt = Math.sqrt; -var epsilon = 1e-12; -var pi = Math.PI; -var halfPi = pi / 2; -var tau = 2 * pi; +const abs = Math.abs; +const atan2 = Math.atan2; +const cos = Math.cos; +const max = Math.max; +const min = Math.min; +const sin = Math.sin; +const sqrt = Math.sqrt; +const epsilon = 1e-12; +const pi = Math.PI; +const halfPi = pi / 2; +const tau = 2 * pi; function acos(x) { return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); } @@ -19397,7 +19537,7 @@ Linear.prototype = { this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: - this._point = 2; // proceed + this._point = 2; // falls through default: this._context.lineTo(x, y); break; @@ -19468,25 +19608,38 @@ function y(p) { },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bcejp":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "symbols", ()=>symbols); +parcelHelpers.export(exports, "symbolsFill", ()=>symbolsFill); +parcelHelpers.export(exports, "symbolsStroke", ()=>symbolsStroke); var _d3Path = require("d3-path"); +var _constantJs = require("./constant.js"); +var _constantJsDefault = parcelHelpers.interopDefault(_constantJs); +var _asteriskJs = require("./symbol/asterisk.js"); +var _asteriskJsDefault = parcelHelpers.interopDefault(_asteriskJs); var _circleJs = require("./symbol/circle.js"); var _circleJsDefault = parcelHelpers.interopDefault(_circleJs); var _crossJs = require("./symbol/cross.js"); var _crossJsDefault = parcelHelpers.interopDefault(_crossJs); var _diamondJs = require("./symbol/diamond.js"); var _diamondJsDefault = parcelHelpers.interopDefault(_diamondJs); -var _starJs = require("./symbol/star.js"); -var _starJsDefault = parcelHelpers.interopDefault(_starJs); +var _diamond2Js = require("./symbol/diamond2.js"); +var _diamond2JsDefault = parcelHelpers.interopDefault(_diamond2Js); +var _plusJs = require("./symbol/plus.js"); +var _plusJsDefault = parcelHelpers.interopDefault(_plusJs); var _squareJs = require("./symbol/square.js"); var _squareJsDefault = parcelHelpers.interopDefault(_squareJs); +var _square2Js = require("./symbol/square2.js"); +var _square2JsDefault = parcelHelpers.interopDefault(_square2Js); +var _starJs = require("./symbol/star.js"); +var _starJsDefault = parcelHelpers.interopDefault(_starJs); var _triangleJs = require("./symbol/triangle.js"); var _triangleJsDefault = parcelHelpers.interopDefault(_triangleJs); +var _triangle2Js = require("./symbol/triangle2.js"); +var _triangle2JsDefault = parcelHelpers.interopDefault(_triangle2Js); var _wyeJs = require("./symbol/wye.js"); var _wyeJsDefault = parcelHelpers.interopDefault(_wyeJs); -var _constantJs = require("./constant.js"); -var _constantJsDefault = parcelHelpers.interopDefault(_constantJs); -var symbols = [ +var _xJs = require("./symbol/x.js"); +var _xJsDefault = parcelHelpers.interopDefault(_xJs); +const symbolsFill = [ (0, _circleJsDefault.default), (0, _crossJsDefault.default), (0, _diamondJsDefault.default), @@ -19495,12 +19648,21 @@ var symbols = [ (0, _triangleJsDefault.default), (0, _wyeJsDefault.default) ]; -exports.default = function(type, size) { - var context = null; +const symbolsStroke = [ + (0, _circleJsDefault.default), + (0, _plusJsDefault.default), + (0, _xJsDefault.default), + (0, _triangle2JsDefault.default), + (0, _asteriskJsDefault.default), + (0, _square2JsDefault.default), + (0, _diamond2JsDefault.default) +]; +function Symbol(type, size) { + let context = null; type = typeof type === "function" ? type : (0, _constantJsDefault.default)(type || (0, _circleJsDefault.default)); size = typeof size === "function" ? size : (0, _constantJsDefault.default)(size === undefined ? 64 : +size); function symbol() { - var buffer; + let buffer; if (!context) context = buffer = (0, _d3Path.path)(); type.apply(this, arguments).draw(context, +size.apply(this, arguments)); if (buffer) return context = null, buffer + "" || null; @@ -19515,15 +19677,35 @@ exports.default = function(type, size) { return arguments.length ? (context = _ == null ? null : _, symbol) : context; }; return symbol; +} +exports.default = Symbol; + +},{"d3-path":"cRa94","./constant.js":"12DQf","./symbol/asterisk.js":"kHR3A","./symbol/circle.js":"7RXTA","./symbol/cross.js":"4cmA2","./symbol/diamond.js":"1gK3j","./symbol/diamond2.js":"WsFhi","./symbol/plus.js":"a9FVq","./symbol/square.js":"fXRAH","./symbol/square2.js":"69bxi","./symbol/star.js":"8nJiq","./symbol/triangle.js":"bClaq","./symbol/triangle2.js":"8s1uD","./symbol/wye.js":"2D9bg","./symbol/x.js":"fnfky","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kHR3A":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const sqrt3 = (0, _mathJs.sqrt)(3); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size + (0, _mathJs.min)(size / 28, 0.75)) * 0.59436; + const t = r / 2; + const u = t * sqrt3; + context.moveTo(0, r); + context.lineTo(0, -r); + context.moveTo(-u, -t); + context.lineTo(u, t); + context.moveTo(-u, t); + context.lineTo(u, -t); + } }; -},{"d3-path":"cRa94","./symbol/circle.js":"7RXTA","./symbol/cross.js":"4cmA2","./symbol/diamond.js":"1gK3j","./symbol/star.js":"8nJiq","./symbol/square.js":"fXRAH","./symbol/triangle.js":"bClaq","./symbol/wye.js":"2D9bg","./constant.js":"12DQf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7RXTA":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"7RXTA":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size / (0, _mathJs.pi)); + draw (context, size) { + const r = (0, _mathJs.sqrt)(size / (0, _mathJs.pi)); context.moveTo(r, 0); context.arc(0, 0, r, 0, (0, _mathJs.tau)); } @@ -19532,9 +19714,10 @@ exports.default = { },{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4cmA2":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size / 5) / 2; + draw (context, size) { + const r = (0, _mathJs.sqrt)(size / 5) / 2; context.moveTo(-3 * r, -r); context.lineTo(-r, -r); context.lineTo(-r, -3 * r); @@ -19551,13 +19734,16 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1gK3j":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1gK3j":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var tan30 = Math.sqrt(1 / 3), tan30_2 = tan30 * 2; +var _mathJs = require("../math.js"); +const tan30 = (0, _mathJs.sqrt)(1 / 3); +const tan30_2 = tan30 * 2; exports.default = { - draw: function(context, size) { - var y = Math.sqrt(size / tan30_2), x = y * tan30; + draw (context, size) { + const y = (0, _mathJs.sqrt)(size / tan30_2); + const x = y * tan30; context.moveTo(0, -y); context.lineTo(x, 0); context.lineTo(0, y); @@ -19566,42 +19752,96 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8nJiq":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"WsFhi":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _mathJs = require("../math.js"); -var ka = 0.89081309152928522810, kr = Math.sin((0, _mathJs.pi) / 10) / Math.sin(7 * (0, _mathJs.pi) / 10), kx = Math.sin((0, _mathJs.tau) / 10) * kr, ky = -Math.cos((0, _mathJs.tau) / 10) * kr; exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size * ka), x = kx * r, y = ky * r; + draw (context, size) { + const r = (0, _mathJs.sqrt)(size) * 0.62625; context.moveTo(0, -r); - context.lineTo(x, y); - for(var i = 1; i < 5; ++i){ - var a = (0, _mathJs.tau) * i / 5, c = Math.cos(a), s = Math.sin(a); - context.lineTo(s * r, -c * r); - context.lineTo(c * x - s * y, s * x + c * y); - } + context.lineTo(r, 0); + context.lineTo(0, r); + context.lineTo(-r, 0); context.closePath(); } }; +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"a9FVq":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size - (0, _mathJs.min)(size / 7, 2)) * 0.87559; + context.moveTo(-r, 0); + context.lineTo(r, 0); + context.moveTo(0, r); + context.lineTo(0, -r); + } +}; + },{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fXRAH":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var w = Math.sqrt(size), x = -w / 2; + draw (context, size) { + const w = (0, _mathJs.sqrt)(size); + const x = -w / 2; context.rect(x, x, w, w); } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bClaq":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"69bxi":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var sqrt3 = Math.sqrt(3); +var _mathJs = require("../math.js"); exports.default = { - draw: function(context, size) { - var y = -Math.sqrt(size / (sqrt3 * 3)); + draw (context, size) { + const r = (0, _mathJs.sqrt)(size) * 0.4431; + context.moveTo(r, r); + context.lineTo(r, -r); + context.lineTo(-r, -r); + context.lineTo(-r, r); + context.closePath(); + } +}; + +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8nJiq":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const ka = 0.89081309152928522810; +const kr = (0, _mathJs.sin)((0, _mathJs.pi) / 10) / (0, _mathJs.sin)(7 * (0, _mathJs.pi) / 10); +const kx = (0, _mathJs.sin)((0, _mathJs.tau) / 10) * kr; +const ky = -(0, _mathJs.cos)((0, _mathJs.tau) / 10) * kr; +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size * ka); + const x = kx * r; + const y = ky * r; + context.moveTo(0, -r); + context.lineTo(x, y); + for(let i = 1; i < 5; ++i){ + const a = (0, _mathJs.tau) * i / 5; + const c = (0, _mathJs.cos)(a); + const s = (0, _mathJs.sin)(a); + context.lineTo(s * r, -c * r); + context.lineTo(c * x - s * y, s * x + c * y); + } + context.closePath(); + } +}; + +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"bClaq":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const sqrt3 = (0, _mathJs.sqrt)(3); +exports.default = { + draw (context, size) { + const y = -(0, _mathJs.sqrt)(size / (sqrt3 * 3)); context.moveTo(0, y * 2); context.lineTo(-sqrt3 * y, -y); context.lineTo(sqrt3 * y, -y); @@ -19609,13 +19849,37 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2D9bg":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8s1uD":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var c = -0.5, s = Math.sqrt(3) / 2, k = 1 / Math.sqrt(12), a = (k / 2 + 1) * 3; +var _mathJs = require("../math.js"); +const sqrt3 = (0, _mathJs.sqrt)(3); exports.default = { - draw: function(context, size) { - var r = Math.sqrt(size / a), x0 = r / 2, y0 = r * k, x1 = x0, y1 = r * k + r, x2 = -x1, y2 = y1; + draw (context, size) { + const s = (0, _mathJs.sqrt)(size) * 0.6824; + const t = s / 2; + const u = s * sqrt3 / 2; // cos(Math.PI / 6) + context.moveTo(0, -s); + context.lineTo(u, t); + context.lineTo(-u, t); + context.closePath(); + } +}; + +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2D9bg":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +const c = -0.5; +const s = (0, _mathJs.sqrt)(3) / 2; +const k = 1 / (0, _mathJs.sqrt)(12); +const a = (k / 2 + 1) * 3; +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size / a); + const x0 = r / 2, y0 = r * k; + const x1 = x0, y1 = r * k + r; + const x2 = -x1, y2 = y1; context.moveTo(x0, y0); context.lineTo(x1, y1); context.lineTo(x2, y2); @@ -19629,7 +19893,21 @@ exports.default = { } }; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3uf9r":[function(require,module,exports) { +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fnfky":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _mathJs = require("../math.js"); +exports.default = { + draw (context, size) { + const r = (0, _mathJs.sqrt)(size - (0, _mathJs.min)(size / 6, 1.7)) * 0.6189; + context.moveTo(-r, -r); + context.lineTo(r, r); + context.moveTo(-r, r); + context.lineTo(r, -r); + } +}; + +},{"../math.js":"OHDSf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3uf9r":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _noopJs = require("../noop.js"); @@ -19721,7 +19999,7 @@ Basis.prototype = { lineEnd: function() { switch(this._point){ case 3: - point(this, this._x1, this._y1); // proceed + point(this, this._x1, this._y1); // falls through case 2: this._context.lineTo(this._x1, this._y1); break; @@ -19741,7 +20019,7 @@ Basis.prototype = { break; case 2: this._point = 3; - this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed + this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through default: point(this, x, y); break; @@ -19791,7 +20069,7 @@ BasisOpen.prototype = { this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; case 3: - this._point = 4; // proceed + this._point = 4; // falls through default: (0, _basisJs.point)(this, x, y); break; @@ -19960,7 +20238,7 @@ Cardinal.prototype = { this._x1 = x, this._y1 = y; break; case 2: - this._point = 3; // proceed + this._point = 3; // falls through default: point(this, x, y); break; @@ -20017,7 +20295,7 @@ CardinalOpen.prototype = { this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: - this._point = 4; // proceed + this._point = 4; // falls through default: (0, _cardinalJs.point)(this, x, y); break; @@ -20172,7 +20450,7 @@ CatmullRom.prototype = { this._point = 2; break; case 2: - this._point = 3; // proceed + this._point = 3; // falls through default: point(this, x, y); break; @@ -20235,7 +20513,7 @@ CatmullRomOpen.prototype = { this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: - this._point = 4; // proceed + this._point = 4; // falls through default: (0, _catmullRomJs.point)(this, x, y); break; @@ -20481,7 +20759,7 @@ Step.prototype = { this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: - this._point = 2; // proceed + this._point = 2; // falls through default: if (this._t <= 0) { this._context.lineTo(this._x, y); @@ -20825,80 +21103,80 @@ function scale(type, scale, metadata) { return this; } else return isValidScaleType(type) ? scales[type] : undefined; } // identity scale -scale(Identity, (0, _d3Scale.scaleIdentity)); // continuous scales -scale(Linear, (0, _d3Scale.scaleLinear), Continuous); -scale(Log, (0, _d3Scale.scaleLog), [ +scale(Identity, _d3Scale.scaleIdentity); // continuous scales +scale(Linear, _d3Scale.scaleLinear, Continuous); +scale(Log, _d3Scale.scaleLog, [ Continuous, Log ]); -scale(Pow, (0, _d3Scale.scalePow), Continuous); -scale(Sqrt, (0, _d3Scale.scaleSqrt), Continuous); -scale(Symlog, (0, _d3Scale.scaleSymlog), Continuous); -scale(Time, (0, _d3Scale.scaleTime), [ +scale(Pow, _d3Scale.scalePow, Continuous); +scale(Sqrt, _d3Scale.scaleSqrt, Continuous); +scale(Symlog, _d3Scale.scaleSymlog, Continuous); +scale(Time, _d3Scale.scaleTime, [ Continuous, Temporal ]); -scale(UTC, (0, _d3Scale.scaleUtc), [ +scale(UTC, _d3Scale.scaleUtc, [ Continuous, Temporal ]); // sequential scales -scale(Sequential, (0, _d3Scale.scaleSequential), [ +scale(Sequential, _d3Scale.scaleSequential, [ Continuous, Interpolating ]); // backwards compat -scale("".concat(Sequential, "-").concat(Linear), (0, _d3Scale.scaleSequential), [ +scale("".concat(Sequential, "-").concat(Linear), _d3Scale.scaleSequential, [ Continuous, Interpolating ]); -scale("".concat(Sequential, "-").concat(Log), (0, _d3Scale.scaleSequentialLog), [ +scale("".concat(Sequential, "-").concat(Log), _d3Scale.scaleSequentialLog, [ Continuous, Interpolating, Log ]); -scale("".concat(Sequential, "-").concat(Pow), (0, _d3Scale.scaleSequentialPow), [ +scale("".concat(Sequential, "-").concat(Pow), _d3Scale.scaleSequentialPow, [ Continuous, Interpolating ]); -scale("".concat(Sequential, "-").concat(Sqrt), (0, _d3Scale.scaleSequentialSqrt), [ +scale("".concat(Sequential, "-").concat(Sqrt), _d3Scale.scaleSequentialSqrt, [ Continuous, Interpolating ]); -scale("".concat(Sequential, "-").concat(Symlog), (0, _d3Scale.scaleSequentialSymlog), [ +scale("".concat(Sequential, "-").concat(Symlog), _d3Scale.scaleSequentialSymlog, [ Continuous, Interpolating ]); // diverging scales -scale("".concat(Diverging, "-").concat(Linear), (0, _d3Scale.scaleDiverging), [ +scale("".concat(Diverging, "-").concat(Linear), _d3Scale.scaleDiverging, [ Continuous, Interpolating ]); -scale("".concat(Diverging, "-").concat(Log), (0, _d3Scale.scaleDivergingLog), [ +scale("".concat(Diverging, "-").concat(Log), _d3Scale.scaleDivergingLog, [ Continuous, Interpolating, Log ]); -scale("".concat(Diverging, "-").concat(Pow), (0, _d3Scale.scaleDivergingPow), [ +scale("".concat(Diverging, "-").concat(Pow), _d3Scale.scaleDivergingPow, [ Continuous, Interpolating ]); -scale("".concat(Diverging, "-").concat(Sqrt), (0, _d3Scale.scaleDivergingSqrt), [ +scale("".concat(Diverging, "-").concat(Sqrt), _d3Scale.scaleDivergingSqrt, [ Continuous, Interpolating ]); -scale("".concat(Diverging, "-").concat(Symlog), (0, _d3Scale.scaleDivergingSymlog), [ +scale("".concat(Diverging, "-").concat(Symlog), _d3Scale.scaleDivergingSymlog, [ Continuous, Interpolating ]); // discretizing scales -scale(Quantile, (0, _d3Scale.scaleQuantile), [ +scale(Quantile, _d3Scale.scaleQuantile, [ Discretizing, Quantile ]); -scale(Quantize, (0, _d3Scale.scaleQuantize), Discretizing); -scale(Threshold, (0, _d3Scale.scaleThreshold), Discretizing); // discrete scales +scale(Quantize, _d3Scale.scaleQuantize, Discretizing); +scale(Threshold, _d3Scale.scaleThreshold, Discretizing); // discrete scales scale(BinOrdinal, scaleBinOrdinal, [ Discrete, Discretizing ]); -scale(Ordinal, (0, _d3Scale.scaleOrdinal), Discrete); +scale(Ordinal, _d3Scale.scaleOrdinal, Discrete); scale(Band, band, Discrete); scale(Point, point, Discrete); function isValidScaleType(type) { @@ -20942,7 +21220,7 @@ function interpolateRange(interpolator, range) { }; } function interpolateColors(colors, type, gamma) { - return (0, _d3Interpolate.piecewise)(interpolate(type || "rgb", gamma), colors); + return _d3Interpolate.piecewise(interpolate(type || "rgb", gamma), colors); } function quantizeInterpolator(interpolator, count) { const samples = new Array(count), n = count + 1; @@ -21322,7 +21600,161 @@ var _divergingJsDefault = parcelHelpers.interopDefault(_divergingJs); var _tickFormatJs = require("./tickFormat.js"); var _tickFormatJsDefault = parcelHelpers.interopDefault(_tickFormatJs); -},{"./band.js":false,"./identity.js":"le9d2","./linear.js":"5CETT","./log.js":"2gcSE","./symlog.js":"iUUr7","./ordinal.js":"1j3zZ","./pow.js":"i4lyo","./radial.js":false,"./quantile.js":"aAURo","./quantize.js":"jjcn6","./threshold.js":"8ndX3","./time.js":"cjAqm","./utcTime.js":"cM5gE","./sequential.js":"f1sM1","./sequentialQuantile.js":false,"./diverging.js":"9Qcq3","./tickFormat.js":"dksn9","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"le9d2":[function(require,module,exports) { +},{"./band.js":"6WWiS","./identity.js":"le9d2","./linear.js":"5CETT","./log.js":"2gcSE","./symlog.js":"iUUr7","./ordinal.js":"1j3zZ","./pow.js":"i4lyo","./radial.js":"5ODOz","./quantile.js":"aAURo","./quantize.js":"jjcn6","./threshold.js":"8ndX3","./time.js":"cjAqm","./utcTime.js":"cM5gE","./sequential.js":"f1sM1","./sequentialQuantile.js":"cSmYu","./diverging.js":"9Qcq3","./tickFormat.js":"dksn9","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"6WWiS":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "point", ()=>point); +var _d3Array = require("d3-array"); +var _initJs = require("./init.js"); +var _ordinalJs = require("./ordinal.js"); +var _ordinalJsDefault = parcelHelpers.interopDefault(_ordinalJs); +function band() { + var scale = (0, _ordinalJsDefault.default)().unknown(undefined), domain = scale.domain, ordinalRange = scale.range, r0 = 0, r1 = 1, step, bandwidth, round = false, paddingInner = 0, paddingOuter = 0, align = 0.5; + delete scale.unknown; + function rescale() { + var n = domain().length, reverse = r1 < r0, start = reverse ? r1 : r0, stop = reverse ? r0 : r1; + step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); + if (round) step = Math.floor(step); + start += (stop - start - step * (n - paddingInner)) * align; + bandwidth = step * (1 - paddingInner); + if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); + var values = (0, _d3Array.range)(n).map(function(i) { + return start + step * i; + }); + return ordinalRange(reverse ? values.reverse() : values); + } + scale.domain = function(_) { + return arguments.length ? (domain(_), rescale()) : domain(); + }; + scale.range = function(_) { + return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [ + r0, + r1 + ]; + }; + scale.rangeRound = function(_) { + return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale(); + }; + scale.bandwidth = function() { + return bandwidth; + }; + scale.step = function() { + return step; + }; + scale.round = function(_) { + return arguments.length ? (round = !!_, rescale()) : round; + }; + scale.padding = function(_) { + return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; + }; + scale.paddingInner = function(_) { + return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; + }; + scale.paddingOuter = function(_) { + return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; + }; + scale.align = function(_) { + return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; + }; + scale.copy = function() { + return band(domain(), [ + r0, + r1 + ]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align); + }; + return (0, _initJs.initRange).apply(rescale(), arguments); +} +exports.default = band; +function pointish(scale) { + var copy = scale.copy; + scale.padding = scale.paddingOuter; + delete scale.paddingInner; + delete scale.paddingOuter; + scale.copy = function() { + return pointish(copy()); + }; + return scale; +} +function point() { + return pointish(band.apply(null, arguments).paddingInner(1)); +} + +},{"d3-array":"6IwJG","./init.js":"kLKEv","./ordinal.js":"1j3zZ","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kLKEv":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "initRange", ()=>initRange); +parcelHelpers.export(exports, "initInterpolator", ()=>initInterpolator); +function initRange(domain, range) { + switch(arguments.length){ + case 0: + break; + case 1: + this.range(domain); + break; + default: + this.range(range).domain(domain); + break; + } + return this; +} +function initInterpolator(domain, interpolator) { + switch(arguments.length){ + case 0: + break; + case 1: + if (typeof domain === "function") this.interpolator(domain); + else this.range(domain); + break; + default: + this.domain(domain); + if (typeof interpolator === "function") this.interpolator(interpolator); + else this.range(interpolator); + break; + } + return this; +} + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1j3zZ":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "implicit", ()=>implicit); +var _d3Array = require("d3-array"); +var _initJs = require("./init.js"); +const implicit = Symbol("implicit"); +function ordinal() { + var index = new (0, _d3Array.InternMap)(), domain = [], range = [], unknown = implicit; + function scale(d) { + let i = index.get(d); + if (i === undefined) { + if (unknown !== implicit) return unknown; + index.set(d, i = domain.push(d) - 1); + } + return range[i % range.length]; + } + scale.domain = function(_) { + if (!arguments.length) return domain.slice(); + domain = [], index = new (0, _d3Array.InternMap)(); + for (const value of _){ + if (index.has(value)) continue; + index.set(value, domain.push(value) - 1); + } + return scale; + }; + scale.range = function(_) { + return arguments.length ? (range = Array.from(_), scale) : range.slice(); + }; + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function() { + return ordinal(domain, range).unknown(unknown); + }; + (0, _initJs.initRange).apply(scale, arguments); + return scale; +} +exports.default = ordinal; + +},{"d3-array":"6IwJG","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"le9d2":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _linearJs = require("./linear.js"); @@ -21647,34 +22079,7 @@ var _defineJsDefault = parcelHelpers.interopDefault(_defineJs); function Color() {} var darker = 0.7; var brighter = 1 / darker; -var reI = "\\s*([+-]?\\d+)\\s*", reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp("^rgb\\(" + [ - reI, - reI, - reI -] + "\\)$"), reRgbPercent = new RegExp("^rgb\\(" + [ - reP, - reP, - reP -] + "\\)$"), reRgbaInteger = new RegExp("^rgba\\(" + [ - reI, - reI, - reI, - reN -] + "\\)$"), reRgbaPercent = new RegExp("^rgba\\(" + [ - reP, - reP, - reP, - reN -] + "\\)$"), reHslPercent = new RegExp("^hsl\\(" + [ - reN, - reP, - reP -] + "\\)$"), reHslaPercent = new RegExp("^hsla\\(" + [ - reN, - reP, - reP, - reN -] + "\\)$"); +var reI = "\\s*([+-]?\\d+)\\s*", reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`), reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`), reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`), reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`), reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`), reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`); var named = { aliceblue: 0xf0f8ff, antiquewhite: 0xfaebd7, @@ -21826,14 +22231,15 @@ var named = { yellowgreen: 0x9acd32 }; (0, _defineJsDefault.default)(Color, color, { - copy: function(channels) { + copy (channels) { return Object.assign(new this.constructor, this, channels); }, - displayable: function() { + displayable () { return this.rgb().displayable(); }, hex: color_formatHex, formatHex: color_formatHex, + formatHex8: color_formatHex8, formatHsl: color_formatHsl, formatRgb: color_formatRgb, toString: color_formatRgb @@ -21841,6 +22247,9 @@ var named = { function color_formatHex() { return this.rgb().formatHex(); } +function color_formatHex8() { + return this.rgb().formatHex8(); +} function color_formatHsl() { return hslConvert(this).formatHsl(); } @@ -21888,35 +22297,47 @@ function Rgb(r, g, b, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Rgb, rgb, (0, _defineJs.extend)(Color, { - brighter: function(k) { + brighter (k) { k = k == null ? brighter : Math.pow(brighter, k); return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); }, - darker: function(k) { + darker (k) { k = k == null ? darker : Math.pow(darker, k); return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); }, - rgb: function() { + rgb () { return this; }, - displayable: function() { + clamp () { + return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity)); + }, + displayable () { return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1; }, hex: rgb_formatHex, formatHex: rgb_formatHex, + formatHex8: rgb_formatHex8, formatRgb: rgb_formatRgb, toString: rgb_formatRgb })); function rgb_formatHex() { - return "#" + hex(this.r) + hex(this.g) + hex(this.b); + return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`; +} +function rgb_formatHex8() { + return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; } function rgb_formatRgb() { - var a = this.opacity; - a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "rgb(" : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (a === 1 ? ")" : ", " + a + ")"); + const a = clampa(this.opacity); + return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`; +} +function clampa(opacity) { + return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity)); +} +function clampi(value) { + return Math.max(0, Math.min(255, Math.round(value) || 0)); } function hex(value) { - value = Math.max(0, Math.min(255, Math.round(value) || 0)); + value = clampi(value); return (value < 16 ? "0" : "") + value.toString(16); } function hsla(h, s, l, a) { @@ -21951,27 +22372,36 @@ function Hsl(h, s, l, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Hsl, hsl, (0, _defineJs.extend)(Color, { - brighter: function(k) { + brighter (k) { k = k == null ? brighter : Math.pow(brighter, k); return new Hsl(this.h, this.s, this.l * k, this.opacity); }, - darker: function(k) { + darker (k) { k = k == null ? darker : Math.pow(darker, k); return new Hsl(this.h, this.s, this.l * k, this.opacity); }, - rgb: function() { + rgb () { var h = this.h % 360 + (this.h < 0) * 360, s = isNaN(h) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2; return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity); }, - displayable: function() { + clamp () { + return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity)); + }, + displayable () { return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1; }, - formatHsl: function() { - var a = this.opacity; - a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "hsl(" : "hsla(") + (this.h || 0) + ", " + (this.s || 0) * 100 + "%, " + (this.l || 0) * 100 + "%" + (a === 1 ? ")" : ", " + a + ")"); + formatHsl () { + const a = clampa(this.opacity); + return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`; } })); +function clamph(value) { + value = (value || 0) % 360; + return value < 0 ? value + 360 : value; +} +function clampt(value) { + return Math.max(0, Math.min(1, value || 0)); +} /* From FvD 13.37, CSS Color Module Level 3 */ function hsl2rgb(h, m1, m2) { return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255; } @@ -22030,13 +22460,13 @@ function Lab(l, a, b, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Lab, lab, (0, _defineJs.extend)((0, _colorJs.Color), { - brighter: function(k) { + brighter (k) { return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); }, - darker: function(k) { + darker (k) { return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); }, - rgb: function() { + rgb () { var y = (this.l + 16) / 116, x = isNaN(this.a) ? y : y + this.a / 500, z = isNaN(this.b) ? y : y - this.b / 200; x = Xn * lab2xyz(x); y = Yn * lab2xyz(y); @@ -22081,13 +22511,13 @@ function hcl2lab(o) { return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); } (0, _defineJsDefault.default)(Hcl, hcl, (0, _defineJs.extend)((0, _colorJs.Color), { - brighter: function(k) { + brighter (k) { return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); }, - darker: function(k) { + darker (k) { return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); }, - rgb: function() { + rgb () { return hcl2lab(this).rgb(); } })); @@ -22126,15 +22556,15 @@ function Cubehelix(h, s, l, opacity) { this.opacity = +opacity; } (0, _defineJsDefault.default)(Cubehelix, cubehelix, (0, _defineJs.extend)((0, _colorJs.Color), { - brighter: function(k) { + brighter (k) { k = k == null ? (0, _colorJs.brighter) : Math.pow((0, _colorJs.brighter), k); return new Cubehelix(this.h, this.s, this.l * k, this.opacity); }, - darker: function(k) { + darker (k) { k = k == null ? (0, _colorJs.darker) : Math.pow((0, _colorJs.darker), k); return new Cubehelix(this.h, this.s, this.l * k, this.opacity); }, - rgb: function() { + rgb () { var h = isNaN(this.h) ? 0 : (this.h + 120) * (0, _mathJs.radians), l = +this.l, a = isNaN(this.s) ? 0 : this.s * l * (1 - l), cosh = Math.cos(h), sinh = Math.sin(h); return new (0, _colorJs.Rgb)(255 * (l + a * (A * cosh + B * sinh)), 255 * (l + a * (C * cosh + D * sinh)), 255 * (l + a * (E * cosh)), this.opacity); } @@ -22716,41 +23146,6 @@ function number(x) { } exports.default = number; -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"kLKEv":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "initRange", ()=>initRange); -parcelHelpers.export(exports, "initInterpolator", ()=>initInterpolator); -function initRange(domain, range) { - switch(arguments.length){ - case 0: - break; - case 1: - this.range(domain); - break; - default: - this.range(range).domain(domain); - break; - } - return this; -} -function initInterpolator(domain, interpolator) { - switch(arguments.length){ - case 0: - break; - case 1: - if (typeof domain === "function") this.interpolator(domain); - else this.range(domain); - break; - default: - this.domain(domain); - if (typeof interpolator === "function") this.interpolator(interpolator); - else this.range(interpolator); - break; - } - return this; -} - },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"dksn9":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -22806,22 +23201,20 @@ function pow10(x) { return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; } function powp(base) { - return base === 10 ? pow10 : base === Math.E ? Math.exp : function(x) { - return Math.pow(base, x); - }; + return base === 10 ? pow10 : base === Math.E ? Math.exp : (x)=>Math.pow(base, x); } function logp(base) { - return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), function(x) { - return Math.log(x) / base; - }); + return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), (x)=>Math.log(x) / base); } function reflect(f) { - return function(x) { - return -f(-x); - }; + return (x, k)=>-f(-x, k); } function loggish(transform) { - var scale = transform(transformLog, transformExp), domain = scale.domain, base = 10, logs, pows; + const scale = transform(transformLog, transformExp); + const domain = scale.domain; + let base = 10; + let logs; + let pows; function rescale() { logs = logp(base), pows = powp(base); if (domain()[0] < 0) { @@ -22836,20 +23229,31 @@ function loggish(transform) { scale.domain = function(_) { return arguments.length ? (domain(_), rescale()) : domain(); }; - scale.ticks = function(count) { - var d = domain(), u = d[0], v = d[d.length - 1], r; - if (r = v < u) i = u, u = v, v = i; - var i = logs(u), j = logs(v), p, k, t, n = count == null ? 10 : +count, z = []; + scale.ticks = (count)=>{ + const d = domain(); + let u = d[0]; + let v = d[d.length - 1]; + const r = v < u; + if (r) [u, v] = [ + v, + u + ]; + let i = logs(u); + let j = logs(v); + let k; + let t; + const n = count == null ? 10 : +count; + let z = []; if (!(base % 1) && j - i < n) { i = Math.floor(i), j = Math.ceil(j); - if (u > 0) for(; i <= j; ++i)for(k = 1, p = pows(i); k < base; ++k){ - t = p * k; + if (u > 0) for(; i <= j; ++i)for(k = 1; k < base; ++k){ + t = i < 0 ? k / pows(-i) : k * pows(i); if (t < u) continue; if (t > v) break; z.push(t); } - else for(; i <= j; ++i)for(k = base - 1, p = pows(i); k >= 1; --k){ - t = p * k; + else for(; i <= j; ++i)for(k = base - 1; k >= 1; --k){ + t = i > 0 ? k / pows(-i) : k * pows(i); if (t < u) continue; if (t > v) break; z.push(t); @@ -22858,38 +23262,35 @@ function loggish(transform) { } else z = (0, _d3Array.ticks)(i, j, Math.min(j - i, n)).map(pows); return r ? z.reverse() : z; }; - scale.tickFormat = function(count, specifier) { - if (specifier == null) specifier = base === 10 ? ".0e" : ","; - if (typeof specifier !== "function") specifier = (0, _d3Format.format)(specifier); - if (count === Infinity) return specifier; + scale.tickFormat = (count, specifier)=>{ if (count == null) count = 10; - var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? - return function(d) { - var i = d / pows(Math.round(logs(d))); + if (specifier == null) specifier = base === 10 ? "s" : ","; + if (typeof specifier !== "function") { + if (!(base % 1) && (specifier = (0, _d3Format.formatSpecifier)(specifier)).precision == null) specifier.trim = true; + specifier = (0, _d3Format.format)(specifier); + } + if (count === Infinity) return specifier; + const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? + return (d)=>{ + let i = d / pows(Math.round(logs(d))); if (i * base < base - 0.5) i *= base; return i <= k ? specifier(d) : ""; }; }; - scale.nice = function() { + scale.nice = ()=>{ return domain((0, _niceJsDefault.default)(domain(), { - floor: function(x) { - return pows(Math.floor(logs(x))); - }, - ceil: function(x) { - return pows(Math.ceil(logs(x))); - } + floor: (x)=>pows(Math.floor(logs(x))), + ceil: (x)=>pows(Math.ceil(logs(x))) })); }; return scale; } function log() { - var scale = loggish((0, _continuousJs.transformer)()).domain([ + const scale = loggish((0, _continuousJs.transformer)()).domain([ 1, 10 ]); - scale.copy = function() { - return (0, _continuousJs.copy)(scale, log()).base(scale.base()); - }; + scale.copy = ()=>(0, _continuousJs.copy)(scale, log()).base(scale.base()); (0, _initJs.initRange).apply(scale, arguments); return scale; } @@ -22944,47 +23345,7 @@ function symlog() { } exports.default = symlog; -},{"./linear.js":"5CETT","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"1j3zZ":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "implicit", ()=>implicit); -var _initJs = require("./init.js"); -const implicit = Symbol("implicit"); -function ordinal() { - var index = new Map(), domain = [], range = [], unknown = implicit; - function scale(d) { - var key = d + "", i = index.get(key); - if (!i) { - if (unknown !== implicit) return unknown; - index.set(key, i = domain.push(d)); - } - return range[(i - 1) % range.length]; - } - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = [], index = new Map(); - for (const value of _){ - const key = value + ""; - if (index.has(key)) continue; - index.set(key, domain.push(value)); - } - return scale; - }; - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), scale) : range.slice(); - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - scale.copy = function() { - return ordinal(domain, range).unknown(unknown); - }; - (0, _initJs.initRange).apply(scale, arguments); - return scale; -} -exports.default = ordinal; - -},{"./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i4lyo":[function(require,module,exports) { +},{"./linear.js":"5CETT","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i4lyo":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "powish", ()=>powish); @@ -23026,7 +23387,60 @@ function sqrt() { return pow.apply(null, arguments).exponent(0.5); } -},{"./linear.js":"5CETT","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"aAURo":[function(require,module,exports) { +},{"./linear.js":"5CETT","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"5ODOz":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _continuousJs = require("./continuous.js"); +var _continuousJsDefault = parcelHelpers.interopDefault(_continuousJs); +var _initJs = require("./init.js"); +var _linearJs = require("./linear.js"); +var _numberJs = require("./number.js"); +var _numberJsDefault = parcelHelpers.interopDefault(_numberJs); +function square(x) { + return Math.sign(x) * x * x; +} +function unsquare(x) { + return Math.sign(x) * Math.sqrt(Math.abs(x)); +} +function radial() { + var squared = (0, _continuousJsDefault.default)(), range = [ + 0, + 1 + ], round = false, unknown; + function scale(x) { + var y = unsquare(squared(x)); + return isNaN(y) ? unknown : round ? Math.round(y) : y; + } + scale.invert = function(y) { + return squared.invert(square(y)); + }; + scale.domain = function(_) { + return arguments.length ? (squared.domain(_), scale) : squared.domain(); + }; + scale.range = function(_) { + return arguments.length ? (squared.range((range = Array.from(_, (0, _numberJsDefault.default))).map(square)), scale) : range.slice(); + }; + scale.rangeRound = function(_) { + return scale.range(_).round(true); + }; + scale.round = function(_) { + return arguments.length ? (round = !!_, scale) : round; + }; + scale.clamp = function(_) { + return arguments.length ? (squared.clamp(_), scale) : squared.clamp(); + }; + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function() { + return radial(squared.domain(), range).round(round).clamp(squared.clamp()).unknown(unknown); + }; + (0, _initJs.initRange).apply(scale, arguments); + return (0, _linearJs.linearish)(scale); +} +exports.default = radial; + +},{"./continuous.js":"it8xE","./init.js":"kLKEv","./linear.js":"5CETT","./number.js":"bOzsY","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"aAURo":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _d3Array = require("d3-array"); @@ -23335,7 +23749,43 @@ function sequentialSqrt() { return sequentialPow.apply(null, arguments).exponent(0.5); } -},{"d3-interpolate":"6gbPP","./continuous.js":"it8xE","./init.js":"kLKEv","./linear.js":"5CETT","./log.js":"2gcSE","./symlog.js":"iUUr7","./pow.js":"i4lyo","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9Qcq3":[function(require,module,exports) { +},{"d3-interpolate":"6gbPP","./continuous.js":"it8xE","./init.js":"kLKEv","./linear.js":"5CETT","./log.js":"2gcSE","./symlog.js":"iUUr7","./pow.js":"i4lyo","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"cSmYu":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +var _d3Array = require("d3-array"); +var _continuousJs = require("./continuous.js"); +var _initJs = require("./init.js"); +function sequentialQuantile() { + var domain = [], interpolator = (0, _continuousJs.identity); + function scale(x) { + if (x != null && !isNaN(x = +x)) return interpolator(((0, _d3Array.bisect)(domain, x, 1) - 1) / (domain.length - 1)); + } + scale.domain = function(_) { + if (!arguments.length) return domain.slice(); + domain = []; + for (let d of _)if (d != null && !isNaN(d = +d)) domain.push(d); + domain.sort((0, _d3Array.ascending)); + return scale; + }; + scale.interpolator = function(_) { + return arguments.length ? (interpolator = _, scale) : interpolator; + }; + scale.range = function() { + return domain.map((d, i)=>interpolator(i / (domain.length - 1))); + }; + scale.quantiles = function(n) { + return Array.from({ + length: n + 1 + }, (_, i)=>(0, _d3Array.quantile)(domain, i / n)); + }; + scale.copy = function() { + return sequentialQuantile(interpolator).domain(domain); + }; + return (0, _initJs.initInterpolator).apply(scale, arguments); +} +exports.default = sequentialQuantile; + +},{"d3-array":"6IwJG","./continuous.js":"it8xE","./init.js":"kLKEv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9Qcq3":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "divergingLog", ()=>divergingLog); @@ -26834,8 +27284,7 @@ var _d3Array = require("d3-array"); var _cartesianJs = require("./cartesian.js"); var _mathJs = require("./math.js"); function longitude(point) { - if ((0, _mathJs.abs)(point[0]) <= (0, _mathJs.pi)) return point[0]; - else return (0, _mathJs.sign)(point[0]) * (((0, _mathJs.abs)(point[0]) + (0, _mathJs.pi)) % (0, _mathJs.tau) - (0, _mathJs.pi)); + return (0, _mathJs.abs)(point[0]) <= (0, _mathJs.pi) ? point[0] : (0, _mathJs.sign)(point[0]) * (((0, _mathJs.abs)(point[0]) + (0, _mathJs.pi)) % (0, _mathJs.tau) - (0, _mathJs.pi)); } exports.default = function(polygon, point) { var lambda = longitude(point), phi = point[1], sinPhi = (0, _mathJs.sin)(phi), normal = [ @@ -28849,41 +29298,41 @@ exports.default = function() { },{"../math.js":"74X19","./mercator.js":"iIGjZ","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ixW8K":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "geoAiry", ()=>(0, _airyDefault.default)); -parcelHelpers.export(exports, "geoAiryRaw", ()=>(0, _airy.airyRaw)); -parcelHelpers.export(exports, "geoAitoff", ()=>(0, _aitoffDefault.default)); -parcelHelpers.export(exports, "geoAitoffRaw", ()=>(0, _aitoff.aitoffRaw)); -parcelHelpers.export(exports, "geoArmadillo", ()=>(0, _armadilloDefault.default)); -parcelHelpers.export(exports, "geoArmadilloRaw", ()=>(0, _armadillo.armadilloRaw)); -parcelHelpers.export(exports, "geoAugust", ()=>(0, _augustDefault.default)); -parcelHelpers.export(exports, "geoAugustRaw", ()=>(0, _august.augustRaw)); -parcelHelpers.export(exports, "geoBaker", ()=>(0, _bakerDefault.default)); -parcelHelpers.export(exports, "geoBakerRaw", ()=>(0, _baker.bakerRaw)); -parcelHelpers.export(exports, "geoBerghaus", ()=>(0, _berghausDefault.default)); -parcelHelpers.export(exports, "geoBerghausRaw", ()=>(0, _berghaus.berghausRaw)); -parcelHelpers.export(exports, "geoBertin1953", ()=>(0, _bertinDefault.default)); -parcelHelpers.export(exports, "geoBertin1953Raw", ()=>(0, _bertin.bertin1953Raw)); -parcelHelpers.export(exports, "geoBoggs", ()=>(0, _boggsDefault.default)); -parcelHelpers.export(exports, "geoBoggsRaw", ()=>(0, _boggs.boggsRaw)); -parcelHelpers.export(exports, "geoBonne", ()=>(0, _bonneDefault.default)); -parcelHelpers.export(exports, "geoBonneRaw", ()=>(0, _bonne.bonneRaw)); -parcelHelpers.export(exports, "geoBottomley", ()=>(0, _bottomleyDefault.default)); -parcelHelpers.export(exports, "geoBottomleyRaw", ()=>(0, _bottomley.bottomleyRaw)); -parcelHelpers.export(exports, "geoBromley", ()=>(0, _bromleyDefault.default)); -parcelHelpers.export(exports, "geoBromleyRaw", ()=>(0, _bromley.bromleyRaw)); -parcelHelpers.export(exports, "geoChamberlin", ()=>(0, _chamberlinDefault.default)); -parcelHelpers.export(exports, "geoChamberlinRaw", ()=>(0, _chamberlin.chamberlinRaw)); -parcelHelpers.export(exports, "geoChamberlinAfrica", ()=>(0, _chamberlin.chamberlinAfrica)); -parcelHelpers.export(exports, "geoCollignon", ()=>(0, _collignonDefault.default)); -parcelHelpers.export(exports, "geoCollignonRaw", ()=>(0, _collignon.collignonRaw)); -parcelHelpers.export(exports, "geoCraig", ()=>(0, _craigDefault.default)); -parcelHelpers.export(exports, "geoCraigRaw", ()=>(0, _craig.craigRaw)); -parcelHelpers.export(exports, "geoCraster", ()=>(0, _crasterDefault.default)); -parcelHelpers.export(exports, "geoCrasterRaw", ()=>(0, _craster.crasterRaw)); -parcelHelpers.export(exports, "geoCylindricalEqualArea", ()=>(0, _cylindricalEqualAreaDefault.default)); -parcelHelpers.export(exports, "geoCylindricalEqualAreaRaw", ()=>(0, _cylindricalEqualArea.cylindricalEqualAreaRaw)); -parcelHelpers.export(exports, "geoCylindricalStereographic", ()=>(0, _cylindricalStereographicDefault.default)); -parcelHelpers.export(exports, "geoCylindricalStereographicRaw", ()=>(0, _cylindricalStereographic.cylindricalStereographicRaw)); +parcelHelpers.export(exports, "geoAiry", ()=>(0, _airyJsDefault.default)); +parcelHelpers.export(exports, "geoAiryRaw", ()=>(0, _airyJs.airyRaw)); +parcelHelpers.export(exports, "geoAitoff", ()=>(0, _aitoffJsDefault.default)); +parcelHelpers.export(exports, "geoAitoffRaw", ()=>(0, _aitoffJs.aitoffRaw)); +parcelHelpers.export(exports, "geoArmadillo", ()=>(0, _armadilloJsDefault.default)); +parcelHelpers.export(exports, "geoArmadilloRaw", ()=>(0, _armadilloJs.armadilloRaw)); +parcelHelpers.export(exports, "geoAugust", ()=>(0, _augustJsDefault.default)); +parcelHelpers.export(exports, "geoAugustRaw", ()=>(0, _augustJs.augustRaw)); +parcelHelpers.export(exports, "geoBaker", ()=>(0, _bakerJsDefault.default)); +parcelHelpers.export(exports, "geoBakerRaw", ()=>(0, _bakerJs.bakerRaw)); +parcelHelpers.export(exports, "geoBerghaus", ()=>(0, _berghausJsDefault.default)); +parcelHelpers.export(exports, "geoBerghausRaw", ()=>(0, _berghausJs.berghausRaw)); +parcelHelpers.export(exports, "geoBertin1953", ()=>(0, _bertinJsDefault.default)); +parcelHelpers.export(exports, "geoBertin1953Raw", ()=>(0, _bertinJs.bertin1953Raw)); +parcelHelpers.export(exports, "geoBoggs", ()=>(0, _boggsJsDefault.default)); +parcelHelpers.export(exports, "geoBoggsRaw", ()=>(0, _boggsJs.boggsRaw)); +parcelHelpers.export(exports, "geoBonne", ()=>(0, _bonneJsDefault.default)); +parcelHelpers.export(exports, "geoBonneRaw", ()=>(0, _bonneJs.bonneRaw)); +parcelHelpers.export(exports, "geoBottomley", ()=>(0, _bottomleyJsDefault.default)); +parcelHelpers.export(exports, "geoBottomleyRaw", ()=>(0, _bottomleyJs.bottomleyRaw)); +parcelHelpers.export(exports, "geoBromley", ()=>(0, _bromleyJsDefault.default)); +parcelHelpers.export(exports, "geoBromleyRaw", ()=>(0, _bromleyJs.bromleyRaw)); +parcelHelpers.export(exports, "geoChamberlin", ()=>(0, _chamberlinJsDefault.default)); +parcelHelpers.export(exports, "geoChamberlinRaw", ()=>(0, _chamberlinJs.chamberlinRaw)); +parcelHelpers.export(exports, "geoChamberlinAfrica", ()=>(0, _chamberlinJs.chamberlinAfrica)); +parcelHelpers.export(exports, "geoCollignon", ()=>(0, _collignonJsDefault.default)); +parcelHelpers.export(exports, "geoCollignonRaw", ()=>(0, _collignonJs.collignonRaw)); +parcelHelpers.export(exports, "geoCraig", ()=>(0, _craigJsDefault.default)); +parcelHelpers.export(exports, "geoCraigRaw", ()=>(0, _craigJs.craigRaw)); +parcelHelpers.export(exports, "geoCraster", ()=>(0, _crasterJsDefault.default)); +parcelHelpers.export(exports, "geoCrasterRaw", ()=>(0, _crasterJs.crasterRaw)); +parcelHelpers.export(exports, "geoCylindricalEqualArea", ()=>(0, _cylindricalEqualAreaJsDefault.default)); +parcelHelpers.export(exports, "geoCylindricalEqualAreaRaw", ()=>(0, _cylindricalEqualAreaJs.cylindricalEqualAreaRaw)); +parcelHelpers.export(exports, "geoCylindricalStereographic", ()=>(0, _cylindricalStereographicJsDefault.default)); +parcelHelpers.export(exports, "geoCylindricalStereographicRaw", ()=>(0, _cylindricalStereographicJs.cylindricalStereographicRaw)); parcelHelpers.export(exports, "geoEckert1", ()=>(0, _eckert1JsDefault.default)); parcelHelpers.export(exports, "geoEckert1Raw", ()=>(0, _eckert1Js.eckert1Raw)); parcelHelpers.export(exports, "geoEckert2", ()=>(0, _eckert2JsDefault.default)); @@ -28933,91 +29382,91 @@ parcelHelpers.export(exports, "geoHomolosine", ()=>(0, _homolosineJsDefault.defa parcelHelpers.export(exports, "geoHomolosineRaw", ()=>(0, _homolosineJs.homolosineRaw)); parcelHelpers.export(exports, "geoHufnagel", ()=>(0, _hufnagelJsDefault.default)); parcelHelpers.export(exports, "geoHufnagelRaw", ()=>(0, _hufnagelJs.hufnagelRaw)); -parcelHelpers.export(exports, "geoHyperelliptical", ()=>(0, _hyperellipticalDefault.default)); -parcelHelpers.export(exports, "geoHyperellipticalRaw", ()=>(0, _hyperelliptical.hyperellipticalRaw)); -parcelHelpers.export(exports, "geoInterrupt", ()=>(0, _indexDefault.default)); -parcelHelpers.export(exports, "geoInterruptedBoggs", ()=>(0, _boggsDefault1.default)); -parcelHelpers.export(exports, "geoInterruptedHomolosine", ()=>(0, _homolosineDefault.default)); -parcelHelpers.export(exports, "geoInterruptedMollweide", ()=>(0, _mollweideDefault.default)); -parcelHelpers.export(exports, "geoInterruptedMollweideHemispheres", ()=>(0, _mollweideHemispheresDefault.default)); -parcelHelpers.export(exports, "geoInterruptedSinuMollweide", ()=>(0, _sinuMollweideDefault.default)); -parcelHelpers.export(exports, "geoInterruptedSinusoidal", ()=>(0, _sinusoidalDefault.default)); +parcelHelpers.export(exports, "geoHyperelliptical", ()=>(0, _hyperellipticalJsDefault.default)); +parcelHelpers.export(exports, "geoHyperellipticalRaw", ()=>(0, _hyperellipticalJs.hyperellipticalRaw)); +parcelHelpers.export(exports, "geoInterrupt", ()=>(0, _indexJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedBoggs", ()=>(0, _boggsJsDefault1.default)); +parcelHelpers.export(exports, "geoInterruptedHomolosine", ()=>(0, _homolosineJsDefault1.default)); +parcelHelpers.export(exports, "geoInterruptedMollweide", ()=>(0, _mollweideJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedMollweideHemispheres", ()=>(0, _mollweideHemispheresJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedSinuMollweide", ()=>(0, _sinuMollweideJsDefault.default)); +parcelHelpers.export(exports, "geoInterruptedSinusoidal", ()=>(0, _sinusoidalJsDefault.default)); parcelHelpers.export(exports, "geoKavrayskiy7", ()=>(0, _kavrayskiy7JsDefault.default)); parcelHelpers.export(exports, "geoKavrayskiy7Raw", ()=>(0, _kavrayskiy7Js.kavrayskiy7Raw)); parcelHelpers.export(exports, "geoLagrange", ()=>(0, _lagrangeJsDefault.default)); parcelHelpers.export(exports, "geoLagrangeRaw", ()=>(0, _lagrangeJs.lagrangeRaw)); -parcelHelpers.export(exports, "geoLarrivee", ()=>(0, _larriveeDefault.default)); -parcelHelpers.export(exports, "geoLarriveeRaw", ()=>(0, _larrivee.larriveeRaw)); -parcelHelpers.export(exports, "geoLaskowski", ()=>(0, _laskowskiDefault.default)); -parcelHelpers.export(exports, "geoLaskowskiRaw", ()=>(0, _laskowski.laskowskiRaw)); +parcelHelpers.export(exports, "geoLarrivee", ()=>(0, _larriveeJsDefault.default)); +parcelHelpers.export(exports, "geoLarriveeRaw", ()=>(0, _larriveeJs.larriveeRaw)); +parcelHelpers.export(exports, "geoLaskowski", ()=>(0, _laskowskiJsDefault.default)); +parcelHelpers.export(exports, "geoLaskowskiRaw", ()=>(0, _laskowskiJs.laskowskiRaw)); parcelHelpers.export(exports, "geoLittrow", ()=>(0, _littrowJsDefault.default)); parcelHelpers.export(exports, "geoLittrowRaw", ()=>(0, _littrowJs.littrowRaw)); parcelHelpers.export(exports, "geoLoximuthal", ()=>(0, _loximuthalJsDefault.default)); parcelHelpers.export(exports, "geoLoximuthalRaw", ()=>(0, _loximuthalJs.loximuthalRaw)); -parcelHelpers.export(exports, "geoMiller", ()=>(0, _millerDefault.default)); -parcelHelpers.export(exports, "geoMillerRaw", ()=>(0, _miller.millerRaw)); -parcelHelpers.export(exports, "geoModifiedStereographic", ()=>(0, _modifiedStereographicDefault.default)); -parcelHelpers.export(exports, "geoModifiedStereographicRaw", ()=>(0, _modifiedStereographic.modifiedStereographicRaw)); -parcelHelpers.export(exports, "geoModifiedStereographicAlaska", ()=>(0, _modifiedStereographic.modifiedStereographicAlaska)); -parcelHelpers.export(exports, "geoModifiedStereographicGs48", ()=>(0, _modifiedStereographic.modifiedStereographicGs48)); -parcelHelpers.export(exports, "geoModifiedStereographicGs50", ()=>(0, _modifiedStereographic.modifiedStereographicGs50)); -parcelHelpers.export(exports, "geoModifiedStereographicMiller", ()=>(0, _modifiedStereographic.modifiedStereographicMiller)); -parcelHelpers.export(exports, "geoModifiedStereographicLee", ()=>(0, _modifiedStereographic.modifiedStereographicLee)); -parcelHelpers.export(exports, "geoMollweide", ()=>(0, _mollweideDefault1.default)); -parcelHelpers.export(exports, "geoMollweideRaw", ()=>(0, _mollweide1.mollweideRaw)); -parcelHelpers.export(exports, "geoMtFlatPolarParabolic", ()=>(0, _mtFlatPolarParabolicDefault.default)); -parcelHelpers.export(exports, "geoMtFlatPolarParabolicRaw", ()=>(0, _mtFlatPolarParabolic.mtFlatPolarParabolicRaw)); -parcelHelpers.export(exports, "geoMtFlatPolarQuartic", ()=>(0, _mtFlatPolarQuarticDefault.default)); -parcelHelpers.export(exports, "geoMtFlatPolarQuarticRaw", ()=>(0, _mtFlatPolarQuartic.mtFlatPolarQuarticRaw)); -parcelHelpers.export(exports, "geoMtFlatPolarSinusoidal", ()=>(0, _mtFlatPolarSinusoidalDefault.default)); -parcelHelpers.export(exports, "geoMtFlatPolarSinusoidalRaw", ()=>(0, _mtFlatPolarSinusoidal.mtFlatPolarSinusoidalRaw)); -parcelHelpers.export(exports, "geoNaturalEarth2", ()=>(0, _naturalEarth2Default.default)); -parcelHelpers.export(exports, "geoNaturalEarth2Raw", ()=>(0, _naturalEarth2.naturalEarth2Raw)); -parcelHelpers.export(exports, "geoNellHammer", ()=>(0, _nellHammerDefault.default)); -parcelHelpers.export(exports, "geoNellHammerRaw", ()=>(0, _nellHammer.nellHammerRaw)); -parcelHelpers.export(exports, "geoInterruptedQuarticAuthalic", ()=>(0, _quarticAuthalicDefault.default)); -parcelHelpers.export(exports, "geoNicolosi", ()=>(0, _nicolosiDefault.default)); -parcelHelpers.export(exports, "geoNicolosiRaw", ()=>(0, _nicolosi.nicolosiRaw)); -parcelHelpers.export(exports, "geoPatterson", ()=>(0, _pattersonDefault.default)); -parcelHelpers.export(exports, "geoPattersonRaw", ()=>(0, _patterson.pattersonRaw)); -parcelHelpers.export(exports, "geoPolyconic", ()=>(0, _polyconicDefault.default)); -parcelHelpers.export(exports, "geoPolyconicRaw", ()=>(0, _polyconic.polyconicRaw)); -parcelHelpers.export(exports, "geoPolyhedral", ()=>(0, _indexJsDefault.default)); +parcelHelpers.export(exports, "geoMiller", ()=>(0, _millerJsDefault.default)); +parcelHelpers.export(exports, "geoMillerRaw", ()=>(0, _millerJs.millerRaw)); +parcelHelpers.export(exports, "geoModifiedStereographic", ()=>(0, _modifiedStereographicJsDefault.default)); +parcelHelpers.export(exports, "geoModifiedStereographicRaw", ()=>(0, _modifiedStereographicJs.modifiedStereographicRaw)); +parcelHelpers.export(exports, "geoModifiedStereographicAlaska", ()=>(0, _modifiedStereographicJs.modifiedStereographicAlaska)); +parcelHelpers.export(exports, "geoModifiedStereographicGs48", ()=>(0, _modifiedStereographicJs.modifiedStereographicGs48)); +parcelHelpers.export(exports, "geoModifiedStereographicGs50", ()=>(0, _modifiedStereographicJs.modifiedStereographicGs50)); +parcelHelpers.export(exports, "geoModifiedStereographicMiller", ()=>(0, _modifiedStereographicJs.modifiedStereographicMiller)); +parcelHelpers.export(exports, "geoModifiedStereographicLee", ()=>(0, _modifiedStereographicJs.modifiedStereographicLee)); +parcelHelpers.export(exports, "geoMollweide", ()=>(0, _mollweideJsDefault1.default)); +parcelHelpers.export(exports, "geoMollweideRaw", ()=>(0, _mollweideJs1.mollweideRaw)); +parcelHelpers.export(exports, "geoMtFlatPolarParabolic", ()=>(0, _mtFlatPolarParabolicJsDefault.default)); +parcelHelpers.export(exports, "geoMtFlatPolarParabolicRaw", ()=>(0, _mtFlatPolarParabolicJs.mtFlatPolarParabolicRaw)); +parcelHelpers.export(exports, "geoMtFlatPolarQuartic", ()=>(0, _mtFlatPolarQuarticJsDefault.default)); +parcelHelpers.export(exports, "geoMtFlatPolarQuarticRaw", ()=>(0, _mtFlatPolarQuarticJs.mtFlatPolarQuarticRaw)); +parcelHelpers.export(exports, "geoMtFlatPolarSinusoidal", ()=>(0, _mtFlatPolarSinusoidalJsDefault.default)); +parcelHelpers.export(exports, "geoMtFlatPolarSinusoidalRaw", ()=>(0, _mtFlatPolarSinusoidalJs.mtFlatPolarSinusoidalRaw)); +parcelHelpers.export(exports, "geoNaturalEarth2", ()=>(0, _naturalEarth2JsDefault.default)); +parcelHelpers.export(exports, "geoNaturalEarth2Raw", ()=>(0, _naturalEarth2Js.naturalEarth2Raw)); +parcelHelpers.export(exports, "geoNellHammer", ()=>(0, _nellHammerJsDefault.default)); +parcelHelpers.export(exports, "geoNellHammerRaw", ()=>(0, _nellHammerJs.nellHammerRaw)); +parcelHelpers.export(exports, "geoInterruptedQuarticAuthalic", ()=>(0, _quarticAuthalicJsDefault.default)); +parcelHelpers.export(exports, "geoNicolosi", ()=>(0, _nicolosiJsDefault.default)); +parcelHelpers.export(exports, "geoNicolosiRaw", ()=>(0, _nicolosiJs.nicolosiRaw)); +parcelHelpers.export(exports, "geoPatterson", ()=>(0, _pattersonJsDefault.default)); +parcelHelpers.export(exports, "geoPattersonRaw", ()=>(0, _pattersonJs.pattersonRaw)); +parcelHelpers.export(exports, "geoPolyconic", ()=>(0, _polyconicJsDefault.default)); +parcelHelpers.export(exports, "geoPolyconicRaw", ()=>(0, _polyconicJs.polyconicRaw)); +parcelHelpers.export(exports, "geoPolyhedral", ()=>(0, _indexJsDefault1.default)); parcelHelpers.export(exports, "geoPolyhedralButterfly", ()=>(0, _butterflyJsDefault.default)); -parcelHelpers.export(exports, "geoPolyhedralCollignon", ()=>(0, _collignonJsDefault.default)); +parcelHelpers.export(exports, "geoPolyhedralCollignon", ()=>(0, _collignonJsDefault1.default)); parcelHelpers.export(exports, "geoPolyhedralWaterman", ()=>(0, _watermanJsDefault.default)); -parcelHelpers.export(exports, "geoProject", ()=>(0, _indexDefault1.default)); +parcelHelpers.export(exports, "geoProject", ()=>(0, _indexJsDefault2.default)); parcelHelpers.export(exports, "geoGringortenQuincuncial", ()=>(0, _gringortenJsDefault1.default)); parcelHelpers.export(exports, "geoPeirceQuincuncial", ()=>(0, _peirceJsDefault.default)); -parcelHelpers.export(exports, "geoQuantize", ()=>(0, _quantizeDefault.default)); -parcelHelpers.export(exports, "geoQuincuncial", ()=>(0, _indexJsDefault1.default)); -parcelHelpers.export(exports, "geoRectangularPolyconic", ()=>(0, _rectangularPolyconicDefault.default)); -parcelHelpers.export(exports, "geoRectangularPolyconicRaw", ()=>(0, _rectangularPolyconic.rectangularPolyconicRaw)); -parcelHelpers.export(exports, "geoRobinson", ()=>(0, _robinsonDefault.default)); -parcelHelpers.export(exports, "geoRobinsonRaw", ()=>(0, _robinson.robinsonRaw)); -parcelHelpers.export(exports, "geoSatellite", ()=>(0, _satelliteDefault.default)); -parcelHelpers.export(exports, "geoSatelliteRaw", ()=>(0, _satellite.satelliteRaw)); -parcelHelpers.export(exports, "geoSinuMollweide", ()=>(0, _sinuMollweideDefault1.default)); -parcelHelpers.export(exports, "geoSinuMollweideRaw", ()=>(0, _sinuMollweide1.sinuMollweideRaw)); -parcelHelpers.export(exports, "geoSinusoidal", ()=>(0, _sinusoidalDefault1.default)); -parcelHelpers.export(exports, "geoSinusoidalRaw", ()=>(0, _sinusoidal1.sinusoidalRaw)); -parcelHelpers.export(exports, "geoStitch", ()=>(0, _stitchDefault.default)); -parcelHelpers.export(exports, "geoTimes", ()=>(0, _timesDefault.default)); -parcelHelpers.export(exports, "geoTimesRaw", ()=>(0, _times.timesRaw)); -parcelHelpers.export(exports, "geoTwoPointAzimuthal", ()=>(0, _twoPointAzimuthalDefault.default)); -parcelHelpers.export(exports, "geoTwoPointAzimuthalRaw", ()=>(0, _twoPointAzimuthal.twoPointAzimuthalRaw)); -parcelHelpers.export(exports, "geoTwoPointAzimuthalUsa", ()=>(0, _twoPointAzimuthal.twoPointAzimuthalUsa)); -parcelHelpers.export(exports, "geoTwoPointEquidistant", ()=>(0, _twoPointEquidistantDefault.default)); -parcelHelpers.export(exports, "geoTwoPointEquidistantRaw", ()=>(0, _twoPointEquidistant.twoPointEquidistantRaw)); -parcelHelpers.export(exports, "geoTwoPointEquidistantUsa", ()=>(0, _twoPointEquidistant.twoPointEquidistantUsa)); -parcelHelpers.export(exports, "geoVanDerGrinten", ()=>(0, _vanDerGrintenDefault.default)); -parcelHelpers.export(exports, "geoVanDerGrintenRaw", ()=>(0, _vanDerGrinten.vanDerGrintenRaw)); -parcelHelpers.export(exports, "geoVanDerGrinten2", ()=>(0, _vanDerGrinten2Default.default)); -parcelHelpers.export(exports, "geoVanDerGrinten2Raw", ()=>(0, _vanDerGrinten2.vanDerGrinten2Raw)); -parcelHelpers.export(exports, "geoVanDerGrinten3", ()=>(0, _vanDerGrinten3Default.default)); -parcelHelpers.export(exports, "geoVanDerGrinten3Raw", ()=>(0, _vanDerGrinten3.vanDerGrinten3Raw)); -parcelHelpers.export(exports, "geoVanDerGrinten4", ()=>(0, _vanDerGrinten4Default.default)); -parcelHelpers.export(exports, "geoVanDerGrinten4Raw", ()=>(0, _vanDerGrinten4.vanDerGrinten4Raw)); +parcelHelpers.export(exports, "geoQuantize", ()=>(0, _quantizeJsDefault.default)); +parcelHelpers.export(exports, "geoQuincuncial", ()=>(0, _indexJsDefault3.default)); +parcelHelpers.export(exports, "geoRectangularPolyconic", ()=>(0, _rectangularPolyconicJsDefault.default)); +parcelHelpers.export(exports, "geoRectangularPolyconicRaw", ()=>(0, _rectangularPolyconicJs.rectangularPolyconicRaw)); +parcelHelpers.export(exports, "geoRobinson", ()=>(0, _robinsonJsDefault.default)); +parcelHelpers.export(exports, "geoRobinsonRaw", ()=>(0, _robinsonJs.robinsonRaw)); +parcelHelpers.export(exports, "geoSatellite", ()=>(0, _satelliteJsDefault.default)); +parcelHelpers.export(exports, "geoSatelliteRaw", ()=>(0, _satelliteJs.satelliteRaw)); +parcelHelpers.export(exports, "geoSinuMollweide", ()=>(0, _sinuMollweideJsDefault1.default)); +parcelHelpers.export(exports, "geoSinuMollweideRaw", ()=>(0, _sinuMollweideJs1.sinuMollweideRaw)); +parcelHelpers.export(exports, "geoSinusoidal", ()=>(0, _sinusoidalJsDefault1.default)); +parcelHelpers.export(exports, "geoSinusoidalRaw", ()=>(0, _sinusoidalJs1.sinusoidalRaw)); +parcelHelpers.export(exports, "geoStitch", ()=>(0, _stitchJsDefault.default)); +parcelHelpers.export(exports, "geoTimes", ()=>(0, _timesJsDefault.default)); +parcelHelpers.export(exports, "geoTimesRaw", ()=>(0, _timesJs.timesRaw)); +parcelHelpers.export(exports, "geoTwoPointAzimuthal", ()=>(0, _twoPointAzimuthalJsDefault.default)); +parcelHelpers.export(exports, "geoTwoPointAzimuthalRaw", ()=>(0, _twoPointAzimuthalJs.twoPointAzimuthalRaw)); +parcelHelpers.export(exports, "geoTwoPointAzimuthalUsa", ()=>(0, _twoPointAzimuthalJs.twoPointAzimuthalUsa)); +parcelHelpers.export(exports, "geoTwoPointEquidistant", ()=>(0, _twoPointEquidistantJsDefault.default)); +parcelHelpers.export(exports, "geoTwoPointEquidistantRaw", ()=>(0, _twoPointEquidistantJs.twoPointEquidistantRaw)); +parcelHelpers.export(exports, "geoTwoPointEquidistantUsa", ()=>(0, _twoPointEquidistantJs.twoPointEquidistantUsa)); +parcelHelpers.export(exports, "geoVanDerGrinten", ()=>(0, _vanDerGrintenJsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrintenRaw", ()=>(0, _vanDerGrintenJs.vanDerGrintenRaw)); +parcelHelpers.export(exports, "geoVanDerGrinten2", ()=>(0, _vanDerGrinten2JsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrinten2Raw", ()=>(0, _vanDerGrinten2Js.vanDerGrinten2Raw)); +parcelHelpers.export(exports, "geoVanDerGrinten3", ()=>(0, _vanDerGrinten3JsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrinten3Raw", ()=>(0, _vanDerGrinten3Js.vanDerGrinten3Raw)); +parcelHelpers.export(exports, "geoVanDerGrinten4", ()=>(0, _vanDerGrinten4JsDefault.default)); +parcelHelpers.export(exports, "geoVanDerGrinten4Raw", ()=>(0, _vanDerGrinten4Js.vanDerGrinten4Raw)); parcelHelpers.export(exports, "geoWagner", ()=>(0, _wagnerJsDefault.default)); parcelHelpers.export(exports, "geoWagner7", ()=>(0, _wagnerJs.wagner7)); parcelHelpers.export(exports, "geoWagnerRaw", ()=>(0, _wagnerJs.wagnerRaw)); @@ -29027,42 +29476,42 @@ parcelHelpers.export(exports, "geoWagner6", ()=>(0, _wagner6JsDefault.default)); parcelHelpers.export(exports, "geoWagner6Raw", ()=>(0, _wagner6Js.wagner6Raw)); parcelHelpers.export(exports, "geoWiechel", ()=>(0, _wiechelJsDefault.default)); parcelHelpers.export(exports, "geoWiechelRaw", ()=>(0, _wiechelJs.wiechelRaw)); -parcelHelpers.export(exports, "geoWinkel3", ()=>(0, _winkel3Default.default)); -parcelHelpers.export(exports, "geoWinkel3Raw", ()=>(0, _winkel3.winkel3Raw)); -var _airy = require("./airy"); -var _airyDefault = parcelHelpers.interopDefault(_airy); -var _aitoff = require("./aitoff"); -var _aitoffDefault = parcelHelpers.interopDefault(_aitoff); -var _armadillo = require("./armadillo"); -var _armadilloDefault = parcelHelpers.interopDefault(_armadillo); -var _august = require("./august"); -var _augustDefault = parcelHelpers.interopDefault(_august); -var _baker = require("./baker"); -var _bakerDefault = parcelHelpers.interopDefault(_baker); -var _berghaus = require("./berghaus"); -var _berghausDefault = parcelHelpers.interopDefault(_berghaus); -var _bertin = require("./bertin"); -var _bertinDefault = parcelHelpers.interopDefault(_bertin); -var _boggs = require("./boggs"); -var _boggsDefault = parcelHelpers.interopDefault(_boggs); -var _bonne = require("./bonne"); -var _bonneDefault = parcelHelpers.interopDefault(_bonne); -var _bottomley = require("./bottomley"); -var _bottomleyDefault = parcelHelpers.interopDefault(_bottomley); -var _bromley = require("./bromley"); -var _bromleyDefault = parcelHelpers.interopDefault(_bromley); -var _chamberlin = require("./chamberlin"); -var _chamberlinDefault = parcelHelpers.interopDefault(_chamberlin); -var _collignon = require("./collignon"); -var _collignonDefault = parcelHelpers.interopDefault(_collignon); -var _craig = require("./craig"); -var _craigDefault = parcelHelpers.interopDefault(_craig); -var _craster = require("./craster"); -var _crasterDefault = parcelHelpers.interopDefault(_craster); -var _cylindricalEqualArea = require("./cylindricalEqualArea"); -var _cylindricalEqualAreaDefault = parcelHelpers.interopDefault(_cylindricalEqualArea); -var _cylindricalStereographic = require("./cylindricalStereographic"); -var _cylindricalStereographicDefault = parcelHelpers.interopDefault(_cylindricalStereographic); +parcelHelpers.export(exports, "geoWinkel3", ()=>(0, _winkel3JsDefault.default)); +parcelHelpers.export(exports, "geoWinkel3Raw", ()=>(0, _winkel3Js.winkel3Raw)); +var _airyJs = require("./airy.js"); +var _airyJsDefault = parcelHelpers.interopDefault(_airyJs); +var _aitoffJs = require("./aitoff.js"); +var _aitoffJsDefault = parcelHelpers.interopDefault(_aitoffJs); +var _armadilloJs = require("./armadillo.js"); +var _armadilloJsDefault = parcelHelpers.interopDefault(_armadilloJs); +var _augustJs = require("./august.js"); +var _augustJsDefault = parcelHelpers.interopDefault(_augustJs); +var _bakerJs = require("./baker.js"); +var _bakerJsDefault = parcelHelpers.interopDefault(_bakerJs); +var _berghausJs = require("./berghaus.js"); +var _berghausJsDefault = parcelHelpers.interopDefault(_berghausJs); +var _bertinJs = require("./bertin.js"); +var _bertinJsDefault = parcelHelpers.interopDefault(_bertinJs); +var _boggsJs = require("./boggs.js"); +var _boggsJsDefault = parcelHelpers.interopDefault(_boggsJs); +var _bonneJs = require("./bonne.js"); +var _bonneJsDefault = parcelHelpers.interopDefault(_bonneJs); +var _bottomleyJs = require("./bottomley.js"); +var _bottomleyJsDefault = parcelHelpers.interopDefault(_bottomleyJs); +var _bromleyJs = require("./bromley.js"); +var _bromleyJsDefault = parcelHelpers.interopDefault(_bromleyJs); +var _chamberlinJs = require("./chamberlin.js"); +var _chamberlinJsDefault = parcelHelpers.interopDefault(_chamberlinJs); +var _collignonJs = require("./collignon.js"); +var _collignonJsDefault = parcelHelpers.interopDefault(_collignonJs); +var _craigJs = require("./craig.js"); +var _craigJsDefault = parcelHelpers.interopDefault(_craigJs); +var _crasterJs = require("./craster.js"); +var _crasterJsDefault = parcelHelpers.interopDefault(_crasterJs); +var _cylindricalEqualAreaJs = require("./cylindricalEqualArea.js"); +var _cylindricalEqualAreaJsDefault = parcelHelpers.interopDefault(_cylindricalEqualAreaJs); +var _cylindricalStereographicJs = require("./cylindricalStereographic.js"); +var _cylindricalStereographicJsDefault = parcelHelpers.interopDefault(_cylindricalStereographicJs); var _eckert1Js = require("./eckert1.js"); var _eckert1JsDefault = parcelHelpers.interopDefault(_eckert1Js); var _eckert2Js = require("./eckert2.js"); @@ -29113,102 +29562,102 @@ var _homolosineJs = require("./homolosine.js"); var _homolosineJsDefault = parcelHelpers.interopDefault(_homolosineJs); var _hufnagelJs = require("./hufnagel.js"); var _hufnagelJsDefault = parcelHelpers.interopDefault(_hufnagelJs); -var _hyperelliptical = require("./hyperelliptical"); -var _hyperellipticalDefault = parcelHelpers.interopDefault(_hyperelliptical); -var _index = require("./interrupted/index"); -var _indexDefault = parcelHelpers.interopDefault(_index); -var _boggs1 = require("./interrupted/boggs"); -var _boggsDefault1 = parcelHelpers.interopDefault(_boggs1); -var _homolosine = require("./interrupted/homolosine"); -var _homolosineDefault = parcelHelpers.interopDefault(_homolosine); -var _mollweide = require("./interrupted/mollweide"); -var _mollweideDefault = parcelHelpers.interopDefault(_mollweide); -var _mollweideHemispheres = require("./interrupted/mollweideHemispheres"); -var _mollweideHemispheresDefault = parcelHelpers.interopDefault(_mollweideHemispheres); -var _sinuMollweide = require("./interrupted/sinuMollweide"); -var _sinuMollweideDefault = parcelHelpers.interopDefault(_sinuMollweide); -var _sinusoidal = require("./interrupted/sinusoidal"); -var _sinusoidalDefault = parcelHelpers.interopDefault(_sinusoidal); +var _hyperellipticalJs = require("./hyperelliptical.js"); +var _hyperellipticalJsDefault = parcelHelpers.interopDefault(_hyperellipticalJs); +var _indexJs = require("./interrupted/index.js"); +var _indexJsDefault = parcelHelpers.interopDefault(_indexJs); +var _boggsJs1 = require("./interrupted/boggs.js"); +var _boggsJsDefault1 = parcelHelpers.interopDefault(_boggsJs1); +var _homolosineJs1 = require("./interrupted/homolosine.js"); +var _homolosineJsDefault1 = parcelHelpers.interopDefault(_homolosineJs1); +var _mollweideJs = require("./interrupted/mollweide.js"); +var _mollweideJsDefault = parcelHelpers.interopDefault(_mollweideJs); +var _mollweideHemispheresJs = require("./interrupted/mollweideHemispheres.js"); +var _mollweideHemispheresJsDefault = parcelHelpers.interopDefault(_mollweideHemispheresJs); +var _sinuMollweideJs = require("./interrupted/sinuMollweide.js"); +var _sinuMollweideJsDefault = parcelHelpers.interopDefault(_sinuMollweideJs); +var _sinusoidalJs = require("./interrupted/sinusoidal.js"); +var _sinusoidalJsDefault = parcelHelpers.interopDefault(_sinusoidalJs); var _kavrayskiy7Js = require("./kavrayskiy7.js"); var _kavrayskiy7JsDefault = parcelHelpers.interopDefault(_kavrayskiy7Js); var _lagrangeJs = require("./lagrange.js"); var _lagrangeJsDefault = parcelHelpers.interopDefault(_lagrangeJs); -var _larrivee = require("./larrivee"); -var _larriveeDefault = parcelHelpers.interopDefault(_larrivee); -var _laskowski = require("./laskowski"); -var _laskowskiDefault = parcelHelpers.interopDefault(_laskowski); +var _larriveeJs = require("./larrivee.js"); +var _larriveeJsDefault = parcelHelpers.interopDefault(_larriveeJs); +var _laskowskiJs = require("./laskowski.js"); +var _laskowskiJsDefault = parcelHelpers.interopDefault(_laskowskiJs); var _littrowJs = require("./littrow.js"); var _littrowJsDefault = parcelHelpers.interopDefault(_littrowJs); var _loximuthalJs = require("./loximuthal.js"); var _loximuthalJsDefault = parcelHelpers.interopDefault(_loximuthalJs); -var _miller = require("./miller"); -var _millerDefault = parcelHelpers.interopDefault(_miller); -var _modifiedStereographic = require("./modifiedStereographic"); -var _modifiedStereographicDefault = parcelHelpers.interopDefault(_modifiedStereographic); -var _mollweide1 = require("./mollweide"); -var _mollweideDefault1 = parcelHelpers.interopDefault(_mollweide1); -var _mtFlatPolarParabolic = require("./mtFlatPolarParabolic"); -var _mtFlatPolarParabolicDefault = parcelHelpers.interopDefault(_mtFlatPolarParabolic); -var _mtFlatPolarQuartic = require("./mtFlatPolarQuartic"); -var _mtFlatPolarQuarticDefault = parcelHelpers.interopDefault(_mtFlatPolarQuartic); -var _mtFlatPolarSinusoidal = require("./mtFlatPolarSinusoidal"); -var _mtFlatPolarSinusoidalDefault = parcelHelpers.interopDefault(_mtFlatPolarSinusoidal); -var _naturalEarth2 = require("./naturalEarth2"); -var _naturalEarth2Default = parcelHelpers.interopDefault(_naturalEarth2); -var _nellHammer = require("./nellHammer"); -var _nellHammerDefault = parcelHelpers.interopDefault(_nellHammer); -var _quarticAuthalic = require("./interrupted/quarticAuthalic"); -var _quarticAuthalicDefault = parcelHelpers.interopDefault(_quarticAuthalic); -var _nicolosi = require("./nicolosi"); -var _nicolosiDefault = parcelHelpers.interopDefault(_nicolosi); -var _patterson = require("./patterson"); -var _pattersonDefault = parcelHelpers.interopDefault(_patterson); -var _polyconic = require("./polyconic"); -var _polyconicDefault = parcelHelpers.interopDefault(_polyconic); -var _indexJs = require("./polyhedral/index.js"); -var _indexJsDefault = parcelHelpers.interopDefault(_indexJs); +var _millerJs = require("./miller.js"); +var _millerJsDefault = parcelHelpers.interopDefault(_millerJs); +var _modifiedStereographicJs = require("./modifiedStereographic.js"); +var _modifiedStereographicJsDefault = parcelHelpers.interopDefault(_modifiedStereographicJs); +var _mollweideJs1 = require("./mollweide.js"); +var _mollweideJsDefault1 = parcelHelpers.interopDefault(_mollweideJs1); +var _mtFlatPolarParabolicJs = require("./mtFlatPolarParabolic.js"); +var _mtFlatPolarParabolicJsDefault = parcelHelpers.interopDefault(_mtFlatPolarParabolicJs); +var _mtFlatPolarQuarticJs = require("./mtFlatPolarQuartic.js"); +var _mtFlatPolarQuarticJsDefault = parcelHelpers.interopDefault(_mtFlatPolarQuarticJs); +var _mtFlatPolarSinusoidalJs = require("./mtFlatPolarSinusoidal.js"); +var _mtFlatPolarSinusoidalJsDefault = parcelHelpers.interopDefault(_mtFlatPolarSinusoidalJs); +var _naturalEarth2Js = require("./naturalEarth2.js"); +var _naturalEarth2JsDefault = parcelHelpers.interopDefault(_naturalEarth2Js); +var _nellHammerJs = require("./nellHammer.js"); +var _nellHammerJsDefault = parcelHelpers.interopDefault(_nellHammerJs); +var _quarticAuthalicJs = require("./interrupted/quarticAuthalic.js"); +var _quarticAuthalicJsDefault = parcelHelpers.interopDefault(_quarticAuthalicJs); +var _nicolosiJs = require("./nicolosi.js"); +var _nicolosiJsDefault = parcelHelpers.interopDefault(_nicolosiJs); +var _pattersonJs = require("./patterson.js"); +var _pattersonJsDefault = parcelHelpers.interopDefault(_pattersonJs); +var _polyconicJs = require("./polyconic.js"); +var _polyconicJsDefault = parcelHelpers.interopDefault(_polyconicJs); +var _indexJs1 = require("./polyhedral/index.js"); +var _indexJsDefault1 = parcelHelpers.interopDefault(_indexJs1); var _butterflyJs = require("./polyhedral/butterfly.js"); var _butterflyJsDefault = parcelHelpers.interopDefault(_butterflyJs); -var _collignonJs = require("./polyhedral/collignon.js"); -var _collignonJsDefault = parcelHelpers.interopDefault(_collignonJs); +var _collignonJs1 = require("./polyhedral/collignon.js"); +var _collignonJsDefault1 = parcelHelpers.interopDefault(_collignonJs1); var _watermanJs = require("./polyhedral/waterman.js"); var _watermanJsDefault = parcelHelpers.interopDefault(_watermanJs); -var _index1 = require("./project/index"); -var _indexDefault1 = parcelHelpers.interopDefault(_index1); +var _indexJs2 = require("./project/index.js"); +var _indexJsDefault2 = parcelHelpers.interopDefault(_indexJs2); var _gringortenJs1 = require("./quincuncial/gringorten.js"); var _gringortenJsDefault1 = parcelHelpers.interopDefault(_gringortenJs1); var _peirceJs = require("./quincuncial/peirce.js"); var _peirceJsDefault = parcelHelpers.interopDefault(_peirceJs); -var _quantize = require("./quantize"); -var _quantizeDefault = parcelHelpers.interopDefault(_quantize); -var _indexJs1 = require("./quincuncial/index.js"); -var _indexJsDefault1 = parcelHelpers.interopDefault(_indexJs1); -var _rectangularPolyconic = require("./rectangularPolyconic"); -var _rectangularPolyconicDefault = parcelHelpers.interopDefault(_rectangularPolyconic); -var _robinson = require("./robinson"); -var _robinsonDefault = parcelHelpers.interopDefault(_robinson); -var _satellite = require("./satellite"); -var _satelliteDefault = parcelHelpers.interopDefault(_satellite); -var _sinuMollweide1 = require("./sinuMollweide"); -var _sinuMollweideDefault1 = parcelHelpers.interopDefault(_sinuMollweide1); -var _sinusoidal1 = require("./sinusoidal"); -var _sinusoidalDefault1 = parcelHelpers.interopDefault(_sinusoidal1); -var _stitch = require("./stitch"); -var _stitchDefault = parcelHelpers.interopDefault(_stitch); -var _times = require("./times"); -var _timesDefault = parcelHelpers.interopDefault(_times); -var _twoPointAzimuthal = require("./twoPointAzimuthal"); -var _twoPointAzimuthalDefault = parcelHelpers.interopDefault(_twoPointAzimuthal); -var _twoPointEquidistant = require("./twoPointEquidistant"); -var _twoPointEquidistantDefault = parcelHelpers.interopDefault(_twoPointEquidistant); -var _vanDerGrinten = require("./vanDerGrinten"); -var _vanDerGrintenDefault = parcelHelpers.interopDefault(_vanDerGrinten); -var _vanDerGrinten2 = require("./vanDerGrinten2"); -var _vanDerGrinten2Default = parcelHelpers.interopDefault(_vanDerGrinten2); -var _vanDerGrinten3 = require("./vanDerGrinten3"); -var _vanDerGrinten3Default = parcelHelpers.interopDefault(_vanDerGrinten3); -var _vanDerGrinten4 = require("./vanDerGrinten4"); -var _vanDerGrinten4Default = parcelHelpers.interopDefault(_vanDerGrinten4); +var _quantizeJs = require("./quantize.js"); +var _quantizeJsDefault = parcelHelpers.interopDefault(_quantizeJs); +var _indexJs3 = require("./quincuncial/index.js"); +var _indexJsDefault3 = parcelHelpers.interopDefault(_indexJs3); +var _rectangularPolyconicJs = require("./rectangularPolyconic.js"); +var _rectangularPolyconicJsDefault = parcelHelpers.interopDefault(_rectangularPolyconicJs); +var _robinsonJs = require("./robinson.js"); +var _robinsonJsDefault = parcelHelpers.interopDefault(_robinsonJs); +var _satelliteJs = require("./satellite.js"); +var _satelliteJsDefault = parcelHelpers.interopDefault(_satelliteJs); +var _sinuMollweideJs1 = require("./sinuMollweide.js"); +var _sinuMollweideJsDefault1 = parcelHelpers.interopDefault(_sinuMollweideJs1); +var _sinusoidalJs1 = require("./sinusoidal.js"); +var _sinusoidalJsDefault1 = parcelHelpers.interopDefault(_sinusoidalJs1); +var _stitchJs = require("./stitch.js"); +var _stitchJsDefault = parcelHelpers.interopDefault(_stitchJs); +var _timesJs = require("./times.js"); +var _timesJsDefault = parcelHelpers.interopDefault(_timesJs); +var _twoPointAzimuthalJs = require("./twoPointAzimuthal.js"); +var _twoPointAzimuthalJsDefault = parcelHelpers.interopDefault(_twoPointAzimuthalJs); +var _twoPointEquidistantJs = require("./twoPointEquidistant.js"); +var _twoPointEquidistantJsDefault = parcelHelpers.interopDefault(_twoPointEquidistantJs); +var _vanDerGrintenJs = require("./vanDerGrinten.js"); +var _vanDerGrintenJsDefault = parcelHelpers.interopDefault(_vanDerGrintenJs); +var _vanDerGrinten2Js = require("./vanDerGrinten2.js"); +var _vanDerGrinten2JsDefault = parcelHelpers.interopDefault(_vanDerGrinten2Js); +var _vanDerGrinten3Js = require("./vanDerGrinten3.js"); +var _vanDerGrinten3JsDefault = parcelHelpers.interopDefault(_vanDerGrinten3Js); +var _vanDerGrinten4Js = require("./vanDerGrinten4.js"); +var _vanDerGrinten4JsDefault = parcelHelpers.interopDefault(_vanDerGrinten4Js); var _wagnerJs = require("./wagner.js"); var _wagnerJsDefault = parcelHelpers.interopDefault(_wagnerJs); var _wagner4Js = require("./wagner4.js"); @@ -29217,10 +29666,10 @@ var _wagner6Js = require("./wagner6.js"); var _wagner6JsDefault = parcelHelpers.interopDefault(_wagner6Js); var _wiechelJs = require("./wiechel.js"); var _wiechelJsDefault = parcelHelpers.interopDefault(_wiechelJs); -var _winkel3 = require("./winkel3"); -var _winkel3Default = parcelHelpers.interopDefault(_winkel3); +var _winkel3Js = require("./winkel3.js"); +var _winkel3JsDefault = parcelHelpers.interopDefault(_winkel3Js); -},{"./airy":false,"./aitoff":false,"./armadillo":false,"./august":false,"./baker":false,"./berghaus":false,"./bertin":false,"./boggs":false,"./bonne":false,"./bottomley":false,"./bromley":false,"./chamberlin":false,"./collignon":false,"./craig":false,"./craster":false,"./cylindricalEqualArea":false,"./cylindricalStereographic":false,"./eckert1.js":false,"./eckert2.js":false,"./eckert3.js":false,"./eckert4.js":false,"./eckert5.js":false,"./eckert6.js":false,"./eisenlohr.js":false,"./fahey.js":false,"./foucaut.js":false,"./foucautSinusoidal.js":false,"./gilbert.js":false,"./gingery.js":false,"./ginzburg4.js":false,"./ginzburg5.js":false,"./ginzburg6.js":false,"./ginzburg8.js":false,"./ginzburg9.js":false,"./gringorten.js":false,"./guyou.js":false,"./hammer.js":false,"./hammerRetroazimuthal.js":false,"./healpix.js":false,"./hill.js":false,"./homolosine.js":false,"./hufnagel.js":false,"./hyperelliptical":false,"./interrupted/index":false,"./interrupted/boggs":false,"./interrupted/homolosine":false,"./interrupted/mollweide":false,"./interrupted/mollweideHemispheres":false,"./interrupted/sinuMollweide":false,"./interrupted/sinusoidal":false,"./kavrayskiy7.js":false,"./lagrange.js":false,"./larrivee":false,"./laskowski":false,"./littrow.js":false,"./loximuthal.js":false,"./miller":false,"./modifiedStereographic":false,"./mollweide":"dkpmT","./mtFlatPolarParabolic":false,"./mtFlatPolarQuartic":false,"./mtFlatPolarSinusoidal":false,"./naturalEarth2":false,"./nellHammer":false,"./interrupted/quarticAuthalic":false,"./nicolosi":false,"./patterson":false,"./polyconic":false,"./polyhedral/index.js":false,"./polyhedral/butterfly.js":false,"./polyhedral/collignon.js":false,"./polyhedral/waterman.js":false,"./project/index":false,"./quincuncial/gringorten.js":false,"./quincuncial/peirce.js":false,"./quantize":false,"./quincuncial/index.js":false,"./rectangularPolyconic":false,"./robinson":false,"./satellite":false,"./sinuMollweide":false,"./sinusoidal":false,"./stitch":false,"./times":false,"./twoPointAzimuthal":false,"./twoPointEquidistant":false,"./vanDerGrinten":false,"./vanDerGrinten2":false,"./vanDerGrinten3":false,"./vanDerGrinten4":false,"./wagner.js":false,"./wagner4.js":false,"./wagner6.js":false,"./wiechel.js":false,"./winkel3":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"dkpmT":[function(require,module,exports) { +},{"./airy.js":false,"./aitoff.js":false,"./armadillo.js":false,"./august.js":false,"./baker.js":false,"./berghaus.js":false,"./bertin.js":false,"./boggs.js":false,"./bonne.js":false,"./bottomley.js":false,"./bromley.js":false,"./chamberlin.js":false,"./collignon.js":false,"./craig.js":false,"./craster.js":false,"./cylindricalEqualArea.js":false,"./cylindricalStereographic.js":false,"./eckert1.js":false,"./eckert2.js":false,"./eckert3.js":false,"./eckert4.js":false,"./eckert5.js":false,"./eckert6.js":false,"./eisenlohr.js":false,"./fahey.js":false,"./foucaut.js":false,"./foucautSinusoidal.js":false,"./gilbert.js":false,"./gingery.js":false,"./ginzburg4.js":false,"./ginzburg5.js":false,"./ginzburg6.js":false,"./ginzburg8.js":false,"./ginzburg9.js":false,"./gringorten.js":false,"./guyou.js":false,"./hammer.js":false,"./hammerRetroazimuthal.js":false,"./healpix.js":false,"./hill.js":false,"./homolosine.js":false,"./hufnagel.js":false,"./hyperelliptical.js":false,"./interrupted/index.js":false,"./interrupted/boggs.js":false,"./interrupted/homolosine.js":false,"./interrupted/mollweide.js":false,"./interrupted/mollweideHemispheres.js":false,"./interrupted/sinuMollweide.js":false,"./interrupted/sinusoidal.js":false,"./kavrayskiy7.js":false,"./lagrange.js":false,"./larrivee.js":false,"./laskowski.js":false,"./littrow.js":false,"./loximuthal.js":false,"./miller.js":false,"./modifiedStereographic.js":false,"./mollweide.js":"dkpmT","./mtFlatPolarParabolic.js":false,"./mtFlatPolarQuartic.js":false,"./mtFlatPolarSinusoidal.js":false,"./naturalEarth2.js":false,"./nellHammer.js":false,"./interrupted/quarticAuthalic.js":false,"./nicolosi.js":false,"./patterson.js":false,"./polyconic.js":false,"./polyhedral/index.js":false,"./polyhedral/butterfly.js":false,"./polyhedral/collignon.js":false,"./polyhedral/waterman.js":false,"./project/index.js":false,"./quincuncial/gringorten.js":false,"./quincuncial/peirce.js":false,"./quantize.js":false,"./quincuncial/index.js":false,"./rectangularPolyconic.js":false,"./robinson.js":false,"./satellite.js":false,"./sinuMollweide.js":false,"./sinusoidal.js":false,"./stitch.js":false,"./times.js":false,"./twoPointAzimuthal.js":false,"./twoPointEquidistant.js":false,"./vanDerGrinten.js":false,"./vanDerGrinten2.js":false,"./vanDerGrinten3.js":false,"./vanDerGrinten4.js":false,"./wagner.js":false,"./wagner4.js":false,"./wagner6.js":false,"./wiechel.js":false,"./winkel3.js":false,"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"dkpmT":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "mollweideBromleyTheta", ()=>mollweideBromleyTheta); @@ -30631,7 +31080,7 @@ function timerFlush() { ++frame; // Pretend we’ve set an alarm, if we haven’t already. var t = taskHead, e; while(t){ - if ((e = clockNow - t._time) >= 0) t._call.call(null, e); + if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e); t = t._next; } --frame; @@ -30921,7 +31370,7 @@ function setFields(node, fields, as) { for(let i = 0; i < n; ++i)t[as[i]] = node[fields[i]]; t[as[n]] = node.children ? node.children.length : 0; } -const Output = [ +const Output$3 = [ "x", "y", "r", @@ -30971,8 +31420,8 @@ Pack.Definition = { "name": "as", "type": "string", "array": true, - "length": Output.length, - "default": Output + "length": Output$3.length, + "default": Output$3 } ] }; @@ -30983,9 +31432,9 @@ Pack.Definition = { "size", "padding" ], - fields: Output + fields: Output$3 }); -const Output$1 = [ +const Output$2 = [ "x0", "y0", "x1", @@ -31036,8 +31485,8 @@ Partition.Definition = { "name": "as", "type": "string", "array": true, - "length": Output$1.length, - "default": Output$1 + "length": Output$2.length, + "default": Output$2 } ] }; @@ -31048,7 +31497,7 @@ Partition.Definition = { "round", "padding" ], - fields: Output$1 + fields: Output$2 }); /** * Stratify a collection of tuples into a tree structure based on @@ -31095,7 +31544,7 @@ const Layouts = { tidy: (0, _d3Hierarchy.tree), cluster: (0, _d3Hierarchy.cluster) }; -const Output$2 = [ +const Output$1 = [ "x", "y", "depth", @@ -31154,8 +31603,8 @@ Tree.Definition = { "name": "as", "type": "string", "array": true, - "length": Output$2.length, - "default": Output$2 + "length": Output$1.length, + "default": Output$1 } ] }; @@ -31171,7 +31620,7 @@ Tree.Definition = { "size", "nodeSize" ], - fields: Output$2 + fields: Output$1 }); /** * Generate tuples representing links between tree nodes. @@ -31225,7 +31674,7 @@ const Tiles = { squarify: (0, _d3Hierarchy.treemapSquarify), resquarify: (0, _d3Hierarchy.treemapResquarify) }; -const Output$3 = [ +const Output = [ "x0", "y0", "x1", @@ -31324,8 +31773,8 @@ Treemap.Definition = { "name": "as", "type": "string", "array": true, - "length": Output$3.length, - "default": Output$3 + "length": Output.length, + "default": Output } ] }; @@ -31358,7 +31807,7 @@ Treemap.Definition = { "paddingBottom", "paddingLeft" ], - fields: Output$3 + fields: Output }); },{"vega-dataflow":"3NitK","vega-util":"bApja","d3-hierarchy":"4fr5p","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4fr5p":[function(require,module,exports) { @@ -31366,6 +31815,7 @@ var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "cluster", ()=>(0, _clusterJsDefault.default)); parcelHelpers.export(exports, "hierarchy", ()=>(0, _indexJsDefault.default)); +parcelHelpers.export(exports, "Node", ()=>(0, _indexJs.Node)); parcelHelpers.export(exports, "pack", ()=>(0, _indexJsDefault1.default)); parcelHelpers.export(exports, "packSiblings", ()=>(0, _siblingsJsDefault.default)); parcelHelpers.export(exports, "packEnclose", ()=>(0, _encloseJsDefault.default)); @@ -31750,19 +32200,22 @@ exports.default = function*() { },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"eQFOB":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -var _siblingsJs = require("./siblings.js"); var _accessorsJs = require("../accessors.js"); var _constantJs = require("../constant.js"); var _constantJsDefault = parcelHelpers.interopDefault(_constantJs); +var _lcgJs = require("../lcg.js"); +var _lcgJsDefault = parcelHelpers.interopDefault(_lcgJs); +var _siblingsJs = require("./siblings.js"); function defaultRadius(d) { return Math.sqrt(d.value); } exports.default = function() { var radius = null, dx = 1, dy = 1, padding = (0, _constantJs.constantZero); function pack(root) { + const random = (0, _lcgJsDefault.default)(); root.x = dx / 2, root.y = dy / 2; - if (radius) root.eachBefore(radiusLeaf(radius)).eachAfter(packChildren(padding, 0.5)).eachBefore(translateChild(1)); - else root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildren((0, _constantJs.constantZero), 1)).eachAfter(packChildren(padding, root.r / Math.min(dx, dy))).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); + if (radius) root.eachBefore(radiusLeaf(radius)).eachAfter(packChildrenRandom(padding, 0.5, random)).eachBefore(translateChild(1)); + else root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildrenRandom((0, _constantJs.constantZero), 1, random)).eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random)).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); return root; } pack.radius = function(x) { @@ -31784,12 +32237,12 @@ function radiusLeaf(radius) { if (!node.children) node.r = Math.max(0, +radius(node) || 0); }; } -function packChildren(padding, k) { +function packChildrenRandom(padding, k, random) { return function(node) { if (children = node.children) { var children, i, n = children.length, r = padding(node) * k || 0, e; if (r) for(i = 0; i < n; ++i)children[i].r += r; - e = (0, _siblingsJs.packEnclose)(children); + e = (0, _siblingsJs.packSiblingsRandom)(children, random); if (r) for(i = 0; i < n; ++i)children[i].r -= r; node.r = e + r; } @@ -31806,14 +32259,53 @@ function translateChild(k) { }; } -},{"./siblings.js":"8RhM7","../accessors.js":"i242w","../constant.js":"i6Ely","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8RhM7":[function(require,module,exports) { +},{"../accessors.js":"i242w","../constant.js":"i6Ely","../lcg.js":"9jKig","./siblings.js":"8RhM7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i242w":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "packEnclose", ()=>packEnclose); +parcelHelpers.export(exports, "optional", ()=>optional); +parcelHelpers.export(exports, "required", ()=>required); +function optional(f) { + return f == null ? null : required(f); +} +function required(f) { + if (typeof f !== "function") throw new Error; + return f; +} + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i6Ely":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "constantZero", ()=>constantZero); +function constantZero() { + return 0; +} +exports.default = function(x) { + return function() { + return x; + }; +}; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9jKig":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use +const a = 1664525; +const c = 1013904223; +const m = 4294967296; // 2^32 +exports.default = function() { + let s = 1; + return ()=>(s = (a * s + c) % m) / m; +}; + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"8RhM7":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "packSiblingsRandom", ()=>packSiblingsRandom); var _arrayJs = require("../array.js"); var _arrayJsDefault = parcelHelpers.interopDefault(_arrayJs); +var _lcgJs = require("../lcg.js"); +var _lcgJsDefault = parcelHelpers.interopDefault(_lcgJs); var _encloseJs = require("./enclose.js"); -var _encloseJsDefault = parcelHelpers.interopDefault(_encloseJs); function place(b, a, c) { var dx = b.x - a.x, x, a2, dy = b.y - a.y, y, b2, d2 = dx * dx + dy * dy; if (d2) { @@ -31848,7 +32340,7 @@ function Node(circle) { this.next = null; this.previous = null; } -function packEnclose(circles) { +function packSiblingsRandom(circles, random) { if (!(n = (circles = (0, _arrayJsDefault.default)(circles)).length)) return 0; var a, b, c, n, aa, ca, i, j, k, sj, sk; // Place the first circle. @@ -31897,17 +32389,17 @@ function packEnclose(circles) { b._ ], c = b; while((c = c.next) !== b)a.push(c._); - c = (0, _encloseJsDefault.default)(a); + c = (0, _encloseJs.packEncloseRandom)(a, random); // Translate the circles to put the enclosing circle around the origin. for(i = 0; i < n; ++i)a = circles[i], a.x -= c.x, a.y -= c.y; return c.r; } exports.default = function(circles) { - packEnclose(circles); + packSiblingsRandom(circles, (0, _lcgJsDefault.default)()); return circles; }; -},{"../array.js":"4vcaT","./enclose.js":"gBh5f","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4vcaT":[function(require,module,exports) { +},{"../array.js":"4vcaT","../lcg.js":"9jKig","./enclose.js":"gBh5f","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"4vcaT":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "shuffle", ()=>shuffle); @@ -31915,10 +32407,10 @@ exports.default = function(x) { return typeof x === "object" && "length" in x ? x // Array, TypedArray, NodeList, array-like : Array.from(x); // Map, Set, iterable, string, or anything else }; -function shuffle(array) { - var m = array.length, t, i; +function shuffle(array, random) { + let m = array.length, t, i; while(m){ - i = Math.random() * m-- | 0; + i = random() * m-- | 0; t = array[m]; array[m] = array[i]; array[i] = t; @@ -31929,16 +32421,22 @@ function shuffle(array) { },{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gBh5f":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "packEncloseRandom", ()=>packEncloseRandom); var _arrayJs = require("../array.js"); +var _lcgJs = require("../lcg.js"); +var _lcgJsDefault = parcelHelpers.interopDefault(_lcgJs); exports.default = function(circles) { - var i = 0, n = (circles = (0, _arrayJs.shuffle)(Array.from(circles))).length, B = [], p, e; + return packEncloseRandom(circles, (0, _lcgJsDefault.default)()); +}; +function packEncloseRandom(circles, random) { + var i = 0, n = (circles = (0, _arrayJs.shuffle)(Array.from(circles), random)).length, B = [], p, e; while(i < n){ p = circles[i]; if (e && enclosesWeak(e, p)) ++i; else e = encloseBasis(B = extendBasis(B, p)), i = 0; } return e; -}; +} function extendBasis(B, p) { var i, j; if (enclosesWeakAll(p, B)) return [ @@ -32002,7 +32500,7 @@ function encloseBasis2(a, b) { }; } function encloseBasis3(a, b, c) { - var x1 = a.x, y1 = a.y, r1 = a.r, x2 = b.x, y2 = b.y, r2 = b.r, x3 = c.x, y3 = c.y, r3 = c.r, a2 = x1 - x2, a3 = x1 - x3, b2 = y1 - y2, b3 = y1 - y3, c2 = r2 - r1, c3 = r3 - r1, d1 = x1 * x1 + y1 * y1 - r1 * r1, d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, ab = a3 * b2 - a2 * b3, xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, xb = (b3 * c2 - b2 * c3) / ab, ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, yb = (a2 * c3 - a3 * c2) / ab, A = xb * xb + yb * yb - 1, B = 2 * (r1 + xa * xb + ya * yb), C = xa * xa + ya * ya - r1 * r1, r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); + var x1 = a.x, y1 = a.y, r1 = a.r, x2 = b.x, y2 = b.y, r2 = b.r, x3 = c.x, y3 = c.y, r3 = c.r, a2 = x1 - x2, a3 = x1 - x3, b2 = y1 - y2, b3 = y1 - y3, c2 = r2 - r1, c3 = r3 - r1, d1 = x1 * x1 + y1 * y1 - r1 * r1, d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, ab = a3 * b2 - a2 * b3, xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, xb = (b3 * c2 - b2 * c3) / ab, ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, yb = (a2 * c3 - a3 * c2) / ab, A = xb * xb + yb * yb - 1, B = 2 * (r1 + xa * xb + ya * yb), C = xa * xa + ya * ya - r1 * r1, r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); return { x: x1 + xa + xb * r, y: y1 + ya + yb * r, @@ -32010,33 +32508,7 @@ function encloseBasis3(a, b, c) { }; } -},{"../array.js":"4vcaT","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i242w":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "optional", ()=>optional); -parcelHelpers.export(exports, "required", ()=>required); -function optional(f) { - return f == null ? null : required(f); -} -function required(f) { - if (typeof f !== "function") throw new Error; - return f; -} - -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"i6Ely":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "constantZero", ()=>constantZero); -function constantZero() { - return 0; -} -exports.default = function(x) { - return function() { - return x; - }; -}; - -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hfHoW":[function(require,module,exports) { +},{"../array.js":"4vcaT","../lcg.js":"9jKig","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hfHoW":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); var _roundJs = require("./treemap/round.js"); @@ -32109,7 +32581,7 @@ var _accessorsJs = require("./accessors.js"); var _indexJs = require("./hierarchy/index.js"); var preroot = { depth: -1 -}, ambiguous = {}; +}, ambiguous = {}, imputed = {}; function defaultId(d) { return d.id; } @@ -32117,16 +32589,29 @@ function defaultParentId(d) { return d.parentId; } exports.default = function() { - var id = defaultId, parentId = defaultParentId; + var id = defaultId, parentId = defaultParentId, path; function stratify(data) { - var nodes = Array.from(data), n = nodes.length, d, i, root, parent, node, nodeId, nodeKey, nodeByKey = new Map; - for(i = 0; i < n; ++i){ + var nodes = Array.from(data), currentId = id, currentParentId = parentId, n, d, i, root, parent, node, nodeId, nodeKey, nodeByKey = new Map; + if (path != null) { + const I = nodes.map((d, i)=>normalize(path(d, i, data))); + const P = I.map(parentof); + const S = new Set(I).add(""); + for (const i1 of P)if (!S.has(i1)) { + S.add(i1); + I.push(i1); + P.push(parentof(i1)); + nodes.push(imputed); + } + currentId = (_, i)=>I[i]; + currentParentId = (_, i)=>P[i]; + } + for(i = 0, n = nodes.length; i < n; ++i){ d = nodes[i], node = nodes[i] = new (0, _indexJs.Node)(d); - if ((nodeId = id(d, i, data)) != null && (nodeId += "")) { + if ((nodeId = currentId(d, i, data)) != null && (nodeId += "")) { nodeKey = node.id = nodeId; nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node); } - if ((nodeId = parentId(d, i, data)) != null && (nodeId += "")) node.parent = nodeId; + if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += "")) node.parent = nodeId; } for(i = 0; i < n; ++i){ node = nodes[i]; @@ -32145,6 +32630,16 @@ exports.default = function() { } } if (!root) throw new Error("no root"); + // When imputing internal nodes, only introduce roots if needed. + // Then replace the imputed marker data with null. + if (path != null) { + while(root.data === imputed && root.children.length === 1)root = root.children[0], --n; + for(let i2 = nodes.length - 1; i2 >= 0; --i2){ + node = nodes[i2]; + if (node.data !== imputed) break; + node.data = null; + } + } root.parent = preroot; root.eachBefore(function(node) { node.depth = node.parent.depth + 1; @@ -32155,13 +32650,45 @@ exports.default = function() { return root; } stratify.id = function(x) { - return arguments.length ? (id = (0, _accessorsJs.required)(x), stratify) : id; + return arguments.length ? (id = (0, _accessorsJs.optional)(x), stratify) : id; }; stratify.parentId = function(x) { - return arguments.length ? (parentId = (0, _accessorsJs.required)(x), stratify) : parentId; + return arguments.length ? (parentId = (0, _accessorsJs.optional)(x), stratify) : parentId; + }; + stratify.path = function(x) { + return arguments.length ? (path = (0, _accessorsJs.optional)(x), stratify) : path; }; return stratify; }; +// To normalize a path, we coerce to a string, strip the trailing slash if any +// (as long as the trailing slash is not immediately preceded by another slash), +// and add leading slash if missing. +function normalize(path) { + path = `${path}`; + let i = path.length; + if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1); + return path[0] === "/" ? path : `/${path}`; +} +// Walk backwards to find the first slash that is not the leading slash, e.g.: +// "/foo/bar" ⇥ "/foo", "/foo" ⇥ "/", "/" ↦ "". (The root is special-cased +// because the id of the root must be a truthy value.) +function parentof(path) { + let i = path.length; + if (i < 2) return ""; + while(--i > 1)if (slash(path, i)) break; + return path.slice(0, i); +} +// Slashes can be escaped; to determine whether a slash is a path delimiter, we +// count the number of preceding backslashes escaping the forward slash: an odd +// number indicates an escaped forward slash. +function slash(path, i) { + if (path[i] === "/") { + let k = 0; + while(i > 0 && path[--i] === "\\")++k; + if ((k & 1) === 0) return true; + } + return false; +} },{"./accessors.js":"i242w","./hierarchy/index.js":"jtgBj","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"5MDZW":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); @@ -32578,13 +33105,11 @@ exports.default = function custom(ratio) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "label", ()=>Label); +var _vegaScenegraph = require("vega-scenegraph"); var _vegaCanvas = require("vega-canvas"); var _vegaDataflow = require("vega-dataflow"); -var _vegaScenegraph = require("vega-scenegraph"); var _vegaUtil = require("vega-util"); -const ALPHA_MASK = 0xff000000; // alpha value equivalent to opacity 0.0625 -const INSIDE_OPACITY_IN_ALPHA = 0x10000000; -const INSIDE_OPACITY = 0.0625; +const ALPHA_MASK = 0xff000000; function baseBitmaps($, data) { const bitmap = $.bitmap(); // when there is no base mark but data points are to be avoided (data || []).forEach((d)=>bitmap.set($(d.boundary[0]), $(d.boundary[3]))); @@ -32593,19 +33118,25 @@ function baseBitmaps($, data) { undefined ]; } -function markBitmaps($, avoidMarks, labelInside, isGroupArea) { +function markBitmaps($, baseMark, avoidMarks, labelInside, isGroupArea) { // create canvas - const width = $.width, height = $.height, border = labelInside || isGroupArea, context = (0, _vegaCanvas.canvas)(width, height).getContext("2d"); // render all marks to be avoided into canvas - avoidMarks.forEach((items)=>draw(context, items, border)); // get canvas buffer, create bitmaps - const buffer = new Uint32Array(context.getImageData(0, 0, width, height).data.buffer), layer1 = $.bitmap(), layer2 = border && $.bitmap(); // populate bitmap layers - let x, y, u, v, alpha; + const width = $.width, height = $.height, border = labelInside || isGroupArea, context = (0, _vegaCanvas.canvas)(width, height).getContext("2d"), baseMarkContext = (0, _vegaCanvas.canvas)(width, height).getContext("2d"), strokeContext = border && (0, _vegaCanvas.canvas)(width, height).getContext("2d"); // render all marks to be avoided into canvas + avoidMarks.forEach((items)=>draw(context, items, false)); + draw(baseMarkContext, baseMark, false); + if (border) draw(strokeContext, baseMark, true); + // get canvas buffer, create bitmaps + const buffer = getBuffer(context, width, height), baseMarkBuffer = getBuffer(baseMarkContext, width, height), strokeBuffer = border && getBuffer(strokeContext, width, height), layer1 = $.bitmap(), layer2 = border && $.bitmap(); // populate bitmap layers + let x, y, u, v, index, alpha, strokeAlpha, baseMarkAlpha; for(y = 0; y < height; ++y)for(x = 0; x < width; ++x){ - alpha = buffer[y * width + x] & ALPHA_MASK; - if (alpha) { + index = y * width + x; + alpha = buffer[index] & ALPHA_MASK; + baseMarkAlpha = baseMarkBuffer[index] & ALPHA_MASK; + strokeAlpha = border && strokeBuffer[index] & ALPHA_MASK; + if (alpha || strokeAlpha || baseMarkAlpha) { u = $(x); v = $(y); - if (!isGroupArea) layer1.set(u, v); // update interior bitmap - if (border && alpha ^ INSIDE_OPACITY_IN_ALPHA) layer2.set(u, v); // update border bitmap + if (!isGroupArea && (alpha || baseMarkAlpha)) layer1.set(u, v); // update interior bitmap + if (border && (alpha || strokeAlpha)) layer2.set(u, v); // update border bitmap } } return [ @@ -32613,6 +33144,9 @@ function markBitmaps($, avoidMarks, labelInside, isGroupArea) { layer2 ]; } +function getBuffer(context, width, height) { + return new Uint32Array(context.getImageData(0, 0, width, height).data.buffer); +} function draw(context, items, interior) { if (!items.length) return; const type = items[0].mark.marktype; @@ -32629,13 +33163,12 @@ function draw(context, items, interior) { * @returns prepared item */ function prepare(source) { const item = (0, _vegaDataflow.rederive)(source, {}); - if (item.stroke) item.strokeOpacity = 1; - if (item.fill) { - item.fillOpacity = INSIDE_OPACITY; - item.stroke = "#000"; - item.strokeOpacity = 1; - item.strokeWidth = 2; - } + if (item.stroke && item.strokeOpacity !== 0 || item.fill && item.fillOpacity !== 0) return { + ...item, + strokeOpacity: 1, + stroke: "#000", + fillOpacity: 0 + }; return item; } const DIV = 5, // bit shift from x, y index to bit vector array index @@ -32963,9 +33496,10 @@ const Aligns = [ function placeMarkLabel($, bitmaps, anchors, offsets) { const width = $.width, height = $.height, bm0 = bitmaps[0], bm1 = bitmaps[1], n = offsets.length; return function(d) { + var _d$textWidth; const boundary = d.boundary, textHeight = d.datum.fontSize; // can not be placed if the mark is not visible in the graph bound if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) return false; - let textWidth = 0, dx, dy, isInside, sizeFactor, insideFactor, x1, x2, y1, y2, xc, yc, _x1, _x2, _y1, _y2; // for each anchor and offset + let textWidth = (_d$textWidth = d.textWidth) !== null && _d$textWidth !== void 0 ? _d$textWidth : 0, dx, dy, isInside, sizeFactor, insideFactor, x1, x2, y1, y2, xc, yc, _x1, _x2, _y1, _y2; // for each anchor and offset for(let i = 0; i < n; ++i){ dx = (anchors[i] & 0x3) - 1; dy = (anchors[i] >>> 0x2 & 0x3) - 1; @@ -33004,10 +33538,7 @@ function placeMarkLabel($, bitmaps, anchors, offsets) { }; } // Test if a label with the given dimensions can be added without overlap function test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) { - return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 ? bm1.getRange(_x1, _y1, _x2, _y2) || !isInMarkBound(x1, y1, x2, y2, boundary) : bm0.getRange(_x1, _y1, _x2, _y2))); -} -function isInMarkBound(x1, y1, x2, y2, boundary) { - return boundary[0] <= x1 && x2 <= boundary[2] && boundary[3] <= y1 && y2 <= boundary[5]; + return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 || bm0).getRange(_x1, _y1, _x2, _y2)); } const TOP = 0x0, MIDDLE = 0x4, BOTTOM = 0x8, LEFT = 0x0, CENTER = 0x1, RIGHT = 0x2; // Mapping from text anchor to number representation const anchorCode = { @@ -33029,16 +33560,25 @@ const placeAreaLabel = { function labelLayout(texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) { // early exit for empty data if (!texts.length) return texts; - const positions = Math.max(offset.length, anchor.length), offsets = getOffsets(offset, positions), anchors = getAnchors(anchor, positions), marktype = markType(texts[0].datum), grouptype = marktype === "group" && texts[0].datum.items[markIndex].marktype, isGroupArea = grouptype === "area", boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex), $ = scaler(size[0], size[1], padding), isNaiveGroupArea = isGroupArea && method === "naive"; // prepare text mark data for placing - const data = texts.map((d)=>({ + const positions = Math.max(offset.length, anchor.length), offsets = getOffsets(offset, positions), anchors = getAnchors(anchor, positions), marktype = markType(texts[0].datum), grouptype = marktype === "group" && texts[0].datum.items[markIndex].marktype, isGroupArea = grouptype === "area", boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex), infPadding = padding === null || padding === Infinity, isNaiveGroupArea = isGroupArea && method === "naive"; + let maxTextWidth = -1, maxTextHeight = -1; // prepare text mark data for placing + const data = texts.map((d)=>{ + const textWidth = infPadding ? (0, _vegaScenegraph.textMetrics).width(d, d.text) : undefined; + maxTextWidth = Math.max(maxTextWidth, textWidth); + maxTextHeight = Math.max(maxTextHeight, d.fontSize); + return { datum: d, opacity: 0, x: undefined, y: undefined, align: undefined, baseline: undefined, - boundary: boundary(d) - })); + boundary: boundary(d), + textWidth + }; + }); + padding = padding === null || padding === Infinity ? Math.max(maxTextWidth, maxTextHeight) + Math.max(...offset) : padding; + const $ = scaler(size[0], size[1], padding); let bitmaps; if (!isNaiveGroupArea) { // sort labels in priority order, if comparator is provided @@ -33050,11 +33590,8 @@ function labelLayout(texts, size, compare, offset, anchor, avoidMarks, avoidBase labelInside = anchors[i] === 0x5 || offsets[i] < 0; // extract data information from base mark when base mark is to be avoided // base mark is implicitly avoided if it is a group area - if (marktype && (avoidBaseMark || isGroupArea)) avoidMarks = [ - texts.map((d)=>d.datum) - ].concat(avoidMarks); - // generate bitmaps for layout calculation - bitmaps = avoidMarks.length ? markBitmaps($, avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data); + const baseMark = (marktype && avoidBaseMark || isGroupArea) && texts.map((d)=>d.datum); // generate bitmaps for layout calculation + bitmaps = avoidMarks.length || baseMark ? markBitmaps($, baseMark || [], avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data); } // generate label placement function const place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets); // place all labels data.forEach((d)=>d.opacity = +place(d)); @@ -33079,7 +33616,7 @@ function markType(item) { * Factory function for function for getting base mark boundary, depending * on mark and group type. When mark type is undefined, line or area: boundary * is the coordinate of each data point. When base mark is grouped line, - * boundary is either at the beginning or end of the line depending on the + * boundary is either at the start or end of the line depending on the * value of lineAnchor. Otherwise, use bounds of base mark. */ function markBoundary(marktype, grouptype, lineAnchor, markIndex) { const xy = (d)=>[ @@ -33139,8 +33676,9 @@ const Anchors = [ * The available options are 'top-left', 'left', 'bottom-left', 'top', * 'bottom', 'top-right', 'right', 'bottom-right', 'middle'. * @param {Array} [params.offset] - Label offsets (in pixels) from the base mark bounding box. - * This parameter is parallel to the list of anchor points. - * @param {number} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size. + * This parameter is parallel to the list of anchor points. + * @param {number | null} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size. + * If this parameter is null, a label may exceed the layout size without any boundary. * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor * position for labels. One of 'start' or 'end'. * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating @@ -33190,7 +33728,8 @@ Label.Definition = { { name: "padding", type: "number", - default: 0 + default: 0, + null: true }, { name: "lineAnchor", @@ -33240,7 +33779,7 @@ Label.Definition = { if (!(mod || pulse.changed(pulse.ADD_REM) || modp("sort"))) return; if (!_.size || _.size.length !== 2) (0, _vegaUtil.error)("Size parameter should be specified as a [width, height] array."); const as = _.as || Output; // run label layout - labelLayout(pulse.materialize(pulse.SOURCE).source, _.size, _.sort, (0, _vegaUtil.array)(_.offset || 1), (0, _vegaUtil.array)(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark === false ? false : true, _.lineAnchor || "end", _.markIndex || 0, _.padding || 0, _.method || "naive").forEach((l)=>{ + labelLayout(pulse.materialize(pulse.SOURCE).source || [], _.size, _.sort, (0, _vegaUtil.array)(_.offset == null ? 1 : _.offset), (0, _vegaUtil.array)(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark !== false, _.lineAnchor || "end", _.markIndex || 0, _.padding === undefined ? 0 : _.padding, _.method || "naive").forEach((l)=>{ // write layout results to data stream const t = l.datum; t[as[0]] = l.x; @@ -33253,7 +33792,7 @@ Label.Definition = { } }); -},{"vega-canvas":"f0yaA","vega-dataflow":"3NitK","vega-scenegraph":"jattk","vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"elv3U":[function(require,module,exports) { +},{"vega-scenegraph":"jattk","vega-canvas":"f0yaA","vega-dataflow":"3NitK","vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"elv3U":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "loess", ()=>Loess); @@ -33666,10 +34205,12 @@ class Delaunay { this.triangles = new Int32Array(3).fill(-1); this.halfedges = new Int32Array(3).fill(-1); this.triangles[0] = hull[0]; - this.triangles[1] = hull[1]; - this.triangles[2] = hull[1]; inedges[hull[0]] = 1; - if (hull.length === 2) inedges[hull[1]] = 0; + if (hull.length === 2) { + inedges[hull[1]] = 0; + this.triangles[1] = hull[1]; + this.triangles[2] = hull[1]; + } } } voronoi(bounds) { @@ -33744,7 +34285,9 @@ class Delaunay { this.renderHull(context); return buffer && buffer.value(); } - renderPoints(context, r = 2) { + renderPoints(context, r) { + if (r === undefined && (!context || typeof context.moveTo !== "function")) r = context, context = null; + r = r == undefined ? 2 : +r; const buffer = context == null ? context = new (0, _pathJsDefault.default) : undefined; const { points } = this; for(let i = 0, n = points.length; i < n; i += 2){ @@ -33816,6 +34359,7 @@ function* flatIterable(points, fx, fy, that) { },{"delaunator":"auyGo","./path.js":"60Yfe","./polygon.js":"5nsXD","./voronoi.js":"a33Bo","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"auyGo":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); +var _robustPredicates = require("robust-predicates"); const EPSILON = Math.pow(2, -52); const EDGE_STACK = new Uint32Array(512); class Delaunator { @@ -33923,7 +34467,7 @@ class Delaunator { return; } // swap the order of the seed points for counter-clockwise orientation - if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) { + if ((0, _robustPredicates.orient2d)(i0x, i0y, i1x, i1y, i2x, i2y) < 0) { const i8 = i1; const x1 = i1x; const y1 = i1y; @@ -33973,7 +34517,7 @@ class Delaunator { } start = hullPrev[start]; let e = start, q; - while(q = hullNext[e], !orient(x2, y2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])){ + while(q = hullNext[e], (0, _robustPredicates.orient2d)(x2, y2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0){ e = q; if (e === start) { e = -1; @@ -33989,7 +34533,7 @@ class Delaunator { hullSize++; // walk forward through the hull, adding more triangles and flipping recursively let n1 = hullNext[e]; - while(q = hullNext[n1], orient(x2, y2, coords[2 * n1], coords[2 * n1 + 1], coords[2 * q], coords[2 * q + 1])){ + while(q = hullNext[n1], (0, _robustPredicates.orient2d)(x2, y2, coords[2 * n1], coords[2 * n1 + 1], coords[2 * q], coords[2 * q + 1]) < 0){ t = this._addTriangle(n1, i10, q, hullTri[i10], -1, hullTri[n1]); hullTri[i10] = this._legalize(t + 2); hullNext[n1] = n1; // mark as removed @@ -33997,7 +34541,7 @@ class Delaunator { n1 = q; } // walk backward from the other side, adding more triangles and flipping - if (e === start) while(q = hullPrev[e], orient(x2, y2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])){ + if (e === start) while(q = hullPrev[e], (0, _robustPredicates.orient2d)(x2, y2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0){ t = this._addTriangle(q, i10, e, -1, hullTri[e], hullTri[q]); this._legalize(t + 2); hullTri[q] = t; @@ -34117,17 +34661,6 @@ function dist(ax, ay, bx, by) { const dy = ay - by; return dx * dx + dy * dy; } -// return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check -function orientIfSure(px, py, rx, ry, qx, qy) { - const l = (ry - py) * (qx - px); - const r = (rx - px) * (qy - py); - return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0; -} -// a more robust orientation test that's stable in a given triangle (to fix robustness issues) -function orient(rx, ry, qx, qy, px, py) { - const sign = orientIfSure(px, py, rx, ry, qx, qy) || orientIfSure(rx, ry, qx, qy, px, py) || orientIfSure(qx, qy, px, py, rx, ry); - return sign < 0; -} function inCircle(ax, ay, bx, by, cx, cy, px, py) { const dx = ax - px; const dy = ay - py; @@ -34216,7 +34749,2058 @@ function defaultGetY(p) { return p[1]; } -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"60Yfe":[function(require,module,exports) { +},{"robust-predicates":"KLZHK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"KLZHK":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "orient2d", ()=>(0, _orient2DJs.orient2d)); +parcelHelpers.export(exports, "orient2dfast", ()=>(0, _orient2DJs.orient2dfast)); +parcelHelpers.export(exports, "orient3d", ()=>(0, _orient3DJs.orient3d)); +parcelHelpers.export(exports, "orient3dfast", ()=>(0, _orient3DJs.orient3dfast)); +parcelHelpers.export(exports, "incircle", ()=>(0, _incircleJs.incircle)); +parcelHelpers.export(exports, "incirclefast", ()=>(0, _incircleJs.incirclefast)); +parcelHelpers.export(exports, "insphere", ()=>(0, _insphereJs.insphere)); +parcelHelpers.export(exports, "inspherefast", ()=>(0, _insphereJs.inspherefast)); +var _orient2DJs = require("./esm/orient2d.js"); +var _orient3DJs = require("./esm/orient3d.js"); +var _incircleJs = require("./esm/incircle.js"); +var _insphereJs = require("./esm/insphere.js"); + +},{"./esm/orient2d.js":"9dV6v","./esm/orient3d.js":"60Ijp","./esm/incircle.js":"eSgV9","./esm/insphere.js":"lKwEh","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9dV6v":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "orient2d", ()=>orient2d); +parcelHelpers.export(exports, "orient2dfast", ()=>orient2dfast); +var _utilJs = require("./util.js"); +const ccwerrboundA = (3 + 16 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const ccwerrboundB = (2 + 12 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const ccwerrboundC = (9 + 64 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const B = (0, _utilJs.vec)(4); +const C1 = (0, _utilJs.vec)(8); +const C2 = (0, _utilJs.vec)(12); +const D = (0, _utilJs.vec)(16); +const u = (0, _utilJs.vec)(4); +function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) { + let acxtail, acytail, bcxtail, bcytail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const acx = ax - cx; + const bcx = bx - cx; + const acy = ay - cy; + const bcy = by - cy; + s1 = acx * bcy; + c = (0, _utilJs.splitter) * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = (0, _utilJs.splitter) * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcx; + c = (0, _utilJs.splitter) * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = (0, _utilJs.splitter) * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + B[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + B[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + B[2] = _j - (u3 - bvirt) + (_i - bvirt); + B[3] = u3; + let det = (0, _utilJs.estimate)(4, B); + let errbound = ccwerrboundB * detsum; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - acx; + acxtail = ax - (acx + bvirt) + (bvirt - cx); + bvirt = bx - bcx; + bcxtail = bx - (bcx + bvirt) + (bvirt - cx); + bvirt = ay - acy; + acytail = ay - (acy + bvirt) + (bvirt - cy); + bvirt = by - bcy; + bcytail = by - (bcy + bvirt) + (bvirt - cy); + if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) return det; + errbound = ccwerrboundC * detsum + (0, _utilJs.resulterrbound) * Math.abs(det); + det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail); + if (det >= errbound || -det >= errbound) return det; + s1 = acxtail * bcy; + c = (0, _utilJs.splitter) * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = (0, _utilJs.splitter) * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcx; + c = (0, _utilJs.splitter) * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = (0, _utilJs.splitter) * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C1len = (0, _utilJs.sum)(4, B, 4, u, C1); + s1 = acx * bcytail; + c = (0, _utilJs.splitter) * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = (0, _utilJs.splitter) * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcxtail; + c = (0, _utilJs.splitter) * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = (0, _utilJs.splitter) * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C2len = (0, _utilJs.sum)(C1len, C1, 4, u, C2); + s1 = acxtail * bcytail; + c = (0, _utilJs.splitter) * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = (0, _utilJs.splitter) * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcxtail; + c = (0, _utilJs.splitter) * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = (0, _utilJs.splitter) * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const Dlen = (0, _utilJs.sum)(C2len, C2, 4, u, D); + return D[Dlen - 1]; +} +function orient2d(ax, ay, bx, by, cx, cy) { + const detleft = (ay - cy) * (bx - cx); + const detright = (ax - cx) * (by - cy); + const det = detleft - detright; + if (detleft === 0 || detright === 0 || detleft > 0 !== detright > 0) return det; + const detsum = Math.abs(detleft + detright); + if (Math.abs(det) >= ccwerrboundA * detsum) return det; + return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum); +} +function orient2dfast(ax, ay, bx, by, cx, cy) { + return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy); +} + +},{"./util.js":"3WWl7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"3WWl7":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "epsilon", ()=>epsilon); +parcelHelpers.export(exports, "splitter", ()=>splitter); +parcelHelpers.export(exports, "resulterrbound", ()=>resulterrbound); +// fast_expansion_sum_zeroelim routine from oritinal code +parcelHelpers.export(exports, "sum", ()=>sum); +parcelHelpers.export(exports, "sum_three", ()=>sum_three); +// scale_expansion_zeroelim routine from oritinal code +parcelHelpers.export(exports, "scale", ()=>scale); +parcelHelpers.export(exports, "negate", ()=>negate); +parcelHelpers.export(exports, "estimate", ()=>estimate); +parcelHelpers.export(exports, "vec", ()=>vec); +const epsilon = 1.1102230246251565e-16; +const splitter = 134217729; +const resulterrbound = (3 + 8 * epsilon) * epsilon; +function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + while(eindex < elen && findex < flen){ + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + } + } + while(eindex < elen){ + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + } + while(findex < flen){ + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) h[hindex++] = hh; + } + if (Q !== 0 || hindex === 0) h[hindex++] = Q; + return hindex; +} +function sum_three(alen, a, blen, b, clen, c, tmp, out) { + return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out); +} +function scale(elen, e, b, h) { + let Q, sum, hh, product1, product0; + let bvirt, c, ahi, alo, bhi, blo; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + let enow = e[0]; + Q = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo); + let hindex = 0; + if (hh !== 0) h[hindex++] = hh; + for(let i = 1; i < elen; i++){ + enow = e[i]; + product1 = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo); + sum = Q + product0; + bvirt = sum - Q; + hh = Q - (sum - bvirt) + (product0 - bvirt); + if (hh !== 0) h[hindex++] = hh; + Q = product1 + sum; + hh = sum - (Q - product1); + if (hh !== 0) h[hindex++] = hh; + } + if (Q !== 0 || hindex === 0) h[hindex++] = Q; + return hindex; +} +function negate(elen, e) { + for(let i = 0; i < elen; i++)e[i] = -e[i]; + return elen; +} +function estimate(elen, e) { + let Q = e[0]; + for(let i = 1; i < elen; i++)Q += e[i]; + return Q; +} +function vec(n) { + return new Float64Array(n); +} + +},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"60Ijp":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "orient3d", ()=>orient3d); +parcelHelpers.export(exports, "orient3dfast", ()=>orient3dfast); +var _utilJs = require("./util.js"); +const o3derrboundA = (7 + 56 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const o3derrboundB = (3 + 28 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const o3derrboundC = (26 + 288 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const bc = (0, _utilJs.vec)(4); +const ca = (0, _utilJs.vec)(4); +const ab = (0, _utilJs.vec)(4); +const at_b = (0, _utilJs.vec)(4); +const at_c = (0, _utilJs.vec)(4); +const bt_c = (0, _utilJs.vec)(4); +const bt_a = (0, _utilJs.vec)(4); +const ct_a = (0, _utilJs.vec)(4); +const ct_b = (0, _utilJs.vec)(4); +const bct = (0, _utilJs.vec)(8); +const cat = (0, _utilJs.vec)(8); +const abt = (0, _utilJs.vec)(8); +const u = (0, _utilJs.vec)(4); +const _8 = (0, _utilJs.vec)(8); +const _8b = (0, _utilJs.vec)(8); +const _16 = (0, _utilJs.vec)(8); +const _12 = (0, _utilJs.vec)(12); +let fin = (0, _utilJs.vec)(192); +let fin2 = (0, _utilJs.vec)(192); +function finadd(finlen, alen, a) { + finlen = (0, _utilJs.sum)(finlen, fin, alen, a, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; +} +function tailinit(xtail, ytail, ax, ay, bx, by, a, b) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate; + if (xtail === 0) { + if (ytail === 0) { + a[0] = 0; + b[0] = 0; + return 1; + } else { + negate = -ytail; + s1 = negate * ax; + c = (0, _utilJs.splitter) * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = (0, _utilJs.splitter) * ax; + bhi = c - (c - ax); + blo = ax - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + s1 = ytail * bx; + c = (0, _utilJs.splitter) * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = (0, _utilJs.splitter) * bx; + bhi = c - (c - bx); + blo = bx - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } + } else if (ytail === 0) { + s1 = xtail * ay; + c = (0, _utilJs.splitter) * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + negate = -xtail; + s1 = negate * by; + c = (0, _utilJs.splitter) * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } else { + s1 = xtail * ay; + c = (0, _utilJs.splitter) * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ytail * ax; + c = (0, _utilJs.splitter) * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = (0, _utilJs.splitter) * ax; + bhi = c - (c - ax); + blo = ax - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + a[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + a[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + a[2] = _j - (u3 - bvirt) + (_i - bvirt); + a[3] = u3; + s1 = ytail * bx; + c = (0, _utilJs.splitter) * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = (0, _utilJs.splitter) * bx; + bhi = c - (c - bx); + blo = bx - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = xtail * by; + c = (0, _utilJs.splitter) * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + b[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + b[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + b[2] = _j - (u3 - bvirt) + (_i - bvirt); + b[3] = u3; + return 4; + } +} +function tailadd(finlen, a, b, k, z) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3; + s1 = a * b; + c = (0, _utilJs.splitter) * a; + ahi = c - (c - a); + alo = a - ahi; + c = (0, _utilJs.splitter) * b; + bhi = c - (c - b); + blo = b - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + c = (0, _utilJs.splitter) * k; + bhi = c - (c - k); + blo = k - bhi; + _i = s0 * k; + c = (0, _utilJs.splitter) * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * k; + c = (0, _utilJs.splitter) * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + if (z !== 0) { + c = (0, _utilJs.splitter) * z; + bhi = c - (c - z); + blo = z - bhi; + _i = s0 * z; + c = (0, _utilJs.splitter) * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * z; + c = (0, _utilJs.splitter) * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + } + return finlen; +} +function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail; + let adytail, bdytail, cdytail; + let adztail, bdztail, cdztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + s1 = bdx * cdy; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = (0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.scale)(4, bc, adz, _8), _8, (0, _utilJs.scale)(4, ca, bdz, _8b), _8b, _16), _16, (0, _utilJs.scale)(4, ab, cdz, _8), _8, fin); + let det = (0, _utilJs.estimate)(finlen, fin); + let errbound = o3derrboundB * permanent; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + bvirt = az - adz; + adztail = az - (adz + bvirt) + (bvirt - dz); + bvirt = bz - bdz; + bdztail = bz - (bdz + bvirt) + (bvirt - dz); + bvirt = cz - cdz; + cdztail = cz - (cdz + bvirt) + (bvirt - dz); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0 && adztail === 0 && bdztail === 0 && cdztail === 0) return det; + errbound = o3derrboundC * permanent + (0, _utilJs.resulterrbound) * Math.abs(det); + det += adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) + bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) + cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx); + if (det >= errbound || -det >= errbound) return det; + const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c); + const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a); + const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b); + const bctlen = (0, _utilJs.sum)(bt_len, bt_c, ct_len, ct_b, bct); + finlen = finadd(finlen, (0, _utilJs.scale)(bctlen, bct, adz, _16), _16); + const catlen = (0, _utilJs.sum)(ct_len, ct_a, at_len, at_c, cat); + finlen = finadd(finlen, (0, _utilJs.scale)(catlen, cat, bdz, _16), _16); + const abtlen = (0, _utilJs.sum)(at_len, at_b, bt_len, bt_a, abt); + finlen = finadd(finlen, (0, _utilJs.scale)(abtlen, abt, cdz, _16), _16); + if (adztail !== 0) { + finlen = finadd(finlen, (0, _utilJs.scale)(4, bc, adztail, _12), _12); + finlen = finadd(finlen, (0, _utilJs.scale)(bctlen, bct, adztail, _16), _16); + } + if (bdztail !== 0) { + finlen = finadd(finlen, (0, _utilJs.scale)(4, ca, bdztail, _12), _12); + finlen = finadd(finlen, (0, _utilJs.scale)(catlen, cat, bdztail, _16), _16); + } + if (cdztail !== 0) { + finlen = finadd(finlen, (0, _utilJs.scale)(4, ab, cdztail, _12), _12); + finlen = finadd(finlen, (0, _utilJs.scale)(abtlen, abt, cdztail, _16), _16); + } + if (adxtail !== 0) { + if (bdytail !== 0) finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail); + if (cdytail !== 0) finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail); + } + if (bdxtail !== 0) { + if (cdytail !== 0) finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail); + if (adytail !== 0) finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail); + } + if (cdxtail !== 0) { + if (adytail !== 0) finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail); + if (bdytail !== 0) finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail); + } + return fin[finlen - 1]; +} +function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz); + const errbound = o3derrboundA * permanent; + if (det > errbound || -det > errbound) return det; + return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent); +} +function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + return adx * (bdy * cdz - bdz * cdy) + bdx * (cdy * adz - cdz * ady) + cdx * (ady * bdz - adz * bdy); +} + +},{"./util.js":"3WWl7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"eSgV9":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "incircle", ()=>incircle); +parcelHelpers.export(exports, "incirclefast", ()=>incirclefast); +var _utilJs = require("./util.js"); +const iccerrboundA = (10 + 96 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const iccerrboundB = (4 + 48 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const iccerrboundC = (44 + 576 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const bc = (0, _utilJs.vec)(4); +const ca = (0, _utilJs.vec)(4); +const ab = (0, _utilJs.vec)(4); +const aa = (0, _utilJs.vec)(4); +const bb = (0, _utilJs.vec)(4); +const cc = (0, _utilJs.vec)(4); +const u = (0, _utilJs.vec)(4); +const v = (0, _utilJs.vec)(4); +const axtbc = (0, _utilJs.vec)(8); +const aytbc = (0, _utilJs.vec)(8); +const bxtca = (0, _utilJs.vec)(8); +const bytca = (0, _utilJs.vec)(8); +const cxtab = (0, _utilJs.vec)(8); +const cytab = (0, _utilJs.vec)(8); +const abt = (0, _utilJs.vec)(8); +const bct = (0, _utilJs.vec)(8); +const cat = (0, _utilJs.vec)(8); +const abtt = (0, _utilJs.vec)(4); +const bctt = (0, _utilJs.vec)(4); +const catt = (0, _utilJs.vec)(4); +const _8 = (0, _utilJs.vec)(8); +const _16 = (0, _utilJs.vec)(16); +const _16b = (0, _utilJs.vec)(16); +const _16c = (0, _utilJs.vec)(16); +const _32 = (0, _utilJs.vec)(32); +const _32b = (0, _utilJs.vec)(32); +const _48 = (0, _utilJs.vec)(48); +const _64 = (0, _utilJs.vec)(64); +let fin = (0, _utilJs.vec)(1152); +let fin2 = (0, _utilJs.vec)(1152); +function finadd(finlen, a, alen) { + finlen = (0, _utilJs.sum)(finlen, fin, a, alen, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; +} +function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail; + let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen; + let abtlen, bctlen, catlen; + let abttlen, bcttlen, cattlen; + let n1, n0; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + s1 = bdx * cdy; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = (0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.scale)((0, _utilJs.scale)(4, bc, adx, _8), _8, adx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32, (0, _utilJs.sum)((0, _utilJs.scale)((0, _utilJs.scale)(4, ca, bdx, _8), _8, bdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64, (0, _utilJs.sum)((0, _utilJs.scale)((0, _utilJs.scale)(4, ab, cdx, _8), _8, cdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin); + let det = (0, _utilJs.estimate)(finlen, fin); + let errbound = iccerrboundB * permanent; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) return det; + errbound = iccerrboundC * permanent + (0, _utilJs.resulterrbound) * Math.abs(det); + det += (adx * adx + ady * ady) * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx) + ((bdx * bdx + bdy * bdy) * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) + ((cdx * cdx + cdy * cdy) * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx)); + if (det >= errbound || -det >= errbound) return det; + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = adx * adx; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = ady * ady; + c = (0, _utilJs.splitter) * ady; + ahi = c - (c - ady); + alo = ady - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + aa[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + aa[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + aa[2] = _j - (u3 - bvirt) + (_i - bvirt); + aa[3] = u3; + } + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = bdx * bdx; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = bdy * bdy; + c = (0, _utilJs.splitter) * bdy; + ahi = c - (c - bdy); + alo = bdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + bb[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + bb[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + bb[2] = _j - (u3 - bvirt) + (_i - bvirt); + bb[3] = u3; + } + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = cdx * cdx; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = cdy * cdy; + c = (0, _utilJs.splitter) * cdy; + ahi = c - (c - cdy); + alo = cdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + cc[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + cc[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + cc[2] = _j - (u3 - bvirt) + (_i - bvirt); + cc[3] = u3; + } + if (adxtail !== 0) { + axtbclen = (0, _utilJs.scale)(4, bc, adxtail, axtbc); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(axtbclen, axtbc, 2 * adx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, adxtail, _8), _8, bdy, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48); + } + if (adytail !== 0) { + aytbclen = (0, _utilJs.scale)(4, bc, adytail, aytbc); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(aytbclen, aytbc, 2 * ady, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, adytail, _8), _8, cdx, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48); + } + if (bdxtail !== 0) { + bxtcalen = (0, _utilJs.scale)(4, ca, bdxtail, bxtca); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(bxtcalen, bxtca, 2 * bdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, bdxtail, _8), _8, cdy, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48); + } + if (bdytail !== 0) { + bytcalen = (0, _utilJs.scale)(4, ca, bdytail, bytca); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(bytcalen, bytca, 2 * bdy, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, bdytail, _8), _8, adx, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48); + } + if (cdxtail !== 0) { + cxtablen = (0, _utilJs.scale)(4, ab, cdxtail, cxtab); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(cxtablen, cxtab, 2 * cdx, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, cdxtail, _8), _8, ady, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48); + } + if (cdytail !== 0) { + cytablen = (0, _utilJs.scale)(4, ab, cdytail, cytab); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(cytablen, cytab, 2 * cdy, _16), _16, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, cdytail, _8), _8, bdx, _16b), _16b, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48); + } + if (adxtail !== 0 || adytail !== 0) { + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = bdxtail * cdy; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * cdytail; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + s1 = cdxtail * -bdy; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * -bdy; + bhi = c - (c - -bdy); + blo = -bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * -bdytail; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * -bdytail; + bhi = c - (c - -bdytail); + blo = -bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + bctlen = (0, _utilJs.sum)(4, u, 4, v, bct); + s1 = bdxtail * cdytail; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdxtail * bdytail; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bctt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bctt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bctt[2] = _j - (u3 - bvirt) + (_i - bvirt); + bctt[3] = u3; + bcttlen = 4; + } else { + bct[0] = 0; + bctlen = 1; + bctt[0] = 0; + bcttlen = 1; + } + if (adxtail !== 0) { + const len = (0, _utilJs.scale)(bctlen, bct, adxtail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(axtbclen, axtbc, adxtail, _16), _16, (0, _utilJs.scale)(len, _16c, 2 * adx, _32), _32, _48), _48); + const len2 = (0, _utilJs.scale)(bcttlen, bctt, adxtail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len2, _8, 2 * adx, _16), _16, (0, _utilJs.scale)(len2, _8, adxtail, _16b), _16b, (0, _utilJs.scale)(len, _16c, adxtail, _32), _32, _32b, _64), _64); + if (bdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, adxtail, _8), _8, bdytail, _16), _16); + if (cdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, -adxtail, _8), _8, cdytail, _16), _16); + } + if (adytail !== 0) { + const len1 = (0, _utilJs.scale)(bctlen, bct, adytail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(aytbclen, aytbc, adytail, _16), _16, (0, _utilJs.scale)(len1, _16c, 2 * ady, _32), _32, _48), _48); + const len21 = (0, _utilJs.scale)(bcttlen, bctt, adytail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len21, _8, 2 * ady, _16), _16, (0, _utilJs.scale)(len21, _8, adytail, _16b), _16b, (0, _utilJs.scale)(len1, _16c, adytail, _32), _32, _32b, _64), _64); + } + } + if (bdxtail !== 0 || bdytail !== 0) { + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = cdxtail * ady; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * adytail; + c = (0, _utilJs.splitter) * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = (0, _utilJs.splitter) * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -cdy; + n0 = -cdytail; + s1 = adxtail * n1; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * n0; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + catlen = (0, _utilJs.sum)(4, u, 4, v, cat); + s1 = cdxtail * adytail; + c = (0, _utilJs.splitter) * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = (0, _utilJs.splitter) * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adxtail * cdytail; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + catt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + catt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + catt[2] = _j - (u3 - bvirt) + (_i - bvirt); + catt[3] = u3; + cattlen = 4; + } else { + cat[0] = 0; + catlen = 1; + catt[0] = 0; + cattlen = 1; + } + if (bdxtail !== 0) { + const len3 = (0, _utilJs.scale)(catlen, cat, bdxtail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(bxtcalen, bxtca, bdxtail, _16), _16, (0, _utilJs.scale)(len3, _16c, 2 * bdx, _32), _32, _48), _48); + const len22 = (0, _utilJs.scale)(cattlen, catt, bdxtail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len22, _8, 2 * bdx, _16), _16, (0, _utilJs.scale)(len22, _8, bdxtail, _16b), _16b, (0, _utilJs.scale)(len3, _16c, bdxtail, _32), _32, _32b, _64), _64); + if (cdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, bdxtail, _8), _8, cdytail, _16), _16); + if (adytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, cc, -bdxtail, _8), _8, adytail, _16), _16); + } + if (bdytail !== 0) { + const len4 = (0, _utilJs.scale)(catlen, cat, bdytail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(bytcalen, bytca, bdytail, _16), _16, (0, _utilJs.scale)(len4, _16c, 2 * bdy, _32), _32, _48), _48); + const len23 = (0, _utilJs.scale)(cattlen, catt, bdytail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len23, _8, 2 * bdy, _16), _16, (0, _utilJs.scale)(len23, _8, bdytail, _16b), _16b, (0, _utilJs.scale)(len4, _16c, bdytail, _32), _32, _32b, _64), _64); + } + } + if (cdxtail !== 0 || cdytail !== 0) { + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = adxtail * bdy; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * bdytail; + c = (0, _utilJs.splitter) * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = (0, _utilJs.splitter) * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -ady; + n0 = -adytail; + s1 = bdxtail * n1; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * n0; + c = (0, _utilJs.splitter) * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = (0, _utilJs.splitter) * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + abtlen = (0, _utilJs.sum)(4, u, 4, v, abt); + s1 = adxtail * bdytail; + c = (0, _utilJs.splitter) * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = (0, _utilJs.splitter) * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdxtail * adytail; + c = (0, _utilJs.splitter) * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = (0, _utilJs.splitter) * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + abtt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + abtt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + abtt[2] = _j - (u3 - bvirt) + (_i - bvirt); + abtt[3] = u3; + abttlen = 4; + } else { + abt[0] = 0; + abtlen = 1; + abtt[0] = 0; + abttlen = 1; + } + if (cdxtail !== 0) { + const len5 = (0, _utilJs.scale)(abtlen, abt, cdxtail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(cxtablen, cxtab, cdxtail, _16), _16, (0, _utilJs.scale)(len5, _16c, 2 * cdx, _32), _32, _48), _48); + const len24 = (0, _utilJs.scale)(abttlen, abtt, cdxtail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len24, _8, 2 * cdx, _16), _16, (0, _utilJs.scale)(len24, _8, cdxtail, _16b), _16b, (0, _utilJs.scale)(len5, _16c, cdxtail, _32), _32, _32b, _64), _64); + if (adytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, bb, cdxtail, _8), _8, adytail, _16), _16); + if (bdytail !== 0) finlen = finadd(finlen, (0, _utilJs.scale)((0, _utilJs.scale)(4, aa, -cdxtail, _8), _8, bdytail, _16), _16); + } + if (cdytail !== 0) { + const len6 = (0, _utilJs.scale)(abtlen, abt, cdytail, _16c); + finlen = finadd(finlen, (0, _utilJs.sum)((0, _utilJs.scale)(cytablen, cytab, cdytail, _16), _16, (0, _utilJs.scale)(len6, _16c, 2 * cdy, _32), _32, _48), _48); + const len25 = (0, _utilJs.scale)(abttlen, abtt, cdytail, _8); + finlen = finadd(finlen, (0, _utilJs.sum_three)((0, _utilJs.scale)(len25, _8, 2 * cdy, _16), _16, (0, _utilJs.scale)(len25, _8, cdytail, _16b), _16b, (0, _utilJs.scale)(len6, _16c, cdytail, _32), _32, _32b, _64), _64); + } + } + return fin[finlen - 1]; +} +function incircle(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const alift = adx * adx + ady * ady; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const blift = bdx * bdx + bdy * bdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const clift = cdx * cdx + cdy * cdy; + const det = alift * (bdxcdy - cdxbdy) + blift * (cdxady - adxcdy) + clift * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift + (Math.abs(cdxady) + Math.abs(adxcdy)) * blift + (Math.abs(adxbdy) + Math.abs(bdxady)) * clift; + const errbound = iccerrboundA * permanent; + if (det > errbound || -det > errbound) return det; + return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent); +} +function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const ady = ay - dy; + const bdx = bx - dx; + const bdy = by - dy; + const cdx = cx - dx; + const cdy = cy - dy; + const abdet = adx * bdy - bdx * ady; + const bcdet = bdx * cdy - cdx * bdy; + const cadet = cdx * ady - adx * cdy; + const alift = adx * adx + ady * ady; + const blift = bdx * bdx + bdy * bdy; + const clift = cdx * cdx + cdy * cdy; + return alift * bcdet + blift * cadet + clift * abdet; +} + +},{"./util.js":"3WWl7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lKwEh":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "insphere", ()=>insphere); +parcelHelpers.export(exports, "inspherefast", ()=>inspherefast); +var _utilJs = require("./util.js"); +const isperrboundA = (16 + 224 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const isperrboundB = (5 + 72 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon); +const isperrboundC = (71 + 1408 * (0, _utilJs.epsilon)) * (0, _utilJs.epsilon) * (0, _utilJs.epsilon); +const ab = (0, _utilJs.vec)(4); +const bc = (0, _utilJs.vec)(4); +const cd = (0, _utilJs.vec)(4); +const de = (0, _utilJs.vec)(4); +const ea = (0, _utilJs.vec)(4); +const ac = (0, _utilJs.vec)(4); +const bd = (0, _utilJs.vec)(4); +const ce = (0, _utilJs.vec)(4); +const da = (0, _utilJs.vec)(4); +const eb = (0, _utilJs.vec)(4); +const abc = (0, _utilJs.vec)(24); +const bcd = (0, _utilJs.vec)(24); +const cde = (0, _utilJs.vec)(24); +const dea = (0, _utilJs.vec)(24); +const eab = (0, _utilJs.vec)(24); +const abd = (0, _utilJs.vec)(24); +const bce = (0, _utilJs.vec)(24); +const cda = (0, _utilJs.vec)(24); +const deb = (0, _utilJs.vec)(24); +const eac = (0, _utilJs.vec)(24); +const adet = (0, _utilJs.vec)(1152); +const bdet = (0, _utilJs.vec)(1152); +const cdet = (0, _utilJs.vec)(1152); +const ddet = (0, _utilJs.vec)(1152); +const edet = (0, _utilJs.vec)(1152); +const abdet = (0, _utilJs.vec)(2304); +const cddet = (0, _utilJs.vec)(2304); +const cdedet = (0, _utilJs.vec)(3456); +const deter = (0, _utilJs.vec)(5760); +const _8 = (0, _utilJs.vec)(8); +const _8b = (0, _utilJs.vec)(8); +const _8c = (0, _utilJs.vec)(8); +const _16 = (0, _utilJs.vec)(16); +const _24 = (0, _utilJs.vec)(24); +const _48 = (0, _utilJs.vec)(48); +const _48b = (0, _utilJs.vec)(48); +const _96 = (0, _utilJs.vec)(96); +const _192 = (0, _utilJs.vec)(192); +const _384x = (0, _utilJs.vec)(384); +const _384y = (0, _utilJs.vec)(384); +const _384z = (0, _utilJs.vec)(384); +const _768 = (0, _utilJs.vec)(768); +function sum_three_scale(a, b, c, az, bz, cz, out) { + return (0, _utilJs.sum_three)((0, _utilJs.scale)(4, a, az, _8), _8, (0, _utilJs.scale)(4, b, bz, _8b), _8b, (0, _utilJs.scale)(4, c, cz, _8c), _8c, _16, out); +} +function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) { + const len = (0, _utilJs.sum)((0, _utilJs.sum)(alen, a, blen, b, _48), _48, (0, _utilJs.negate)((0, _utilJs.sum)(clen, c, dlen, d, _48b), _48b), _48b, _96); + return (0, _utilJs.sum_three)((0, _utilJs.scale)((0, _utilJs.scale)(len, _96, x, _192), _192, x, _384x), _384x, (0, _utilJs.scale)((0, _utilJs.scale)(len, _96, y, _192), _192, y, _384y), _384y, (0, _utilJs.scale)((0, _utilJs.scale)(len, _96, z, _192), _192, z, _384z), _384z, _768, out); +} +function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + s1 = ax * by; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ay; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + s1 = bx * cy; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * by; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cx * dy; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * cy; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + cd[2] = _j - (u3 - bvirt) + (_i - bvirt); + cd[3] = u3; + s1 = dx * ey; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * dy; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + de[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + de[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + de[2] = _j - (u3 - bvirt) + (_i - bvirt); + de[3] = u3; + s1 = ex * ay; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * ey; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ea[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ea[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ea[2] = _j - (u3 - bvirt) + (_i - bvirt); + ea[3] = u3; + s1 = ax * cy; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * ay; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ac[2] = _j - (u3 - bvirt) + (_i - bvirt); + ac[3] = u3; + s1 = bx * dy; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * by; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bd[2] = _j - (u3 - bvirt) + (_i - bvirt); + bd[3] = u3; + s1 = cx * ey; + c = (0, _utilJs.splitter) * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * cy; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ce[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ce[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ce[2] = _j - (u3 - bvirt) + (_i - bvirt); + ce[3] = u3; + s1 = dx * ay; + c = (0, _utilJs.splitter) * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = (0, _utilJs.splitter) * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * dy; + c = (0, _utilJs.splitter) * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = (0, _utilJs.splitter) * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + da[2] = _j - (u3 - bvirt) + (_i - bvirt); + da[3] = u3; + s1 = ex * by; + c = (0, _utilJs.splitter) * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = (0, _utilJs.splitter) * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ey; + c = (0, _utilJs.splitter) * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = (0, _utilJs.splitter) * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + eb[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + eb[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + eb[2] = _j - (u3 - bvirt) + (_i - bvirt); + eb[3] = u3; + const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc); + const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd); + const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde); + const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea); + const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab); + const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd); + const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce); + const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda); + const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb); + const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac); + const deterlen = (0, _utilJs.sum_three)(liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet, liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet, (0, _utilJs.sum_three)(liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet, liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet, liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter); + return deter[deterlen - 1]; +} +const xdet = (0, _utilJs.vec)(96); +const ydet = (0, _utilJs.vec)(96); +const zdet = (0, _utilJs.vec)(96); +const fin = (0, _utilJs.vec)(1152); +function liftadapt(a, b, c, az, bz, cz, x, y, z, out) { + const len = sum_three_scale(a, b, c, az, bz, cz, _24); + return (0, _utilJs.sum_three)((0, _utilJs.scale)((0, _utilJs.scale)(len, _24, x, _48), _48, x, xdet), xdet, (0, _utilJs.scale)((0, _utilJs.scale)(len, _24, y, _48), _48, y, ydet), ydet, (0, _utilJs.scale)((0, _utilJs.scale)(len, _24, z, _48), _48, z, zdet), zdet, _192, out); +} +function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) { + let ab3, bc3, cd3, da3, ac3, bd3; + let aextail, bextail, cextail, dextail; + let aeytail, beytail, ceytail, deytail; + let aeztail, beztail, ceztail, deztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0; + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + s1 = aex * bey; + c = (0, _utilJs.splitter) * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = (0, _utilJs.splitter) * bey; + bhi = c - (c - bey); + blo = bey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bex * aey; + c = (0, _utilJs.splitter) * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = (0, _utilJs.splitter) * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + ab3 = _j + _i; + bvirt = ab3 - _j; + ab[2] = _j - (ab3 - bvirt) + (_i - bvirt); + ab[3] = ab3; + s1 = bex * cey; + c = (0, _utilJs.splitter) * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = (0, _utilJs.splitter) * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * bey; + c = (0, _utilJs.splitter) * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = (0, _utilJs.splitter) * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + bc3 = _j + _i; + bvirt = bc3 - _j; + bc[2] = _j - (bc3 - bvirt) + (_i - bvirt); + bc[3] = bc3; + s1 = cex * dey; + c = (0, _utilJs.splitter) * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = (0, _utilJs.splitter) * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * cey; + c = (0, _utilJs.splitter) * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = (0, _utilJs.splitter) * cey; + bhi = c - (c - cey); + blo = cey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + cd3 = _j + _i; + bvirt = cd3 - _j; + cd[2] = _j - (cd3 - bvirt) + (_i - bvirt); + cd[3] = cd3; + s1 = dex * aey; + c = (0, _utilJs.splitter) * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = (0, _utilJs.splitter) * aey; + bhi = c - (c - aey); + blo = aey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = aex * dey; + c = (0, _utilJs.splitter) * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = (0, _utilJs.splitter) * dey; + bhi = c - (c - dey); + blo = dey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + da3 = _j + _i; + bvirt = da3 - _j; + da[2] = _j - (da3 - bvirt) + (_i - bvirt); + da[3] = da3; + s1 = aex * cey; + c = (0, _utilJs.splitter) * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = (0, _utilJs.splitter) * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * aey; + c = (0, _utilJs.splitter) * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = (0, _utilJs.splitter) * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + ac3 = _j + _i; + bvirt = ac3 - _j; + ac[2] = _j - (ac3 - bvirt) + (_i - bvirt); + ac[3] = ac3; + s1 = bex * dey; + c = (0, _utilJs.splitter) * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = (0, _utilJs.splitter) * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * bey; + c = (0, _utilJs.splitter) * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = (0, _utilJs.splitter) * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + bd3 = _j + _i; + bvirt = bd3 - _j; + bd[2] = _j - (bd3 - bvirt) + (_i - bvirt); + bd[3] = bd3; + const finlen = (0, _utilJs.sum)((0, _utilJs.sum)((0, _utilJs.negate)(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet, liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet, (0, _utilJs.sum)((0, _utilJs.negate)(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet, liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin); + let det = (0, _utilJs.estimate)(finlen, fin); + let errbound = isperrboundB * permanent; + if (det >= errbound || -det >= errbound) return det; + bvirt = ax - aex; + aextail = ax - (aex + bvirt) + (bvirt - ex); + bvirt = ay - aey; + aeytail = ay - (aey + bvirt) + (bvirt - ey); + bvirt = az - aez; + aeztail = az - (aez + bvirt) + (bvirt - ez); + bvirt = bx - bex; + bextail = bx - (bex + bvirt) + (bvirt - ex); + bvirt = by - bey; + beytail = by - (bey + bvirt) + (bvirt - ey); + bvirt = bz - bez; + beztail = bz - (bez + bvirt) + (bvirt - ez); + bvirt = cx - cex; + cextail = cx - (cex + bvirt) + (bvirt - ex); + bvirt = cy - cey; + ceytail = cy - (cey + bvirt) + (bvirt - ey); + bvirt = cz - cez; + ceztail = cz - (cez + bvirt) + (bvirt - ez); + bvirt = dx - dex; + dextail = dx - (dex + bvirt) + (bvirt - ex); + bvirt = dy - dey; + deytail = dy - (dey + bvirt) + (bvirt - ey); + bvirt = dz - dez; + deztail = dz - (dez + bvirt) + (bvirt - ez); + if (aextail === 0 && aeytail === 0 && aeztail === 0 && bextail === 0 && beytail === 0 && beztail === 0 && cextail === 0 && ceytail === 0 && ceztail === 0 && dextail === 0 && deytail === 0 && deztail === 0) return det; + errbound = isperrboundC * permanent + (0, _utilJs.resulterrbound) * Math.abs(det); + const abeps = aex * beytail + bey * aextail - (aey * bextail + bex * aeytail); + const bceps = bex * ceytail + cey * bextail - (bey * cextail + cex * beytail); + const cdeps = cex * deytail + dey * cextail - (cey * dextail + dex * ceytail); + const daeps = dex * aeytail + aey * dextail - (dey * aextail + aex * deytail); + const aceps = aex * ceytail + cey * aextail - (aey * cextail + cex * aeytail); + const bdeps = bex * deytail + dey * bextail - (bey * dextail + dex * beytail); + det += (bex * bex + bey * bey + bez * bez) * (cez * daeps + dez * aceps + aez * cdeps + (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) * (aez * bceps - bez * aceps + cez * abeps + (aeztail * bc3 - beztail * ac3 + ceztail * ab3)) - ((aex * aex + aey * aey + aez * aez) * (bez * cdeps - cez * bdeps + dez * bceps + (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) * (dez * abeps + aez * bdeps + bez * daeps + (deztail * ab3 + aeztail * bd3 + beztail * da3))) + 2 * ((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) + (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3) - ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) + (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3))); + if (det >= errbound || -det >= errbound) return det; + return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez); +} +function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + const aexbey = aex * bey; + const bexaey = bex * aey; + const ab = aexbey - bexaey; + const bexcey = bex * cey; + const cexbey = cex * bey; + const bc = bexcey - cexbey; + const cexdey = cex * dey; + const dexcey = dex * cey; + const cd = cexdey - dexcey; + const dexaey = dex * aey; + const aexdey = aex * dey; + const da = dexaey - aexdey; + const aexcey = aex * cey; + const cexaey = cex * aey; + const ac = aexcey - cexaey; + const bexdey = bex * dey; + const dexbey = dex * bey; + const bd = bexdey - dexbey; + const abc = aez * bc - bez * ac + cez * ab; + const bcd = bez * cd - cez * bd + dez * bc; + const cda = cez * da + dez * ac + aez * cd; + const dab = dez * ab + aez * bd + bez * da; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + const det = clift * dab - dlift * abc + (alift * bcd - blift * cda); + const aezplus = Math.abs(aez); + const bezplus = Math.abs(bez); + const cezplus = Math.abs(cez); + const dezplus = Math.abs(dez); + const aexbeyplus = Math.abs(aexbey); + const bexaeyplus = Math.abs(bexaey); + const bexceyplus = Math.abs(bexcey); + const cexbeyplus = Math.abs(cexbey); + const cexdeyplus = Math.abs(cexdey); + const dexceyplus = Math.abs(dexcey); + const dexaeyplus = Math.abs(dexaey); + const aexdeyplus = Math.abs(aexdey); + const aexceyplus = Math.abs(aexcey); + const cexaeyplus = Math.abs(cexaey); + const bexdeyplus = Math.abs(bexdey); + const dexbeyplus = Math.abs(dexbey); + const permanent = ((cexdeyplus + dexceyplus) * bezplus + (dexbeyplus + bexdeyplus) * cezplus + (bexceyplus + cexbeyplus) * dezplus) * alift + ((dexaeyplus + aexdeyplus) * cezplus + (aexceyplus + cexaeyplus) * dezplus + (cexdeyplus + dexceyplus) * aezplus) * blift + ((aexbeyplus + bexaeyplus) * dezplus + (bexdeyplus + dexbeyplus) * aezplus + (dexaeyplus + aexdeyplus) * bezplus) * clift + ((bexceyplus + cexbeyplus) * aezplus + (cexaeyplus + aexceyplus) * bezplus + (aexbeyplus + bexaeyplus) * cezplus) * dlift; + const errbound = isperrboundA * permanent; + if (det > errbound || -det > errbound) return det; + return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent); +} +function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) { + const aex = pax - pex; + const bex = pbx - pex; + const cex = pcx - pex; + const dex = pdx - pex; + const aey = pay - pey; + const bey = pby - pey; + const cey = pcy - pey; + const dey = pdy - pey; + const aez = paz - pez; + const bez = pbz - pez; + const cez = pcz - pez; + const dez = pdz - pez; + const ab = aex * bey - bex * aey; + const bc = bex * cey - cex * bey; + const cd = cex * dey - dex * cey; + const da = dex * aey - aex * dey; + const ac = aex * cey - cex * aey; + const bd = bex * dey - dex * bey; + const abc = aez * bc - bez * ac + cez * ab; + const bcd = bez * cd - cez * bd + dez * bc; + const cda = cez * da + dez * ac + aez * cd; + const dab = dez * ab + aez * bd + bez * da; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + return clift * dab - dlift * abc + (alift * bcd - blift * cda); +} + +},{"./util.js":"3WWl7","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"60Yfe":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); const epsilon = 1e-6; @@ -34329,19 +36913,25 @@ class Voronoi { const dy = y2 - y1; const ex = x3 - x1; const ey = y3 - y1; - const bl = dx * dx + dy * dy; - const cl = ex * ex + ey * ey; const ab = (dx * ey - dy * ex) * 2; - if (!ab) { + if (Math.abs(ab) < 1e-9) { // degenerate case (collinear diagram) - x = (x1 + x3) / 2 - 1e8 * ey; - y = (y1 + y3) / 2 + 1e8 * ex; - } else if (Math.abs(ab) < 1e-8) { // almost equal points (degenerate triangle) - x = (x1 + x3) / 2; - y = (y1 + y3) / 2; + // the circumcenter is at the infinity, in a + // direction that is: + // 1. orthogonal to the halfedge. + let a = 1e9; + // 2. points away from the center; since the list of triangles starts + // in the center, the first point of the first triangle + // will be our reference + const r = triangles[0] * 2; + a *= Math.sign((points[r] - x1) * ey - (points[r + 1] - y1) * ex); + x = (x1 + x3) / 2 - a * ey; + y = (y1 + y3) / 2 + a * ex; } else { const d = 1 / ab; + const bl = dx * dx + dy * dy; + const cl = ex * ex + ey * ey; x = x1 + (ey * bl - dy * cl) * d; y = y1 + (dx * cl - ex * bl) * d; } @@ -34484,7 +37074,7 @@ class Voronoi { let P = null; let x0, y0, x1 = points[n - 2], y1 = points[n - 1]; let c0, c1 = this._regioncode(x1, y1); - let e0, e1; + let e0, e1 = 0; for(let j = 0; j < n; j += 2){ x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1]; c0 = c1, c1 = this._regioncode(x1, y1); @@ -34602,6 +37192,8 @@ class Voronoi { e0 = 5, x = this.xmin, y = this.ymin; break; // left } + // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are + // undefined, the conditional statement will be executed. if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) P.splice(j, 0, x, y), j += 2; } if (P.length > 4) for(let i1 = 0; i1 < P.length; i1 += 2){ @@ -35827,7 +38419,7 @@ function prevent(view, type) { function permit(view, key, type) { const rule = view._eventConfig && view._eventConfig[key]; if (rule === false || (0, _vegaUtil.isObject)(rule) && !rule[type]) { - view.warn(`Blocked ${key} ${type} event listener.`); + view.warn("Blocked ".concat(key, " ").concat(type, " event listener.")); return false; } return true; @@ -36176,7 +38768,7 @@ function lookup(view, el, clear) { } } if (el && clear) try { - el.innerHTML = ""; + el.textContent = ""; } catch (e) { el = null; view.error(e); @@ -36824,9 +39416,9 @@ function internalScaleFunctions(codegen, fnctx, visitors) { const ref = (arg)=>"_[" + (arg.type === (0, _vegaExpression.Literal) ? (0, _vegaUtil.stringValue)(ScalePrefix + arg.value) : (0, _vegaUtil.stringValue)(ScalePrefix) + "+" + codegen(arg)) + "]"; // define and return internal scale function code generators // these internal functions are called by mark encoders return { - _bandwidth: (args)=>`this.__bandwidth(${ref(args[0])})`, - _range: (args)=>`${ref(args[0])}.range()`, - _scale: (args)=>`${ref(args[0])}(${codegen(args[1])})` + _bandwidth: (args)=>"this.__bandwidth(".concat(ref(args[0]), ")"), + _range: (args)=>"".concat(ref(args[0]), ".range()"), + _scale: (args)=>"".concat(ref(args[0]), "(").concat(codegen(args[1]), ")") }; } function geoMethod(methodName, globalMethod) { @@ -36954,16 +39546,20 @@ function array(seq) { function sequence(seq) { return array(seq) || ((0, _vegaUtil.isString)(seq) ? seq : null); } -function join(seq, ...args) { +function join(seq) { + for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)args[_key - 1] = arguments[_key]; return array(seq).join(...args); } -function indexof(seq, ...args) { +function indexof(seq) { + for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++)args[_key2 - 1] = arguments[_key2]; return sequence(seq).indexOf(...args); } -function lastindexof(seq, ...args) { +function lastindexof(seq) { + for(var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++)args[_key3 - 1] = arguments[_key3]; return sequence(seq).lastIndexOf(...args); } -function slice(seq, ...args) { +function slice(seq) { + for(var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++)args[_key4 - 1] = arguments[_key4]; return sequence(seq).slice(...args); } function replace(str, pattern, repl) { @@ -37081,6 +39677,87 @@ function filter(opt) { } return p; } +/** + * Appends a new point to the lasso + * + * @param {*} lasso the lasso in pixel space + * @param {*} x the x coordinate in pixel space + * @param {*} y the y coordinate in pixel space + * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point + * @returns a new array containing the lasso with the new point + */ function lassoAppend(lasso, x, y) { + let minDist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5; + const last = lasso[lasso.length - 1]; // Add point to lasso if distance to last point exceed minDist or its the first point + if (last === undefined || Math.sqrt((last[0] - x) ** 2 + (last[1] - y) ** 2) > minDist) { + lasso.push([ + x, + y + ]); + return [ + ...lasso + ]; + } + return lasso; +} +/** + * Generates a svg path command which draws a lasso + * + * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...] + * @returns the svg path command that draws the lasso + */ function lassoPath(lasso) { + return (lasso !== null && lasso !== void 0 ? lasso : []).reduce((svg, _ref, i)=>{ + let [x, y] = _ref; + return svg += i == 0 ? "M ".concat(x, ",").concat(y, " ") : i === lasso.length - 1 ? " Z" : "L ".concat(x, ",").concat(y, " "); + }, ""); +} +/** + * Inverts the lasso from pixel space to an array of vega scenegraph tuples + * + * @param {*} data the dataset + * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...] + * @param {*} unit the unit where the lasso is defined + * + * @returns an array of vega scenegraph tuples + */ function intersectLasso(markname, pixelLasso, unit) { + const { x , y , mark } = unit; + const bb = new (0, _vegaScenegraph.Bounds)().set(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER); // Get bounding box around lasso + for (const [px, py] of pixelLasso){ + if (px < bb.x1) bb.x1 = px; + if (px > bb.x2) bb.x2 = px; + if (py < bb.y1) bb.y1 = py; + if (py > bb.y2) bb.y2 = py; + } // Translate bb against unit coordinates + bb.translate(x, y); + const intersection = intersect([ + [ + bb.x1, + bb.y1 + ], + [ + bb.x2, + bb.y2 + ] + ], markname, mark); // Check every point against the lasso + return intersection.filter((tuple)=>pointInPolygon(tuple.x, tuple.y, pixelLasso)); +} +/** + * Performs a test if a point is inside a polygon based on the idea from + * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html + * + * This method will not need the same start/end point since it wraps around the edges of the array + * + * @param {*} test a point to test against + * @param {*} polygon a polygon in the form [[x,y], [x,y], ...] + * @returns true if the point lies inside the polygon, false otherwise + */ function pointInPolygon(testx, testy, polygon) { + let intersections = 0; + for(let i = 0, j = polygon.length - 1; i < polygon.length; j = i++){ + const [prevX, prevY] = polygon[j]; + const [x, y] = polygon[i]; // count intersections + if (y > testy != prevY > testy && testx < (prevX - x) * (testy - y) / (prevY - y) + x) intersections++; + } // point is in polygon if intersection count is odd + return intersections & 1; +} const functionContext = { random () { return (0, _vegaStatistics.random)(); @@ -37113,8 +39790,11 @@ const functionContext = { return _ != null && _ === _; }, toBoolean: (0, _vegaUtil.toBoolean), - toDate: (0, _vegaUtil.toDate), - toNumber: (0, _vegaUtil.toNumber), + toDate (_) { + return (0, _vegaUtil.toDate)(_); + }, + toNumber: // suppress extra arguments + (0, _vegaUtil.toNumber), toString: (0, _vegaUtil.toString), indexof, join, @@ -37161,7 +39841,10 @@ const functionContext = { warn, info, debug, - extent: (0, _vegaUtil.extent), + extent (_) { + return (0, _vegaUtil.extent)(_); + }, + // suppress extra arguments inScope, intersect, clampRange: (0, _vegaUtil.clampRange), @@ -37182,7 +39865,10 @@ const functionContext = { zoomPow: (0, _vegaUtil.zoomPow), zoomSymlog: (0, _vegaUtil.zoomSymlog), encode, - modify + modify, + lassoAppend, + lassoPath, + intersectLasso }; const eventFunctions = [ "view", @@ -37206,7 +39892,7 @@ const codegenParams = { "item" ], fieldvar: "datum", - globalvar: (id)=>`_[${(0, _vegaUtil.stringValue)(SignalPrefix + id)}]`, + globalvar: (id)=>"_[".concat((0, _vegaUtil.stringValue)(SignalPrefix + id), "]"), functions: buildFunctions, constants: (0, _vegaExpression.constants), visitors: astVisitors @@ -37277,7 +39963,7 @@ function parser(expr, scope) { }; } -},{"vega-util":"bApja","vega-expression":"53Uxk","d3-geo":"lY61T","d3-color":"7SCp9","vega-dataflow":"3NitK","vega-scale":"bEydG","vega-scenegraph":"jattk","vega-selections":"674qo","vega-statistics":"5ncfv","vega-time":"27kpp","d3-array":"6IwJG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"53Uxk":[function(require,module,exports) { +},{"vega-util":"bApja","vega-expression":"2l1no","d3-geo":"lY61T","d3-color":"7SCp9","vega-dataflow":"3NitK","vega-scale":"bEydG","vega-scenegraph":"jattk","vega-selections":"674qo","vega-statistics":"5ncfv","vega-time":"27kpp","d3-array":"6IwJG","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2l1no":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "ASTNode", ()=>ASTNode); @@ -38756,7 +41442,7 @@ function selectionVisitor(name, args, scope, params) { if (!(0, _vegaUtil.hasOwnProperty)(params, dataName)) params[dataName] = scope.getData(data).tuplesRef(); } -},{"d3-array":"lLsmU","vega-util":"bApja","vega-expression":"9KcWf","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lLsmU":[function(require,module,exports) { +},{"d3-array":"lLsmU","vega-util":"bApja","vega-expression":"2l1no","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"lLsmU":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "bisect", ()=>(0, _bisectJsDefault.default)); @@ -39033,2836 +41719,1591 @@ function union(...others) { } exports.default = union; -},{"internmap":"3ULAv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"9KcWf":[function(require,module,exports) { +},{"internmap":"3ULAv","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"k7ppL":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "ASTNode", ()=>ASTNode); -parcelHelpers.export(exports, "ArrayExpression", ()=>ArrayExpression); -parcelHelpers.export(exports, "BinaryExpression", ()=>BinaryExpression); -parcelHelpers.export(exports, "CallExpression", ()=>CallExpression); -parcelHelpers.export(exports, "ConditionalExpression", ()=>ConditionalExpression); -parcelHelpers.export(exports, "Identifier", ()=>Identifier); -parcelHelpers.export(exports, "Literal", ()=>Literal); -parcelHelpers.export(exports, "LogicalExpression", ()=>LogicalExpression); -parcelHelpers.export(exports, "MemberExpression", ()=>MemberExpression); -parcelHelpers.export(exports, "ObjectExpression", ()=>ObjectExpression); -parcelHelpers.export(exports, "Property", ()=>Property); -parcelHelpers.export(exports, "RawCode", ()=>RawCode); -parcelHelpers.export(exports, "UnaryExpression", ()=>UnaryExpression); -parcelHelpers.export(exports, "codegenExpression", ()=>codegen); -parcelHelpers.export(exports, "constants", ()=>Constants); -parcelHelpers.export(exports, "functions", ()=>Functions); -parcelHelpers.export(exports, "parseExpression", ()=>parser); +parcelHelpers.export(exports, "context", ()=>context); var _vegaUtil = require("vega-util"); -const RawCode = "RawCode"; -const Literal = "Literal"; -const Property = "Property"; -const Identifier = "Identifier"; -const ArrayExpression = "ArrayExpression"; -const BinaryExpression = "BinaryExpression"; -const CallExpression = "CallExpression"; -const ConditionalExpression = "ConditionalExpression"; -const LogicalExpression = "LogicalExpression"; -const MemberExpression = "MemberExpression"; -const ObjectExpression = "ObjectExpression"; -const UnaryExpression = "UnaryExpression"; -function ASTNode(type) { - this.type = type; +var _vegaDataflow = require("vega-dataflow"); +/** + * Parse a serialized dataflow specification. + */ function parse(spec) { + const ctx = this, operators = spec.operators || []; // parse background + if (spec.background) ctx.background = spec.background; + // parse event configuration + if (spec.eventConfig) ctx.eventConfig = spec.eventConfig; + // parse locale configuration + if (spec.locale) ctx.locale = spec.locale; + // parse operators + operators.forEach((entry)=>ctx.parseOperator(entry)); // parse operator parameters + operators.forEach((entry)=>ctx.parseOperatorParameters(entry)); // parse streams + (spec.streams || []).forEach((entry)=>ctx.parseStream(entry)); // parse updates + (spec.updates || []).forEach((entry)=>ctx.parseUpdate(entry)); + return ctx.resolve(); } -ASTNode.prototype.visit = function(visitor) { - let c, i, n; - if (visitor(this)) return 1; - for(c = children(this), i = 0, n = c.length; i < n; ++i){ - if (c[i].visit(visitor)) return 1; +const Skip = (0, _vegaUtil.toSet)([ + "rule" +]), Swap = (0, _vegaUtil.toSet)([ + "group", + "image", + "rect" +]); +function adjustSpatial(encode, marktype) { + let code = ""; + if (Skip[marktype]) return code; + if (encode.x2) { + if (encode.x) { + if (Swap[marktype]) code += "if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"; + code += "o.width=o.x2-o.x;"; + } else code += "o.x=o.x2-(o.width||0);"; } -}; -function children(node) { - switch(node.type){ - case ArrayExpression: - return node.elements; - case BinaryExpression: - case LogicalExpression: - return [ - node.left, - node.right - ]; - case CallExpression: - return [ - node.callee - ].concat(node.arguments); - case ConditionalExpression: - return [ - node.test, - node.consequent, - node.alternate - ]; - case MemberExpression: - return [ - node.object, - node.property - ]; - case ObjectExpression: - return node.properties; - case Property: - return [ - node.key, - node.value - ]; - case UnaryExpression: - return [ - node.argument - ]; - case Identifier: - case Literal: - case RawCode: - default: - return []; + if (encode.xc) code += "o.x=o.xc-(o.width||0)/2;"; + if (encode.y2) { + if (encode.y) { + if (Swap[marktype]) code += "if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"; + code += "o.height=o.y2-o.y;"; + } else code += "o.y=o.y2-(o.height||0);"; } + if (encode.yc) code += "o.y=o.yc-(o.height||0)/2;"; + return code; } -/* - The following expression parser is based on Esprima (http://esprima.org/). - Original header comment and license for Esprima is included here: - - Copyright (C) 2013 Ariya Hidayat - Copyright (C) 2013 Thaddee Tyl - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ var TokenName, source, index, length, lookahead; -var TokenBooleanLiteral = 1, TokenEOF = 2, TokenIdentifier = 3, TokenKeyword = 4, TokenNullLiteral = 5, TokenNumericLiteral = 6, TokenPunctuator = 7, TokenStringLiteral = 8, TokenRegularExpression = 9; -TokenName = {}; -TokenName[TokenBooleanLiteral] = "Boolean"; -TokenName[TokenEOF] = ""; -TokenName[TokenIdentifier] = "Identifier"; -TokenName[TokenKeyword] = "Keyword"; -TokenName[TokenNullLiteral] = "Null"; -TokenName[TokenNumericLiteral] = "Numeric"; -TokenName[TokenPunctuator] = "Punctuator"; -TokenName[TokenStringLiteral] = "String"; -TokenName[TokenRegularExpression] = "RegularExpression"; -var SyntaxArrayExpression = "ArrayExpression", SyntaxBinaryExpression = "BinaryExpression", SyntaxCallExpression = "CallExpression", SyntaxConditionalExpression = "ConditionalExpression", SyntaxIdentifier = "Identifier", SyntaxLiteral = "Literal", SyntaxLogicalExpression = "LogicalExpression", SyntaxMemberExpression = "MemberExpression", SyntaxObjectExpression = "ObjectExpression", SyntaxProperty = "Property", SyntaxUnaryExpression = "UnaryExpression"; // Error messages should be identical to V8. -var MessageUnexpectedToken = "Unexpected token %0", MessageUnexpectedNumber = "Unexpected number", MessageUnexpectedString = "Unexpected string", MessageUnexpectedIdentifier = "Unexpected identifier", MessageUnexpectedReserved = "Unexpected reserved word", MessageUnexpectedEOS = "Unexpected end of input", MessageInvalidRegExp = "Invalid regular expression", MessageUnterminatedRegExp = "Invalid regular expression: missing /", MessageStrictOctalLiteral = "Octal literals are not allowed in strict mode.", MessageStrictDuplicateProperty = "Duplicate data property in object literal not allowed in strict mode"; -var ILLEGAL = "ILLEGAL", DISABLED = "Disabled."; // See also tools/generate-unicode-regex.py. -var RegexNonAsciiIdentifierStart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), // eslint-disable-next-line no-misleading-character-class -RegexNonAsciiIdentifierPart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"); // Ensure the condition is true, otherwise throw an error. -// This is only to have a better contract semantic, i.e. another safety net -// to catch a logic error. The condition shall be fulfilled in normal case. -// Do NOT use this to enforce a certain condition on any user input. -function assert(condition, message) { - /* istanbul ignore next */ if (!condition) throw new Error("ASSERT: " + message); +function canonicalType(type) { + return (type + "").toLowerCase(); } -function isDecimalDigit(ch) { - return ch >= 0x30 && ch <= 0x39; // 0..9 +function isOperator(type) { + return canonicalType(type) === "operator"; } -function isHexDigit(ch) { - return "0123456789abcdefABCDEF".indexOf(ch) >= 0; +function isCollect(type) { + return canonicalType(type) === "collect"; } -function isOctalDigit(ch) { - return "01234567".indexOf(ch) >= 0; -} // 7.2 White Space -function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [ - 0x1680, - 0x180E, - 0x2000, - 0x2001, - 0x2002, - 0x2003, - 0x2004, - 0x2005, - 0x2006, - 0x2007, - 0x2008, - 0x2009, - 0x200A, - 0x202F, - 0x205F, - 0x3000, - 0xFEFF - ].indexOf(ch) >= 0; -} // 7.3 Line Terminators -function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; -} // 7.6 Identifier Names and Identifiers -function isIdentifierStart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)); +function expression(ctx, args, code) { + // wrap code in return statement if expression does not terminate + if (code[code.length - 1] !== ";") code = "return(" + code + ");"; + const fn = Function(...args.concat(code)); + return ctx && ctx.functions ? fn.bind(ctx.functions) : fn; +} // generate code for comparing a single field +function _compare(u, v, lt, gt) { + return "((u = ".concat(u, ") < (v = ").concat(v, ") || u == null) && v != null ? ").concat(lt, "\n : (u > v || v == null) && u != null ? ").concat(gt, "\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ").concat(lt, "\n : v !== v && u === u ? ").concat(gt, " : "); } -function isIdentifierPart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch >= 0x30 && ch <= 0x39 || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)); -} // 7.6.1.1 Keywords -const keywords = { - "if": 1, - "in": 1, - "do": 1, - "var": 1, - "for": 1, - "new": 1, - "try": 1, - "let": 1, - "this": 1, - "else": 1, - "case": 1, - "void": 1, - "with": 1, - "enum": 1, - "while": 1, - "break": 1, - "catch": 1, - "throw": 1, - "const": 1, - "yield": 1, - "class": 1, - "super": 1, - "return": 1, - "typeof": 1, - "delete": 1, - "switch": 1, - "export": 1, - "import": 1, - "public": 1, - "static": 1, - "default": 1, - "finally": 1, - "extends": 1, - "package": 1, - "private": 1, - "function": 1, - "continue": 1, - "debugger": 1, - "interface": 1, - "protected": 1, - "instanceof": 1, - "implements": 1 -}; -function skipComment() { - while(index < length){ - const ch = source.charCodeAt(index); - if (isWhiteSpace(ch) || isLineTerminator(ch)) ++index; - else break; +var expressionCodegen = { + /** + * Parse an expression used to update an operator value. + */ operator: (ctx, expr)=>expression(ctx, [ + "_" + ], expr.code), + /** + * Parse an expression provided as an operator parameter value. + */ parameter: (ctx, expr)=>expression(ctx, [ + "datum", + "_" + ], expr.code), + /** + * Parse an expression applied to an event stream. + */ event: (ctx, expr)=>expression(ctx, [ + "event" + ], expr.code), + /** + * Parse an expression used to handle an event-driven operator update. + */ handler: (ctx, expr)=>{ + const code = "var datum=event.item&&event.item.datum;return ".concat(expr.code, ";"); + return expression(ctx, [ + "_", + "event" + ], code); + }, + /** + * Parse an expression that performs visual encoding. + */ encode: (ctx, encode)=>{ + const { marktype , channels } = encode; + let code = "var o=item,datum=o.datum,m=0,$;"; + for(const name in channels){ + const o = "o[" + (0, _vegaUtil.stringValue)(name) + "]"; + code += "$=".concat(channels[name].code, ";if(").concat(o, "!==$)").concat(o, "=$,m=1;"); + } + code += adjustSpatial(channels, marktype); + code += "return m;"; + return expression(ctx, [ + "item", + "_" + ], code); + }, + /** + * Optimized code generators for access and comparison. + */ codegen: { + get (path) { + const ref = "[".concat(path.map((0, _vegaUtil.stringValue)).join("]["), "]"); + const get = Function("_", "return _".concat(ref, ";")); + get.path = ref; + return get; + }, + comparator (fields, orders) { + let t; + const map = (f, i)=>{ + const o = orders[i]; + let u, v; + if (f.path) { + u = "a".concat(f.path); + v = "b".concat(f.path); + } else { + (t = t || {})["f" + i] = f; + u = "this.f".concat(i, "(a)"); + v = "this.f".concat(i, "(b)"); + } + return _compare(u, v, -o, o); + }; + const fn = Function("a", "b", "var u, v; return " + fields.map(map).join("") + "0;"); + return t ? fn.bind(t) : fn; + } } +}; +/** + * Parse a dataflow operator. + */ function parseOperator(spec) { + const ctx = this; + if (isOperator(spec.type) || !spec.type) ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null); + else ctx.transform(spec, spec.type); } -function scanHexEscape(prefix) { - var i, len, ch, code = 0; - len = prefix === "u" ? 4 : 2; - for(i = 0; i < len; ++i)if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); - } else throwError({}, MessageUnexpectedToken, ILLEGAL); - return String.fromCharCode(code); -} -function scanUnicodeCodePointEscape() { - var ch, code, cu1, cu2; - ch = source[index]; - code = 0; // At least, one hex digit is required. - if (ch === "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - while(index < length){ - ch = source[index++]; - if (!isHexDigit(ch)) break; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); +/** + * Parse and assign operator parameters. + */ function parseOperatorParameters(spec) { + const ctx = this; + if (spec.params) { + const op = ctx.get(spec.id); + if (!op) (0, _vegaUtil.error)("Invalid operator id: " + spec.id); + ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly)); } - if (code > 0x10FFFF || ch !== "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - // UTF-16 Encoding - if (code <= 0xFFFF) return String.fromCharCode(code); - cu1 = (code - 0x10000 >> 10) + 0xD800; - cu2 = (code - 0x10000 & 1023) + 0xDC00; - return String.fromCharCode(cu1, cu2); } -function getEscapedIdentifier() { - var ch, id; - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierStart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id = ch; +/** + * Parse a set of operator parameters. + */ function parseParameters(spec, params) { + params = params || {}; + const ctx = this; + for(const key in spec){ + const value = spec[key]; + params[key] = (0, _vegaUtil.isArray)(value) ? value.map((v)=>parseParameter(v, ctx, params)) : parseParameter(value, ctx, params); } - while(index < length){ - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) break; - ++index; - id += String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierPart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id += ch; - } + return params; +} +/** + * Parse a single parameter. + */ function parseParameter(spec, ctx, params) { + if (!spec || !(0, _vegaUtil.isObject)(spec)) return spec; + for(let i = 0, n = PARSERS.length, p; i < n; ++i){ + p = PARSERS[i]; + if ((0, _vegaUtil.hasOwnProperty)(spec, p.key)) return p.parse(spec, ctx, params); } - return id; + return spec; } -function getIdentifier() { - var start, ch; - start = index++; - while(index < length){ - ch = source.charCodeAt(index); - if (ch === 0x5C) { - // Blackslash (U+005C) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); - } - if (isIdentifierPart(ch)) ++index; - else break; +/** Reference parsers. */ var PARSERS = [ + { + key: "$ref", + parse: getOperator + }, + { + key: "$key", + parse: getKey + }, + { + key: "$expr", + parse: getExpression + }, + { + key: "$field", + parse: getField + }, + { + key: "$encode", + parse: getEncode + }, + { + key: "$compare", + parse: getCompare + }, + { + key: "$context", + parse: getContext + }, + { + key: "$subflow", + parse: getSubflow + }, + { + key: "$tupleid", + parse: getTupleId } - return source.slice(start, index); +]; +/** + * Resolve an operator reference. + */ function getOperator(_, ctx) { + return ctx.get(_.$ref) || (0, _vegaUtil.error)("Operator not defined: " + _.$ref); } -function scanIdentifier() { - var start, id, type; - start = index; // Backslash (U+005C) starts an escaped character. - id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) type = TokenIdentifier; - else if (keywords.hasOwnProperty(id)) // eslint-disable-line no-prototype-builtins - type = TokenKeyword; - else if (id === "null") type = TokenNullLiteral; - else if (id === "true" || id === "false") type = TokenBooleanLiteral; - else type = TokenIdentifier; - return { - type: type, - value: id, - start: start, - end: index - }; -} // 7.7 Punctuators -function scanPunctuator() { - var start = index, code = source.charCodeAt(index), code2, ch1 = source[index], ch2, ch3, ch4; - switch(code){ - // Check for most common single-character punctuators. - case 0x2E: - case 0x28: - case 0x29: - case 0x3B: - case 0x2C: - case 0x7B: - case 0x7D: - case 0x5B: - case 0x5D: - case 0x3A: - case 0x3F: - case 0x7E: - // ~ - ++index; - return { - type: TokenPunctuator, - value: String.fromCharCode(code), - start: start, - end: index - }; - default: - code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator. - if (code2 === 0x3D) switch(code){ - case 0x2B: - case 0x2D: - case 0x2F: - case 0x3C: - case 0x3E: - case 0x5E: - case 0x7C: - case 0x25: - case 0x26: - case 0x2A: - // * - index += 2; - return { - type: TokenPunctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - start: start, - end: index - }; - case 0x21: - case 0x3D: - // = - index += 2; // !== and === - if (source.charCodeAt(index) === 0x3D) ++index; - return { - type: TokenPunctuator, - value: source.slice(start, index), - start: start, - end: index - }; - } - } // 4-character punctuator: >>>= - ch4 = source.substr(index, 4); - if (ch4 === ">>>=") { - index += 4; - return { - type: TokenPunctuator, - value: ch4, - start: start, - end: index - }; - } // 3-character punctuators: === !== >>> <<= >>= - ch3 = ch4.substr(0, 3); - if (ch3 === ">>>" || ch3 === "<<=" || ch3 === ">>=") { - index += 3; - return { - type: TokenPunctuator, - value: ch3, - start: start, - end: index - }; - } // Other 2-character punctuators: ++ -- << >> && || - ch2 = ch3.substr(0, 2); - if (ch1 === ch2[1] && "+-<>&|".indexOf(ch1) >= 0 || ch2 === "=>") { - index += 2; - return { - type: TokenPunctuator, - value: ch2, - start: start, - end: index - }; - } - if (ch2 === "//") throwError({}, MessageUnexpectedToken, ILLEGAL); - // 1-character punctuators: < > = ! + - * % & | ^ / - if ("<>=!+-*%&|^/".indexOf(ch1) >= 0) { - ++index; - return { - type: TokenPunctuator, - value: ch1, - start: start, - end: index - }; - } - throwError({}, MessageUnexpectedToken, ILLEGAL); -} // 7.8.3 Numeric Literals -function scanHexLiteral(start) { - let number = ""; - while(index < length){ - if (!isHexDigit(source[index])) break; - number += source[index++]; - } - if (number.length === 0) throwError({}, MessageUnexpectedToken, ILLEGAL); - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt("0x" + number, 16), - start: start, - end: index - }; +/** + * Resolve an expression reference. + */ function getExpression(_, ctx, params) { + if (_.$params) // parse expression parameters + ctx.parseParameters(_.$params, params); + const k = "e:" + _.$expr.code + "_" + _.$name; + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.accessor)(ctx.parameterExpression(_.$expr), _.$fields, _.$name)); } -function scanOctalLiteral(start) { - let number = "0" + source[index++]; - while(index < length){ - if (!isOctalDigit(source[index])) break; - number += source[index++]; - } - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt(number, 8), - octal: true, - start: start, - end: index - }; +/** + * Resolve a key accessor reference. + */ function getKey(_, ctx) { + const k = "k:" + _.$key + "_" + !!_.$flat; + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.key)(_.$key, _.$flat, ctx.expr.codegen)); } -function scanNumericLiteral() { - var number, start, ch; - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || ch === ".", "Numeric literal must start with a decimal digit or a decimal point"); - start = index; - number = ""; - if (ch !== ".") { - number = source[index++]; - ch = source[index]; // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === "0") { - if (ch === "x" || ch === "X") { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) return scanOctalLiteral(start); - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - } - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === ".") { - number += source[index++]; - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === "e" || ch === "E") { - number += source[index++]; - ch = source[index]; - if (ch === "+" || ch === "-") number += source[index++]; - if (isDecimalDigit(source.charCodeAt(index))) while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - else throwError({}, MessageUnexpectedToken, ILLEGAL); - } - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseFloat(number), - start: start, - end: index - }; -} // 7.8.4 String Literals -function scanStringLiteral() { - var str = "", quote, start, ch, code, octal = false; - quote = source[index]; - assert(quote === "'" || quote === '"', "String literal must starts with a quote"); - start = index; - ++index; - while(index < length){ - ch = source[index++]; - if (ch === quote) { - quote = ""; - break; - } else if (ch === "\\") { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) switch(ch){ - case "u": - case "x": - if (source[index] === "{") { - ++index; - str += scanUnicodeCodePointEscape(); - } else str += scanHexEscape(ch); - break; - case "n": - str += "\n"; - break; - case "r": - str += "\r"; - break; - case "t": - str += " "; - break; - case "b": - str += "\b"; - break; - case "f": - str += "\f"; - break; - case "v": - str += "\v"; - break; - default: - if (isOctalDigit(ch)) { - code = "01234567".indexOf(ch); // \0 is not octal escape sequence - if (code !== 0) octal = true; - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + "01234567".indexOf(source[index++]); // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ("0123".indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) code = code * 8 + "01234567".indexOf(source[index++]); - } - str += String.fromCharCode(code); - } else str += ch; - break; - } - else if (ch === "\r" && source[index] === "\n") ++index; - } else if (isLineTerminator(ch.charCodeAt(0))) break; - else str += ch; - } - if (quote !== "") throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenStringLiteral, - value: str, - octal: octal, - start: start, - end: index - }; +/** + * Resolve a field accessor reference. + */ function getField(_, ctx) { + if (!_.$field) return null; + const k = "f:" + _.$field + "_" + _.$name; + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.field)(_.$field, _.$name, ctx.expr.codegen)); } -function testRegExp(pattern, flags) { - let tmp = pattern; - if (flags.indexOf("u") >= 0) // Replace each astral symbol and every Unicode code point - // escape sequence with a single ASCII symbol to avoid throwing on - // regular expressions that are only valid in combination with the - // `/u` flag. - // Note: replacing with the ASCII symbol `x` might cause false - // negatives in unlikely scenarios. For example, `[\u{61}-b]` is a - // perfectly valid pattern that is equivalent to `[a-b]`, but it - // would be replaced by `[x-b]` which throws an error. - tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g, ($0, $1)=>{ - if (parseInt($1, 16) <= 0x10FFFF) return "x"; - throwError({}, MessageInvalidRegExp); - }).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, "x"); - // First, detect invalid regular expressions. - try { - new RegExp(tmp); - } catch (e) { - throwError({}, MessageInvalidRegExp); - } // Return a regular expression object for this pattern-flag pair, or - // `null` in case the current environment doesn't support the flags it - // uses. - try { - return new RegExp(pattern, flags); - } catch (exception) { - return null; - } +/** + * Resolve a comparator function reference. + */ function getCompare(_, ctx) { + // As of Vega 5.5.3, $tupleid sort is no longer used. + // Keep here for now for backwards compatibility. + const k = "c:" + _.$compare + "_" + _.$order, c = (0, _vegaUtil.array)(_.$compare).map((_)=>_ && _.$tupleid ? (0, _vegaDataflow.tupleid) : _); + return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.compare)(c, _.$order, ctx.expr.codegen)); } -function scanRegExpBody() { - var ch, str, classMarker, terminated, body; - ch = source[index]; - assert(ch === "/", "Regular expression literal must start with a slash"); - str = source[index++]; - classMarker = false; - terminated = false; - while(index < length){ - ch = source[index++]; - str += ch; - if (ch === "\\") { - ch = source[index++]; // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - str += ch; - } else if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - else if (classMarker) { - if (ch === "]") classMarker = false; - } else { - if (ch === "/") { - terminated = true; - break; - } else if (ch === "[") classMarker = true; - } +/** + * Resolve an encode operator reference. + */ function getEncode(_, ctx) { + const spec = _.$encode, encode = {}; + for(const name in spec){ + const enc = spec[name]; + encode[name] = (0, _vegaUtil.accessor)(ctx.encodeExpression(enc.$expr), enc.$fields); + encode[name].output = enc.$output; } - if (!terminated) throwError({}, MessageUnterminatedRegExp); - // Exclude leading and trailing slash. - body = str.substr(1, str.length - 2); - return { - value: body, - literal: str - }; + return encode; } -function scanRegExpFlags() { - var ch, str, flags; - str = ""; - flags = ""; - while(index < length){ - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) break; - ++index; - if (ch === "\\" && index < length) throwError({}, MessageUnexpectedToken, ILLEGAL); - else { - flags += ch; - str += ch; - } - } - if (flags.search(/[^gimuy]/g) >= 0) throwError({}, MessageInvalidRegExp, flags); - return { - value: flags, - literal: str - }; +/** + * Resolve a context reference. + */ function getContext(_, ctx) { + return ctx; } -function scanRegExp() { - var start, body, flags, value; - lookahead = null; - skipComment(); - start = index; - body = scanRegExpBody(); - flags = scanRegExpFlags(); - value = testRegExp(body.value, flags.value); - return { - literal: body.literal + flags.literal, - value: value, - regex: { - pattern: body.value, - flags: flags.value - }, - start: start, - end: index +/** + * Resolve a recursive subflow specification. + */ function getSubflow(_, ctx) { + const spec = _.$subflow; + return function(dataflow, key, parent) { + const subctx = ctx.fork().parse(spec), op = subctx.get(spec.operators[0].id), p = subctx.signals.parent; + if (p) p.set(parent); + op.detachSubflow = ()=>ctx.detach(subctx); + return op; }; } -function isIdentifierName(token) { - return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral; +/** + * Resolve a tuple id reference. + */ function getTupleId() { + return 0, _vegaDataflow.tupleid; } -function advance() { - skipComment(); - if (index >= length) return { - type: TokenEOF, - start: index, - end: index - }; - const ch = source.charCodeAt(index); - if (isIdentifierStart(ch)) return scanIdentifier(); - // Very common: ( and ) and ; - if (ch === 0x28 || ch === 0x29 || ch === 0x3B) return scanPunctuator(); - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (ch === 0x27 || ch === 0x22) return scanStringLiteral(); - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (ch === 0x2E) { - if (isDecimalDigit(source.charCodeAt(index + 1))) return scanNumericLiteral(); - return scanPunctuator(); +/** + * Parse an event stream specification. + */ function parseStream(spec) { + var ctx = this, filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined, stream = spec.stream != null ? ctx.get(spec.stream) : undefined, args; + if (spec.source) stream = ctx.events(spec.source, spec.type, filter); + else if (spec.merge) { + args = spec.merge.map((_)=>ctx.get(_)); + stream = args[0].merge.apply(args[0], args.slice(1)); } - if (isDecimalDigit(ch)) return scanNumericLiteral(); - return scanPunctuator(); + if (spec.between) { + args = spec.between.map((_)=>ctx.get(_)); + stream = stream.between(args[0], args[1]); + } + if (spec.filter) stream = stream.filter(filter); + if (spec.throttle != null) stream = stream.throttle(+spec.throttle); + if (spec.debounce != null) stream = stream.debounce(+spec.debounce); + if (stream == null) (0, _vegaUtil.error)("Invalid stream definition: " + JSON.stringify(spec)); + if (spec.consume) stream.consume(true); + ctx.stream(spec, stream); } -function lex() { - const token = lookahead; - index = token.end; - lookahead = advance(); - index = token.end; - return token; +/** + * Parse an event-driven operator update. + */ function parseUpdate(spec) { + var ctx = this, srcid = (0, _vegaUtil.isObject)(srcid = spec.source) ? srcid.$ref : srcid, source = ctx.get(srcid), target = null, update = spec.update, params = undefined; + if (!source) (0, _vegaUtil.error)("Source not defined: " + spec.source); + target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target); + if (update && update.$expr) { + if (update.$params) params = ctx.parseParameters(update.$params); + update = ctx.handlerExpression(update.$expr); + } + ctx.update(spec, source, target, update, params); } -function peek() { - const pos = index; - lookahead = advance(); - index = pos; -} -function finishArrayExpression(elements) { - const node = new ASTNode(SyntaxArrayExpression); - node.elements = elements; - return node; -} -function finishBinaryExpression(operator, left, right) { - const node = new ASTNode(operator === "||" || operator === "&&" ? SyntaxLogicalExpression : SyntaxBinaryExpression); - node.operator = operator; - node.left = left; - node.right = right; - return node; +const SKIP = { + skip: true +}; +function getState(options) { + var ctx = this, state = {}; + if (options.signals) { + var signals = state.signals = {}; + Object.keys(ctx.signals).forEach((key)=>{ + const op = ctx.signals[key]; + if (options.signals(key, op)) signals[key] = op.value; + }); + } + if (options.data) { + var data = state.data = {}; + Object.keys(ctx.data).forEach((key)=>{ + const dataset = ctx.data[key]; + if (options.data(key, dataset)) data[key] = dataset.input.value; + }); + } + if (ctx.subcontext && options.recurse !== false) state.subcontext = ctx.subcontext.map((ctx)=>ctx.getState(options)); + return state; } -function finishCallExpression(callee, args) { - const node = new ASTNode(SyntaxCallExpression); - node.callee = callee; - node.arguments = args; - return node; +function setState(state) { + var ctx = this, df = ctx.dataflow, data = state.data, signals = state.signals; + Object.keys(signals || {}).forEach((key)=>{ + df.update(ctx.signals[key], signals[key], SKIP); + }); + Object.keys(data || {}).forEach((key)=>{ + df.pulse(ctx.data[key].input, df.changeset().remove((0, _vegaUtil.truthy)).insert(data[key])); + }); + (state.subcontext || []).forEach((substate, i)=>{ + const subctx = ctx.subcontext[i]; + if (subctx) subctx.setState(substate); + }); } -function finishConditionalExpression(test, consequent, alternate) { - const node = new ASTNode(SyntaxConditionalExpression); - node.test = test; - node.consequent = consequent; - node.alternate = alternate; - return node; +/** + * Context objects store the current parse state. + * Enables lookup of parsed operators, event streams, accessors, etc. + * Provides a 'fork' method for creating child contexts for subflows. + */ function context(df, transforms, functions, expr) { + return new Context(df, transforms, functions, expr); } -function finishIdentifier(name) { - const node = new ASTNode(SyntaxIdentifier); - node.name = name; - return node; +function Context(df, transforms, functions, expr) { + this.dataflow = df; + this.transforms = transforms; + this.events = df.events.bind(df); + this.expr = expr || expressionCodegen, this.signals = {}; + this.scales = {}; + this.nodes = {}; + this.data = {}; + this.fn = {}; + if (functions) { + this.functions = Object.create(functions); + this.functions.context = this; + } } -function finishLiteral(token) { - const node = new ASTNode(SyntaxLiteral); - node.value = token.value; - node.raw = source.slice(token.start, token.end); - if (token.regex) { - if (node.raw === "//") node.raw = "/(?:)/"; - node.regex = token.regex; +function Subcontext(ctx) { + this.dataflow = ctx.dataflow; + this.transforms = ctx.transforms; + this.events = ctx.events; + this.expr = ctx.expr; + this.signals = Object.create(ctx.signals); + this.scales = Object.create(ctx.scales); + this.nodes = Object.create(ctx.nodes); + this.data = Object.create(ctx.data); + this.fn = Object.create(ctx.fn); + if (ctx.functions) { + this.functions = Object.create(ctx.functions); + this.functions.context = this; } - return node; } -function finishMemberExpression(accessor, object, property) { - const node = new ASTNode(SyntaxMemberExpression); - node.computed = accessor === "["; - node.object = object; - node.property = property; - if (!node.computed) property.member = true; - return node; +Context.prototype = Subcontext.prototype = { + fork () { + const ctx = new Subcontext(this); + (this.subcontext || (this.subcontext = [])).push(ctx); + return ctx; + }, + detach (ctx) { + this.subcontext = this.subcontext.filter((c)=>c !== ctx); // disconnect all nodes in the subcontext + // wipe out targets first for better efficiency + const keys = Object.keys(ctx.nodes); + for (const key of keys)ctx.nodes[key]._targets = null; + for (const key1 of keys)ctx.nodes[key1].detach(); + ctx.nodes = null; + }, + get (id) { + return this.nodes[id]; + }, + set (id, node) { + return this.nodes[id] = node; + }, + add (spec, op) { + const ctx = this, df = ctx.dataflow, data = spec.value; + ctx.set(spec.id, op); + if (isCollect(spec.type) && data) { + if (data.$ingest) df.ingest(op, data.$ingest, data.$format); + else if (data.$request) df.preload(op, data.$request, data.$format); + else df.pulse(op, df.changeset().insert(data)); + } + if (spec.root) ctx.root = op; + if (spec.parent) { + let p = ctx.get(spec.parent.$ref); + if (p) { + df.connect(p, [ + op + ]); + op.targets().add(p); + } else (ctx.unresolved = ctx.unresolved || []).push(()=>{ + p = ctx.get(spec.parent.$ref); + df.connect(p, [ + op + ]); + op.targets().add(p); + }); + } + if (spec.signal) ctx.signals[spec.signal] = op; + if (spec.scale) ctx.scales[spec.scale] = op; + if (spec.data) for(const name in spec.data){ + const data1 = ctx.data[name] || (ctx.data[name] = {}); + spec.data[name].forEach((role)=>data1[role] = op); + } + }, + resolve () { + (this.unresolved || []).forEach((fn)=>fn()); + delete this.unresolved; + return this; + }, + operator (spec, update) { + this.add(spec, this.dataflow.add(spec.value, update)); + }, + transform (spec, type) { + this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)])); + }, + stream (spec, stream) { + this.set(spec.id, stream); + }, + update (spec, stream, target, update, params) { + this.dataflow.on(stream, target, update, params, spec.options); + }, + // expression parsing + operatorExpression (expr) { + return this.expr.operator(this, expr); + }, + parameterExpression (expr) { + return this.expr.parameter(this, expr); + }, + eventExpression (expr) { + return this.expr.event(this, expr); + }, + handlerExpression (expr) { + return this.expr.handler(this, expr); + }, + encodeExpression (encode) { + return this.expr.encode(this, encode); + }, + // parse methods + parse, + parseOperator, + parseOperatorParameters, + parseParameters, + parseStream, + parseUpdate, + // state methods + getState, + setState +}; + +},{"vega-util":"bApja","vega-dataflow":"3NitK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hsy9Z":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "AxisDomainRole", ()=>AxisDomainRole); +parcelHelpers.export(exports, "AxisGridRole", ()=>AxisGridRole); +parcelHelpers.export(exports, "AxisLabelRole", ()=>AxisLabelRole); +parcelHelpers.export(exports, "AxisRole", ()=>AxisRole); +parcelHelpers.export(exports, "AxisTickRole", ()=>AxisTickRole); +parcelHelpers.export(exports, "AxisTitleRole", ()=>AxisTitleRole); +parcelHelpers.export(exports, "DataScope", ()=>DataScope); +parcelHelpers.export(exports, "FrameRole", ()=>FrameRole); +parcelHelpers.export(exports, "LegendEntryRole", ()=>LegendEntryRole); +parcelHelpers.export(exports, "LegendLabelRole", ()=>LegendLabelRole); +parcelHelpers.export(exports, "LegendRole", ()=>LegendRole); +parcelHelpers.export(exports, "LegendSymbolRole", ()=>LegendSymbolRole); +parcelHelpers.export(exports, "LegendTitleRole", ()=>LegendTitleRole); +parcelHelpers.export(exports, "MarkRole", ()=>MarkRole); +parcelHelpers.export(exports, "Scope", ()=>Scope); +parcelHelpers.export(exports, "ScopeRole", ()=>ScopeRole); +parcelHelpers.export(exports, "config", ()=>defaults); +parcelHelpers.export(exports, "parse", ()=>parse); +parcelHelpers.export(exports, "signal", ()=>parseSignal); +parcelHelpers.export(exports, "signalUpdates", ()=>parseSignalUpdates); +parcelHelpers.export(exports, "stream", ()=>parseStream); +var _vegaUtil = require("vega-util"); +var _vegaFunctions = require("vega-functions"); +var _vegaEventSelector = require("vega-event-selector"); +var _vegaScale = require("vega-scale"); +var _vegaDataflow = require("vega-dataflow"); +function parseAutosize(spec) { + return (0, _vegaUtil.isObject)(spec) ? spec : { + type: spec || "pad" + }; } -function finishObjectExpression(properties) { - const node = new ASTNode(SyntaxObjectExpression); - node.properties = properties; - return node; +const number = (_)=>+_ || 0; +const paddingObject = (_)=>({ + top: _, + bottom: _, + left: _, + right: _ + }); +function parsePadding(spec) { + return !(0, _vegaUtil.isObject)(spec) ? paddingObject(number(spec)) : spec.signal ? spec : { + top: number(spec.top), + bottom: number(spec.bottom), + left: number(spec.left), + right: number(spec.right) + }; } -function finishProperty(kind, key, value) { - const node = new ASTNode(SyntaxProperty); - node.key = key; - node.value = value; - node.kind = kind; - return node; +const encoder = (_)=>(0, _vegaUtil.isObject)(_) && !(0, _vegaUtil.isArray)(_) ? (0, _vegaUtil.extend)({}, _) : { + value: _ + }; +function addEncode(object, name, value, set) { + if (value != null) { + const isEncoder = (0, _vegaUtil.isObject)(value) && !(0, _vegaUtil.isArray)(value) || (0, _vegaUtil.isArray)(value) && value.length && (0, _vegaUtil.isObject)(value[0]); // Always assign signal to update, even if the signal is from the enter block + if (isEncoder) object.update[name] = value; + else object[set || "enter"][name] = { + value: value + }; + return 1; + } else return 0; } -function finishUnaryExpression(operator, argument) { - const node = new ASTNode(SyntaxUnaryExpression); - node.operator = operator; - node.argument = argument; - node.prefix = true; - return node; -} // Throw an exception -function throwError(token, messageFormat) { - var error, args = Array.prototype.slice.call(arguments, 2), msg = messageFormat.replace(/%(\d)/g, (whole, index)=>{ - assert(index < args.length, "Message reference must be in range"); - return args[index]; - }); - error = new Error(msg); - error.index = index; - error.description = msg; - throw error; -} // Throw an exception because of the token. -function throwUnexpected(token) { - if (token.type === TokenEOF) throwError(token, MessageUnexpectedEOS); - if (token.type === TokenNumericLiteral) throwError(token, MessageUnexpectedNumber); - if (token.type === TokenStringLiteral) throwError(token, MessageUnexpectedString); - if (token.type === TokenIdentifier) throwError(token, MessageUnexpectedIdentifier); - if (token.type === TokenKeyword) throwError(token, MessageUnexpectedReserved); - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, MessageUnexpectedToken, token.value); -} // Expect the next token to match the specified punctuator. -// If not, an exception will be thrown. -function expect(value) { - const token = lex(); - if (token.type !== TokenPunctuator || token.value !== value) throwUnexpected(token); -} // Return true if the next token matches the specified punctuator. -function match(value) { - return lookahead.type === TokenPunctuator && lookahead.value === value; -} // Return true if the next token matches the specified keyword -function matchKeyword(keyword) { - return lookahead.type === TokenKeyword && lookahead.value === keyword; -} // 11.1.4 Array Initialiser -function parseArrayInitialiser() { - const elements = []; - index = lookahead.start; - expect("["); - while(!match("]"))if (match(",")) { - lex(); - elements.push(null); - } else { - elements.push(parseConditionalExpression()); - if (!match("]")) expect(","); - } - lex(); - return finishArrayExpression(elements); -} // 11.1.5 Object Initialiser -function parseObjectPropertyKey() { - index = lookahead.start; - const token = lex(); // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) { - if (token.octal) throwError(token, MessageStrictOctalLiteral); - return finishLiteral(token); - } - return finishIdentifier(token.value); +function addEncoders(object, enter, update) { + for(const name in enter)addEncode(object, name, enter[name]); + for(const name1 in update)addEncode(object, name1, update[name1], "update"); } -function parseObjectProperty() { - var token, key, id, value; - index = lookahead.start; - token = lookahead; - if (token.type === TokenIdentifier) { - id = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", id, value); - } - if (token.type === TokenEOF || token.type === TokenPunctuator) throwUnexpected(token); - else { - key = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", key, value); +function extendEncode(encode, extra, skip) { + for(const name in extra){ + if (skip && (0, _vegaUtil.hasOwnProperty)(skip, name)) continue; + encode[name] = (0, _vegaUtil.extend)(encode[name] || {}, extra[name]); } + return encode; } -function parseObjectInitialiser() { - var properties = [], property, name, key, map = {}, toString = String; - index = lookahead.start; - expect("{"); - while(!match("}")){ - property = parseObjectProperty(); - if (property.key.type === SyntaxIdentifier) name = property.key.name; - else name = toString(property.key.value); - key = "$" + name; - if (Object.prototype.hasOwnProperty.call(map, key)) throwError({}, MessageStrictDuplicateProperty); - else map[key] = true; - properties.push(property); - if (!match("}")) expect(","); - } - expect("}"); - return finishObjectExpression(properties); -} // 11.1.6 The Grouping Operator -function parseGroupExpression() { - expect("("); - const expr = parseExpression(); - expect(")"); - return expr; -} // 11.1 Primary Expressions -const legalKeywords = { - "if": 1 -}; -function parsePrimaryExpression() { - var type, token, expr; - if (match("(")) return parseGroupExpression(); - if (match("[")) return parseArrayInitialiser(); - if (match("{")) return parseObjectInitialiser(); - type = lookahead.type; - index = lookahead.start; - if (type === TokenIdentifier || legalKeywords[lookahead.value]) expr = finishIdentifier(lex().value); - else if (type === TokenStringLiteral || type === TokenNumericLiteral) { - if (lookahead.octal) throwError(lookahead, MessageStrictOctalLiteral); - expr = finishLiteral(lex()); - } else if (type === TokenKeyword) throw new Error(DISABLED); - else if (type === TokenBooleanLiteral) { - token = lex(); - token.value = token.value === "true"; - expr = finishLiteral(token); - } else if (type === TokenNullLiteral) { - token = lex(); - token.value = null; - expr = finishLiteral(token); - } else if (match("/") || match("/=")) { - expr = finishLiteral(scanRegExp()); - peek(); - } else throwUnexpected(lex()); - return expr; -} // 11.2 Left-Hand-Side Expressions -function parseArguments() { - const args = []; - expect("("); - if (!match(")")) while(index < length){ - args.push(parseConditionalExpression()); - if (match(")")) break; - expect(","); +function has(key, encode) { + return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]); +} +const MarkRole = "mark"; +const FrameRole = "frame"; +const ScopeRole = "scope"; +const AxisRole = "axis"; +const AxisDomainRole = "axis-domain"; +const AxisGridRole = "axis-grid"; +const AxisLabelRole = "axis-label"; +const AxisTickRole = "axis-tick"; +const AxisTitleRole = "axis-title"; +const LegendRole = "legend"; +const LegendBandRole = "legend-band"; +const LegendEntryRole = "legend-entry"; +const LegendGradientRole = "legend-gradient"; +const LegendLabelRole = "legend-label"; +const LegendSymbolRole = "legend-symbol"; +const LegendTitleRole = "legend-title"; +const TitleRole = "title"; +const TitleTextRole = "title-text"; +const TitleSubtitleRole = "title-subtitle"; +function applyDefaults(encode, type, role, style, config) { + const defaults = {}, enter = {}; + let update, key, skip, props; // if text mark, apply global lineBreak settings (#2370) + key = "lineBreak"; + if (type === "text" && config[key] != null && !has(key, encode)) applyDefault(defaults, key, config[key]); + // ignore legend and axis roles + if (role == "legend" || String(role).startsWith("axis")) role = null; + // resolve mark config + props = role === FrameRole ? config.group : role === MarkRole ? (0, _vegaUtil.extend)({}, config.mark, config[type]) : null; + for(key in props){ + // do not apply defaults if relevant fields are defined + skip = has(key, encode) || (key === "fill" || key === "stroke") && (has("fill", encode) || has("stroke", encode)); + if (!skip) applyDefault(defaults, key, props[key]); + } // resolve styles, apply with increasing precedence + (0, _vegaUtil.array)(style).forEach((name)=>{ + const props = config.style && config.style[name]; + for(const key in props)if (!has(key, encode)) applyDefault(defaults, key, props[key]); + }); + encode = (0, _vegaUtil.extend)({}, encode); // defensive copy + for(key in defaults){ + props = defaults[key]; + if (props.signal) (update = update || {})[key] = props; + else enter[key] = props; } - expect(")"); - return args; + encode.enter = (0, _vegaUtil.extend)(enter, encode.enter); + if (update) encode.update = (0, _vegaUtil.extend)(update, encode.update); + return encode; } -function parseNonComputedProperty() { - index = lookahead.start; - const token = lex(); - if (!isIdentifierName(token)) throwUnexpected(token); - return finishIdentifier(token.value); +function applyDefault(defaults, key, value) { + defaults[key] = value && value.signal ? { + signal: value.signal + } : { + value: value + }; } -function parseNonComputedMember() { - expect("."); - return parseNonComputedProperty(); +const scaleRef = (scale)=>(0, _vegaUtil.isString)(scale) ? (0, _vegaUtil.stringValue)(scale) : scale.signal ? `(${scale.signal})` : field(scale); +function entry$1(enc) { + if (enc.gradient != null) return gradient(enc); + let value = enc.signal ? `(${enc.signal})` : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? (0, _vegaUtil.stringValue)(enc.value) : undefined; + if (enc.scale != null) value = scale(enc, value); + if (value === undefined) value = null; + if (enc.exponent != null) value = `pow(${value},${property(enc.exponent)})`; + if (enc.mult != null) value += `*${property(enc.mult)}`; + if (enc.offset != null) value += `+${property(enc.offset)}`; + if (enc.round) value = `round(${value})`; + return value; } -function parseComputedMember() { - expect("["); - const expr = parseExpression(); - expect("]"); - return expr; +const _color = (type, x, y, z)=>`(${type}(${[ + x, + y, + z + ].map(entry$1).join(",")})+'')`; +function color(enc) { + return enc.c ? _color("hcl", enc.h, enc.c, enc.l) : enc.h || enc.s ? _color("hsl", enc.h, enc.s, enc.l) : enc.l || enc.a ? _color("lab", enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color("rgb", enc.r, enc.g, enc.b) : null; } -function parseLeftHandSideExpressionAllowCall() { - var expr, args, property; - expr = parsePrimaryExpression(); - for(;;){ - if (match(".")) { - property = parseNonComputedMember(); - expr = finishMemberExpression(".", expr, property); - } else if (match("(")) { - args = parseArguments(); - expr = finishCallExpression(expr, args); - } else if (match("[")) { - property = parseComputedMember(); - expr = finishMemberExpression("[", expr, property); - } else break; - } - return expr; -} // 11.3 Postfix Expressions -function parsePostfixExpression() { - const expr = parseLeftHandSideExpressionAllowCall(); - if (lookahead.type === TokenPunctuator) { - if (match("++") || match("--")) throw new Error(DISABLED); - } - return expr; -} // 11.4 Unary Operators -function parseUnaryExpression() { - var token, expr; - if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) expr = parsePostfixExpression(); - else if (match("++") || match("--")) throw new Error(DISABLED); - else if (match("+") || match("-") || match("~") || match("!")) { - token = lex(); - expr = parseUnaryExpression(); - expr = finishUnaryExpression(token.value, expr); - } else if (matchKeyword("delete") || matchKeyword("void") || matchKeyword("typeof")) throw new Error(DISABLED); - else expr = parsePostfixExpression(); - return expr; +function gradient(enc) { + // map undefined to null; expression lang does not allow undefined + const args = [ + enc.start, + enc.stop, + enc.count + ].map((_)=>_ == null ? null : (0, _vegaUtil.stringValue)(_)); // trim null inputs from the end + while(args.length && (0, _vegaUtil.peek)(args) == null)args.pop(); + args.unshift(scaleRef(enc.gradient)); + return `gradient(${args.join(",")})`; } -function binaryPrecedence(token) { - let prec = 0; - if (token.type !== TokenPunctuator && token.type !== TokenKeyword) return 0; - switch(token.value){ - case "||": - prec = 1; - break; - case "&&": - prec = 2; - break; - case "|": - prec = 3; - break; - case "^": - prec = 4; - break; - case "&": - prec = 5; - break; - case "==": - case "!=": - case "===": - case "!==": - prec = 6; - break; - case "<": - case ">": - case "<=": - case ">=": - case "instanceof": - case "in": - prec = 7; - break; - case "<<": - case ">>": - case ">>>": - prec = 8; - break; - case "+": - case "-": - prec = 9; - break; - case "*": - case "/": - case "%": - prec = 11; - break; - } - return prec; -} // 11.5 Multiplicative Operators -// 11.6 Additive Operators -// 11.7 Bitwise Shift Operators -// 11.8 Relational Operators -// 11.9 Equality Operators -// 11.10 Binary Bitwise Operators -// 11.11 Binary Logical Operators -function parseBinaryExpression() { - var marker, markers, expr, token, prec, stack, right, operator, left, i; - marker = lookahead; - left = parseUnaryExpression(); - token = lookahead; - prec = binaryPrecedence(token); - if (prec === 0) return left; - token.prec = prec; - lex(); - markers = [ - marker, - lookahead - ]; - right = parseUnaryExpression(); - stack = [ - left, - token, - right - ]; - while((prec = binaryPrecedence(lookahead)) > 0){ - // Reduce: make a binary expression from the three topmost entries. - while(stack.length > 2 && prec <= stack[stack.length - 2].prec){ - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - markers.pop(); - expr = finishBinaryExpression(operator, left, right); - stack.push(expr); - } // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - markers.push(lookahead); - expr = parseUnaryExpression(); - stack.push(expr); - } // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - markers.pop(); - while(i > 1){ - markers.pop(); - expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - } - return expr; -} // 11.12 Conditional Operator -function parseConditionalExpression() { - var expr, consequent, alternate; - expr = parseBinaryExpression(); - if (match("?")) { - lex(); - consequent = parseConditionalExpression(); - expect(":"); - alternate = parseConditionalExpression(); - expr = finishConditionalExpression(expr, consequent, alternate); - } - return expr; -} // 11.14 Comma Operator -function parseExpression() { - const expr = parseConditionalExpression(); - if (match(",")) throw new Error(DISABLED); // no sequence expressions - return expr; +function property(property) { + return (0, _vegaUtil.isObject)(property) ? "(" + entry$1(property) + ")" : property; } -function parser(code) { - source = code; - index = 0; - length = source.length; - lookahead = null; - peek(); - const expr = parseExpression(); - if (lookahead.type !== TokenEOF) throw new Error("Unexpect token after expression."); - return expr; +function field(ref) { + return resolveField((0, _vegaUtil.isObject)(ref) ? ref : { + datum: ref + }); } -var Constants = { - NaN: "NaN", - E: "Math.E", - LN2: "Math.LN2", - LN10: "Math.LN10", - LOG2E: "Math.LOG2E", - LOG10E: "Math.LOG10E", - PI: "Math.PI", - SQRT1_2: "Math.SQRT1_2", - SQRT2: "Math.SQRT2", - MIN_VALUE: "Number.MIN_VALUE", - MAX_VALUE: "Number.MAX_VALUE" -}; -function Functions(codegen) { - function fncall(name, args, cast, type) { - let obj = codegen(args[0]); - if (cast) { - obj = cast + "(" + obj + ")"; - if (cast.lastIndexOf("new ", 0) === 0) obj = "(" + obj + ")"; +function resolveField(ref) { + let object, level, field; + if (ref.signal) { + object = "datum"; + field = ref.signal; + } else if (ref.group || ref.parent) { + level = Math.max(1, ref.level || 1); + object = "item"; + while(level-- > 0)object += ".mark.group"; + if (ref.parent) { + field = ref.parent; + object += ".datum"; + } else field = ref.group; + } else if (ref.datum) { + object = "datum"; + field = ref.datum; + } else (0, _vegaUtil.error)("Invalid field reference: " + (0, _vegaUtil.stringValue)(ref)); + if (!ref.signal) field = (0, _vegaUtil.isString)(field) ? (0, _vegaUtil.splitAccessPath)(field).map((0, _vegaUtil.stringValue)).join("][") : resolveField(field); + return object + "[" + field + "]"; +} +function scale(enc, value) { + const scale = scaleRef(enc.scale); + if (enc.range != null) // pull value from scale range + value = `lerp(_range(${scale}), ${+enc.range})`; + else { + // run value through scale and/or pull scale bandwidth + if (value !== undefined) value = `_scale(${scale}, ${value})`; + if (enc.band) { + value = (value ? value + "+" : "") + `_bandwidth(${scale})` + (+enc.band === 1 ? "" : "*" + property(enc.band)); + if (enc.extra) // include logic to handle extraneous elements + value = `(datum.extra ? _scale(${scale}, datum.extra.value) : ${value})`; } - return obj + "." + name + (type < 0 ? "" : type === 0 ? "()" : "(" + args.slice(1).map(codegen).join(",") + ")"); - } - function fn(name, cast, type) { - return (args)=>fncall(name, args, cast, type); + if (value == null) value = "0"; } - const DATE = "new Date", STRING = "String", REGEXP = "RegExp"; + return value; +} +function rule(enc) { + let code = ""; + enc.forEach((rule)=>{ + const value = entry$1(rule); + code += rule.test ? `(${rule.test})?${value}:` : value; + }); // if no else clause, terminate with null (#1366) + if ((0, _vegaUtil.peek)(code) === ":") code += "null"; + return code; +} +function parseEncode(encode, type, role, style, scope, params) { + const enc = {}; + params = params || {}; + params.encoders = { + $encode: enc + }; + encode = applyDefaults(encode, type, role, style, scope.config); + for(const key in encode)enc[key] = parseBlock(encode[key], type, params, scope); + return params; +} +function parseBlock(block, marktype, params, scope) { + const channels = {}, fields = {}; + for(const name in block)if (block[name] != null) // skip any null entries + channels[name] = parse$1(expr(block[name]), scope, params, fields); return { - // MATH functions - isNaN: "Number.isNaN", - isFinite: "Number.isFinite", - abs: "Math.abs", - acos: "Math.acos", - asin: "Math.asin", - atan: "Math.atan", - atan2: "Math.atan2", - ceil: "Math.ceil", - cos: "Math.cos", - exp: "Math.exp", - floor: "Math.floor", - log: "Math.log", - max: "Math.max", - min: "Math.min", - pow: "Math.pow", - random: "Math.random", - round: "Math.round", - sin: "Math.sin", - sqrt: "Math.sqrt", - tan: "Math.tan", - clamp: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to clamp function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to clamp function."); - const a = args.map(codegen); - return "Math.max(" + a[1] + ", Math.min(" + a[2] + "," + a[0] + "))"; + $expr: { + marktype, + channels }, - // DATE functions - now: "Date.now", - utc: "Date.UTC", - datetime: DATE, - date: fn("getDate", DATE, 0), - day: fn("getDay", DATE, 0), - year: fn("getFullYear", DATE, 0), - month: fn("getMonth", DATE, 0), - hours: fn("getHours", DATE, 0), - minutes: fn("getMinutes", DATE, 0), - seconds: fn("getSeconds", DATE, 0), - milliseconds: fn("getMilliseconds", DATE, 0), - time: fn("getTime", DATE, 0), - timezoneoffset: fn("getTimezoneOffset", DATE, 0), - utcdate: fn("getUTCDate", DATE, 0), - utcday: fn("getUTCDay", DATE, 0), - utcyear: fn("getUTCFullYear", DATE, 0), - utcmonth: fn("getUTCMonth", DATE, 0), - utchours: fn("getUTCHours", DATE, 0), - utcminutes: fn("getUTCMinutes", DATE, 0), - utcseconds: fn("getUTCSeconds", DATE, 0), - utcmilliseconds: fn("getUTCMilliseconds", DATE, 0), - // sequence functions - length: fn("length", null, -1), - // STRING functions - parseFloat: "parseFloat", - parseInt: "parseInt", - upper: fn("toUpperCase", STRING, 0), - lower: fn("toLowerCase", STRING, 0), - substring: fn("substring", STRING), - split: fn("split", STRING), - trim: fn("trim", STRING, 0), - // REGEXP functions - regexp: REGEXP, - test: fn("test", REGEXP), - // Control Flow functions - if: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to if function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to if function."); - const a = args.map(codegen); - return "(" + a[0] + "?" + a[1] + ":" + a[2] + ")"; - } + $fields: Object.keys(fields), + $output: Object.keys(block) }; } -function stripQuotes(s) { - const n = s && s.length - 1; - return n && (s[0] === '"' && s[n] === '"' || s[0] === "'" && s[n] === "'") ? s.slice(1, -1) : s; +function expr(enc) { + return (0, _vegaUtil.isArray)(enc) ? rule(enc) : entry$1(enc); } -function codegen(opt) { - opt = opt || {}; - const allowed = opt.allowed ? (0, _vegaUtil.toSet)(opt.allowed) : {}, forbidden = opt.forbidden ? (0, _vegaUtil.toSet)(opt.forbidden) : {}, constants = opt.constants || Constants, functions = (opt.functions || Functions)(visit), globalvar = opt.globalvar, fieldvar = opt.fieldvar, outputGlobal = (0, _vegaUtil.isFunction)(globalvar) ? globalvar : (id)=>`${globalvar}["${id}"]`; - let globals = {}, fields = {}, memberDepth = 0; - function visit(ast) { - if ((0, _vegaUtil.isString)(ast)) return ast; - const generator = Generators[ast.type]; - if (generator == null) (0, _vegaUtil.error)("Unsupported type: " + ast.type); - return generator(ast); - } - const Generators = { - Literal: (n)=>n.raw, - Identifier: (n)=>{ - const id = n.name; - if (memberDepth > 0) return id; - else if ((0, _vegaUtil.hasOwnProperty)(forbidden, id)) return (0, _vegaUtil.error)("Illegal identifier: " + id); - else if ((0, _vegaUtil.hasOwnProperty)(constants, id)) return constants[id]; - else if ((0, _vegaUtil.hasOwnProperty)(allowed, id)) return id; - else { - globals[id] = 1; - return outputGlobal(id); - } - }, - MemberExpression: (n)=>{ - const d = !n.computed, o = visit(n.object); - if (d) memberDepth += 1; - const p = visit(n.property); - if (o === fieldvar) // strip quotes to sanitize field name (#1653) - fields[stripQuotes(p)] = 1; - if (d) memberDepth -= 1; - return o + (d ? "." + p : "[" + p + "]"); - }, - CallExpression: (n)=>{ - if (n.callee.type !== "Identifier") (0, _vegaUtil.error)("Illegal callee type: " + n.callee.type); - const callee = n.callee.name, args = n.arguments, fn = (0, _vegaUtil.hasOwnProperty)(functions, callee) && functions[callee]; - if (!fn) (0, _vegaUtil.error)("Unrecognized function: " + callee); - return (0, _vegaUtil.isFunction)(fn) ? fn(args) : fn + "(" + args.map(visit).join(",") + ")"; - }, - ArrayExpression: (n)=>"[" + n.elements.map(visit).join(",") + "]", - BinaryExpression: (n)=>"(" + visit(n.left) + " " + n.operator + " " + visit(n.right) + ")", - UnaryExpression: (n)=>"(" + n.operator + visit(n.argument) + ")", - ConditionalExpression: (n)=>"(" + visit(n.test) + "?" + visit(n.consequent) + ":" + visit(n.alternate) + ")", - LogicalExpression: (n)=>"(" + visit(n.left) + n.operator + visit(n.right) + ")", - ObjectExpression: (n)=>"{" + n.properties.map(visit).join(",") + "}", - Property: (n)=>{ - memberDepth += 1; - const k = visit(n.key); - memberDepth -= 1; - return k + ":" + visit(n.value); - } - }; - function codegen(ast) { - const result = { - code: visit(ast), - globals: Object.keys(globals), - fields: Object.keys(fields) - }; - globals = {}; - fields = {}; - return result; - } - codegen.functions = functions; - codegen.constants = constants; - return codegen; +function parse$1(code, scope, params, fields) { + const expr = (0, _vegaFunctions.parseExpression)(code, scope); + expr.$fields.forEach((name)=>fields[name] = 1); + (0, _vegaUtil.extend)(params, expr.$params); + return expr.$expr; } - -},{"vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"k7ppL":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "context", ()=>context); -var _vegaUtil = require("vega-util"); -var _vegaDataflow = require("vega-dataflow"); -/** - * Parse a serialized dataflow specification. - */ function parse(spec) { - const ctx = this, operators = spec.operators || []; // parse background - if (spec.background) ctx.background = spec.background; - // parse event configuration - if (spec.eventConfig) ctx.eventConfig = spec.eventConfig; - // parse locale configuration - if (spec.locale) ctx.locale = spec.locale; - // parse operators - operators.forEach((entry)=>ctx.parseOperator(entry)); // parse operator parameters - operators.forEach((entry)=>ctx.parseOperatorParameters(entry)); // parse streams - (spec.streams || []).forEach((entry)=>ctx.parseStream(entry)); // parse updates - (spec.updates || []).forEach((entry)=>ctx.parseUpdate(entry)); - return ctx.resolve(); +const OUTER = "outer", OUTER_INVALID = [ + "value", + "update", + "init", + "react", + "bind" +]; +function outerError(prefix, name) { + (0, _vegaUtil.error)(prefix + ' for "outer" push: ' + (0, _vegaUtil.stringValue)(name)); } -const Skip = (0, _vegaUtil.toSet)([ - "rule" -]), Swap = (0, _vegaUtil.toSet)([ - "group", - "image", - "rect" -]); -function adjustSpatial(encode, marktype) { - let code = ""; - if (Skip[marktype]) return code; - if (encode.x2) { - if (encode.x) { - if (Swap[marktype]) code += "if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"; - code += "o.width=o.x2-o.x;"; - } else code += "o.x=o.x2-(o.width||0);"; - } - if (encode.xc) code += "o.x=o.xc-(o.width||0)/2;"; - if (encode.y2) { - if (encode.y) { - if (Swap[marktype]) code += "if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"; - code += "o.height=o.y2-o.y;"; - } else code += "o.y=o.y2-(o.height||0);"; +function parseSignal(signal, scope) { + const name = signal.name; + if (signal.push === OUTER) { + // signal must already be defined, raise error if not + if (!scope.signals[name]) outerError("No prior signal definition", name); // signal push must not use properties reserved for standard definition + OUTER_INVALID.forEach((prop)=>{ + if (signal[prop] !== undefined) outerError("Invalid property ", prop); + }); + } else { + // define a new signal in the current scope + const op = scope.addSignal(name, signal.value); + if (signal.react === false) op.react = false; + if (signal.bind) scope.addBinding(name, signal.bind); } - if (encode.yc) code += "o.y=o.yc-(o.height||0)/2;"; - return code; } -function canonicalType(type) { - return (type + "").toLowerCase(); +function Entry(type, value, params, parent) { + this.id = -1; + this.type = type; + this.value = value; + this.params = params; + if (parent) this.parent = parent; } -function isOperator(type) { - return canonicalType(type) === "operator"; +function entry(type, value, params, parent) { + return new Entry(type, value, params, parent); } -function isCollect(type) { - return canonicalType(type) === "collect"; +function operator(value, params) { + return entry("operator", value, params); +} // ----- +function ref(op) { + const ref = { + $ref: op.id + }; // if operator not yet registered, cache ref to resolve later + if (op.id < 0) (op.refs = op.refs || []).push(ref); + return ref; } -function expression(ctx, args, code) { - // wrap code in return statement if expression does not terminate - if (code[code.length - 1] !== ";") code = "return(" + code + ");"; - const fn = Function(...args.concat(code)); - return ctx && ctx.functions ? fn.bind(ctx.functions) : fn; -} // generate code for comparing a single field -function _compare(u, v, lt, gt) { - return "((u = ".concat(u, ") < (v = ").concat(v, ") || u == null) && v != null ? ").concat(lt, "\n : (u > v || v == null) && u != null ? ").concat(gt, "\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ").concat(lt, "\n : v !== v && u === u ? ").concat(gt, " : "); +function fieldRef$1(field, name) { + return name ? { + $field: field, + $name: name + } : { + $field: field + }; } -var expressionCodegen = { - /** - * Parse an expression used to update an operator value. - */ operator: (ctx, expr)=>expression(ctx, [ - "_" - ], expr.code), - /** - * Parse an expression provided as an operator parameter value. - */ parameter: (ctx, expr)=>expression(ctx, [ - "datum", - "_" - ], expr.code), - /** - * Parse an expression applied to an event stream. - */ event: (ctx, expr)=>expression(ctx, [ - "event" - ], expr.code), - /** - * Parse an expression used to handle an event-driven operator update. - */ handler: (ctx, expr)=>{ - const code = "var datum=event.item&&event.item.datum;return ".concat(expr.code, ";"); - return expression(ctx, [ - "_", - "event" - ], code); - }, - /** - * Parse an expression that performs visual encoding. - */ encode: (ctx, encode)=>{ - const { marktype , channels } = encode; - let code = "var o=item,datum=o.datum,m=0,$;"; - for(const name in channels){ - const o = "o[" + (0, _vegaUtil.stringValue)(name) + "]"; - code += "$=".concat(channels[name].code, ";if(").concat(o, "!==$)").concat(o, "=$,m=1;"); - } - code += adjustSpatial(channels, marktype); - code += "return m;"; - return expression(ctx, [ - "item", - "_" - ], code); - }, - /** - * Optimized code generators for access and comparison. - */ codegen: { - get (path) { - const ref = "[".concat(path.map((0, _vegaUtil.stringValue)).join("]["), "]"); - const get = Function("_", "return _".concat(ref, ";")); - get.path = ref; - return get; - }, - comparator (fields, orders) { - let t; - const map = (f, i)=>{ - const o = orders[i]; - let u, v; - if (f.path) { - u = "a".concat(f.path); - v = "b".concat(f.path); - } else { - (t = t || {})["f" + i] = f; - u = "this.f".concat(i, "(a)"); - v = "this.f".concat(i, "(b)"); - } - return _compare(u, v, -o, o); - }; - const fn = Function("a", "b", "var u, v; return " + fields.map(map).join("") + "0;"); - return t ? fn.bind(t) : fn; - } - } -}; -/** - * Parse a dataflow operator. - */ function parseOperator(spec) { - const ctx = this; - if (isOperator(spec.type) || !spec.type) ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null); - else ctx.transform(spec, spec.type); +const keyFieldRef = fieldRef$1("key"); +function compareRef(fields, orders) { + return { + $compare: fields, + $order: orders + }; } -/** - * Parse and assign operator parameters. - */ function parseOperatorParameters(spec) { - const ctx = this; - if (spec.params) { - const op = ctx.get(spec.id); - if (!op) (0, _vegaUtil.error)("Invalid operator id: " + spec.id); - ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly)); - } +function keyRef(fields, flat) { + const ref = { + $key: fields + }; + if (flat) ref.$flat = true; + return ref; +} // ----- +const Ascending = "ascending"; +const Descending = "descending"; +function sortKey(sort) { + return !(0, _vegaUtil.isObject)(sort) ? "" : (sort.order === Descending ? "-" : "+") + aggrField(sort.op, sort.field); } -/** - * Parse a set of operator parameters. - */ function parseParameters(spec, params) { - params = params || {}; - const ctx = this; - for(const key in spec){ - const value = spec[key]; - params[key] = (0, _vegaUtil.isArray)(value) ? value.map((v)=>parseParameter(v, ctx, params)) : parseParameter(value, ctx, params); - } - return params; +function aggrField(op, field) { + return (op && op.signal ? "$" + op.signal : op || "") + (op && field ? "_" : "") + (field && field.signal ? "$" + field.signal : field || ""); +} // ----- +const Scope$1 = "scope"; +const View = "view"; +function isSignal(_) { + return _ && _.signal; } -/** - * Parse a single parameter. - */ function parseParameter(spec, ctx, params) { - if (!spec || !(0, _vegaUtil.isObject)(spec)) return spec; - for(let i = 0, n = PARSERS.length, p; i < n; ++i){ - p = PARSERS[i]; - if ((0, _vegaUtil.hasOwnProperty)(spec, p.key)) return p.parse(spec, ctx, params); - } - return spec; +function isExpr$1(_) { + return _ && _.expr; } -/** Reference parsers. */ var PARSERS = [ - { - key: "$ref", - parse: getOperator - }, - { - key: "$key", - parse: getKey - }, - { - key: "$expr", - parse: getExpression - }, - { - key: "$field", - parse: getField - }, - { - key: "$encode", - parse: getEncode - }, - { - key: "$compare", - parse: getCompare - }, - { - key: "$context", - parse: getContext - }, - { - key: "$subflow", - parse: getSubflow - }, - { - key: "$tupleid", - parse: getTupleId +function hasSignal(_) { + if (isSignal(_)) return true; + if ((0, _vegaUtil.isObject)(_)) for(const key in _){ + if (hasSignal(_[key])) return true; } -]; -/** - * Resolve an operator reference. - */ function getOperator(_, ctx) { - return ctx.get(_.$ref) || (0, _vegaUtil.error)("Operator not defined: " + _.$ref); + return false; } -/** - * Resolve an expression reference. - */ function getExpression(_, ctx, params) { - if (_.$params) // parse expression parameters - ctx.parseParameters(_.$params, params); - const k = "e:" + _.$expr.code + "_" + _.$name; - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.accessor)(ctx.parameterExpression(_.$expr), _.$fields, _.$name)); +function value(specValue, defaultValue) { + return specValue != null ? specValue : defaultValue; } -/** - * Resolve a key accessor reference. - */ function getKey(_, ctx) { - const k = "k:" + _.$key + "_" + !!_.$flat; - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.key)(_.$key, _.$flat, ctx.expr.codegen)); +function deref(v) { + return v && v.signal || v; } -/** - * Resolve a field accessor reference. - */ function getField(_, ctx) { - if (!_.$field) return null; - const k = "f:" + _.$field + "_" + _.$name; - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.field)(_.$field, _.$name, ctx.expr.codegen)); +const Timer = "timer"; +function parseStream(stream, scope) { + const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : (0, _vegaUtil.error)("Invalid stream specification: " + (0, _vegaUtil.stringValue)(stream)); + return method(stream, scope); } -/** - * Resolve a comparator function reference. - */ function getCompare(_, ctx) { - // As of Vega 5.5.3, $tupleid sort is no longer used. - // Keep here for now for backwards compatibility. - const k = "c:" + _.$compare + "_" + _.$order, c = (0, _vegaUtil.array)(_.$compare).map((_)=>_ && _.$tupleid ? (0, _vegaDataflow.tupleid) : _); - return ctx.fn[k] || (ctx.fn[k] = (0, _vegaUtil.compare)(c, _.$order, ctx.expr.codegen)); +function eventSource(source) { + return source === Scope$1 ? View : source || View; } -/** - * Resolve an encode operator reference. - */ function getEncode(_, ctx) { - const spec = _.$encode, encode = {}; - for(const name in spec){ - const enc = spec[name]; - encode[name] = (0, _vegaUtil.accessor)(ctx.encodeExpression(enc.$expr), enc.$fields); - encode[name].output = enc.$output; +function mergeStream(stream, scope) { + const list = stream.merge.map((s)=>parseStream(s, scope)), entry = streamParameters({ + merge: list + }, stream, scope); + return scope.addStream(entry).id; +} +function nestedStream(stream, scope) { + const id = parseStream(stream.stream, scope), entry = streamParameters({ + stream: id + }, stream, scope); + return scope.addStream(entry).id; +} +function eventStream(stream, scope) { + let id; + if (stream.type === Timer) { + id = scope.event(Timer, stream.throttle); + stream = { + between: stream.between, + filter: stream.filter + }; + } else id = scope.event(eventSource(stream.source), stream.type); + const entry = streamParameters({ + stream: id + }, stream, scope); + return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id; +} +function streamParameters(entry, stream, scope) { + let param = stream.between; + if (param) { + if (param.length !== 2) (0, _vegaUtil.error)('Stream "between" parameter must have 2 entries: ' + (0, _vegaUtil.stringValue)(stream)); + entry.between = [ + parseStream(param[0], scope), + parseStream(param[1], scope) + ]; } - return encode; + param = stream.filter ? [].concat(stream.filter) : []; + if (stream.marktype || stream.markname || stream.markrole) // add filter for mark type, name and/or role + param.push(filterMark(stream.marktype, stream.markname, stream.markrole)); + if (stream.source === Scope$1) // add filter to limit events from sub-scope only + param.push("inScope(event.item)"); + if (param.length) entry.filter = (0, _vegaFunctions.parseExpression)("(" + param.join(")&&(") + ")", scope).$expr; + if ((param = stream.throttle) != null) entry.throttle = +param; + if ((param = stream.debounce) != null) entry.debounce = +param; + if (stream.consume) entry.consume = true; + return entry; } -/** - * Resolve a context reference. - */ function getContext(_, ctx) { - return ctx; +function filterMark(type, name, role) { + const item = "event.item"; + return item + (type && type !== "*" ? "&&" + item + ".mark.marktype==='" + type + "'" : "") + (role ? "&&" + item + ".mark.role==='" + role + "'" : "") + (name ? "&&" + item + ".mark.name==='" + name + "'" : ""); } -/** - * Resolve a recursive subflow specification. - */ function getSubflow(_, ctx) { - const spec = _.$subflow; - return function(dataflow, key, parent) { - const subctx = ctx.fork().parse(spec), op = subctx.get(spec.operators[0].id), p = subctx.signals.parent; - if (p) p.set(parent); - op.detachSubflow = ()=>ctx.detach(subctx); - return op; +const OP_VALUE_EXPR = { + code: "_.$value", + ast: { + type: "Identifier", + value: "value" + } +}; +function parseUpdate(spec, scope, target) { + const encode = spec.encode, entry = { + target: target + }; + let events = spec.events, update = spec.update, sources = []; + if (!events) (0, _vegaUtil.error)("Signal update missing events specification."); + // interpret as an event selector string + if ((0, _vegaUtil.isString)(events)) events = (0, _vegaEventSelector.parseSelector)(events, scope.isSubscope() ? Scope$1 : View); + // separate event streams from signal updates + events = (0, _vegaUtil.array)(events).filter((s)=>s.signal || s.scale ? (sources.push(s), 0) : 1); // merge internal operator listeners + if (sources.length > 1) sources = [ + mergeSources(sources) + ]; + // merge event streams, include as source + if (events.length) sources.push(events.length > 1 ? { + merge: events + } : events[0]); + if (encode != null) { + if (update) (0, _vegaUtil.error)("Signal encode and update are mutually exclusive."); + update = "encode(item()," + (0, _vegaUtil.stringValue)(encode) + ")"; + } // resolve update value + entry.update = (0, _vegaUtil.isString)(update) ? (0, _vegaFunctions.parseExpression)(update, scope) : update.expr != null ? (0, _vegaFunctions.parseExpression)(update.expr, scope) : update.value != null ? update.value : update.signal != null ? { + $expr: OP_VALUE_EXPR, + $params: { + $value: scope.signalRef(update.signal) + } + } : (0, _vegaUtil.error)("Invalid signal update specification."); + if (spec.force) entry.options = { + force: true }; + sources.forEach((source)=>scope.addUpdate((0, _vegaUtil.extend)(streamSource(source, scope), entry))); } -/** - * Resolve a tuple id reference. - */ function getTupleId() { - return 0, _vegaDataflow.tupleid; +function streamSource(stream, scope) { + return { + source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope) + }; } -/** - * Parse an event stream specification. - */ function parseStream(spec) { - var ctx = this, filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined, stream = spec.stream != null ? ctx.get(spec.stream) : undefined, args; - if (spec.source) stream = ctx.events(spec.source, spec.type, filter); - else if (spec.merge) { - args = spec.merge.map((_)=>ctx.get(_)); - stream = args[0].merge.apply(args[0], args.slice(1)); - } - if (spec.between) { - args = spec.between.map((_)=>ctx.get(_)); - stream = stream.between(args[0], args[1]); - } - if (spec.filter) stream = stream.filter(filter); - if (spec.throttle != null) stream = stream.throttle(+spec.throttle); - if (spec.debounce != null) stream = stream.debounce(+spec.debounce); - if (stream == null) (0, _vegaUtil.error)("Invalid stream definition: " + JSON.stringify(spec)); - if (spec.consume) stream.consume(true); - ctx.stream(spec, stream); +function mergeSources(sources) { + return { + signal: "[" + sources.map((s)=>s.scale ? 'scale("' + s.scale + '")' : s.signal) + "]" + }; } -/** - * Parse an event-driven operator update. - */ function parseUpdate(spec) { - var ctx = this, srcid = (0, _vegaUtil.isObject)(srcid = spec.source) ? srcid.$ref : srcid, source = ctx.get(srcid), target = null, update = spec.update, params = undefined; - if (!source) (0, _vegaUtil.error)("Source not defined: " + spec.source); - target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target); - if (update && update.$expr) { - if (update.$params) params = ctx.parseParameters(update.$params); - update = ctx.handlerExpression(update.$expr); +function parseSignalUpdates(signal, scope) { + const op = scope.getSignal(signal.name); + let expr = signal.update; + if (signal.init) { + if (expr) (0, _vegaUtil.error)("Signals can not include both init and update expressions."); + else { + expr = signal.init; + op.initonly = true; + } } - ctx.update(spec, source, target, update, params); + if (expr) { + expr = (0, _vegaFunctions.parseExpression)(expr, scope); + op.update = expr.$expr; + op.params = expr.$params; + } + if (signal.on) signal.on.forEach((_)=>parseUpdate(_, scope, op.id)); } -const SKIP = { - skip: true +const transform = (name)=>(params, value, parent)=>entry(name, value, params || undefined, parent); +const Aggregate = transform("aggregate"); +const AxisTicks = transform("axisticks"); +const Bound = transform("bound"); +const Collect = transform("collect"); +const Compare = transform("compare"); +const DataJoin = transform("datajoin"); +const Encode = transform("encode"); +const Expression = transform("expression"); +const Facet = transform("facet"); +const Field = transform("field"); +const Key = transform("key"); +const LegendEntries = transform("legendentries"); +const Load = transform("load"); +const Mark = transform("mark"); +const MultiExtent = transform("multiextent"); +const MultiValues = transform("multivalues"); +const Overlap = transform("overlap"); +const Params = transform("params"); +const PreFacet = transform("prefacet"); +const Projection = transform("projection"); +const Proxy = transform("proxy"); +const Relay = transform("relay"); +const Render = transform("render"); +const Scale = transform("scale"); +const Sieve = transform("sieve"); +const SortItems = transform("sortitems"); +const ViewLayout = transform("viewlayout"); +const Values = transform("values"); +let FIELD_REF_ID = 0; +const MULTIDOMAIN_SORT_OPS = { + min: "min", + max: "max", + count: "sum" }; -function getState(options) { - var ctx = this, state = {}; - if (options.signals) { - var signals = state.signals = {}; - Object.keys(ctx.signals).forEach((key)=>{ - const op = ctx.signals[key]; - if (options.signals(key, op)) signals[key] = op.value; - }); - } - if (options.data) { - var data = state.data = {}; - Object.keys(ctx.data).forEach((key)=>{ - const dataset = ctx.data[key]; - if (options.data(key, dataset)) data[key] = dataset.input.value; - }); +function initScale(spec, scope) { + const type = spec.type || "linear"; + if (!(0, _vegaScale.isValidScaleType)(type)) (0, _vegaUtil.error)("Unrecognized scale type: " + (0, _vegaUtil.stringValue)(type)); + scope.addScale(spec.name, { + type, + domain: undefined + }); +} +function parseScale(spec, scope) { + const params = scope.getScale(spec.name).params; + let key; + params.domain = parseScaleDomain(spec.domain, spec, scope); + if (spec.range != null) params.range = parseScaleRange(spec, scope, params); + if (spec.interpolate != null) parseScaleInterpolate(spec.interpolate, params); + if (spec.nice != null) params.nice = parseScaleNice(spec.nice); + if (spec.bins != null) params.bins = parseScaleBins(spec.bins, scope); + for(key in spec){ + if ((0, _vegaUtil.hasOwnProperty)(params, key) || key === "name") continue; + params[key] = parseLiteral(spec[key], scope); } - if (ctx.subcontext && options.recurse !== false) state.subcontext = ctx.subcontext.map((ctx)=>ctx.getState(options)); - return state; } -function setState(state) { - var ctx = this, df = ctx.dataflow, data = state.data, signals = state.signals; - Object.keys(signals || {}).forEach((key)=>{ - df.update(ctx.signals[key], signals[key], SKIP); - }); - Object.keys(data || {}).forEach((key)=>{ - df.pulse(ctx.data[key].input, df.changeset().remove((0, _vegaUtil.truthy)).insert(data[key])); - }); - (state.subcontext || []).forEach((substate, i)=>{ - const subctx = ctx.subcontext[i]; - if (subctx) subctx.setState(substate); - }); +function parseLiteral(v, scope) { + return !(0, _vegaUtil.isObject)(v) ? v : v.signal ? scope.signalRef(v.signal) : (0, _vegaUtil.error)("Unsupported object: " + (0, _vegaUtil.stringValue)(v)); } -/** - * Context objects store the current parse state. - * Enables lookup of parsed operators, event streams, accessors, etc. - * Provides a 'fork' method for creating child contexts for subflows. - */ function context(df, transforms, functions, expr) { - return new Context(df, transforms, functions, expr); +function parseArray(v, scope) { + return v.signal ? scope.signalRef(v.signal) : v.map((v)=>parseLiteral(v, scope)); } -function Context(df, transforms, functions, expr) { - this.dataflow = df; - this.transforms = transforms; - this.events = df.events.bind(df); - this.expr = expr || expressionCodegen, this.signals = {}; - this.scales = {}; - this.nodes = {}; - this.data = {}; - this.fn = {}; - if (functions) { - this.functions = Object.create(functions); - this.functions.context = this; +function dataLookupError(name) { + (0, _vegaUtil.error)("Can not find data set: " + (0, _vegaUtil.stringValue)(name)); +} // -- SCALE DOMAIN ---- +function parseScaleDomain(domain, spec, scope) { + if (!domain) { + if (spec.domainMin != null || spec.domainMax != null) (0, _vegaUtil.error)("No scale domain defined for domainMin/domainMax to override."); + return; // default domain } + return domain.signal ? scope.signalRef(domain.signal) : ((0, _vegaUtil.isArray)(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope); } -function Subcontext(ctx) { - this.dataflow = ctx.dataflow; - this.transforms = ctx.transforms; - this.events = ctx.events; - this.expr = ctx.expr; - this.signals = Object.create(ctx.signals); - this.scales = Object.create(ctx.scales); - this.nodes = Object.create(ctx.nodes); - this.data = Object.create(ctx.data); - this.fn = Object.create(ctx.fn); - if (ctx.functions) { - this.functions = Object.create(ctx.functions); - this.functions.context = this; - } +function explicitDomain(domain, spec, scope) { + return domain.map((v)=>parseLiteral(v, scope)); } -Context.prototype = Subcontext.prototype = { - fork () { - const ctx = new Subcontext(this); - (this.subcontext || (this.subcontext = [])).push(ctx); - return ctx; - }, - detach (ctx) { - this.subcontext = this.subcontext.filter((c)=>c !== ctx); // disconnect all nodes in the subcontext - // wipe out targets first for better efficiency - const keys = Object.keys(ctx.nodes); - for (const key of keys)ctx.nodes[key]._targets = null; - for (const key1 of keys)ctx.nodes[key1].detach(); - ctx.nodes = null; - }, - get (id) { - return this.nodes[id]; - }, - set (id, node) { - return this.nodes[id] = node; - }, - add (spec, op) { - const ctx = this, df = ctx.dataflow, data = spec.value; - ctx.set(spec.id, op); - if (isCollect(spec.type) && data) { - if (data.$ingest) df.ingest(op, data.$ingest, data.$format); - else if (data.$request) df.preload(op, data.$request, data.$format); - else df.pulse(op, df.changeset().insert(data)); - } - if (spec.root) ctx.root = op; - if (spec.parent) { - let p = ctx.get(spec.parent.$ref); - if (p) { - df.connect(p, [ - op - ]); - op.targets().add(p); - } else (ctx.unresolved = ctx.unresolved || []).push(()=>{ - p = ctx.get(spec.parent.$ref); - df.connect(p, [ - op - ]); - op.targets().add(p); - }); - } - if (spec.signal) ctx.signals[spec.signal] = op; - if (spec.scale) ctx.scales[spec.scale] = op; - if (spec.data) for(const name in spec.data){ - const data1 = ctx.data[name] || (ctx.data[name] = {}); - spec.data[name].forEach((role)=>data1[role] = op); - } - }, - resolve () { - (this.unresolved || []).forEach((fn)=>fn()); - delete this.unresolved; - return this; - }, - operator (spec, update) { - this.add(spec, this.dataflow.add(spec.value, update)); - }, - transform (spec, type) { - this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)])); - }, - stream (spec, stream) { - this.set(spec.id, stream); - }, - update (spec, stream, target, update, params) { - this.dataflow.on(stream, target, update, params, spec.options); - }, - // expression parsing - operatorExpression (expr) { - return this.expr.operator(this, expr); - }, - parameterExpression (expr) { - return this.expr.parameter(this, expr); - }, - eventExpression (expr) { - return this.expr.event(this, expr); - }, - handlerExpression (expr) { - return this.expr.handler(this, expr); - }, - encodeExpression (encode) { - return this.expr.encode(this, encode); - }, - // parse methods - parse, - parseOperator, - parseOperatorParameters, - parseParameters, - parseStream, - parseUpdate, - // state methods - getState, - setState -}; - -},{"vega-util":"bApja","vega-dataflow":"3NitK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"hsy9Z":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "AxisDomainRole", ()=>AxisDomainRole); -parcelHelpers.export(exports, "AxisGridRole", ()=>AxisGridRole); -parcelHelpers.export(exports, "AxisLabelRole", ()=>AxisLabelRole); -parcelHelpers.export(exports, "AxisRole", ()=>AxisRole); -parcelHelpers.export(exports, "AxisTickRole", ()=>AxisTickRole); -parcelHelpers.export(exports, "AxisTitleRole", ()=>AxisTitleRole); -parcelHelpers.export(exports, "DataScope", ()=>DataScope); -parcelHelpers.export(exports, "FrameRole", ()=>FrameRole); -parcelHelpers.export(exports, "LegendEntryRole", ()=>LegendEntryRole); -parcelHelpers.export(exports, "LegendLabelRole", ()=>LegendLabelRole); -parcelHelpers.export(exports, "LegendRole", ()=>LegendRole); -parcelHelpers.export(exports, "LegendSymbolRole", ()=>LegendSymbolRole); -parcelHelpers.export(exports, "LegendTitleRole", ()=>LegendTitleRole); -parcelHelpers.export(exports, "MarkRole", ()=>MarkRole); -parcelHelpers.export(exports, "Scope", ()=>Scope); -parcelHelpers.export(exports, "ScopeRole", ()=>ScopeRole); -parcelHelpers.export(exports, "config", ()=>defaults); -parcelHelpers.export(exports, "parse", ()=>parse); -parcelHelpers.export(exports, "signal", ()=>parseSignal); -parcelHelpers.export(exports, "signalUpdates", ()=>parseSignalUpdates); -parcelHelpers.export(exports, "stream", ()=>parseStream); -var _vegaUtil = require("vega-util"); -var _vegaFunctions = require("vega-functions"); -var _vegaEventSelector = require("vega-event-selector"); -var _vegaScale = require("vega-scale"); -var _vegaDataflow = require("vega-dataflow"); -function parseAutosize(spec) { - return (0, _vegaUtil.isObject)(spec) ? spec : { - type: spec || "pad" - }; +function singularDomain(domain, spec, scope) { + const data = scope.getData(domain.data); + if (!data) dataLookupError(domain.data); + return (0, _vegaScale.isDiscrete)(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : (0, _vegaScale.isQuantile)(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field); } -const number = (_)=>+_ || 0; -const paddingObject = (_)=>({ - top: _, - bottom: _, - left: _, - right: _ - }); -function parsePadding(spec) { - return !(0, _vegaUtil.isObject)(spec) ? paddingObject(number(spec)) : spec.signal ? spec : { - top: number(spec.top), - bottom: number(spec.bottom), - left: number(spec.left), - right: number(spec.right) - }; +function multipleDomain(domain, spec, scope) { + const data = domain.data, fields = domain.fields.reduce((dom, d)=>{ + d = (0, _vegaUtil.isString)(d) ? { + data: data, + field: d + } : (0, _vegaUtil.isArray)(d) || d.signal ? fieldRef(d, scope) : d; + dom.push(d); + return dom; + }, []); + return ((0, _vegaScale.isDiscrete)(spec.type) ? ordinalMultipleDomain : (0, _vegaScale.isQuantile)(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields); } -const encoder = (_)=>(0, _vegaUtil.isObject)(_) && !(0, _vegaUtil.isArray)(_) ? (0, _vegaUtil.extend)({}, _) : { - value: _ +function fieldRef(data, scope) { + const name = "_:vega:_" + FIELD_REF_ID++, coll = Collect({}); + if ((0, _vegaUtil.isArray)(data)) coll.value = { + $ingest: data }; -function addEncode(object, name, value, set) { - if (value != null) { - const isEncoder = (0, _vegaUtil.isObject)(value) && !(0, _vegaUtil.isArray)(value) || (0, _vegaUtil.isArray)(value) && value.length && (0, _vegaUtil.isObject)(value[0]); // Always assign signal to update, even if the signal is from the enter block - if (isEncoder) object.update[name] = value; - else object[set || "enter"][name] = { - value: value - }; - return 1; - } else return 0; -} -function addEncoders(object, enter, update) { - for(const name in enter)addEncode(object, name, enter[name]); - for(const name1 in update)addEncode(object, name1, update[name1], "update"); -} -function extendEncode(encode, extra, skip) { - for(const name in extra){ - if (skip && (0, _vegaUtil.hasOwnProperty)(skip, name)) continue; - encode[name] = (0, _vegaUtil.extend)(encode[name] || {}, extra[name]); + else if (data.signal) { + const code = "setdata(" + (0, _vegaUtil.stringValue)(name) + "," + data.signal + ")"; + coll.params.input = scope.signalRef(code); } - return encode; + scope.addDataPipeline(name, [ + coll, + Sieve({}) + ]); + return { + data: name, + field: "data" + }; } -function has(key, encode) { - return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]); +function ordinalMultipleDomain(domain, scope, fields) { + const sort = parseSort(domain.sort, true); + let a, v; // get value counts for each domain field + const counts = fields.map((f)=>{ + const data = scope.getData(f.data); + if (!data) dataLookupError(f.data); + return data.countsRef(scope, f.field, sort); + }); // aggregate the results from each domain field + const p = { + groupby: keyFieldRef, + pulse: counts + }; + if (sort) { + a = sort.op || "count"; + v = sort.field ? aggrField(a, sort.field) : "count"; + p.ops = [ + MULTIDOMAIN_SORT_OPS[a] + ]; + p.fields = [ + scope.fieldRef(v) + ]; + p.as = [ + v + ]; + } + a = scope.add(Aggregate(p)); // collect aggregate output + const c = scope.add(Collect({ + pulse: ref(a) + })); // extract values for combined domain + v = scope.add(Values({ + field: keyFieldRef, + sort: scope.sortRef(sort), + pulse: ref(c) + })); + return ref(v); } -const MarkRole = "mark"; -const FrameRole = "frame"; -const ScopeRole = "scope"; -const AxisRole = "axis"; -const AxisDomainRole = "axis-domain"; -const AxisGridRole = "axis-grid"; -const AxisLabelRole = "axis-label"; -const AxisTickRole = "axis-tick"; -const AxisTitleRole = "axis-title"; -const LegendRole = "legend"; -const LegendBandRole = "legend-band"; -const LegendEntryRole = "legend-entry"; -const LegendGradientRole = "legend-gradient"; -const LegendLabelRole = "legend-label"; -const LegendSymbolRole = "legend-symbol"; -const LegendTitleRole = "legend-title"; -const TitleRole = "title"; -const TitleTextRole = "title-text"; -const TitleSubtitleRole = "title-subtitle"; -function applyDefaults(encode, type, role, style, config) { - const defaults = {}, enter = {}; - let update, key, skip, props; // if text mark, apply global lineBreak settings (#2370) - key = "lineBreak"; - if (type === "text" && config[key] != null && !has(key, encode)) applyDefault(defaults, key, config[key]); - // ignore legend and axis roles - if (role == "legend" || String(role).startsWith("axis")) role = null; - // resolve mark config - props = role === FrameRole ? config.group : role === MarkRole ? (0, _vegaUtil.extend)({}, config.mark, config[type]) : null; - for(key in props){ - // do not apply defaults if relevant fields are defined - skip = has(key, encode) || (key === "fill" || key === "stroke") && (has("fill", encode) || has("stroke", encode)); - if (!skip) applyDefault(defaults, key, props[key]); - } // resolve styles, apply with increasing precedence - (0, _vegaUtil.array)(style).forEach((name)=>{ - const props = config.style && config.style[name]; - for(const key in props)if (!has(key, encode)) applyDefault(defaults, key, props[key]); - }); - encode = (0, _vegaUtil.extend)({}, encode); // defensive copy - for(key in defaults){ - props = defaults[key]; - if (props.signal) (update = update || {})[key] = props; - else enter[key] = props; +function parseSort(sort, multidomain) { + if (sort) { + if (!sort.field && !sort.op) { + if ((0, _vegaUtil.isObject)(sort)) sort.field = "key"; + else sort = { + field: "key" + }; + } else if (!sort.field && sort.op !== "count") (0, _vegaUtil.error)("No field provided for sort aggregate op: " + sort.op); + else if (multidomain && sort.field) { + if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) (0, _vegaUtil.error)("Multiple domain scales can not be sorted using " + sort.op); + } } - encode.enter = (0, _vegaUtil.extend)(enter, encode.enter); - if (update) encode.update = (0, _vegaUtil.extend)(update, encode.update); - return encode; + return sort; } -function applyDefault(defaults, key, value) { - defaults[key] = value && value.signal ? { - signal: value.signal - } : { - value: value - }; +function quantileMultipleDomain(domain, scope, fields) { + // get value arrays for each domain field + const values = fields.map((f)=>{ + const data = scope.getData(f.data); + if (!data) dataLookupError(f.data); + return data.domainRef(scope, f.field); + }); // combine value arrays + return ref(scope.add(MultiValues({ + values: values + }))); } -const scaleRef = (scale)=>(0, _vegaUtil.isString)(scale) ? (0, _vegaUtil.stringValue)(scale) : scale.signal ? `(${scale.signal})` : field(scale); -function entry$1(enc) { - if (enc.gradient != null) return gradient(enc); - let value = enc.signal ? `(${enc.signal})` : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? (0, _vegaUtil.stringValue)(enc.value) : undefined; - if (enc.scale != null) value = scale(enc, value); - if (value === undefined) value = null; - if (enc.exponent != null) value = `pow(${value},${property(enc.exponent)})`; - if (enc.mult != null) value += `*${property(enc.mult)}`; - if (enc.offset != null) value += `+${property(enc.offset)}`; - if (enc.round) value = `round(${value})`; - return value; +function numericMultipleDomain(domain, scope, fields) { + // get extents for each domain field + const extents = fields.map((f)=>{ + const data = scope.getData(f.data); + if (!data) dataLookupError(f.data); + return data.extentRef(scope, f.field); + }); // combine extents + return ref(scope.add(MultiExtent({ + extents: extents + }))); +} // -- SCALE BINS ----- +function parseScaleBins(v, scope) { + return v.signal || (0, _vegaUtil.isArray)(v) ? parseArray(v, scope) : scope.objectProperty(v); +} // -- SCALE NICE ----- +function parseScaleNice(nice) { + return (0, _vegaUtil.isObject)(nice) ? { + interval: parseLiteral(nice.interval), + step: parseLiteral(nice.step) + } : parseLiteral(nice); +} // -- SCALE INTERPOLATION ----- +function parseScaleInterpolate(interpolate, params) { + params.interpolate = parseLiteral(interpolate.type || interpolate); + if (interpolate.gamma != null) params.interpolateGamma = parseLiteral(interpolate.gamma); +} // -- SCALE RANGE ----- +function parseScaleRange(spec, scope, params) { + const config = scope.config.range; + let range = spec.range; + if (range.signal) return scope.signalRef(range.signal); + else if ((0, _vegaUtil.isString)(range)) { + if (config && (0, _vegaUtil.hasOwnProperty)(config, range)) { + spec = (0, _vegaUtil.extend)({}, spec, { + range: config[range] + }); + return parseScaleRange(spec, scope, params); + } else if (range === "width") range = [ + 0, + { + signal: "width" + } + ]; + else if (range === "height") range = (0, _vegaScale.isDiscrete)(spec.type) ? [ + 0, + { + signal: "height" + } + ] : [ + { + signal: "height" + }, + 0 + ]; + else (0, _vegaUtil.error)("Unrecognized scale range value: " + (0, _vegaUtil.stringValue)(range)); + } else if (range.scheme) { + params.scheme = (0, _vegaUtil.isArray)(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope); + if (range.extent) params.schemeExtent = parseArray(range.extent, scope); + if (range.count) params.schemeCount = parseLiteral(range.count, scope); + return; + } else if (range.step) { + params.rangeStep = parseLiteral(range.step, scope); + return; + } else if ((0, _vegaScale.isDiscrete)(spec.type) && !(0, _vegaUtil.isArray)(range)) return parseScaleDomain(range, spec, scope); + else if (!(0, _vegaUtil.isArray)(range)) (0, _vegaUtil.error)("Unsupported range type: " + (0, _vegaUtil.stringValue)(range)); + return range.map((v)=>((0, _vegaUtil.isArray)(v) ? parseArray : parseLiteral)(v, scope)); } -const _color = (type, x, y, z)=>`(${type}(${[ - x, - y, - z - ].map(entry$1).join(",")})+'')`; -function color(enc) { - return enc.c ? _color("hcl", enc.h, enc.c, enc.l) : enc.h || enc.s ? _color("hsl", enc.h, enc.s, enc.l) : enc.l || enc.a ? _color("lab", enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color("rgb", enc.r, enc.g, enc.b) : null; +function parseProjection(proj, scope) { + const config = scope.config.projection || {}, params = {}; + for(const name in proj){ + if (name === "name") continue; + params[name] = parseParameter$1(proj[name], name, scope); + } // apply projection defaults from config + for(const name1 in config)if (params[name1] == null) params[name1] = parseParameter$1(config[name1], name1, scope); + scope.addProjection(proj.name, params); } -function gradient(enc) { - // map undefined to null; expression lang does not allow undefined - const args = [ - enc.start, - enc.stop, - enc.count - ].map((_)=>_ == null ? null : (0, _vegaUtil.stringValue)(_)); // trim null inputs from the end - while(args.length && (0, _vegaUtil.peek)(args) == null)args.pop(); - args.unshift(scaleRef(enc.gradient)); - return `gradient(${args.join(",")})`; +function parseParameter$1(_, name, scope) { + return (0, _vegaUtil.isArray)(_) ? _.map((_)=>parseParameter$1(_, name, scope)) : !(0, _vegaUtil.isObject)(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === "fit" ? _ : (0, _vegaUtil.error)("Unsupported parameter object: " + (0, _vegaUtil.stringValue)(_)); } -function property(property) { - return (0, _vegaUtil.isObject)(property) ? "(" + entry$1(property) + ")" : property; +const Top = "top"; +const Left = "left"; +const Right = "right"; +const Bottom = "bottom"; +const Center = "center"; +const Vertical = "vertical"; +const Start = "start"; +const Middle = "middle"; +const End = "end"; +const Index = "index"; +const Label = "label"; +const Offset = "offset"; +const Perc = "perc"; +const Perc2 = "perc2"; +const Value = "value"; +const GuideLabelStyle = "guide-label"; +const GuideTitleStyle = "guide-title"; +const GroupTitleStyle = "group-title"; +const GroupSubtitleStyle = "group-subtitle"; +const Symbols = "symbol"; +const Gradient = "gradient"; +const Discrete = "discrete"; +const Size = "size"; +const Shape = "shape"; +const Fill = "fill"; +const Stroke = "stroke"; +const StrokeWidth = "strokeWidth"; +const StrokeDash = "strokeDash"; +const Opacity = "opacity"; // Encoding channels supported by legends +// In priority order of 'canonical' scale +const LegendScales = [ + Size, + Shape, + Fill, + Stroke, + StrokeWidth, + StrokeDash, + Opacity +]; +const Skip = { + name: 1, + style: 1, + interactive: 1 +}; +const zero = { + value: 0 +}; +const one = { + value: 1 +}; +const GroupMark = "group"; +const RectMark = "rect"; +const RuleMark = "rule"; +const SymbolMark = "symbol"; +const TextMark = "text"; +function guideGroup(mark) { + mark.type = GroupMark; + mark.interactive = mark.interactive || false; + return mark; } -function field(ref) { - return resolveField((0, _vegaUtil.isObject)(ref) ? ref : { - datum: ref - }); +function lookup(spec, config) { + const _ = (name, dflt)=>value(spec[name], value(config[name], dflt)); + _.isVertical = (s)=>Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection)); + _.gradientLength = ()=>value(spec.gradientLength, config.gradientLength || config.gradientWidth); + _.gradientThickness = ()=>value(spec.gradientThickness, config.gradientThickness || config.gradientHeight); + _.entryColumns = ()=>value(spec.columns, value(config.columns, +_.isVertical(true))); + return _; } -function resolveField(ref) { - let object, level, field; - if (ref.signal) { - object = "datum"; - field = ref.signal; - } else if (ref.group || ref.parent) { - level = Math.max(1, ref.level || 1); - object = "item"; - while(level-- > 0)object += ".mark.group"; - if (ref.parent) { - field = ref.parent; - object += ".datum"; - } else field = ref.group; - } else if (ref.datum) { - object = "datum"; - field = ref.datum; - } else (0, _vegaUtil.error)("Invalid field reference: " + (0, _vegaUtil.stringValue)(ref)); - if (!ref.signal) field = (0, _vegaUtil.isString)(field) ? (0, _vegaUtil.splitAccessPath)(field).map((0, _vegaUtil.stringValue)).join("][") : resolveField(field); - return object + "[" + field + "]"; +function getEncoding(name, encode) { + const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]); + return v && v.signal ? v : v ? v.value : null; } -function scale(enc, value) { - const scale = scaleRef(enc.scale); - if (enc.range != null) // pull value from scale range - value = `lerp(_range(${scale}), ${+enc.range})`; - else { - // run value through scale and/or pull scale bandwidth - if (value !== undefined) value = `_scale(${scale}, ${value})`; - if (enc.band) { - value = (value ? value + "+" : "") + `_bandwidth(${scale})` + (+enc.band === 1 ? "" : "*" + property(enc.band)); - if (enc.extra) // include logic to handle extraneous elements - value = `(datum.extra ? _scale(${scale}, datum.extra.value) : ${value})`; - } - if (value == null) value = "0"; - } - return value; +function getStyle(name, scope, style) { + const s = scope.config.style[style]; + return s && s[name]; } -function rule(enc) { - let code = ""; - enc.forEach((rule)=>{ - const value = entry$1(rule); - code += rule.test ? `(${rule.test})?${value}:` : value; - }); // if no else clause, terminate with null (#1366) - if ((0, _vegaUtil.peek)(code) === ":") code += "null"; - return code; +function anchorExpr(s, e, m) { + return `item.anchor === '${Start}' ? ${s} : item.anchor === '${End}' ? ${e} : ${m}`; } -function parseEncode(encode, type, role, style, scope, params) { - const enc = {}; - params = params || {}; - params.encoders = { - $encode: enc - }; - encode = applyDefaults(encode, type, role, style, scope.config); - for(const key in encode)enc[key] = parseBlock(encode[key], type, params, scope); - return params; -} -function parseBlock(block, marktype, params, scope) { - const channels = {}, fields = {}; - for(const name in block)if (block[name] != null) // skip any null entries - channels[name] = parse$1(expr(block[name]), scope, params, fields); +const alignExpr$1 = anchorExpr((0, _vegaUtil.stringValue)(Left), (0, _vegaUtil.stringValue)(Right), (0, _vegaUtil.stringValue)(Center)); +function tickBand(_) { + const v = _("tickBand"); + let offset = _("tickOffset"), band, extra; + if (!v) { + // if no tick band entry, fall back on other properties + band = _("bandPosition"); + extra = _("tickExtra"); + } else if (v.signal) { + // if signal, augment code to interpret values + band = { + signal: `(${v.signal}) === 'extent' ? 1 : 0.5` + }; + extra = { + signal: `(${v.signal}) === 'extent'` + }; + if (!(0, _vegaUtil.isObject)(offset)) offset = { + signal: `(${v.signal}) === 'extent' ? 0 : ${offset}` + }; + } else if (v === "extent") { + // if constant, simply set values + band = 1; + extra = true; + offset = 0; + } else { + band = 0.5; + extra = false; + } return { - $expr: { - marktype, - channels - }, - $fields: Object.keys(fields), - $output: Object.keys(block) + extra, + band, + offset }; } -function expr(enc) { - return (0, _vegaUtil.isArray)(enc) ? rule(enc) : entry$1(enc); -} -function parse$1(code, scope, params, fields) { - const expr = (0, _vegaFunctions.parseExpression)(code, scope); - expr.$fields.forEach((name)=>fields[name] = 1); - (0, _vegaUtil.extend)(params, expr.$params); - return expr.$expr; +function extendOffset(value, offset) { + return !offset ? value : !value ? offset : !(0, _vegaUtil.isObject)(value) ? { + value, + offset + } : Object.assign({}, value, { + offset: extendOffset(value.offset, offset) + }); } -const OUTER = "outer", OUTER_INVALID = [ - "value", - "update", - "init", - "react", - "bind" -]; -function outerError(prefix, name) { - (0, _vegaUtil.error)(prefix + ' for "outer" push: ' + (0, _vegaUtil.stringValue)(name)); +function guideMark(mark, extras) { + if (extras) { + mark.name = extras.name; + mark.style = extras.style || mark.style; + mark.interactive = !!extras.interactive; + mark.encode = extendEncode(mark.encode, extras, Skip); + } else mark.interactive = false; + return mark; } -function parseSignal(signal, scope) { - const name = signal.name; - if (signal.push === OUTER) { - // signal must already be defined, raise error if not - if (!scope.signals[name]) outerError("No prior signal definition", name); // signal push must not use properties reserved for standard definition - OUTER_INVALID.forEach((prop)=>{ - if (signal[prop] !== undefined) outerError("Invalid property ", prop); - }); +function legendGradient(spec, scale, config, userEncode) { + const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); + let enter, start, stop, width, height; + if (vertical) { + start = [ + 0, + 1 + ]; + stop = [ + 0, + 0 + ]; + width = thickness; + height = length; } else { - // define a new signal in the current scope - const op = scope.addSignal(name, signal.value); - if (signal.react === false) op.react = false; - if (signal.bind) scope.addBinding(name, signal.bind); + start = [ + 0, + 0 + ]; + stop = [ + 1, + 0 + ]; + width = length; + height = thickness; } -} -function Entry(type, value, params, parent) { - this.id = -1; - this.type = type; - this.value = value; - this.params = params; - if (parent) this.parent = parent; -} -function entry(type, value, params, parent) { - return new Entry(type, value, params, parent); -} -function operator(value, params) { - return entry("operator", value, params); -} // ----- -function ref(op) { - const ref = { - $ref: op.id - }; // if operator not yet registered, cache ref to resolve later - if (op.id < 0) (op.refs = op.refs || []).push(ref); - return ref; -} -function fieldRef$1(field, name) { - return name ? { - $field: field, - $name: name - } : { - $field: field + const encode = { + enter: enter = { + opacity: zero, + x: zero, + y: zero, + width: encoder(width), + height: encoder(height) + }, + update: (0, _vegaUtil.extend)({}, enter, { + opacity: one, + fill: { + gradient: scale, + start: start, + stop: stop + } + }), + exit: { + opacity: zero + } }; + addEncoders(encode, { + stroke: _("gradientStrokeColor"), + strokeWidth: _("gradientStrokeWidth") + }, { + // update + opacity: _("gradientOpacity") + }); + return guideMark({ + type: RectMark, + role: LegendGradientRole, + encode + }, userEncode); } -const keyFieldRef = fieldRef$1("key"); -function compareRef(fields, orders) { - return { - $compare: fields, - $order: orders +function legendGradientDiscrete(spec, scale, config, userEncode, dataRef) { + const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); + let u, v, uu, vv, adjust = ""; + vertical ? (u = "y", uu = "y2", v = "x", vv = "width", adjust = "1-") : (u = "x", uu = "x2", v = "y", vv = "height"); + const enter = { + opacity: zero, + fill: { + scale: scale, + field: Value + } }; -} -function keyRef(fields, flat) { - const ref = { - $key: fields + enter[u] = { + signal: adjust + "datum." + Perc, + mult: length }; - if (flat) ref.$flat = true; - return ref; -} // ----- -const Ascending = "ascending"; -const Descending = "descending"; -function sortKey(sort) { - return !(0, _vegaUtil.isObject)(sort) ? "" : (sort.order === Descending ? "-" : "+") + aggrField(sort.op, sort.field); -} -function aggrField(op, field) { - return (op && op.signal ? "$" + op.signal : op || "") + (op && field ? "_" : "") + (field && field.signal ? "$" + field.signal : field || ""); -} // ----- -const Scope$1 = "scope"; -const View = "view"; -function isSignal(_) { - return _ && _.signal; -} -function isExpr$1(_) { - return _ && _.expr; -} -function hasSignal(_) { - if (isSignal(_)) return true; - if ((0, _vegaUtil.isObject)(_)) for(const key in _){ - if (hasSignal(_[key])) return true; - } - return false; -} -function value(specValue, defaultValue) { - return specValue != null ? specValue : defaultValue; -} -function deref(v) { - return v && v.signal || v; -} -const Timer = "timer"; -function parseStream(stream, scope) { - const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : (0, _vegaUtil.error)("Invalid stream specification: " + (0, _vegaUtil.stringValue)(stream)); - return method(stream, scope); -} -function eventSource(source) { - return source === Scope$1 ? View : source || View; -} -function mergeStream(stream, scope) { - const list = stream.merge.map((s)=>parseStream(s, scope)), entry = streamParameters({ - merge: list - }, stream, scope); - return scope.addStream(entry).id; -} -function nestedStream(stream, scope) { - const id = parseStream(stream.stream, scope), entry = streamParameters({ - stream: id - }, stream, scope); - return scope.addStream(entry).id; -} -function eventStream(stream, scope) { - let id; - if (stream.type === Timer) { - id = scope.event(Timer, stream.throttle); - stream = { - between: stream.between, - filter: stream.filter - }; - } else id = scope.event(eventSource(stream.source), stream.type); - const entry = streamParameters({ - stream: id - }, stream, scope); - return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id; -} -function streamParameters(entry, stream, scope) { - let param = stream.between; - if (param) { - if (param.length !== 2) (0, _vegaUtil.error)('Stream "between" parameter must have 2 entries: ' + (0, _vegaUtil.stringValue)(stream)); - entry.between = [ - parseStream(param[0], scope), - parseStream(param[1], scope) - ]; - } - param = stream.filter ? [].concat(stream.filter) : []; - if (stream.marktype || stream.markname || stream.markrole) // add filter for mark type, name and/or role - param.push(filterMark(stream.marktype, stream.markname, stream.markrole)); - if (stream.source === Scope$1) // add filter to limit events from sub-scope only - param.push("inScope(event.item)"); - if (param.length) entry.filter = (0, _vegaFunctions.parseExpression)("(" + param.join(")&&(") + ")", scope).$expr; - if ((param = stream.throttle) != null) entry.throttle = +param; - if ((param = stream.debounce) != null) entry.debounce = +param; - if (stream.consume) entry.consume = true; - return entry; -} -function filterMark(type, name, role) { - const item = "event.item"; - return item + (type && type !== "*" ? "&&" + item + ".mark.marktype==='" + type + "'" : "") + (role ? "&&" + item + ".mark.role==='" + role + "'" : "") + (name ? "&&" + item + ".mark.name==='" + name + "'" : ""); -} -const OP_VALUE_EXPR = { - code: "_.$value", - ast: { - type: "Identifier", - value: "value" - } -}; -function parseUpdate(spec, scope, target) { - const encode = spec.encode, entry = { - target: target + enter[v] = zero; + enter[uu] = { + signal: adjust + "datum." + Perc2, + mult: length }; - let events = spec.events, update = spec.update, sources = []; - if (!events) (0, _vegaUtil.error)("Signal update missing events specification."); - // interpret as an event selector string - if ((0, _vegaUtil.isString)(events)) events = (0, _vegaEventSelector.parseSelector)(events, scope.isSubscope() ? Scope$1 : View); - // separate event streams from signal updates - events = (0, _vegaUtil.array)(events).filter((s)=>s.signal || s.scale ? (sources.push(s), 0) : 1); // merge internal operator listeners - if (sources.length > 1) sources = [ - mergeSources(sources) - ]; - // merge event streams, include as source - if (events.length) sources.push(events.length > 1 ? { - merge: events - } : events[0]); - if (encode != null) { - if (update) (0, _vegaUtil.error)("Signal encode and update are mutually exclusive."); - update = "encode(item()," + (0, _vegaUtil.stringValue)(encode) + ")"; - } // resolve update value - entry.update = (0, _vegaUtil.isString)(update) ? (0, _vegaFunctions.parseExpression)(update, scope) : update.expr != null ? (0, _vegaFunctions.parseExpression)(update.expr, scope) : update.value != null ? update.value : update.signal != null ? { - $expr: OP_VALUE_EXPR, - $params: { - $value: scope.signalRef(update.signal) + enter[vv] = encoder(thickness); + const encode = { + enter: enter, + update: (0, _vegaUtil.extend)({}, enter, { + opacity: one + }), + exit: { + opacity: zero } - } : (0, _vegaUtil.error)("Invalid signal update specification."); - if (spec.force) entry.options = { - force: true }; - sources.forEach((source)=>scope.addUpdate((0, _vegaUtil.extend)(streamSource(source, scope), entry))); + addEncoders(encode, { + stroke: _("gradientStrokeColor"), + strokeWidth: _("gradientStrokeWidth") + }, { + // update + opacity: _("gradientOpacity") + }); + return guideMark({ + type: RectMark, + role: LegendBandRole, + key: Value, + from: dataRef, + encode + }, userEncode); } -function streamSource(stream, scope) { - return { - source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope) +const alignExpr = `datum.${Perc}<=0?"${Left}":datum.${Perc}>=1?"${Right}":"${Center}"`, baselineExpr = `datum.${Perc}<=0?"${Bottom}":datum.${Perc}>=1?"${Top}":"${Middle}"`; +function legendGradientLabels(spec, config, userEncode, dataRef) { + const _ = lookup(spec, config), vertical = _.isVertical(), thickness = encoder(_.gradientThickness()), length = _.gradientLength(); + let overlap = _("labelOverlap"), enter, update, u, v, adjust = ""; + const encode = { + enter: enter = { + opacity: zero + }, + update: update = { + opacity: one, + text: { + field: Label + } + }, + exit: { + opacity: zero + } }; -} -function mergeSources(sources) { - return { - signal: "[" + sources.map((s)=>s.scale ? 'scale("' + s.scale + '")' : s.signal) + "]" + addEncoders(encode, { + fill: _("labelColor"), + fillOpacity: _("labelOpacity"), + font: _("labelFont"), + fontSize: _("labelFontSize"), + fontStyle: _("labelFontStyle"), + fontWeight: _("labelFontWeight"), + limit: value(spec.labelLimit, config.gradientLabelLimit) + }); + if (vertical) { + enter.align = { + value: "left" + }; + enter.baseline = update.baseline = { + signal: baselineExpr + }; + u = "y"; + v = "x"; + adjust = "1-"; + } else { + enter.align = update.align = { + signal: alignExpr + }; + enter.baseline = { + value: "top" + }; + u = "x"; + v = "y"; + } + enter[u] = update[u] = { + signal: adjust + "datum." + Perc, + mult: length }; + enter[v] = update[v] = thickness; + thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0; + overlap = overlap ? { + separation: _("labelSeparation"), + method: overlap, + order: "datum." + Index + } : undefined; // type, role, style, key, dataRef, encode, extras + return guideMark({ + type: TextMark, + role: LegendLabelRole, + style: GuideLabelStyle, + key: Value, + from: dataRef, + encode, + overlap + }, userEncode); } -function parseSignalUpdates(signal, scope) { - const op = scope.getSignal(signal.name); - let expr = signal.update; - if (signal.init) { - if (expr) (0, _vegaUtil.error)("Signals can not include both init and update expressions."); - else { - expr = signal.init; - op.initonly = true; +function legendSymbolGroups(spec, config, userEncode, dataRef, columns) { + const _ = lookup(spec, config), entries = userEncode.entries, interactive = !!(entries && entries.interactive), name = entries ? entries.name : undefined, height = _("clipHeight"), symbolOffset = _("symbolOffset"), valueRef = { + data: "value" + }, xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`, yEncode = height ? encoder(height) : { + field: Size + }, index = `datum.${Index}`, ncols = `max(1, ${columns})`; + let encode, enter, update, nrows, sort; + yEncode.mult = 0.5; // -- LEGEND SYMBOLS -- + encode = { + enter: enter = { + opacity: zero, + x: { + signal: xSignal, + mult: 0.5, + offset: symbolOffset + }, + y: yEncode + }, + update: update = { + opacity: one, + x: enter.x, + y: enter.y + }, + exit: { + opacity: zero } + }; + let baseFill = null, baseStroke = null; + if (!spec.fill) { + baseFill = config.symbolBaseFillColor; + baseStroke = config.symbolBaseStrokeColor; } - if (expr) { - expr = (0, _vegaFunctions.parseExpression)(expr, scope); - op.update = expr.$expr; - op.params = expr.$params; - } - if (signal.on) signal.on.forEach((_)=>parseUpdate(_, scope, op.id)); -} -const transform = (name)=>(params, value, parent)=>entry(name, value, params || undefined, parent); -const Aggregate = transform("aggregate"); -const AxisTicks = transform("axisticks"); -const Bound = transform("bound"); -const Collect = transform("collect"); -const Compare = transform("compare"); -const DataJoin = transform("datajoin"); -const Encode = transform("encode"); -const Expression = transform("expression"); -const Facet = transform("facet"); -const Field = transform("field"); -const Key = transform("key"); -const LegendEntries = transform("legendentries"); -const Load = transform("load"); -const Mark = transform("mark"); -const MultiExtent = transform("multiextent"); -const MultiValues = transform("multivalues"); -const Overlap = transform("overlap"); -const Params = transform("params"); -const PreFacet = transform("prefacet"); -const Projection = transform("projection"); -const Proxy = transform("proxy"); -const Relay = transform("relay"); -const Render = transform("render"); -const Scale = transform("scale"); -const Sieve = transform("sieve"); -const SortItems = transform("sortitems"); -const ViewLayout = transform("viewlayout"); -const Values = transform("values"); -let FIELD_REF_ID = 0; -const MULTIDOMAIN_SORT_OPS = { - min: "min", - max: "max", - count: "sum" -}; -function initScale(spec, scope) { - const type = spec.type || "linear"; - if (!(0, _vegaScale.isValidScaleType)(type)) (0, _vegaUtil.error)("Unrecognized scale type: " + (0, _vegaUtil.stringValue)(type)); - scope.addScale(spec.name, { - type, - domain: undefined - }); -} -function parseScale(spec, scope) { - const params = scope.getScale(spec.name).params; - let key; - params.domain = parseScaleDomain(spec.domain, spec, scope); - if (spec.range != null) params.range = parseScaleRange(spec, scope, params); - if (spec.interpolate != null) parseScaleInterpolate(spec.interpolate, params); - if (spec.nice != null) params.nice = parseScaleNice(spec.nice); - if (spec.bins != null) params.bins = parseScaleBins(spec.bins, scope); - for(key in spec){ - if ((0, _vegaUtil.hasOwnProperty)(params, key) || key === "name") continue; - params[key] = parseLiteral(spec[key], scope); - } -} -function parseLiteral(v, scope) { - return !(0, _vegaUtil.isObject)(v) ? v : v.signal ? scope.signalRef(v.signal) : (0, _vegaUtil.error)("Unsupported object: " + (0, _vegaUtil.stringValue)(v)); -} -function parseArray(v, scope) { - return v.signal ? scope.signalRef(v.signal) : v.map((v)=>parseLiteral(v, scope)); -} -function dataLookupError(name) { - (0, _vegaUtil.error)("Can not find data set: " + (0, _vegaUtil.stringValue)(name)); -} // -- SCALE DOMAIN ---- -function parseScaleDomain(domain, spec, scope) { - if (!domain) { - if (spec.domainMin != null || spec.domainMax != null) (0, _vegaUtil.error)("No scale domain defined for domainMin/domainMax to override."); - return; // default domain - } - return domain.signal ? scope.signalRef(domain.signal) : ((0, _vegaUtil.isArray)(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope); -} -function explicitDomain(domain, spec, scope) { - return domain.map((v)=>parseLiteral(v, scope)); -} -function singularDomain(domain, spec, scope) { - const data = scope.getData(domain.data); - if (!data) dataLookupError(domain.data); - return (0, _vegaScale.isDiscrete)(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : (0, _vegaScale.isQuantile)(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field); -} -function multipleDomain(domain, spec, scope) { - const data = domain.data, fields = domain.fields.reduce((dom, d)=>{ - d = (0, _vegaUtil.isString)(d) ? { - data: data, - field: d - } : (0, _vegaUtil.isArray)(d) || d.signal ? fieldRef(d, scope) : d; - dom.push(d); - return dom; - }, []); - return ((0, _vegaScale.isDiscrete)(spec.type) ? ordinalMultipleDomain : (0, _vegaScale.isQuantile)(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields); -} -function fieldRef(data, scope) { - const name = "_:vega:_" + FIELD_REF_ID++, coll = Collect({}); - if ((0, _vegaUtil.isArray)(data)) coll.value = { - $ingest: data - }; - else if (data.signal) { - const code = "setdata(" + (0, _vegaUtil.stringValue)(name) + "," + data.signal + ")"; - coll.params.input = scope.signalRef(code); - } - scope.addDataPipeline(name, [ - coll, - Sieve({}) - ]); - return { - data: name, - field: "data" - }; -} -function ordinalMultipleDomain(domain, scope, fields) { - const sort = parseSort(domain.sort, true); - let a, v; // get value counts for each domain field - const counts = fields.map((f)=>{ - const data = scope.getData(f.data); - if (!data) dataLookupError(f.data); - return data.countsRef(scope, f.field, sort); - }); // aggregate the results from each domain field - const p = { - groupby: keyFieldRef, - pulse: counts - }; - if (sort) { - a = sort.op || "count"; - v = sort.field ? aggrField(a, sort.field) : "count"; - p.ops = [ - MULTIDOMAIN_SORT_OPS[a] - ]; - p.fields = [ - scope.fieldRef(v) - ]; - p.as = [ - v - ]; - } - a = scope.add(Aggregate(p)); // collect aggregate output - const c = scope.add(Collect({ - pulse: ref(a) - })); // extract values for combined domain - v = scope.add(Values({ - field: keyFieldRef, - sort: scope.sortRef(sort), - pulse: ref(c) - })); - return ref(v); -} -function parseSort(sort, multidomain) { - if (sort) { - if (!sort.field && !sort.op) { - if ((0, _vegaUtil.isObject)(sort)) sort.field = "key"; - else sort = { - field: "key" - }; - } else if (!sort.field && sort.op !== "count") (0, _vegaUtil.error)("No field provided for sort aggregate op: " + sort.op); - else if (multidomain && sort.field) { - if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) (0, _vegaUtil.error)("Multiple domain scales can not be sorted using " + sort.op); - } - } - return sort; -} -function quantileMultipleDomain(domain, scope, fields) { - // get value arrays for each domain field - const values = fields.map((f)=>{ - const data = scope.getData(f.data); - if (!data) dataLookupError(f.data); - return data.domainRef(scope, f.field); - }); // combine value arrays - return ref(scope.add(MultiValues({ - values: values - }))); -} -function numericMultipleDomain(domain, scope, fields) { - // get extents for each domain field - const extents = fields.map((f)=>{ - const data = scope.getData(f.data); - if (!data) dataLookupError(f.data); - return data.extentRef(scope, f.field); - }); // combine extents - return ref(scope.add(MultiExtent({ - extents: extents - }))); -} // -- SCALE BINS ----- -function parseScaleBins(v, scope) { - return v.signal || (0, _vegaUtil.isArray)(v) ? parseArray(v, scope) : scope.objectProperty(v); -} // -- SCALE NICE ----- -function parseScaleNice(nice) { - return (0, _vegaUtil.isObject)(nice) ? { - interval: parseLiteral(nice.interval), - step: parseLiteral(nice.step) - } : parseLiteral(nice); -} // -- SCALE INTERPOLATION ----- -function parseScaleInterpolate(interpolate, params) { - params.interpolate = parseLiteral(interpolate.type || interpolate); - if (interpolate.gamma != null) params.interpolateGamma = parseLiteral(interpolate.gamma); -} // -- SCALE RANGE ----- -function parseScaleRange(spec, scope, params) { - const config = scope.config.range; - let range = spec.range; - if (range.signal) return scope.signalRef(range.signal); - else if ((0, _vegaUtil.isString)(range)) { - if (config && (0, _vegaUtil.hasOwnProperty)(config, range)) { - spec = (0, _vegaUtil.extend)({}, spec, { - range: config[range] - }); - return parseScaleRange(spec, scope, params); - } else if (range === "width") range = [ - 0, - { - signal: "width" - } - ]; - else if (range === "height") range = (0, _vegaScale.isDiscrete)(spec.type) ? [ - 0, - { - signal: "height" - } - ] : [ - { - signal: "height" - }, - 0 - ]; - else (0, _vegaUtil.error)("Unrecognized scale range value: " + (0, _vegaUtil.stringValue)(range)); - } else if (range.scheme) { - params.scheme = (0, _vegaUtil.isArray)(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope); - if (range.extent) params.schemeExtent = parseArray(range.extent, scope); - if (range.count) params.schemeCount = parseLiteral(range.count, scope); - return; - } else if (range.step) { - params.rangeStep = parseLiteral(range.step, scope); - return; - } else if ((0, _vegaScale.isDiscrete)(spec.type) && !(0, _vegaUtil.isArray)(range)) return parseScaleDomain(range, spec, scope); - else if (!(0, _vegaUtil.isArray)(range)) (0, _vegaUtil.error)("Unsupported range type: " + (0, _vegaUtil.stringValue)(range)); - return range.map((v)=>((0, _vegaUtil.isArray)(v) ? parseArray : parseLiteral)(v, scope)); -} -function parseProjection(proj, scope) { - const config = scope.config.projection || {}, params = {}; - for(const name in proj){ - if (name === "name") continue; - params[name] = parseParameter$1(proj[name], name, scope); - } // apply projection defaults from config - for(const name1 in config)if (params[name1] == null) params[name1] = parseParameter$1(config[name1], name1, scope); - scope.addProjection(proj.name, params); -} -function parseParameter$1(_, name, scope) { - return (0, _vegaUtil.isArray)(_) ? _.map((_)=>parseParameter$1(_, name, scope)) : !(0, _vegaUtil.isObject)(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === "fit" ? _ : (0, _vegaUtil.error)("Unsupported parameter object: " + (0, _vegaUtil.stringValue)(_)); -} -const Top = "top"; -const Left = "left"; -const Right = "right"; -const Bottom = "bottom"; -const Center = "center"; -const Vertical = "vertical"; -const Start = "start"; -const Middle = "middle"; -const End = "end"; -const Index = "index"; -const Label = "label"; -const Offset = "offset"; -const Perc = "perc"; -const Perc2 = "perc2"; -const Value = "value"; -const GuideLabelStyle = "guide-label"; -const GuideTitleStyle = "guide-title"; -const GroupTitleStyle = "group-title"; -const GroupSubtitleStyle = "group-subtitle"; -const Symbols = "symbol"; -const Gradient = "gradient"; -const Discrete = "discrete"; -const Size = "size"; -const Shape = "shape"; -const Fill = "fill"; -const Stroke = "stroke"; -const StrokeWidth = "strokeWidth"; -const StrokeDash = "strokeDash"; -const Opacity = "opacity"; // Encoding channels supported by legends -// In priority order of 'canonical' scale -const LegendScales = [ - Size, - Shape, - Fill, - Stroke, - StrokeWidth, - StrokeDash, - Opacity -]; -const Skip = { - name: 1, - style: 1, - interactive: 1 -}; -const zero = { - value: 0 -}; -const one = { - value: 1 -}; -const GroupMark = "group"; -const RectMark = "rect"; -const RuleMark = "rule"; -const SymbolMark = "symbol"; -const TextMark = "text"; -function guideGroup(mark) { - mark.type = GroupMark; - mark.interactive = mark.interactive || false; - return mark; -} -function lookup(spec, config) { - const _ = (name, dflt)=>value(spec[name], value(config[name], dflt)); - _.isVertical = (s)=>Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection)); - _.gradientLength = ()=>value(spec.gradientLength, config.gradientLength || config.gradientWidth); - _.gradientThickness = ()=>value(spec.gradientThickness, config.gradientThickness || config.gradientHeight); - _.entryColumns = ()=>value(spec.columns, value(config.columns, +_.isVertical(true))); - return _; -} -function getEncoding(name, encode) { - const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]); - return v && v.signal ? v : v ? v.value : null; -} -function getStyle(name, scope, style) { - const s = scope.config.style[style]; - return s && s[name]; -} -function anchorExpr(s, e, m) { - return `item.anchor === '${Start}' ? ${s} : item.anchor === '${End}' ? ${e} : ${m}`; -} -const alignExpr$1 = anchorExpr((0, _vegaUtil.stringValue)(Left), (0, _vegaUtil.stringValue)(Right), (0, _vegaUtil.stringValue)(Center)); -function tickBand(_) { - const v = _("tickBand"); - let offset = _("tickOffset"), band, extra; - if (!v) { - // if no tick band entry, fall back on other properties - band = _("bandPosition"); - extra = _("tickExtra"); - } else if (v.signal) { - // if signal, augment code to interpret values - band = { - signal: `(${v.signal}) === 'extent' ? 1 : 0.5` - }; - extra = { - signal: `(${v.signal}) === 'extent'` - }; - if (!(0, _vegaUtil.isObject)(offset)) offset = { - signal: `(${v.signal}) === 'extent' ? 0 : ${offset}` - }; - } else if (v === "extent") { - // if constant, simply set values - band = 1; - extra = true; - offset = 0; - } else { - band = 0.5; - extra = false; - } - return { - extra, - band, - offset - }; -} -function extendOffset(value, offset) { - return !offset ? value : !value ? offset : !(0, _vegaUtil.isObject)(value) ? { - value, - offset - } : Object.assign({}, value, { - offset: extendOffset(value.offset, offset) - }); -} -function guideMark(mark, extras) { - if (extras) { - mark.name = extras.name; - mark.style = extras.style || mark.style; - mark.interactive = !!extras.interactive; - mark.encode = extendEncode(mark.encode, extras, Skip); - } else mark.interactive = false; - return mark; -} -function legendGradient(spec, scale, config, userEncode) { - const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); - let enter, start, stop, width, height; - if (vertical) { - start = [ - 0, - 1 - ]; - stop = [ - 0, - 0 - ]; - width = thickness; - height = length; - } else { - start = [ - 0, - 0 - ]; - stop = [ - 1, - 0 - ]; - width = length; - height = thickness; - } - const encode = { - enter: enter = { - opacity: zero, - x: zero, - y: zero, - width: encoder(width), - height: encoder(height) - }, - update: (0, _vegaUtil.extend)({}, enter, { - opacity: one, - fill: { - gradient: scale, - start: start, - stop: stop - } - }), - exit: { - opacity: zero - } - }; addEncoders(encode, { - stroke: _("gradientStrokeColor"), - strokeWidth: _("gradientStrokeWidth") + fill: _("symbolFillColor", baseFill), + shape: _("symbolType"), + size: _("symbolSize"), + stroke: _("symbolStrokeColor", baseStroke), + strokeDash: _("symbolDash"), + strokeDashOffset: _("symbolDashOffset"), + strokeWidth: _("symbolStrokeWidth") }, { // update - opacity: _("gradientOpacity") + opacity: _("symbolOpacity") }); - return guideMark({ - type: RectMark, - role: LegendGradientRole, - encode - }, userEncode); -} -function legendGradientDiscrete(spec, scale, config, userEncode, dataRef) { - const _ = lookup(spec, config), vertical = _.isVertical(), thickness = _.gradientThickness(), length = _.gradientLength(); - let u, v, uu, vv, adjust = ""; - vertical ? (u = "y", uu = "y2", v = "x", vv = "width", adjust = "1-") : (u = "x", uu = "x2", v = "y", vv = "height"); - const enter = { - opacity: zero, - fill: { - scale: scale, + LegendScales.forEach((scale)=>{ + if (spec[scale]) update[scale] = enter[scale] = { + scale: spec[scale], field: Value - } - }; - enter[u] = { - signal: adjust + "datum." + Perc, - mult: length - }; - enter[v] = zero; - enter[uu] = { - signal: adjust + "datum." + Perc2, - mult: length - }; - enter[vv] = encoder(thickness); - const encode = { - enter: enter, - update: (0, _vegaUtil.extend)({}, enter, { - opacity: one - }), - exit: { - opacity: zero - } - }; - addEncoders(encode, { - stroke: _("gradientStrokeColor"), - strokeWidth: _("gradientStrokeWidth") - }, { - // update - opacity: _("gradientOpacity") + }; }); - return guideMark({ - type: RectMark, - role: LegendBandRole, + const symbols = guideMark({ + type: SymbolMark, + role: LegendSymbolRole, key: Value, - from: dataRef, + from: valueRef, + clip: height ? true : undefined, encode - }, userEncode); -} -const alignExpr = `datum.${Perc}<=0?"${Left}":datum.${Perc}>=1?"${Right}":"${Center}"`, baselineExpr = `datum.${Perc}<=0?"${Bottom}":datum.${Perc}>=1?"${Top}":"${Middle}"`; -function legendGradientLabels(spec, config, userEncode, dataRef) { - const _ = lookup(spec, config), vertical = _.isVertical(), thickness = encoder(_.gradientThickness()), length = _.gradientLength(); - let overlap = _("labelOverlap"), enter, update, u, v, adjust = ""; - const encode = { + }, userEncode.symbols); // -- LEGEND LABELS -- + const labelOffset = encoder(symbolOffset); + labelOffset.offset = _("labelOffset"); + encode = { enter: enter = { - opacity: zero + opacity: zero, + x: { + signal: xSignal, + offset: labelOffset + }, + y: yEncode }, update: update = { opacity: one, text: { field: Label - } + }, + x: enter.x, + y: enter.y }, exit: { opacity: zero } }; addEncoders(encode, { + align: _("labelAlign"), + baseline: _("labelBaseline"), fill: _("labelColor"), fillOpacity: _("labelOpacity"), font: _("labelFont"), fontSize: _("labelFontSize"), fontStyle: _("labelFontStyle"), fontWeight: _("labelFontWeight"), - limit: value(spec.labelLimit, config.gradientLabelLimit) + limit: _("labelLimit") }); - if (vertical) { - enter.align = { - value: "left" - }; - enter.baseline = update.baseline = { - signal: baselineExpr - }; - u = "y"; - v = "x"; - adjust = "1-"; - } else { - enter.align = update.align = { - signal: alignExpr - }; - enter.baseline = { - value: "top" - }; - u = "x"; - v = "y"; - } - enter[u] = update[u] = { - signal: adjust + "datum." + Perc, - mult: length - }; - enter[v] = update[v] = thickness; - thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0; - overlap = overlap ? { - separation: _("labelSeparation"), - method: overlap, - order: "datum." + Index - } : undefined; // type, role, style, key, dataRef, encode, extras - return guideMark({ - type: TextMark, - role: LegendLabelRole, - style: GuideLabelStyle, - key: Value, - from: dataRef, - encode, - overlap - }, userEncode); -} -function legendSymbolGroups(spec, config, userEncode, dataRef, columns) { - const _ = lookup(spec, config), entries = userEncode.entries, interactive = !!(entries && entries.interactive), name = entries ? entries.name : undefined, height = _("clipHeight"), symbolOffset = _("symbolOffset"), valueRef = { - data: "value" - }, xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`, yEncode = height ? encoder(height) : { - field: Size - }, index = `datum.${Index}`, ncols = `max(1, ${columns})`; - let encode, enter, update, nrows, sort; - yEncode.mult = 0.5; // -- LEGEND SYMBOLS -- - encode = { - enter: enter = { - opacity: zero, - x: { - signal: xSignal, - mult: 0.5, - offset: symbolOffset - }, - y: yEncode - }, - update: update = { - opacity: one, - x: enter.x, - y: enter.y - }, - exit: { - opacity: zero - } - }; - let baseFill = null, baseStroke = null; - if (!spec.fill) { - baseFill = config.symbolBaseFillColor; - baseStroke = config.symbolBaseStrokeColor; - } - addEncoders(encode, { - fill: _("symbolFillColor", baseFill), - shape: _("symbolType"), - size: _("symbolSize"), - stroke: _("symbolStrokeColor", baseStroke), - strokeDash: _("symbolDash"), - strokeDashOffset: _("symbolDashOffset"), - strokeWidth: _("symbolStrokeWidth") - }, { - // update - opacity: _("symbolOpacity") - }); - LegendScales.forEach((scale)=>{ - if (spec[scale]) update[scale] = enter[scale] = { - scale: spec[scale], - field: Value - }; - }); - const symbols = guideMark({ - type: SymbolMark, - role: LegendSymbolRole, - key: Value, - from: valueRef, - clip: height ? true : undefined, - encode - }, userEncode.symbols); // -- LEGEND LABELS -- - const labelOffset = encoder(symbolOffset); - labelOffset.offset = _("labelOffset"); - encode = { - enter: enter = { - opacity: zero, - x: { - signal: xSignal, - offset: labelOffset - }, - y: yEncode - }, - update: update = { - opacity: one, - text: { - field: Label - }, - x: enter.x, - y: enter.y - }, - exit: { - opacity: zero - } - }; - addEncoders(encode, { - align: _("labelAlign"), - baseline: _("labelBaseline"), - fill: _("labelColor"), - fillOpacity: _("labelOpacity"), - font: _("labelFont"), - fontSize: _("labelFontSize"), - fontStyle: _("labelFontStyle"), - fontWeight: _("labelFontWeight"), - limit: _("labelLimit") - }); - const labels = guideMark({ + const labels = guideMark({ type: TextMark, role: LegendLabelRole, style: GuideLabelStyle, @@ -43600,1752 +45041,364 @@ Scope.prototype = Subscope.prototype = { // ---- event (source, type) { const key = source + ":" + type; - if (!this.events[key]) { - const id = this.id(); - this.streams.push({ - id: id, - source: source, - type: type - }); - this.events[key] = id; - } - return this.events[key]; - }, - // ---- - hasOwnSignal (name) { - return (0, _vegaUtil.hasOwnProperty)(this.signals, name); - }, - addSignal (name, value) { - if (this.hasOwnSignal(name)) (0, _vegaUtil.error)("Duplicate signal name: " + (0, _vegaUtil.stringValue)(name)); - const op = value instanceof Entry ? value : this.add(operator(value)); - return this.signals[name] = op; - }, - getSignal (name) { - if (!this.signals[name]) (0, _vegaUtil.error)("Unrecognized signal name: " + (0, _vegaUtil.stringValue)(name)); - return this.signals[name]; - }, - signalRef (s) { - if (this.signals[s]) return ref(this.signals[s]); - else if (!(0, _vegaUtil.hasOwnProperty)(this.lambdas, s)) this.lambdas[s] = this.add(operator(null)); - return ref(this.lambdas[s]); - }, - parseLambdas () { - const code = Object.keys(this.lambdas); - for(let i = 0, n = code.length; i < n; ++i){ - const s = code[i], e = (0, _vegaFunctions.parseExpression)(s, this), op = this.lambdas[s]; - op.params = e.$params; - op.update = e.$expr; - } - }, - property (spec) { - return spec && spec.signal ? this.signalRef(spec.signal) : spec; - }, - objectProperty (spec) { - return !spec || !(0, _vegaUtil.isObject)(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec)); - }, - exprRef (code, name) { - const params = { - expr: (0, _vegaFunctions.parseExpression)(code, this) - }; - if (name) params.expr.$name = name; - return ref(this.add(Expression(params))); - }, - addBinding (name, bind) { - if (!this.bindings) (0, _vegaUtil.error)("Nested signals do not support binding: " + (0, _vegaUtil.stringValue)(name)); - this.bindings.push((0, _vegaUtil.extend)({ - signal: name - }, bind)); - }, - // ---- - addScaleProj (name, transform) { - if ((0, _vegaUtil.hasOwnProperty)(this.scales, name)) (0, _vegaUtil.error)("Duplicate scale or projection name: " + (0, _vegaUtil.stringValue)(name)); - this.scales[name] = this.add(transform); - }, - addScale (name, params) { - this.addScaleProj(name, Scale(params)); - }, - addProjection (name, params) { - this.addScaleProj(name, Projection(params)); - }, - getScale (name) { - if (!this.scales[name]) (0, _vegaUtil.error)("Unrecognized scale name: " + (0, _vegaUtil.stringValue)(name)); - return this.scales[name]; - }, - scaleRef (name) { - return ref(this.getScale(name)); - }, - scaleType (name) { - return this.getScale(name).params.type; - }, - projectionRef (name) { - return this.scaleRef(name); - }, - projectionType (name) { - return this.scaleType(name); - }, - // ---- - addData (name, dataScope) { - if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); - return this.data[name] = dataScope; - }, - getData (name) { - if (!this.data[name]) (0, _vegaUtil.error)("Undefined data set name: " + (0, _vegaUtil.stringValue)(name)); - return this.data[name]; - }, - addDataPipeline (name, entries) { - if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); - return this.addData(name, DataScope.fromEntries(this, entries)); - } -}; -function propertyLambda(spec) { - return ((0, _vegaUtil.isArray)(spec) ? arrayLambda : objectLambda)(spec); -} -function arrayLambda(array) { - const n = array.length; - let code = "["; - for(let i = 0; i < n; ++i){ - const value = array[i]; - code += (i > 0 ? "," : "") + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); - } - return code + "]"; -} -function objectLambda(obj) { - let code = "{", i = 0, key, value; - for(key in obj){ - value = obj[key]; - code += (++i > 1 ? "," : "") + (0, _vegaUtil.stringValue)(key) + ":" + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); - } - return code + "}"; -} -/** - * Standard configuration defaults for Vega specification parsing. - * Users can provide their own (sub-)set of these default values - * by passing in a config object to the top-level parse method. - */ function defaults() { - const defaultFont = "sans-serif", defaultSymbolSize = 30, defaultStrokeWidth = 2, defaultColor = "#4c78a8", black = "#000", gray = "#888", lightGray = "#ddd"; - return { - // default visualization description - description: "Vega visualization", - // default padding around visualization - padding: 0, - // default for automatic sizing; options: 'none', 'pad', 'fit' - // or provide an object (e.g., {'type': 'pad', 'resize': true}) - autosize: "pad", - // default view background color - // covers the entire view component - background: null, - // default event handling configuration - // preventDefault for view-sourced event types except 'wheel' - events: { - defaults: { - allow: [ - "wheel" - ] - } - }, - // defaults for top-level group marks - // accepts mark properties (fill, stroke, etc) - // covers the data rectangle within group width/height - group: null, - // defaults for basic mark types - // each subset accepts mark properties (fill, stroke, etc) - mark: null, - arc: { - fill: defaultColor - }, - area: { - fill: defaultColor - }, - image: null, - line: { - stroke: defaultColor, - strokeWidth: defaultStrokeWidth - }, - path: { - stroke: defaultColor - }, - rect: { - fill: defaultColor - }, - rule: { - stroke: black - }, - shape: { - stroke: defaultColor - }, - symbol: { - fill: defaultColor, - size: 64 - }, - text: { - fill: black, - font: defaultFont, - fontSize: 11 - }, - trail: { - fill: defaultColor, - size: defaultStrokeWidth - }, - // style definitions - style: { - // axis & legend labels - "guide-label": { - fill: black, - font: defaultFont, - fontSize: 10 - }, - // axis & legend titles - "guide-title": { - fill: black, - font: defaultFont, - fontSize: 11, - fontWeight: "bold" - }, - // headers, including chart title - "group-title": { - fill: black, - font: defaultFont, - fontSize: 13, - fontWeight: "bold" - }, - // chart subtitle - "group-subtitle": { - fill: black, - font: defaultFont, - fontSize: 12 - }, - // defaults for styled point marks in Vega-Lite - point: { - size: defaultSymbolSize, - strokeWidth: defaultStrokeWidth, - shape: "circle" - }, - circle: { - size: defaultSymbolSize, - strokeWidth: defaultStrokeWidth - }, - square: { - size: defaultSymbolSize, - strokeWidth: defaultStrokeWidth, - shape: "square" - }, - // defaults for styled group marks in Vega-Lite - cell: { - fill: "transparent", - stroke: lightGray - } - }, - // defaults for title - title: { - orient: "top", - anchor: "middle", - offset: 4, - subtitlePadding: 3 - }, - // defaults for axes - axis: { - minExtent: 0, - maxExtent: 200, - bandPosition: 0.5, - domain: true, - domainWidth: 1, - domainColor: gray, - grid: false, - gridWidth: 1, - gridColor: lightGray, - labels: true, - labelAngle: 0, - labelLimit: 180, - labelOffset: 0, - labelPadding: 2, - ticks: true, - tickColor: gray, - tickOffset: 0, - tickRound: true, - tickSize: 5, - tickWidth: 1, - titlePadding: 4 - }, - // correction for centering bias - axisBand: { - tickOffset: -0.5 - }, - // defaults for cartographic projection - projection: { - type: "mercator" - }, - // defaults for legends - legend: { - orient: "right", - padding: 0, - gridAlign: "each", - columnPadding: 10, - rowPadding: 2, - symbolDirection: "vertical", - gradientDirection: "vertical", - gradientLength: 200, - gradientThickness: 16, - gradientStrokeColor: lightGray, - gradientStrokeWidth: 0, - gradientLabelOffset: 2, - labelAlign: "left", - labelBaseline: "middle", - labelLimit: 160, - labelOffset: 4, - labelOverlap: true, - symbolLimit: 30, - symbolType: "circle", - symbolSize: 100, - symbolOffset: 0, - symbolStrokeWidth: 1.5, - symbolBaseFillColor: "transparent", - symbolBaseStrokeColor: gray, - titleLimit: 180, - titleOrient: "top", - titlePadding: 5, - layout: { - offset: 18, - direction: "horizontal", - left: { - direction: "vertical" - }, - right: { - direction: "vertical" - } - } - }, - // defaults for scale ranges - range: { - category: { - scheme: "tableau10" - }, - ordinal: { - scheme: "blues" - }, - heatmap: { - scheme: "yellowgreenblue" - }, - ramp: { - scheme: "blues" - }, - diverging: { - scheme: "blueorange", - extent: [ - 1, - 0 - ] - }, - symbol: [ - "circle", - "square", - "triangle-up", - "cross", - "diamond", - "triangle-right", - "triangle-down", - "triangle-left" - ] - } - }; -} -function parse(spec, config, options) { - if (!(0, _vegaUtil.isObject)(spec)) (0, _vegaUtil.error)("Input Vega specification must be an object."); - config = (0, _vegaUtil.mergeConfig)(defaults(), config, spec.config); - return parseView(spec, new Scope(config, options)).toRuntime(); -} - -},{"vega-util":"bApja","vega-functions":"iuqsd","vega-event-selector":"fFzhr","vega-scale":"bEydG","vega-dataflow":"3NitK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"fFzhr":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "parseSelector", ()=>eventSelector); -const VIEW = "view", LBRACK = "[", RBRACK = "]", LBRACE = "{", RBRACE = "}", COLON = ":", COMMA = ",", NAME = "@", GT = ">", ILLEGAL = /[[\]{}]/, DEFAULT_MARKS = { - "*": 1, - arc: 1, - area: 1, - group: 1, - image: 1, - line: 1, - path: 1, - rect: 1, - rule: 1, - shape: 1, - symbol: 1, - text: 1, - trail: 1 -}; -let DEFAULT_SOURCE, MARKS; -/** - * Parse an event selector string. - * Returns an array of event stream definitions. - */ function eventSelector(selector, source, marks) { - DEFAULT_SOURCE = source || VIEW; - MARKS = marks || DEFAULT_MARKS; - return parseMerge(selector.trim()).map(parseSelector); -} -function isMarkType(type) { - return MARKS[type]; -} -function find(s, i, endChar, pushChar, popChar) { - const n = s.length; - let count = 0, c; - for(; i < n; ++i){ - c = s[i]; - if (!count && c === endChar) return i; - else if (popChar && popChar.indexOf(c) >= 0) --count; - else if (pushChar && pushChar.indexOf(c) >= 0) ++count; - } - return i; -} -function parseMerge(s) { - const output = [], n = s.length; - let start = 0, i = 0; - while(i < n){ - i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE); - output.push(s.substring(start, i).trim()); - start = ++i; - } - if (output.length === 0) throw "Empty event selector: " + s; - return output; -} -function parseSelector(s) { - return s[0] === "[" ? parseBetween(s) : parseStream(s); -} -function parseBetween(s) { - const n = s.length; - let i = 1, b; - i = find(s, i, RBRACK, LBRACK, RBRACK); - if (i === n) throw "Empty between selector: " + s; - b = parseMerge(s.substring(1, i)); - if (b.length !== 2) throw "Between selector must have two elements: " + s; - s = s.slice(i + 1).trim(); - if (s[0] !== GT) throw "Expected '>' after between selector: " + s; - b = b.map(parseSelector); - const stream = parseSelector(s.slice(1).trim()); - if (stream.between) return { - between: b, - stream: stream - }; - else stream.between = b; - return stream; -} -function parseStream(s) { - const stream = { - source: DEFAULT_SOURCE - }, source = []; - let throttle = [ - 0, - 0 - ], markname = 0, start = 0, n = s.length, i = 0, j, filter; // extract throttle from end - if (s[n - 1] === RBRACE) { - i = s.lastIndexOf(LBRACE); - if (i >= 0) { - try { - throttle = parseThrottle(s.substring(i + 1, n - 1)); - } catch (e) { - throw "Invalid throttle specification: " + s; - } - s = s.slice(0, i).trim(); - n = s.length; - } else throw "Unmatched right brace: " + s; - i = 0; - } - if (!n) throw s; // set name flag based on first char - if (s[0] === NAME) markname = ++i; // extract first part of multi-part stream selector - j = find(s, i, COLON); - if (j < n) { - source.push(s.substring(start, j).trim()); - start = i = ++j; - } // extract remaining part of stream selector - i = find(s, i, LBRACK); - if (i === n) source.push(s.substring(start, n).trim()); - else { - source.push(s.substring(start, i).trim()); - filter = []; - start = ++i; - if (start === n) throw "Unmatched left bracket: " + s; - } // extract filters - while(i < n){ - i = find(s, i, RBRACK); - if (i === n) throw "Unmatched left bracket: " + s; - filter.push(s.substring(start, i).trim()); - if (i < n - 1 && s[++i] !== LBRACK) throw "Expected left bracket: " + s; - start = ++i; - } // marshall event stream specification - if (!(n = source.length) || ILLEGAL.test(source[n - 1])) throw "Invalid event selector: " + s; - if (n > 1) { - stream.type = source[1]; - if (markname) stream.markname = source[0].slice(1); - else if (isMarkType(source[0])) stream.marktype = source[0]; - else stream.source = source[0]; - } else stream.type = source[0]; - if (stream.type.slice(-1) === "!") { - stream.consume = true; - stream.type = stream.type.slice(0, -1); - } - if (filter != null) stream.filter = filter; - if (throttle[0]) stream.throttle = throttle[0]; - if (throttle[1]) stream.debounce = throttle[1]; - return stream; -} -function parseThrottle(s) { - const a = s.split(COMMA); - if (!s.length || a.length > 2) throw s; - return a.map((_)=>{ - const x = +_; - if (x !== x) throw s; - return x; - }); -} - -},{"@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"2l1no":[function(require,module,exports) { -var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); -parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "ASTNode", ()=>ASTNode); -parcelHelpers.export(exports, "ArrayExpression", ()=>ArrayExpression); -parcelHelpers.export(exports, "BinaryExpression", ()=>BinaryExpression); -parcelHelpers.export(exports, "CallExpression", ()=>CallExpression); -parcelHelpers.export(exports, "ConditionalExpression", ()=>ConditionalExpression); -parcelHelpers.export(exports, "Identifier", ()=>Identifier); -parcelHelpers.export(exports, "Literal", ()=>Literal); -parcelHelpers.export(exports, "LogicalExpression", ()=>LogicalExpression); -parcelHelpers.export(exports, "MemberExpression", ()=>MemberExpression); -parcelHelpers.export(exports, "ObjectExpression", ()=>ObjectExpression); -parcelHelpers.export(exports, "Property", ()=>Property); -parcelHelpers.export(exports, "RawCode", ()=>RawCode); -parcelHelpers.export(exports, "UnaryExpression", ()=>UnaryExpression); -parcelHelpers.export(exports, "codegen", ()=>codegen); -parcelHelpers.export(exports, "constants", ()=>Constants); -parcelHelpers.export(exports, "functions", ()=>Functions); -parcelHelpers.export(exports, "parse", ()=>parser); -var _vegaUtil = require("vega-util"); -const RawCode = "RawCode"; -const Literal = "Literal"; -const Property = "Property"; -const Identifier = "Identifier"; -const ArrayExpression = "ArrayExpression"; -const BinaryExpression = "BinaryExpression"; -const CallExpression = "CallExpression"; -const ConditionalExpression = "ConditionalExpression"; -const LogicalExpression = "LogicalExpression"; -const MemberExpression = "MemberExpression"; -const ObjectExpression = "ObjectExpression"; -const UnaryExpression = "UnaryExpression"; -function ASTNode(type) { - this.type = type; -} -ASTNode.prototype.visit = function(visitor) { - let c, i, n; - if (visitor(this)) return 1; - for(c = children(this), i = 0, n = c.length; i < n; ++i){ - if (c[i].visit(visitor)) return 1; - } -}; -function children(node) { - switch(node.type){ - case ArrayExpression: - return node.elements; - case BinaryExpression: - case LogicalExpression: - return [ - node.left, - node.right - ]; - case CallExpression: - return [ - node.callee - ].concat(node.arguments); - case ConditionalExpression: - return [ - node.test, - node.consequent, - node.alternate - ]; - case MemberExpression: - return [ - node.object, - node.property - ]; - case ObjectExpression: - return node.properties; - case Property: - return [ - node.key, - node.value - ]; - case UnaryExpression: - return [ - node.argument - ]; - case Identifier: - case Literal: - case RawCode: - default: - return []; - } -} -/* - The following expression parser is based on Esprima (http://esprima.org/). - Original header comment and license for Esprima is included here: - - Copyright (C) 2013 Ariya Hidayat - Copyright (C) 2013 Thaddee Tyl - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ var TokenName, source, index, length, lookahead; -var TokenBooleanLiteral = 1, TokenEOF = 2, TokenIdentifier = 3, TokenKeyword = 4, TokenNullLiteral = 5, TokenNumericLiteral = 6, TokenPunctuator = 7, TokenStringLiteral = 8, TokenRegularExpression = 9; -TokenName = {}; -TokenName[TokenBooleanLiteral] = "Boolean"; -TokenName[TokenEOF] = ""; -TokenName[TokenIdentifier] = "Identifier"; -TokenName[TokenKeyword] = "Keyword"; -TokenName[TokenNullLiteral] = "Null"; -TokenName[TokenNumericLiteral] = "Numeric"; -TokenName[TokenPunctuator] = "Punctuator"; -TokenName[TokenStringLiteral] = "String"; -TokenName[TokenRegularExpression] = "RegularExpression"; -var SyntaxArrayExpression = "ArrayExpression", SyntaxBinaryExpression = "BinaryExpression", SyntaxCallExpression = "CallExpression", SyntaxConditionalExpression = "ConditionalExpression", SyntaxIdentifier = "Identifier", SyntaxLiteral = "Literal", SyntaxLogicalExpression = "LogicalExpression", SyntaxMemberExpression = "MemberExpression", SyntaxObjectExpression = "ObjectExpression", SyntaxProperty = "Property", SyntaxUnaryExpression = "UnaryExpression"; // Error messages should be identical to V8. -var MessageUnexpectedToken = "Unexpected token %0", MessageUnexpectedNumber = "Unexpected number", MessageUnexpectedString = "Unexpected string", MessageUnexpectedIdentifier = "Unexpected identifier", MessageUnexpectedReserved = "Unexpected reserved word", MessageUnexpectedEOS = "Unexpected end of input", MessageInvalidRegExp = "Invalid regular expression", MessageUnterminatedRegExp = "Invalid regular expression: missing /", MessageStrictOctalLiteral = "Octal literals are not allowed in strict mode.", MessageStrictDuplicateProperty = "Duplicate data property in object literal not allowed in strict mode"; -var ILLEGAL = "ILLEGAL", DISABLED = "Disabled."; // See also tools/generate-unicode-regex.py. -var RegexNonAsciiIdentifierStart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), // eslint-disable-next-line no-misleading-character-class -RegexNonAsciiIdentifierPart = new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"); // Ensure the condition is true, otherwise throw an error. -// This is only to have a better contract semantic, i.e. another safety net -// to catch a logic error. The condition shall be fulfilled in normal case. -// Do NOT use this to enforce a certain condition on any user input. -function assert(condition, message) { - /* istanbul ignore next */ if (!condition) throw new Error("ASSERT: " + message); -} -function isDecimalDigit(ch) { - return ch >= 0x30 && ch <= 0x39; // 0..9 -} -function isHexDigit(ch) { - return "0123456789abcdefABCDEF".indexOf(ch) >= 0; -} -function isOctalDigit(ch) { - return "01234567".indexOf(ch) >= 0; -} // 7.2 White Space -function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [ - 0x1680, - 0x180E, - 0x2000, - 0x2001, - 0x2002, - 0x2003, - 0x2004, - 0x2005, - 0x2006, - 0x2007, - 0x2008, - 0x2009, - 0x200A, - 0x202F, - 0x205F, - 0x3000, - 0xFEFF - ].indexOf(ch) >= 0; -} // 7.3 Line Terminators -function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; -} // 7.6 Identifier Names and Identifiers -function isIdentifierStart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch)); -} -function isIdentifierPart(ch) { - return ch === 0x24 || ch === 0x5F || ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A || ch >= 0x30 && ch <= 0x39 || ch === 0x5C || ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch)); -} // 7.6.1.1 Keywords -const keywords = { - "if": 1, - "in": 1, - "do": 1, - "var": 1, - "for": 1, - "new": 1, - "try": 1, - "let": 1, - "this": 1, - "else": 1, - "case": 1, - "void": 1, - "with": 1, - "enum": 1, - "while": 1, - "break": 1, - "catch": 1, - "throw": 1, - "const": 1, - "yield": 1, - "class": 1, - "super": 1, - "return": 1, - "typeof": 1, - "delete": 1, - "switch": 1, - "export": 1, - "import": 1, - "public": 1, - "static": 1, - "default": 1, - "finally": 1, - "extends": 1, - "package": 1, - "private": 1, - "function": 1, - "continue": 1, - "debugger": 1, - "interface": 1, - "protected": 1, - "instanceof": 1, - "implements": 1 -}; -function skipComment() { - while(index < length){ - const ch = source.charCodeAt(index); - if (isWhiteSpace(ch) || isLineTerminator(ch)) ++index; - else break; - } -} -function scanHexEscape(prefix) { - var i, len, ch, code = 0; - len = prefix === "u" ? 4 : 2; - for(i = 0; i < len; ++i)if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); - } else throwError({}, MessageUnexpectedToken, ILLEGAL); - return String.fromCharCode(code); -} -function scanUnicodeCodePointEscape() { - var ch, code, cu1, cu2; - ch = source[index]; - code = 0; // At least, one hex digit is required. - if (ch === "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - while(index < length){ - ch = source[index++]; - if (!isHexDigit(ch)) break; - code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase()); - } - if (code > 0x10FFFF || ch !== "}") throwError({}, MessageUnexpectedToken, ILLEGAL); - // UTF-16 Encoding - if (code <= 0xFFFF) return String.fromCharCode(code); - cu1 = (code - 0x10000 >> 10) + 0xD800; - cu2 = (code - 0x10000 & 1023) + 0xDC00; - return String.fromCharCode(cu1, cu2); -} -function getEscapedIdentifier() { - var ch, id; - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierStart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id = ch; - } - while(index < length){ - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) break; - ++index; - id += String.fromCharCode(ch); // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 0x75) throwError({}, MessageUnexpectedToken, ILLEGAL); - ++index; - ch = scanHexEscape("u"); - if (!ch || ch === "\\" || !isIdentifierPart(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - id += ch; - } - } - return id; -} -function getIdentifier() { - var start, ch; - start = index++; - while(index < length){ - ch = source.charCodeAt(index); - if (ch === 0x5C) { - // Blackslash (U+005C) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); - } - if (isIdentifierPart(ch)) ++index; - else break; - } - return source.slice(start, index); -} -function scanIdentifier() { - var start, id, type; - start = index; // Backslash (U+005C) starts an escaped character. - id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) type = TokenIdentifier; - else if (keywords.hasOwnProperty(id)) // eslint-disable-line no-prototype-builtins - type = TokenKeyword; - else if (id === "null") type = TokenNullLiteral; - else if (id === "true" || id === "false") type = TokenBooleanLiteral; - else type = TokenIdentifier; - return { - type: type, - value: id, - start: start, - end: index - }; -} // 7.7 Punctuators -function scanPunctuator() { - var start = index, code = source.charCodeAt(index), code2, ch1 = source[index], ch2, ch3, ch4; - switch(code){ - // Check for most common single-character punctuators. - case 0x2E: - case 0x28: - case 0x29: - case 0x3B: - case 0x2C: - case 0x7B: - case 0x7D: - case 0x5B: - case 0x5D: - case 0x3A: - case 0x3F: - case 0x7E: - // ~ - ++index; - return { - type: TokenPunctuator, - value: String.fromCharCode(code), - start: start, - end: index - }; - default: - code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator. - if (code2 === 0x3D) switch(code){ - case 0x2B: - case 0x2D: - case 0x2F: - case 0x3C: - case 0x3E: - case 0x5E: - case 0x7C: - case 0x25: - case 0x26: - case 0x2A: - // * - index += 2; - return { - type: TokenPunctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - start: start, - end: index - }; - case 0x21: - case 0x3D: - // = - index += 2; // !== and === - if (source.charCodeAt(index) === 0x3D) ++index; - return { - type: TokenPunctuator, - value: source.slice(start, index), - start: start, - end: index - }; - } - } // 4-character punctuator: >>>= - ch4 = source.substr(index, 4); - if (ch4 === ">>>=") { - index += 4; - return { - type: TokenPunctuator, - value: ch4, - start: start, - end: index - }; - } // 3-character punctuators: === !== >>> <<= >>= - ch3 = ch4.substr(0, 3); - if (ch3 === ">>>" || ch3 === "<<=" || ch3 === ">>=") { - index += 3; - return { - type: TokenPunctuator, - value: ch3, - start: start, - end: index - }; - } // Other 2-character punctuators: ++ -- << >> && || - ch2 = ch3.substr(0, 2); - if (ch1 === ch2[1] && "+-<>&|".indexOf(ch1) >= 0 || ch2 === "=>") { - index += 2; - return { - type: TokenPunctuator, - value: ch2, - start: start, - end: index - }; - } - if (ch2 === "//") throwError({}, MessageUnexpectedToken, ILLEGAL); - // 1-character punctuators: < > = ! + - * % & | ^ / - if ("<>=!+-*%&|^/".indexOf(ch1) >= 0) { - ++index; - return { - type: TokenPunctuator, - value: ch1, - start: start, - end: index - }; - } - throwError({}, MessageUnexpectedToken, ILLEGAL); -} // 7.8.3 Numeric Literals -function scanHexLiteral(start) { - let number = ""; - while(index < length){ - if (!isHexDigit(source[index])) break; - number += source[index++]; - } - if (number.length === 0) throwError({}, MessageUnexpectedToken, ILLEGAL); - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt("0x" + number, 16), - start: start, - end: index - }; -} -function scanOctalLiteral(start) { - let number = "0" + source[index++]; - while(index < length){ - if (!isOctalDigit(source[index])) break; - number += source[index++]; - } - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseInt(number, 8), - octal: true, - start: start, - end: index - }; -} -function scanNumericLiteral() { - var number, start, ch; - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || ch === ".", "Numeric literal must start with a decimal digit or a decimal point"); - start = index; - number = ""; - if (ch !== ".") { - number = source[index++]; - ch = source[index]; // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === "0") { - if (ch === "x" || ch === "X") { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) return scanOctalLiteral(start); - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) throwError({}, MessageUnexpectedToken, ILLEGAL); - } - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === ".") { - number += source[index++]; - while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - ch = source[index]; - } - if (ch === "e" || ch === "E") { - number += source[index++]; - ch = source[index]; - if (ch === "+" || ch === "-") number += source[index++]; - if (isDecimalDigit(source.charCodeAt(index))) while(isDecimalDigit(source.charCodeAt(index)))number += source[index++]; - else throwError({}, MessageUnexpectedToken, ILLEGAL); - } - if (isIdentifierStart(source.charCodeAt(index))) throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenNumericLiteral, - value: parseFloat(number), - start: start, - end: index - }; -} // 7.8.4 String Literals -function scanStringLiteral() { - var str = "", quote, start, ch, code, octal = false; - quote = source[index]; - assert(quote === "'" || quote === '"', "String literal must starts with a quote"); - start = index; - ++index; - while(index < length){ - ch = source[index++]; - if (ch === quote) { - quote = ""; - break; - } else if (ch === "\\") { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) switch(ch){ - case "u": - case "x": - if (source[index] === "{") { - ++index; - str += scanUnicodeCodePointEscape(); - } else str += scanHexEscape(ch); - break; - case "n": - str += "\n"; - break; - case "r": - str += "\r"; - break; - case "t": - str += " "; - break; - case "b": - str += "\b"; - break; - case "f": - str += "\f"; - break; - case "v": - str += "\v"; - break; - default: - if (isOctalDigit(ch)) { - code = "01234567".indexOf(ch); // \0 is not octal escape sequence - if (code !== 0) octal = true; - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + "01234567".indexOf(source[index++]); // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ("0123".indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) code = code * 8 + "01234567".indexOf(source[index++]); - } - str += String.fromCharCode(code); - } else str += ch; - break; - } - else if (ch === "\r" && source[index] === "\n") ++index; - } else if (isLineTerminator(ch.charCodeAt(0))) break; - else str += ch; - } - if (quote !== "") throwError({}, MessageUnexpectedToken, ILLEGAL); - return { - type: TokenStringLiteral, - value: str, - octal: octal, - start: start, - end: index - }; -} -function testRegExp(pattern, flags) { - let tmp = pattern; - if (flags.indexOf("u") >= 0) // Replace each astral symbol and every Unicode code point - // escape sequence with a single ASCII symbol to avoid throwing on - // regular expressions that are only valid in combination with the - // `/u` flag. - // Note: replacing with the ASCII symbol `x` might cause false - // negatives in unlikely scenarios. For example, `[\u{61}-b]` is a - // perfectly valid pattern that is equivalent to `[a-b]`, but it - // would be replaced by `[x-b]` which throws an error. - tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g, ($0, $1)=>{ - if (parseInt($1, 16) <= 0x10FFFF) return "x"; - throwError({}, MessageInvalidRegExp); - }).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, "x"); - // First, detect invalid regular expressions. - try { - new RegExp(tmp); - } catch (e) { - throwError({}, MessageInvalidRegExp); - } // Return a regular expression object for this pattern-flag pair, or - // `null` in case the current environment doesn't support the flags it - // uses. - try { - return new RegExp(pattern, flags); - } catch (exception) { - return null; - } -} -function scanRegExpBody() { - var ch, str, classMarker, terminated, body; - ch = source[index]; - assert(ch === "/", "Regular expression literal must start with a slash"); - str = source[index++]; - classMarker = false; - terminated = false; - while(index < length){ - ch = source[index++]; - str += ch; - if (ch === "\\") { - ch = source[index++]; // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - str += ch; - } else if (isLineTerminator(ch.charCodeAt(0))) throwError({}, MessageUnterminatedRegExp); - else if (classMarker) { - if (ch === "]") classMarker = false; - } else { - if (ch === "/") { - terminated = true; - break; - } else if (ch === "[") classMarker = true; - } - } - if (!terminated) throwError({}, MessageUnterminatedRegExp); - // Exclude leading and trailing slash. - body = str.substr(1, str.length - 2); - return { - value: body, - literal: str - }; -} -function scanRegExpFlags() { - var ch, str, flags; - str = ""; - flags = ""; - while(index < length){ - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) break; - ++index; - if (ch === "\\" && index < length) throwError({}, MessageUnexpectedToken, ILLEGAL); - else { - flags += ch; - str += ch; - } - } - if (flags.search(/[^gimuy]/g) >= 0) throwError({}, MessageInvalidRegExp, flags); - return { - value: flags, - literal: str - }; -} -function scanRegExp() { - var start, body, flags, value; - lookahead = null; - skipComment(); - start = index; - body = scanRegExpBody(); - flags = scanRegExpFlags(); - value = testRegExp(body.value, flags.value); - return { - literal: body.literal + flags.literal, - value: value, - regex: { - pattern: body.value, - flags: flags.value - }, - start: start, - end: index - }; -} -function isIdentifierName(token) { - return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral; -} -function advance() { - skipComment(); - if (index >= length) return { - type: TokenEOF, - start: index, - end: index - }; - const ch = source.charCodeAt(index); - if (isIdentifierStart(ch)) return scanIdentifier(); - // Very common: ( and ) and ; - if (ch === 0x28 || ch === 0x29 || ch === 0x3B) return scanPunctuator(); - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (ch === 0x27 || ch === 0x22) return scanStringLiteral(); - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (ch === 0x2E) { - if (isDecimalDigit(source.charCodeAt(index + 1))) return scanNumericLiteral(); - return scanPunctuator(); - } - if (isDecimalDigit(ch)) return scanNumericLiteral(); - return scanPunctuator(); -} -function lex() { - const token = lookahead; - index = token.end; - lookahead = advance(); - index = token.end; - return token; -} -function peek() { - const pos = index; - lookahead = advance(); - index = pos; -} -function finishArrayExpression(elements) { - const node = new ASTNode(SyntaxArrayExpression); - node.elements = elements; - return node; -} -function finishBinaryExpression(operator, left, right) { - const node = new ASTNode(operator === "||" || operator === "&&" ? SyntaxLogicalExpression : SyntaxBinaryExpression); - node.operator = operator; - node.left = left; - node.right = right; - return node; -} -function finishCallExpression(callee, args) { - const node = new ASTNode(SyntaxCallExpression); - node.callee = callee; - node.arguments = args; - return node; -} -function finishConditionalExpression(test, consequent, alternate) { - const node = new ASTNode(SyntaxConditionalExpression); - node.test = test; - node.consequent = consequent; - node.alternate = alternate; - return node; -} -function finishIdentifier(name) { - const node = new ASTNode(SyntaxIdentifier); - node.name = name; - return node; -} -function finishLiteral(token) { - const node = new ASTNode(SyntaxLiteral); - node.value = token.value; - node.raw = source.slice(token.start, token.end); - if (token.regex) { - if (node.raw === "//") node.raw = "/(?:)/"; - node.regex = token.regex; - } - return node; -} -function finishMemberExpression(accessor, object, property) { - const node = new ASTNode(SyntaxMemberExpression); - node.computed = accessor === "["; - node.object = object; - node.property = property; - if (!node.computed) property.member = true; - return node; -} -function finishObjectExpression(properties) { - const node = new ASTNode(SyntaxObjectExpression); - node.properties = properties; - return node; -} -function finishProperty(kind, key, value) { - const node = new ASTNode(SyntaxProperty); - node.key = key; - node.value = value; - node.kind = kind; - return node; -} -function finishUnaryExpression(operator, argument) { - const node = new ASTNode(SyntaxUnaryExpression); - node.operator = operator; - node.argument = argument; - node.prefix = true; - return node; -} // Throw an exception -function throwError(token, messageFormat) { - var error, args = Array.prototype.slice.call(arguments, 2), msg = messageFormat.replace(/%(\d)/g, (whole, index)=>{ - assert(index < args.length, "Message reference must be in range"); - return args[index]; - }); - error = new Error(msg); - error.index = index; - error.description = msg; - throw error; -} // Throw an exception because of the token. -function throwUnexpected(token) { - if (token.type === TokenEOF) throwError(token, MessageUnexpectedEOS); - if (token.type === TokenNumericLiteral) throwError(token, MessageUnexpectedNumber); - if (token.type === TokenStringLiteral) throwError(token, MessageUnexpectedString); - if (token.type === TokenIdentifier) throwError(token, MessageUnexpectedIdentifier); - if (token.type === TokenKeyword) throwError(token, MessageUnexpectedReserved); - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, MessageUnexpectedToken, token.value); -} // Expect the next token to match the specified punctuator. -// If not, an exception will be thrown. -function expect(value) { - const token = lex(); - if (token.type !== TokenPunctuator || token.value !== value) throwUnexpected(token); -} // Return true if the next token matches the specified punctuator. -function match(value) { - return lookahead.type === TokenPunctuator && lookahead.value === value; -} // Return true if the next token matches the specified keyword -function matchKeyword(keyword) { - return lookahead.type === TokenKeyword && lookahead.value === keyword; -} // 11.1.4 Array Initialiser -function parseArrayInitialiser() { - const elements = []; - index = lookahead.start; - expect("["); - while(!match("]"))if (match(",")) { - lex(); - elements.push(null); - } else { - elements.push(parseConditionalExpression()); - if (!match("]")) expect(","); - } - lex(); - return finishArrayExpression(elements); -} // 11.1.5 Object Initialiser -function parseObjectPropertyKey() { - index = lookahead.start; - const token = lex(); // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) { - if (token.octal) throwError(token, MessageStrictOctalLiteral); - return finishLiteral(token); - } - return finishIdentifier(token.value); -} -function parseObjectProperty() { - var token, key, id, value; - index = lookahead.start; - token = lookahead; - if (token.type === TokenIdentifier) { - id = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", id, value); - } - if (token.type === TokenEOF || token.type === TokenPunctuator) throwUnexpected(token); - else { - key = parseObjectPropertyKey(); - expect(":"); - value = parseConditionalExpression(); - return finishProperty("init", key, value); - } -} -function parseObjectInitialiser() { - var properties = [], property, name, key, map = {}, toString = String; - index = lookahead.start; - expect("{"); - while(!match("}")){ - property = parseObjectProperty(); - if (property.key.type === SyntaxIdentifier) name = property.key.name; - else name = toString(property.key.value); - key = "$" + name; - if (Object.prototype.hasOwnProperty.call(map, key)) throwError({}, MessageStrictDuplicateProperty); - else map[key] = true; - properties.push(property); - if (!match("}")) expect(","); - } - expect("}"); - return finishObjectExpression(properties); -} // 11.1.6 The Grouping Operator -function parseGroupExpression() { - expect("("); - const expr = parseExpression(); - expect(")"); - return expr; -} // 11.1 Primary Expressions -const legalKeywords = { - "if": 1 -}; -function parsePrimaryExpression() { - var type, token, expr; - if (match("(")) return parseGroupExpression(); - if (match("[")) return parseArrayInitialiser(); - if (match("{")) return parseObjectInitialiser(); - type = lookahead.type; - index = lookahead.start; - if (type === TokenIdentifier || legalKeywords[lookahead.value]) expr = finishIdentifier(lex().value); - else if (type === TokenStringLiteral || type === TokenNumericLiteral) { - if (lookahead.octal) throwError(lookahead, MessageStrictOctalLiteral); - expr = finishLiteral(lex()); - } else if (type === TokenKeyword) throw new Error(DISABLED); - else if (type === TokenBooleanLiteral) { - token = lex(); - token.value = token.value === "true"; - expr = finishLiteral(token); - } else if (type === TokenNullLiteral) { - token = lex(); - token.value = null; - expr = finishLiteral(token); - } else if (match("/") || match("/=")) { - expr = finishLiteral(scanRegExp()); - peek(); - } else throwUnexpected(lex()); - return expr; -} // 11.2 Left-Hand-Side Expressions -function parseArguments() { - const args = []; - expect("("); - if (!match(")")) while(index < length){ - args.push(parseConditionalExpression()); - if (match(")")) break; - expect(","); - } - expect(")"); - return args; -} -function parseNonComputedProperty() { - index = lookahead.start; - const token = lex(); - if (!isIdentifierName(token)) throwUnexpected(token); - return finishIdentifier(token.value); -} -function parseNonComputedMember() { - expect("."); - return parseNonComputedProperty(); -} -function parseComputedMember() { - expect("["); - const expr = parseExpression(); - expect("]"); - return expr; -} -function parseLeftHandSideExpressionAllowCall() { - var expr, args, property; - expr = parsePrimaryExpression(); - for(;;){ - if (match(".")) { - property = parseNonComputedMember(); - expr = finishMemberExpression(".", expr, property); - } else if (match("(")) { - args = parseArguments(); - expr = finishCallExpression(expr, args); - } else if (match("[")) { - property = parseComputedMember(); - expr = finishMemberExpression("[", expr, property); - } else break; - } - return expr; -} // 11.3 Postfix Expressions -function parsePostfixExpression() { - const expr = parseLeftHandSideExpressionAllowCall(); - if (lookahead.type === TokenPunctuator) { - if (match("++") || match("--")) throw new Error(DISABLED); - } - return expr; -} // 11.4 Unary Operators -function parseUnaryExpression() { - var token, expr; - if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) expr = parsePostfixExpression(); - else if (match("++") || match("--")) throw new Error(DISABLED); - else if (match("+") || match("-") || match("~") || match("!")) { - token = lex(); - expr = parseUnaryExpression(); - expr = finishUnaryExpression(token.value, expr); - } else if (matchKeyword("delete") || matchKeyword("void") || matchKeyword("typeof")) throw new Error(DISABLED); - else expr = parsePostfixExpression(); - return expr; -} -function binaryPrecedence(token) { - let prec = 0; - if (token.type !== TokenPunctuator && token.type !== TokenKeyword) return 0; - switch(token.value){ - case "||": - prec = 1; - break; - case "&&": - prec = 2; - break; - case "|": - prec = 3; - break; - case "^": - prec = 4; - break; - case "&": - prec = 5; - break; - case "==": - case "!=": - case "===": - case "!==": - prec = 6; - break; - case "<": - case ">": - case "<=": - case ">=": - case "instanceof": - case "in": - prec = 7; - break; - case "<<": - case ">>": - case ">>>": - prec = 8; - break; - case "+": - case "-": - prec = 9; - break; - case "*": - case "/": - case "%": - prec = 11; - break; - } - return prec; -} // 11.5 Multiplicative Operators -// 11.6 Additive Operators -// 11.7 Bitwise Shift Operators -// 11.8 Relational Operators -// 11.9 Equality Operators -// 11.10 Binary Bitwise Operators -// 11.11 Binary Logical Operators -function parseBinaryExpression() { - var marker, markers, expr, token, prec, stack, right, operator, left, i; - marker = lookahead; - left = parseUnaryExpression(); - token = lookahead; - prec = binaryPrecedence(token); - if (prec === 0) return left; - token.prec = prec; - lex(); - markers = [ - marker, - lookahead - ]; - right = parseUnaryExpression(); - stack = [ - left, - token, - right - ]; - while((prec = binaryPrecedence(lookahead)) > 0){ - // Reduce: make a binary expression from the three topmost entries. - while(stack.length > 2 && prec <= stack[stack.length - 2].prec){ - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - markers.pop(); - expr = finishBinaryExpression(operator, left, right); - stack.push(expr); - } // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - markers.push(lookahead); - expr = parseUnaryExpression(); - stack.push(expr); - } // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - markers.pop(); - while(i > 1){ - markers.pop(); - expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - } - return expr; -} // 11.12 Conditional Operator -function parseConditionalExpression() { - var expr, consequent, alternate; - expr = parseBinaryExpression(); - if (match("?")) { - lex(); - consequent = parseConditionalExpression(); - expect(":"); - alternate = parseConditionalExpression(); - expr = finishConditionalExpression(expr, consequent, alternate); + if (!this.events[key]) { + const id = this.id(); + this.streams.push({ + id: id, + source: source, + type: type + }); + this.events[key] = id; + } + return this.events[key]; + }, + // ---- + hasOwnSignal (name) { + return (0, _vegaUtil.hasOwnProperty)(this.signals, name); + }, + addSignal (name, value) { + if (this.hasOwnSignal(name)) (0, _vegaUtil.error)("Duplicate signal name: " + (0, _vegaUtil.stringValue)(name)); + const op = value instanceof Entry ? value : this.add(operator(value)); + return this.signals[name] = op; + }, + getSignal (name) { + if (!this.signals[name]) (0, _vegaUtil.error)("Unrecognized signal name: " + (0, _vegaUtil.stringValue)(name)); + return this.signals[name]; + }, + signalRef (s) { + if (this.signals[s]) return ref(this.signals[s]); + else if (!(0, _vegaUtil.hasOwnProperty)(this.lambdas, s)) this.lambdas[s] = this.add(operator(null)); + return ref(this.lambdas[s]); + }, + parseLambdas () { + const code = Object.keys(this.lambdas); + for(let i = 0, n = code.length; i < n; ++i){ + const s = code[i], e = (0, _vegaFunctions.parseExpression)(s, this), op = this.lambdas[s]; + op.params = e.$params; + op.update = e.$expr; + } + }, + property (spec) { + return spec && spec.signal ? this.signalRef(spec.signal) : spec; + }, + objectProperty (spec) { + return !spec || !(0, _vegaUtil.isObject)(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec)); + }, + exprRef (code, name) { + const params = { + expr: (0, _vegaFunctions.parseExpression)(code, this) + }; + if (name) params.expr.$name = name; + return ref(this.add(Expression(params))); + }, + addBinding (name, bind) { + if (!this.bindings) (0, _vegaUtil.error)("Nested signals do not support binding: " + (0, _vegaUtil.stringValue)(name)); + this.bindings.push((0, _vegaUtil.extend)({ + signal: name + }, bind)); + }, + // ---- + addScaleProj (name, transform) { + if ((0, _vegaUtil.hasOwnProperty)(this.scales, name)) (0, _vegaUtil.error)("Duplicate scale or projection name: " + (0, _vegaUtil.stringValue)(name)); + this.scales[name] = this.add(transform); + }, + addScale (name, params) { + this.addScaleProj(name, Scale(params)); + }, + addProjection (name, params) { + this.addScaleProj(name, Projection(params)); + }, + getScale (name) { + if (!this.scales[name]) (0, _vegaUtil.error)("Unrecognized scale name: " + (0, _vegaUtil.stringValue)(name)); + return this.scales[name]; + }, + scaleRef (name) { + return ref(this.getScale(name)); + }, + scaleType (name) { + return this.getScale(name).params.type; + }, + projectionRef (name) { + return this.scaleRef(name); + }, + projectionType (name) { + return this.scaleType(name); + }, + // ---- + addData (name, dataScope) { + if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); + return this.data[name] = dataScope; + }, + getData (name) { + if (!this.data[name]) (0, _vegaUtil.error)("Undefined data set name: " + (0, _vegaUtil.stringValue)(name)); + return this.data[name]; + }, + addDataPipeline (name, entries) { + if ((0, _vegaUtil.hasOwnProperty)(this.data, name)) (0, _vegaUtil.error)("Duplicate data set name: " + (0, _vegaUtil.stringValue)(name)); + return this.addData(name, DataScope.fromEntries(this, entries)); } - return expr; -} // 11.14 Comma Operator -function parseExpression() { - const expr = parseConditionalExpression(); - if (match(",")) throw new Error(DISABLED); // no sequence expressions - return expr; -} -function parser(code) { - source = code; - index = 0; - length = source.length; - lookahead = null; - peek(); - const expr = parseExpression(); - if (lookahead.type !== TokenEOF) throw new Error("Unexpect token after expression."); - return expr; -} -var Constants = { - NaN: "NaN", - E: "Math.E", - LN2: "Math.LN2", - LN10: "Math.LN10", - LOG2E: "Math.LOG2E", - LOG10E: "Math.LOG10E", - PI: "Math.PI", - SQRT1_2: "Math.SQRT1_2", - SQRT2: "Math.SQRT2", - MIN_VALUE: "Number.MIN_VALUE", - MAX_VALUE: "Number.MAX_VALUE" }; -function Functions(codegen) { - function fncall(name, args, cast, type) { - let obj = codegen(args[0]); - if (cast) { - obj = cast + "(" + obj + ")"; - if (cast.lastIndexOf("new ", 0) === 0) obj = "(" + obj + ")"; - } - return obj + "." + name + (type < 0 ? "" : type === 0 ? "()" : "(" + args.slice(1).map(codegen).join(",") + ")"); +function propertyLambda(spec) { + return ((0, _vegaUtil.isArray)(spec) ? arrayLambda : objectLambda)(spec); +} +function arrayLambda(array) { + const n = array.length; + let code = "["; + for(let i = 0; i < n; ++i){ + const value = array[i]; + code += (i > 0 ? "," : "") + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); } - function fn(name, cast, type) { - return (args)=>fncall(name, args, cast, type); + return code + "]"; +} +function objectLambda(obj) { + let code = "{", i = 0, key, value; + for(key in obj){ + value = obj[key]; + code += (++i > 1 ? "," : "") + (0, _vegaUtil.stringValue)(key) + ":" + ((0, _vegaUtil.isObject)(value) ? value.signal || propertyLambda(value) : (0, _vegaUtil.stringValue)(value)); } - const DATE = "new Date", STRING = "String", REGEXP = "RegExp"; + return code + "}"; +} +/** + * Standard configuration defaults for Vega specification parsing. + * Users can provide their own (sub-)set of these default values + * by passing in a config object to the top-level parse method. + */ function defaults() { + const defaultFont = "sans-serif", defaultSymbolSize = 30, defaultStrokeWidth = 2, defaultColor = "#4c78a8", black = "#000", gray = "#888", lightGray = "#ddd"; return { - // MATH functions - isNaN: "Number.isNaN", - isFinite: "Number.isFinite", - abs: "Math.abs", - acos: "Math.acos", - asin: "Math.asin", - atan: "Math.atan", - atan2: "Math.atan2", - ceil: "Math.ceil", - cos: "Math.cos", - exp: "Math.exp", - floor: "Math.floor", - log: "Math.log", - max: "Math.max", - min: "Math.min", - pow: "Math.pow", - random: "Math.random", - round: "Math.round", - sin: "Math.sin", - sqrt: "Math.sqrt", - tan: "Math.tan", - clamp: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to clamp function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to clamp function."); - const a = args.map(codegen); - return "Math.max(" + a[1] + ", Math.min(" + a[2] + "," + a[0] + "))"; + // default visualization description + description: "Vega visualization", + // default padding around visualization + padding: 0, + // default for automatic sizing; options: 'none', 'pad', 'fit' + // or provide an object (e.g., {'type': 'pad', 'resize': true}) + autosize: "pad", + // default view background color + // covers the entire view component + background: null, + // default event handling configuration + // preventDefault for view-sourced event types except 'wheel' + events: { + defaults: { + allow: [ + "wheel" + ] + } }, - // DATE functions - now: "Date.now", - utc: "Date.UTC", - datetime: DATE, - date: fn("getDate", DATE, 0), - day: fn("getDay", DATE, 0), - year: fn("getFullYear", DATE, 0), - month: fn("getMonth", DATE, 0), - hours: fn("getHours", DATE, 0), - minutes: fn("getMinutes", DATE, 0), - seconds: fn("getSeconds", DATE, 0), - milliseconds: fn("getMilliseconds", DATE, 0), - time: fn("getTime", DATE, 0), - timezoneoffset: fn("getTimezoneOffset", DATE, 0), - utcdate: fn("getUTCDate", DATE, 0), - utcday: fn("getUTCDay", DATE, 0), - utcyear: fn("getUTCFullYear", DATE, 0), - utcmonth: fn("getUTCMonth", DATE, 0), - utchours: fn("getUTCHours", DATE, 0), - utcminutes: fn("getUTCMinutes", DATE, 0), - utcseconds: fn("getUTCSeconds", DATE, 0), - utcmilliseconds: fn("getUTCMilliseconds", DATE, 0), - // sequence functions - length: fn("length", null, -1), - // STRING functions - parseFloat: "parseFloat", - parseInt: "parseInt", - upper: fn("toUpperCase", STRING, 0), - lower: fn("toLowerCase", STRING, 0), - substring: fn("substring", STRING), - split: fn("split", STRING), - trim: fn("trim", STRING, 0), - // REGEXP functions - regexp: REGEXP, - test: fn("test", REGEXP), - // Control Flow functions - if: function(args) { - if (args.length < 3) (0, _vegaUtil.error)("Missing arguments to if function."); - if (args.length > 3) (0, _vegaUtil.error)("Too many arguments to if function."); - const a = args.map(codegen); - return "(" + a[0] + "?" + a[1] + ":" + a[2] + ")"; - } - }; -} -function stripQuotes(s) { - const n = s && s.length - 1; - return n && (s[0] === '"' && s[n] === '"' || s[0] === "'" && s[n] === "'") ? s.slice(1, -1) : s; -} -function codegen(opt) { - opt = opt || {}; - const allowed = opt.allowed ? (0, _vegaUtil.toSet)(opt.allowed) : {}, forbidden = opt.forbidden ? (0, _vegaUtil.toSet)(opt.forbidden) : {}, constants = opt.constants || Constants, functions = (opt.functions || Functions)(visit), globalvar = opt.globalvar, fieldvar = opt.fieldvar, outputGlobal = (0, _vegaUtil.isFunction)(globalvar) ? globalvar : (id)=>"".concat(globalvar, '["').concat(id, '"]'); - let globals = {}, fields = {}, memberDepth = 0; - function visit(ast) { - if ((0, _vegaUtil.isString)(ast)) return ast; - const generator = Generators[ast.type]; - if (generator == null) (0, _vegaUtil.error)("Unsupported type: " + ast.type); - return generator(ast); - } - const Generators = { - Literal: (n)=>n.raw, - Identifier: (n)=>{ - const id = n.name; - if (memberDepth > 0) return id; - else if ((0, _vegaUtil.hasOwnProperty)(forbidden, id)) return (0, _vegaUtil.error)("Illegal identifier: " + id); - else if ((0, _vegaUtil.hasOwnProperty)(constants, id)) return constants[id]; - else if ((0, _vegaUtil.hasOwnProperty)(allowed, id)) return id; - else { - globals[id] = 1; - return outputGlobal(id); + // defaults for top-level group marks + // accepts mark properties (fill, stroke, etc) + // covers the data rectangle within group width/height + group: null, + // defaults for basic mark types + // each subset accepts mark properties (fill, stroke, etc) + mark: null, + arc: { + fill: defaultColor + }, + area: { + fill: defaultColor + }, + image: null, + line: { + stroke: defaultColor, + strokeWidth: defaultStrokeWidth + }, + path: { + stroke: defaultColor + }, + rect: { + fill: defaultColor + }, + rule: { + stroke: black + }, + shape: { + stroke: defaultColor + }, + symbol: { + fill: defaultColor, + size: 64 + }, + text: { + fill: black, + font: defaultFont, + fontSize: 11 + }, + trail: { + fill: defaultColor, + size: defaultStrokeWidth + }, + // style definitions + style: { + // axis & legend labels + "guide-label": { + fill: black, + font: defaultFont, + fontSize: 10 + }, + // axis & legend titles + "guide-title": { + fill: black, + font: defaultFont, + fontSize: 11, + fontWeight: "bold" + }, + // headers, including chart title + "group-title": { + fill: black, + font: defaultFont, + fontSize: 13, + fontWeight: "bold" + }, + // chart subtitle + "group-subtitle": { + fill: black, + font: defaultFont, + fontSize: 12 + }, + // defaults for styled point marks in Vega-Lite + point: { + size: defaultSymbolSize, + strokeWidth: defaultStrokeWidth, + shape: "circle" + }, + circle: { + size: defaultSymbolSize, + strokeWidth: defaultStrokeWidth + }, + square: { + size: defaultSymbolSize, + strokeWidth: defaultStrokeWidth, + shape: "square" + }, + // defaults for styled group marks in Vega-Lite + cell: { + fill: "transparent", + stroke: lightGray } }, - MemberExpression: (n)=>{ - const d = !n.computed, o = visit(n.object); - if (d) memberDepth += 1; - const p = visit(n.property); - if (o === fieldvar) // strip quotes to sanitize field name (#1653) - fields[stripQuotes(p)] = 1; - if (d) memberDepth -= 1; - return o + (d ? "." + p : "[" + p + "]"); + // defaults for title + title: { + orient: "top", + anchor: "middle", + offset: 4, + subtitlePadding: 3 }, - CallExpression: (n)=>{ - if (n.callee.type !== "Identifier") (0, _vegaUtil.error)("Illegal callee type: " + n.callee.type); - const callee = n.callee.name, args = n.arguments, fn = (0, _vegaUtil.hasOwnProperty)(functions, callee) && functions[callee]; - if (!fn) (0, _vegaUtil.error)("Unrecognized function: " + callee); - return (0, _vegaUtil.isFunction)(fn) ? fn(args) : fn + "(" + args.map(visit).join(",") + ")"; + // defaults for axes + axis: { + minExtent: 0, + maxExtent: 200, + bandPosition: 0.5, + domain: true, + domainWidth: 1, + domainColor: gray, + grid: false, + gridWidth: 1, + gridColor: lightGray, + labels: true, + labelAngle: 0, + labelLimit: 180, + labelOffset: 0, + labelPadding: 2, + ticks: true, + tickColor: gray, + tickOffset: 0, + tickRound: true, + tickSize: 5, + tickWidth: 1, + titlePadding: 4 }, - ArrayExpression: (n)=>"[" + n.elements.map(visit).join(",") + "]", - BinaryExpression: (n)=>"(" + visit(n.left) + " " + n.operator + " " + visit(n.right) + ")", - UnaryExpression: (n)=>"(" + n.operator + visit(n.argument) + ")", - ConditionalExpression: (n)=>"(" + visit(n.test) + "?" + visit(n.consequent) + ":" + visit(n.alternate) + ")", - LogicalExpression: (n)=>"(" + visit(n.left) + n.operator + visit(n.right) + ")", - ObjectExpression: (n)=>"{" + n.properties.map(visit).join(",") + "}", - Property: (n)=>{ - memberDepth += 1; - const k = visit(n.key); - memberDepth -= 1; - return k + ":" + visit(n.value); + // correction for centering bias + axisBand: { + tickOffset: -0.5 + }, + // defaults for cartographic projection + projection: { + type: "mercator" + }, + // defaults for legends + legend: { + orient: "right", + padding: 0, + gridAlign: "each", + columnPadding: 10, + rowPadding: 2, + symbolDirection: "vertical", + gradientDirection: "vertical", + gradientLength: 200, + gradientThickness: 16, + gradientStrokeColor: lightGray, + gradientStrokeWidth: 0, + gradientLabelOffset: 2, + labelAlign: "left", + labelBaseline: "middle", + labelLimit: 160, + labelOffset: 4, + labelOverlap: true, + symbolLimit: 30, + symbolType: "circle", + symbolSize: 100, + symbolOffset: 0, + symbolStrokeWidth: 1.5, + symbolBaseFillColor: "transparent", + symbolBaseStrokeColor: gray, + titleLimit: 180, + titleOrient: "top", + titlePadding: 5, + layout: { + offset: 18, + direction: "horizontal", + left: { + direction: "vertical" + }, + right: { + direction: "vertical" + } + } + }, + // defaults for scale ranges + range: { + category: { + scheme: "tableau10" + }, + ordinal: { + scheme: "blues" + }, + heatmap: { + scheme: "yellowgreenblue" + }, + ramp: { + scheme: "blues" + }, + diverging: { + scheme: "blueorange", + extent: [ + 1, + 0 + ] + }, + symbol: [ + "circle", + "square", + "triangle-up", + "cross", + "diamond", + "triangle-right", + "triangle-down", + "triangle-left" + ] } }; - function codegen(ast) { - const result = { - code: visit(ast), - globals: Object.keys(globals), - fields: Object.keys(fields) - }; - globals = {}; - fields = {}; - return result; - } - codegen.functions = functions; - codegen.constants = constants; - return codegen; +} +function parse(spec, config, options) { + if (!(0, _vegaUtil.isObject)(spec)) (0, _vegaUtil.error)("Input Vega specification must be an object."); + config = (0, _vegaUtil.mergeConfig)(defaults(), config, spec.config); + return parseView(spec, new Scope(config, options)).toRuntime(); } -},{"vega-util":"bApja","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gXMNx":[function(require,module,exports) { +},{"vega-util":"bApja","vega-functions":"iuqsd","vega-event-selector":"gXMNx","vega-scale":"bEydG","vega-dataflow":"3NitK","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"gXMNx":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "selector", ()=>eventSelector); +parcelHelpers.export(exports, "parseSelector", ()=>eventSelector); const VIEW = "view", LBRACK = "[", RBRACK = "]", LBRACE = "{", RBRACE = "}", COLON = ":", COMMA = ",", NAME = "@", GT = ">", ILLEGAL = /[[\]{}]/, DEFAULT_MARKS = { "*": 1, arc: 1, diff --git a/docs/tests/v4/umd/qualBarChartTest.html b/docs/tests/v4/umd/qualBarChartTest.html index 13d320f47..43f196af1 100644 --- a/docs/tests/v4/umd/qualBarChartTest.html +++ b/docs/tests/v4/umd/qualBarChartTest.html @@ -8,7 +8,7 @@ - + diff --git a/docs/tests/v4/umd/quanBarChartTest.html b/docs/tests/v4/umd/quanBarChartTest.html index e210e7f75..736b596e9 100644 --- a/docs/tests/v4/umd/quanBarChartTest.html +++ b/docs/tests/v4/umd/quanBarChartTest.html @@ -8,7 +8,7 @@ - + diff --git a/docs/tests/v4/umd/sanddance-react.html b/docs/tests/v4/umd/sanddance-react.html index a0ea9ca90..5ee2fe85d 100644 --- a/docs/tests/v4/umd/sanddance-react.html +++ b/docs/tests/v4/umd/sanddance-react.html @@ -17,7 +17,7 @@ - + diff --git a/docs/tests/v4/umd/scatterplotTest.html b/docs/tests/v4/umd/scatterplotTest.html index bf7a9ab9a..3000eb627 100644 --- a/docs/tests/v4/umd/scatterplotTest.html +++ b/docs/tests/v4/umd/scatterplotTest.html @@ -8,7 +8,7 @@ - + diff --git a/docs/tests/v4/umd/test.html b/docs/tests/v4/umd/test.html index f13baf0a1..6edcb6c0d 100644 --- a/docs/tests/v4/umd/test.html +++ b/docs/tests/v4/umd/test.html @@ -8,7 +8,7 @@ - + diff --git a/docs/tests/v4/umd/transforms.html b/docs/tests/v4/umd/transforms.html index 8152e3ed3..e610eaeb7 100644 --- a/docs/tests/v4/umd/transforms.html +++ b/docs/tests/v4/umd/transforms.html @@ -8,7 +8,7 @@ - + diff --git a/docs/tests/v4/umd/transition.html b/docs/tests/v4/umd/transition.html index af397b4da..3ffaab495 100644 --- a/docs/tests/v4/umd/transition.html +++ b/docs/tests/v4/umd/transition.html @@ -10,7 +10,7 @@ - +
    diff --git a/docs/tests/v4/umd/treeMapTest.html b/docs/tests/v4/umd/treeMapTest.html index c90f0af9a..0d30c1531 100644 --- a/docs/tests/v4/umd/treeMapTest.html +++ b/docs/tests/v4/umd/treeMapTest.html @@ -8,7 +8,7 @@ - + diff --git a/docs/tests/v4/umd/vega-morphcharts.test.html b/docs/tests/v4/umd/vega-morphcharts.test.html index 1d6241205..38cb22f75 100644 --- a/docs/tests/v4/umd/vega-morphcharts.test.html +++ b/docs/tests/v4/umd/vega-morphcharts.test.html @@ -7,7 +7,7 @@ vega-morphcharts test - + diff --git a/extensions/azdata-sanddance/package-lock.json b/extensions/azdata-sanddance/package-lock.json index 14e143c87..72a56c7c7 100644 --- a/extensions/azdata-sanddance/package-lock.json +++ b/extensions/azdata-sanddance/package-lock.json @@ -33,9 +33,9 @@ } }, "node_modules/@types/azdata": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@types/azdata/-/azdata-1.37.0.tgz", - "integrity": "sha512-chmfkfvv9pfvBqWtFyvYatb4vvv7ljlySMFH1kDIXRXQLZ6iswzW2+RnzqKpB51jL4gmjUEKB7Rf+WloDaN7rg==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@types/azdata/-/azdata-1.39.0.tgz", + "integrity": "sha512-oiGmy9daoAmd619SCbAXh1A0NYXaxyt9rGOk58OiDoH+ULGLWd6qHJY2hv/8DIF+1my7i3x+TJrydgERPQO2QA==", "dev": true, "dependencies": { "@types/vscode": "*" @@ -55,9 +55,9 @@ } }, "node_modules/@types/vscode": { - "version": "1.69.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.69.0.tgz", - "integrity": "sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA==", + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.71.0.tgz", + "integrity": "sha512-nB50bBC9H/x2CpwW9FzRRRDrTZ7G0/POttJojvN/LiVfzTGfLyQIje1L1QRMdFXK9G41k5UJN/1B9S4of7CSzA==", "dev": true }, "node_modules/agent-base": { @@ -532,9 +532,9 @@ "dev": true }, "@types/azdata": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@types/azdata/-/azdata-1.37.0.tgz", - "integrity": "sha512-chmfkfvv9pfvBqWtFyvYatb4vvv7ljlySMFH1kDIXRXQLZ6iswzW2+RnzqKpB51jL4gmjUEKB7Rf+WloDaN7rg==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@types/azdata/-/azdata-1.39.0.tgz", + "integrity": "sha512-oiGmy9daoAmd619SCbAXh1A0NYXaxyt9rGOk58OiDoH+ULGLWd6qHJY2hv/8DIF+1my7i3x+TJrydgERPQO2QA==", "dev": true, "requires": { "@types/vscode": "*" @@ -554,9 +554,9 @@ } }, "@types/vscode": { - "version": "1.69.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.69.0.tgz", - "integrity": "sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA==", + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.71.0.tgz", + "integrity": "sha512-nB50bBC9H/x2CpwW9FzRRRDrTZ7G0/POttJojvN/LiVfzTGfLyQIje1L1QRMdFXK9G41k5UJN/1B9S4of7CSzA==", "dev": true }, "agent-base": { diff --git a/extensions/common-backend/package-lock.json b/extensions/common-backend/package-lock.json index 082f2f8bc..8088c5206 100644 --- a/extensions/common-backend/package-lock.json +++ b/extensions/common-backend/package-lock.json @@ -13,17 +13,17 @@ } }, "node_modules/@types/vscode": { - "version": "1.69.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.69.0.tgz", - "integrity": "sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA==", + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.71.0.tgz", + "integrity": "sha512-nB50bBC9H/x2CpwW9FzRRRDrTZ7G0/POttJojvN/LiVfzTGfLyQIje1L1QRMdFXK9G41k5UJN/1B9S4of7CSzA==", "dev": true } }, "dependencies": { "@types/vscode": { - "version": "1.69.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.69.0.tgz", - "integrity": "sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA==", + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.71.0.tgz", + "integrity": "sha512-nB50bBC9H/x2CpwW9FzRRRDrTZ7G0/POttJojvN/LiVfzTGfLyQIje1L1QRMdFXK9G41k5UJN/1B9S4of7CSzA==", "dev": true } } diff --git a/extensions/common-frontend/package-lock.json b/extensions/common-frontend/package-lock.json index 9ed074d2f..d0c5b6430 100644 --- a/extensions/common-frontend/package-lock.json +++ b/extensions/common-frontend/package-lock.json @@ -12,7 +12,7 @@ "@fluentui/react": "^8", "react": ">=16.8.0 <18.0.0", "react-dom": ">=16.8.0 <18.0.0", - "vega": "5.20" + "vega": "5.22.1" }, "devDependencies": { "@types/react": ">=16.8.0 <18.0.0", @@ -20,43 +20,43 @@ } }, "node_modules/@fluentui/date-time-utilities": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.1.tgz", - "integrity": "sha512-i8GXoIbPipug5cGZ4Dei0oXu7L4wia6DGMAzvabvSHwTjprbR5YjRrrr4UVtBr9gNx1v4Iv1yeD3XSc8DI9JDg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.2.tgz", + "integrity": "sha512-u540ACUdnC+Jms1DIHkho80eJmoCg/LtAzR4a/1Tum6PicxWv59UYp9Ba7qFbIw+mrjWnwX/2ZmBpqTy9Rgn7w==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/dom-utilities": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.1.tgz", - "integrity": "sha512-na1+hTRDg2xHSu3Vrr8ITrQpoFChOCSpqTYjLvdRD081p8o61hk9DeaXkUWr8E+2TZ06BXi2t0VyL4wfrYLU8Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.2.tgz", + "integrity": "sha512-puklLc6Jvg279OGagqkSfuHML6ckBhw3gJakdvIZHKeJiduh+34U4Finl3K24yBSXzG2WsN+LwLTd1Vcociy+g==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/font-icons-mdl2": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.3.tgz", - "integrity": "sha512-YKyCTVvV5qpSOS9EsulA+QYLyUEw7QhLzmcBWC4USu0WPhSy/cOfUUvemRl2JSsxErfuOM50OI80RKfuqNwsTA==", + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.13.tgz", + "integrity": "sha512-rXJpRKxHg68zCKTrcmouklGpE/laXlTQaLyBuft8EcPczZX3aupYPZda9sp+Kknolmd3Lvypn2D9Vf+McJDtwg==", "dependencies": { - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "node_modules/@fluentui/foundation-legacy": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.10.tgz", - "integrity": "sha512-/ku+mSLTEIKf/HGavt9k+/njgAXGHXu4hoxRYRHbYr1O9hUe50cm5DctPQg+z/YDPNzsb1ltSmNqgWPvBOSW6A==", - "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.2.20", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.20.tgz", + "integrity": "sha512-iyJSr5Y/yYt0x9yBLP+aIy5U9tiDlgbxJZo6enNwFo0zEuBeWg/2L2IgAUzAwJB2vb73oQBlQt8In602R0Vj8w==", + "dependencies": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -65,39 +65,39 @@ } }, "node_modules/@fluentui/keyboard-key": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.1.tgz", - "integrity": "sha512-8WkNPh0tnzrrZYs19qN8Zavaebz9FHyTFXKTv0QJ55rZ7uQfAV7VHxS/74aUP4bqeRWJtzaOJKUxkjEAPcDbug==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.2.tgz", + "integrity": "sha512-6WdMrnFpY94uWefUGGRqO4WiS6R+Kso6/FR95SxXMuS6kfnjGJCHzywFGZcN5OU1fX067Zna4aPQ/nDwYMgBPw==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/merge-styles": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.2.tgz", - "integrity": "sha512-ax8izl48JJuymEuvJzvNH22GHmpPEWLP+h4doyFZ/9IhR9AEycNc2rGBthZ5FiuktnFgusNag1AHr/WCj5pttw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.3.tgz", + "integrity": "sha512-bHWftN3zTp1bbBfmAEH8YK9UURWj2mffw7b7VaW2Og1qxwv3GMSza1cyv/d3EVqpMJ8AVwFv3mbi9p1ieMN9mw==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/react": { - "version": "8.81.1", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.81.1.tgz", - "integrity": "sha512-iTdfjWMsMwdvc2ZRQBg/nBUhX0mmttjH0pbMZ8RgcMLuSDauQnDwMN3gEWRZ+fInUGcqTE1hzEdoLS75Dl3bAg==", - "dependencies": { - "@fluentui/date-time-utilities": "^8.5.1", - "@fluentui/font-icons-mdl2": "^8.4.3", - "@fluentui/foundation-legacy": "^8.2.10", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/react-focus": "^8.7.3", - "@fluentui/react-hooks": "^8.6.1", + "version": "8.94.2", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.94.2.tgz", + "integrity": "sha512-G0fiTdq4vGCm+kSQh3hQ2szG/r2wXmRsD/iNq1ZoWSKoyKViP/yFmothhUgkarFbydnWbDzb+iYZQ5+8J8wgTA==", + "dependencies": { + "@fluentui/date-time-utilities": "^8.5.2", + "@fluentui/font-icons-mdl2": "^8.4.13", + "@fluentui/foundation-legacy": "^8.2.20", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/react-focus": "^8.8.5", + "@fluentui/react-hooks": "^8.6.11", "@fluentui/react-portal-compat-context": "^9.0.1", - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" }, @@ -109,15 +109,15 @@ } }, "node_modules/@fluentui/react-focus": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.7.3.tgz", - "integrity": "sha512-d/AwXzcPMoiPpzbpkHpfTyDcvYvga2DWNYq1Rh+QJsAGzN34bimu5xSxE21mbeXyz+TYx7yglElGp7GlT33s3Q==", - "dependencies": { - "@fluentui/keyboard-key": "^0.4.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.8.5.tgz", + "integrity": "sha512-+BNjLHKpA0IqUToY9MMARGpYg3ngBmW+1KhJeVxCUnAESNMwnzJ6hx/3MOYUA/FPbYfBvs8QnpTZrrOd7sLG/A==", + "dependencies": { + "@fluentui/keyboard-key": "^0.4.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -126,13 +126,13 @@ } }, "node_modules/@fluentui/react-hooks": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.1.tgz", - "integrity": "sha512-t9l+O+ZjTiGSuKQ9SxqRRo50C1h69jZFzb+s/vc0vBtvsIoYfR+Jj8qH3hxtkhv/iC+SCj1dgDCEJwGyH7pf3Q==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.11.tgz", + "integrity": "sha512-qQAg/Hqchz0BGL1KJhg211uhhBDxF0bvMCdVKVoeeJNj4q3Cdvam87zHi7/W5gP8i6jgCILr7MrV3dH9umA/Sw==", "dependencies": { - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -153,11 +153,11 @@ } }, "node_modules/@fluentui/react-window-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.1.tgz", - "integrity": "sha512-Y0j+lAYKeD/qswzFZWPkHmvtBlRS2WPJIkpyGvfBVZaCeq3DGKRppoOCOmED762bKOXzM/G/ZNEcBa7CY1gkYw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.2.tgz", + "integrity": "sha512-/1uQ01HqGRpUOMozUy1FYmxp6blZZvtKN50rqxnQJr8O1bcpg8lJzhq064E8EjOXfdNh47zKSloP4ebbDI5vrw==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" }, "peerDependencies": { @@ -166,34 +166,34 @@ } }, "node_modules/@fluentui/set-version": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.1.tgz", - "integrity": "sha512-SZMP2P7RSUuVHYWIBcnlxYruvchlnoqensCvoaGeiH0FisO7etwJdFwKNegV7WEA9uS5ZOK3qVmyvD71DxaSng==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.2.tgz", + "integrity": "sha512-Vg20KZ0ufgWjxx6GFbqC5wiVxXZDUWgNT0r0By/Eyj4bUSb1jG6lmf5z1oY1dUX0YS6Cp5e6GnvbNdXg5E7orA==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/style-utilities": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.2.tgz", - "integrity": "sha512-sDNsXUXdk4qAllADH46o0Fq1VOgWCDS+J/t3UFc6DA4a0R3J/M0o5COAh+S4/kLkJoKBQ+T+TqZJmA+Cj+hlCA==", - "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.12.tgz", + "integrity": "sha512-Ayxyo5brZxNI3CK4la+esJ5yDUQFAD26+BqjbIZvXemKq6ZsZDb2875H//saSVHc+dRq8R6J80A1GGV0fJpIEA==", + "dependencies": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "node_modules/@fluentui/theme": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.7.tgz", - "integrity": "sha512-uSvUkGLFcIjVuYPtwjdgnUd7Fqd6TXakM1Gh0xqPbBPm4Kiig7mpRDfMUneAI8t0j5otEeqeNokoLs5rMNGOBg==", + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.16.tgz", + "integrity": "sha512-Ml2oMVvoOxRYD9HPjEkGCWvnQnzDyrufa5k8bPYN8xjJbbEGtDjjswcfrSVfHx1fCR1CFgybHR8jj3pvXRTXUQ==", "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -202,13 +202,13 @@ } }, "node_modules/@fluentui/utilities": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.9.0.tgz", - "integrity": "sha512-fK3GjWygRhKDuVxIAMqcfP0UZGhnifygzhrZDIanKc4/+9CoIY/BVtHryRF+zF0sGEXF5kDarsMsLAeCnB2YhA==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.13.1.tgz", + "integrity": "sha512-BpLa0lSYnZ3YoTGB6T/pQ0vUVq0PEr6gF+daptyeiLUkEXVoy3HYgX6ZanA62wJ89ycIwI8A+1aUEbmtDMupYg==", "dependencies": { - "@fluentui/dom-utilities": "^2.2.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", + "@fluentui/dom-utilities": "^2.2.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" }, "peerDependencies": { @@ -217,9 +217,9 @@ } }, "node_modules/@microsoft/load-themed-styles": { - "version": "1.10.281", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.281.tgz", - "integrity": "sha512-91uZ4u6p5ZClHQE2RpJKTZALeCl1G9cZB47SPivfPrRtjrhqCfS3gC3zNoikUhpwccWjfSN50zjm289Wxkf/8Q==" + "version": "1.10.293", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.293.tgz", + "integrity": "sha512-zSsmz4VKMTje73JZ3Rsv2oIqyu1Yh9oPmrAbUbCloMeFlKtvqHVgMfjXrbicqbiImcTeNfJWFjYFbLRkrsstYA==" }, "node_modules/@types/estree": { "version": "0.0.50", @@ -232,9 +232,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -255,9 +255,12 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } }, "node_modules/csstype": { "version": "3.1.0", @@ -265,203 +268,235 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", - "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "robust-predicates": "^3.0.0" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" } }, "node_modules/js-tokens": { @@ -507,11 +542,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, "node_modules/react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -537,21 +567,10 @@ "react": "17.0.2" } }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" }, "node_modules/rw": { "version": "1.3.3", @@ -572,17 +591,6 @@ "object-assign": "^4.1.1" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -596,6 +604,11 @@ "topoquantize": "bin/topoquantize" } }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -607,36 +620,36 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -646,11 +659,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -666,87 +679,79 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -755,35 +760,35 @@ } }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -799,26 +804,21 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -834,27 +834,27 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", - "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", + "dependencies": { + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -879,70 +879,63 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -957,11 +950,11 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -995,105 +988,105 @@ }, "dependencies": { "@fluentui/date-time-utilities": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.1.tgz", - "integrity": "sha512-i8GXoIbPipug5cGZ4Dei0oXu7L4wia6DGMAzvabvSHwTjprbR5YjRrrr4UVtBr9gNx1v4Iv1yeD3XSc8DI9JDg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.2.tgz", + "integrity": "sha512-u540ACUdnC+Jms1DIHkho80eJmoCg/LtAzR4a/1Tum6PicxWv59UYp9Ba7qFbIw+mrjWnwX/2ZmBpqTy9Rgn7w==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/dom-utilities": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.1.tgz", - "integrity": "sha512-na1+hTRDg2xHSu3Vrr8ITrQpoFChOCSpqTYjLvdRD081p8o61hk9DeaXkUWr8E+2TZ06BXi2t0VyL4wfrYLU8Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.2.tgz", + "integrity": "sha512-puklLc6Jvg279OGagqkSfuHML6ckBhw3gJakdvIZHKeJiduh+34U4Finl3K24yBSXzG2WsN+LwLTd1Vcociy+g==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/font-icons-mdl2": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.3.tgz", - "integrity": "sha512-YKyCTVvV5qpSOS9EsulA+QYLyUEw7QhLzmcBWC4USu0WPhSy/cOfUUvemRl2JSsxErfuOM50OI80RKfuqNwsTA==", + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.13.tgz", + "integrity": "sha512-rXJpRKxHg68zCKTrcmouklGpE/laXlTQaLyBuft8EcPczZX3aupYPZda9sp+Kknolmd3Lvypn2D9Vf+McJDtwg==", "requires": { - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/foundation-legacy": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.10.tgz", - "integrity": "sha512-/ku+mSLTEIKf/HGavt9k+/njgAXGHXu4hoxRYRHbYr1O9hUe50cm5DctPQg+z/YDPNzsb1ltSmNqgWPvBOSW6A==", - "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.2.20", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.20.tgz", + "integrity": "sha512-iyJSr5Y/yYt0x9yBLP+aIy5U9tiDlgbxJZo6enNwFo0zEuBeWg/2L2IgAUzAwJB2vb73oQBlQt8In602R0Vj8w==", + "requires": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/keyboard-key": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.1.tgz", - "integrity": "sha512-8WkNPh0tnzrrZYs19qN8Zavaebz9FHyTFXKTv0QJ55rZ7uQfAV7VHxS/74aUP4bqeRWJtzaOJKUxkjEAPcDbug==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.2.tgz", + "integrity": "sha512-6WdMrnFpY94uWefUGGRqO4WiS6R+Kso6/FR95SxXMuS6kfnjGJCHzywFGZcN5OU1fX067Zna4aPQ/nDwYMgBPw==", "requires": { "tslib": "^2.1.0" } }, "@fluentui/merge-styles": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.2.tgz", - "integrity": "sha512-ax8izl48JJuymEuvJzvNH22GHmpPEWLP+h4doyFZ/9IhR9AEycNc2rGBthZ5FiuktnFgusNag1AHr/WCj5pttw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.3.tgz", + "integrity": "sha512-bHWftN3zTp1bbBfmAEH8YK9UURWj2mffw7b7VaW2Og1qxwv3GMSza1cyv/d3EVqpMJ8AVwFv3mbi9p1ieMN9mw==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/react": { - "version": "8.81.1", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.81.1.tgz", - "integrity": "sha512-iTdfjWMsMwdvc2ZRQBg/nBUhX0mmttjH0pbMZ8RgcMLuSDauQnDwMN3gEWRZ+fInUGcqTE1hzEdoLS75Dl3bAg==", - "requires": { - "@fluentui/date-time-utilities": "^8.5.1", - "@fluentui/font-icons-mdl2": "^8.4.3", - "@fluentui/foundation-legacy": "^8.2.10", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/react-focus": "^8.7.3", - "@fluentui/react-hooks": "^8.6.1", + "version": "8.94.2", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.94.2.tgz", + "integrity": "sha512-G0fiTdq4vGCm+kSQh3hQ2szG/r2wXmRsD/iNq1ZoWSKoyKViP/yFmothhUgkarFbydnWbDzb+iYZQ5+8J8wgTA==", + "requires": { + "@fluentui/date-time-utilities": "^8.5.2", + "@fluentui/font-icons-mdl2": "^8.4.13", + "@fluentui/foundation-legacy": "^8.2.20", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/react-focus": "^8.8.5", + "@fluentui/react-hooks": "^8.6.11", "@fluentui/react-portal-compat-context": "^9.0.1", - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "@fluentui/react-focus": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.7.3.tgz", - "integrity": "sha512-d/AwXzcPMoiPpzbpkHpfTyDcvYvga2DWNYq1Rh+QJsAGzN34bimu5xSxE21mbeXyz+TYx7yglElGp7GlT33s3Q==", - "requires": { - "@fluentui/keyboard-key": "^0.4.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.8.5.tgz", + "integrity": "sha512-+BNjLHKpA0IqUToY9MMARGpYg3ngBmW+1KhJeVxCUnAESNMwnzJ6hx/3MOYUA/FPbYfBvs8QnpTZrrOd7sLG/A==", + "requires": { + "@fluentui/keyboard-key": "^0.4.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/react-hooks": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.1.tgz", - "integrity": "sha512-t9l+O+ZjTiGSuKQ9SxqRRo50C1h69jZFzb+s/vc0vBtvsIoYfR+Jj8qH3hxtkhv/iC+SCj1dgDCEJwGyH7pf3Q==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.11.tgz", + "integrity": "sha512-qQAg/Hqchz0BGL1KJhg211uhhBDxF0bvMCdVKVoeeJNj4q3Cdvam87zHi7/W5gP8i6jgCILr7MrV3dH9umA/Sw==", "requires": { - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, @@ -1106,61 +1099,61 @@ } }, "@fluentui/react-window-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.1.tgz", - "integrity": "sha512-Y0j+lAYKeD/qswzFZWPkHmvtBlRS2WPJIkpyGvfBVZaCeq3DGKRppoOCOmED762bKOXzM/G/ZNEcBa7CY1gkYw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.2.tgz", + "integrity": "sha512-/1uQ01HqGRpUOMozUy1FYmxp6blZZvtKN50rqxnQJr8O1bcpg8lJzhq064E8EjOXfdNh47zKSloP4ebbDI5vrw==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/set-version": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.1.tgz", - "integrity": "sha512-SZMP2P7RSUuVHYWIBcnlxYruvchlnoqensCvoaGeiH0FisO7etwJdFwKNegV7WEA9uS5ZOK3qVmyvD71DxaSng==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.2.tgz", + "integrity": "sha512-Vg20KZ0ufgWjxx6GFbqC5wiVxXZDUWgNT0r0By/Eyj4bUSb1jG6lmf5z1oY1dUX0YS6Cp5e6GnvbNdXg5E7orA==", "requires": { "tslib": "^2.1.0" } }, "@fluentui/style-utilities": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.2.tgz", - "integrity": "sha512-sDNsXUXdk4qAllADH46o0Fq1VOgWCDS+J/t3UFc6DA4a0R3J/M0o5COAh+S4/kLkJoKBQ+T+TqZJmA+Cj+hlCA==", - "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.12.tgz", + "integrity": "sha512-Ayxyo5brZxNI3CK4la+esJ5yDUQFAD26+BqjbIZvXemKq6ZsZDb2875H//saSVHc+dRq8R6J80A1GGV0fJpIEA==", + "requires": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "@fluentui/theme": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.7.tgz", - "integrity": "sha512-uSvUkGLFcIjVuYPtwjdgnUd7Fqd6TXakM1Gh0xqPbBPm4Kiig7mpRDfMUneAI8t0j5otEeqeNokoLs5rMNGOBg==", + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.16.tgz", + "integrity": "sha512-Ml2oMVvoOxRYD9HPjEkGCWvnQnzDyrufa5k8bPYN8xjJbbEGtDjjswcfrSVfHx1fCR1CFgybHR8jj3pvXRTXUQ==", "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/utilities": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.9.0.tgz", - "integrity": "sha512-fK3GjWygRhKDuVxIAMqcfP0UZGhnifygzhrZDIanKc4/+9CoIY/BVtHryRF+zF0sGEXF5kDarsMsLAeCnB2YhA==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.13.1.tgz", + "integrity": "sha512-BpLa0lSYnZ3YoTGB6T/pQ0vUVq0PEr6gF+daptyeiLUkEXVoy3HYgX6ZanA62wJ89ycIwI8A+1aUEbmtDMupYg==", "requires": { - "@fluentui/dom-utilities": "^2.2.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", + "@fluentui/dom-utilities": "^2.2.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@microsoft/load-themed-styles": { - "version": "1.10.281", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.281.tgz", - "integrity": "sha512-91uZ4u6p5ZClHQE2RpJKTZALeCl1G9cZB47SPivfPrRtjrhqCfS3gC3zNoikUhpwccWjfSN50zjm289Wxkf/8Q==" + "version": "1.10.293", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.293.tgz", + "integrity": "sha512-zSsmz4VKMTje73JZ3Rsv2oIqyu1Yh9oPmrAbUbCloMeFlKtvqHVgMfjXrbicqbiImcTeNfJWFjYFbLRkrsstYA==" }, "@types/estree": { "version": "0.0.50", @@ -1173,9 +1166,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -1196,9 +1189,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, "csstype": { "version": "3.1.0", @@ -1206,177 +1199,158 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" } }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "requires": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "requires": { - "function-bind": "^1.1.1" + "robust-predicates": "^3.0.0" } }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "requires": { - "has": "^1.0.3" - } + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" }, "js-tokens": { "version": "4.0.0", @@ -1404,11 +1378,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, "react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -1428,15 +1397,10 @@ "scheduler": "^0.20.2" } }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" }, "rw": { "version": "1.3.3", @@ -1457,17 +1421,19 @@ "object-assign": "^4.1.1" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, "topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", "requires": { "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } } }, "tr46": { @@ -1481,36 +1447,36 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -1520,11 +1486,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -1540,89 +1506,79 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -1631,35 +1587,35 @@ } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -1673,30 +1629,23 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -1712,27 +1661,27 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", - "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", + "requires": { + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -1753,73 +1702,66 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -1834,11 +1776,11 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } diff --git a/extensions/common-frontend/package.json b/extensions/common-frontend/package.json index 71d7b69b2..dd94666c9 100644 --- a/extensions/common-frontend/package.json +++ b/extensions/common-frontend/package.json @@ -24,7 +24,7 @@ "@fluentui/react": "^8", "react": ">=16.8.0 <18.0.0", "react-dom": ">=16.8.0 <18.0.0", - "vega": "5.20" + "vega": "5.22.1" }, "devDependencies": { "@msrvida/sanddance-explorer": "^4", diff --git a/extensions/vscode-sanddance/package-lock.json b/extensions/vscode-sanddance/package-lock.json index db47ad454..fb96489e8 100644 --- a/extensions/vscode-sanddance/package-lock.json +++ b/extensions/vscode-sanddance/package-lock.json @@ -33,9 +33,9 @@ "dev": true }, "node_modules/@types/vscode": { - "version": "1.69.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.69.0.tgz", - "integrity": "sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA==", + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.71.0.tgz", + "integrity": "sha512-nB50bBC9H/x2CpwW9FzRRRDrTZ7G0/POttJojvN/LiVfzTGfLyQIje1L1QRMdFXK9G41k5UJN/1B9S4of7CSzA==", "dev": true }, "node_modules/agent-base": { @@ -457,9 +457,9 @@ "dev": true }, "@types/vscode": { - "version": "1.69.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.69.0.tgz", - "integrity": "sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA==", + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.71.0.tgz", + "integrity": "sha512-nB50bBC9H/x2CpwW9FzRRRDrTZ7G0/POttJojvN/LiVfzTGfLyQIje1L1QRMdFXK9G41k5UJN/1B9S4of7CSzA==", "dev": true }, "agent-base": { diff --git a/package-lock.json b/package-lock.json index fd11bdc53..4a2d95715 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,9 +36,9 @@ "rimraf": "^2.6.2", "rollup": "^2.70.1", "sass": "^1.32.4", - "ts-loader": "^7.0.5", - "typedoc": "^0.21.9", - "typescript": "4.3", + "ts-loader": "^9.3.1", + "typedoc": "^0.21.10", + "typescript": "4.4", "unified": "^7.0.2", "vsce": "^2.9.2", "webpack": "^5.52.0", @@ -72,31 +72,31 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", - "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", + "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.0.tgz", + "integrity": "sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==", "dev": true, "peer": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/generator": "^7.19.0", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -112,13 +112,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.19.0", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -142,12 +142,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", + "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -160,9 +160,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, "peer": true, "engines": { @@ -170,14 +170,14 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "peer": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -210,20 +210,20 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -255,6 +255,16 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", @@ -274,15 +284,15 @@ } }, "node_modules/@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", + "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", "dev": true, "peer": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -303,9 +313,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "dev": true, "peer": true, "bin": { @@ -316,35 +326,35 @@ } }, "node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "peer": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", + "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "dev": true, "peer": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/parser": "^7.19.0", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -353,12 +363,13 @@ } }, "node_modules/@babel/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "dev": true, "peer": true, "dependencies": { + "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, @@ -376,14 +387,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", + "espree": "^9.4.0", "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -393,12 +404,15 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -429,9 +443,9 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -442,6 +456,29 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -526,9 +563,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -536,20 +573,20 @@ } }, "node_modules/@lerna/add": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.1.8.tgz", - "integrity": "sha512-ABplk8a5MmiT8lG1b9KHijRUwj/nOePMuezBHjJEpNeQ8Bw5w3IV/6hpdmApx/w1StBwWWf0UG42klrxXlfl/g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.5.0.tgz", + "integrity": "sha512-RdJ8yyE8BizzrYRjZuqeXtgkHBE/KzcS7tmBG+UKCQ5QFLnkdORzaVECNy2sfZl0vTtrxj4cv+kuwxIeg/4XVQ==", "dev": true, "dependencies": { - "@lerna/bootstrap": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/npm-conf": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/bootstrap": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/npm-conf": "5.5.0", + "@lerna/validation-error": "5.5.0", "dedent": "^0.7.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "p-map": "^4.0.0", - "pacote": "^13.4.1", + "pacote": "^13.6.1", "semver": "^7.3.4" }, "engines": { @@ -584,28 +621,28 @@ } }, "node_modules/@lerna/bootstrap": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.1.8.tgz", - "integrity": "sha512-/QZJc6aRxi6csSR59jdqRXPFh33fbn60F1k/SWtCCELGkZub23fAPLKaO7SlMcyghN3oKlfTfVymu/NWEcptJQ==", - "dev": true, - "dependencies": { - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/has-npm-version": "5.1.8", - "@lerna/npm-install": "5.1.8", - "@lerna/package-graph": "5.1.8", - "@lerna/pulse-till-done": "5.1.8", - "@lerna/rimraf-dir": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/symlink-binary": "5.1.8", - "@lerna/symlink-dependencies": "5.1.8", - "@lerna/validation-error": "5.1.8", - "@npmcli/arborist": "5.2.0", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.5.0.tgz", + "integrity": "sha512-GeXLSDi6gxj2O3t5T7qgFabBKoC5EQwiFyQ4ufqx1Wm/mWxqRI+enTBnbaBbmhQaVQ9wfPvMPDukJ5Q9PCTUcQ==", + "dev": true, + "dependencies": { + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/has-npm-version": "5.5.0", + "@lerna/npm-install": "5.5.0", + "@lerna/package-graph": "5.5.0", + "@lerna/pulse-till-done": "5.5.0", + "@lerna/rimraf-dir": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/symlink-binary": "5.5.0", + "@lerna/symlink-dependencies": "5.5.0", + "@lerna/validation-error": "5.5.0", + "@npmcli/arborist": "5.3.0", "dedent": "^0.7.0", "get-port": "^5.1.1", "multimatch": "^5.0.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-map-series": "^2.1.0", @@ -644,38 +681,38 @@ } }, "node_modules/@lerna/changed": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.1.8.tgz", - "integrity": "sha512-JA9jX9VTHrwSMRJTgLEzdyyx4zi35X0yP6fUUFuli9a0zrB4HV4IowSn1XM03H8iebbDLB0eWBbosqhYwSP8Sw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.5.0.tgz", + "integrity": "sha512-ZEnVHrPEpf2Iii/Z59g1lfKEwPA1V2an5L27MzNQjbWe6JQZqTU+8V6m+Vmbr4VdEH5jfRL5NVETGCLl7qN/pQ==", "dev": true, "dependencies": { - "@lerna/collect-updates": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/listable": "5.1.8", - "@lerna/output": "5.1.8" + "@lerna/collect-updates": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/listable": "5.5.0", + "@lerna/output": "5.5.0" }, "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/check-working-tree": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.1.8.tgz", - "integrity": "sha512-3QyiV75cYt9dtg9JhUt+Aiyk44mFjlyqIIJ/XZ2Cp/Xcwws/QrNKOTs5iYFX5XWzlpTgotOHcu1MH/mY55Czlw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.5.0.tgz", + "integrity": "sha512-U35yV8R+tv6zQgoDr0rnBt4wm4gyhDcE4tUEeB8m7JHVu7g45Fjv2jFLH1z5RM1PVaEbzKVebqfN5ccB0EBuyg==", "dev": true, "dependencies": { - "@lerna/collect-uncommitted": "5.1.8", - "@lerna/describe-ref": "5.1.8", - "@lerna/validation-error": "5.1.8" + "@lerna/collect-uncommitted": "5.5.0", + "@lerna/describe-ref": "5.5.0", + "@lerna/validation-error": "5.5.0" }, "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/child-process": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.1.8.tgz", - "integrity": "sha512-P0o4Y/sdiUJ53spZpaVv53NdAcl15UAi5//W3uT2T250xQPlVROwKy11S3Wzqglh94FYdi6XUy293x1uwBlFPw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.5.0.tgz", + "integrity": "sha512-er7bsj2W/H8JWAIB+CkgCLk9IlMkyVzywbOZcMC+xic2fp7rmM/BdtAE4nTjkKwfaRYF/bwjHyZowZUR3s8cEg==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -757,16 +794,16 @@ } }, "node_modules/@lerna/clean": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.1.8.tgz", - "integrity": "sha512-xMExZgjan5/8ZTjJkZoLoTKY1MQOMk7W1YXslbg9BpLevBycPk041MlLauzCyO8XdOpqpVnFCg/9W66fltqmQg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.5.0.tgz", + "integrity": "sha512-TRW4Gkv6QpWSy0tm72NrxvgmTAC+W0LqhLPlFM5k5feFS75/HGOycpf97M4JSUueyBCuVjsPfzqp/e6MB3Ntng==", "dev": true, "dependencies": { - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/prompt": "5.1.8", - "@lerna/pulse-till-done": "5.1.8", - "@lerna/rimraf-dir": "5.1.8", + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/prompt": "5.5.0", + "@lerna/pulse-till-done": "5.5.0", + "@lerna/rimraf-dir": "5.5.0", "p-map": "^4.0.0", "p-map-series": "^2.1.0", "p-waterfall": "^2.1.1" @@ -776,12 +813,12 @@ } }, "node_modules/@lerna/cli": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.1.8.tgz", - "integrity": "sha512-0Ghhd9M9QvY6qZtnjTq5RHOIac2ttsW2VNFLFso8ov3YV+rJF4chLhyVaVBvLSA+5ZhwFH+xQ3/yeUx1tDO8GA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.5.0.tgz", + "integrity": "sha512-7TtnO2xfnfrpWGIui6ANrH4/AVHmSfjaExSoZKNhh2dKSSEOETEUfFIIzfEAirAVR7EOXAJwDdFbbpB4lQtyUg==", "dev": true, "dependencies": { - "@lerna/global-options": "5.1.8", + "@lerna/global-options": "5.5.0", "dedent": "^0.7.0", "npmlog": "^6.0.2", "yargs": "^16.2.0" @@ -791,12 +828,12 @@ } }, "node_modules/@lerna/collect-uncommitted": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.1.8.tgz", - "integrity": "sha512-pRsIYu82A3DxLahQI/3azoi/kjj6QSSHHAOx4y1YVefeDCaVtAm8aesNbpnyNVfJrie/1Gt5GMEpjfm/KScjlw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.5.0.tgz", + "integrity": "sha512-oVGXS0fC8q2d1lG695eCd8dkr0fhmUx4bWA1IshVd/u0Puk7f8+m71POcLV3h1gR/2Fqs7vb7G/sPyuzGtwn8w==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "chalk": "^4.1.0", "npmlog": "^6.0.2" }, @@ -875,13 +912,13 @@ } }, "node_modules/@lerna/collect-updates": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.1.8.tgz", - "integrity": "sha512-ZPQmYKzwDJ4T+t2fRUI/JjaCzC8Lv02kWIeSXrcIG+cf2xrbM0vK4iQMAKhagTsiWt9hrFwvtMgLp4a6+Ht8Qg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.5.0.tgz", + "integrity": "sha512-6kBMi6K6PHIBvZKlfp/0PvRgmzvvfx+eZpmLjF+0yjcfwBn+QDkq7H+QohBiCzt2vxHVHsM6zutNhl2jNTmChg==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", - "@lerna/describe-ref": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/describe-ref": "5.5.0", "minimatch": "^3.0.4", "npmlog": "^6.0.2", "slash": "^3.0.0" @@ -891,16 +928,16 @@ } }, "node_modules/@lerna/command": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.1.8.tgz", - "integrity": "sha512-j/Q++APvkyN2t8GqOpK+4OxH1bB7OZGVWIKh0JQlwbtqH1Y06wlSyNdwpPmv8h1yO9fS1pY/xHwFbs1IicxwzA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.5.0.tgz", + "integrity": "sha512-ut055kFWc1OJFdI9Cj1kDxtJ4ejvAsfRgUoVxWT1Fw4Me/OzQRHYmUupW0FK8Kc+7gcz4mGKzUVWmRmDBvn+Fw==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", - "@lerna/package-graph": "5.1.8", - "@lerna/project": "5.1.8", - "@lerna/validation-error": "5.1.8", - "@lerna/write-log-file": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/package-graph": "5.5.0", + "@lerna/project": "5.5.0", + "@lerna/validation-error": "5.5.0", + "@lerna/write-log-file": "5.5.0", "clone-deep": "^4.0.1", "dedent": "^0.7.0", "execa": "^5.0.0", @@ -912,18 +949,18 @@ } }, "node_modules/@lerna/conventional-commits": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.1.8.tgz", - "integrity": "sha512-UduSVDp/+2WlEV6ZO5s7yTzkfhYyPdEsqR6aaUtIJZe9wejcCK4Lc3BJ2BAYIOdtDArNY2CJPsz1LYvFDtPRkw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.5.0.tgz", + "integrity": "sha512-qPTRNCm3H4MvZAdQLzyYq7ifJyofMSeZmel232b5mglW3OSehxPQUxzr/u/0p8Nqs89uZxZRHyznLnhRNdXcJQ==", "dev": true, "dependencies": { - "@lerna/validation-error": "5.1.8", + "@lerna/validation-error": "5.5.0", "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-core": "^4.2.2", + "conventional-changelog-core": "^4.2.4", "conventional-recommended-bump": "^6.1.0", "fs-extra": "^9.1.0", "get-stream": "^6.0.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "pify": "^5.0.0", "semver": "^7.3.4" @@ -996,28 +1033,27 @@ } }, "node_modules/@lerna/create": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.1.8.tgz", - "integrity": "sha512-n9qLLeg1e0bQeuk8pA8ELEP05Ktl50e1EirdXGRqqvaXdCn41nYHo4PilUgb77/o/t3Z5N4/ic+0w8OvGVakNg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.5.0.tgz", + "integrity": "sha512-B+ERbzgFMYspsaU9We65Wqf9Y7sGsEYVFPi3EKpCXxkvVr65YRFL6Mz/WAVggwYkR49umduXXVmjnCWcuT0Ydw==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/npm-conf": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/npm-conf": "5.5.0", + "@lerna/validation-error": "5.5.0", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "globby": "^11.0.2", - "init-package-json": "^2.0.2", - "npm-package-arg": "^8.1.0", + "init-package-json": "^3.0.2", + "npm-package-arg": "8.1.1", "p-reduce": "^2.1.0", - "pacote": "^13.4.1", + "pacote": "^13.6.1", "pify": "^5.0.0", "semver": "^7.3.4", "slash": "^3.0.0", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0", - "whatwg-url": "^8.4.0", + "validate-npm-package-name": "^4.0.0", "yargs-parser": "20.2.4" }, "engines": { @@ -1025,12 +1061,12 @@ } }, "node_modules/@lerna/create-symlink": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.1.8.tgz", - "integrity": "sha512-5acQITDsJ7dqywPRrF1mpTUPm/EXFfiv/xF6zX+ySUjp4h0Zhhnsm8g2jFdRPDSjIxFD0rV/5iU4X6qmflXlAg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.5.0.tgz", + "integrity": "sha512-vWGvRbTh3ji3J/8mVyLPa9Yst4MZzp9W2+8hyYHw8eAzCtHPuH3Z0AReIHpYRfoViUvxIl/rEEuD2D1sDh61BQ==", "dev": true, "dependencies": { - "cmd-shim": "^4.1.0", + "cmd-shim": "^5.0.0", "fs-extra": "^9.1.0", "npmlog": "^6.0.2" }, @@ -1138,12 +1174,12 @@ } }, "node_modules/@lerna/describe-ref": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.1.8.tgz", - "integrity": "sha512-/u5b2ho09icPcvPb1mlh/tPC07nSFc1cvvFjM9Yg5kfVs23vzVWeA8y0Bk5djlaaSzyHECyqviriX0aoaY47Wg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.5.0.tgz", + "integrity": "sha512-gNt9deRWcDoIKCwKRHu/TEt2HcHhQxzVlP8GQHYp4NuWTG9c+gTQfyuXvbZd0K9jCijPUBNy/oMb6usXceJWeg==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "npmlog": "^6.0.2" }, "engines": { @@ -1151,14 +1187,14 @@ } }, "node_modules/@lerna/diff": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.1.8.tgz", - "integrity": "sha512-BLoi6l/v8p43IkAHTkpjZ4Kq27kYK7iti6y6gYoZuljSwNj38TjgqRb2ohHezQ5c0KFAj8xHEOuZM3Ou6tGyTQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.5.0.tgz", + "integrity": "sha512-2PIka/4kKDOsh5Ht+X2OuLNTWzRk+LcnN5bCin87w7vGw3esdvlT1fj1tKjoZ1/aC/O8tqtKXyeP9WE6YHWVpw==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/validation-error": "5.5.0", "npmlog": "^6.0.2" }, "engines": { @@ -1166,17 +1202,17 @@ } }, "node_modules/@lerna/exec": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.1.8.tgz", - "integrity": "sha512-U+owlBKoAUfULqRz0oBtHx/I6tYQy9I7xfPP0GoaXa8lpF7esnpCxsJG8GpdzFqIS30o6a2PtyHvp4jkrQF8Zw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.5.0.tgz", + "integrity": "sha512-4asvrCYFGgnEbXtSiKJLDd6DShUl7FIRRCWx7JXJfa0B6sg00cB9Cg3JTp+F+cQWCOspRkzqRetqu57o6wRpXg==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/profiler": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/profiler": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/validation-error": "5.5.0", "p-map": "^4.0.0" }, "engines": { @@ -1184,13 +1220,13 @@ } }, "node_modules/@lerna/filter-options": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.1.8.tgz", - "integrity": "sha512-ene6xj1BRSFgIgcVg9xABp1cCiRnqm3Uetk9InxOtECbofpSDa7cQy5lsPv6GGAgXFbT91SURQiipH9FAOP+yQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.5.0.tgz", + "integrity": "sha512-Hwn4sOixZdWVe6SFZ7aPFjhMYoSHz0zbwy3t40KXuhjLqT8T5RLmGWW1u2Al6dQ5fuQyhWXGS4DWfobs7Th62A==", "dev": true, "dependencies": { - "@lerna/collect-updates": "5.1.8", - "@lerna/filter-packages": "5.1.8", + "@lerna/collect-updates": "5.5.0", + "@lerna/filter-packages": "5.5.0", "dedent": "^0.7.0", "npmlog": "^6.0.2" }, @@ -1199,12 +1235,12 @@ } }, "node_modules/@lerna/filter-packages": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.1.8.tgz", - "integrity": "sha512-2pdtZ+I2Sb+XKfUa/q8flVUyaY0hhwqFYMXll7Nut7Phb1w1TtkEXc2/N0Ac1yia6qSJB/5WrsbAcLF/ITp1vA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.5.0.tgz", + "integrity": "sha512-Ad23aRPKgr/zt6jMWi8xKL+2z47GBQyxC4HhsDEMp62OGeGhGyK1sGW+S8OTEh17sIVpGG2GX9eCfnG8pvfxUQ==", "dev": true, "dependencies": { - "@lerna/validation-error": "5.1.8", + "@lerna/validation-error": "5.5.0", "multimatch": "^5.0.0", "npmlog": "^6.0.2" }, @@ -1213,9 +1249,9 @@ } }, "node_modules/@lerna/get-npm-exec-opts": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.1.8.tgz", - "integrity": "sha512-oujoIkEDDVK2+5ooPMEPI+xGs/iwPmGJ63AZu1h7P42YU9tHKQmF5yPybF3Jn99W8+HggM6APUGiX+5oHRvKXA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.5.0.tgz", + "integrity": "sha512-WRt560FB6rsj4yVtR1wIJWJufITajECaw1omNi2KkL7/o7ky4NvHACVOtibETUNMXrnuPJ/QBww4roLFVIAyog==", "dev": true, "dependencies": { "npmlog": "^6.0.2" @@ -1225,13 +1261,13 @@ } }, "node_modules/@lerna/get-packed": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.1.8.tgz", - "integrity": "sha512-3vabIFlfUFQPbFnlOaDCNY4p7mufrhIFPoXxWu15JnjJsSDf9UB2a98xX43xNlxjgZLvnLai3bhCNfrKonI4Kw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.5.0.tgz", + "integrity": "sha512-X+91ma9SQPrsVctsrFRBABn4+T87lnTEd/BngB7OYlYFsJCc+a6vd+5pnIWxKK5OiUr6+tRpMbJp8BUXJFdb4Q==", "dev": true, "dependencies": { "fs-extra": "^9.1.0", - "ssri": "^8.0.1", + "ssri": "^9.0.1", "tar": "^6.1.0" }, "engines": { @@ -1275,14 +1311,14 @@ } }, "node_modules/@lerna/github-client": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.1.8.tgz", - "integrity": "sha512-y1oweMZ9xc/htIHy42hy2FuMUR/LS3CQlslXG9PAHzl5rE1VDDjvSv61kS50ZberGfB9xmkCxqH+2LgROG9B1A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.5.0.tgz", + "integrity": "sha512-CaBleVR0F+8Yv4FQu6r7Ocqnh3DEq6dQeu0r4RX+mc9jBn9J/N2SdLKRdC7vcvmkcLCxacg8ewuesYqvakQ8HQ==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "@octokit/plugin-enterprise-rest": "^6.0.1", - "@octokit/rest": "^18.1.0", + "@octokit/rest": "^19.0.3", "git-url-parse": "^12.0.0", "npmlog": "^6.0.2" }, @@ -1291,35 +1327,34 @@ } }, "node_modules/@lerna/gitlab-client": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.1.8.tgz", - "integrity": "sha512-/EMKdkGnBU4ldyAQ4pXp2TKi1znvY3MiCULt8Hy42p4HhfFl/AxZYDovQYfop1NHVk29BQrGHfvlpyBNqZ2a8g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.5.0.tgz", + "integrity": "sha512-ktKfBgQnt0MtyiTM3wuec47Wk7nHc+k2YvoC1roDGaXpgWS7lOQnA8RyorX4Hal3ZsrL95qi9vZOolWvUnxS3w==", "dev": true, "dependencies": { "node-fetch": "^2.6.1", - "npmlog": "^6.0.2", - "whatwg-url": "^8.4.0" + "npmlog": "^6.0.2" }, "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/global-options": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.1.8.tgz", - "integrity": "sha512-VCfTilGh0O4T6Lk4DKYA5cUl1kPjwFfRUS/GSpdJx0Lf/dyDbFihrmTHefgUe9N2/nTQySDIdPk9HBr45tozWQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.5.0.tgz", + "integrity": "sha512-ydEsnXi2LRpxkzpSf8GFeCdh1roTKANZdqzjkhuUlBHrKzKxywpNPpGbXmh6JziHMYdgKGZUjnY35TxBlVRN6Q==", "dev": true, "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/has-npm-version": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.1.8.tgz", - "integrity": "sha512-yN5j9gje2ND8zQf4tN52QDQ/yFb24o9Kasm4PZm99FzBURRIwFWCnvo3edOMaiJg0DpA660L+Kq9G0L+ZRKRZQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.5.0.tgz", + "integrity": "sha512-ALvz0fF1I7Dx+c+0rvkFdqEtp/hs4F/Av2blhOaFWTs78D7FTQa7IpURmvdVDi56H30fqa9b4nEQqnaCRJZKpQ==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "semver": "^7.3.4" }, "engines": { @@ -1354,16 +1389,16 @@ } }, "node_modules/@lerna/import": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.1.8.tgz", - "integrity": "sha512-m1+TEhlgS9i14T7o0/8o6FMZJ1O2PkQdpCjqUa5xdLITqvPozoMNujNgiX3ZVLg/XcFOjMtbCsYtspqtKyEsMQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.5.0.tgz", + "integrity": "sha512-mn87JOcb/j4KBV37Kv589avN5uArcJcASBonm1iWcTwxTvcNFj2BjxnUoVVY6EFamDfBLwWBcAvCO+cvmJkj3Q==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/prompt": "5.1.8", - "@lerna/pulse-till-done": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/prompt": "5.5.0", + "@lerna/pulse-till-done": "5.5.0", + "@lerna/validation-error": "5.5.0", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "p-map-series": "^2.1.0" @@ -1409,13 +1444,13 @@ } }, "node_modules/@lerna/info": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.1.8.tgz", - "integrity": "sha512-VNCBNOrd5Q1iv1MOF++PzMrdAnTn6KTDbb5hcXHdWBRZUuOs3QOwVYGzAlTFMvwVmmlcER4z8BYyUsbxk3sIdQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.5.0.tgz", + "integrity": "sha512-2pgogAahv8tqY2sFarOCSXcxJFEag9z1pPGnHwKsq8NtekR0exLwFp93iTbDKRff8ScSmH82lNh22GFKZKLm/A==", "dev": true, "dependencies": { - "@lerna/command": "5.1.8", - "@lerna/output": "5.1.8", + "@lerna/command": "5.5.0", + "@lerna/output": "5.5.0", "envinfo": "^7.7.4" }, "engines": { @@ -1423,13 +1458,14 @@ } }, "node_modules/@lerna/init": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.1.8.tgz", - "integrity": "sha512-vEMnq/70u/c031/vURA4pZSxlBRAwjg7vOP7mt9M4dmKz/vkVnQ/5Ig9K0TKqC31hQg957/4m20obYEiFgC3Pw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.5.0.tgz", + "integrity": "sha512-dPjuk12s2pSnSL6ib7KQ+RKFyFYvsWAnSMro3sanb07og3tJkwVne8srlmYQsd/NghU8sBdQFFKIV+pzg2sg9w==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/project": "5.5.0", "fs-extra": "^9.1.0", "p-map": "^4.0.0", "write-json-file": "^4.3.0" @@ -1475,14 +1511,15 @@ } }, "node_modules/@lerna/link": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.1.8.tgz", - "integrity": "sha512-qOtZiMzB9JYyNPUlvpqTxh0Z1EmNVde8pFUIYybv+s3btrKEBPgsvvrOrob/mha3QJxnwcPDPjHt/wCHFxLruA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.5.0.tgz", + "integrity": "sha512-wucP0DBKBG2Mkr9PNkPB9ez5pRxLEIY+6s0hB3iTxCTmef5GYPlQ+ftiaN2/IGVYb569AW97YilROuU2gDMrMw==", "dev": true, "dependencies": { - "@lerna/command": "5.1.8", - "@lerna/package-graph": "5.1.8", - "@lerna/symlink-dependencies": "5.1.8", + "@lerna/command": "5.5.0", + "@lerna/package-graph": "5.5.0", + "@lerna/symlink-dependencies": "5.5.0", + "@lerna/validation-error": "5.5.0", "p-map": "^4.0.0", "slash": "^3.0.0" }, @@ -1491,27 +1528,27 @@ } }, "node_modules/@lerna/list": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.1.8.tgz", - "integrity": "sha512-fVN9o/wKtgcOyuYwvYTg2HI6ORX2kOoBkCJ+PI/uZ/ImwLMTJ2Bf8i/Vsysl3bLFHhQFglzPZ7V1SQP/ku0Sdw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.5.0.tgz", + "integrity": "sha512-vic7CeD/TL0bh6hzpgHK2Ogz7MW1NB6Sws1J7cl5CTn4sAGm/KZ/g4MNsLFVLJNAiPh+t2cmT0ndyNluShnjqA==", "dev": true, "dependencies": { - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/listable": "5.1.8", - "@lerna/output": "5.1.8" + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/listable": "5.5.0", + "@lerna/output": "5.5.0" }, "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/listable": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.1.8.tgz", - "integrity": "sha512-nQ/40cbVZLFBv8o9Dz6ivHFZhosfDTYOPm4oHNu0xdexaTXWz5bQUlM4HtOm7K0dJ1fvLEVqiQNAuFSEhARt9g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.5.0.tgz", + "integrity": "sha512-2kCpn8vlmRTVA3tGr1XRkHOW2ljXjb/hRNxSK3DUf0k6sl9sEdQFSH7cf5qPnCAPcuLHS7b8kuFhA6x8nXFP3g==", "dev": true, "dependencies": { - "@lerna/query-graph": "5.1.8", + "@lerna/query-graph": "5.5.0", "chalk": "^4.1.0", "columnify": "^1.6.0" }, @@ -1590,9 +1627,9 @@ } }, "node_modules/@lerna/log-packed": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.1.8.tgz", - "integrity": "sha512-alaCIzCtKV5oKyu632emda0hUQMw/BcL2U3v4ObLu90sU8P7mu6TipKRvR9OZxOLDnZGnPE7CMHSU8gsQoIasw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.5.0.tgz", + "integrity": "sha512-kVDEy29VfBQeha92IBuPq9W/kP6ffboCWuU64lBIAljTDdpFrMFBeLRrWfLSLIVe2fq8FpGk8PInNlDHmvT5PA==", "dev": true, "dependencies": { "byte-size": "^7.0.0", @@ -1605,9 +1642,9 @@ } }, "node_modules/@lerna/npm-conf": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.1.8.tgz", - "integrity": "sha512-d/pIcO4RwO3fXNlUbhQ6+qwULxGSiW/xcOtiETVf4ZfjaDqjkCaIxZaeZfm5gWDtII5klpQn3f2d71FCnZG5lw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.5.0.tgz", + "integrity": "sha512-ml1Pmn26a61y6nFijpNE9RAbsNOF2XL1Kqyd3x7+XFaDmqbSDqo2g5qlsb4gTdUj/Uy1niRGzy3XdC0FH5G+mg==", "dev": true, "dependencies": { "config-chain": "^1.1.12", @@ -1618,14 +1655,14 @@ } }, "node_modules/@lerna/npm-dist-tag": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.1.8.tgz", - "integrity": "sha512-vZXO0/EClOzRRHHfqB4APhZkxiJpQbsQAAFwaXQCNJE+3S+I/MD0S3iiUWrNs4QnN/8Lj1KyzUfznVDXX7AIUQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.5.0.tgz", + "integrity": "sha512-Hz6n9tqbGUuqI1q9IS3tAGx95TkOqLfXRay9kr/hjswj+HKp0Dtw1cu8YRtizA7CuIWw831eXCbqfFyILfytaA==", "dev": true, "dependencies": { - "@lerna/otplease": "5.1.8", - "npm-package-arg": "^8.1.0", - "npm-registry-fetch": "^9.0.0", + "@lerna/otplease": "5.5.0", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", "npmlog": "^6.0.2" }, "engines": { @@ -1633,15 +1670,15 @@ } }, "node_modules/@lerna/npm-install": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.1.8.tgz", - "integrity": "sha512-AiYQyz4W1+NDeBw3qmdiiatfCtwtaGOi7zHtN1eAqheVTxEMuuYjNHt+8hu6nSpDFYtonz0NsKFvaqRJ5LbVmw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.5.0.tgz", + "integrity": "sha512-axMtqZYuAl5qGcRCBYKqINimMrbQRM1f09sz9rKtwnx15066qT0IaKUt9YYo5bsZm/i3BXpBqcUxZXlGzQNWBQ==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", - "@lerna/get-npm-exec-opts": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/get-npm-exec-opts": "5.5.0", "fs-extra": "^9.1.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "signal-exit": "^3.0.3", "write-pkg": "^4.0.0" @@ -1687,19 +1724,19 @@ } }, "node_modules/@lerna/npm-publish": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.1.8.tgz", - "integrity": "sha512-Gup/1d8ovc21x3spKPhFK0tIYYn8HOjnpCAg5ytINIW1QM/QcLAigY58If8uiyt+aojz6lubWrSR8/OHf9CXBw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.5.0.tgz", + "integrity": "sha512-eDcmga5CcXGmSdVXBO75eCX3vypEwQO/lN7VqRpLSOsIHIRUGbfwo/stbz8sIF4+HAkaAFGj6BScjvjlyoh2pQ==", "dev": true, "dependencies": { - "@lerna/otplease": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", + "@lerna/otplease": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", "fs-extra": "^9.1.0", - "libnpmpublish": "^4.0.0", - "npm-package-arg": "^8.1.0", + "libnpmpublish": "^6.0.4", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "pify": "^5.0.0", - "read-package-json": "^3.0.0" + "read-package-json": "^5.0.1" }, "engines": { "node": "^14.15.0 || >=16.0.0" @@ -1742,13 +1779,13 @@ } }, "node_modules/@lerna/npm-run-script": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.1.8.tgz", - "integrity": "sha512-HzvukNC+hDIR25EpYWOvIGJItd0onXqzS9Ivdtw98ZQG3Jexi2Mn18A9tDqHOKCEGO3pVYrI9ep8VWkah2Bj1w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.5.0.tgz", + "integrity": "sha512-ltEtw28CLpG/VaWX4PZ1enJ0wxA/Qw8ScAwhQTZj0xL6Lhkq5H0LoEALVRAq2gK10h1p2IUs/W034oXT1chH0w==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", - "@lerna/get-npm-exec-opts": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/get-npm-exec-opts": "5.5.0", "npmlog": "^6.0.2" }, "engines": { @@ -1756,21 +1793,21 @@ } }, "node_modules/@lerna/otplease": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.1.8.tgz", - "integrity": "sha512-/OVZ7Rbs8/ft14f4i/9HEFDsxJkBSg74rMUqyqFH3fID/RL3ja9hW5bI1bENxvYgs0bp/THy4lV5V75ZcI81zQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.5.0.tgz", + "integrity": "sha512-zNS315iH2VRQz/LJTrqUUuEqMnNsCoMXOMOaBzcB/AL29mYMvJlT05dMqenMPKrRtW0tAFzPC7jLTzybdRa7Qg==", "dev": true, "dependencies": { - "@lerna/prompt": "5.1.8" + "@lerna/prompt": "5.5.0" }, "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/output": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.1.8.tgz", - "integrity": "sha512-dXsKY8X2eAdPKRKHDZTASlWn95Eav1oQX9doUXkvV3o4UwIgqOCIsU7RqSED3EAEQz6VUH0rXNb/+d3uVeAoJQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.5.0.tgz", + "integrity": "sha512-f+MXc9X1xEe2w0AC+CAMr093MumCTNYmyIt8eUMYQMmoRkWT2n4tN8/KvWw9ucSWLKMkZtOTJiC+S6RJ4nWUig==", "dev": true, "dependencies": { "npmlog": "^6.0.2" @@ -1780,16 +1817,16 @@ } }, "node_modules/@lerna/pack-directory": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.1.8.tgz", - "integrity": "sha512-aaH28ttS+JVimLFrVeZRWZ9Cii4GG2vkJXmQNikWBNQiFL/7S1x83NjMk4SQRdmtpYJkcQpQMZ2hDUdNxLnDCg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.5.0.tgz", + "integrity": "sha512-zHpIAeZOpIH/Slb8vuh75XR46mc4RZNwPS6XpwRgMRpp3Y1Bazlv6hDcq+pZTg1FwYKIDQDRfxW3IQi/aDPIjA==", "dev": true, "dependencies": { - "@lerna/get-packed": "5.1.8", - "@lerna/package": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", - "@lerna/temp-write": "5.1.8", - "npm-packlist": "^2.1.4", + "@lerna/get-packed": "5.5.0", + "@lerna/package": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", + "@lerna/temp-write": "5.5.0", + "npm-packlist": "^5.1.1", "npmlog": "^6.0.2", "tar": "^6.1.0" }, @@ -1798,13 +1835,13 @@ } }, "node_modules/@lerna/package": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.1.8.tgz", - "integrity": "sha512-Ot+wu6XZ93tw8p9oSTJJA15TzGhVpo8VbgNhKPcI3JJjkxVq2D5L5jVeBkjQvFEQBonLibTr339uLLXyZ0RMzg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.5.0.tgz", + "integrity": "sha512-vP08ZdMd3A7B0hEI4ZNgCeBef64yCidrnFUIiIhXb/tAsDmGCGqS2IFdGRNE9vv01tVg0WrPLim4tl8AjoigKw==", "dev": true, "dependencies": { "load-json-file": "^6.2.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "write-pkg": "^4.0.0" }, "engines": { @@ -1812,14 +1849,14 @@ } }, "node_modules/@lerna/package-graph": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.1.8.tgz", - "integrity": "sha512-aGwXTwCpPfhUPiSRhdppogZjOqJPm39EBxHFDa1E0+/Qaig5avJs4hI6OrPLyjsTywAswtCMOArvD1QZqxwvrQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.5.0.tgz", + "integrity": "sha512-g378NrCTEmVXqkAkv9EX8L3K7JTioPNuxItXTHQxlHDhZ2RM9KCVbT/ihwefVujWwwMPNij10bmfJUaEp2TGPQ==", "dev": true, "dependencies": { - "@lerna/prerelease-id-from-version": "5.1.8", - "@lerna/validation-error": "5.1.8", - "npm-package-arg": "^8.1.0", + "@lerna/prerelease-id-from-version": "5.5.0", + "@lerna/validation-error": "5.5.0", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "semver": "^7.3.4" }, @@ -1855,9 +1892,9 @@ } }, "node_modules/@lerna/prerelease-id-from-version": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.1.8.tgz", - "integrity": "sha512-wfWv/8lHSk2/pl4FjopbDelFSLCz9s6J9AY5o7Sju9HtD9QUXcQHaXnEP1Rum9/rJZ8vWdFURcp9kzz8nxQ1Ow==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.5.0.tgz", + "integrity": "sha512-cpy0EgfO/7fXPhl/EsJnD8uGv0f8d6FHG2R1Xr7sJvmkffhkIy90qkFA7uSaZAA+ar9QFSAUJ+wGox0bhGJhHA==", "dev": true, "dependencies": { "semver": "^7.3.4" @@ -1894,9 +1931,9 @@ } }, "node_modules/@lerna/profiler": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.1.8.tgz", - "integrity": "sha512-vpAFN85BvMHfIGA53IcwaUnS9FHAismEnNyFCjMkzKV55mmXFZlWpZyO36ESdSQRWCo5/25f3Ln0Y6YubY3Dvw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.5.0.tgz", + "integrity": "sha512-2DkkMxYCq/RsBptN+gJtmqwdrFqji6QMpNlm7v9JgS9kN2aHUIxcavtHXDaYf9sdPoey/bGypRv9DDTDcuw9MA==", "dev": true, "dependencies": { "fs-extra": "^9.1.0", @@ -1944,18 +1981,19 @@ } }, "node_modules/@lerna/project": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.1.8.tgz", - "integrity": "sha512-zTFp91kmyJ0VHBmNXEArVrMSZVxnBJ7pHTt8C7RY91WSZhw8XDNumqMHDM+kEM1z/AtDBAAAGqBE3sjk5ONDXQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.5.0.tgz", + "integrity": "sha512-TD6/QGv/+Uh7GRXM/9m3EC0QpK2+U1WA+hoE5pSnpU5oDzwwUkynS3RuAcd2ID19e/u/ajfZtV+xcpaM7t+SHw==", "dev": true, "dependencies": { - "@lerna/package": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/package": "5.5.0", + "@lerna/validation-error": "5.5.0", "cosmiconfig": "^7.0.0", "dedent": "^0.7.0", "dot-prop": "^6.0.1", "glob-parent": "^5.1.1", "globby": "^11.0.2", + "js-yaml": "^4.1.0", "load-json-file": "^6.2.0", "npmlog": "^6.0.2", "p-map": "^4.0.0", @@ -1988,12 +2026,12 @@ } }, "node_modules/@lerna/prompt": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.1.8.tgz", - "integrity": "sha512-Cmq0FV/vyCHu00kySxXMfuPvutsi8qoME2/nFcICIktvDqxXr5aSFY8QqB123awNCbpb4xcHykjFnEj/RNdb2Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.5.0.tgz", + "integrity": "sha512-B7QEmmyleR+1XAewqEPdgZPecekJgVoAZ8YZgR8l4QlAMvf5BTHI//3AJI/HPN4DYZWGcjDoGFLEkpX906T8Rw==", "dev": true, "dependencies": { - "inquirer": "^7.3.3", + "inquirer": "^8.2.4", "npmlog": "^6.0.2" }, "engines": { @@ -2001,38 +2039,38 @@ } }, "node_modules/@lerna/publish": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.1.8.tgz", - "integrity": "sha512-Q88WxXVNAh/ZWj7vYG83RZUfQyQlJMg7tDhsVTvZzy3VpkkCPtmJXZfX+g4RmE0PNyjsXx9QLYAOZnOB613WyA==", - "dev": true, - "dependencies": { - "@lerna/check-working-tree": "5.1.8", - "@lerna/child-process": "5.1.8", - "@lerna/collect-updates": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/describe-ref": "5.1.8", - "@lerna/log-packed": "5.1.8", - "@lerna/npm-conf": "5.1.8", - "@lerna/npm-dist-tag": "5.1.8", - "@lerna/npm-publish": "5.1.8", - "@lerna/otplease": "5.1.8", - "@lerna/output": "5.1.8", - "@lerna/pack-directory": "5.1.8", - "@lerna/prerelease-id-from-version": "5.1.8", - "@lerna/prompt": "5.1.8", - "@lerna/pulse-till-done": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/validation-error": "5.1.8", - "@lerna/version": "5.1.8", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.5.0.tgz", + "integrity": "sha512-ZstILgupYxB8TpGkWgPZg1uoFIQUij07kizHau1BZXdV3xwPU6jtYAzGXuztinJDnnxfwjc7SjuinoYZcbmJXg==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "5.5.0", + "@lerna/child-process": "5.5.0", + "@lerna/collect-updates": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/describe-ref": "5.5.0", + "@lerna/log-packed": "5.5.0", + "@lerna/npm-conf": "5.5.0", + "@lerna/npm-dist-tag": "5.5.0", + "@lerna/npm-publish": "5.5.0", + "@lerna/otplease": "5.5.0", + "@lerna/output": "5.5.0", + "@lerna/pack-directory": "5.5.0", + "@lerna/prerelease-id-from-version": "5.5.0", + "@lerna/prompt": "5.5.0", + "@lerna/pulse-till-done": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/validation-error": "5.5.0", + "@lerna/version": "5.5.0", "fs-extra": "^9.1.0", - "libnpmaccess": "^4.0.1", - "npm-package-arg": "^8.1.0", - "npm-registry-fetch": "^9.0.0", + "libnpmaccess": "^6.0.3", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-pipe": "^3.1.0", - "pacote": "^13.4.1", + "pacote": "^13.6.1", "semver": "^7.3.4" }, "engines": { @@ -2103,9 +2141,9 @@ } }, "node_modules/@lerna/pulse-till-done": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.1.8.tgz", - "integrity": "sha512-KsyOazHG6wnjfdJhIdhTaTNwhj8Np/aPPei/ac9WzcuzgLS/uCs1IVFFIYBv5JdTmyVBKmguSZxdYjk7JzKBew==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.5.0.tgz", + "integrity": "sha512-PcPSCWGzLp00UGJ5VHDpdqpBQ9C9Cs7E5FImEITGHE9UwcAC23LwSp7tOzdXWPyj3u8PLYLn+ebt9ml1jWSKgA==", "dev": true, "dependencies": { "npmlog": "^6.0.2" @@ -2115,26 +2153,26 @@ } }, "node_modules/@lerna/query-graph": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.1.8.tgz", - "integrity": "sha512-+p+bjPI403Hwv1djTS5aJe7DtPWIDw0a427BE68h1mmrPc9oTe3GG+0lingbfGR8woA2rOmjytgK2jeErOryPg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.5.0.tgz", + "integrity": "sha512-mqCzZRF+IDPSj2zYJ1eO3PQsZshiKf54BXAe7HnYYJNbs1i8JMRpdaLr3TEyKDpVTcVzbEmFKwGi7KMhJG6rBQ==", "dev": true, "dependencies": { - "@lerna/package-graph": "5.1.8" + "@lerna/package-graph": "5.5.0" }, "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/resolve-symlink": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.1.8.tgz", - "integrity": "sha512-OJa8ct4Oo2BcD95FmJqkc5qZMepaQK5RZAWoTqEXG/13Gs0mPc0fZGIhnnpTqtm3mgNhlT7ypCHG42I7hKiSeg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.5.0.tgz", + "integrity": "sha512-J44Kc6OWa1uNZh+YSWuIBorTpTuXhuuJ7DtX4vwfF3AAp2frW6pBrmFZMibOcyOQ6QCp+PeiHQCXCF42uSq8pA==", "dev": true, "dependencies": { "fs-extra": "^9.1.0", "npmlog": "^6.0.2", - "read-cmd-shim": "^2.0.0" + "read-cmd-shim": "^3.0.0" }, "engines": { "node": "^14.15.0 || >=16.0.0" @@ -2177,12 +2215,12 @@ } }, "node_modules/@lerna/rimraf-dir": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.1.8.tgz", - "integrity": "sha512-3pT1X8kzW8xHUuAmRgzSKAF+/H1h1eSWq5+ACzeTWnvgqE7++0URee7TXwVCP/5FZPTZIzIclQCh4G0WD9Jfjg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.5.0.tgz", + "integrity": "sha512-dwWN5SGXQ39FocRAZ3uL7tYUuK98r/VHQZRcJjJ8hxpuxti+EPzGegtA05NsvvmW2PpFsBzYKITFQHX3GX4LWA==", "dev": true, "dependencies": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "npmlog": "^6.0.2", "path-exists": "^4.0.0", "rimraf": "^3.0.2" @@ -2207,19 +2245,19 @@ } }, "node_modules/@lerna/run": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.1.8.tgz", - "integrity": "sha512-E5mI3FswVN9zQ3bCYUQxxPlLL400vnKpwLSzzRNFy//TR8Geu0LeR6NY+Jf0jklsKxwWGMJgqL6VqPqxDaNtdw==", - "dev": true, - "dependencies": { - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/npm-run-script": "5.1.8", - "@lerna/output": "5.1.8", - "@lerna/profiler": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/timer": "5.1.8", - "@lerna/validation-error": "5.1.8", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.5.0.tgz", + "integrity": "sha512-yYR65A/GcDgEMmk2lMSBHGAbdgLMi6wICugLzVXfXISuTbEMzN1dCwSeGBOxzK2cvKV2Bpn4WeEYs64FNmNJbQ==", + "dev": true, + "dependencies": { + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/npm-run-script": "5.5.0", + "@lerna/output": "5.5.0", + "@lerna/profiler": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/timer": "5.5.0", + "@lerna/validation-error": "5.5.0", "p-map": "^4.0.0" }, "engines": { @@ -2227,26 +2265,27 @@ } }, "node_modules/@lerna/run-lifecycle": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.1.8.tgz", - "integrity": "sha512-5rRpovujhLJufKRzMp5sl2BIIqrPeoXxjniQbzkpSxZ2vnD+bE9xOoaciHQxOsmXfXhza0C+k3xYMM5+B/bVzg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.5.0.tgz", + "integrity": "sha512-BtnEO3IlZ7znUmQtSxd7oSSmgzJbSH+v58foTpbuvMtOBFJxV4LNyv2uyto2t4bYdCWEnw4ybd8j32aEEG9UNQ==", "dev": true, "dependencies": { - "@lerna/npm-conf": "5.1.8", - "@npmcli/run-script": "^3.0.2", - "npmlog": "^6.0.2" + "@lerna/npm-conf": "5.5.0", + "@npmcli/run-script": "^4.1.7", + "npmlog": "^6.0.2", + "p-queue": "^6.6.2" }, "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/run-topologically": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.1.8.tgz", - "integrity": "sha512-isuulfBdNsrgV2QF/HwCKCecfR9mPEU9N4Nf8n9nQQgakwOscoDlwGp2xv27pvcQKI52q/o/ISEjz3JeoEQiOA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.5.0.tgz", + "integrity": "sha512-zl4I/SNg/yiLja1aF0B4X22CRzpRdvLB47KGjAgiGydcHwx2TUmI3MPoQVjvUbaOuctF/wSMS2tI6Hgdo60I0Q==", "dev": true, "dependencies": { - "@lerna/query-graph": "5.1.8", + "@lerna/query-graph": "5.5.0", "p-queue": "^6.6.2" }, "engines": { @@ -2254,13 +2293,13 @@ } }, "node_modules/@lerna/symlink-binary": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.1.8.tgz", - "integrity": "sha512-s7VfKNJZnWvTKZ7KR8Yxh1rYhE/ARMioD5axyu3FleS3Xsdla2M5sQsLouCrdfM3doTO8lMxPVvVSFmL7q0KOA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.5.0.tgz", + "integrity": "sha512-vpVzEWgVfKGzMheb9XizF8hF/Ypfov0iMPBSAzVNxu5eNQVUz3KFrIZNgiBsFdIVN4W/y4jLwOSgXXKwvIodkA==", "dev": true, "dependencies": { - "@lerna/create-symlink": "5.1.8", - "@lerna/package": "5.1.8", + "@lerna/create-symlink": "5.5.0", + "@lerna/package": "5.5.0", "fs-extra": "^9.1.0", "p-map": "^4.0.0" }, @@ -2305,14 +2344,14 @@ } }, "node_modules/@lerna/symlink-dependencies": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.1.8.tgz", - "integrity": "sha512-U5diiaKdWUlvoFMh3sYIEESBLa8Z3Q/EpkLl5o4YkcbPBjFHJFpmoqCGomwL9sf9HQUV2S9Lt9szJT8qgQm86Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.5.0.tgz", + "integrity": "sha512-gqFZ4AeVr+nqyfg8c2xNizGzBemfgtCpGv4NnjA/66HJWCE+/fT7NTIi8Qk2glbYf37ojRcjUfc0RvW7NGv5qA==", "dev": true, "dependencies": { - "@lerna/create-symlink": "5.1.8", - "@lerna/resolve-symlink": "5.1.8", - "@lerna/symlink-binary": "5.1.8", + "@lerna/create-symlink": "5.5.0", + "@lerna/resolve-symlink": "5.5.0", + "@lerna/symlink-binary": "5.5.0", "fs-extra": "^9.1.0", "p-map": "^4.0.0", "p-map-series": "^2.1.0" @@ -2358,9 +2397,9 @@ } }, "node_modules/@lerna/temp-write": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.1.8.tgz", - "integrity": "sha512-4/guYB5XotugyM8P/F1z6b+hNlSCe/QuZsmiZwgXOw2lmYnkSzLWDVjqsdZtNYqojK0lioxcPjZiL5qnEkk1PQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.5.0.tgz", + "integrity": "sha512-7MmqTfyWcjGkgPkWHaldmCmDBSLka50z0+lsmZuGLwIvQl72ZfC+ZJF/6107m+hgtUJBpJQ3UYEhrrdfR4L46Q==", "dev": true, "dependencies": { "graceful-fs": "^4.1.15", @@ -2371,18 +2410,18 @@ } }, "node_modules/@lerna/timer": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.1.8.tgz", - "integrity": "sha512-Ua4bw2YOO3U+sFujE+MsUG+lllU0X7u6PCTj1QKe0QlR0zr2gCa0pcwjUQPdNfxnpJpPY+hdbfTUv2viDloaiA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.5.0.tgz", + "integrity": "sha512-jgCL2ZmZNn7sWL+M/TuGJukTkUs/il6EwBYcgd10h0JazQ4fAiBhFq36ZzTvYkz6ujKvKOcqyWrMdmi8Q339qA==", "dev": true, "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/validation-error": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.1.8.tgz", - "integrity": "sha512-n+IiaxN2b08ZMYnezsmwL6rXB15/VvweusC04GMh1XtWunnMzSg9JDM7y6bw2vfpBBQx6cBFhLKSpD2Fcq5D5Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.5.0.tgz", + "integrity": "sha512-o/8sEaZKdZdE4/t+E/cFpnYIiDzt7uMHVpWmpCG0l6nZSDzB8+5ehAAudy2qJOwxEAKJ6QGvi7jWLjc2NWa4HQ==", "dev": true, "dependencies": { "npmlog": "^6.0.2" @@ -2392,25 +2431,25 @@ } }, "node_modules/@lerna/version": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.1.8.tgz", - "integrity": "sha512-3f4P7KjIs6Gn2iaGkA5EASE9izZeDKtEzE8i2DE7YfVdw/P+EwFfKv2mKBXGbckYw42YO1tL6aD2QH0C8XbwlA==", - "dev": true, - "dependencies": { - "@lerna/check-working-tree": "5.1.8", - "@lerna/child-process": "5.1.8", - "@lerna/collect-updates": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/conventional-commits": "5.1.8", - "@lerna/github-client": "5.1.8", - "@lerna/gitlab-client": "5.1.8", - "@lerna/output": "5.1.8", - "@lerna/prerelease-id-from-version": "5.1.8", - "@lerna/prompt": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/temp-write": "5.1.8", - "@lerna/validation-error": "5.1.8", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.5.0.tgz", + "integrity": "sha512-E6ZrzTrYwof5cSvyTpztZKOiJKAK+aXi/gfsGbLdbYGMArY4B/pYOMOcRMXHBh7BuLicMih/mRUb4M7uCnuE0A==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "5.5.0", + "@lerna/child-process": "5.5.0", + "@lerna/collect-updates": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/conventional-commits": "5.5.0", + "@lerna/github-client": "5.5.0", + "@lerna/gitlab-client": "5.5.0", + "@lerna/output": "5.5.0", + "@lerna/prerelease-id-from-version": "5.5.0", + "@lerna/prompt": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/temp-write": "5.5.0", + "@lerna/validation-error": "5.5.0", "chalk": "^4.1.0", "dedent": "^0.7.0", "load-json-file": "^6.2.0", @@ -2526,13 +2565,13 @@ } }, "node_modules/@lerna/write-log-file": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.1.8.tgz", - "integrity": "sha512-B+shMH3TpzA7Q5GGbuNkOmdPQdD1LXRFj7R17LINkn82PhP9CUgubwYuiVzrLa16ADi0V5Ad76pqtHi/6kD0nA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.5.0.tgz", + "integrity": "sha512-XPnp5B+bcmwpXJpJn45V8e2SU6Z1oTwW0vW9uW3l0nmbOvpT9PbPkf9hC80cZOWovXSBefUDwEGqA5fQdhvqGg==", "dev": true, "dependencies": { "npmlog": "^6.0.2", - "write-file-atomic": "^3.0.3" + "write-file-atomic": "^4.0.1" }, "engines": { "node": "^14.15.0 || >=16.0.0" @@ -2646,9 +2685,9 @@ } }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.0.2.tgz", - "integrity": "sha512-FMX5i7a+ojIguHpWbzh5MCsCouJkwf4z4ejdUY/fsgB9Vkdak4ZnoIEskOyOUMMB4lctiZFGszFQJXUeFL8tRg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.1.2.tgz", + "integrity": "sha512-TyVLn3S/+ikMDsh0gbKv2YydKClN8HaJDDpONlaZR+LVJmsxLFUgA+O7zu59h9+f9gX1aj/ahw9wqa6rosmrYQ==", "cpu": [ "arm64" ], @@ -2659,9 +2698,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.0.2.tgz", - "integrity": "sha512-DznYtF3lHuZDSRaIOYeif4JgO0NtO2Xf8DsngAugMx/bUdTFbg86jDTmkVJBNmV+cxszz6OjGvinnS8AbJ342g==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.1.2.tgz", + "integrity": "sha512-YPXtcVkhmVNoMGlqp81ZHW4dMxK09msWgnxtsDpSiZwTzUBG2N+No2bsr7WMtBKCVJMSD6mbAl7YhKUqkp/Few==", "cpu": [ "x64" ], @@ -2672,9 +2711,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.0.2.tgz", - "integrity": "sha512-Gy9+c3Wj+rUlD3YvCZTi92gs+cRX7ZQogtwq0IhRenloTTlsbpezNgk6OCkt59V4ATEWSic9rbU92H/l7XsRvA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.1.2.tgz", + "integrity": "sha512-42R4MAFeIeNn+L98qwxAt360bwzX2Kf0ZQkBBucJ2Ircza3asoY4CDbgiu9VWklq8gWJVSJSJBwDI+c/THiWkA==", "cpu": [ "arm" ], @@ -2685,9 +2724,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.0.2.tgz", - "integrity": "sha512-b0jMEo566YdM2K+BurSed7bswjo3a6bcdw5ETqoIfSuxKuRLPfAiOjVbZyZBgx3J/TAM/QrvEQ/VN89A0ZAxSg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.1.2.tgz", + "integrity": "sha512-vHZ2JiOWF2+DN9lzltGbhtQNzDo8fKFGrf37UJrgqxU0yvtERrzUugnfnX1wmVfFhSsF8OxrfqiNOUc5hko1Zg==", "cpu": [ "arm64" ], @@ -2698,9 +2737,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.0.2.tgz", - "integrity": "sha512-zrBHaePwcv4cQXxzYgNj0+A8I1uVN97E7/3LmkRocYZ+rMwUsnPpp4RuTAHSRoKlTQV3nSdCQW4Qdt4MXw/iHw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.1.2.tgz", + "integrity": "sha512-RjRoRxg7Q3kPAdUSC5EUUPlwfMkIVhmaRTIe+cqHbKrGZ4M6TyCA/b5qMaukQ/1CHWrqYY2FbKOAU8Hg0pQFzg==", "cpu": [ "x64" ], @@ -2711,9 +2750,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.0.2.tgz", - "integrity": "sha512-fpnI00dt+yO1cKx9qBXelKhPBdEgvc8ZPav1+0r09j0woYQU2N79w/jcGawSY5UGlgQ3vjaJsFHnGbGvvqdLzg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.1.2.tgz", + "integrity": "sha512-rIZVR48zA8hGkHIK7ED6+ZiXsjRCcAVBJbm8o89OKAMTmEAQ2QvoOxoiu3w2isAaWwzgtQIOFIqHwvZDyLKCvw==", "cpu": [ "x64" ], @@ -2759,9 +2798,9 @@ } }, "node_modules/@npmcli/arborist": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.2.0.tgz", - "integrity": "sha512-zWV7scFGL0SmpvfQyIWnMFbU/0YgtMNyvJiJwR98kyjUSntJGWFFR0O600d5W+TrDcTg0GyDbY+HdzGEg+GXLg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz", + "integrity": "sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==", "dev": true, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", @@ -2772,7 +2811,7 @@ "@npmcli/name-from-folder": "^1.0.1", "@npmcli/node-gyp": "^2.0.0", "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^3.0.0", + "@npmcli/run-script": "^4.1.3", "bin-links": "^3.0.0", "cacache": "^16.0.6", "common-ancestor-path": "^1.0.1", @@ -2786,7 +2825,7 @@ "npm-pick-manifest": "^7.0.0", "npm-registry-fetch": "^13.0.0", "npmlog": "^6.0.2", - "pacote": "^13.0.5", + "pacote": "^13.6.1", "parse-conflict-json": "^2.0.1", "proc-log": "^2.0.0", "promise-all-reject-late": "^1.0.0", @@ -2806,94 +2845,18 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@npmcli/arborist/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "dependencies": { "lru-cache": "^7.5.1" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/@npmcli/arborist/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@npmcli/arborist/node_modules/make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", - "dev": true, - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", @@ -2909,24 +2872,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/npm-registry-fetch": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", - "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -2969,54 +2914,10 @@ "node": ">=10" } }, - "node_modules/@npmcli/arborist/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@npmcli/arborist/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/ci-detect": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz", - "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==", - "dev": true - }, "node_modules/@npmcli/fs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "dependencies": { "@gar/promisify": "^1.1.3", @@ -3054,9 +2955,9 @@ } }, "node_modules/@npmcli/git": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", - "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, "dependencies": { "@npmcli/promise-spawn": "^3.0.0", @@ -3117,9 +3018,9 @@ } }, "node_modules/@npmcli/map-workspaces": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.3.tgz", - "integrity": "sha512-X6suAun5QyupNM8iHkNPh0AHdRC2rb1W+MTdMvvA/2ixgmqZwlq5cGUBgmKHUHT2LgrkKJMAXbfAoTxOigpK8Q==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz", + "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==", "dev": true, "dependencies": { "@npmcli/name-from-folder": "^1.0.1", @@ -3214,9 +3115,9 @@ } }, "node_modules/@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "dependencies": { "mkdirp": "^1.0.4", @@ -3281,70 +3182,104 @@ } }, "node_modules/@npmcli/run-script": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, "dependencies": { "@npmcli/node-gyp": "^2.0.0", "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@nrwl/cli": { + "version": "14.6.5", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.6.5.tgz", + "integrity": "sha512-sjT4/oMk1F4+dTpCp08IVE8hfqKsokebUECzC1hTu4pCeFo0oviIi7bQTuCIbG9w4iiHLioa6QmLRXBwVJEr9w==", + "dev": true, + "dependencies": { + "nx": "14.6.5" + } + }, + "node_modules/@nrwl/tao": { + "version": "14.6.5", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.6.5.tgz", + "integrity": "sha512-sSbTSN4Bfh4vQR2iCl9arNzEhJztG6paY2j+k/GwQZdN+QssX9xV32jLWYIC3rDmPJWaZ11uD3TgAyr3X7GXhw==", + "dev": true, + "dependencies": { + "nx": "14.6.5" + }, + "bin": { + "tao": "index.js" + } + }, "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.1.tgz", + "integrity": "sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==", "dev": true, "dependencies": { - "@octokit/types": "^6.0.3" + "@octokit/types": "^7.0.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.0.5.tgz", + "integrity": "sha512-4R3HeHTYVHCfzSAi0C6pbGXV8UDI5Rk+k3G7kLVNckswN9mvpOzW9oENfjfH3nEmzg8y3AmKmzs8Sg6pLCeOCA==", "dev": true, "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.2.tgz", + "integrity": "sha512-8/AUACfE9vpRpehE6ZLfEtzkibe5nfsSwFZVMsG8qabqRt1M81qZYUFRZa1B8w8lP6cdfDJfRq9HWS+MbmR7tw==", "dev": true, "dependencies": { - "@octokit/types": "^6.0.3", + "@octokit/types": "^7.0.0", "is-plain-object": "^5.0.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.1.tgz", + "integrity": "sha512-sxmnewSwAixkP1TrLdE6yRG53eEhHhDTYUykUwdV9x8f91WcbhunIHk9x1PZLALdBZKRPUO2HRcm4kezZ79HoA==", "dev": true, "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", + "@octokit/request": "^6.0.0", + "@octokit/types": "^7.0.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/openapi-types": { - "version": "12.8.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.8.0.tgz", - "integrity": "sha512-ydcKLs2KKcxlhpdWLzJxEBDEk/U5MUeqtqkXlrtAUXXFPs6vLl1PEGghFC/BbpleosB7iXs0Z4P2DGe7ZT5ZNg==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.9.0.tgz", + "integrity": "sha512-MOYjRyLIM0zzNb9RfEwVK6HLIc2nIF2OMVtMqiNOGbX0SHrQvQbI6X1K16ktmaHr8WUBv+eeul8cD9mz4rNiWQ==", "dev": true }, "node_modules/@octokit/plugin-enterprise-rest": { @@ -3354,15 +3289,18 @@ "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.1.tgz", - "integrity": "sha512-NVNTK63yoTFp07GqISWK+uDfGH1CAPhQXS7LzsJBvaK5W+UlvG549pLZC55FK0FqANVl6q/9ra3SR5c97xF/sw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-4.2.2.tgz", + "integrity": "sha512-oslJFmdcWeB3Q8dzn2WNFBzEAvqCH+cvrjBUhS7uwQxAt5yH91w1eo2flWiR0Rqxh+EijQS5ImoB0iQ3hz7P2Q==", "dev": true, "dependencies": { - "@octokit/types": "^6.38.2" + "@octokit/types": "^7.3.0" + }, + "engines": { + "node": ">= 14" }, "peerDependencies": { - "@octokit/core": ">=2" + "@octokit/core": ">=4" } }, "node_modules/@octokit/plugin-request-log": { @@ -3375,62 +3313,74 @@ } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.5.0.tgz", + "integrity": "sha512-+r/tWwc7hI3vYDb+d0hAqbr04Kle6pL+MmGxMDTUn7wIwry5qFXnUA8RCa5CO8EcuHbZLywnqIVRLdM08qV8Ew==", "dev": true, "dependencies": { - "@octokit/types": "^6.39.0", + "@octokit/types": "^7.3.0", "deprecation": "^2.3.1" }, + "engines": { + "node": ">= 14" + }, "peerDependencies": { "@octokit/core": ">=3" } }, "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.1.tgz", + "integrity": "sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==", "dev": true, "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", "is-plain-object": "^5.0.0", "node-fetch": "^2.6.7", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.1.tgz", + "integrity": "sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==", "dev": true, "dependencies": { - "@octokit/types": "^6.0.3", + "@octokit/types": "^7.0.0", "deprecation": "^2.0.0", "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/rest": { - "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.4.tgz", + "integrity": "sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA==", "dev": true, "dependencies": { - "@octokit/core": "^3.5.1", - "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/core": "^4.0.0", + "@octokit/plugin-paginate-rest": "^4.0.0", "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + "@octokit/plugin-rest-endpoint-methods": "^6.0.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/types": { - "version": "6.39.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.39.0.tgz", - "integrity": "sha512-Mq4N9sOAYCitTsBtDdRVrBE80lIrMBhL9Jbrw0d+j96BAzlq4V+GLHFJbHokEsVvO/9tQupQdoFdgVYhD2C8UQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.3.0.tgz", + "integrity": "sha512-7Ar22AVxsJBYZuPkGQwFQybGt2YjuP6j6Z36bPntIYy3R9qSowB55mXOsb16hc0UqtJkYBrRMVXKlaX1OHsh1g==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^12.7.0" + "@octokit/openapi-types": "^13.9.0" } }, "node_modules/@parcel/bundler-default": { @@ -3673,9 +3623,9 @@ } }, "node_modules/@parcel/css": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.12.2.tgz", - "integrity": "sha512-Sa0PvZu5u877CupQA8IjEATqjJFynBfA7LxbcyutFe2LDCRSqB5Bm08jKFScyaz56qjZNIxZxXk2SApNkOvoAA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.13.1.tgz", + "integrity": "sha512-pDv+1tPCk2ggGZ1Msl4r+lq7dPKjUBpZXJf/DMydTnYPxupwAjtmlmOd67CF3QHVLyKYB+viU4g5M8pVXCbaeA==", "dev": true, "dependencies": { "detect-libc": "^1.0.3" @@ -3688,20 +3638,20 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/css-darwin-arm64": "1.12.2", - "@parcel/css-darwin-x64": "1.12.2", - "@parcel/css-linux-arm-gnueabihf": "1.12.2", - "@parcel/css-linux-arm64-gnu": "1.12.2", - "@parcel/css-linux-arm64-musl": "1.12.2", - "@parcel/css-linux-x64-gnu": "1.12.2", - "@parcel/css-linux-x64-musl": "1.12.2", - "@parcel/css-win32-x64-msvc": "1.12.2" + "@parcel/css-darwin-arm64": "1.13.1", + "@parcel/css-darwin-x64": "1.13.1", + "@parcel/css-linux-arm-gnueabihf": "1.13.1", + "@parcel/css-linux-arm64-gnu": "1.13.1", + "@parcel/css-linux-arm64-musl": "1.13.1", + "@parcel/css-linux-x64-gnu": "1.13.1", + "@parcel/css-linux-x64-musl": "1.13.1", + "@parcel/css-win32-x64-msvc": "1.13.1" } }, "node_modules/@parcel/css-darwin-arm64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.12.2.tgz", - "integrity": "sha512-6VvsoYSltBiUh/uyfPzQ+I3DiTFN7tmRv6zm1LH98J7GGCDDhbYEtbQjjCs15ex6fVn1ORZK0JO+mMlsg1JwTA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.13.1.tgz", + "integrity": "sha512-46LVidYcao8zurVPOZ4ZWJQ/50o4N+Z0K4CRmCCqWE+5gIWlx+md+W0h8XQTRb/GQ3j3+mlZvYCQxHpKy5M1lA==", "cpu": [ "arm64" ], @@ -3719,9 +3669,9 @@ } }, "node_modules/@parcel/css-darwin-x64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-darwin-x64/-/css-darwin-x64-1.12.2.tgz", - "integrity": "sha512-3J0/LrDvt5vevOisnrE0q5mEcuiAY+K7OZwIv84SAnrbjlL5sshmIaaNzL869kb4thza+RClEj0mS5XTm1IUEw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-darwin-x64/-/css-darwin-x64-1.13.1.tgz", + "integrity": "sha512-vX1/Ut06UL5MQzWr5fPg51n6NYrzfjW9A+jXH3KeBloWtX+NllhLilmtcO4X1y/ZqaFjqHWpk4yrNVdtk1r4zA==", "cpu": [ "x64" ], @@ -3739,9 +3689,9 @@ } }, "node_modules/@parcel/css-linux-arm-gnueabihf": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.12.2.tgz", - "integrity": "sha512-OsX7I3dhBvnxEbAH++08RFe7yhjRp33ulzrCvJTMOP9YkxEEJ8qId3sNzJBHIVQzHyTlPTnBRHbSDhU3TFe/eQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.13.1.tgz", + "integrity": "sha512-qxQKUeXLHqehLmuJODQ7GNp0Syj2Kl35X4YvXGoPOI7Eq/y2ny3G5NCKUWkGDwOasIP3hKvVVfJRJv9fLJWnDQ==", "cpu": [ "arm" ], @@ -3759,9 +3709,9 @@ } }, "node_modules/@parcel/css-linux-arm64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.12.2.tgz", - "integrity": "sha512-R1Kqw+1Rsru9Q4+qvUEC6B8P21bpqhuF9rv8GmBmmnF1i2hMZ1JiY+uh/ej8IaRV0O3fAHeQGIyGBWx6qWDpcw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.13.1.tgz", + "integrity": "sha512-FxnOONVo8WBW58uzjqv/mwSBDgGMp1qxK+fovjqLPCP3zcNgxkUG0l6ElWpqtiWWH3mTMzSHe+7hSaeVov12yQ==", "cpu": [ "arm64" ], @@ -3779,9 +3729,9 @@ } }, "node_modules/@parcel/css-linux-arm64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.12.2.tgz", - "integrity": "sha512-nwixgM4SEgPUQata9aAiJW0A5Q9ms+xim1tXT1i+91kOei4Fu2Wr2OuofMk+mlhbgmGKCTcu4gzMPReGxUhuRA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.13.1.tgz", + "integrity": "sha512-6RDhL36HBAtt1mHa/y+34fHRImEJT/rd9hy1Z2qz117WUgzpZ3m4tFw33VrG7MKACugs9C2zG1MdVfy1Rz5+Uw==", "cpu": [ "arm64" ], @@ -3799,9 +3749,9 @@ } }, "node_modules/@parcel/css-linux-x64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.12.2.tgz", - "integrity": "sha512-cJYVMHnQSGhDwQByyvjFZppjMBNlgxXl/R4cX5DwrQE0QZmK/42BYnMp92rvoprEG6LRyRoiGtCjyfYTPWajog==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.13.1.tgz", + "integrity": "sha512-4VsduFKs35J1I3iQJuBCTp66K5mLh8nrtfXzkBDgP9tc6cLqw9PFodby9NhW9SJSn0ZVdrciIXW0C8Lp3Ev+bw==", "cpu": [ "x64" ], @@ -3819,9 +3769,9 @@ } }, "node_modules/@parcel/css-linux-x64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.12.2.tgz", - "integrity": "sha512-u9zdO/d831/74Tf+TdPUfaIuB9v6FD4Xz8UdWUDOXgQqaOlnJ9fAsAM39EkoWlMxPPljY3f4ay6irSe1a4XgSA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.13.1.tgz", + "integrity": "sha512-Ws34m9fW/0UuNTkC359nbnURzvSbCsstRG6QQ3UxdeNJ+crrgEsmvHPcN3WiIz/P2seP1Hu6GobKQAnOy6g3HA==", "cpu": [ "x64" ], @@ -3839,9 +3789,9 @@ } }, "node_modules/@parcel/css-win32-x64-msvc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.12.2.tgz", - "integrity": "sha512-kCAKr3vKqvPUv9oXBG3pGZQz5il3sEk35dpmTXFa/7eDNKR5XyLpiJs8JwWJTFfuUqroymDSXA1bCcjvNEYcAg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.13.1.tgz", + "integrity": "sha512-4yPYFQqUW4ZepIWa8rWiXnSDU6Nki2H9PB1NfTvr7IjN3WsNFrrVZFKsTg/KU2euYnasBXSZ+CMTUutvLZoVaA==", "cpu": [ "x64" ], @@ -5210,9 +5160,9 @@ } }, "node_modules/@rollup/plugin-typescript": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.3.tgz", - "integrity": "sha512-55L9SyiYu3r/JtqdjhwcwaECXP7JeJ9h1Sg1VWRJKIutla2MdZQodTgcCNybXLMCnqpNLEhS2vGENww98L1npg==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.5.0.tgz", + "integrity": "sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -5256,21 +5206,21 @@ "dev": true }, "node_modules/@swc/helpers": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", - "integrity": "sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", + "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", "dev": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 10" } }, "node_modules/@trysound/sax": { @@ -5292,9 +5242,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, "dependencies": { "@types/estree": "*", @@ -5323,6 +5273,12 @@ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -5336,9 +5292,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz", - "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==", + "version": "18.7.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.15.tgz", + "integrity": "sha512-XnjpaI8Bgc3eBag2Aw4t2Uj/49lLBSStHWfqKvIuXD7FIrZyMLWp8KuAFHAqxMZYTF9l08N1ctUn9YNybZJVmQ==", "dev": true }, "node_modules/@types/normalize-package-data": { @@ -5390,14 +5346,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.5.tgz", - "integrity": "sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz", + "integrity": "sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.30.5", - "@typescript-eslint/type-utils": "5.30.5", - "@typescript-eslint/utils": "5.30.5", + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/type-utils": "5.36.2", + "@typescript-eslint/utils": "5.36.2", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -5450,14 +5406,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.5.tgz", - "integrity": "sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.2.tgz", + "integrity": "sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.30.5", - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/typescript-estree": "5.30.5", + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/typescript-estree": "5.36.2", "debug": "^4.3.4" }, "engines": { @@ -5477,13 +5433,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz", - "integrity": "sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz", + "integrity": "sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/visitor-keys": "5.30.5" + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/visitor-keys": "5.36.2" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5494,12 +5450,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.5.tgz", - "integrity": "sha512-k9+ejlv1GgwN1nN7XjVtyCgE0BTzhzT1YsQF0rv4Vfj2U9xnslBgMYYvcEYAFVdvhuEscELJsB7lDkN7WusErw==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz", + "integrity": "sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.30.5", + "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/utils": "5.36.2", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -5520,9 +5477,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.5.tgz", - "integrity": "sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.2.tgz", + "integrity": "sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5533,13 +5490,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz", - "integrity": "sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz", + "integrity": "sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/visitor-keys": "5.30.5", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/visitor-keys": "5.36.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5587,15 +5544,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.5.tgz", - "integrity": "sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.2.tgz", + "integrity": "sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.30.5", - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/typescript-estree": "5.30.5", + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/typescript-estree": "5.36.2", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -5611,12 +5568,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.5.tgz", - "integrity": "sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz", + "integrity": "sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/types": "5.36.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -5849,6 +5806,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "deprecated": "This is probably built in to whatever tool you're using. If you still need it... idk", "dev": true, "peerDependencies": { "acorn": "^6.0.0" @@ -5998,16 +5956,16 @@ "dev": true }, "node_modules/are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/argparse": { @@ -6121,9 +6079,9 @@ } }, "node_modules/azure-devops-node-api": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.1.1.tgz", - "integrity": "sha512-XDG91XzLZ15reP12s3jFkKS8oiagSICjnLwxEYieme4+4h3ZveFOFRA4iYIG40RyHXsiI0mefFYYMFIJbMpWcg==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", + "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", "dev": true, "dependencies": { "tunnel": "0.0.6", @@ -6181,24 +6139,15 @@ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", "dev": true }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/bin-links": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.1.tgz", - "integrity": "sha512-9vx+ypzVhASvHTS6K+YSGf7nwQdANoz7v6MTC0aCtYnOEZ87YvMf81aY737EZnGZdpbRM3sfWjO9oWkKmuIvyQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz", + "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==", "dev": true, "dependencies": { "cmd-shim": "^5.0.0", "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", + "npm-normalize-package-bin": "^2.0.0", "read-cmd-shim": "^3.0.0", "rimraf": "^3.0.0", "write-file-atomic": "^4.0.0" @@ -6207,22 +6156,10 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/bin-links/node_modules/cmd-shim": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", - "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", - "dev": true, - "dependencies": { - "mkdirp-infer-owner": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/bin-links/node_modules/read-cmd-shim": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz", - "integrity": "sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==", + "node_modules/bin-links/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" @@ -6243,19 +6180,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -6311,9 +6235,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", - "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "funding": [ { @@ -6326,10 +6250,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001359", - "electron-to-chromium": "^1.4.172", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.4" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" }, "bin": { "browserslist": "cli.js" @@ -6408,10 +6332,40 @@ } }, "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/byte-size": { "version": "7.0.1", @@ -6423,9 +6377,9 @@ } }, "node_modules/cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, "dependencies": { "@npmcli/fs": "^2.1.0", @@ -6445,7 +6399,7 @@ "rimraf": "^3.0.2", "ssri": "^9.0.0", "tar": "^6.1.11", - "unique-filename": "^1.1.1" + "unique-filename": "^2.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" @@ -6548,18 +6502,6 @@ "node": "*" } }, - "node_modules/cacache/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -6609,9 +6551,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001363", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", - "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", + "version": "1.0.30001390", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz", + "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==", "dev": true, "funding": [ { @@ -6742,9 +6684,9 @@ } }, "node_modules/cheerio-select/node_modules/entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true, "engines": { "node": ">=0.12" @@ -6797,9 +6739,9 @@ } }, "node_modules/cheerio/node_modules/entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true, "engines": { "node": ">=0.12" @@ -6905,6 +6847,18 @@ "node": ">=8" } }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -6961,15 +6915,15 @@ } }, "node_modules/cmd-shim": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", - "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", + "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", "dev": true, "dependencies": { "mkdirp-infer-owner": "^2.0.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/color-convert": { @@ -7464,6 +7418,15 @@ "node": ">=0.8" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -7666,9 +7629,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.183", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.183.tgz", - "integrity": "sha512-PnJvlREshGPh3M5tgReLgqbOQ61yd4Knwo39Cxy9SMfqwX9q5iRy+JioQC1LyKx1IBAH2zoctAWblhgM2kbEKQ==", + "version": "1.4.243", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.243.tgz", + "integrity": "sha512-BgLD2gBX43OSXwlT01oYRRD5NIB4n3okTRxkzEAC6G0SZG4TTlyrWMjbOo0fajCwqwpRtMHXQNMjtRN6qpNtfw==", "dev": true }, "node_modules/emoji-regex": { @@ -7677,15 +7640,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -7719,17 +7673,37 @@ } }, "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/enquirer/node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" } }, "node_modules/entities": { @@ -7771,18 +7745,6 @@ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -7793,16 +7755,16 @@ } }, "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", + "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", + "get-intrinsic": "^1.1.2", "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", @@ -7814,9 +7776,9 @@ "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", + "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", @@ -7886,13 +7848,15 @@ } }, "node_modules/eslint": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", - "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -7902,14 +7866,17 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -7924,8 +7891,7 @@ "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -7938,9 +7904,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.30.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz", - "integrity": "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==", + "version": "7.31.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.7.tgz", + "integrity": "sha512-8NldBTeYp/kQoTV1uT0XF6HcmDqbgZ0lNPkN0wlRw8DJKXEnaWu+oh/6gt3xIhzvQ35wB2Y545fJhIbJSZ2NNw==", "dev": true, "dependencies": { "array-includes": "^3.1.5", @@ -8127,9 +8093,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -8184,23 +8150,26 @@ } }, "node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "dependencies": { - "acorn": "^8.7.1", + "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/espree/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -8384,10 +8353,13 @@ "dev": true }, "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } }, "node_modules/fastq": { "version": "1.13.0", @@ -8447,25 +8419,26 @@ } }, "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, "bin": { "flat": "cli.js" } @@ -8499,9 +8472,9 @@ } }, "node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "node_modules/fs-constants": { @@ -8926,6 +8899,12 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "node_modules/growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", @@ -9146,12 +9125,12 @@ "dev": true }, "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "dependencies": { - "@tootallnate/once": "1", + "@tootallnate/once": "2", "agent-base": "6", "debug": "4" }, @@ -9232,20 +9211,44 @@ } }, "node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -9328,48 +9331,48 @@ "dev": true }, "node_modules/init-package-json": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz", - "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", + "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", "dev": true, "dependencies": { - "npm-package-arg": "^8.1.5", + "npm-package-arg": "^9.0.1", "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "^4.1.1", + "read": "^1.0.7", + "read-package-json": "^5.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" + "validate-npm-package-name": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/init-package-json/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/init-package-json/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/init-package-json/node_modules/read-package-json": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", - "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", + "node_modules/init-package-json/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, "dependencies": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/init-package-json/node_modules/semver": { @@ -9387,28 +9390,42 @@ "node": ">=10" } }, + "node_modules/init-package-json/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, "dependencies": { "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "mute-stream": "0.0.8", + "ora": "^5.4.1", "run-async": "^2.4.0", - "rxjs": "^6.6.0", + "rxjs": "^7.5.5", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" } }, "node_modules/inquirer/node_modules/ansi-styles": { @@ -9514,9 +9531,9 @@ } }, "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true }, "node_modules/is-arrayish": { @@ -9589,15 +9606,18 @@ } }, "node_modules/is-builtin-module": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", - "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", + "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", "dev": true, "dependencies": { - "builtin-modules": "^3.0.0" + "builtin-modules": "^3.3.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-callable": { @@ -9625,9 +9645,9 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -9651,6 +9671,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -9681,6 +9716,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-json": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", @@ -9868,6 +9912,18 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -9880,6 +9936,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -10062,28 +10130,28 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz", - "integrity": "sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, "dependencies": { "array-includes": "^3.1.5", - "object.assign": "^4.1.2" + "object.assign": "^4.1.3" }, "engines": { "node": ">=4.0" } }, "node_modules/just-diff": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.0.3.tgz", - "integrity": "sha512-a8p80xcpJ6sdurk5PxDKb4mav9MeKjA3zFKZpCWBIfvg8mznfnmb13MKZvlrwJ+Lhis0wM3uGAzE0ArhFHvIcg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.1.1.tgz", + "integrity": "sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ==", "dev": true }, "node_modules/just-diff-apply": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.3.1.tgz", - "integrity": "sha512-dgFenZnMsc1xGNqgdtgnh7DK+Oy352CE3VZLbzcbQpsBs9iI2K3M0IRrdgREZ72eItTjbl0suRyvKRdVQa9GbA==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.4.1.tgz", + "integrity": "sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g==", "dev": true }, "node_modules/keytar": { @@ -10113,29 +10181,31 @@ } }, "node_modules/lerna": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.1.8.tgz", - "integrity": "sha512-KrpFx2l1x1X7wb9unqRU7OZTaNs5+67VQ1vxf8fIMgdtCAjEqkLxF/F3xLs+KBMws5PV19Q9YtPHn7SiwDl7iQ==", - "dev": true, - "dependencies": { - "@lerna/add": "5.1.8", - "@lerna/bootstrap": "5.1.8", - "@lerna/changed": "5.1.8", - "@lerna/clean": "5.1.8", - "@lerna/cli": "5.1.8", - "@lerna/create": "5.1.8", - "@lerna/diff": "5.1.8", - "@lerna/exec": "5.1.8", - "@lerna/import": "5.1.8", - "@lerna/info": "5.1.8", - "@lerna/init": "5.1.8", - "@lerna/link": "5.1.8", - "@lerna/list": "5.1.8", - "@lerna/publish": "5.1.8", - "@lerna/run": "5.1.8", - "@lerna/version": "5.1.8", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.5.0.tgz", + "integrity": "sha512-1cZIijUWcI9ZqK+ejj1dBejTOLL64b0pIjYXb9KN8soNIONm/1zbJiSBiAyF4Hd6x4XuIC3kdFx7Ff3Pb9KsYA==", + "dev": true, + "dependencies": { + "@lerna/add": "5.5.0", + "@lerna/bootstrap": "5.5.0", + "@lerna/changed": "5.5.0", + "@lerna/clean": "5.5.0", + "@lerna/cli": "5.5.0", + "@lerna/create": "5.5.0", + "@lerna/diff": "5.5.0", + "@lerna/exec": "5.5.0", + "@lerna/import": "5.5.0", + "@lerna/info": "5.5.0", + "@lerna/init": "5.5.0", + "@lerna/link": "5.5.0", + "@lerna/list": "5.5.0", + "@lerna/publish": "5.5.0", + "@lerna/run": "5.5.0", + "@lerna/version": "5.5.0", "import-local": "^3.0.2", - "npmlog": "^6.0.2" + "npmlog": "^6.0.2", + "nx": ">=14.6.1 < 16", + "typescript": "^3 || ^4" }, "bin": { "lerna": "cli.js" @@ -10167,54 +10237,63 @@ } }, "node_modules/libnpmaccess": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz", - "integrity": "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz", + "integrity": "sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==", "dev": true, "dependencies": { "aproba": "^2.0.0", "minipass": "^3.1.1", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0" + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/libnpmaccess/node_modules/npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "node_modules/libnpmaccess/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "dependencies": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/libnpmpublish": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz", - "integrity": "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==", + "node_modules/libnpmaccess/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmaccess/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/libnpmpublish/node_modules/lru-cache": { + "node_modules/libnpmaccess/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", @@ -10226,21 +10305,62 @@ "node": ">=10" } }, - "node_modules/libnpmpublish/node_modules/npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "node_modules/libnpmpublish": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.5.tgz", + "integrity": "sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg==", "dev": true, "dependencies": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "normalize-package-data": "^4.0.0", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0", + "semver": "^7.3.7", + "ssri": "^9.0.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/libnpmpublish/node_modules/semver": { @@ -10258,6 +10378,18 @@ "node": ">=10" } }, + "node_modules/libnpmpublish/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -10334,52 +10466,19 @@ "node": ">=6.11.5" } }, - "node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -10425,9 +10524,9 @@ } }, "node_modules/lru-cache": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", - "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", "dev": true, "engines": { "node": ">=12" @@ -10464,124 +10563,30 @@ } }, "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", + "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", + "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/map-obj": { @@ -10622,9 +10627,9 @@ } }, "node_modules/marked": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.17.tgz", - "integrity": "sha512-Wfk0ATOK5iPxM4ptrORkFemqroz0ZDxp5MWfYA7H/F+wO17NRWV5Ypxi6p3g2Xmw2bKeiYOl6oVnLHKxBA0VhA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", + "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -10667,49 +10672,6 @@ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/memory-fs/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/memory-fs/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/memory-fs/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -10775,6 +10737,21 @@ "node": ">=8" } }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/meow/node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -11018,20 +10995,20 @@ } }, "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "dependencies": { - "minipass": "^3.1.0", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "optionalDependencies": { - "encoding": "^0.1.12" + "encoding": "^0.1.13" } }, "node_modules/minipass-flush": { @@ -11213,6 +11190,18 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "node_modules/mocha/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/mocha/node_modules/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -11252,6 +11241,19 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/mocha/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/mocha/node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -11297,6 +11299,42 @@ "node": ">= 0.4" } }, + "node_modules/mocha/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/mocha/node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -11420,43 +11458,34 @@ "dev": true }, "node_modules/msgpackr": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.6.1.tgz", - "integrity": "sha512-Je+xBEfdjtvA4bKaOv8iRhjC8qX2oJwpYH4f7JrG4uMVJVmnmkAT4pjKdbztKprGj3iwjcxPzb5umVZ02Qq3tA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.6.2.tgz", + "integrity": "sha512-bqSQ0DYJbXbrJcrZFmMygUZmqQiDfI2ewFVWcrZY12w5XHWtPuW4WppDT/e63Uu311ajwkRRXSoF0uILroBeTA==", "dev": true, "optionalDependencies": { "msgpackr-extract": "^2.0.2" } }, "node_modules/msgpackr-extract": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-2.0.2.tgz", - "integrity": "sha512-coskCeJG2KDny23zWeu+6tNy7BLnAiOGgiwzlgdm4oeSsTpqEJJPguHIuKZcCdB7tzhZbXNYSg6jZAXkZErkJA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-2.1.2.tgz", + "integrity": "sha512-cmrmERQFb19NX2JABOGtrKdHMyI6RUyceaPBQ2iRz9GnDkjBWFjNJC0jyyoOfZl2U/LZE3tQCCQc4dlRyA8mcA==", "dev": true, "hasInstallScript": true, "optional": true, "dependencies": { - "node-gyp-build-optional-packages": "5.0.2" + "node-gyp-build-optional-packages": "5.0.3" }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "2.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "2.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "2.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "2.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "2.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "2.0.2" - } - }, - "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.2.tgz", - "integrity": "sha512-PiN4NWmlQPqvbEFcH/omQsswWQbe5Z9YK/zdB23irp5j2XibaA2IrGvpSWmVVG4qMZdmPdwPctSy4a86rOMn6g==", - "dev": true, - "optional": true, "bin": { - "node-gyp-build-optional": "optional.js", - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-test": "build-test.js" + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "2.1.2", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "2.1.2", + "@msgpackr-extract/msgpackr-extract-linux-arm": "2.1.2", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "2.1.2", + "@msgpackr-extract/msgpackr-extract-linux-x64": "2.1.2", + "@msgpackr-extract/msgpackr-extract-win32-x64": "2.1.2" } }, "node_modules/multimatch": { @@ -11527,9 +11556,9 @@ "dev": true }, "node_modules/node-abi": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz", - "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.24.0.tgz", + "integrity": "sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -11610,38 +11639,16 @@ } } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", + "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", "dev": true, "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", + "make-fetch-happen": "^10.0.3", "nopt": "^5.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -11653,7 +11660,7 @@ "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 10.12.0" + "node": "^12.22 || ^14.13 || >=16" } }, "node_modules/node-gyp-build": { @@ -11721,9 +11728,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "node_modules/nopt": { @@ -11859,19 +11866,37 @@ "dev": true }, "node_modules/npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", + "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", "dev": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", + "hosted-git-info": "^3.0.6", + "semver": "^7.0.0", "validate-npm-package-name": "^3.0.0" }, "engines": { "node": ">=10" } }, + "node_modules/npm-package-arg/node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-package-arg/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -11899,58 +11924,128 @@ "node": ">=10" } }, + "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, "node_modules/npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" }, "bin": { "npm-packlist": "bin/index.js" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-pick-manifest": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", - "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "node_modules/npm-packlist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-packlist/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-packlist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-packlist/node_modules/npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^2.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-pick-manifest/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", + "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", "dev": true, "dependencies": { - "semver": "^7.0.0" + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^2.0.0", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-pick-manifest/node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "dependencies": { "lru-cache": "^7.5.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { @@ -11995,140 +12090,49 @@ "node": ">=10" } }, - "node_modules/npm-pick-manifest/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/npm-registry-fetch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", - "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, "dependencies": { - "@npmcli/ci-detect": "^1.0.0", - "lru-cache": "^6.0.0", - "make-fetch-happen": "^8.0.9", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-registry-fetch/node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/npm-registry-fetch/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-registry-fetch/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" }, "engines": { - "node": ">= 10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", - "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.0.5", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^5.0.0", - "ssri": "^8.0.0" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/npm-registry-fetch/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-registry-fetch/node_modules/semver": { @@ -12146,18 +12150,16 @@ "node": ">=10" } }, - "node_modules/npm-registry-fetch/node_modules/socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "node_modules/npm-registry-fetch/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, "node_modules/npm-run-all": { @@ -12297,88 +12299,465 @@ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "dev": true }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/nx": { + "version": "14.6.5", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.6.5.tgz", + "integrity": "sha512-egV8Zrec+0m+27wTENe9W/JKRMkBDx1N0xaFzKjL0WKj5WIe4asao5uwTJEwqi9iQyiijExxUFVU5MNGuF2c+A==", "dev": true, - "engines": { - "node": ">= 0.4" + "hasInstallScript": true, + "dependencies": { + "@nrwl/cli": "14.6.5", + "@nrwl/tao": "14.6.5", + "@parcel/watcher": "2.0.4", + "chalk": "4.1.0", + "chokidar": "^3.5.1", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^7.0.2", + "dotenv": "~10.0.0", + "enquirer": "~2.3.6", + "fast-glob": "3.2.7", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^10.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "js-yaml": "4.1.0", + "jsonc-parser": "3.0.0", + "minimatch": "3.0.5", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "semver": "7.3.4", + "string-width": "^4.2.3", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^3.9.0", + "tslib": "^2.3.0", + "v8-compile-cache": "2.3.0", + "yargs": "^17.4.0", + "yargs-parser": "21.0.1" + }, + "bin": { + "nx": "bin/nx.js" + }, + "peerDependencies": { + "@swc-node/register": "^1.4.2", + "@swc/core": "^1.2.173" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } } }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "node_modules/nx/node_modules/@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", "dev": true, + "hasInstallScript": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "node_modules/nx/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "node_modules/nx/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "node_modules/nx/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, - "dependencies": { + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/nx/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/nx/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/nx/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/nx/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nx/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/nx/node_modules/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nx/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/nx/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/nx/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nx/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nx/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/nx/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nx/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nx/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/nx/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/nx/node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nx/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", + "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "dev": true, + "dependencies": { "array.prototype.reduce": "^1.0.4", "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -12445,6 +12824,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -12462,467 +12858,326 @@ "node": ">= 0.8.0" } }, - "node_modules/ordered-binary": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.3.0.tgz", - "integrity": "sha512-knIeYepTI6BDAzGxqFEDGtI/iGqs57H32CInAIxEvAHG46vk1Di0CEpyc1A7iY39B1mfik3g3KLYwOTNnnMHLA==", - "dev": true - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" + "color-convert": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map-series": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", - "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-pipe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", - "dev": true, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true, - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "p-finally": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/p-waterfall": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", - "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "node_modules/ora/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "dependencies": { - "p-reduce": "^2.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", - "dev": true, - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/pacote/node_modules/@npmcli/run-script": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.5.tgz", - "integrity": "sha512-FyrZkZ+O0bCnQqm+mRb6sKbEJgyJudInwFN84gCcMUcxrWkR15Ags1uOHwnxHYdpj3T5eqrCZNW/Ys20MGTQ6Q==", + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/pacote/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/pacote/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=8" } }, - "node_modules/pacote/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } + "node_modules/ordered-binary": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.3.0.tgz", + "integrity": "sha512-knIeYepTI6BDAzGxqFEDGtI/iGqs57H32CInAIxEvAHG46vk1Di0CEpyc1A7iY39B1mfik3g3KLYwOTNnnMHLA==", + "dev": true }, - "node_modules/pacote/node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=0.10.0" } }, - "node_modules/pacote/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, "engines": { - "node": ">= 6" + "node": ">=4" } }, - "node_modules/pacote/node_modules/ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "minimatch": "^5.0.1" + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "aggregate-error": "^3.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/minipass-fetch": { + "node_modules/p-map-series": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", "dev": true, - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" + } + }, + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true, + "engines": { + "node": ">=8" }, - "optionalDependencies": { - "encoding": "^0.1.13" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/node-gyp": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", - "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "dev": true, "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/pacote/node_modules/npm-package-arg": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", - "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "p-finally": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/pacote/node_modules/npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6" } }, - "node_modules/pacote/node_modules/npm-packlist/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "node_modules/p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "p-reduce": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/npm-registry-fetch": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", - "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", + "node_modules/pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, "dependencies": { - "make-fetch-happen": "^10.0.6", + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pacote/node_modules/read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "node_modules/pacote/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" + "lru-cache": "^7.5.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pacote/node_modules/read-package-json/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "node_modules/pacote/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/pacote/node_modules/rimraf": { @@ -12967,44 +13222,6 @@ "node": ">=10" } }, - "node_modules/pacote/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/pacote/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/pacote/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/parcel": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.7.0.tgz", @@ -13200,12 +13417,12 @@ } }, "node_modules/parse5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", - "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz", + "integrity": "sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==", "dev": true, "dependencies": { - "entities": "^4.3.0" + "entities": "^4.4.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -13240,9 +13457,9 @@ } }, "node_modules/parse5/node_modules/entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true, "engines": { "node": ">=0.12" @@ -13372,10 +13589,25 @@ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/p-locate": { @@ -13591,12 +13823,6 @@ "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", "dev": true }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -13737,24 +13963,27 @@ } }, "node_modules/read-cmd-shim": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", - "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz", + "integrity": "sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } }, "node_modules/read-package-json": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz", - "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", "dev": true, "dependencies": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/read-package-json-fast": { @@ -13770,6 +13999,109 @@ "node": ">=10" } }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -14225,9 +14557,9 @@ } }, "node_modules/rollup": { - "version": "2.75.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz", - "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==", + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.0.tgz", + "integrity": "sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -14286,23 +14618,14 @@ } }, "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", "dev": true, "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" + "tslib": "^2.1.0" } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -14330,9 +14653,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", - "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "version": "1.54.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.8.tgz", + "integrity": "sha512-ib4JhLRRgbg6QVy6bsv5uJxnJMTS2soVcCp9Y88Extyy13A8vV0G1fAwujOzmNkFQbR3LvedudAMbtuNRPbQww==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -14535,12 +14858,12 @@ } }, "node_modules/socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", "dev": true, "dependencies": { - "ip": "^1.1.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" }, "engines": { @@ -14549,9 +14872,9 @@ } }, "node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "dependencies": { "agent-base": "^6.0.2", @@ -14647,9 +14970,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "node_modules/split": { @@ -14680,15 +15003,15 @@ "dev": true }, "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, "dependencies": { "minipass": "^3.1.1" }, "engines": { - "node": ">= 8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/stable": { @@ -14902,9 +15225,9 @@ } }, "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, "engines": { "node": ">=6" @@ -14983,9 +15306,9 @@ } }, "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -15001,16 +15324,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "engines": { "node": ">= 10.13.0" @@ -15035,9 +15358,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -15123,16 +15446,10 @@ } }, "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true }, "node_modules/treeverse": { "version": "2.0.0", @@ -15162,23 +15479,153 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ts-loader": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-7.0.5.tgz", - "integrity": "sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig==", + "node_modules/ts-loader": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz", + "integrity": "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "dependencies": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" + "minimist": "^1.2.0" }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "typescript": "*" + "node": ">=4" } }, "node_modules/tslib": { @@ -15314,9 +15761,9 @@ } }, "node_modules/typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -15333,9 +15780,9 @@ "dev": true }, "node_modules/uglify-js": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.2.tgz", - "integrity": "sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", + "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", "dev": true, "optional": true, "bin": { @@ -15423,21 +15870,27 @@ } }, "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, "dependencies": { - "unique-slug": "^2.0.0" + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/unist-util-is": { @@ -15502,9 +15955,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", + "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", "dev": true, "funding": [ { @@ -15583,12 +16036,15 @@ } }, "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, "dependencies": { - "builtins": "^1.0.3" + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/vfile": { @@ -15640,9 +16096,9 @@ } }, "node_modules/vsce": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.9.2.tgz", - "integrity": "sha512-xyLqL4U82BilUX1t6Ym2opQEa2tLGWYjbgB7+ETeNVXlIJz5sWBJjQJSYJVFOKJSpiOtQclolu88cj7oY6vvPQ==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.11.0.tgz", + "integrity": "sha512-pr9Y0va/HCer0tTifeqaUrK24JJSpRd6oLeF/PY6FtrY41e+lwxiAq6jfMXx4ShAZglYg2rFKoKROwa7E7SEqQ==", "dev": true, "dependencies": { "azure-devops-node-api": "^11.0.1", @@ -15765,18 +16221,15 @@ "dev": true }, "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true }, "node_modules/webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -15784,11 +16237,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -15801,7 +16254,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "bin": { @@ -15896,9 +16349,9 @@ "dev": true }, "node_modules/webpack/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -15916,40 +16369,14 @@ "acorn": "^8" } }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/which": { @@ -16119,15 +16546,16 @@ "dev": true }, "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/write-json-file": { @@ -16159,6 +16587,18 @@ "node": ">=8" } }, + "node_modules/write-json-file/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/write-pkg": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", @@ -16396,6 +16836,30 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "node_modules/yargs-unparser/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "dev": true, + "dependencies": { + "is-buffer": "~2.0.3" + }, + "bin": { + "flat": "cli.js" + } + }, "node_modules/yargs-unparser/node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -16405,6 +16869,55 @@ "node": ">=4" } }, + "node_modules/yargs-unparser/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/yargs-unparser/node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -16497,6 +17010,18 @@ "dependencies": { "buffer-crc32": "~0.2.3" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { @@ -16521,28 +17046,28 @@ } }, "@babel/compat-data": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", - "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", + "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "dev": true }, "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.0.tgz", + "integrity": "sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==", "dev": true, "peer": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/generator": "^7.19.0", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -16551,13 +17076,13 @@ } }, "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "dev": true, "peer": true, "requires": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.19.0", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -16577,33 +17102,33 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", + "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" } }, "@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, "peer": true }, "@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "peer": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { @@ -16627,20 +17152,20 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "dev": true, "peer": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helper-simple-access": { @@ -16663,6 +17188,13 @@ "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true, + "peer": true + }, "@babel/helper-validator-identifier": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", @@ -16676,15 +17208,15 @@ "dev": true }, "@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", + "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", "dev": true, "peer": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/highlight": { @@ -16699,50 +17231,51 @@ } }, "@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "dev": true, "peer": true }, "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "peer": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", + "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "dev": true, "peer": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/parser": "^7.19.0", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "dev": true, "peer": true, "requires": { + "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } @@ -16754,14 +17287,14 @@ "dev": true }, "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", + "espree": "^9.4.0", "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -16771,9 +17304,9 @@ }, "dependencies": { "globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -16794,9 +17327,9 @@ "dev": true }, "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -16804,6 +17337,18 @@ "minimatch": "^3.0.4" } }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -16875,9 +17420,9 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -16885,20 +17430,20 @@ } }, "@lerna/add": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.1.8.tgz", - "integrity": "sha512-ABplk8a5MmiT8lG1b9KHijRUwj/nOePMuezBHjJEpNeQ8Bw5w3IV/6hpdmApx/w1StBwWWf0UG42klrxXlfl/g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.5.0.tgz", + "integrity": "sha512-RdJ8yyE8BizzrYRjZuqeXtgkHBE/KzcS7tmBG+UKCQ5QFLnkdORzaVECNy2sfZl0vTtrxj4cv+kuwxIeg/4XVQ==", "dev": true, "requires": { - "@lerna/bootstrap": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/npm-conf": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/bootstrap": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/npm-conf": "5.5.0", + "@lerna/validation-error": "5.5.0", "dedent": "^0.7.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "p-map": "^4.0.0", - "pacote": "^13.4.1", + "pacote": "^13.6.1", "semver": "^7.3.4" }, "dependencies": { @@ -16923,28 +17468,28 @@ } }, "@lerna/bootstrap": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.1.8.tgz", - "integrity": "sha512-/QZJc6aRxi6csSR59jdqRXPFh33fbn60F1k/SWtCCELGkZub23fAPLKaO7SlMcyghN3oKlfTfVymu/NWEcptJQ==", - "dev": true, - "requires": { - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/has-npm-version": "5.1.8", - "@lerna/npm-install": "5.1.8", - "@lerna/package-graph": "5.1.8", - "@lerna/pulse-till-done": "5.1.8", - "@lerna/rimraf-dir": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/symlink-binary": "5.1.8", - "@lerna/symlink-dependencies": "5.1.8", - "@lerna/validation-error": "5.1.8", - "@npmcli/arborist": "5.2.0", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.5.0.tgz", + "integrity": "sha512-GeXLSDi6gxj2O3t5T7qgFabBKoC5EQwiFyQ4ufqx1Wm/mWxqRI+enTBnbaBbmhQaVQ9wfPvMPDukJ5Q9PCTUcQ==", + "dev": true, + "requires": { + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/has-npm-version": "5.5.0", + "@lerna/npm-install": "5.5.0", + "@lerna/package-graph": "5.5.0", + "@lerna/pulse-till-done": "5.5.0", + "@lerna/rimraf-dir": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/symlink-binary": "5.5.0", + "@lerna/symlink-dependencies": "5.5.0", + "@lerna/validation-error": "5.5.0", + "@npmcli/arborist": "5.3.0", "dedent": "^0.7.0", "get-port": "^5.1.1", "multimatch": "^5.0.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-map-series": "^2.1.0", @@ -16973,32 +17518,32 @@ } }, "@lerna/changed": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.1.8.tgz", - "integrity": "sha512-JA9jX9VTHrwSMRJTgLEzdyyx4zi35X0yP6fUUFuli9a0zrB4HV4IowSn1XM03H8iebbDLB0eWBbosqhYwSP8Sw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.5.0.tgz", + "integrity": "sha512-ZEnVHrPEpf2Iii/Z59g1lfKEwPA1V2an5L27MzNQjbWe6JQZqTU+8V6m+Vmbr4VdEH5jfRL5NVETGCLl7qN/pQ==", "dev": true, "requires": { - "@lerna/collect-updates": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/listable": "5.1.8", - "@lerna/output": "5.1.8" + "@lerna/collect-updates": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/listable": "5.5.0", + "@lerna/output": "5.5.0" } }, "@lerna/check-working-tree": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.1.8.tgz", - "integrity": "sha512-3QyiV75cYt9dtg9JhUt+Aiyk44mFjlyqIIJ/XZ2Cp/Xcwws/QrNKOTs5iYFX5XWzlpTgotOHcu1MH/mY55Czlw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.5.0.tgz", + "integrity": "sha512-U35yV8R+tv6zQgoDr0rnBt4wm4gyhDcE4tUEeB8m7JHVu7g45Fjv2jFLH1z5RM1PVaEbzKVebqfN5ccB0EBuyg==", "dev": true, "requires": { - "@lerna/collect-uncommitted": "5.1.8", - "@lerna/describe-ref": "5.1.8", - "@lerna/validation-error": "5.1.8" + "@lerna/collect-uncommitted": "5.5.0", + "@lerna/describe-ref": "5.5.0", + "@lerna/validation-error": "5.5.0" } }, "@lerna/child-process": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.1.8.tgz", - "integrity": "sha512-P0o4Y/sdiUJ53spZpaVv53NdAcl15UAi5//W3uT2T250xQPlVROwKy11S3Wzqglh94FYdi6XUy293x1uwBlFPw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.5.0.tgz", + "integrity": "sha512-er7bsj2W/H8JWAIB+CkgCLk9IlMkyVzywbOZcMC+xic2fp7rmM/BdtAE4nTjkKwfaRYF/bwjHyZowZUR3s8cEg==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -17058,40 +17603,40 @@ } }, "@lerna/clean": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.1.8.tgz", - "integrity": "sha512-xMExZgjan5/8ZTjJkZoLoTKY1MQOMk7W1YXslbg9BpLevBycPk041MlLauzCyO8XdOpqpVnFCg/9W66fltqmQg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.5.0.tgz", + "integrity": "sha512-TRW4Gkv6QpWSy0tm72NrxvgmTAC+W0LqhLPlFM5k5feFS75/HGOycpf97M4JSUueyBCuVjsPfzqp/e6MB3Ntng==", "dev": true, "requires": { - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/prompt": "5.1.8", - "@lerna/pulse-till-done": "5.1.8", - "@lerna/rimraf-dir": "5.1.8", + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/prompt": "5.5.0", + "@lerna/pulse-till-done": "5.5.0", + "@lerna/rimraf-dir": "5.5.0", "p-map": "^4.0.0", "p-map-series": "^2.1.0", "p-waterfall": "^2.1.1" } }, "@lerna/cli": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.1.8.tgz", - "integrity": "sha512-0Ghhd9M9QvY6qZtnjTq5RHOIac2ttsW2VNFLFso8ov3YV+rJF4chLhyVaVBvLSA+5ZhwFH+xQ3/yeUx1tDO8GA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.5.0.tgz", + "integrity": "sha512-7TtnO2xfnfrpWGIui6ANrH4/AVHmSfjaExSoZKNhh2dKSSEOETEUfFIIzfEAirAVR7EOXAJwDdFbbpB4lQtyUg==", "dev": true, "requires": { - "@lerna/global-options": "5.1.8", + "@lerna/global-options": "5.5.0", "dedent": "^0.7.0", "npmlog": "^6.0.2", "yargs": "^16.2.0" } }, "@lerna/collect-uncommitted": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.1.8.tgz", - "integrity": "sha512-pRsIYu82A3DxLahQI/3azoi/kjj6QSSHHAOx4y1YVefeDCaVtAm8aesNbpnyNVfJrie/1Gt5GMEpjfm/KScjlw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.5.0.tgz", + "integrity": "sha512-oVGXS0fC8q2d1lG695eCd8dkr0fhmUx4bWA1IshVd/u0Puk7f8+m71POcLV3h1gR/2Fqs7vb7G/sPyuzGtwn8w==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "chalk": "^4.1.0", "npmlog": "^6.0.2" }, @@ -17148,29 +17693,29 @@ } }, "@lerna/collect-updates": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.1.8.tgz", - "integrity": "sha512-ZPQmYKzwDJ4T+t2fRUI/JjaCzC8Lv02kWIeSXrcIG+cf2xrbM0vK4iQMAKhagTsiWt9hrFwvtMgLp4a6+Ht8Qg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.5.0.tgz", + "integrity": "sha512-6kBMi6K6PHIBvZKlfp/0PvRgmzvvfx+eZpmLjF+0yjcfwBn+QDkq7H+QohBiCzt2vxHVHsM6zutNhl2jNTmChg==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", - "@lerna/describe-ref": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/describe-ref": "5.5.0", "minimatch": "^3.0.4", "npmlog": "^6.0.2", "slash": "^3.0.0" } }, "@lerna/command": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.1.8.tgz", - "integrity": "sha512-j/Q++APvkyN2t8GqOpK+4OxH1bB7OZGVWIKh0JQlwbtqH1Y06wlSyNdwpPmv8h1yO9fS1pY/xHwFbs1IicxwzA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.5.0.tgz", + "integrity": "sha512-ut055kFWc1OJFdI9Cj1kDxtJ4ejvAsfRgUoVxWT1Fw4Me/OzQRHYmUupW0FK8Kc+7gcz4mGKzUVWmRmDBvn+Fw==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", - "@lerna/package-graph": "5.1.8", - "@lerna/project": "5.1.8", - "@lerna/validation-error": "5.1.8", - "@lerna/write-log-file": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/package-graph": "5.5.0", + "@lerna/project": "5.5.0", + "@lerna/validation-error": "5.5.0", + "@lerna/write-log-file": "5.5.0", "clone-deep": "^4.0.1", "dedent": "^0.7.0", "execa": "^5.0.0", @@ -17179,18 +17724,18 @@ } }, "@lerna/conventional-commits": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.1.8.tgz", - "integrity": "sha512-UduSVDp/+2WlEV6ZO5s7yTzkfhYyPdEsqR6aaUtIJZe9wejcCK4Lc3BJ2BAYIOdtDArNY2CJPsz1LYvFDtPRkw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.5.0.tgz", + "integrity": "sha512-qPTRNCm3H4MvZAdQLzyYq7ifJyofMSeZmel232b5mglW3OSehxPQUxzr/u/0p8Nqs89uZxZRHyznLnhRNdXcJQ==", "dev": true, "requires": { - "@lerna/validation-error": "5.1.8", + "@lerna/validation-error": "5.5.0", "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-core": "^4.2.2", + "conventional-changelog-core": "^4.2.4", "conventional-recommended-bump": "^6.1.0", "fs-extra": "^9.1.0", "get-stream": "^6.0.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "pify": "^5.0.0", "semver": "^7.3.4" @@ -17245,28 +17790,27 @@ } }, "@lerna/create": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.1.8.tgz", - "integrity": "sha512-n9qLLeg1e0bQeuk8pA8ELEP05Ktl50e1EirdXGRqqvaXdCn41nYHo4PilUgb77/o/t3Z5N4/ic+0w8OvGVakNg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.5.0.tgz", + "integrity": "sha512-B+ERbzgFMYspsaU9We65Wqf9Y7sGsEYVFPi3EKpCXxkvVr65YRFL6Mz/WAVggwYkR49umduXXVmjnCWcuT0Ydw==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/npm-conf": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/npm-conf": "5.5.0", + "@lerna/validation-error": "5.5.0", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "globby": "^11.0.2", - "init-package-json": "^2.0.2", - "npm-package-arg": "^8.1.0", + "init-package-json": "^3.0.2", + "npm-package-arg": "8.1.1", "p-reduce": "^2.1.0", - "pacote": "^13.4.1", + "pacote": "^13.6.1", "pify": "^5.0.0", "semver": "^7.3.4", "slash": "^3.0.0", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0", - "whatwg-url": "^8.4.0", + "validate-npm-package-name": "^4.0.0", "yargs-parser": "20.2.4" }, "dependencies": { @@ -17319,12 +17863,12 @@ } }, "@lerna/create-symlink": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.1.8.tgz", - "integrity": "sha512-5acQITDsJ7dqywPRrF1mpTUPm/EXFfiv/xF6zX+ySUjp4h0Zhhnsm8g2jFdRPDSjIxFD0rV/5iU4X6qmflXlAg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.5.0.tgz", + "integrity": "sha512-vWGvRbTh3ji3J/8mVyLPa9Yst4MZzp9W2+8hyYHw8eAzCtHPuH3Z0AReIHpYRfoViUvxIl/rEEuD2D1sDh61BQ==", "dev": true, "requires": { - "cmd-shim": "^4.1.0", + "cmd-shim": "^5.0.0", "fs-extra": "^9.1.0", "npmlog": "^6.0.2" }, @@ -17360,82 +17904,82 @@ } }, "@lerna/describe-ref": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.1.8.tgz", - "integrity": "sha512-/u5b2ho09icPcvPb1mlh/tPC07nSFc1cvvFjM9Yg5kfVs23vzVWeA8y0Bk5djlaaSzyHECyqviriX0aoaY47Wg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.5.0.tgz", + "integrity": "sha512-gNt9deRWcDoIKCwKRHu/TEt2HcHhQxzVlP8GQHYp4NuWTG9c+gTQfyuXvbZd0K9jCijPUBNy/oMb6usXceJWeg==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "npmlog": "^6.0.2" } }, "@lerna/diff": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.1.8.tgz", - "integrity": "sha512-BLoi6l/v8p43IkAHTkpjZ4Kq27kYK7iti6y6gYoZuljSwNj38TjgqRb2ohHezQ5c0KFAj8xHEOuZM3Ou6tGyTQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.5.0.tgz", + "integrity": "sha512-2PIka/4kKDOsh5Ht+X2OuLNTWzRk+LcnN5bCin87w7vGw3esdvlT1fj1tKjoZ1/aC/O8tqtKXyeP9WE6YHWVpw==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/validation-error": "5.5.0", "npmlog": "^6.0.2" } }, "@lerna/exec": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.1.8.tgz", - "integrity": "sha512-U+owlBKoAUfULqRz0oBtHx/I6tYQy9I7xfPP0GoaXa8lpF7esnpCxsJG8GpdzFqIS30o6a2PtyHvp4jkrQF8Zw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.5.0.tgz", + "integrity": "sha512-4asvrCYFGgnEbXtSiKJLDd6DShUl7FIRRCWx7JXJfa0B6sg00cB9Cg3JTp+F+cQWCOspRkzqRetqu57o6wRpXg==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/profiler": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/profiler": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/validation-error": "5.5.0", "p-map": "^4.0.0" } }, "@lerna/filter-options": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.1.8.tgz", - "integrity": "sha512-ene6xj1BRSFgIgcVg9xABp1cCiRnqm3Uetk9InxOtECbofpSDa7cQy5lsPv6GGAgXFbT91SURQiipH9FAOP+yQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.5.0.tgz", + "integrity": "sha512-Hwn4sOixZdWVe6SFZ7aPFjhMYoSHz0zbwy3t40KXuhjLqT8T5RLmGWW1u2Al6dQ5fuQyhWXGS4DWfobs7Th62A==", "dev": true, "requires": { - "@lerna/collect-updates": "5.1.8", - "@lerna/filter-packages": "5.1.8", + "@lerna/collect-updates": "5.5.0", + "@lerna/filter-packages": "5.5.0", "dedent": "^0.7.0", "npmlog": "^6.0.2" } }, "@lerna/filter-packages": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.1.8.tgz", - "integrity": "sha512-2pdtZ+I2Sb+XKfUa/q8flVUyaY0hhwqFYMXll7Nut7Phb1w1TtkEXc2/N0Ac1yia6qSJB/5WrsbAcLF/ITp1vA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.5.0.tgz", + "integrity": "sha512-Ad23aRPKgr/zt6jMWi8xKL+2z47GBQyxC4HhsDEMp62OGeGhGyK1sGW+S8OTEh17sIVpGG2GX9eCfnG8pvfxUQ==", "dev": true, "requires": { - "@lerna/validation-error": "5.1.8", + "@lerna/validation-error": "5.5.0", "multimatch": "^5.0.0", "npmlog": "^6.0.2" } }, "@lerna/get-npm-exec-opts": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.1.8.tgz", - "integrity": "sha512-oujoIkEDDVK2+5ooPMEPI+xGs/iwPmGJ63AZu1h7P42YU9tHKQmF5yPybF3Jn99W8+HggM6APUGiX+5oHRvKXA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.5.0.tgz", + "integrity": "sha512-WRt560FB6rsj4yVtR1wIJWJufITajECaw1omNi2KkL7/o7ky4NvHACVOtibETUNMXrnuPJ/QBww4roLFVIAyog==", "dev": true, "requires": { "npmlog": "^6.0.2" } }, "@lerna/get-packed": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.1.8.tgz", - "integrity": "sha512-3vabIFlfUFQPbFnlOaDCNY4p7mufrhIFPoXxWu15JnjJsSDf9UB2a98xX43xNlxjgZLvnLai3bhCNfrKonI4Kw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.5.0.tgz", + "integrity": "sha512-X+91ma9SQPrsVctsrFRBABn4+T87lnTEd/BngB7OYlYFsJCc+a6vd+5pnIWxKK5OiUr6+tRpMbJp8BUXJFdb4Q==", "dev": true, "requires": { "fs-extra": "^9.1.0", - "ssri": "^8.0.1", + "ssri": "^9.0.1", "tar": "^6.1.0" }, "dependencies": { @@ -17470,42 +18014,41 @@ } }, "@lerna/github-client": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.1.8.tgz", - "integrity": "sha512-y1oweMZ9xc/htIHy42hy2FuMUR/LS3CQlslXG9PAHzl5rE1VDDjvSv61kS50ZberGfB9xmkCxqH+2LgROG9B1A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.5.0.tgz", + "integrity": "sha512-CaBleVR0F+8Yv4FQu6r7Ocqnh3DEq6dQeu0r4RX+mc9jBn9J/N2SdLKRdC7vcvmkcLCxacg8ewuesYqvakQ8HQ==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "@octokit/plugin-enterprise-rest": "^6.0.1", - "@octokit/rest": "^18.1.0", + "@octokit/rest": "^19.0.3", "git-url-parse": "^12.0.0", "npmlog": "^6.0.2" } }, "@lerna/gitlab-client": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.1.8.tgz", - "integrity": "sha512-/EMKdkGnBU4ldyAQ4pXp2TKi1znvY3MiCULt8Hy42p4HhfFl/AxZYDovQYfop1NHVk29BQrGHfvlpyBNqZ2a8g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.5.0.tgz", + "integrity": "sha512-ktKfBgQnt0MtyiTM3wuec47Wk7nHc+k2YvoC1roDGaXpgWS7lOQnA8RyorX4Hal3ZsrL95qi9vZOolWvUnxS3w==", "dev": true, "requires": { "node-fetch": "^2.6.1", - "npmlog": "^6.0.2", - "whatwg-url": "^8.4.0" + "npmlog": "^6.0.2" } }, "@lerna/global-options": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.1.8.tgz", - "integrity": "sha512-VCfTilGh0O4T6Lk4DKYA5cUl1kPjwFfRUS/GSpdJx0Lf/dyDbFihrmTHefgUe9N2/nTQySDIdPk9HBr45tozWQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.5.0.tgz", + "integrity": "sha512-ydEsnXi2LRpxkzpSf8GFeCdh1roTKANZdqzjkhuUlBHrKzKxywpNPpGbXmh6JziHMYdgKGZUjnY35TxBlVRN6Q==", "dev": true }, "@lerna/has-npm-version": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.1.8.tgz", - "integrity": "sha512-yN5j9gje2ND8zQf4tN52QDQ/yFb24o9Kasm4PZm99FzBURRIwFWCnvo3edOMaiJg0DpA660L+Kq9G0L+ZRKRZQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.5.0.tgz", + "integrity": "sha512-ALvz0fF1I7Dx+c+0rvkFdqEtp/hs4F/Av2blhOaFWTs78D7FTQa7IpURmvdVDi56H30fqa9b4nEQqnaCRJZKpQ==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "semver": "^7.3.4" }, "dependencies": { @@ -17530,16 +18073,16 @@ } }, "@lerna/import": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.1.8.tgz", - "integrity": "sha512-m1+TEhlgS9i14T7o0/8o6FMZJ1O2PkQdpCjqUa5xdLITqvPozoMNujNgiX3ZVLg/XcFOjMtbCsYtspqtKyEsMQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.5.0.tgz", + "integrity": "sha512-mn87JOcb/j4KBV37Kv589avN5uArcJcASBonm1iWcTwxTvcNFj2BjxnUoVVY6EFamDfBLwWBcAvCO+cvmJkj3Q==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/prompt": "5.1.8", - "@lerna/pulse-till-done": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/prompt": "5.5.0", + "@lerna/pulse-till-done": "5.5.0", + "@lerna/validation-error": "5.5.0", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "p-map-series": "^2.1.0" @@ -17576,24 +18119,25 @@ } }, "@lerna/info": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.1.8.tgz", - "integrity": "sha512-VNCBNOrd5Q1iv1MOF++PzMrdAnTn6KTDbb5hcXHdWBRZUuOs3QOwVYGzAlTFMvwVmmlcER4z8BYyUsbxk3sIdQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.5.0.tgz", + "integrity": "sha512-2pgogAahv8tqY2sFarOCSXcxJFEag9z1pPGnHwKsq8NtekR0exLwFp93iTbDKRff8ScSmH82lNh22GFKZKLm/A==", "dev": true, "requires": { - "@lerna/command": "5.1.8", - "@lerna/output": "5.1.8", + "@lerna/command": "5.5.0", + "@lerna/output": "5.5.0", "envinfo": "^7.7.4" } }, "@lerna/init": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.1.8.tgz", - "integrity": "sha512-vEMnq/70u/c031/vURA4pZSxlBRAwjg7vOP7mt9M4dmKz/vkVnQ/5Ig9K0TKqC31hQg957/4m20obYEiFgC3Pw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.5.0.tgz", + "integrity": "sha512-dPjuk12s2pSnSL6ib7KQ+RKFyFYvsWAnSMro3sanb07og3tJkwVne8srlmYQsd/NghU8sBdQFFKIV+pzg2sg9w==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", - "@lerna/command": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/project": "5.5.0", "fs-extra": "^9.1.0", "p-map": "^4.0.0", "write-json-file": "^4.3.0" @@ -17630,37 +18174,38 @@ } }, "@lerna/link": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.1.8.tgz", - "integrity": "sha512-qOtZiMzB9JYyNPUlvpqTxh0Z1EmNVde8pFUIYybv+s3btrKEBPgsvvrOrob/mha3QJxnwcPDPjHt/wCHFxLruA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.5.0.tgz", + "integrity": "sha512-wucP0DBKBG2Mkr9PNkPB9ez5pRxLEIY+6s0hB3iTxCTmef5GYPlQ+ftiaN2/IGVYb569AW97YilROuU2gDMrMw==", "dev": true, "requires": { - "@lerna/command": "5.1.8", - "@lerna/package-graph": "5.1.8", - "@lerna/symlink-dependencies": "5.1.8", + "@lerna/command": "5.5.0", + "@lerna/package-graph": "5.5.0", + "@lerna/symlink-dependencies": "5.5.0", + "@lerna/validation-error": "5.5.0", "p-map": "^4.0.0", "slash": "^3.0.0" } }, "@lerna/list": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.1.8.tgz", - "integrity": "sha512-fVN9o/wKtgcOyuYwvYTg2HI6ORX2kOoBkCJ+PI/uZ/ImwLMTJ2Bf8i/Vsysl3bLFHhQFglzPZ7V1SQP/ku0Sdw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.5.0.tgz", + "integrity": "sha512-vic7CeD/TL0bh6hzpgHK2Ogz7MW1NB6Sws1J7cl5CTn4sAGm/KZ/g4MNsLFVLJNAiPh+t2cmT0ndyNluShnjqA==", "dev": true, "requires": { - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/listable": "5.1.8", - "@lerna/output": "5.1.8" + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/listable": "5.5.0", + "@lerna/output": "5.5.0" } }, "@lerna/listable": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.1.8.tgz", - "integrity": "sha512-nQ/40cbVZLFBv8o9Dz6ivHFZhosfDTYOPm4oHNu0xdexaTXWz5bQUlM4HtOm7K0dJ1fvLEVqiQNAuFSEhARt9g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.5.0.tgz", + "integrity": "sha512-2kCpn8vlmRTVA3tGr1XRkHOW2ljXjb/hRNxSK3DUf0k6sl9sEdQFSH7cf5qPnCAPcuLHS7b8kuFhA6x8nXFP3g==", "dev": true, "requires": { - "@lerna/query-graph": "5.1.8", + "@lerna/query-graph": "5.5.0", "chalk": "^4.1.0", "columnify": "^1.6.0" }, @@ -17717,9 +18262,9 @@ } }, "@lerna/log-packed": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.1.8.tgz", - "integrity": "sha512-alaCIzCtKV5oKyu632emda0hUQMw/BcL2U3v4ObLu90sU8P7mu6TipKRvR9OZxOLDnZGnPE7CMHSU8gsQoIasw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.5.0.tgz", + "integrity": "sha512-kVDEy29VfBQeha92IBuPq9W/kP6ffboCWuU64lBIAljTDdpFrMFBeLRrWfLSLIVe2fq8FpGk8PInNlDHmvT5PA==", "dev": true, "requires": { "byte-size": "^7.0.0", @@ -17729,9 +18274,9 @@ } }, "@lerna/npm-conf": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.1.8.tgz", - "integrity": "sha512-d/pIcO4RwO3fXNlUbhQ6+qwULxGSiW/xcOtiETVf4ZfjaDqjkCaIxZaeZfm5gWDtII5klpQn3f2d71FCnZG5lw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.5.0.tgz", + "integrity": "sha512-ml1Pmn26a61y6nFijpNE9RAbsNOF2XL1Kqyd3x7+XFaDmqbSDqo2g5qlsb4gTdUj/Uy1niRGzy3XdC0FH5G+mg==", "dev": true, "requires": { "config-chain": "^1.1.12", @@ -17739,27 +18284,27 @@ } }, "@lerna/npm-dist-tag": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.1.8.tgz", - "integrity": "sha512-vZXO0/EClOzRRHHfqB4APhZkxiJpQbsQAAFwaXQCNJE+3S+I/MD0S3iiUWrNs4QnN/8Lj1KyzUfznVDXX7AIUQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.5.0.tgz", + "integrity": "sha512-Hz6n9tqbGUuqI1q9IS3tAGx95TkOqLfXRay9kr/hjswj+HKp0Dtw1cu8YRtizA7CuIWw831eXCbqfFyILfytaA==", "dev": true, "requires": { - "@lerna/otplease": "5.1.8", - "npm-package-arg": "^8.1.0", - "npm-registry-fetch": "^9.0.0", + "@lerna/otplease": "5.5.0", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", "npmlog": "^6.0.2" } }, "@lerna/npm-install": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.1.8.tgz", - "integrity": "sha512-AiYQyz4W1+NDeBw3qmdiiatfCtwtaGOi7zHtN1eAqheVTxEMuuYjNHt+8hu6nSpDFYtonz0NsKFvaqRJ5LbVmw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.5.0.tgz", + "integrity": "sha512-axMtqZYuAl5qGcRCBYKqINimMrbQRM1f09sz9rKtwnx15066qT0IaKUt9YYo5bsZm/i3BXpBqcUxZXlGzQNWBQ==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", - "@lerna/get-npm-exec-opts": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/get-npm-exec-opts": "5.5.0", "fs-extra": "^9.1.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "signal-exit": "^3.0.3", "write-pkg": "^4.0.0" @@ -17796,19 +18341,19 @@ } }, "@lerna/npm-publish": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.1.8.tgz", - "integrity": "sha512-Gup/1d8ovc21x3spKPhFK0tIYYn8HOjnpCAg5ytINIW1QM/QcLAigY58If8uiyt+aojz6lubWrSR8/OHf9CXBw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.5.0.tgz", + "integrity": "sha512-eDcmga5CcXGmSdVXBO75eCX3vypEwQO/lN7VqRpLSOsIHIRUGbfwo/stbz8sIF4+HAkaAFGj6BScjvjlyoh2pQ==", "dev": true, "requires": { - "@lerna/otplease": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", + "@lerna/otplease": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", "fs-extra": "^9.1.0", - "libnpmpublish": "^4.0.0", - "npm-package-arg": "^8.1.0", + "libnpmpublish": "^6.0.4", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "pify": "^5.0.0", - "read-package-json": "^3.0.0" + "read-package-json": "^5.0.1" }, "dependencies": { "fs-extra": { @@ -17842,69 +18387,69 @@ } }, "@lerna/npm-run-script": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.1.8.tgz", - "integrity": "sha512-HzvukNC+hDIR25EpYWOvIGJItd0onXqzS9Ivdtw98ZQG3Jexi2Mn18A9tDqHOKCEGO3pVYrI9ep8VWkah2Bj1w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.5.0.tgz", + "integrity": "sha512-ltEtw28CLpG/VaWX4PZ1enJ0wxA/Qw8ScAwhQTZj0xL6Lhkq5H0LoEALVRAq2gK10h1p2IUs/W034oXT1chH0w==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", - "@lerna/get-npm-exec-opts": "5.1.8", + "@lerna/child-process": "5.5.0", + "@lerna/get-npm-exec-opts": "5.5.0", "npmlog": "^6.0.2" } }, "@lerna/otplease": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.1.8.tgz", - "integrity": "sha512-/OVZ7Rbs8/ft14f4i/9HEFDsxJkBSg74rMUqyqFH3fID/RL3ja9hW5bI1bENxvYgs0bp/THy4lV5V75ZcI81zQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.5.0.tgz", + "integrity": "sha512-zNS315iH2VRQz/LJTrqUUuEqMnNsCoMXOMOaBzcB/AL29mYMvJlT05dMqenMPKrRtW0tAFzPC7jLTzybdRa7Qg==", "dev": true, "requires": { - "@lerna/prompt": "5.1.8" + "@lerna/prompt": "5.5.0" } }, "@lerna/output": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.1.8.tgz", - "integrity": "sha512-dXsKY8X2eAdPKRKHDZTASlWn95Eav1oQX9doUXkvV3o4UwIgqOCIsU7RqSED3EAEQz6VUH0rXNb/+d3uVeAoJQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.5.0.tgz", + "integrity": "sha512-f+MXc9X1xEe2w0AC+CAMr093MumCTNYmyIt8eUMYQMmoRkWT2n4tN8/KvWw9ucSWLKMkZtOTJiC+S6RJ4nWUig==", "dev": true, "requires": { "npmlog": "^6.0.2" } }, "@lerna/pack-directory": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.1.8.tgz", - "integrity": "sha512-aaH28ttS+JVimLFrVeZRWZ9Cii4GG2vkJXmQNikWBNQiFL/7S1x83NjMk4SQRdmtpYJkcQpQMZ2hDUdNxLnDCg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.5.0.tgz", + "integrity": "sha512-zHpIAeZOpIH/Slb8vuh75XR46mc4RZNwPS6XpwRgMRpp3Y1Bazlv6hDcq+pZTg1FwYKIDQDRfxW3IQi/aDPIjA==", "dev": true, "requires": { - "@lerna/get-packed": "5.1.8", - "@lerna/package": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", - "@lerna/temp-write": "5.1.8", - "npm-packlist": "^2.1.4", + "@lerna/get-packed": "5.5.0", + "@lerna/package": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", + "@lerna/temp-write": "5.5.0", + "npm-packlist": "^5.1.1", "npmlog": "^6.0.2", "tar": "^6.1.0" } }, "@lerna/package": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.1.8.tgz", - "integrity": "sha512-Ot+wu6XZ93tw8p9oSTJJA15TzGhVpo8VbgNhKPcI3JJjkxVq2D5L5jVeBkjQvFEQBonLibTr339uLLXyZ0RMzg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.5.0.tgz", + "integrity": "sha512-vP08ZdMd3A7B0hEI4ZNgCeBef64yCidrnFUIiIhXb/tAsDmGCGqS2IFdGRNE9vv01tVg0WrPLim4tl8AjoigKw==", "dev": true, "requires": { "load-json-file": "^6.2.0", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "8.1.1", "write-pkg": "^4.0.0" } }, "@lerna/package-graph": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.1.8.tgz", - "integrity": "sha512-aGwXTwCpPfhUPiSRhdppogZjOqJPm39EBxHFDa1E0+/Qaig5avJs4hI6OrPLyjsTywAswtCMOArvD1QZqxwvrQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.5.0.tgz", + "integrity": "sha512-g378NrCTEmVXqkAkv9EX8L3K7JTioPNuxItXTHQxlHDhZ2RM9KCVbT/ihwefVujWwwMPNij10bmfJUaEp2TGPQ==", "dev": true, "requires": { - "@lerna/prerelease-id-from-version": "5.1.8", - "@lerna/validation-error": "5.1.8", - "npm-package-arg": "^8.1.0", + "@lerna/prerelease-id-from-version": "5.5.0", + "@lerna/validation-error": "5.5.0", + "npm-package-arg": "8.1.1", "npmlog": "^6.0.2", "semver": "^7.3.4" }, @@ -17930,9 +18475,9 @@ } }, "@lerna/prerelease-id-from-version": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.1.8.tgz", - "integrity": "sha512-wfWv/8lHSk2/pl4FjopbDelFSLCz9s6J9AY5o7Sju9HtD9QUXcQHaXnEP1Rum9/rJZ8vWdFURcp9kzz8nxQ1Ow==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.5.0.tgz", + "integrity": "sha512-cpy0EgfO/7fXPhl/EsJnD8uGv0f8d6FHG2R1Xr7sJvmkffhkIy90qkFA7uSaZAA+ar9QFSAUJ+wGox0bhGJhHA==", "dev": true, "requires": { "semver": "^7.3.4" @@ -17959,9 +18504,9 @@ } }, "@lerna/profiler": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.1.8.tgz", - "integrity": "sha512-vpAFN85BvMHfIGA53IcwaUnS9FHAismEnNyFCjMkzKV55mmXFZlWpZyO36ESdSQRWCo5/25f3Ln0Y6YubY3Dvw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.5.0.tgz", + "integrity": "sha512-2DkkMxYCq/RsBptN+gJtmqwdrFqji6QMpNlm7v9JgS9kN2aHUIxcavtHXDaYf9sdPoey/bGypRv9DDTDcuw9MA==", "dev": true, "requires": { "fs-extra": "^9.1.0", @@ -18000,18 +18545,19 @@ } }, "@lerna/project": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.1.8.tgz", - "integrity": "sha512-zTFp91kmyJ0VHBmNXEArVrMSZVxnBJ7pHTt8C7RY91WSZhw8XDNumqMHDM+kEM1z/AtDBAAAGqBE3sjk5ONDXQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.5.0.tgz", + "integrity": "sha512-TD6/QGv/+Uh7GRXM/9m3EC0QpK2+U1WA+hoE5pSnpU5oDzwwUkynS3RuAcd2ID19e/u/ajfZtV+xcpaM7t+SHw==", "dev": true, "requires": { - "@lerna/package": "5.1.8", - "@lerna/validation-error": "5.1.8", + "@lerna/package": "5.5.0", + "@lerna/validation-error": "5.5.0", "cosmiconfig": "^7.0.0", "dedent": "^0.7.0", "dot-prop": "^6.0.1", "glob-parent": "^5.1.1", "globby": "^11.0.2", + "js-yaml": "^4.1.0", "load-json-file": "^6.2.0", "npmlog": "^6.0.2", "p-map": "^4.0.0", @@ -18037,48 +18583,48 @@ } }, "@lerna/prompt": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.1.8.tgz", - "integrity": "sha512-Cmq0FV/vyCHu00kySxXMfuPvutsi8qoME2/nFcICIktvDqxXr5aSFY8QqB123awNCbpb4xcHykjFnEj/RNdb2Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.5.0.tgz", + "integrity": "sha512-B7QEmmyleR+1XAewqEPdgZPecekJgVoAZ8YZgR8l4QlAMvf5BTHI//3AJI/HPN4DYZWGcjDoGFLEkpX906T8Rw==", "dev": true, "requires": { - "inquirer": "^7.3.3", + "inquirer": "^8.2.4", "npmlog": "^6.0.2" } }, "@lerna/publish": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.1.8.tgz", - "integrity": "sha512-Q88WxXVNAh/ZWj7vYG83RZUfQyQlJMg7tDhsVTvZzy3VpkkCPtmJXZfX+g4RmE0PNyjsXx9QLYAOZnOB613WyA==", - "dev": true, - "requires": { - "@lerna/check-working-tree": "5.1.8", - "@lerna/child-process": "5.1.8", - "@lerna/collect-updates": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/describe-ref": "5.1.8", - "@lerna/log-packed": "5.1.8", - "@lerna/npm-conf": "5.1.8", - "@lerna/npm-dist-tag": "5.1.8", - "@lerna/npm-publish": "5.1.8", - "@lerna/otplease": "5.1.8", - "@lerna/output": "5.1.8", - "@lerna/pack-directory": "5.1.8", - "@lerna/prerelease-id-from-version": "5.1.8", - "@lerna/prompt": "5.1.8", - "@lerna/pulse-till-done": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/validation-error": "5.1.8", - "@lerna/version": "5.1.8", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.5.0.tgz", + "integrity": "sha512-ZstILgupYxB8TpGkWgPZg1uoFIQUij07kizHau1BZXdV3xwPU6jtYAzGXuztinJDnnxfwjc7SjuinoYZcbmJXg==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "5.5.0", + "@lerna/child-process": "5.5.0", + "@lerna/collect-updates": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/describe-ref": "5.5.0", + "@lerna/log-packed": "5.5.0", + "@lerna/npm-conf": "5.5.0", + "@lerna/npm-dist-tag": "5.5.0", + "@lerna/npm-publish": "5.5.0", + "@lerna/otplease": "5.5.0", + "@lerna/output": "5.5.0", + "@lerna/pack-directory": "5.5.0", + "@lerna/prerelease-id-from-version": "5.5.0", + "@lerna/prompt": "5.5.0", + "@lerna/pulse-till-done": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/validation-error": "5.5.0", + "@lerna/version": "5.5.0", "fs-extra": "^9.1.0", - "libnpmaccess": "^4.0.1", - "npm-package-arg": "^8.1.0", - "npm-registry-fetch": "^9.0.0", + "libnpmaccess": "^6.0.3", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-pipe": "^3.1.0", - "pacote": "^13.4.1", + "pacote": "^13.6.1", "semver": "^7.3.4" }, "dependencies": { @@ -18131,32 +18677,32 @@ } }, "@lerna/pulse-till-done": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.1.8.tgz", - "integrity": "sha512-KsyOazHG6wnjfdJhIdhTaTNwhj8Np/aPPei/ac9WzcuzgLS/uCs1IVFFIYBv5JdTmyVBKmguSZxdYjk7JzKBew==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.5.0.tgz", + "integrity": "sha512-PcPSCWGzLp00UGJ5VHDpdqpBQ9C9Cs7E5FImEITGHE9UwcAC23LwSp7tOzdXWPyj3u8PLYLn+ebt9ml1jWSKgA==", "dev": true, "requires": { "npmlog": "^6.0.2" } }, "@lerna/query-graph": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.1.8.tgz", - "integrity": "sha512-+p+bjPI403Hwv1djTS5aJe7DtPWIDw0a427BE68h1mmrPc9oTe3GG+0lingbfGR8woA2rOmjytgK2jeErOryPg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.5.0.tgz", + "integrity": "sha512-mqCzZRF+IDPSj2zYJ1eO3PQsZshiKf54BXAe7HnYYJNbs1i8JMRpdaLr3TEyKDpVTcVzbEmFKwGi7KMhJG6rBQ==", "dev": true, "requires": { - "@lerna/package-graph": "5.1.8" + "@lerna/package-graph": "5.5.0" } }, "@lerna/resolve-symlink": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.1.8.tgz", - "integrity": "sha512-OJa8ct4Oo2BcD95FmJqkc5qZMepaQK5RZAWoTqEXG/13Gs0mPc0fZGIhnnpTqtm3mgNhlT7ypCHG42I7hKiSeg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.5.0.tgz", + "integrity": "sha512-J44Kc6OWa1uNZh+YSWuIBorTpTuXhuuJ7DtX4vwfF3AAp2frW6pBrmFZMibOcyOQ6QCp+PeiHQCXCF42uSq8pA==", "dev": true, "requires": { "fs-extra": "^9.1.0", "npmlog": "^6.0.2", - "read-cmd-shim": "^2.0.0" + "read-cmd-shim": "^3.0.0" }, "dependencies": { "fs-extra": { @@ -18190,12 +18736,12 @@ } }, "@lerna/rimraf-dir": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.1.8.tgz", - "integrity": "sha512-3pT1X8kzW8xHUuAmRgzSKAF+/H1h1eSWq5+ACzeTWnvgqE7++0URee7TXwVCP/5FZPTZIzIclQCh4G0WD9Jfjg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.5.0.tgz", + "integrity": "sha512-dwWN5SGXQ39FocRAZ3uL7tYUuK98r/VHQZRcJjJ8hxpuxti+EPzGegtA05NsvvmW2PpFsBzYKITFQHX3GX4LWA==", "dev": true, "requires": { - "@lerna/child-process": "5.1.8", + "@lerna/child-process": "5.5.0", "npmlog": "^6.0.2", "path-exists": "^4.0.0", "rimraf": "^3.0.2" @@ -18213,51 +18759,52 @@ } }, "@lerna/run": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.1.8.tgz", - "integrity": "sha512-E5mI3FswVN9zQ3bCYUQxxPlLL400vnKpwLSzzRNFy//TR8Geu0LeR6NY+Jf0jklsKxwWGMJgqL6VqPqxDaNtdw==", - "dev": true, - "requires": { - "@lerna/command": "5.1.8", - "@lerna/filter-options": "5.1.8", - "@lerna/npm-run-script": "5.1.8", - "@lerna/output": "5.1.8", - "@lerna/profiler": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/timer": "5.1.8", - "@lerna/validation-error": "5.1.8", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.5.0.tgz", + "integrity": "sha512-yYR65A/GcDgEMmk2lMSBHGAbdgLMi6wICugLzVXfXISuTbEMzN1dCwSeGBOxzK2cvKV2Bpn4WeEYs64FNmNJbQ==", + "dev": true, + "requires": { + "@lerna/command": "5.5.0", + "@lerna/filter-options": "5.5.0", + "@lerna/npm-run-script": "5.5.0", + "@lerna/output": "5.5.0", + "@lerna/profiler": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/timer": "5.5.0", + "@lerna/validation-error": "5.5.0", "p-map": "^4.0.0" } }, "@lerna/run-lifecycle": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.1.8.tgz", - "integrity": "sha512-5rRpovujhLJufKRzMp5sl2BIIqrPeoXxjniQbzkpSxZ2vnD+bE9xOoaciHQxOsmXfXhza0C+k3xYMM5+B/bVzg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.5.0.tgz", + "integrity": "sha512-BtnEO3IlZ7znUmQtSxd7oSSmgzJbSH+v58foTpbuvMtOBFJxV4LNyv2uyto2t4bYdCWEnw4ybd8j32aEEG9UNQ==", "dev": true, "requires": { - "@lerna/npm-conf": "5.1.8", - "@npmcli/run-script": "^3.0.2", - "npmlog": "^6.0.2" + "@lerna/npm-conf": "5.5.0", + "@npmcli/run-script": "^4.1.7", + "npmlog": "^6.0.2", + "p-queue": "^6.6.2" } }, "@lerna/run-topologically": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.1.8.tgz", - "integrity": "sha512-isuulfBdNsrgV2QF/HwCKCecfR9mPEU9N4Nf8n9nQQgakwOscoDlwGp2xv27pvcQKI52q/o/ISEjz3JeoEQiOA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.5.0.tgz", + "integrity": "sha512-zl4I/SNg/yiLja1aF0B4X22CRzpRdvLB47KGjAgiGydcHwx2TUmI3MPoQVjvUbaOuctF/wSMS2tI6Hgdo60I0Q==", "dev": true, "requires": { - "@lerna/query-graph": "5.1.8", + "@lerna/query-graph": "5.5.0", "p-queue": "^6.6.2" } }, "@lerna/symlink-binary": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.1.8.tgz", - "integrity": "sha512-s7VfKNJZnWvTKZ7KR8Yxh1rYhE/ARMioD5axyu3FleS3Xsdla2M5sQsLouCrdfM3doTO8lMxPVvVSFmL7q0KOA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.5.0.tgz", + "integrity": "sha512-vpVzEWgVfKGzMheb9XizF8hF/Ypfov0iMPBSAzVNxu5eNQVUz3KFrIZNgiBsFdIVN4W/y4jLwOSgXXKwvIodkA==", "dev": true, "requires": { - "@lerna/create-symlink": "5.1.8", - "@lerna/package": "5.1.8", + "@lerna/create-symlink": "5.5.0", + "@lerna/package": "5.5.0", "fs-extra": "^9.1.0", "p-map": "^4.0.0" }, @@ -18293,14 +18840,14 @@ } }, "@lerna/symlink-dependencies": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.1.8.tgz", - "integrity": "sha512-U5diiaKdWUlvoFMh3sYIEESBLa8Z3Q/EpkLl5o4YkcbPBjFHJFpmoqCGomwL9sf9HQUV2S9Lt9szJT8qgQm86Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.5.0.tgz", + "integrity": "sha512-gqFZ4AeVr+nqyfg8c2xNizGzBemfgtCpGv4NnjA/66HJWCE+/fT7NTIi8Qk2glbYf37ojRcjUfc0RvW7NGv5qA==", "dev": true, "requires": { - "@lerna/create-symlink": "5.1.8", - "@lerna/resolve-symlink": "5.1.8", - "@lerna/symlink-binary": "5.1.8", + "@lerna/create-symlink": "5.5.0", + "@lerna/resolve-symlink": "5.5.0", + "@lerna/symlink-binary": "5.5.0", "fs-extra": "^9.1.0", "p-map": "^4.0.0", "p-map-series": "^2.1.0" @@ -18337,9 +18884,9 @@ } }, "@lerna/temp-write": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.1.8.tgz", - "integrity": "sha512-4/guYB5XotugyM8P/F1z6b+hNlSCe/QuZsmiZwgXOw2lmYnkSzLWDVjqsdZtNYqojK0lioxcPjZiL5qnEkk1PQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.5.0.tgz", + "integrity": "sha512-7MmqTfyWcjGkgPkWHaldmCmDBSLka50z0+lsmZuGLwIvQl72ZfC+ZJF/6107m+hgtUJBpJQ3UYEhrrdfR4L46Q==", "dev": true, "requires": { "graceful-fs": "^4.1.15", @@ -18350,40 +18897,40 @@ } }, "@lerna/timer": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.1.8.tgz", - "integrity": "sha512-Ua4bw2YOO3U+sFujE+MsUG+lllU0X7u6PCTj1QKe0QlR0zr2gCa0pcwjUQPdNfxnpJpPY+hdbfTUv2viDloaiA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.5.0.tgz", + "integrity": "sha512-jgCL2ZmZNn7sWL+M/TuGJukTkUs/il6EwBYcgd10h0JazQ4fAiBhFq36ZzTvYkz6ujKvKOcqyWrMdmi8Q339qA==", "dev": true }, "@lerna/validation-error": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.1.8.tgz", - "integrity": "sha512-n+IiaxN2b08ZMYnezsmwL6rXB15/VvweusC04GMh1XtWunnMzSg9JDM7y6bw2vfpBBQx6cBFhLKSpD2Fcq5D5Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.5.0.tgz", + "integrity": "sha512-o/8sEaZKdZdE4/t+E/cFpnYIiDzt7uMHVpWmpCG0l6nZSDzB8+5ehAAudy2qJOwxEAKJ6QGvi7jWLjc2NWa4HQ==", "dev": true, "requires": { "npmlog": "^6.0.2" } }, "@lerna/version": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.1.8.tgz", - "integrity": "sha512-3f4P7KjIs6Gn2iaGkA5EASE9izZeDKtEzE8i2DE7YfVdw/P+EwFfKv2mKBXGbckYw42YO1tL6aD2QH0C8XbwlA==", - "dev": true, - "requires": { - "@lerna/check-working-tree": "5.1.8", - "@lerna/child-process": "5.1.8", - "@lerna/collect-updates": "5.1.8", - "@lerna/command": "5.1.8", - "@lerna/conventional-commits": "5.1.8", - "@lerna/github-client": "5.1.8", - "@lerna/gitlab-client": "5.1.8", - "@lerna/output": "5.1.8", - "@lerna/prerelease-id-from-version": "5.1.8", - "@lerna/prompt": "5.1.8", - "@lerna/run-lifecycle": "5.1.8", - "@lerna/run-topologically": "5.1.8", - "@lerna/temp-write": "5.1.8", - "@lerna/validation-error": "5.1.8", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.5.0.tgz", + "integrity": "sha512-E6ZrzTrYwof5cSvyTpztZKOiJKAK+aXi/gfsGbLdbYGMArY4B/pYOMOcRMXHBh7BuLicMih/mRUb4M7uCnuE0A==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "5.5.0", + "@lerna/child-process": "5.5.0", + "@lerna/collect-updates": "5.5.0", + "@lerna/command": "5.5.0", + "@lerna/conventional-commits": "5.5.0", + "@lerna/github-client": "5.5.0", + "@lerna/gitlab-client": "5.5.0", + "@lerna/output": "5.5.0", + "@lerna/prerelease-id-from-version": "5.5.0", + "@lerna/prompt": "5.5.0", + "@lerna/run-lifecycle": "5.5.0", + "@lerna/run-topologically": "5.5.0", + "@lerna/temp-write": "5.5.0", + "@lerna/validation-error": "5.5.0", "chalk": "^4.1.0", "dedent": "^0.7.0", "load-json-file": "^6.2.0", @@ -18468,13 +19015,13 @@ } }, "@lerna/write-log-file": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.1.8.tgz", - "integrity": "sha512-B+shMH3TpzA7Q5GGbuNkOmdPQdD1LXRFj7R17LINkn82PhP9CUgubwYuiVzrLa16ADi0V5Ad76pqtHi/6kD0nA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.5.0.tgz", + "integrity": "sha512-XPnp5B+bcmwpXJpJn45V8e2SU6Z1oTwW0vW9uW3l0nmbOvpT9PbPkf9hC80cZOWovXSBefUDwEGqA5fQdhvqGg==", "dev": true, "requires": { "npmlog": "^6.0.2", - "write-file-atomic": "^3.0.3" + "write-file-atomic": "^4.0.1" } }, "@lezer/common": { @@ -18546,44 +19093,44 @@ } }, "@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.0.2.tgz", - "integrity": "sha512-FMX5i7a+ojIguHpWbzh5MCsCouJkwf4z4ejdUY/fsgB9Vkdak4ZnoIEskOyOUMMB4lctiZFGszFQJXUeFL8tRg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.1.2.tgz", + "integrity": "sha512-TyVLn3S/+ikMDsh0gbKv2YydKClN8HaJDDpONlaZR+LVJmsxLFUgA+O7zu59h9+f9gX1aj/ahw9wqa6rosmrYQ==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.0.2.tgz", - "integrity": "sha512-DznYtF3lHuZDSRaIOYeif4JgO0NtO2Xf8DsngAugMx/bUdTFbg86jDTmkVJBNmV+cxszz6OjGvinnS8AbJ342g==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.1.2.tgz", + "integrity": "sha512-YPXtcVkhmVNoMGlqp81ZHW4dMxK09msWgnxtsDpSiZwTzUBG2N+No2bsr7WMtBKCVJMSD6mbAl7YhKUqkp/Few==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.0.2.tgz", - "integrity": "sha512-Gy9+c3Wj+rUlD3YvCZTi92gs+cRX7ZQogtwq0IhRenloTTlsbpezNgk6OCkt59V4ATEWSic9rbU92H/l7XsRvA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.1.2.tgz", + "integrity": "sha512-42R4MAFeIeNn+L98qwxAt360bwzX2Kf0ZQkBBucJ2Ircza3asoY4CDbgiu9VWklq8gWJVSJSJBwDI+c/THiWkA==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.0.2.tgz", - "integrity": "sha512-b0jMEo566YdM2K+BurSed7bswjo3a6bcdw5ETqoIfSuxKuRLPfAiOjVbZyZBgx3J/TAM/QrvEQ/VN89A0ZAxSg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.1.2.tgz", + "integrity": "sha512-vHZ2JiOWF2+DN9lzltGbhtQNzDo8fKFGrf37UJrgqxU0yvtERrzUugnfnX1wmVfFhSsF8OxrfqiNOUc5hko1Zg==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.0.2.tgz", - "integrity": "sha512-zrBHaePwcv4cQXxzYgNj0+A8I1uVN97E7/3LmkRocYZ+rMwUsnPpp4RuTAHSRoKlTQV3nSdCQW4Qdt4MXw/iHw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.1.2.tgz", + "integrity": "sha512-RjRoRxg7Q3kPAdUSC5EUUPlwfMkIVhmaRTIe+cqHbKrGZ4M6TyCA/b5qMaukQ/1CHWrqYY2FbKOAU8Hg0pQFzg==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.0.2.tgz", - "integrity": "sha512-fpnI00dt+yO1cKx9qBXelKhPBdEgvc8ZPav1+0r09j0woYQU2N79w/jcGawSY5UGlgQ3vjaJsFHnGbGvvqdLzg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.1.2.tgz", + "integrity": "sha512-rIZVR48zA8hGkHIK7ED6+ZiXsjRCcAVBJbm8o89OKAMTmEAQ2QvoOxoiu3w2isAaWwzgtQIOFIqHwvZDyLKCvw==", "dev": true, "optional": true }, @@ -18614,9 +19161,9 @@ } }, "@npmcli/arborist": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.2.0.tgz", - "integrity": "sha512-zWV7scFGL0SmpvfQyIWnMFbU/0YgtMNyvJiJwR98kyjUSntJGWFFR0O600d5W+TrDcTg0GyDbY+HdzGEg+GXLg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz", + "integrity": "sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==", "dev": true, "requires": { "@isaacs/string-locale-compare": "^1.1.0", @@ -18627,7 +19174,7 @@ "@npmcli/name-from-folder": "^1.0.1", "@npmcli/node-gyp": "^2.0.0", "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^3.0.0", + "@npmcli/run-script": "^4.1.3", "bin-links": "^3.0.0", "cacache": "^16.0.6", "common-ancestor-path": "^1.0.1", @@ -18641,7 +19188,7 @@ "npm-pick-manifest": "^7.0.0", "npm-registry-fetch": "^13.0.0", "npmlog": "^6.0.2", - "pacote": "^13.0.5", + "pacote": "^13.6.1", "parse-conflict-json": "^2.0.1", "proc-log": "^2.0.0", "promise-all-reject-late": "^1.0.0", @@ -18655,77 +19202,15 @@ "walk-up-path": "^1.0.0" }, "dependencies": { - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "requires": { "lru-cache": "^7.5.1" } }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - } - }, - "minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, "npm-package-arg": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", @@ -18738,21 +19223,6 @@ "validate-npm-package-name": "^4.0.0" } }, - "npm-registry-fetch": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", - "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - } - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -18781,48 +19251,13 @@ } } } - }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } } } }, - "@npmcli/ci-detect": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz", - "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==", - "dev": true - }, "@npmcli/fs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "requires": { "@gar/promisify": "^1.1.3", @@ -18850,9 +19285,9 @@ } }, "@npmcli/git": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", - "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, "requires": { "@npmcli/promise-spawn": "^3.0.0", @@ -18899,9 +19334,9 @@ } }, "@npmcli/map-workspaces": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.3.tgz", - "integrity": "sha512-X6suAun5QyupNM8iHkNPh0AHdRC2rb1W+MTdMvvA/2ixgmqZwlq5cGUBgmKHUHT2LgrkKJMAXbfAoTxOigpK8Q==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz", + "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==", "dev": true, "requires": { "@npmcli/name-from-folder": "^1.0.1", @@ -18976,9 +19411,9 @@ } }, "@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -19027,67 +19462,86 @@ } }, "@npmcli/run-script": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, "requires": { "@npmcli/node-gyp": "^2.0.0", "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + } + }, + "@nrwl/cli": { + "version": "14.6.5", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.6.5.tgz", + "integrity": "sha512-sjT4/oMk1F4+dTpCp08IVE8hfqKsokebUECzC1hTu4pCeFo0oviIi7bQTuCIbG9w4iiHLioa6QmLRXBwVJEr9w==", + "dev": true, + "requires": { + "nx": "14.6.5" + } + }, + "@nrwl/tao": { + "version": "14.6.5", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.6.5.tgz", + "integrity": "sha512-sSbTSN4Bfh4vQR2iCl9arNzEhJztG6paY2j+k/GwQZdN+QssX9xV32jLWYIC3rDmPJWaZ11uD3TgAyr3X7GXhw==", + "dev": true, + "requires": { + "nx": "14.6.5" } }, "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.1.tgz", + "integrity": "sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==", "dev": true, "requires": { - "@octokit/types": "^6.0.3" + "@octokit/types": "^7.0.0" } }, "@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.0.5.tgz", + "integrity": "sha512-4R3HeHTYVHCfzSAi0C6pbGXV8UDI5Rk+k3G7kLVNckswN9mvpOzW9oENfjfH3nEmzg8y3AmKmzs8Sg6pLCeOCA==", "dev": true, "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" } }, "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.2.tgz", + "integrity": "sha512-8/AUACfE9vpRpehE6ZLfEtzkibe5nfsSwFZVMsG8qabqRt1M81qZYUFRZa1B8w8lP6cdfDJfRq9HWS+MbmR7tw==", "dev": true, "requires": { - "@octokit/types": "^6.0.3", + "@octokit/types": "^7.0.0", "is-plain-object": "^5.0.0", "universal-user-agent": "^6.0.0" } }, "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.1.tgz", + "integrity": "sha512-sxmnewSwAixkP1TrLdE6yRG53eEhHhDTYUykUwdV9x8f91WcbhunIHk9x1PZLALdBZKRPUO2HRcm4kezZ79HoA==", "dev": true, "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", + "@octokit/request": "^6.0.0", + "@octokit/types": "^7.0.0", "universal-user-agent": "^6.0.0" } }, "@octokit/openapi-types": { - "version": "12.8.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.8.0.tgz", - "integrity": "sha512-ydcKLs2KKcxlhpdWLzJxEBDEk/U5MUeqtqkXlrtAUXXFPs6vLl1PEGghFC/BbpleosB7iXs0Z4P2DGe7ZT5ZNg==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.9.0.tgz", + "integrity": "sha512-MOYjRyLIM0zzNb9RfEwVK6HLIc2nIF2OMVtMqiNOGbX0SHrQvQbI6X1K16ktmaHr8WUBv+eeul8cD9mz4rNiWQ==", "dev": true }, "@octokit/plugin-enterprise-rest": { @@ -19097,12 +19551,12 @@ "dev": true }, "@octokit/plugin-paginate-rest": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.1.tgz", - "integrity": "sha512-NVNTK63yoTFp07GqISWK+uDfGH1CAPhQXS7LzsJBvaK5W+UlvG549pLZC55FK0FqANVl6q/9ra3SR5c97xF/sw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-4.2.2.tgz", + "integrity": "sha512-oslJFmdcWeB3Q8dzn2WNFBzEAvqCH+cvrjBUhS7uwQxAt5yH91w1eo2flWiR0Rqxh+EijQS5ImoB0iQ3hz7P2Q==", "dev": true, "requires": { - "@octokit/types": "^6.38.2" + "@octokit/types": "^7.3.0" } }, "@octokit/plugin-request-log": { @@ -19113,59 +19567,59 @@ "requires": {} }, "@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.5.0.tgz", + "integrity": "sha512-+r/tWwc7hI3vYDb+d0hAqbr04Kle6pL+MmGxMDTUn7wIwry5qFXnUA8RCa5CO8EcuHbZLywnqIVRLdM08qV8Ew==", "dev": true, "requires": { - "@octokit/types": "^6.39.0", + "@octokit/types": "^7.3.0", "deprecation": "^2.3.1" } }, "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.1.tgz", + "integrity": "sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==", "dev": true, "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", "is-plain-object": "^5.0.0", "node-fetch": "^2.6.7", "universal-user-agent": "^6.0.0" } }, "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.1.tgz", + "integrity": "sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==", "dev": true, "requires": { - "@octokit/types": "^6.0.3", + "@octokit/types": "^7.0.0", "deprecation": "^2.0.0", "once": "^1.4.0" } }, "@octokit/rest": { - "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.4.tgz", + "integrity": "sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA==", "dev": true, "requires": { - "@octokit/core": "^3.5.1", - "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/core": "^4.0.0", + "@octokit/plugin-paginate-rest": "^4.0.0", "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + "@octokit/plugin-rest-endpoint-methods": "^6.0.0" } }, "@octokit/types": { - "version": "6.39.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.39.0.tgz", - "integrity": "sha512-Mq4N9sOAYCitTsBtDdRVrBE80lIrMBhL9Jbrw0d+j96BAzlq4V+GLHFJbHokEsVvO/9tQupQdoFdgVYhD2C8UQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.3.0.tgz", + "integrity": "sha512-7Ar22AVxsJBYZuPkGQwFQybGt2YjuP6j6Z36bPntIYy3R9qSowB55mXOsb16hc0UqtJkYBrRMVXKlaX1OHsh1g==", "dev": true, "requires": { - "@octokit/openapi-types": "^12.7.0" + "@octokit/openapi-types": "^13.9.0" } }, "@parcel/bundler-default": { @@ -19341,75 +19795,75 @@ } }, "@parcel/css": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.12.2.tgz", - "integrity": "sha512-Sa0PvZu5u877CupQA8IjEATqjJFynBfA7LxbcyutFe2LDCRSqB5Bm08jKFScyaz56qjZNIxZxXk2SApNkOvoAA==", - "dev": true, - "requires": { - "@parcel/css-darwin-arm64": "1.12.2", - "@parcel/css-darwin-x64": "1.12.2", - "@parcel/css-linux-arm-gnueabihf": "1.12.2", - "@parcel/css-linux-arm64-gnu": "1.12.2", - "@parcel/css-linux-arm64-musl": "1.12.2", - "@parcel/css-linux-x64-gnu": "1.12.2", - "@parcel/css-linux-x64-musl": "1.12.2", - "@parcel/css-win32-x64-msvc": "1.12.2", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.13.1.tgz", + "integrity": "sha512-pDv+1tPCk2ggGZ1Msl4r+lq7dPKjUBpZXJf/DMydTnYPxupwAjtmlmOd67CF3QHVLyKYB+viU4g5M8pVXCbaeA==", + "dev": true, + "requires": { + "@parcel/css-darwin-arm64": "1.13.1", + "@parcel/css-darwin-x64": "1.13.1", + "@parcel/css-linux-arm-gnueabihf": "1.13.1", + "@parcel/css-linux-arm64-gnu": "1.13.1", + "@parcel/css-linux-arm64-musl": "1.13.1", + "@parcel/css-linux-x64-gnu": "1.13.1", + "@parcel/css-linux-x64-musl": "1.13.1", + "@parcel/css-win32-x64-msvc": "1.13.1", "detect-libc": "^1.0.3" } }, "@parcel/css-darwin-arm64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.12.2.tgz", - "integrity": "sha512-6VvsoYSltBiUh/uyfPzQ+I3DiTFN7tmRv6zm1LH98J7GGCDDhbYEtbQjjCs15ex6fVn1ORZK0JO+mMlsg1JwTA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.13.1.tgz", + "integrity": "sha512-46LVidYcao8zurVPOZ4ZWJQ/50o4N+Z0K4CRmCCqWE+5gIWlx+md+W0h8XQTRb/GQ3j3+mlZvYCQxHpKy5M1lA==", "dev": true, "optional": true }, "@parcel/css-darwin-x64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-darwin-x64/-/css-darwin-x64-1.12.2.tgz", - "integrity": "sha512-3J0/LrDvt5vevOisnrE0q5mEcuiAY+K7OZwIv84SAnrbjlL5sshmIaaNzL869kb4thza+RClEj0mS5XTm1IUEw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-darwin-x64/-/css-darwin-x64-1.13.1.tgz", + "integrity": "sha512-vX1/Ut06UL5MQzWr5fPg51n6NYrzfjW9A+jXH3KeBloWtX+NllhLilmtcO4X1y/ZqaFjqHWpk4yrNVdtk1r4zA==", "dev": true, "optional": true }, "@parcel/css-linux-arm-gnueabihf": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.12.2.tgz", - "integrity": "sha512-OsX7I3dhBvnxEbAH++08RFe7yhjRp33ulzrCvJTMOP9YkxEEJ8qId3sNzJBHIVQzHyTlPTnBRHbSDhU3TFe/eQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.13.1.tgz", + "integrity": "sha512-qxQKUeXLHqehLmuJODQ7GNp0Syj2Kl35X4YvXGoPOI7Eq/y2ny3G5NCKUWkGDwOasIP3hKvVVfJRJv9fLJWnDQ==", "dev": true, "optional": true }, "@parcel/css-linux-arm64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.12.2.tgz", - "integrity": "sha512-R1Kqw+1Rsru9Q4+qvUEC6B8P21bpqhuF9rv8GmBmmnF1i2hMZ1JiY+uh/ej8IaRV0O3fAHeQGIyGBWx6qWDpcw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.13.1.tgz", + "integrity": "sha512-FxnOONVo8WBW58uzjqv/mwSBDgGMp1qxK+fovjqLPCP3zcNgxkUG0l6ElWpqtiWWH3mTMzSHe+7hSaeVov12yQ==", "dev": true, "optional": true }, "@parcel/css-linux-arm64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.12.2.tgz", - "integrity": "sha512-nwixgM4SEgPUQata9aAiJW0A5Q9ms+xim1tXT1i+91kOei4Fu2Wr2OuofMk+mlhbgmGKCTcu4gzMPReGxUhuRA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.13.1.tgz", + "integrity": "sha512-6RDhL36HBAtt1mHa/y+34fHRImEJT/rd9hy1Z2qz117WUgzpZ3m4tFw33VrG7MKACugs9C2zG1MdVfy1Rz5+Uw==", "dev": true, "optional": true }, "@parcel/css-linux-x64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.12.2.tgz", - "integrity": "sha512-cJYVMHnQSGhDwQByyvjFZppjMBNlgxXl/R4cX5DwrQE0QZmK/42BYnMp92rvoprEG6LRyRoiGtCjyfYTPWajog==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.13.1.tgz", + "integrity": "sha512-4VsduFKs35J1I3iQJuBCTp66K5mLh8nrtfXzkBDgP9tc6cLqw9PFodby9NhW9SJSn0ZVdrciIXW0C8Lp3Ev+bw==", "dev": true, "optional": true }, "@parcel/css-linux-x64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.12.2.tgz", - "integrity": "sha512-u9zdO/d831/74Tf+TdPUfaIuB9v6FD4Xz8UdWUDOXgQqaOlnJ9fAsAM39EkoWlMxPPljY3f4ay6irSe1a4XgSA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.13.1.tgz", + "integrity": "sha512-Ws34m9fW/0UuNTkC359nbnURzvSbCsstRG6QQ3UxdeNJ+crrgEsmvHPcN3WiIz/P2seP1Hu6GobKQAnOy6g3HA==", "dev": true, "optional": true }, "@parcel/css-win32-x64-msvc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.12.2.tgz", - "integrity": "sha512-kCAKr3vKqvPUv9oXBG3pGZQz5il3sEk35dpmTXFa/7eDNKR5XyLpiJs8JwWJTFfuUqroymDSXA1bCcjvNEYcAg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.13.1.tgz", + "integrity": "sha512-4yPYFQqUW4ZepIWa8rWiXnSDU6Nki2H9PB1NfTvr7IjN3WsNFrrVZFKsTg/KU2euYnasBXSZ+CMTUutvLZoVaA==", "dev": true, "optional": true }, @@ -20287,9 +20741,9 @@ } }, "@rollup/plugin-typescript": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.3.tgz", - "integrity": "sha512-55L9SyiYu3r/JtqdjhwcwaECXP7JeJ9h1Sg1VWRJKIutla2MdZQodTgcCNybXLMCnqpNLEhS2vGENww98L1npg==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.5.0.tgz", + "integrity": "sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -20316,18 +20770,18 @@ } }, "@swc/helpers": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", - "integrity": "sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", + "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", "dev": true, "requires": { "tslib": "^2.4.0" } }, "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, "@trysound/sax": { @@ -20346,9 +20800,9 @@ } }, "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, "requires": { "@types/estree": "*", @@ -20377,6 +20831,12 @@ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -20390,9 +20850,9 @@ "dev": true }, "@types/node": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz", - "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==", + "version": "18.7.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.15.tgz", + "integrity": "sha512-XnjpaI8Bgc3eBag2Aw4t2Uj/49lLBSStHWfqKvIuXD7FIrZyMLWp8KuAFHAqxMZYTF9l08N1ctUn9YNybZJVmQ==", "dev": true }, "@types/normalize-package-data": { @@ -20443,14 +20903,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.5.tgz", - "integrity": "sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz", + "integrity": "sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.30.5", - "@typescript-eslint/type-utils": "5.30.5", - "@typescript-eslint/utils": "5.30.5", + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/type-utils": "5.36.2", + "@typescript-eslint/utils": "5.36.2", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -20480,52 +20940,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.5.tgz", - "integrity": "sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.2.tgz", + "integrity": "sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.30.5", - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/typescript-estree": "5.30.5", + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/typescript-estree": "5.36.2", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz", - "integrity": "sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz", + "integrity": "sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/visitor-keys": "5.30.5" + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/visitor-keys": "5.36.2" } }, "@typescript-eslint/type-utils": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.5.tgz", - "integrity": "sha512-k9+ejlv1GgwN1nN7XjVtyCgE0BTzhzT1YsQF0rv4Vfj2U9xnslBgMYYvcEYAFVdvhuEscELJsB7lDkN7WusErw==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz", + "integrity": "sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.30.5", + "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/utils": "5.36.2", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.5.tgz", - "integrity": "sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.2.tgz", + "integrity": "sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz", - "integrity": "sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz", + "integrity": "sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/visitor-keys": "5.30.5", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/visitor-keys": "5.36.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -20554,26 +21015,26 @@ } }, "@typescript-eslint/utils": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.5.tgz", - "integrity": "sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.2.tgz", + "integrity": "sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.30.5", - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/typescript-estree": "5.30.5", + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/typescript-estree": "5.36.2", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.5.tgz", - "integrity": "sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA==", + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz", + "integrity": "sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/types": "5.36.2", "eslint-visitor-keys": "^3.3.0" } }, @@ -20892,9 +21353,9 @@ "dev": true }, "are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "requires": { "delegates": "^1.0.0", @@ -20982,9 +21443,9 @@ "dev": true }, "azure-devops-node-api": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.1.1.tgz", - "integrity": "sha512-XDG91XzLZ15reP12s3jFkKS8oiagSICjnLwxEYieme4+4h3ZveFOFRA4iYIG40RyHXsiI0mefFYYMFIJbMpWcg==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", + "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", "dev": true, "requires": { "tunnel": "0.0.6", @@ -21024,39 +21485,24 @@ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", "dev": true }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, "bin-links": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.1.tgz", - "integrity": "sha512-9vx+ypzVhASvHTS6K+YSGf7nwQdANoz7v6MTC0aCtYnOEZ87YvMf81aY737EZnGZdpbRM3sfWjO9oWkKmuIvyQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz", + "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==", "dev": true, "requires": { "cmd-shim": "^5.0.0", "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", + "npm-normalize-package-bin": "^2.0.0", "read-cmd-shim": "^3.0.0", "rimraf": "^3.0.0", "write-file-atomic": "^4.0.0" }, "dependencies": { - "cmd-shim": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", - "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "read-cmd-shim": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz", - "integrity": "sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==", + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true }, "rimraf": { @@ -21067,16 +21513,6 @@ "requires": { "glob": "^7.1.3" } - }, - "write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } } } }, @@ -21129,15 +21565,15 @@ "dev": true }, "browserslist": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", - "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001359", - "electron-to-chromium": "^1.4.172", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.4" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" } }, "buble": { @@ -21184,10 +21620,33 @@ "dev": true }, "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } }, "byte-size": { "version": "7.0.1", @@ -21196,9 +21655,9 @@ "dev": true }, "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, "requires": { "@npmcli/fs": "^2.1.0", @@ -21218,7 +21677,7 @@ "rimraf": "^3.0.2", "ssri": "^9.0.0", "tar": "^6.1.11", - "unique-filename": "^1.1.1" + "unique-filename": "^2.0.0" }, "dependencies": { "brace-expansion": { @@ -21295,15 +21754,6 @@ } } } - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } } } }, @@ -21341,9 +21791,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001363", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", - "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", + "version": "1.0.30001390", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz", + "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==", "dev": true }, "chalk": { @@ -21410,9 +21860,9 @@ } }, "entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true }, "htmlparser2": { @@ -21488,9 +21938,9 @@ } }, "entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true } } @@ -21555,6 +22005,12 @@ "restore-cursor": "^3.1.0" } }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, "cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -21601,9 +22057,9 @@ } }, "cmd-shim": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", - "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", + "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", "dev": true, "requires": { "mkdirp-infer-owner": "^2.0.0" @@ -22002,6 +22458,12 @@ } } }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -22149,9 +22611,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.183", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.183.tgz", - "integrity": "sha512-PnJvlREshGPh3M5tgReLgqbOQ61yd4Knwo39Cxy9SMfqwX9q5iRy+JioQC1LyKx1IBAH2zoctAWblhgM2kbEKQ==", + "version": "1.4.243", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.243.tgz", + "integrity": "sha512-BgLD2gBX43OSXwlT01oYRRD5NIB4n3okTRxkzEAC6G0SZG4TTlyrWMjbOo0fajCwqwpRtMHXQNMjtRN6qpNtfw==", "dev": true }, "emoji-regex": { @@ -22160,12 +22622,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, "encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -22198,14 +22654,30 @@ } }, "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + } } }, "entities": { @@ -22232,15 +22704,6 @@ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -22251,16 +22714,16 @@ } }, "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", + "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", + "get-intrinsic": "^1.1.2", "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", @@ -22272,9 +22735,9 @@ "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", + "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", @@ -22326,13 +22789,15 @@ "dev": true }, "eslint": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", - "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -22342,14 +22807,17 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -22364,8 +22832,7 @@ "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "ansi-styles": { @@ -22419,9 +22886,9 @@ } }, "globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -22451,9 +22918,9 @@ } }, "eslint-plugin-react": { - "version": "7.30.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz", - "integrity": "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==", + "version": "7.31.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.7.tgz", + "integrity": "sha512-8NldBTeYp/kQoTV1uT0XF6HcmDqbgZ0lNPkN0wlRw8DJKXEnaWu+oh/6gt3xIhzvQ35wB2Y545fJhIbJSZ2NNw==", "dev": true, "requires": { "array-includes": "^3.1.5", @@ -22542,20 +23009,20 @@ "dev": true }, "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "requires": { - "acorn": "^8.7.1", + "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "dependencies": { "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true } } @@ -22697,9 +23164,9 @@ "dev": true }, "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true }, "fastq": { @@ -22748,22 +23215,20 @@ } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, "flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true }, "flat-cache": { "version": "3.0.4", @@ -22787,9 +23252,9 @@ } }, "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "fs-constants": { @@ -23125,6 +23590,12 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", @@ -23257,12 +23728,12 @@ "dev": true }, "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "requires": { - "@tootallnate/once": "1", + "@tootallnate/once": "2", "agent-base": "6", "debug": "4" } @@ -23314,12 +23785,32 @@ "dev": true }, "ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "immutable": { @@ -23389,39 +23880,39 @@ "dev": true }, "init-package-json": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz", - "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", + "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", "dev": true, "requires": { - "npm-package-arg": "^8.1.5", + "npm-package-arg": "^9.0.1", "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "^4.1.1", + "read": "^1.0.7", + "read-package-json": "^5.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" + "validate-npm-package-name": "^4.0.0" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "requires": { - "yallist": "^4.0.0" + "lru-cache": "^7.5.1" } }, - "read-package-json": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", - "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" } }, "semver": { @@ -23431,29 +23922,42 @@ "dev": true, "requires": { "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } } } }, "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "mute-stream": "0.0.8", + "ora": "^5.4.1", "run-async": "^2.4.0", - "rxjs": "^6.6.0", + "rxjs": "^7.5.5", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, "dependencies": { "ansi-styles": { @@ -23534,9 +24038,9 @@ } }, "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true }, "is-arrayish": { @@ -23580,12 +24084,12 @@ "dev": true }, "is-builtin-module": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", - "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", + "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", "dev": true, "requires": { - "builtin-modules": "^3.0.0" + "builtin-modules": "^3.3.0" } }, "is-callable": { @@ -23604,9 +24108,9 @@ } }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "requires": { "has": "^1.0.3" @@ -23621,6 +24125,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -23642,6 +24152,12 @@ "is-extglob": "^2.1.1" } }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, "is-json": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", @@ -23775,6 +24291,12 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -23784,6 +24306,15 @@ "call-bind": "^1.0.2" } }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -23926,25 +24457,25 @@ } }, "jsx-ast-utils": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz", - "integrity": "sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, "requires": { "array-includes": "^3.1.5", - "object.assign": "^4.1.2" + "object.assign": "^4.1.3" } }, "just-diff": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.0.3.tgz", - "integrity": "sha512-a8p80xcpJ6sdurk5PxDKb4mav9MeKjA3zFKZpCWBIfvg8mznfnmb13MKZvlrwJ+Lhis0wM3uGAzE0ArhFHvIcg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.1.1.tgz", + "integrity": "sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ==", "dev": true }, "just-diff-apply": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.3.1.tgz", - "integrity": "sha512-dgFenZnMsc1xGNqgdtgnh7DK+Oy352CE3VZLbzcbQpsBs9iI2K3M0IRrdgREZ72eItTjbl0suRyvKRdVQa9GbA==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.4.1.tgz", + "integrity": "sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g==", "dev": true }, "keytar": { @@ -23972,29 +24503,31 @@ "dev": true }, "lerna": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.1.8.tgz", - "integrity": "sha512-KrpFx2l1x1X7wb9unqRU7OZTaNs5+67VQ1vxf8fIMgdtCAjEqkLxF/F3xLs+KBMws5PV19Q9YtPHn7SiwDl7iQ==", - "dev": true, - "requires": { - "@lerna/add": "5.1.8", - "@lerna/bootstrap": "5.1.8", - "@lerna/changed": "5.1.8", - "@lerna/clean": "5.1.8", - "@lerna/cli": "5.1.8", - "@lerna/create": "5.1.8", - "@lerna/diff": "5.1.8", - "@lerna/exec": "5.1.8", - "@lerna/import": "5.1.8", - "@lerna/info": "5.1.8", - "@lerna/init": "5.1.8", - "@lerna/link": "5.1.8", - "@lerna/list": "5.1.8", - "@lerna/publish": "5.1.8", - "@lerna/run": "5.1.8", - "@lerna/version": "5.1.8", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.5.0.tgz", + "integrity": "sha512-1cZIijUWcI9ZqK+ejj1dBejTOLL64b0pIjYXb9KN8soNIONm/1zbJiSBiAyF4Hd6x4XuIC3kdFx7Ff3Pb9KsYA==", + "dev": true, + "requires": { + "@lerna/add": "5.5.0", + "@lerna/bootstrap": "5.5.0", + "@lerna/changed": "5.5.0", + "@lerna/clean": "5.5.0", + "@lerna/cli": "5.5.0", + "@lerna/create": "5.5.0", + "@lerna/diff": "5.5.0", + "@lerna/exec": "5.5.0", + "@lerna/import": "5.5.0", + "@lerna/info": "5.5.0", + "@lerna/init": "5.5.0", + "@lerna/link": "5.5.0", + "@lerna/list": "5.5.0", + "@lerna/publish": "5.5.0", + "@lerna/run": "5.5.0", + "@lerna/version": "5.5.0", "import-local": "^3.0.2", - "npmlog": "^6.0.2" + "npmlog": "^6.0.2", + "nx": ">=14.6.1 < 16", + "typescript": "^3 || ^4" } }, "leven": { @@ -24014,67 +24547,104 @@ } }, "libnpmaccess": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz", - "integrity": "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz", + "integrity": "sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==", "dev": true, "requires": { "aproba": "^2.0.0", "minipass": "^3.1.1", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0" + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0" }, "dependencies": { - "npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } } } }, "libnpmpublish": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz", - "integrity": "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.5.tgz", + "integrity": "sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg==", "dev": true, "requires": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" + "normalize-package-data": "^4.0.0", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0", + "semver": "^7.3.7", + "ssri": "^9.0.0" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "requires": { - "yallist": "^4.0.0" + "lru-cache": "^7.5.1" + } + }, + "normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" } }, - "npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, "requires": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" } }, "semver": { @@ -24084,6 +24654,17 @@ "dev": true, "requires": { "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } } } @@ -24156,44 +24737,13 @@ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - } + "p-locate": "^5.0.0" } }, "lodash": { @@ -24233,132 +24783,57 @@ } }, "lru-cache": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", - "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", "dev": true }, "lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" } }, "map-obj": { @@ -24389,9 +24864,9 @@ } }, "marked": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.17.tgz", - "integrity": "sha512-Wfk0ATOK5iPxM4ptrORkFemqroz0ZDxp5MWfYA7H/F+wO17NRWV5Ypxi6p3g2Xmw2bKeiYOl6oVnLHKxBA0VhA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", + "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==", "dev": true }, "mdast-util-to-string": { @@ -24424,48 +24899,6 @@ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -24516,6 +24949,15 @@ "p-locate": "^4.1.0" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -24696,15 +25138,15 @@ } }, "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", + "encoding": "^0.1.13", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" } }, "minipass-flush": { @@ -24850,6 +25292,15 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -24880,6 +25331,16 @@ "esprima": "^4.0.0" } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -24916,6 +25377,30 @@ "object-keys": "^1.0.11" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -25020,37 +25505,28 @@ "dev": true }, "msgpackr": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.6.1.tgz", - "integrity": "sha512-Je+xBEfdjtvA4bKaOv8iRhjC8qX2oJwpYH4f7JrG4uMVJVmnmkAT4pjKdbztKprGj3iwjcxPzb5umVZ02Qq3tA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.6.2.tgz", + "integrity": "sha512-bqSQ0DYJbXbrJcrZFmMygUZmqQiDfI2ewFVWcrZY12w5XHWtPuW4WppDT/e63Uu311ajwkRRXSoF0uILroBeTA==", "dev": true, "requires": { "msgpackr-extract": "^2.0.2" } }, "msgpackr-extract": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-2.0.2.tgz", - "integrity": "sha512-coskCeJG2KDny23zWeu+6tNy7BLnAiOGgiwzlgdm4oeSsTpqEJJPguHIuKZcCdB7tzhZbXNYSg6jZAXkZErkJA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-2.1.2.tgz", + "integrity": "sha512-cmrmERQFb19NX2JABOGtrKdHMyI6RUyceaPBQ2iRz9GnDkjBWFjNJC0jyyoOfZl2U/LZE3tQCCQc4dlRyA8mcA==", "dev": true, "optional": true, "requires": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "2.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "2.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "2.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "2.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "2.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "2.0.2", - "node-gyp-build-optional-packages": "5.0.2" - }, - "dependencies": { - "node-gyp-build-optional-packages": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.2.tgz", - "integrity": "sha512-PiN4NWmlQPqvbEFcH/omQsswWQbe5Z9YK/zdB23irp5j2XibaA2IrGvpSWmVVG4qMZdmPdwPctSy4a86rOMn6g==", - "dev": true, - "optional": true - } + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "2.1.2", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "2.1.2", + "@msgpackr-extract/msgpackr-extract-linux-arm": "2.1.2", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "2.1.2", + "@msgpackr-extract/msgpackr-extract-linux-x64": "2.1.2", + "@msgpackr-extract/msgpackr-extract-win32-x64": "2.1.2", + "node-gyp-build-optional-packages": "5.0.3" } }, "multimatch": { @@ -25111,9 +25587,9 @@ "dev": true }, "node-abi": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz", - "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.24.0.tgz", + "integrity": "sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==", "dev": true, "requires": { "semver": "^7.3.5" @@ -25170,42 +25646,18 @@ "dev": true, "requires": { "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } } }, "node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", + "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", "dev": true, "requires": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", + "make-fetch-happen": "^10.0.3", "nopt": "^5.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -25256,9 +25708,9 @@ "dev": true }, "node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "nopt": { @@ -25359,16 +25811,31 @@ "dev": true }, "npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", + "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", "dev": true, "requires": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", + "hosted-git-info": "^3.0.6", + "semver": "^7.0.0", "validate-npm-package-name": "^3.0.0" }, "dependencies": { + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -25386,51 +25853,105 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } } } }, "npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, "requires": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^2.0.0" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } } }, "npm-pick-manifest": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", - "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", + "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", "dev": true, "requires": { "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", + "npm-normalize-package-bin": "^2.0.0", "npm-package-arg": "^9.0.0", "semver": "^7.3.5" }, "dependencies": { - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "requires": { "lru-cache": "^7.5.1" } }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + }, "npm-package-arg": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", @@ -25462,119 +25983,43 @@ } } } - }, - "validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } } } }, "npm-registry-fetch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", - "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, "requires": { - "@npmcli/ci-detect": "^1.0.0", - "lru-cache": "^6.0.0", - "make-fetch-happen": "^8.0.9", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" }, "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-fetch-happen": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", - "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.0.5", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^5.0.0", - "ssri": "^8.0.0" + "lru-cache": "^7.5.1" } }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", "dev": true, "requires": { - "glob": "^7.1.3" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" } }, "semver": { @@ -25584,17 +26029,17 @@ "dev": true, "requires": { "lru-cache": "^6.0.0" - } - }, - "socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } } } @@ -25703,6 +26148,272 @@ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "dev": true }, + "nx": { + "version": "14.6.5", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.6.5.tgz", + "integrity": "sha512-egV8Zrec+0m+27wTENe9W/JKRMkBDx1N0xaFzKjL0WKj5WIe4asao5uwTJEwqi9iQyiijExxUFVU5MNGuF2c+A==", + "dev": true, + "requires": { + "@nrwl/cli": "14.6.5", + "@nrwl/tao": "14.6.5", + "@parcel/watcher": "2.0.4", + "chalk": "4.1.0", + "chokidar": "^3.5.1", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^7.0.2", + "dotenv": "~10.0.0", + "enquirer": "~2.3.6", + "fast-glob": "3.2.7", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^10.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "js-yaml": "4.1.0", + "jsonc-parser": "3.0.0", + "minimatch": "3.0.5", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "semver": "7.3.4", + "string-width": "^4.2.3", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^3.9.0", + "tslib": "^2.3.0", + "v8-compile-cache": "2.3.0", + "yargs": "^17.4.0", + "yargs-parser": "21.0.1" + }, + "dependencies": { + "@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "dev": true, + "requires": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true + } + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -25722,14 +26433,14 @@ "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -25806,6 +26517,17 @@ "mimic-fn": "^2.1.0" } }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -25820,6 +26542,84 @@ "word-wrap": "^1.2.3" } }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "ordered-binary": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.3.0.tgz", @@ -25839,21 +26639,21 @@ "dev": true }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^3.0.2" } }, "p-map": { @@ -25918,9 +26718,9 @@ } }, "pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, "requires": { "@npmcli/git": "^3.0.0", @@ -25946,145 +26746,13 @@ "tar": "^6.1.11" }, "dependencies": { - "@npmcli/run-script": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.5.tgz", - "integrity": "sha512-FyrZkZ+O0bCnQqm+mRb6sKbEJgyJudInwFN84gCcMUcxrWkR15Ags1uOHwnxHYdpj3T5eqrCZNW/Ys20MGTQ6Q==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", - "dev": true, - "requires": { - "minimatch": "^5.0.1" - } - }, - "make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - } - }, - "minimatch": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "node-gyp": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", - "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - } - }, - "normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", "dev": true, "requires": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "lru-cache": "^7.5.1" } }, "npm-package-arg": { @@ -26099,75 +26767,6 @@ "validate-npm-package-name": "^4.0.0" } }, - "npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", - "dev": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - }, - "dependencies": { - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - } - } - }, - "npm-registry-fetch": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", - "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - } - }, - "read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", - "dev": true, - "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" - }, - "dependencies": { - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - } - } - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -26196,35 +26795,6 @@ } } } - }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } } } }, @@ -26378,18 +26948,18 @@ } }, "parse5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", - "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz", + "integrity": "sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==", "dev": true, "requires": { - "entities": "^4.3.0" + "entities": "^4.4.0" }, "dependencies": { "entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true } } @@ -26503,6 +27073,15 @@ "p-locate": "^4.1.0" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -26677,12 +27256,6 @@ "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", "dev": true }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -26755,51 +27328,131 @@ } } }, - "react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", - "dev": true - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "dev": true - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", - "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", - "dev": true - }, - "read-package-json": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz", - "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, + "react-error-overlay": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", + "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", + "dev": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "react-refresh": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", + "dev": true + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz", + "integrity": "sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==", + "dev": true + }, + "read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + } + } + }, "read-package-json-fast": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", @@ -27161,9 +27814,9 @@ } }, "rollup": { - "version": "2.75.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz", - "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==", + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.0.tgz", + "integrity": "sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -27194,20 +27847,12 @@ } }, "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", "dev": true, "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "tslib": "^2.1.0" } }, "safe-buffer": { @@ -27223,9 +27868,9 @@ "dev": true }, "sass": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", - "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "version": "1.54.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.8.tgz", + "integrity": "sha512-ib4JhLRRgbg6QVy6bsv5uJxnJMTS2soVcCp9Y88Extyy13A8vV0G1fAwujOzmNkFQbR3LvedudAMbtuNRPbQww==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -27365,19 +28010,19 @@ "dev": true }, "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", "dev": true, "requires": { - "ip": "^1.1.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" } }, "socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "requires": { "agent-base": "^6.0.2", @@ -27457,9 +28102,9 @@ } }, "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "split": { @@ -27487,9 +28132,9 @@ "dev": true }, "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, "requires": { "minipass": "^3.1.1" @@ -27648,9 +28293,9 @@ } }, "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, "tar": { @@ -27713,9 +28358,9 @@ "dev": true }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -27725,9 +28370,9 @@ }, "dependencies": { "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, "commander": { @@ -27739,16 +28384,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" } }, "text-extensions": { @@ -27810,13 +28455,10 @@ } }, "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true }, "treeverse": { "version": "2.0.0", @@ -27837,16 +28479,113 @@ "dev": true }, "ts-loader": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-7.0.5.tgz", - "integrity": "sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz", + "integrity": "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==", "dev": true, "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", - "semver": "^6.0.0" + "semver": "^7.3.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } } }, "tslib": { @@ -27951,9 +28690,9 @@ "dev": true }, "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true }, "uc.micro": { @@ -27963,9 +28702,9 @@ "dev": true }, "uglify-js": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.2.tgz", - "integrity": "sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", + "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", "dev": true, "optional": true }, @@ -28032,18 +28771,18 @@ } }, "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, "requires": { - "unique-slug": "^2.0.0" + "unique-slug": "^3.0.0" } }, "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -28106,9 +28845,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", + "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -28165,12 +28904,12 @@ } }, "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, "requires": { - "builtins": "^1.0.3" + "builtins": "^5.0.0" } }, "vfile": { @@ -28218,9 +28957,9 @@ } }, "vsce": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.9.2.tgz", - "integrity": "sha512-xyLqL4U82BilUX1t6Ym2opQEa2tLGWYjbgB7+ETeNVXlIJz5sWBJjQJSYJVFOKJSpiOtQclolu88cj7oY6vvPQ==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.11.0.tgz", + "integrity": "sha512-pr9Y0va/HCer0tTifeqaUrK24JJSpRd6oLeF/PY6FtrY41e+lwxiAq6jfMXx4ShAZglYg2rFKoKROwa7E7SEqQ==", "dev": true, "requires": { "azure-devops-node-api": "^11.0.1", @@ -28321,15 +29060,15 @@ "dev": true }, "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -28337,11 +29076,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -28354,7 +29093,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { @@ -28365,9 +29104,9 @@ "dev": true }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, "acorn-import-assertions": { @@ -28376,22 +29115,6 @@ "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "dev": true, "requires": {} - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true } } }, @@ -28432,14 +29155,13 @@ "dev": true }, "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "which": { @@ -28574,15 +29296,13 @@ "dev": true }, "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" } }, "write-json-file": { @@ -28604,6 +29324,18 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } } } }, @@ -28795,12 +29527,64 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -28886,6 +29670,12 @@ "requires": { "buffer-crc32": "~0.2.3" } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index c3df9b061..ff0b990ad 100644 --- a/package.json +++ b/package.json @@ -73,9 +73,9 @@ "rimraf": "^2.6.2", "rollup": "^2.70.1", "sass": "^1.32.4", - "ts-loader": "^7.0.5", - "typedoc": "^0.21.9", - "typescript": "4.3", + "ts-loader": "^9.3.1", + "typedoc": "^0.21.10", + "typescript": "4.4", "unified": "^7.0.2", "vsce": "^2.9.2", "webpack": "^5.52.0", diff --git a/packages/chart-recommender/package-lock.json b/packages/chart-recommender/package-lock.json index 8bfca7b16..905c79c84 100644 --- a/packages/chart-recommender/package-lock.json +++ b/packages/chart-recommender/package-lock.json @@ -9,7 +9,7 @@ "version": "3.2.0", "license": "MIT", "devDependencies": { - "vega": "5.20" + "vega": "5.22.1" } }, "node_modules/@types/estree": { @@ -19,233 +19,265 @@ "dev": true }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "robust-predicates": "^3.0.0" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, "node_modules/node-fetch": { @@ -268,29 +300,12 @@ } } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", "dev": true }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -303,18 +318,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -329,6 +332,12 @@ "topoquantize": "bin/topoquantize" } }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -336,37 +345,37 @@ "dev": true }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -377,12 +386,12 @@ "dev": true }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -399,95 +408,86 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", "dev": true }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dev": true, "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -496,38 +496,38 @@ } }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -544,29 +544,23 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -583,29 +577,29 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -632,77 +626,69 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dev": true, "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==", "dev": true }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -718,12 +704,12 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -766,208 +752,186 @@ "dev": true }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "dev": true }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" } }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "dev": true }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "dev": true }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "requires": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", "dev": true }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "dev": true }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "dev": true }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "robust-predicates": "^3.0.0" } }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -977,23 +941,12 @@ "whatwg-url": "^5.0.0" } }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", "dev": true }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, "rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -1006,12 +959,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, "topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -1019,6 +966,14 @@ "dev": true, "requires": { "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } } }, "tr46": { @@ -1028,37 +983,37 @@ "dev": true }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -1069,12 +1024,12 @@ "dev": true }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -1091,97 +1046,86 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", "dev": true }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dev": true, "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -1190,38 +1134,38 @@ } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -1236,33 +1180,25 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -1279,29 +1215,29 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -1324,80 +1260,72 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dev": true, "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==", "dev": true }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -1413,12 +1341,12 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } diff --git a/packages/chart-recommender/package.json b/packages/chart-recommender/package.json index 8ea02da29..5b79231a1 100644 --- a/packages/chart-recommender/package.json +++ b/packages/chart-recommender/package.json @@ -16,7 +16,7 @@ "@msrvida/sanddance-specs": "^1" }, "devDependencies": { - "vega": "5.20" + "vega": "5.22.1" }, "scripts": { "eslint": "eslint -c ../../.eslintrc.json --fix ./src/**/*.ts*", diff --git a/packages/chart-types/package-lock.json b/packages/chart-types/package-lock.json index 12a6adc27..8f652ec14 100644 --- a/packages/chart-types/package-lock.json +++ b/packages/chart-types/package-lock.json @@ -9,14 +9,35 @@ "version": "1.0.4", "license": "MIT", "dependencies": { - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "node_modules/vega-event-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" + }, + "node_modules/vega-expression": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "dependencies": { + "@types/estree": "^0.0.50", + "vega-util": "^1.16.0" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, @@ -27,11 +48,32 @@ } }, "dependencies": { + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "vega-event-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" + }, + "vega-expression": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "requires": { + "@types/estree": "^0.0.50", + "vega-util": "^1.16.0" + } + }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, diff --git a/packages/chart-types/package.json b/packages/chart-types/package.json index 1c56817c0..2d1bad42c 100644 --- a/packages/chart-types/package.json +++ b/packages/chart-types/package.json @@ -21,6 +21,6 @@ "author": "", "license": "MIT", "dependencies": { - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" } } diff --git a/packages/fluentui-react-cdn-typings/package-lock.json b/packages/fluentui-react-cdn-typings/package-lock.json index 784073a83..96998a8bb 100644 --- a/packages/fluentui-react-cdn-typings/package-lock.json +++ b/packages/fluentui-react-cdn-typings/package-lock.json @@ -16,43 +16,43 @@ } }, "node_modules/@fluentui/date-time-utilities": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.1.tgz", - "integrity": "sha512-i8GXoIbPipug5cGZ4Dei0oXu7L4wia6DGMAzvabvSHwTjprbR5YjRrrr4UVtBr9gNx1v4Iv1yeD3XSc8DI9JDg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.2.tgz", + "integrity": "sha512-u540ACUdnC+Jms1DIHkho80eJmoCg/LtAzR4a/1Tum6PicxWv59UYp9Ba7qFbIw+mrjWnwX/2ZmBpqTy9Rgn7w==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/dom-utilities": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.1.tgz", - "integrity": "sha512-na1+hTRDg2xHSu3Vrr8ITrQpoFChOCSpqTYjLvdRD081p8o61hk9DeaXkUWr8E+2TZ06BXi2t0VyL4wfrYLU8Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.2.tgz", + "integrity": "sha512-puklLc6Jvg279OGagqkSfuHML6ckBhw3gJakdvIZHKeJiduh+34U4Finl3K24yBSXzG2WsN+LwLTd1Vcociy+g==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/font-icons-mdl2": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.3.tgz", - "integrity": "sha512-YKyCTVvV5qpSOS9EsulA+QYLyUEw7QhLzmcBWC4USu0WPhSy/cOfUUvemRl2JSsxErfuOM50OI80RKfuqNwsTA==", + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.13.tgz", + "integrity": "sha512-rXJpRKxHg68zCKTrcmouklGpE/laXlTQaLyBuft8EcPczZX3aupYPZda9sp+Kknolmd3Lvypn2D9Vf+McJDtwg==", "dependencies": { - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "node_modules/@fluentui/foundation-legacy": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.10.tgz", - "integrity": "sha512-/ku+mSLTEIKf/HGavt9k+/njgAXGHXu4hoxRYRHbYr1O9hUe50cm5DctPQg+z/YDPNzsb1ltSmNqgWPvBOSW6A==", + "version": "8.2.20", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.20.tgz", + "integrity": "sha512-iyJSr5Y/yYt0x9yBLP+aIy5U9tiDlgbxJZo6enNwFo0zEuBeWg/2L2IgAUzAwJB2vb73oQBlQt8In602R0Vj8w==", "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -61,39 +61,39 @@ } }, "node_modules/@fluentui/keyboard-key": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.1.tgz", - "integrity": "sha512-8WkNPh0tnzrrZYs19qN8Zavaebz9FHyTFXKTv0QJ55rZ7uQfAV7VHxS/74aUP4bqeRWJtzaOJKUxkjEAPcDbug==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.2.tgz", + "integrity": "sha512-6WdMrnFpY94uWefUGGRqO4WiS6R+Kso6/FR95SxXMuS6kfnjGJCHzywFGZcN5OU1fX067Zna4aPQ/nDwYMgBPw==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/merge-styles": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.2.tgz", - "integrity": "sha512-ax8izl48JJuymEuvJzvNH22GHmpPEWLP+h4doyFZ/9IhR9AEycNc2rGBthZ5FiuktnFgusNag1AHr/WCj5pttw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.3.tgz", + "integrity": "sha512-bHWftN3zTp1bbBfmAEH8YK9UURWj2mffw7b7VaW2Og1qxwv3GMSza1cyv/d3EVqpMJ8AVwFv3mbi9p1ieMN9mw==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/react": { - "version": "8.81.1", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.81.1.tgz", - "integrity": "sha512-iTdfjWMsMwdvc2ZRQBg/nBUhX0mmttjH0pbMZ8RgcMLuSDauQnDwMN3gEWRZ+fInUGcqTE1hzEdoLS75Dl3bAg==", + "version": "8.94.2", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.94.2.tgz", + "integrity": "sha512-G0fiTdq4vGCm+kSQh3hQ2szG/r2wXmRsD/iNq1ZoWSKoyKViP/yFmothhUgkarFbydnWbDzb+iYZQ5+8J8wgTA==", "dependencies": { - "@fluentui/date-time-utilities": "^8.5.1", - "@fluentui/font-icons-mdl2": "^8.4.3", - "@fluentui/foundation-legacy": "^8.2.10", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/react-focus": "^8.7.3", - "@fluentui/react-hooks": "^8.6.1", + "@fluentui/date-time-utilities": "^8.5.2", + "@fluentui/font-icons-mdl2": "^8.4.13", + "@fluentui/foundation-legacy": "^8.2.20", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/react-focus": "^8.8.5", + "@fluentui/react-hooks": "^8.6.11", "@fluentui/react-portal-compat-context": "^9.0.1", - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" }, @@ -105,15 +105,15 @@ } }, "node_modules/@fluentui/react-focus": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.7.3.tgz", - "integrity": "sha512-d/AwXzcPMoiPpzbpkHpfTyDcvYvga2DWNYq1Rh+QJsAGzN34bimu5xSxE21mbeXyz+TYx7yglElGp7GlT33s3Q==", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.8.5.tgz", + "integrity": "sha512-+BNjLHKpA0IqUToY9MMARGpYg3ngBmW+1KhJeVxCUnAESNMwnzJ6hx/3MOYUA/FPbYfBvs8QnpTZrrOd7sLG/A==", "dependencies": { - "@fluentui/keyboard-key": "^0.4.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/keyboard-key": "^0.4.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -122,13 +122,13 @@ } }, "node_modules/@fluentui/react-hooks": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.1.tgz", - "integrity": "sha512-t9l+O+ZjTiGSuKQ9SxqRRo50C1h69jZFzb+s/vc0vBtvsIoYfR+Jj8qH3hxtkhv/iC+SCj1dgDCEJwGyH7pf3Q==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.11.tgz", + "integrity": "sha512-qQAg/Hqchz0BGL1KJhg211uhhBDxF0bvMCdVKVoeeJNj4q3Cdvam87zHi7/W5gP8i6jgCILr7MrV3dH9umA/Sw==", "dependencies": { - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -149,11 +149,11 @@ } }, "node_modules/@fluentui/react-window-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.1.tgz", - "integrity": "sha512-Y0j+lAYKeD/qswzFZWPkHmvtBlRS2WPJIkpyGvfBVZaCeq3DGKRppoOCOmED762bKOXzM/G/ZNEcBa7CY1gkYw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.2.tgz", + "integrity": "sha512-/1uQ01HqGRpUOMozUy1FYmxp6blZZvtKN50rqxnQJr8O1bcpg8lJzhq064E8EjOXfdNh47zKSloP4ebbDI5vrw==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" }, "peerDependencies": { @@ -162,34 +162,34 @@ } }, "node_modules/@fluentui/set-version": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.1.tgz", - "integrity": "sha512-SZMP2P7RSUuVHYWIBcnlxYruvchlnoqensCvoaGeiH0FisO7etwJdFwKNegV7WEA9uS5ZOK3qVmyvD71DxaSng==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.2.tgz", + "integrity": "sha512-Vg20KZ0ufgWjxx6GFbqC5wiVxXZDUWgNT0r0By/Eyj4bUSb1jG6lmf5z1oY1dUX0YS6Cp5e6GnvbNdXg5E7orA==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/style-utilities": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.2.tgz", - "integrity": "sha512-sDNsXUXdk4qAllADH46o0Fq1VOgWCDS+J/t3UFc6DA4a0R3J/M0o5COAh+S4/kLkJoKBQ+T+TqZJmA+Cj+hlCA==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.12.tgz", + "integrity": "sha512-Ayxyo5brZxNI3CK4la+esJ5yDUQFAD26+BqjbIZvXemKq6ZsZDb2875H//saSVHc+dRq8R6J80A1GGV0fJpIEA==", "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "node_modules/@fluentui/theme": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.7.tgz", - "integrity": "sha512-uSvUkGLFcIjVuYPtwjdgnUd7Fqd6TXakM1Gh0xqPbBPm4Kiig7mpRDfMUneAI8t0j5otEeqeNokoLs5rMNGOBg==", + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.16.tgz", + "integrity": "sha512-Ml2oMVvoOxRYD9HPjEkGCWvnQnzDyrufa5k8bPYN8xjJbbEGtDjjswcfrSVfHx1fCR1CFgybHR8jj3pvXRTXUQ==", "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -198,13 +198,13 @@ } }, "node_modules/@fluentui/utilities": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.9.0.tgz", - "integrity": "sha512-fK3GjWygRhKDuVxIAMqcfP0UZGhnifygzhrZDIanKc4/+9CoIY/BVtHryRF+zF0sGEXF5kDarsMsLAeCnB2YhA==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.13.1.tgz", + "integrity": "sha512-BpLa0lSYnZ3YoTGB6T/pQ0vUVq0PEr6gF+daptyeiLUkEXVoy3HYgX6ZanA62wJ89ycIwI8A+1aUEbmtDMupYg==", "dependencies": { - "@fluentui/dom-utilities": "^2.2.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", + "@fluentui/dom-utilities": "^2.2.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" }, "peerDependencies": { @@ -213,9 +213,9 @@ } }, "node_modules/@microsoft/load-themed-styles": { - "version": "1.10.281", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.281.tgz", - "integrity": "sha512-91uZ4u6p5ZClHQE2RpJKTZALeCl1G9cZB47SPivfPrRtjrhqCfS3gC3zNoikUhpwccWjfSN50zjm289Wxkf/8Q==" + "version": "1.10.293", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.293.tgz", + "integrity": "sha512-zSsmz4VKMTje73JZ3Rsv2oIqyu1Yh9oPmrAbUbCloMeFlKtvqHVgMfjXrbicqbiImcTeNfJWFjYFbLRkrsstYA==" }, "node_modules/@types/prop-types": { "version": "15.7.5", @@ -224,9 +224,9 @@ "peer": true }, "node_modules/@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "peer": true, "dependencies": { "@types/prop-types": "*", @@ -327,105 +327,105 @@ }, "dependencies": { "@fluentui/date-time-utilities": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.1.tgz", - "integrity": "sha512-i8GXoIbPipug5cGZ4Dei0oXu7L4wia6DGMAzvabvSHwTjprbR5YjRrrr4UVtBr9gNx1v4Iv1yeD3XSc8DI9JDg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.2.tgz", + "integrity": "sha512-u540ACUdnC+Jms1DIHkho80eJmoCg/LtAzR4a/1Tum6PicxWv59UYp9Ba7qFbIw+mrjWnwX/2ZmBpqTy9Rgn7w==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/dom-utilities": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.1.tgz", - "integrity": "sha512-na1+hTRDg2xHSu3Vrr8ITrQpoFChOCSpqTYjLvdRD081p8o61hk9DeaXkUWr8E+2TZ06BXi2t0VyL4wfrYLU8Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.2.tgz", + "integrity": "sha512-puklLc6Jvg279OGagqkSfuHML6ckBhw3gJakdvIZHKeJiduh+34U4Finl3K24yBSXzG2WsN+LwLTd1Vcociy+g==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/font-icons-mdl2": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.3.tgz", - "integrity": "sha512-YKyCTVvV5qpSOS9EsulA+QYLyUEw7QhLzmcBWC4USu0WPhSy/cOfUUvemRl2JSsxErfuOM50OI80RKfuqNwsTA==", + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.13.tgz", + "integrity": "sha512-rXJpRKxHg68zCKTrcmouklGpE/laXlTQaLyBuft8EcPczZX3aupYPZda9sp+Kknolmd3Lvypn2D9Vf+McJDtwg==", "requires": { - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/foundation-legacy": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.10.tgz", - "integrity": "sha512-/ku+mSLTEIKf/HGavt9k+/njgAXGHXu4hoxRYRHbYr1O9hUe50cm5DctPQg+z/YDPNzsb1ltSmNqgWPvBOSW6A==", + "version": "8.2.20", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.20.tgz", + "integrity": "sha512-iyJSr5Y/yYt0x9yBLP+aIy5U9tiDlgbxJZo6enNwFo0zEuBeWg/2L2IgAUzAwJB2vb73oQBlQt8In602R0Vj8w==", "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/keyboard-key": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.1.tgz", - "integrity": "sha512-8WkNPh0tnzrrZYs19qN8Zavaebz9FHyTFXKTv0QJ55rZ7uQfAV7VHxS/74aUP4bqeRWJtzaOJKUxkjEAPcDbug==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.2.tgz", + "integrity": "sha512-6WdMrnFpY94uWefUGGRqO4WiS6R+Kso6/FR95SxXMuS6kfnjGJCHzywFGZcN5OU1fX067Zna4aPQ/nDwYMgBPw==", "requires": { "tslib": "^2.1.0" } }, "@fluentui/merge-styles": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.2.tgz", - "integrity": "sha512-ax8izl48JJuymEuvJzvNH22GHmpPEWLP+h4doyFZ/9IhR9AEycNc2rGBthZ5FiuktnFgusNag1AHr/WCj5pttw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.3.tgz", + "integrity": "sha512-bHWftN3zTp1bbBfmAEH8YK9UURWj2mffw7b7VaW2Og1qxwv3GMSza1cyv/d3EVqpMJ8AVwFv3mbi9p1ieMN9mw==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/react": { - "version": "8.81.1", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.81.1.tgz", - "integrity": "sha512-iTdfjWMsMwdvc2ZRQBg/nBUhX0mmttjH0pbMZ8RgcMLuSDauQnDwMN3gEWRZ+fInUGcqTE1hzEdoLS75Dl3bAg==", + "version": "8.94.2", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.94.2.tgz", + "integrity": "sha512-G0fiTdq4vGCm+kSQh3hQ2szG/r2wXmRsD/iNq1ZoWSKoyKViP/yFmothhUgkarFbydnWbDzb+iYZQ5+8J8wgTA==", "requires": { - "@fluentui/date-time-utilities": "^8.5.1", - "@fluentui/font-icons-mdl2": "^8.4.3", - "@fluentui/foundation-legacy": "^8.2.10", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/react-focus": "^8.7.3", - "@fluentui/react-hooks": "^8.6.1", + "@fluentui/date-time-utilities": "^8.5.2", + "@fluentui/font-icons-mdl2": "^8.4.13", + "@fluentui/foundation-legacy": "^8.2.20", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/react-focus": "^8.8.5", + "@fluentui/react-hooks": "^8.6.11", "@fluentui/react-portal-compat-context": "^9.0.1", - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "@fluentui/react-focus": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.7.3.tgz", - "integrity": "sha512-d/AwXzcPMoiPpzbpkHpfTyDcvYvga2DWNYq1Rh+QJsAGzN34bimu5xSxE21mbeXyz+TYx7yglElGp7GlT33s3Q==", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.8.5.tgz", + "integrity": "sha512-+BNjLHKpA0IqUToY9MMARGpYg3ngBmW+1KhJeVxCUnAESNMwnzJ6hx/3MOYUA/FPbYfBvs8QnpTZrrOd7sLG/A==", "requires": { - "@fluentui/keyboard-key": "^0.4.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/keyboard-key": "^0.4.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/react-hooks": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.1.tgz", - "integrity": "sha512-t9l+O+ZjTiGSuKQ9SxqRRo50C1h69jZFzb+s/vc0vBtvsIoYfR+Jj8qH3hxtkhv/iC+SCj1dgDCEJwGyH7pf3Q==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.11.tgz", + "integrity": "sha512-qQAg/Hqchz0BGL1KJhg211uhhBDxF0bvMCdVKVoeeJNj4q3Cdvam87zHi7/W5gP8i6jgCILr7MrV3dH9umA/Sw==", "requires": { - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, @@ -438,61 +438,61 @@ } }, "@fluentui/react-window-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.1.tgz", - "integrity": "sha512-Y0j+lAYKeD/qswzFZWPkHmvtBlRS2WPJIkpyGvfBVZaCeq3DGKRppoOCOmED762bKOXzM/G/ZNEcBa7CY1gkYw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.2.tgz", + "integrity": "sha512-/1uQ01HqGRpUOMozUy1FYmxp6blZZvtKN50rqxnQJr8O1bcpg8lJzhq064E8EjOXfdNh47zKSloP4ebbDI5vrw==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/set-version": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.1.tgz", - "integrity": "sha512-SZMP2P7RSUuVHYWIBcnlxYruvchlnoqensCvoaGeiH0FisO7etwJdFwKNegV7WEA9uS5ZOK3qVmyvD71DxaSng==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.2.tgz", + "integrity": "sha512-Vg20KZ0ufgWjxx6GFbqC5wiVxXZDUWgNT0r0By/Eyj4bUSb1jG6lmf5z1oY1dUX0YS6Cp5e6GnvbNdXg5E7orA==", "requires": { "tslib": "^2.1.0" } }, "@fluentui/style-utilities": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.2.tgz", - "integrity": "sha512-sDNsXUXdk4qAllADH46o0Fq1VOgWCDS+J/t3UFc6DA4a0R3J/M0o5COAh+S4/kLkJoKBQ+T+TqZJmA+Cj+hlCA==", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.12.tgz", + "integrity": "sha512-Ayxyo5brZxNI3CK4la+esJ5yDUQFAD26+BqjbIZvXemKq6ZsZDb2875H//saSVHc+dRq8R6J80A1GGV0fJpIEA==", "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "@fluentui/theme": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.7.tgz", - "integrity": "sha512-uSvUkGLFcIjVuYPtwjdgnUd7Fqd6TXakM1Gh0xqPbBPm4Kiig7mpRDfMUneAI8t0j5otEeqeNokoLs5rMNGOBg==", + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.16.tgz", + "integrity": "sha512-Ml2oMVvoOxRYD9HPjEkGCWvnQnzDyrufa5k8bPYN8xjJbbEGtDjjswcfrSVfHx1fCR1CFgybHR8jj3pvXRTXUQ==", "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/utilities": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.9.0.tgz", - "integrity": "sha512-fK3GjWygRhKDuVxIAMqcfP0UZGhnifygzhrZDIanKc4/+9CoIY/BVtHryRF+zF0sGEXF5kDarsMsLAeCnB2YhA==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.13.1.tgz", + "integrity": "sha512-BpLa0lSYnZ3YoTGB6T/pQ0vUVq0PEr6gF+daptyeiLUkEXVoy3HYgX6ZanA62wJ89ycIwI8A+1aUEbmtDMupYg==", "requires": { - "@fluentui/dom-utilities": "^2.2.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", + "@fluentui/dom-utilities": "^2.2.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@microsoft/load-themed-styles": { - "version": "1.10.281", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.281.tgz", - "integrity": "sha512-91uZ4u6p5ZClHQE2RpJKTZALeCl1G9cZB47SPivfPrRtjrhqCfS3gC3zNoikUhpwccWjfSN50zjm289Wxkf/8Q==" + "version": "1.10.293", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.293.tgz", + "integrity": "sha512-zSsmz4VKMTje73JZ3Rsv2oIqyu1Yh9oPmrAbUbCloMeFlKtvqHVgMfjXrbicqbiImcTeNfJWFjYFbLRkrsstYA==" }, "@types/prop-types": { "version": "15.7.5", @@ -501,9 +501,9 @@ "peer": true }, "@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "peer": true, "requires": { "@types/prop-types": "*", diff --git a/packages/powerbi/package-lock.json b/packages/powerbi/package-lock.json index 304c6a28e..daf83017e 100644 --- a/packages/powerbi/package-lock.json +++ b/packages/powerbi/package-lock.json @@ -16,7 +16,7 @@ "react": ">=16.8.0 <18.0.0", "react-dom": ">=16.8.0 <18.0.0", "regenerator-runtime": "^0.13.3", - "vega": "5.20" + "vega": "5.22.1" }, "devDependencies": { "@types/react": ">=16.8.0 <18.0.0", @@ -124,9 +124,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -135,9 +135,9 @@ } }, "node_modules/@babel/runtime-corejs2": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.18.6.tgz", - "integrity": "sha512-bTfcOSG6AHGVCd37zqoBax2e6r4Gy+q3sW2BgLo3h63NdU30C2AKXW0swyQsX/Ik+Zd6eVKQ9TTBKJ9tZQgWig==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.19.0.tgz", + "integrity": "sha512-lCMc3VAOo0GQ7Iqv8c9YaAd8GCC7GtlI7F7ocFaIppIaP0Oss9zsh5Gw36bF9LgDzQWdt06OcZzvZdzMtGdnGA==", "dependencies": { "core-js": "^2.6.12", "regenerator-runtime": "^0.13.4" @@ -154,43 +154,43 @@ "hasInstallScript": true }, "node_modules/@fluentui/date-time-utilities": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.1.tgz", - "integrity": "sha512-i8GXoIbPipug5cGZ4Dei0oXu7L4wia6DGMAzvabvSHwTjprbR5YjRrrr4UVtBr9gNx1v4Iv1yeD3XSc8DI9JDg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.2.tgz", + "integrity": "sha512-u540ACUdnC+Jms1DIHkho80eJmoCg/LtAzR4a/1Tum6PicxWv59UYp9Ba7qFbIw+mrjWnwX/2ZmBpqTy9Rgn7w==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/dom-utilities": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.1.tgz", - "integrity": "sha512-na1+hTRDg2xHSu3Vrr8ITrQpoFChOCSpqTYjLvdRD081p8o61hk9DeaXkUWr8E+2TZ06BXi2t0VyL4wfrYLU8Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.2.tgz", + "integrity": "sha512-puklLc6Jvg279OGagqkSfuHML6ckBhw3gJakdvIZHKeJiduh+34U4Finl3K24yBSXzG2WsN+LwLTd1Vcociy+g==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/font-icons-mdl2": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.3.tgz", - "integrity": "sha512-YKyCTVvV5qpSOS9EsulA+QYLyUEw7QhLzmcBWC4USu0WPhSy/cOfUUvemRl2JSsxErfuOM50OI80RKfuqNwsTA==", + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.13.tgz", + "integrity": "sha512-rXJpRKxHg68zCKTrcmouklGpE/laXlTQaLyBuft8EcPczZX3aupYPZda9sp+Kknolmd3Lvypn2D9Vf+McJDtwg==", "dependencies": { - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "node_modules/@fluentui/foundation-legacy": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.10.tgz", - "integrity": "sha512-/ku+mSLTEIKf/HGavt9k+/njgAXGHXu4hoxRYRHbYr1O9hUe50cm5DctPQg+z/YDPNzsb1ltSmNqgWPvBOSW6A==", - "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.2.20", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.20.tgz", + "integrity": "sha512-iyJSr5Y/yYt0x9yBLP+aIy5U9tiDlgbxJZo6enNwFo0zEuBeWg/2L2IgAUzAwJB2vb73oQBlQt8In602R0Vj8w==", + "dependencies": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -199,39 +199,39 @@ } }, "node_modules/@fluentui/keyboard-key": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.1.tgz", - "integrity": "sha512-8WkNPh0tnzrrZYs19qN8Zavaebz9FHyTFXKTv0QJ55rZ7uQfAV7VHxS/74aUP4bqeRWJtzaOJKUxkjEAPcDbug==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.2.tgz", + "integrity": "sha512-6WdMrnFpY94uWefUGGRqO4WiS6R+Kso6/FR95SxXMuS6kfnjGJCHzywFGZcN5OU1fX067Zna4aPQ/nDwYMgBPw==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/merge-styles": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.2.tgz", - "integrity": "sha512-ax8izl48JJuymEuvJzvNH22GHmpPEWLP+h4doyFZ/9IhR9AEycNc2rGBthZ5FiuktnFgusNag1AHr/WCj5pttw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.3.tgz", + "integrity": "sha512-bHWftN3zTp1bbBfmAEH8YK9UURWj2mffw7b7VaW2Og1qxwv3GMSza1cyv/d3EVqpMJ8AVwFv3mbi9p1ieMN9mw==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/react": { - "version": "8.81.1", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.81.1.tgz", - "integrity": "sha512-iTdfjWMsMwdvc2ZRQBg/nBUhX0mmttjH0pbMZ8RgcMLuSDauQnDwMN3gEWRZ+fInUGcqTE1hzEdoLS75Dl3bAg==", - "dependencies": { - "@fluentui/date-time-utilities": "^8.5.1", - "@fluentui/font-icons-mdl2": "^8.4.3", - "@fluentui/foundation-legacy": "^8.2.10", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/react-focus": "^8.7.3", - "@fluentui/react-hooks": "^8.6.1", + "version": "8.94.2", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.94.2.tgz", + "integrity": "sha512-G0fiTdq4vGCm+kSQh3hQ2szG/r2wXmRsD/iNq1ZoWSKoyKViP/yFmothhUgkarFbydnWbDzb+iYZQ5+8J8wgTA==", + "dependencies": { + "@fluentui/date-time-utilities": "^8.5.2", + "@fluentui/font-icons-mdl2": "^8.4.13", + "@fluentui/foundation-legacy": "^8.2.20", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/react-focus": "^8.8.5", + "@fluentui/react-hooks": "^8.6.11", "@fluentui/react-portal-compat-context": "^9.0.1", - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" }, @@ -243,15 +243,15 @@ } }, "node_modules/@fluentui/react-focus": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.7.3.tgz", - "integrity": "sha512-d/AwXzcPMoiPpzbpkHpfTyDcvYvga2DWNYq1Rh+QJsAGzN34bimu5xSxE21mbeXyz+TYx7yglElGp7GlT33s3Q==", - "dependencies": { - "@fluentui/keyboard-key": "^0.4.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.8.5.tgz", + "integrity": "sha512-+BNjLHKpA0IqUToY9MMARGpYg3ngBmW+1KhJeVxCUnAESNMwnzJ6hx/3MOYUA/FPbYfBvs8QnpTZrrOd7sLG/A==", + "dependencies": { + "@fluentui/keyboard-key": "^0.4.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -260,13 +260,13 @@ } }, "node_modules/@fluentui/react-hooks": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.1.tgz", - "integrity": "sha512-t9l+O+ZjTiGSuKQ9SxqRRo50C1h69jZFzb+s/vc0vBtvsIoYfR+Jj8qH3hxtkhv/iC+SCj1dgDCEJwGyH7pf3Q==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.11.tgz", + "integrity": "sha512-qQAg/Hqchz0BGL1KJhg211uhhBDxF0bvMCdVKVoeeJNj4q3Cdvam87zHi7/W5gP8i6jgCILr7MrV3dH9umA/Sw==", "dependencies": { - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -287,11 +287,11 @@ } }, "node_modules/@fluentui/react-window-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.1.tgz", - "integrity": "sha512-Y0j+lAYKeD/qswzFZWPkHmvtBlRS2WPJIkpyGvfBVZaCeq3DGKRppoOCOmED762bKOXzM/G/ZNEcBa7CY1gkYw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.2.tgz", + "integrity": "sha512-/1uQ01HqGRpUOMozUy1FYmxp6blZZvtKN50rqxnQJr8O1bcpg8lJzhq064E8EjOXfdNh47zKSloP4ebbDI5vrw==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" }, "peerDependencies": { @@ -300,34 +300,34 @@ } }, "node_modules/@fluentui/set-version": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.1.tgz", - "integrity": "sha512-SZMP2P7RSUuVHYWIBcnlxYruvchlnoqensCvoaGeiH0FisO7etwJdFwKNegV7WEA9uS5ZOK3qVmyvD71DxaSng==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.2.tgz", + "integrity": "sha512-Vg20KZ0ufgWjxx6GFbqC5wiVxXZDUWgNT0r0By/Eyj4bUSb1jG6lmf5z1oY1dUX0YS6Cp5e6GnvbNdXg5E7orA==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/style-utilities": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.2.tgz", - "integrity": "sha512-sDNsXUXdk4qAllADH46o0Fq1VOgWCDS+J/t3UFc6DA4a0R3J/M0o5COAh+S4/kLkJoKBQ+T+TqZJmA+Cj+hlCA==", - "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.12.tgz", + "integrity": "sha512-Ayxyo5brZxNI3CK4la+esJ5yDUQFAD26+BqjbIZvXemKq6ZsZDb2875H//saSVHc+dRq8R6J80A1GGV0fJpIEA==", + "dependencies": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "node_modules/@fluentui/theme": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.7.tgz", - "integrity": "sha512-uSvUkGLFcIjVuYPtwjdgnUd7Fqd6TXakM1Gh0xqPbBPm4Kiig7mpRDfMUneAI8t0j5otEeqeNokoLs5rMNGOBg==", + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.16.tgz", + "integrity": "sha512-Ml2oMVvoOxRYD9HPjEkGCWvnQnzDyrufa5k8bPYN8xjJbbEGtDjjswcfrSVfHx1fCR1CFgybHR8jj3pvXRTXUQ==", "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -336,13 +336,13 @@ } }, "node_modules/@fluentui/utilities": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.9.0.tgz", - "integrity": "sha512-fK3GjWygRhKDuVxIAMqcfP0UZGhnifygzhrZDIanKc4/+9CoIY/BVtHryRF+zF0sGEXF5kDarsMsLAeCnB2YhA==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.13.1.tgz", + "integrity": "sha512-BpLa0lSYnZ3YoTGB6T/pQ0vUVq0PEr6gF+daptyeiLUkEXVoy3HYgX6ZanA62wJ89ycIwI8A+1aUEbmtDMupYg==", "dependencies": { - "@fluentui/dom-utilities": "^2.2.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", + "@fluentui/dom-utilities": "^2.2.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" }, "peerDependencies": { @@ -399,9 +399,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -415,9 +415,9 @@ "dev": true }, "node_modules/@microsoft/load-themed-styles": { - "version": "1.10.281", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.281.tgz", - "integrity": "sha512-91uZ4u6p5ZClHQE2RpJKTZALeCl1G9cZB47SPivfPrRtjrhqCfS3gC3zNoikUhpwccWjfSN50zjm289Wxkf/8Q==" + "version": "1.10.293", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.293.tgz", + "integrity": "sha512-zSsmz4VKMTje73JZ3Rsv2oIqyu1Yh9oPmrAbUbCloMeFlKtvqHVgMfjXrbicqbiImcTeNfJWFjYFbLRkrsstYA==" }, "node_modules/@polka/url": { "version": "1.0.0-next.21", @@ -464,9 +464,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, "dependencies": { "@types/estree": "*", @@ -484,10 +484,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "node_modules/@types/express": { "version": "4.17.13", @@ -502,9 +501,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -528,15 +527,15 @@ "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "node_modules/@types/node": { - "version": "18.0.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.5.tgz", - "integrity": "sha512-En7tneq+j0qAiVwysBD79y86MT3ModuoIJbe7JXp+sb5UAjInSShmK3nXXMioBzfF7rXC12hv12d4IyCVwN4dA==", + "version": "18.7.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.15.tgz", + "integrity": "sha512-XnjpaI8Bgc3eBag2Aw4t2Uj/49lLBSStHWfqKvIuXD7FIrZyMLWp8KuAFHAqxMZYTF9l08N1ctUn9YNybZJVmQ==", "dev": true }, "node_modules/@types/prop-types": { @@ -557,9 +556,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -595,12 +594,12 @@ } }, "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "dependencies": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -794,9 +793,9 @@ } }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1102,10 +1101,22 @@ "node": ">= 0.8" } }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", "dev": true, "dependencies": { "array-flatten": "^2.1.2", @@ -1216,9 +1227,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "funding": [ { @@ -1231,10 +1242,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" + "update-browserslist-db": "^1.0.5" }, "bin": { "browserslist": "cli.js" @@ -1317,9 +1328,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001367", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz", - "integrity": "sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw==", + "version": "1.0.30001390", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz", + "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==", "dev": true, "funding": [ { @@ -1679,166 +1690,225 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dsv/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, "node_modules/debug": { "version": "2.6.9", @@ -1887,9 +1957,12 @@ } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } }, "node_modules/depd": { "version": "2.0.0", @@ -1995,9 +2068,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.191", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.191.tgz", - "integrity": "sha512-MeEaiuoSFh4G+rrN+Ilm1KJr8pTTZloeLurcZ+PRcthvdK1gWThje+E6baL7/7LoNctrzCncavAG/j/vpES9jg==", + "version": "1.4.243", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.243.tgz", + "integrity": "sha512-BgLD2gBX43OSXwlT01oYRRD5NIB4n3okTRxkzEAC6G0SZG4TTlyrWMjbOo0fajCwqwpRtMHXQNMjtRN6qpNtfw==", "dev": true }, "node_modules/elliptic": { @@ -2066,16 +2139,16 @@ } }, "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", + "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", + "get-intrinsic": "^1.1.2", "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", @@ -2087,9 +2160,9 @@ "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", + "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", @@ -2486,7 +2559,8 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -2626,6 +2700,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -2855,11 +2930,11 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -2947,9 +3022,12 @@ } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } }, "node_modules/ipaddr.js": { "version": "2.0.1", @@ -3029,9 +3107,10 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -3390,9 +3469,9 @@ } }, "node_modules/jszip": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.0.tgz", - "integrity": "sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "dependencies": { "lie": "~3.3.0", @@ -3949,14 +4028,14 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -4117,7 +4196,8 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -4170,9 +4250,9 @@ } }, "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "dev": true, "funding": [ { @@ -4344,19 +4424,6 @@ "node": ">=12.0.0" } }, - "node_modules/powerbi-visuals-tools/node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/powerbi-visuals-utils-dataviewutils": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/powerbi-visuals-utils-dataviewutils/-/powerbi-visuals-utils-dataviewutils-2.4.1.tgz", @@ -4579,6 +4646,18 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -4671,6 +4750,7 @@ "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -4717,6 +4797,11 @@ "inherits": "^2.0.1" } }, + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -4797,9 +4882,9 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "dependencies": { "node-forge": "^1" @@ -5248,6 +5333,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -5265,9 +5351,9 @@ } }, "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -5283,16 +5369,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "engines": { "node": ">= 10.13.0" @@ -5615,11 +5701,10 @@ } }, "node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5662,9 +5747,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", + "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", "dev": true, "funding": [ { @@ -5760,36 +5845,36 @@ } }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -5799,11 +5884,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -5819,92 +5904,79 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-functions/node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -5913,35 +5985,35 @@ } }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -5957,26 +6029,21 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -5992,27 +6059,27 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", - "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", + "dependencies": { + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -6026,11 +6093,6 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-selections/node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, "node_modules/vega-selections/node_modules/d3-array": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", @@ -6042,70 +6104,63 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -6120,11 +6175,11 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -6175,9 +6230,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -6185,11 +6240,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -6202,7 +6257,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "bin": { @@ -6346,9 +6401,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -6484,6 +6539,12 @@ "source-map": "~0.6.1" } }, + "node_modules/webpack/node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, "node_modules/webpack/node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", @@ -6698,17 +6759,17 @@ } }, "@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs2": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.18.6.tgz", - "integrity": "sha512-bTfcOSG6AHGVCd37zqoBax2e6r4Gy+q3sW2BgLo3h63NdU30C2AKXW0swyQsX/Ik+Zd6eVKQ9TTBKJ9tZQgWig==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.19.0.tgz", + "integrity": "sha512-lCMc3VAOo0GQ7Iqv8c9YaAd8GCC7GtlI7F7ocFaIppIaP0Oss9zsh5Gw36bF9LgDzQWdt06OcZzvZdzMtGdnGA==", "requires": { "core-js": "^2.6.12", "regenerator-runtime": "^0.13.4" @@ -6722,105 +6783,105 @@ } }, "@fluentui/date-time-utilities": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.1.tgz", - "integrity": "sha512-i8GXoIbPipug5cGZ4Dei0oXu7L4wia6DGMAzvabvSHwTjprbR5YjRrrr4UVtBr9gNx1v4Iv1yeD3XSc8DI9JDg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.2.tgz", + "integrity": "sha512-u540ACUdnC+Jms1DIHkho80eJmoCg/LtAzR4a/1Tum6PicxWv59UYp9Ba7qFbIw+mrjWnwX/2ZmBpqTy9Rgn7w==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/dom-utilities": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.1.tgz", - "integrity": "sha512-na1+hTRDg2xHSu3Vrr8ITrQpoFChOCSpqTYjLvdRD081p8o61hk9DeaXkUWr8E+2TZ06BXi2t0VyL4wfrYLU8Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.2.tgz", + "integrity": "sha512-puklLc6Jvg279OGagqkSfuHML6ckBhw3gJakdvIZHKeJiduh+34U4Finl3K24yBSXzG2WsN+LwLTd1Vcociy+g==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/font-icons-mdl2": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.3.tgz", - "integrity": "sha512-YKyCTVvV5qpSOS9EsulA+QYLyUEw7QhLzmcBWC4USu0WPhSy/cOfUUvemRl2JSsxErfuOM50OI80RKfuqNwsTA==", + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.13.tgz", + "integrity": "sha512-rXJpRKxHg68zCKTrcmouklGpE/laXlTQaLyBuft8EcPczZX3aupYPZda9sp+Kknolmd3Lvypn2D9Vf+McJDtwg==", "requires": { - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/foundation-legacy": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.10.tgz", - "integrity": "sha512-/ku+mSLTEIKf/HGavt9k+/njgAXGHXu4hoxRYRHbYr1O9hUe50cm5DctPQg+z/YDPNzsb1ltSmNqgWPvBOSW6A==", - "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.2.20", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.20.tgz", + "integrity": "sha512-iyJSr5Y/yYt0x9yBLP+aIy5U9tiDlgbxJZo6enNwFo0zEuBeWg/2L2IgAUzAwJB2vb73oQBlQt8In602R0Vj8w==", + "requires": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/keyboard-key": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.1.tgz", - "integrity": "sha512-8WkNPh0tnzrrZYs19qN8Zavaebz9FHyTFXKTv0QJ55rZ7uQfAV7VHxS/74aUP4bqeRWJtzaOJKUxkjEAPcDbug==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.2.tgz", + "integrity": "sha512-6WdMrnFpY94uWefUGGRqO4WiS6R+Kso6/FR95SxXMuS6kfnjGJCHzywFGZcN5OU1fX067Zna4aPQ/nDwYMgBPw==", "requires": { "tslib": "^2.1.0" } }, "@fluentui/merge-styles": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.2.tgz", - "integrity": "sha512-ax8izl48JJuymEuvJzvNH22GHmpPEWLP+h4doyFZ/9IhR9AEycNc2rGBthZ5FiuktnFgusNag1AHr/WCj5pttw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.3.tgz", + "integrity": "sha512-bHWftN3zTp1bbBfmAEH8YK9UURWj2mffw7b7VaW2Og1qxwv3GMSza1cyv/d3EVqpMJ8AVwFv3mbi9p1ieMN9mw==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/react": { - "version": "8.81.1", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.81.1.tgz", - "integrity": "sha512-iTdfjWMsMwdvc2ZRQBg/nBUhX0mmttjH0pbMZ8RgcMLuSDauQnDwMN3gEWRZ+fInUGcqTE1hzEdoLS75Dl3bAg==", - "requires": { - "@fluentui/date-time-utilities": "^8.5.1", - "@fluentui/font-icons-mdl2": "^8.4.3", - "@fluentui/foundation-legacy": "^8.2.10", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/react-focus": "^8.7.3", - "@fluentui/react-hooks": "^8.6.1", + "version": "8.94.2", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.94.2.tgz", + "integrity": "sha512-G0fiTdq4vGCm+kSQh3hQ2szG/r2wXmRsD/iNq1ZoWSKoyKViP/yFmothhUgkarFbydnWbDzb+iYZQ5+8J8wgTA==", + "requires": { + "@fluentui/date-time-utilities": "^8.5.2", + "@fluentui/font-icons-mdl2": "^8.4.13", + "@fluentui/foundation-legacy": "^8.2.20", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/react-focus": "^8.8.5", + "@fluentui/react-hooks": "^8.6.11", "@fluentui/react-portal-compat-context": "^9.0.1", - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "@fluentui/react-focus": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.7.3.tgz", - "integrity": "sha512-d/AwXzcPMoiPpzbpkHpfTyDcvYvga2DWNYq1Rh+QJsAGzN34bimu5xSxE21mbeXyz+TYx7yglElGp7GlT33s3Q==", - "requires": { - "@fluentui/keyboard-key": "^0.4.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.8.5.tgz", + "integrity": "sha512-+BNjLHKpA0IqUToY9MMARGpYg3ngBmW+1KhJeVxCUnAESNMwnzJ6hx/3MOYUA/FPbYfBvs8QnpTZrrOd7sLG/A==", + "requires": { + "@fluentui/keyboard-key": "^0.4.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/react-hooks": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.1.tgz", - "integrity": "sha512-t9l+O+ZjTiGSuKQ9SxqRRo50C1h69jZFzb+s/vc0vBtvsIoYfR+Jj8qH3hxtkhv/iC+SCj1dgDCEJwGyH7pf3Q==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.11.tgz", + "integrity": "sha512-qQAg/Hqchz0BGL1KJhg211uhhBDxF0bvMCdVKVoeeJNj4q3Cdvam87zHi7/W5gP8i6jgCILr7MrV3dH9umA/Sw==", "requires": { - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, @@ -6833,54 +6894,54 @@ } }, "@fluentui/react-window-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.1.tgz", - "integrity": "sha512-Y0j+lAYKeD/qswzFZWPkHmvtBlRS2WPJIkpyGvfBVZaCeq3DGKRppoOCOmED762bKOXzM/G/ZNEcBa7CY1gkYw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.2.tgz", + "integrity": "sha512-/1uQ01HqGRpUOMozUy1FYmxp6blZZvtKN50rqxnQJr8O1bcpg8lJzhq064E8EjOXfdNh47zKSloP4ebbDI5vrw==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/set-version": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.1.tgz", - "integrity": "sha512-SZMP2P7RSUuVHYWIBcnlxYruvchlnoqensCvoaGeiH0FisO7etwJdFwKNegV7WEA9uS5ZOK3qVmyvD71DxaSng==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.2.tgz", + "integrity": "sha512-Vg20KZ0ufgWjxx6GFbqC5wiVxXZDUWgNT0r0By/Eyj4bUSb1jG6lmf5z1oY1dUX0YS6Cp5e6GnvbNdXg5E7orA==", "requires": { "tslib": "^2.1.0" } }, "@fluentui/style-utilities": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.2.tgz", - "integrity": "sha512-sDNsXUXdk4qAllADH46o0Fq1VOgWCDS+J/t3UFc6DA4a0R3J/M0o5COAh+S4/kLkJoKBQ+T+TqZJmA+Cj+hlCA==", - "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.12.tgz", + "integrity": "sha512-Ayxyo5brZxNI3CK4la+esJ5yDUQFAD26+BqjbIZvXemKq6ZsZDb2875H//saSVHc+dRq8R6J80A1GGV0fJpIEA==", + "requires": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "@fluentui/theme": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.7.tgz", - "integrity": "sha512-uSvUkGLFcIjVuYPtwjdgnUd7Fqd6TXakM1Gh0xqPbBPm4Kiig7mpRDfMUneAI8t0j5otEeqeNokoLs5rMNGOBg==", + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.16.tgz", + "integrity": "sha512-Ml2oMVvoOxRYD9HPjEkGCWvnQnzDyrufa5k8bPYN8xjJbbEGtDjjswcfrSVfHx1fCR1CFgybHR8jj3pvXRTXUQ==", "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/utilities": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.9.0.tgz", - "integrity": "sha512-fK3GjWygRhKDuVxIAMqcfP0UZGhnifygzhrZDIanKc4/+9CoIY/BVtHryRF+zF0sGEXF5kDarsMsLAeCnB2YhA==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.13.1.tgz", + "integrity": "sha512-BpLa0lSYnZ3YoTGB6T/pQ0vUVq0PEr6gF+daptyeiLUkEXVoy3HYgX6ZanA62wJ89ycIwI8A+1aUEbmtDMupYg==", "requires": { - "@fluentui/dom-utilities": "^2.2.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", + "@fluentui/dom-utilities": "^2.2.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, @@ -6924,9 +6985,9 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -6940,9 +7001,9 @@ "dev": true }, "@microsoft/load-themed-styles": { - "version": "1.10.281", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.281.tgz", - "integrity": "sha512-91uZ4u6p5ZClHQE2RpJKTZALeCl1G9cZB47SPivfPrRtjrhqCfS3gC3zNoikUhpwccWjfSN50zjm289Wxkf/8Q==" + "version": "1.10.293", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.293.tgz", + "integrity": "sha512-zSsmz4VKMTje73JZ3Rsv2oIqyu1Yh9oPmrAbUbCloMeFlKtvqHVgMfjXrbicqbiImcTeNfJWFjYFbLRkrsstYA==" }, "@polka/url": { "version": "1.0.0-next.21", @@ -6989,9 +7050,9 @@ } }, "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, "requires": { "@types/estree": "*", @@ -7009,10 +7070,9 @@ } }, "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "@types/express": { "version": "4.17.13", @@ -7027,9 +7087,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", "dev": true, "requires": { "@types/node": "*", @@ -7053,15 +7113,15 @@ "dev": true }, "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "@types/node": { - "version": "18.0.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.5.tgz", - "integrity": "sha512-En7tneq+j0qAiVwysBD79y86MT3ModuoIJbe7JXp+sb5UAjInSShmK3nXXMioBzfF7rXC12hv12d4IyCVwN4dA==", + "version": "18.7.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.15.tgz", + "integrity": "sha512-XnjpaI8Bgc3eBag2Aw4t2Uj/49lLBSStHWfqKvIuXD7FIrZyMLWp8KuAFHAqxMZYTF9l08N1ctUn9YNybZJVmQ==", "dev": true }, "@types/prop-types": { @@ -7082,9 +7142,9 @@ "dev": true }, "@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -7120,12 +7180,12 @@ } }, "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "requires": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -7316,9 +7376,9 @@ } }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, "acorn-import-assertions": { @@ -7543,13 +7603,22 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } } } }, "bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", "dev": true, "requires": { "array-flatten": "^2.1.2", @@ -7657,15 +7726,15 @@ } }, "browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" + "update-browserslist-db": "^1.0.5" } }, "buffer": { @@ -7719,9 +7788,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001367", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz", - "integrity": "sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw==", + "version": "1.0.30001390", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz", + "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==", "dev": true }, "chalk": { @@ -8007,152 +8076,151 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "dependencies": { "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" } } }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "dependencies": { "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" } } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "requires": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" }, "debug": { "version": "2.6.9", @@ -8189,9 +8257,12 @@ } }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "requires": { + "robust-predicates": "^3.0.0" + } }, "depd": { "version": "2.0.0", @@ -8280,9 +8351,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.191", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.191.tgz", - "integrity": "sha512-MeEaiuoSFh4G+rrN+Ilm1KJr8pTTZloeLurcZ+PRcthvdK1gWThje+E6baL7/7LoNctrzCncavAG/j/vpES9jg==", + "version": "1.4.243", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.243.tgz", + "integrity": "sha512-BgLD2gBX43OSXwlT01oYRRD5NIB4n3okTRxkzEAC6G0SZG4TTlyrWMjbOo0fajCwqwpRtMHXQNMjtRN6qpNtfw==", "dev": true }, "elliptic": { @@ -8341,16 +8412,16 @@ } }, "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", + "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", + "get-intrinsic": "^1.1.2", "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", @@ -8362,9 +8433,9 @@ "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", + "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", @@ -8673,7 +8744,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "function.prototype.name": { "version": "1.1.5", @@ -8774,6 +8846,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -8958,11 +9031,11 @@ "dev": true }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "icss-utils": { @@ -9019,9 +9092,9 @@ } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" }, "ipaddr.js": { "version": "2.0.1", @@ -9074,9 +9147,10 @@ "dev": true }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, "requires": { "has": "^1.0.3" } @@ -9321,9 +9395,9 @@ } }, "jszip": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.0.tgz", - "integrity": "sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "requires": { "lie": "~3.3.0", @@ -9752,14 +9826,14 @@ "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -9881,7 +9955,8 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "path-to-regexp": { "version": "0.1.7", @@ -9922,9 +9997,9 @@ "optional": true }, "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -10041,7 +10116,7 @@ "timers-browserify": "^2.0.12", "ts-loader": "^9.2.5", "tty-browserify": "0.0.1", - "typescript": "^4.4.3", + "typescript": "4.4", "url": "^0.11.0", "util": "^0.12.3", "uuid": "7.0.2", @@ -10049,14 +10124,6 @@ "webpack": "^5.51.1", "webpack-bundle-analyzer": "4.4.2", "webpack-dev-server": "^4.8.1" - }, - "dependencies": { - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - } } }, "powerbi-visuals-utils-dataviewutils": { @@ -10237,6 +10304,15 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } } } }, @@ -10311,6 +10387,7 @@ "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, "requires": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -10342,6 +10419,11 @@ "inherits": "^2.0.1" } }, + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, "rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -10399,9 +10481,9 @@ "dev": true }, "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "requires": { "node-forge": "^1" @@ -10774,7 +10856,8 @@ "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true }, "tapable": { "version": "2.2.1", @@ -10783,9 +10866,9 @@ "dev": true }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -10803,16 +10886,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" } }, "thunky": { @@ -11051,11 +11134,10 @@ } }, "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true, - "peer": true + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "dev": true }, "unbox-primitive": { "version": "1.0.2", @@ -11082,9 +11164,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", + "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -11157,36 +11239,36 @@ "dev": true }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -11196,11 +11278,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -11216,94 +11298,79 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -11312,35 +11379,35 @@ } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -11354,30 +11421,23 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -11393,27 +11453,27 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", - "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", + "requires": { + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -11427,11 +11487,6 @@ "vega-util": "^1.16.0" }, "dependencies": { - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, "d3-array": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", @@ -11439,73 +11494,66 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -11520,11 +11568,11 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -11572,9 +11620,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -11582,11 +11630,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -11599,10 +11647,16 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", @@ -11701,9 +11755,9 @@ } }, "webpack-dev-server": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", diff --git a/packages/powerbi/package.json b/packages/powerbi/package.json index 52274703a..2641b3755 100644 --- a/packages/powerbi/package.json +++ b/packages/powerbi/package.json @@ -25,7 +25,7 @@ "react": ">=16.8.0 <18.0.0", "react-dom": ">=16.8.0 <18.0.0", "regenerator-runtime": "^0.13.3", - "vega": "5.20" + "vega": "5.22.1" }, "devDependencies": { "@msrvida/fluentui-react-cdn-typings": "^2", @@ -34,5 +34,8 @@ "powerbi-visuals-tools": "^4", "tslint": "^5.20.1", "tslint-microsoft-contrib": "^6.2.0" + }, + "overrides": { + "typescript": "4.4" } } diff --git a/packages/powerbi/pbiviz.json b/packages/powerbi/pbiviz.json index e43d21c37..c7986c6ed 100644 --- a/packages/powerbi/pbiviz.json +++ b/packages/powerbi/pbiviz.json @@ -5,7 +5,7 @@ "guid": "SandDance2019beta4", "prod-guid": "SandDance201929976D117A654D0BAB8E96507442D80B", "visualClassName": "Visual", - "version": "4.0.8", + "version": "4.0.9", "description": "Visually explore, understand, and present your data.", "supportUrl": "https://github.com/Microsoft/SandDance/issues", "gitHubUrl": "https://github.com/microsoft/SandDance" diff --git a/packages/powerbi/src/app.ts b/packages/powerbi/src/app.ts index 673593718..36e2a4fca 100644 --- a/packages/powerbi/src/app.ts +++ b/packages/powerbi/src/app.ts @@ -61,7 +61,7 @@ export interface State { export class App extends React.Component { private viewerOptions: Partial; public explorer: Explorer_Class; - private cameraTimer: number; + private cameraTimer: NodeJS.Timeout; public lastCamera: SandDance.types.Camera; public lastCameraStable: boolean; @@ -88,7 +88,7 @@ export class App extends React.Component { return { colors: getColorSettingsFromThemePalette(themePalettes[darkTheme ? 'dark-theme' : '']), onCubeClick: (e, cube) => { - const { button } = e as unknown as PointerEvent; + const { button } = e; if (button === RIGHT_MOUSE_BUTTON) { const row = this.explorer.state.dataContent.data[cube.ordinal]; const selectionId = row[SandDance.constants.FieldNames.PowerBISelectionId]; @@ -147,7 +147,7 @@ export class App extends React.Component { this.lastCameraStable = stable; this.lastCamera = viewer.getCamera(transitionFinal); const { transitionDurations } = viewer.setup; - this.cameraTimer = setTimeout(() => this.listenToCamera(), transitionDurations.position + transitionDurations.stagger + cameraSettle) as unknown as number; + this.cameraTimer = setTimeout(() => this.listenToCamera(), transitionDurations.position + transitionDurations.stagger + cameraSettle); } private endCameraListener() { diff --git a/packages/powerbi/src/version.ts b/packages/powerbi/src/version.ts index fe0290bef..7e4e99c35 100644 --- a/packages/powerbi/src/version.ts +++ b/packages/powerbi/src/version.ts @@ -1,4 +1,4 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -export const version: string = '4.0.8'; +export const version: string = '4.0.9'; diff --git a/packages/powerbi/src/visual.ts b/packages/powerbi/src/visual.ts index 7eb27eaa6..97c4e39ce 100644 --- a/packages/powerbi/src/visual.ts +++ b/packages/powerbi/src/visual.ts @@ -89,102 +89,104 @@ export class Visual implements IVisual { this.persistSelectionChange = true; if (document) { - options.element.style.position = 'relative'; - this.viewElement = util.addDiv(options.element, 'sanddance-powerbi'); - this.errorElement = util.addDiv(options.element, 'sanddance-error'); - this.errorElement.style.position = 'absolute'; - - const props: Props = { - renderOptions: this.sanddanceRenderOptions, - mounted: (app: App) => { - this.app = app; - }, - onSetupSave: (setup) => { - // console.log('onCameraChange', setup); - this.ignorePersistUpdate = true; - this.persist({ setup }); - }, - onContextMenu: (e: MouseEvent | PointerEvent, selectionId?: powerbiVisualsApi.extensibility.ISelectionId) => { - const position: powerbiVisualsApi.extensibility.IPoint = { - x: e.clientX, - y: e.clientY, - }; - this.selectionManager.showContextMenu(selectionId || {}, position); - }, - onViewChange: viewChangeOptions => { - // console.log('onViewChange', this.renderingOptions, viewChangeOptions, this.persistViewChange); - - if (this.afterView.length) { - this.afterView.forEach(fn => fn()); - this.afterView.length = 0; - } + this.initialize(options); + } + } - if (this.renderingOptions) { - this.events.renderingFinished(this.renderingOptions); - } + initialize(options: VisualConstructorOptions) { + options.element.style.position = 'relative'; + this.viewElement = util.addDiv(options.element, 'sanddance-powerbi'); + this.errorElement = util.addDiv(options.element, 'sanddance-error'); + this.errorElement.style.position = 'absolute'; - if (this.persistViewChange) { - this.persist(viewChangeOptions); - } - this.persistViewChange = true; - }, - onSnapshotsChanged: snapshots => { - this.snapshots = snapshots; - this.persist({}); - }, - onError: (e: any) => { - if (this.renderingOptions) { - this.events.renderingFailed(this.renderingOptions); - this.renderingOptions = null; - } - }, - onDataFilter: (searchFilter, filteredData) => { - // console.log('onDataFilter', filteredData); + const props: Props = { + renderOptions: this.sanddanceRenderOptions, + mounted: (app: App) => { + this.app = app; + }, + onSetupSave: (setup) => { + // console.log('onCameraChange', setup); + this.ignorePersistUpdate = true; + this.persist({ setup }); + }, + onContextMenu: (e: MouseEvent | PointerEvent, selectionId?: powerbiVisualsApi.extensibility.ISelectionId) => { + const position: powerbiVisualsApi.extensibility.IPoint = { + x: e.clientX, + y: e.clientY, + }; + this.selectionManager.showContextMenu(selectionId || {}, position); + }, + onViewChange: viewChangeOptions => { + // console.log('onViewChange', this.renderingOptions, viewChangeOptions, this.persistViewChange); + if (this.afterView.length) { + this.afterView.forEach(fn => fn()); + this.afterView.length = 0; + } - this.persist({}); - if (filteredData) { - const result = convertFilter(searchFilter, this.columns, filteredData); - this.applySelection(result.selectedIds); - this.applyFilters(result.filters); - this.filters = { sd: searchFilter, pbi: result.filters }; - } else { - this.filters = null; - this.clearFilter(); - this.clearSelection(); - } - }, - onSelectionChanged: (search, activeIndex, selectedData) => { - // console.log('onSelectionChanged', search, selectedData, this.persistSelectionChange); - this.ignoreSelectionUpdate = true; + if (this.renderingOptions) { + this.events.renderingFinished(this.renderingOptions); + } - this.search = search; + if (this.persistViewChange) { + this.persist(viewChangeOptions); + } + this.persistViewChange = true; + }, + onSnapshotsChanged: snapshots => { + this.snapshots = snapshots; + this.persist({}); + }, + onError: (e: any) => { + if (this.renderingOptions) { + this.events.renderingFailed(this.renderingOptions); + this.renderingOptions = null; + } + }, + onDataFilter: (searchFilter, filteredData) => { + // console.log('onDataFilter', filteredData); + this.persist({}); + if (filteredData) { + const result = convertFilter(searchFilter, this.columns, filteredData); + this.applySelection(result.selectedIds); + this.applyFilters(result.filters); + this.filters = { sd: searchFilter, pbi: result.filters }; + } else { + this.filters = null; + this.clearFilter(); + this.clearSelection(); + } + }, + onSelectionChanged: (search, activeIndex, selectedData) => { + // console.log('onSelectionChanged', search, selectedData, this.persistSelectionChange); + this.ignoreSelectionUpdate = true; - if (this.persistSelectionChange) { - this.persist({}); - } - this.persistSelectionChange = true; + this.search = search; + + if (this.persistSelectionChange) { + this.persist({}); + } + this.persistSelectionChange = true; - if (selectedData?.length) { - const result = convertFilter(search, this.columns, selectedData); - this.applySelection(result.selectedIds); - this.applyFilters(this.filters ? this.filters.pbi.concat(result.filters) : result.filters); + if (selectedData?.length) { + const result = convertFilter(search, this.columns, selectedData); + this.applySelection(result.selectedIds); + this.applyFilters(this.filters ? this.filters.pbi.concat(result.filters) : result.filters); + } else { + this.clearSelection(); + // revert to filtered if it exists + if (this.filters) { + this.applyFilters(this.filters.pbi); } else { - this.clearSelection(); - // revert to filtered if it exists - if (this.filters) { - this.applyFilters(this.filters.pbi); - } else { - this.clearFilter(); - } + this.clearFilter(); } - }, - }; - render(createElement(App, props), this.viewElement); - } + } + }, + }; + render(createElement(App, props), this.viewElement); } - private persist(options: ViewChangeOptions) { + persist(options: ViewChangeOptions) { if (this.renderingOptions.viewMode !== powerbiVisualsApi.ViewMode.View) { const { explorer } = this.app; if (!explorer.viewer) return; @@ -304,90 +306,57 @@ export class Visual implements IVisual { this.prevSettings = util.clone(this.settings); - let setup: SandDance.types.Setup; - if (sandDanceConfig.setupJSON) { - try { - setup = JSON.parse(sandDanceConfig.setupJSON); - } catch (e) { - // continue regardless of error - } + const setup: SandDance.types.Setup = this.tryGetSetup(sandDanceConfig); + + if (different) { + this.showDifferent(data, sandDanceConfig, setup); + } else { + this.showSame(sandDanceConfig, setup); } + } + + showSame(sandDanceConfig: SandDanceConfig, setup: SandDance.types.Setup) { + // console.log('Visual update - not different'); const renderingFinished = () => { this.events.renderingFinished(this.renderingOptions); }; - if (!different) { - // console.log('Visual update - not different'); - - if (this.renderingOptions.viewMode === powerbiVisualsApi.ViewMode.Edit) { - this.syncSelection(sandDanceConfig.selectionQueryJSON, false); - } - - if (this.ignoreSelectionUpdate) { - this.ignoreSelectionUpdate = false; - return renderingFinished(); - } + if (this.renderingOptions.viewMode === powerbiVisualsApi.ViewMode.Edit) { + this.syncSelection(sandDanceConfig.selectionQueryJSON, false); + } - if (this.renderingOptions.viewMode === powerbiVisualsApi.ViewMode.View) { - this.syncSelection(sandDanceConfig.selectionQueryJSON, false); - } + if (this.ignoreSelectionUpdate) { + this.ignoreSelectionUpdate = false; + return renderingFinished(); + } - let setInsight = false; - if (sandDanceConfig.insightJSON) { - try { - const insight = JSON.parse(sandDanceConfig.insightJSON) as SandDance.specs.Insight; - const compA = util.clone(insight); - cleanInsight(compA, false); - const compB = util.clone(this.app.explorer.viewer.getInsight()); - cleanInsight(compB, false); - if (!util.deepCompare(compA, compB)) { - setInsight = true; - this.app.explorer.setInsight({ label: language.historyActionUpdate }, null, insight, true, setup); - } - } catch (e) { - // continue regardless of error - } - } + if (this.renderingOptions.viewMode === powerbiVisualsApi.ViewMode.View) { + this.syncSelection(sandDanceConfig.selectionQueryJSON, false); + } - if (!setInsight) { - // console.log('same insight') - const { camera: cameraOrHold, renderer } = setup; - let camera: SandDance.types.Camera; - let holdCamera = this.app.explorer.state.holdCamera; - if (cameraOrHold === 'hold') { - holdCamera = true; - } else { - camera = cameraOrHold; - } - this.app.explorer.setState({ camera, holdCamera, renderer }); - return renderingFinished(); + const setInsight = this.trySetInsight(sandDanceConfig, setup); + if (!setInsight) { + // console.log('same insight') + const { camera: cameraOrHold, renderer } = setup; + let camera: SandDance.types.Camera; + let holdCamera = this.app.explorer.state.holdCamera; + if (cameraOrHold === 'hold') { + holdCamera = true; + } else { + camera = cameraOrHold; } - return; + this.app.explorer.setState({ camera, holdCamera, renderer }); + return renderingFinished(); } + } + showDifferent(data: object[], sandDanceConfig: SandDanceConfig, setup: SandDance.types.Setup) { // console.log('Visual update - *is* different'); - if (sandDanceConfig.snapshotsJSON) { - try { - const snapshots = JSON.parse(sandDanceConfig.snapshotsJSON); - - if (this.snapshots === undefined) { - this.snapshots = snapshots; - } - } catch (e) { - // continue regardless of error - } - } + this.tryUpdateSnapshots(sandDanceConfig); - let tooltipExclusions: string[] = []; - if (sandDanceConfig.tooltipExclusionsJSON) { - try { - tooltipExclusions = JSON.parse(sandDanceConfig.tooltipExclusionsJSON); - } catch (e) { - // continue regardless of error - } - } + const tooltipExclusions: string[] = this.tryGetTooltipExclusions(sandDanceConfig); this.persistViewChange = false; this.app.load( @@ -406,18 +375,9 @@ export class Visual implements IVisual { this.syncSelection(sandDanceConfig.selectionQueryJSON, true); this.syncBackgroundImage(sandDanceConfig.imageHolderJSON); - let insight: Partial; + const insight: Partial = this.tryGetInsight(sandDanceConfig); - if (sandDanceConfig.insightJSON) { - try { - insight = JSON.parse(sandDanceConfig.insightJSON); - delete insight.size; - } catch (e) { - // continue regardless of error - } - } - - if (this.filters) { + if (this.filters && insight) { insight.filter = this.filters.sd; } @@ -429,6 +389,75 @@ export class Visual implements IVisual { ); } + tryGetInsight(sandDanceConfig: SandDanceConfig) { + let insight: Partial; + if (sandDanceConfig.insightJSON) { + try { + insight = JSON.parse(sandDanceConfig.insightJSON); + delete insight.size; + } catch (e) { + // continue regardless of error + } + } + return insight; + } + + tryGetSetup(sandDanceConfig: SandDanceConfig) { + let setup: SandDance.types.Setup; + if (sandDanceConfig.setupJSON) { + try { + setup = JSON.parse(sandDanceConfig.setupJSON); + } catch (e) { + // continue regardless of error + } + } + return setup; + } + + tryGetTooltipExclusions(sandDanceConfig: SandDanceConfig) { + let tooltipExclusions: string[] = []; + if (sandDanceConfig.tooltipExclusionsJSON) { + try { + tooltipExclusions = JSON.parse(sandDanceConfig.tooltipExclusionsJSON); + } catch (e) { + // continue regardless of error + } + } + return tooltipExclusions; + } + + trySetInsight(sandDanceConfig: SandDanceConfig, setup: SandDance.types.Setup) { + if (sandDanceConfig.insightJSON) { + try { + const insight: SandDance.specs.Insight = JSON.parse(sandDanceConfig.insightJSON); + const compA = util.clone(insight); + cleanInsight(compA, false); + const compB = util.clone(this.app.explorer.viewer.getInsight()); + cleanInsight(compB, false); + if (!util.deepCompare(compA, compB)) { + this.app.explorer.setInsight({ label: language.historyActionUpdate }, null, insight, true, setup); + return true; + } + } catch (e) { + // continue regardless of error + } + } + return false; + } + + tryUpdateSnapshots(sandDanceConfig: SandDanceConfig) { + if (sandDanceConfig.snapshotsJSON) { + try { + const snapshots = JSON.parse(sandDanceConfig.snapshotsJSON); + if (this.snapshots === undefined) { + this.snapshots = snapshots; + } + } catch (e) { + // continue regardless of error + } + } + } + syncBackgroundImage(imageHolderJSON: string) { if (imageHolderJSON) { try { diff --git a/packages/sanddance-app/package-lock.json b/packages/sanddance-app/package-lock.json index a0b52226f..613197a65 100644 --- a/packages/sanddance-app/package-lock.json +++ b/packages/sanddance-app/package-lock.json @@ -9,52 +9,52 @@ "version": "4.0.0", "dependencies": { "@fluentui/react": "^8", - "vega": "5.20" + "vega": "5.22.1" }, "devDependencies": { "@types/react": ">=16.8.0 <18.0.0", "@types/react-dom": ">=16.8.0 <18.0.0", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" } }, "node_modules/@fluentui/date-time-utilities": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.1.tgz", - "integrity": "sha512-i8GXoIbPipug5cGZ4Dei0oXu7L4wia6DGMAzvabvSHwTjprbR5YjRrrr4UVtBr9gNx1v4Iv1yeD3XSc8DI9JDg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.2.tgz", + "integrity": "sha512-u540ACUdnC+Jms1DIHkho80eJmoCg/LtAzR4a/1Tum6PicxWv59UYp9Ba7qFbIw+mrjWnwX/2ZmBpqTy9Rgn7w==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/dom-utilities": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.1.tgz", - "integrity": "sha512-na1+hTRDg2xHSu3Vrr8ITrQpoFChOCSpqTYjLvdRD081p8o61hk9DeaXkUWr8E+2TZ06BXi2t0VyL4wfrYLU8Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.2.tgz", + "integrity": "sha512-puklLc6Jvg279OGagqkSfuHML6ckBhw3gJakdvIZHKeJiduh+34U4Finl3K24yBSXzG2WsN+LwLTd1Vcociy+g==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/font-icons-mdl2": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.3.tgz", - "integrity": "sha512-YKyCTVvV5qpSOS9EsulA+QYLyUEw7QhLzmcBWC4USu0WPhSy/cOfUUvemRl2JSsxErfuOM50OI80RKfuqNwsTA==", + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.13.tgz", + "integrity": "sha512-rXJpRKxHg68zCKTrcmouklGpE/laXlTQaLyBuft8EcPczZX3aupYPZda9sp+Kknolmd3Lvypn2D9Vf+McJDtwg==", "dependencies": { - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "node_modules/@fluentui/foundation-legacy": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.10.tgz", - "integrity": "sha512-/ku+mSLTEIKf/HGavt9k+/njgAXGHXu4hoxRYRHbYr1O9hUe50cm5DctPQg+z/YDPNzsb1ltSmNqgWPvBOSW6A==", - "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.2.20", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.20.tgz", + "integrity": "sha512-iyJSr5Y/yYt0x9yBLP+aIy5U9tiDlgbxJZo6enNwFo0zEuBeWg/2L2IgAUzAwJB2vb73oQBlQt8In602R0Vj8w==", + "dependencies": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -63,39 +63,39 @@ } }, "node_modules/@fluentui/keyboard-key": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.1.tgz", - "integrity": "sha512-8WkNPh0tnzrrZYs19qN8Zavaebz9FHyTFXKTv0QJ55rZ7uQfAV7VHxS/74aUP4bqeRWJtzaOJKUxkjEAPcDbug==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.2.tgz", + "integrity": "sha512-6WdMrnFpY94uWefUGGRqO4WiS6R+Kso6/FR95SxXMuS6kfnjGJCHzywFGZcN5OU1fX067Zna4aPQ/nDwYMgBPw==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/merge-styles": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.2.tgz", - "integrity": "sha512-ax8izl48JJuymEuvJzvNH22GHmpPEWLP+h4doyFZ/9IhR9AEycNc2rGBthZ5FiuktnFgusNag1AHr/WCj5pttw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.3.tgz", + "integrity": "sha512-bHWftN3zTp1bbBfmAEH8YK9UURWj2mffw7b7VaW2Og1qxwv3GMSza1cyv/d3EVqpMJ8AVwFv3mbi9p1ieMN9mw==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "node_modules/@fluentui/react": { - "version": "8.81.1", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.81.1.tgz", - "integrity": "sha512-iTdfjWMsMwdvc2ZRQBg/nBUhX0mmttjH0pbMZ8RgcMLuSDauQnDwMN3gEWRZ+fInUGcqTE1hzEdoLS75Dl3bAg==", - "dependencies": { - "@fluentui/date-time-utilities": "^8.5.1", - "@fluentui/font-icons-mdl2": "^8.4.3", - "@fluentui/foundation-legacy": "^8.2.10", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/react-focus": "^8.7.3", - "@fluentui/react-hooks": "^8.6.1", + "version": "8.94.2", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.94.2.tgz", + "integrity": "sha512-G0fiTdq4vGCm+kSQh3hQ2szG/r2wXmRsD/iNq1ZoWSKoyKViP/yFmothhUgkarFbydnWbDzb+iYZQ5+8J8wgTA==", + "dependencies": { + "@fluentui/date-time-utilities": "^8.5.2", + "@fluentui/font-icons-mdl2": "^8.4.13", + "@fluentui/foundation-legacy": "^8.2.20", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/react-focus": "^8.8.5", + "@fluentui/react-hooks": "^8.6.11", "@fluentui/react-portal-compat-context": "^9.0.1", - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" }, @@ -107,15 +107,15 @@ } }, "node_modules/@fluentui/react-focus": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.7.3.tgz", - "integrity": "sha512-d/AwXzcPMoiPpzbpkHpfTyDcvYvga2DWNYq1Rh+QJsAGzN34bimu5xSxE21mbeXyz+TYx7yglElGp7GlT33s3Q==", - "dependencies": { - "@fluentui/keyboard-key": "^0.4.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.8.5.tgz", + "integrity": "sha512-+BNjLHKpA0IqUToY9MMARGpYg3ngBmW+1KhJeVxCUnAESNMwnzJ6hx/3MOYUA/FPbYfBvs8QnpTZrrOd7sLG/A==", + "dependencies": { + "@fluentui/keyboard-key": "^0.4.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -124,13 +124,13 @@ } }, "node_modules/@fluentui/react-hooks": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.1.tgz", - "integrity": "sha512-t9l+O+ZjTiGSuKQ9SxqRRo50C1h69jZFzb+s/vc0vBtvsIoYfR+Jj8qH3hxtkhv/iC+SCj1dgDCEJwGyH7pf3Q==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.11.tgz", + "integrity": "sha512-qQAg/Hqchz0BGL1KJhg211uhhBDxF0bvMCdVKVoeeJNj4q3Cdvam87zHi7/W5gP8i6jgCILr7MrV3dH9umA/Sw==", "dependencies": { - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -151,11 +151,11 @@ } }, "node_modules/@fluentui/react-window-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.1.tgz", - "integrity": "sha512-Y0j+lAYKeD/qswzFZWPkHmvtBlRS2WPJIkpyGvfBVZaCeq3DGKRppoOCOmED762bKOXzM/G/ZNEcBa7CY1gkYw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.2.tgz", + "integrity": "sha512-/1uQ01HqGRpUOMozUy1FYmxp6blZZvtKN50rqxnQJr8O1bcpg8lJzhq064E8EjOXfdNh47zKSloP4ebbDI5vrw==", "dependencies": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" }, "peerDependencies": { @@ -164,34 +164,34 @@ } }, "node_modules/@fluentui/set-version": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.1.tgz", - "integrity": "sha512-SZMP2P7RSUuVHYWIBcnlxYruvchlnoqensCvoaGeiH0FisO7etwJdFwKNegV7WEA9uS5ZOK3qVmyvD71DxaSng==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.2.tgz", + "integrity": "sha512-Vg20KZ0ufgWjxx6GFbqC5wiVxXZDUWgNT0r0By/Eyj4bUSb1jG6lmf5z1oY1dUX0YS6Cp5e6GnvbNdXg5E7orA==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/style-utilities": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.2.tgz", - "integrity": "sha512-sDNsXUXdk4qAllADH46o0Fq1VOgWCDS+J/t3UFc6DA4a0R3J/M0o5COAh+S4/kLkJoKBQ+T+TqZJmA+Cj+hlCA==", - "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.12.tgz", + "integrity": "sha512-Ayxyo5brZxNI3CK4la+esJ5yDUQFAD26+BqjbIZvXemKq6ZsZDb2875H//saSVHc+dRq8R6J80A1GGV0fJpIEA==", + "dependencies": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "node_modules/@fluentui/theme": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.7.tgz", - "integrity": "sha512-uSvUkGLFcIjVuYPtwjdgnUd7Fqd6TXakM1Gh0xqPbBPm4Kiig7mpRDfMUneAI8t0j5otEeqeNokoLs5rMNGOBg==", + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.16.tgz", + "integrity": "sha512-Ml2oMVvoOxRYD9HPjEkGCWvnQnzDyrufa5k8bPYN8xjJbbEGtDjjswcfrSVfHx1fCR1CFgybHR8jj3pvXRTXUQ==", "dependencies": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -200,13 +200,13 @@ } }, "node_modules/@fluentui/utilities": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.9.0.tgz", - "integrity": "sha512-fK3GjWygRhKDuVxIAMqcfP0UZGhnifygzhrZDIanKc4/+9CoIY/BVtHryRF+zF0sGEXF5kDarsMsLAeCnB2YhA==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.13.1.tgz", + "integrity": "sha512-BpLa0lSYnZ3YoTGB6T/pQ0vUVq0PEr6gF+daptyeiLUkEXVoy3HYgX6ZanA62wJ89ycIwI8A+1aUEbmtDMupYg==", "dependencies": { - "@fluentui/dom-utilities": "^2.2.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", + "@fluentui/dom-utilities": "^2.2.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" }, "peerDependencies": { @@ -215,9 +215,9 @@ } }, "node_modules/@microsoft/load-themed-styles": { - "version": "1.10.281", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.281.tgz", - "integrity": "sha512-91uZ4u6p5ZClHQE2RpJKTZALeCl1G9cZB47SPivfPrRtjrhqCfS3gC3zNoikUhpwccWjfSN50zjm289Wxkf/8Q==" + "version": "1.10.293", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.293.tgz", + "integrity": "sha512-zSsmz4VKMTje73JZ3Rsv2oIqyu1Yh9oPmrAbUbCloMeFlKtvqHVgMfjXrbicqbiImcTeNfJWFjYFbLRkrsstYA==" }, "node_modules/@types/estree": { "version": "0.0.50", @@ -230,9 +230,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -253,9 +253,12 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } }, "node_modules/csstype": { "version": "3.1.0", @@ -263,203 +266,235 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", - "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "robust-predicates": "^3.0.0" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" } }, "node_modules/js-tokens": { @@ -508,11 +543,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, "node_modules/react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -540,21 +570,10 @@ "react": "17.0.2" } }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" }, "node_modules/rw": { "version": "1.3.3", @@ -576,17 +595,6 @@ "object-assign": "^4.1.1" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -600,6 +608,11 @@ "topoquantize": "bin/topoquantize" } }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -611,36 +624,36 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -650,11 +663,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -670,87 +683,79 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -759,35 +764,35 @@ } }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -803,26 +808,21 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -838,27 +838,27 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", - "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", + "dependencies": { + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -883,70 +883,63 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -961,11 +954,11 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -999,105 +992,105 @@ }, "dependencies": { "@fluentui/date-time-utilities": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.1.tgz", - "integrity": "sha512-i8GXoIbPipug5cGZ4Dei0oXu7L4wia6DGMAzvabvSHwTjprbR5YjRrrr4UVtBr9gNx1v4Iv1yeD3XSc8DI9JDg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.2.tgz", + "integrity": "sha512-u540ACUdnC+Jms1DIHkho80eJmoCg/LtAzR4a/1Tum6PicxWv59UYp9Ba7qFbIw+mrjWnwX/2ZmBpqTy9Rgn7w==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/dom-utilities": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.1.tgz", - "integrity": "sha512-na1+hTRDg2xHSu3Vrr8ITrQpoFChOCSpqTYjLvdRD081p8o61hk9DeaXkUWr8E+2TZ06BXi2t0VyL4wfrYLU8Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.2.tgz", + "integrity": "sha512-puklLc6Jvg279OGagqkSfuHML6ckBhw3gJakdvIZHKeJiduh+34U4Finl3K24yBSXzG2WsN+LwLTd1Vcociy+g==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/font-icons-mdl2": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.3.tgz", - "integrity": "sha512-YKyCTVvV5qpSOS9EsulA+QYLyUEw7QhLzmcBWC4USu0WPhSy/cOfUUvemRl2JSsxErfuOM50OI80RKfuqNwsTA==", + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.4.13.tgz", + "integrity": "sha512-rXJpRKxHg68zCKTrcmouklGpE/laXlTQaLyBuft8EcPczZX3aupYPZda9sp+Kknolmd3Lvypn2D9Vf+McJDtwg==", "requires": { - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/foundation-legacy": { - "version": "8.2.10", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.10.tgz", - "integrity": "sha512-/ku+mSLTEIKf/HGavt9k+/njgAXGHXu4hoxRYRHbYr1O9hUe50cm5DctPQg+z/YDPNzsb1ltSmNqgWPvBOSW6A==", - "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.2.20", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.20.tgz", + "integrity": "sha512-iyJSr5Y/yYt0x9yBLP+aIy5U9tiDlgbxJZo6enNwFo0zEuBeWg/2L2IgAUzAwJB2vb73oQBlQt8In602R0Vj8w==", + "requires": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/keyboard-key": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.1.tgz", - "integrity": "sha512-8WkNPh0tnzrrZYs19qN8Zavaebz9FHyTFXKTv0QJ55rZ7uQfAV7VHxS/74aUP4bqeRWJtzaOJKUxkjEAPcDbug==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.2.tgz", + "integrity": "sha512-6WdMrnFpY94uWefUGGRqO4WiS6R+Kso6/FR95SxXMuS6kfnjGJCHzywFGZcN5OU1fX067Zna4aPQ/nDwYMgBPw==", "requires": { "tslib": "^2.1.0" } }, "@fluentui/merge-styles": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.2.tgz", - "integrity": "sha512-ax8izl48JJuymEuvJzvNH22GHmpPEWLP+h4doyFZ/9IhR9AEycNc2rGBthZ5FiuktnFgusNag1AHr/WCj5pttw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.3.tgz", + "integrity": "sha512-bHWftN3zTp1bbBfmAEH8YK9UURWj2mffw7b7VaW2Og1qxwv3GMSza1cyv/d3EVqpMJ8AVwFv3mbi9p1ieMN9mw==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/react": { - "version": "8.81.1", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.81.1.tgz", - "integrity": "sha512-iTdfjWMsMwdvc2ZRQBg/nBUhX0mmttjH0pbMZ8RgcMLuSDauQnDwMN3gEWRZ+fInUGcqTE1hzEdoLS75Dl3bAg==", - "requires": { - "@fluentui/date-time-utilities": "^8.5.1", - "@fluentui/font-icons-mdl2": "^8.4.3", - "@fluentui/foundation-legacy": "^8.2.10", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/react-focus": "^8.7.3", - "@fluentui/react-hooks": "^8.6.1", + "version": "8.94.2", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.94.2.tgz", + "integrity": "sha512-G0fiTdq4vGCm+kSQh3hQ2szG/r2wXmRsD/iNq1ZoWSKoyKViP/yFmothhUgkarFbydnWbDzb+iYZQ5+8J8wgTA==", + "requires": { + "@fluentui/date-time-utilities": "^8.5.2", + "@fluentui/font-icons-mdl2": "^8.4.13", + "@fluentui/foundation-legacy": "^8.2.20", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/react-focus": "^8.8.5", + "@fluentui/react-hooks": "^8.6.11", "@fluentui/react-portal-compat-context": "^9.0.1", - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "@fluentui/react-focus": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.7.3.tgz", - "integrity": "sha512-d/AwXzcPMoiPpzbpkHpfTyDcvYvga2DWNYq1Rh+QJsAGzN34bimu5xSxE21mbeXyz+TYx7yglElGp7GlT33s3Q==", - "requires": { - "@fluentui/keyboard-key": "^0.4.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/style-utilities": "^8.7.2", - "@fluentui/utilities": "^8.9.0", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.8.5.tgz", + "integrity": "sha512-+BNjLHKpA0IqUToY9MMARGpYg3ngBmW+1KhJeVxCUnAESNMwnzJ6hx/3MOYUA/FPbYfBvs8QnpTZrrOd7sLG/A==", + "requires": { + "@fluentui/keyboard-key": "^0.4.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/style-utilities": "^8.7.12", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/react-hooks": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.1.tgz", - "integrity": "sha512-t9l+O+ZjTiGSuKQ9SxqRRo50C1h69jZFzb+s/vc0vBtvsIoYfR+Jj8qH3hxtkhv/iC+SCj1dgDCEJwGyH7pf3Q==", + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.11.tgz", + "integrity": "sha512-qQAg/Hqchz0BGL1KJhg211uhhBDxF0bvMCdVKVoeeJNj4q3Cdvam87zHi7/W5gP8i6jgCILr7MrV3dH9umA/Sw==", "requires": { - "@fluentui/react-window-provider": "^2.2.1", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/react-window-provider": "^2.2.2", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, @@ -1110,61 +1103,61 @@ } }, "@fluentui/react-window-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.1.tgz", - "integrity": "sha512-Y0j+lAYKeD/qswzFZWPkHmvtBlRS2WPJIkpyGvfBVZaCeq3DGKRppoOCOmED762bKOXzM/G/ZNEcBa7CY1gkYw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.2.tgz", + "integrity": "sha512-/1uQ01HqGRpUOMozUy1FYmxp6blZZvtKN50rqxnQJr8O1bcpg8lJzhq064E8EjOXfdNh47zKSloP4ebbDI5vrw==", "requires": { - "@fluentui/set-version": "^8.2.1", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@fluentui/set-version": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.1.tgz", - "integrity": "sha512-SZMP2P7RSUuVHYWIBcnlxYruvchlnoqensCvoaGeiH0FisO7etwJdFwKNegV7WEA9uS5ZOK3qVmyvD71DxaSng==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.2.tgz", + "integrity": "sha512-Vg20KZ0ufgWjxx6GFbqC5wiVxXZDUWgNT0r0By/Eyj4bUSb1jG6lmf5z1oY1dUX0YS6Cp5e6GnvbNdXg5E7orA==", "requires": { "tslib": "^2.1.0" } }, "@fluentui/style-utilities": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.2.tgz", - "integrity": "sha512-sDNsXUXdk4qAllADH46o0Fq1VOgWCDS+J/t3UFc6DA4a0R3J/M0o5COAh+S4/kLkJoKBQ+T+TqZJmA+Cj+hlCA==", - "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/theme": "^2.6.7", - "@fluentui/utilities": "^8.9.0", + "version": "8.7.12", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.7.12.tgz", + "integrity": "sha512-Ayxyo5brZxNI3CK4la+esJ5yDUQFAD26+BqjbIZvXemKq6ZsZDb2875H//saSVHc+dRq8R6J80A1GGV0fJpIEA==", + "requires": { + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/theme": "^2.6.16", + "@fluentui/utilities": "^8.13.1", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "@fluentui/theme": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.7.tgz", - "integrity": "sha512-uSvUkGLFcIjVuYPtwjdgnUd7Fqd6TXakM1Gh0xqPbBPm4Kiig7mpRDfMUneAI8t0j5otEeqeNokoLs5rMNGOBg==", + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.16.tgz", + "integrity": "sha512-Ml2oMVvoOxRYD9HPjEkGCWvnQnzDyrufa5k8bPYN8xjJbbEGtDjjswcfrSVfHx1fCR1CFgybHR8jj3pvXRTXUQ==", "requires": { - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", - "@fluentui/utilities": "^8.9.0", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", + "@fluentui/utilities": "^8.13.1", "tslib": "^2.1.0" } }, "@fluentui/utilities": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.9.0.tgz", - "integrity": "sha512-fK3GjWygRhKDuVxIAMqcfP0UZGhnifygzhrZDIanKc4/+9CoIY/BVtHryRF+zF0sGEXF5kDarsMsLAeCnB2YhA==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.13.1.tgz", + "integrity": "sha512-BpLa0lSYnZ3YoTGB6T/pQ0vUVq0PEr6gF+daptyeiLUkEXVoy3HYgX6ZanA62wJ89ycIwI8A+1aUEbmtDMupYg==", "requires": { - "@fluentui/dom-utilities": "^2.2.1", - "@fluentui/merge-styles": "^8.5.2", - "@fluentui/set-version": "^8.2.1", + "@fluentui/dom-utilities": "^2.2.2", + "@fluentui/merge-styles": "^8.5.3", + "@fluentui/set-version": "^8.2.2", "tslib": "^2.1.0" } }, "@microsoft/load-themed-styles": { - "version": "1.10.281", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.281.tgz", - "integrity": "sha512-91uZ4u6p5ZClHQE2RpJKTZALeCl1G9cZB47SPivfPrRtjrhqCfS3gC3zNoikUhpwccWjfSN50zjm289Wxkf/8Q==" + "version": "1.10.293", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.293.tgz", + "integrity": "sha512-zSsmz4VKMTje73JZ3Rsv2oIqyu1Yh9oPmrAbUbCloMeFlKtvqHVgMfjXrbicqbiImcTeNfJWFjYFbLRkrsstYA==" }, "@types/estree": { "version": "0.0.50", @@ -1177,9 +1170,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -1200,9 +1193,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, "csstype": { "version": "3.1.0", @@ -1210,177 +1203,158 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" } }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "requires": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "requires": { - "function-bind": "^1.1.1" + "robust-predicates": "^3.0.0" } }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "requires": { - "has": "^1.0.3" - } + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" }, "js-tokens": { "version": "4.0.0", @@ -1411,11 +1385,6 @@ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "peer": true }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, "react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -1437,15 +1406,10 @@ "scheduler": "^0.20.2" } }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" }, "rw": { "version": "1.3.3", @@ -1467,17 +1431,19 @@ "object-assign": "^4.1.1" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, "topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", "requires": { "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } } }, "tr46": { @@ -1491,36 +1457,36 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -1530,11 +1496,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -1550,89 +1516,79 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -1641,35 +1597,35 @@ } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -1683,30 +1639,23 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -1722,27 +1671,27 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", - "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", + "requires": { + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -1763,73 +1712,66 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -1844,11 +1786,11 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } diff --git a/packages/sanddance-app/package.json b/packages/sanddance-app/package.json index 3cb904633..5df7ef98b 100644 --- a/packages/sanddance-app/package.json +++ b/packages/sanddance-app/package.json @@ -15,7 +15,7 @@ "@types/react": ">=16.8.0 <18.0.0", "@types/react-dom": ">=16.8.0 <18.0.0", "@msrvida/fluentui-react-cdn-typings": "^2", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "targets": { "main": false, @@ -39,6 +39,6 @@ "dependencies": { "@fluentui/react": "^8", "@msrvida/sanddance-explorer": "^4", - "vega": "5.20" + "vega": "5.22.1" } } \ No newline at end of file diff --git a/packages/sanddance-embed/package-lock.json b/packages/sanddance-embed/package-lock.json index 15b1e7f86..b1a233b4f 100644 --- a/packages/sanddance-embed/package-lock.json +++ b/packages/sanddance-embed/package-lock.json @@ -20,9 +20,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -60,9 +60,9 @@ "dev": true }, "@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "dev": true, "requires": { "@types/prop-types": "*", diff --git a/packages/sanddance-embed/test/sanddance-embed.html b/packages/sanddance-embed/test/sanddance-embed.html index 4a4e09b30..a438522a1 100644 --- a/packages/sanddance-embed/test/sanddance-embed.html +++ b/packages/sanddance-embed/test/sanddance-embed.html @@ -12,7 +12,7 @@ - + diff --git a/packages/sanddance-explorer/README.md b/packages/sanddance-explorer/README.md index ac85e9be9..00f1992c9 100644 --- a/packages/sanddance-explorer/README.md +++ b/packages/sanddance-explorer/README.md @@ -14,7 +14,7 @@ Add these to the `dependencies` section of your `package.json`, then run `npm in ```json "@msrvida/sanddance-explorer": "^4", "@fluentui/react": "^8", -"vega": "^5.20" +"vega": "^5.22" ``` Import these in your JavaScript: diff --git a/packages/sanddance-explorer/package-lock.json b/packages/sanddance-explorer/package-lock.json index 631d7463d..d1f04c928 100644 --- a/packages/sanddance-explorer/package-lock.json +++ b/packages/sanddance-explorer/package-lock.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@types/d3-format": "^1.3.1", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "peerDependencies": { "@types/react": ">=16.8.0 <18.0.0", @@ -28,6 +28,12 @@ "integrity": "sha512-WeGCHAs7PHdZYq6lwl/+jsl+Nfc1J2W1kNcMeIMYzQsT6mtBDBgtJ/rcdjZ0k0rVIvqEZqhhuD5TK/v3P2gFHQ==", "dev": true }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -35,9 +41,9 @@ "peer": true }, "node_modules/@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "peer": true, "dependencies": { "@types/prop-types": "*", @@ -135,12 +141,30 @@ "object-assign": "^4.1.1" } }, + "node_modules/vega-event-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", + "dev": true + }, + "node_modules/vega-expression": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "dev": true, + "dependencies": { + "@types/estree": "^0.0.50", + "vega-util": "^1.16.0" + } + }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dev": true, "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, @@ -158,6 +182,12 @@ "integrity": "sha512-WeGCHAs7PHdZYq6lwl/+jsl+Nfc1J2W1kNcMeIMYzQsT6mtBDBgtJ/rcdjZ0k0rVIvqEZqhhuD5TK/v3P2gFHQ==", "dev": true }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, "@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -165,9 +195,9 @@ "peer": true }, "@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "peer": true, "requires": { "@types/prop-types": "*", @@ -253,12 +283,30 @@ "object-assign": "^4.1.1" } }, + "vega-event-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", + "dev": true + }, + "vega-expression": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "dev": true, + "requires": { + "@types/estree": "^0.0.50", + "vega-util": "^1.16.0" + } + }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dev": true, "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, diff --git a/packages/sanddance-explorer/package.json b/packages/sanddance-explorer/package.json index 1047705e6..cac8d115d 100644 --- a/packages/sanddance-explorer/package.json +++ b/packages/sanddance-explorer/package.json @@ -40,7 +40,7 @@ "umd": "./dist/umd/sanddance-explorer.js", "devDependencies": { "@types/d3-format": "^1.3.1", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "dependencies": { "@msrvida/chart-recommender": "^3", diff --git a/packages/sanddance-explorer/src/controls/dataExporterHtml.ts b/packages/sanddance-explorer/src/controls/dataExporterHtml.ts index 13a99e4c5..a374003e5 100644 --- a/packages/sanddance-explorer/src/controls/dataExporterHtml.ts +++ b/packages/sanddance-explorer/src/controls/dataExporterHtml.ts @@ -19,7 +19,7 @@ export const embedHtml = (title: string, embed: string) => ` - + diff --git a/packages/sanddance-react/README.md b/packages/sanddance-react/README.md index b06659192..4304d1c9c 100644 --- a/packages/sanddance-react/README.md +++ b/packages/sanddance-react/README.md @@ -14,7 +14,7 @@ Add these to the `dependencies` section of your `package.json`, then run `npm in "@msrvida/sanddance-react": "^4", "react": "^17", "react-dom": "^17", -"vega": "^5.20" +"vega": "^5.22" ``` Import these in your JavaScript: diff --git a/packages/sanddance-react/package-lock.json b/packages/sanddance-react/package-lock.json index 1cc6573b9..aec89e971 100644 --- a/packages/sanddance-react/package-lock.json +++ b/packages/sanddance-react/package-lock.json @@ -12,7 +12,7 @@ "just-compare": "^1.3.0" }, "devDependencies": { - "vega": "5.20.2" + "vega": "5.22.1" }, "peerDependencies": { "@types/react": ">=16.8.0 <18.0.0", @@ -34,9 +34,9 @@ "peer": true }, "node_modules/@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "peer": true, "dependencies": { "@types/prop-types": "*", @@ -60,10 +60,13 @@ "peer": true }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } }, "node_modules/csstype": { "version": "3.1.0", @@ -72,227 +75,256 @@ "peer": true }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "robust-predicates": "^3.0.0" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, "node_modules/js-tokens": { @@ -347,12 +379,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "node_modules/react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -380,22 +406,11 @@ "react": "17.0.2" } }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", + "dev": true }, "node_modules/rw": { "version": "1.3.3", @@ -419,18 +434,6 @@ "object-assign": "^4.1.1" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -445,6 +448,12 @@ "topoquantize": "bin/topoquantize" } }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -452,37 +461,37 @@ "dev": true }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -493,12 +502,12 @@ "dev": true }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -515,95 +524,86 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", "dev": true }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dev": true, "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -612,38 +612,38 @@ } }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -660,29 +660,23 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -699,29 +693,29 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -748,77 +742,69 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dev": true, "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==", "dev": true }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -834,12 +820,12 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -888,9 +874,9 @@ "peer": true }, "@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "peer": true, "requires": { "@types/prop-types": "*", @@ -914,9 +900,9 @@ "peer": true }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, "csstype": { @@ -926,202 +912,180 @@ "peer": true }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "dev": true }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" } }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "dev": true }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "dev": true }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "requires": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", "dev": true }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "dev": true }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "dev": true }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "robust-predicates": "^3.0.0" } }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true }, - "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1157,12 +1121,6 @@ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "peer": true }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -1184,16 +1142,11 @@ "scheduler": "^0.20.2" } }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", + "dev": true }, "rw": { "version": "1.3.3", @@ -1217,12 +1170,6 @@ "object-assign": "^4.1.1" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, "topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -1230,6 +1177,14 @@ "dev": true, "requires": { "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } } }, "tr46": { @@ -1239,37 +1194,37 @@ "dev": true }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -1280,12 +1235,12 @@ "dev": true }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -1302,97 +1257,86 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", "dev": true }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dev": true, "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -1401,38 +1345,38 @@ } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -1447,33 +1391,25 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -1490,29 +1426,29 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -1535,80 +1471,72 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dev": true, "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==", "dev": true }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -1624,12 +1552,12 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } diff --git a/packages/sanddance-react/package.json b/packages/sanddance-react/package.json index e958236e8..204ca5359 100644 --- a/packages/sanddance-react/package.json +++ b/packages/sanddance-react/package.json @@ -38,6 +38,6 @@ "react-dom": ">=16.8.0 <18.0.0" }, "devDependencies": { - "vega": "5.20.2" + "vega": "5.22.1" } } diff --git a/packages/sanddance-specs/package-lock.json b/packages/sanddance-specs/package-lock.json index b193e28ee..fec6a8269 100644 --- a/packages/sanddance-specs/package-lock.json +++ b/packages/sanddance-specs/package-lock.json @@ -10,31 +10,36 @@ "license": "MIT", "dependencies": { "d3-color": "^1.4.0", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "devDependencies": { - "vega": "5.20" + "vega": "5.22.1" } }, "node_modules/@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { @@ -43,212 +48,235 @@ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "robust-predicates": "^3.0.0" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, "node_modules/node-fetch": { @@ -271,29 +299,12 @@ } } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", "dev": true }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -306,18 +317,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -332,6 +331,12 @@ "topoquantize": "bin/topoquantize" } }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -339,37 +344,37 @@ "dev": true }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -380,12 +385,12 @@ "dev": true }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -402,101 +407,93 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-functions/node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" + "engines": { + "node": ">=12" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -505,44 +502,47 @@ } }, "node_modules/vega-geo/node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -559,29 +559,23 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -598,29 +592,29 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -647,75 +641,67 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -731,12 +717,12 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -775,22 +761,21 @@ "@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { @@ -799,187 +784,165 @@ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "dev": true }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" } }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "dev": true }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "dev": true }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "requires": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", "dev": true }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "dev": true }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "dev": true }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "robust-predicates": "^3.0.0" } }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -989,23 +952,12 @@ "whatwg-url": "^5.0.0" } }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", "dev": true }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, "rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -1018,12 +970,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, "topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -1031,6 +977,14 @@ "dev": true, "requires": { "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } } }, "tr46": { @@ -1040,37 +994,37 @@ "dev": true }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -1081,12 +1035,12 @@ "dev": true }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -1103,103 +1057,92 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" }, "dependencies": { "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -1208,46 +1151,46 @@ }, "dependencies": { "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true } } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -1262,33 +1205,25 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -1305,29 +1240,29 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -1350,78 +1285,70 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -1437,12 +1364,12 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } diff --git a/packages/sanddance-specs/package.json b/packages/sanddance-specs/package.json index 23b3a64ef..197a62ccb 100644 --- a/packages/sanddance-specs/package.json +++ b/packages/sanddance-specs/package.json @@ -32,9 +32,9 @@ "@msrvida/chart-types": "^1", "@msrvida/search-expression": "^1", "d3-color": "^1.4.0", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "devDependencies": { - "vega": "5.20" + "vega": "5.22.1" } } diff --git a/packages/sanddance-test-es6/package-lock.json b/packages/sanddance-test-es6/package-lock.json index 691ae490b..3b8e3319f 100644 --- a/packages/sanddance-test-es6/package-lock.json +++ b/packages/sanddance-test-es6/package-lock.json @@ -8,10 +8,10 @@ "name": "sanddance-test-es6", "version": "1.0.0", "dependencies": { - "vega": "5.20" + "vega": "5.22.1" }, "devDependencies": { - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" } }, "node_modules/@types/estree": { @@ -20,208 +20,243 @@ "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "robust-predicates": "^3.0.0" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" } }, "node_modules/node-fetch": { @@ -243,26 +278,10 @@ } } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" }, "node_modules/rw": { "version": "1.3.3", @@ -274,17 +293,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -298,42 +306,47 @@ "topoquantize": "bin/topoquantize" } }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -343,11 +356,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -363,87 +376,79 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -452,35 +457,35 @@ } }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -496,26 +501,21 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -531,27 +531,27 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -576,70 +576,63 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -654,11 +647,11 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -697,182 +690,163 @@ "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" } }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "requires": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "requires": { - "function-bind": "^1.1.1" + "robust-predicates": "^3.0.0" } }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "requires": { - "has": "^1.0.3" - } + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" }, "node-fetch": { "version": "2.6.7", @@ -882,20 +856,10 @@ "whatwg-url": "^5.0.0" } }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" }, "rw": { "version": "1.3.3", @@ -907,17 +871,19 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, "topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", "requires": { "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } } }, "tr46": { @@ -926,36 +892,36 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -965,11 +931,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -985,89 +951,79 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -1076,35 +1032,35 @@ } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -1118,30 +1074,23 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -1157,27 +1106,27 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -1198,73 +1147,66 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -1279,11 +1221,11 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } diff --git a/packages/sanddance-test-es6/package.json b/packages/sanddance-test-es6/package.json index c496392c2..daedb8a86 100644 --- a/packages/sanddance-test-es6/package.json +++ b/packages/sanddance-test-es6/package.json @@ -20,9 +20,9 @@ }, "dependencies": { "@msrvida/sanddance": "^4", - "vega": "5.20" + "vega": "5.22.1" }, "devDependencies": { - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" } } diff --git a/packages/sanddance/README.md b/packages/sanddance/README.md index 19a4b5794..929200216 100644 --- a/packages/sanddance/README.md +++ b/packages/sanddance/README.md @@ -14,7 +14,7 @@ You will need to consider how to load the libraries that `sanddance` depends on, Load dependencies via ` + ``` @@ -30,7 +30,7 @@ Add these to the `dependencies` section of your `package.json`, then run `npm in ```json "@msrvida/sanddance": "^4", -"vega": "^5.20" +"vega": "^5.22" ``` Import these in your JavaScript, then call the `use()` function to pass the dependency libraries to `SandDance.VegaMorphCharts`: diff --git a/packages/sanddance/package-lock.json b/packages/sanddance/package-lock.json index 11593aae2..593537d4b 100644 --- a/packages/sanddance/package-lock.json +++ b/packages/sanddance/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "d3-scale": "^4.0.2", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "devDependencies": { "@types/d3-scale": "^4.0.2" @@ -31,6 +31,11 @@ "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==", "dev": true }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, "node_modules/d3-array": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", @@ -114,11 +119,27 @@ "node": ">=12" } }, + "node_modules/vega-event-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" + }, + "node_modules/vega-expression": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "dependencies": { + "@types/estree": "^0.0.50", + "vega-util": "^1.16.0" + } + }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, @@ -144,6 +165,11 @@ "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==", "dev": true }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, "d3-array": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", @@ -203,11 +229,27 @@ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" }, + "vega-event-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" + }, + "vega-expression": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "requires": { + "@types/estree": "^0.0.50", + "vega-util": "^1.16.0" + } + }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, diff --git a/packages/sanddance/package.json b/packages/sanddance/package.json index aa66b7931..180a96ecb 100644 --- a/packages/sanddance/package.json +++ b/packages/sanddance/package.json @@ -34,6 +34,6 @@ "@msrvida/sanddance-specs": "^1", "@msrvida/search-expression": "^1", "@msrvida/vega-morphcharts": "^1", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" } } diff --git a/packages/search-expression/package-lock.json b/packages/search-expression/package-lock.json index 9faf78e9a..a2b7a67fb 100644 --- a/packages/search-expression/package-lock.json +++ b/packages/search-expression/package-lock.json @@ -9,14 +9,35 @@ "version": "1.0.1", "license": "MIT", "dependencies": { - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "node_modules/vega-event-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" + }, + "node_modules/vega-expression": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "dependencies": { + "@types/estree": "^0.0.50", + "vega-util": "^1.16.0" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, @@ -27,11 +48,32 @@ } }, "dependencies": { + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "vega-event-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" + }, + "vega-expression": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "requires": { + "@types/estree": "^0.0.50", + "vega-util": "^1.16.0" + } + }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, diff --git a/packages/search-expression/package.json b/packages/search-expression/package.json index f1fe37926..714288fe7 100644 --- a/packages/search-expression/package.json +++ b/packages/search-expression/package.json @@ -22,6 +22,6 @@ "license": "MIT", "dependencies": { "@msrvida/chart-types": "^1", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" } } diff --git a/packages/vega-deck.gl/package-lock.json b/packages/vega-deck.gl/package-lock.json index 09853301f..c59d10ef8 100644 --- a/packages/vega-deck.gl/package-lock.json +++ b/packages/vega-deck.gl/package-lock.json @@ -14,20 +14,20 @@ "d3-ease": "^1.0.5", "deepmerge": "^2.1.1", "tsx-create-element": "^2.2.9", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "devDependencies": { "@deck.gl/core": "8.3.7", "@deck.gl/layers": "8.3.7", "@luma.gl/core": "8.3.1", "@types/react": ">=16.8.0 <18.0.0", - "vega": "5.20" + "vega": "5.22.1" } }, "node_modules/@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" @@ -37,9 +37,9 @@ } }, "node_modules/@danmarshall/deckgl-typings": { - "version": "4.9.24", - "resolved": "https://registry.npmjs.org/@danmarshall/deckgl-typings/-/deckgl-typings-4.9.24.tgz", - "integrity": "sha512-ETFGeQNekVu6Aexfv9HSRKSMDfATeT+hhiF5TxgDoQymyD14kmxuyEfj8edbsrec0v2LznLa3BDcVwfSYjDmWA==", + "version": "4.9.25", + "resolved": "https://registry.npmjs.org/@danmarshall/deckgl-typings/-/deckgl-typings-4.9.25.tgz", + "integrity": "sha512-bPr/akw+fKgSNBWrxeK05dE/KtKXAnIbR7WpGzwg96cHQexUgVLp4sOafhx5NSb88E3VjpUiVaz/SDn0t18PpQ==", "hasInstallScript": true, "dependencies": { "@types/hammerjs": "^2.0.36", @@ -182,35 +182,35 @@ "dev": true }, "node_modules/@math.gl/core": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-3.6.2.tgz", - "integrity": "sha512-1GxQNy1EI1FvJNw3VRKoV97ZAOfDaGMRyfasA0RSl7IT98deLUOga6K5LOy4VYpD2YFgF85RBabpO6xJKyJHQg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-3.6.3.tgz", + "integrity": "sha512-jBABmDkj5uuuE0dTDmwwss7Cup5ZwQ6Qb7h1pgvtkEutTrhkcv8SuItQNXmF45494yIHeoGue08NlyeY6wxq2A==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.0", - "@math.gl/types": "3.6.2", + "@math.gl/types": "3.6.3", "gl-matrix": "^3.4.0" } }, "node_modules/@math.gl/polygon": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.6.2.tgz", - "integrity": "sha512-Kq9jQrO4Iv1oGb5/goS6JFzezYmynW7PrmKXLiI7vvS6jGw/ATZzl7Wn+8Svlta9NpuKKPI7DcBYSYSvfmnIoA==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.6.3.tgz", + "integrity": "sha512-FivQ1ZnYcAss1wVifOkHP/ZnlfQy1IL/769uzNtiHxwUbW0kZG3yyOZ9I7fwyzR5Hvqt3ErJKHjSYZr0uVlz5g==", "dev": true, "dependencies": { - "@math.gl/core": "3.6.2" + "@math.gl/core": "3.6.3" } }, "node_modules/@math.gl/types": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@math.gl/types/-/types-3.6.2.tgz", - "integrity": "sha512-Vl9rod2vJDk0LofWrAWlBS3kAQO9a/V2w6MtXBOOpjF7USa4qECE9kjhKTORUET/OH2gHbzrgBDAzhATgnsAvg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/types/-/types-3.6.3.tgz", + "integrity": "sha512-3uWLVXHY3jQxsXCr/UCNPSc2BG0hNUljhmOBt9l+lNFDp7zHgm0cK2Tw4kj2XfkJy4TgwZTBGwRDQgWEbLbdTA==", "dev": true }, "node_modules/@math.gl/web-mercator": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.6.2.tgz", - "integrity": "sha512-jud2n6YEPp0+PHseG/gtJXskYAMQEM3bOyyPdwwEeu9OekjeWvkC9q3OGDF7Ve7KUA2kPbNzpD/r8VBhuixk8w==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.6.3.tgz", + "integrity": "sha512-UVrkSOs02YLehKaehrxhAejYMurehIHPfFQvPFZmdJHglHOU4V2cCUApTVEwOksvCp161ypEqVp+9H6mGhTTcw==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.0", @@ -218,28 +218,28 @@ } }, "node_modules/@probe.gl/env": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-3.5.0.tgz", - "integrity": "sha512-YdlpZZshhyYxvWDBmZ5RIW2pTR14Pw4p9czMlt/v7F6HbFzWfAdmH7q6xVwFRYxUpQLwhWensWyv4aFysiWl4g==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-3.5.2.tgz", + "integrity": "sha512-JlNvJ2p6+ObWX7es6n3TycGPTv5CfVrCS8vblI1eHhrFCcZ6RxIo727ffRVwldpp0YTzdgjx3/4fB/1dnVYElw==", "dev": true, "dependencies": { "@babel/runtime": "^7.0.0" } }, "node_modules/@probe.gl/log": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-3.5.0.tgz", - "integrity": "sha512-nW/qz2X1xY08WU/TsmJP6/6IPNcaY5fS/vLjpC4ahJuE2Mezga4hGM/R2X5JWE/nkPc+BsC5GnAnD13rwAxS7g==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-3.5.2.tgz", + "integrity": "sha512-5yo8Dg8LrSltuPBdGlLh/WOvt4LdU7DDHu75GMeiS0fKM+J4IACRpGV8SOrktCj1MWZ6JVHcNQkJnoyZ6G7p/w==", "dev": true, "dependencies": { "@babel/runtime": "^7.0.0", - "@probe.gl/env": "3.5.0" + "@probe.gl/env": "3.5.2" } }, "node_modules/@probe.gl/stats": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.5.0.tgz", - "integrity": "sha512-IH2M+F3c8HR1DTroBARePUFG7wIewumtKA0UFqx51Z7S4hKrD60wFbpMmg0AcF4FvHAXMBoC+kYi1UKW9XbAOw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.5.2.tgz", + "integrity": "sha512-YKaYXiHF//fgy1OkX38JD70Lc8qxg2Viw8Q2CTNMwGPDJe12wda7kEmMKPJNw2oYLyFUfTzv00KJMA5h18z02w==", "dev": true, "dependencies": { "@babel/runtime": "^7.0.0" @@ -248,8 +248,7 @@ "node_modules/@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "node_modules/@types/hammerjs": { "version": "2.0.41", @@ -262,9 +261,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -277,10 +276,13 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } }, "node_modules/csstype": { "version": "3.1.0", @@ -288,12 +290,15 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { @@ -302,40 +307,49 @@ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-ease": { @@ -344,122 +358,160 @@ "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/deepmerge": { "version": "2.2.1", @@ -470,10 +522,13 @@ } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "dependencies": { + "robust-predicates": "^3.0.0" + } }, "node_modules/earcut": { "version": "2.2.4", @@ -494,12 +549,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "node_modules/gl-matrix": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", @@ -520,18 +569,6 @@ "node": ">=0.8.0" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/html-tags": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", @@ -541,12 +578,12 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -565,21 +602,12 @@ } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, "node_modules/jsonfile": { @@ -591,12 +619,12 @@ } }, "node_modules/math.gl": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.6.2.tgz", - "integrity": "sha512-Sp+Aeukpe81XOH4JNPbo+d7jBClZ+J0cpMDbQzoUhes5NIyLIQvmLj1B1mUiPCopM12DZfb4u1dv6WfvVHzgTg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.6.3.tgz", + "integrity": "sha512-Yq9CyECvSDox9+5ETi2+x1bGTY5WvGUGL3rJfC4KPoCZAM51MGfrCm6rIn4yOJUVfMPs2a5RwMD+yGS/n1g3gg==", "dev": true, "dependencies": { - "@math.gl/core": "3.6.2" + "@math.gl/core": "3.6.3" } }, "node_modules/minimist": { @@ -605,9 +633,9 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "node_modules/mjolnir.js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mjolnir.js/-/mjolnir.js-2.7.0.tgz", - "integrity": "sha512-XlK5OZ7d09eAIdYr+5VKOArYtkWB/f306s34yVij4pBk5wnaKxSrD7fVfP8/BL27nKVylNweqP1pxqh8h+hWKw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/mjolnir.js/-/mjolnir.js-2.7.1.tgz", + "integrity": "sha512-72BeUWgTv2cj5aZQKpwL8caNUFhXZ9bDm1hxpNj70XJQ62IBnTZmtv/WPxJvtaVNhzNo+D2U8O6ryNI0zImYcw==", "dev": true, "dependencies": { "@types/hammerjs": "^2.0.41", @@ -638,22 +666,16 @@ } } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "node_modules/probe.gl": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.5.0.tgz", - "integrity": "sha512-KWj8u0PNytr/rVwcQFcN7O8SK7n/ITOsUZ91l4fSX95oHhKvVCI7eadrzFUzFRlXkFfBWpMWZXFHITsHHHUctw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.5.2.tgz", + "integrity": "sha512-8lFQVmi7pMQZkqfj8+VjX4GU9HTkyxgRm5/h/xxA/4/IvZPv3qtP996L+awPwZsrPRKEw99t12SvqEHqSls/sA==", "dev": true, "dependencies": { "@babel/runtime": "^7.0.0", - "@probe.gl/env": "3.5.0", - "@probe.gl/log": "3.5.0", - "@probe.gl/stats": "3.5.0" + "@probe.gl/env": "3.5.2", + "@probe.gl/log": "3.5.2", + "@probe.gl/stats": "3.5.2" } }, "node_modules/regenerator-runtime": { @@ -662,22 +684,11 @@ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", + "dev": true }, "node_modules/rw": { "version": "1.3.3", @@ -691,18 +702,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -722,6 +721,12 @@ "topoquantize": "bin/topoquantize" } }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -749,37 +754,37 @@ } }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -790,12 +795,12 @@ "dev": true }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -812,101 +817,93 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-functions/node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" + "engines": { + "node": ">=12" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -915,44 +912,47 @@ } }, "node_modules/vega-geo/node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -969,29 +969,23 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -1008,29 +1002,29 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -1057,75 +1051,67 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -1141,12 +1127,12 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -1183,18 +1169,18 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@danmarshall/deckgl-typings": { - "version": "4.9.24", - "resolved": "https://registry.npmjs.org/@danmarshall/deckgl-typings/-/deckgl-typings-4.9.24.tgz", - "integrity": "sha512-ETFGeQNekVu6Aexfv9HSRKSMDfATeT+hhiF5TxgDoQymyD14kmxuyEfj8edbsrec0v2LznLa3BDcVwfSYjDmWA==", + "version": "4.9.25", + "resolved": "https://registry.npmjs.org/@danmarshall/deckgl-typings/-/deckgl-typings-4.9.25.tgz", + "integrity": "sha512-bPr/akw+fKgSNBWrxeK05dE/KtKXAnIbR7WpGzwg96cHQexUgVLp4sOafhx5NSb88E3VjpUiVaz/SDn0t18PpQ==", "requires": { "@types/hammerjs": "^2.0.36", "@types/react": "*", @@ -1332,35 +1318,35 @@ "dev": true }, "@math.gl/core": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-3.6.2.tgz", - "integrity": "sha512-1GxQNy1EI1FvJNw3VRKoV97ZAOfDaGMRyfasA0RSl7IT98deLUOga6K5LOy4VYpD2YFgF85RBabpO6xJKyJHQg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-3.6.3.tgz", + "integrity": "sha512-jBABmDkj5uuuE0dTDmwwss7Cup5ZwQ6Qb7h1pgvtkEutTrhkcv8SuItQNXmF45494yIHeoGue08NlyeY6wxq2A==", "dev": true, "requires": { "@babel/runtime": "^7.12.0", - "@math.gl/types": "3.6.2", + "@math.gl/types": "3.6.3", "gl-matrix": "^3.4.0" } }, "@math.gl/polygon": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.6.2.tgz", - "integrity": "sha512-Kq9jQrO4Iv1oGb5/goS6JFzezYmynW7PrmKXLiI7vvS6jGw/ATZzl7Wn+8Svlta9NpuKKPI7DcBYSYSvfmnIoA==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.6.3.tgz", + "integrity": "sha512-FivQ1ZnYcAss1wVifOkHP/ZnlfQy1IL/769uzNtiHxwUbW0kZG3yyOZ9I7fwyzR5Hvqt3ErJKHjSYZr0uVlz5g==", "dev": true, "requires": { - "@math.gl/core": "3.6.2" + "@math.gl/core": "3.6.3" } }, "@math.gl/types": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@math.gl/types/-/types-3.6.2.tgz", - "integrity": "sha512-Vl9rod2vJDk0LofWrAWlBS3kAQO9a/V2w6MtXBOOpjF7USa4qECE9kjhKTORUET/OH2gHbzrgBDAzhATgnsAvg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/types/-/types-3.6.3.tgz", + "integrity": "sha512-3uWLVXHY3jQxsXCr/UCNPSc2BG0hNUljhmOBt9l+lNFDp7zHgm0cK2Tw4kj2XfkJy4TgwZTBGwRDQgWEbLbdTA==", "dev": true }, "@math.gl/web-mercator": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.6.2.tgz", - "integrity": "sha512-jud2n6YEPp0+PHseG/gtJXskYAMQEM3bOyyPdwwEeu9OekjeWvkC9q3OGDF7Ve7KUA2kPbNzpD/r8VBhuixk8w==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.6.3.tgz", + "integrity": "sha512-UVrkSOs02YLehKaehrxhAejYMurehIHPfFQvPFZmdJHglHOU4V2cCUApTVEwOksvCp161ypEqVp+9H6mGhTTcw==", "dev": true, "requires": { "@babel/runtime": "^7.12.0", @@ -1368,28 +1354,28 @@ } }, "@probe.gl/env": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-3.5.0.tgz", - "integrity": "sha512-YdlpZZshhyYxvWDBmZ5RIW2pTR14Pw4p9czMlt/v7F6HbFzWfAdmH7q6xVwFRYxUpQLwhWensWyv4aFysiWl4g==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-3.5.2.tgz", + "integrity": "sha512-JlNvJ2p6+ObWX7es6n3TycGPTv5CfVrCS8vblI1eHhrFCcZ6RxIo727ffRVwldpp0YTzdgjx3/4fB/1dnVYElw==", "dev": true, "requires": { "@babel/runtime": "^7.0.0" } }, "@probe.gl/log": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-3.5.0.tgz", - "integrity": "sha512-nW/qz2X1xY08WU/TsmJP6/6IPNcaY5fS/vLjpC4ahJuE2Mezga4hGM/R2X5JWE/nkPc+BsC5GnAnD13rwAxS7g==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-3.5.2.tgz", + "integrity": "sha512-5yo8Dg8LrSltuPBdGlLh/WOvt4LdU7DDHu75GMeiS0fKM+J4IACRpGV8SOrktCj1MWZ6JVHcNQkJnoyZ6G7p/w==", "dev": true, "requires": { "@babel/runtime": "^7.0.0", - "@probe.gl/env": "3.5.0" + "@probe.gl/env": "3.5.2" } }, "@probe.gl/stats": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.5.0.tgz", - "integrity": "sha512-IH2M+F3c8HR1DTroBARePUFG7wIewumtKA0UFqx51Z7S4hKrD60wFbpMmg0AcF4FvHAXMBoC+kYi1UKW9XbAOw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.5.2.tgz", + "integrity": "sha512-YKaYXiHF//fgy1OkX38JD70Lc8qxg2Viw8Q2CTNMwGPDJe12wda7kEmMKPJNw2oYLyFUfTzv00KJMA5h18z02w==", "dev": true, "requires": { "@babel/runtime": "^7.0.0" @@ -1398,8 +1384,7 @@ "@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "@types/hammerjs": { "version": "2.0.41", @@ -1412,9 +1397,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -1427,9 +1412,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, "csstype": { @@ -1438,12 +1423,12 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { @@ -1452,28 +1437,28 @@ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "dev": true }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" } }, @@ -1483,114 +1468,113 @@ "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "dev": true }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "dev": true }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "requires": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", "dev": true }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "dev": true }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "dev": true }, "deepmerge": { @@ -1599,10 +1583,13 @@ "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "requires": { + "robust-predicates": "^3.0.0" + } }, "earcut": { "version": "2.2.4", @@ -1620,12 +1607,6 @@ "universalify": "^0.1.0" } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "gl-matrix": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", @@ -1643,27 +1624,18 @@ "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "html-tags": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==" }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "indefinitely-typed": { @@ -1676,20 +1648,11 @@ } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -1699,12 +1662,12 @@ } }, "math.gl": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.6.2.tgz", - "integrity": "sha512-Sp+Aeukpe81XOH4JNPbo+d7jBClZ+J0cpMDbQzoUhes5NIyLIQvmLj1B1mUiPCopM12DZfb4u1dv6WfvVHzgTg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.6.3.tgz", + "integrity": "sha512-Yq9CyECvSDox9+5ETi2+x1bGTY5WvGUGL3rJfC4KPoCZAM51MGfrCm6rIn4yOJUVfMPs2a5RwMD+yGS/n1g3gg==", "dev": true, "requires": { - "@math.gl/core": "3.6.2" + "@math.gl/core": "3.6.3" } }, "minimist": { @@ -1713,9 +1676,9 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "mjolnir.js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mjolnir.js/-/mjolnir.js-2.7.0.tgz", - "integrity": "sha512-XlK5OZ7d09eAIdYr+5VKOArYtkWB/f306s34yVij4pBk5wnaKxSrD7fVfP8/BL27nKVylNweqP1pxqh8h+hWKw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/mjolnir.js/-/mjolnir.js-2.7.1.tgz", + "integrity": "sha512-72BeUWgTv2cj5aZQKpwL8caNUFhXZ9bDm1hxpNj70XJQ62IBnTZmtv/WPxJvtaVNhzNo+D2U8O6ryNI0zImYcw==", "dev": true, "requires": { "@types/hammerjs": "^2.0.41", @@ -1731,22 +1694,16 @@ "whatwg-url": "^5.0.0" } }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "probe.gl": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.5.0.tgz", - "integrity": "sha512-KWj8u0PNytr/rVwcQFcN7O8SK7n/ITOsUZ91l4fSX95oHhKvVCI7eadrzFUzFRlXkFfBWpMWZXFHITsHHHUctw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.5.2.tgz", + "integrity": "sha512-8lFQVmi7pMQZkqfj8+VjX4GU9HTkyxgRm5/h/xxA/4/IvZPv3qtP996L+awPwZsrPRKEw99t12SvqEHqSls/sA==", "dev": true, "requires": { "@babel/runtime": "^7.0.0", - "@probe.gl/env": "3.5.0", - "@probe.gl/log": "3.5.0", - "@probe.gl/stats": "3.5.0" + "@probe.gl/env": "3.5.2", + "@probe.gl/log": "3.5.2", + "@probe.gl/stats": "3.5.2" } }, "regenerator-runtime": { @@ -1755,16 +1712,11 @@ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", + "dev": true }, "rw": { "version": "1.3.3", @@ -1778,12 +1730,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -1796,6 +1742,14 @@ "dev": true, "requires": { "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } } }, "tr46": { @@ -1819,37 +1773,37 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -1860,12 +1814,12 @@ "dev": true }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -1882,103 +1836,92 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" }, "dependencies": { "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -1987,46 +1930,46 @@ }, "dependencies": { "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true } } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -2041,33 +1984,25 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -2084,29 +2019,29 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -2129,78 +2064,70 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -2216,12 +2143,12 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } diff --git a/packages/vega-deck.gl/package.json b/packages/vega-deck.gl/package.json index d2d1d7575..f0634c315 100644 --- a/packages/vega-deck.gl/package.json +++ b/packages/vega-deck.gl/package.json @@ -36,13 +36,13 @@ "d3-ease": "^1.0.5", "deepmerge": "^2.1.1", "tsx-create-element": "^2.2.9", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "devDependencies": { "@deck.gl/core": "8.3.7", "@deck.gl/layers": "8.3.7", "@luma.gl/core": "8.3.1", "@types/react": ">=16.8.0 <18.0.0", - "vega": "5.20" + "vega": "5.22.1" } } diff --git a/packages/vega-morphcharts-test-es6/package-lock.json b/packages/vega-morphcharts-test-es6/package-lock.json index 75ef77cc4..319670254 100644 --- a/packages/vega-morphcharts-test-es6/package-lock.json +++ b/packages/vega-morphcharts-test-es6/package-lock.json @@ -8,7 +8,7 @@ "name": "vega-morphcharts-test-es6", "version": "1.0.0", "dependencies": { - "vega": "5.20" + "vega": "5.22.1" } }, "node_modules/@types/estree": { @@ -17,208 +17,243 @@ "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "robust-predicates": "^3.0.0" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" } }, "node_modules/node-fetch": { @@ -240,26 +275,10 @@ } } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" }, "node_modules/rw": { "version": "1.3.3", @@ -271,17 +290,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", @@ -295,42 +303,47 @@ "topoquantize": "bin/topoquantize" } }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -340,11 +353,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -360,87 +373,79 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -449,35 +454,35 @@ } }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -493,26 +498,21 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -528,27 +528,27 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -573,70 +573,63 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -651,11 +644,11 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -694,182 +687,163 @@ "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" } }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "requires": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "requires": { - "function-bind": "^1.1.1" + "robust-predicates": "^3.0.0" } }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "requires": { - "has": "^1.0.3" - } + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" }, "node-fetch": { "version": "2.6.7", @@ -879,20 +853,10 @@ "whatwg-url": "^5.0.0" } }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" }, "rw": { "version": "1.3.3", @@ -904,17 +868,19 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, "topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", "requires": { "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } } }, "tr46": { @@ -923,36 +889,36 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -962,11 +928,11 @@ "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -982,89 +948,79 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -1073,35 +1029,35 @@ } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -1115,30 +1071,23 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -1154,27 +1103,27 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -1195,73 +1144,66 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -1276,11 +1218,11 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } diff --git a/packages/vega-morphcharts-test-es6/package.json b/packages/vega-morphcharts-test-es6/package.json index d87c6c764..e5ce0dcc6 100644 --- a/packages/vega-morphcharts-test-es6/package.json +++ b/packages/vega-morphcharts-test-es6/package.json @@ -19,6 +19,6 @@ }, "dependencies": { "@msrvida/vega-morphcharts": "^1", - "vega": "5.20" + "vega": "5.22.1" } } diff --git a/packages/vega-morphcharts/package-lock.json b/packages/vega-morphcharts/package-lock.json index 73211712f..a821a0189 100644 --- a/packages/vega-morphcharts/package-lock.json +++ b/packages/vega-morphcharts/package-lock.json @@ -15,13 +15,13 @@ "is-plain-object": "^5.0.0", "morphcharts": "^1", "tsx-create-element": "^2.2.5", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "devDependencies": { "@types/d3-color": "^3.1.0", "@types/d3-ease": "^3.0.0", "@types/react": ">=16.8.0 <18.0.0", - "vega": "5.20.2" + "vega": "5.22.1" } }, "node_modules/@types/d3-color": { @@ -39,8 +39,7 @@ "node_modules/@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "node_modules/@types/prop-types": { "version": "15.7.5", @@ -48,9 +47,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -68,10 +67,13 @@ "integrity": "sha512-LQvrACV3Pj17GpkwHwXuTd733gfY+D7b9mKdrTmLdO7vo7P/o6209Qqtk63y/FCv/lspdmi0pWz6Qe/ull9kQg==" }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } }, "node_modules/csstype": { "version": "3.1.0", @@ -79,12 +81,15 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "dependencies": { - "internmap": "^1.0.0" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { @@ -96,40 +101,49 @@ } }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-ease": { @@ -141,128 +155,160 @@ } }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "dependencies": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" }, "bin": { - "geo2svg": "bin/geo2svg", - "geograticule": "bin/geograticule", - "geoproject": "bin/geoproject", - "geoquantize": "bin/geoquantize", - "geostitch": "bin/geostitch" + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/d3-interpolate/node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true - }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/deepmerge": { "version": "2.2.1", @@ -273,34 +319,19 @@ } }, "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "dependencies": { + "robust-predicates": "^3.0.0" + } }, "node_modules/gl-matrix": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/html-tags": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", @@ -310,33 +341,24 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, "node_modules/is-plain-object": { @@ -376,29 +398,12 @@ } } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", "dev": true }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -411,18 +416,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -442,6 +435,12 @@ "topoquantize": "bin/topoquantize" } }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -461,37 +460,37 @@ } }, "node_modules/vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "dependencies": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -502,12 +501,12 @@ "dev": true }, "node_modules/vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -524,101 +523,84 @@ } }, "node_modules/vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "node_modules/vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "dependencies": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "node_modules/vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "dependencies": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "node_modules/vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-functions/node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true - }, - "node_modules/vega-functions/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" } }, "node_modules/vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", @@ -626,45 +608,39 @@ "vega-util": "^1.15.2" } }, - "node_modules/vega-geo/node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true - }, "node_modules/vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "dependencies": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "node_modules/vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "dependencies": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "node_modules/vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "dependencies": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -681,29 +657,23 @@ "vega-util": "^1.16.0" } }, - "node_modules/vega-parser/node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - }, "node_modules/vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "dependencies": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "node_modules/vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -720,29 +690,29 @@ } }, "node_modules/vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "node_modules/vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "dependencies": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -769,75 +739,67 @@ "node": ">=12" } }, - "node_modules/vega-selections/node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, "node_modules/vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "dependencies": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "node_modules/vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "node_modules/vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "dependencies": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "node_modules/vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "node_modules/vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "dependencies": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -853,12 +815,12 @@ } }, "node_modules/vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "dependencies": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -909,8 +871,7 @@ "@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "@types/prop-types": { "version": "15.7.5", @@ -918,9 +879,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "@types/react": { - "version": "17.0.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz", - "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==", + "version": "17.0.49", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz", + "integrity": "sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -938,9 +899,9 @@ "integrity": "sha512-LQvrACV3Pj17GpkwHwXuTd733gfY+D7b9mKdrTmLdO7vo7P/o6209Qqtk63y/FCv/lspdmi0pWz6Qe/ull9kQg==" }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, "csstype": { @@ -949,12 +910,12 @@ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "dev": true, "requires": { - "internmap": "^1.0.0" + "internmap": "1 - 2" } }, "d3-color": { @@ -963,28 +924,28 @@ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" }, "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dev": true, "requires": { - "delaunator": "4" + "delaunator": "5" } }, "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "dev": true }, "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, "requires": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" } }, @@ -994,122 +955,113 @@ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" }, "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "dev": true }, "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "requires": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" } }, "d3-geo-projection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz", - "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", "dev": true, "requires": { - "commander": "2", - "d3-array": "1 - 2", - "d3-geo": "1.12.0 - 2", - "resolve": "^1.1.10" + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" } }, "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "dev": true }, "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, "requires": { - "d3-color": "1 - 2" - }, - "dependencies": { - "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true - } + "d3-color": "1 - 3" } }, "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", "dev": true }, "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "dev": true }, "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "dev": true, "requires": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "dev": true, "requires": { - "d3-array": "2" + "d3-array": "2 - 3" } }, "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, "requires": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" } }, "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "dev": true }, "deepmerge": { @@ -1118,60 +1070,39 @@ "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" }, "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "requires": { + "robust-predicates": "^3.0.0" + } }, "gl-matrix": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "html-tags": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==" }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", @@ -1195,23 +1126,12 @@ "whatwg-url": "^5.0.0" } }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", "dev": true }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, "rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -1224,12 +1144,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -1242,6 +1156,14 @@ "dev": true, "requires": { "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } } }, "tr46": { @@ -1260,37 +1182,37 @@ } }, "vega": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.2.tgz", - "integrity": "sha512-qmH7aD9GGPpssVdxL1xgcdxTbQzyRUeRR16Os385ymvQhiwCYQNA6+eXUPAZDTVLfk0RXu6Jzj6kUE5jQ80EVw==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", + "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", "dev": true, "requires": { - "vega-crossfilter": "~4.0.5", + "vega-crossfilter": "~4.1.0", "vega-dataflow": "~5.7.4", - "vega-encode": "~4.8.3", - "vega-event-selector": "~2.0.6", - "vega-expression": "~4.0.1", - "vega-force": "~4.0.7", - "vega-format": "~1.0.4", - "vega-functions": "~5.12.0", - "vega-geo": "~4.3.8", - "vega-hierarchy": "~4.0.9", - "vega-label": "~1.0.0", - "vega-loader": "~4.4.0", - "vega-parser": "~6.1.3", - "vega-projection": "~1.4.5", - "vega-regression": "~1.0.9", + "vega-encode": "~4.9.0", + "vega-event-selector": "~3.0.0", + "vega-expression": "~5.0.0", + "vega-force": "~4.1.0", + "vega-format": "~1.1.0", + "vega-functions": "~5.13.0", + "vega-geo": "~4.4.0", + "vega-hierarchy": "~4.1.0", + "vega-label": "~1.2.0", + "vega-loader": "~4.5.0", + "vega-parser": "~6.1.4", + "vega-projection": "~1.5.0", + "vega-regression": "~1.1.0", "vega-runtime": "~6.1.3", - "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.4", - "vega-statistics": "~1.7.9", - "vega-time": "~2.0.4", - "vega-transforms": "~4.9.4", - "vega-typings": "~0.21.0", - "vega-util": "~1.16.1", - "vega-view": "~5.10.1", + "vega-scale": "~7.2.0", + "vega-scenegraph": "~4.10.1", + "vega-statistics": "~1.8.0", + "vega-time": "~2.1.0", + "vega-transforms": "~4.10.0", + "vega-typings": "~0.22.0", + "vega-util": "~1.17.0", + "vega-view": "~5.11.0", "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.1.5", + "vega-voronoi": "~4.2.0", "vega-wordcloud": "~4.1.3" } }, @@ -1301,12 +1223,12 @@ "dev": true }, "vega-crossfilter": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz", - "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", + "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } @@ -1323,151 +1245,124 @@ } }, "vega-encode": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz", - "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", + "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-scale": "^7.0.3", "vega-util": "^1.15.2" } }, "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", + "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" }, "vega-expression": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", - "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", + "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", "requires": { + "@types/estree": "^0.0.50", "vega-util": "^1.16.0" } }, "vega-force": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz", - "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", + "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", "dev": true, "requires": { - "d3-force": "^2.1.1", + "d3-force": "^3.0.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-format": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz", - "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", + "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-format": "^2.0.0", - "d3-time-format": "^3.0.0", + "d3-array": "^3.1.1", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", "vega-time": "^2.0.3", "vega-util": "^1.15.2" } }, "vega-functions": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz", - "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", + "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-dataflow": "^5.7.3", "vega-expression": "^5.0.0", - "vega-scale": "^7.1.1", + "vega-scale": "^7.2.0", "vega-scenegraph": "^4.9.3", "vega-selections": "^5.3.1", "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-time": "^2.1.0", "vega-util": "^1.16.0" - }, - "dependencies": { - "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - } } }, "vega-geo": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", - "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", + "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-color": "^2.0.0", - "d3-geo": "^2.0.1", + "d3-array": "^3.1.1", + "d3-color": "^3.0.1", + "d3-geo": "^3.0.1", "vega-canvas": "^1.2.5", "vega-dataflow": "^5.7.3", "vega-projection": "^1.4.5", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" - }, - "dependencies": { - "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", - "dev": true - } } }, "vega-hierarchy": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz", - "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", + "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", "dev": true, "requires": { - "d3-hierarchy": "^2.0.0", + "d3-hierarchy": "^3.1.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } }, "vega-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz", - "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", + "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", "dev": true, "requires": { - "vega-canvas": "^1.2.5", + "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, "vega-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz", - "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", + "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", "dev": true, "requires": { - "d3-dsv": "^2.0.0", - "node-fetch": "^2.6.1", + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.0.4", + "vega-format": "^1.1.0", "vega-util": "^1.16.0" } }, @@ -1482,33 +1377,25 @@ "vega-functions": "^5.12.1", "vega-scale": "^7.1.1", "vega-util": "^1.16.0" - }, - "dependencies": { - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==", - "dev": true - } } }, "vega-projection": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz", - "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", + "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", "dev": true, "requires": { - "d3-geo": "^2.0.1", - "d3-geo-projection": "^3.0.0" + "d3-geo": "^3.0.1", + "d3-geo-projection": "^4.0.0" } }, "vega-regression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz", - "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", + "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" @@ -1525,29 +1412,29 @@ } }, "vega-scale": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz", - "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", + "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-interpolate": "^2.0.1", - "d3-scale": "^3.2.2", - "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "d3-array": "^3.1.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.0", + "vega-util": "^1.17.0" } }, "vega-scenegraph": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz", - "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", + "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", "dev": true, "requires": { - "d3-path": "^2.0.0", - "d3-shape": "^2.0.0", + "d3-path": "^3.0.1", + "d3-shape": "^3.1.0", "vega-canvas": "^1.2.5", - "vega-loader": "^4.3.3", - "vega-scale": "^7.1.1", + "vega-loader": "^4.4.0", + "vega-scale": "^7.2.0", "vega-util": "^1.15.2" } }, @@ -1570,78 +1457,70 @@ "requires": { "internmap": "1 - 2" } - }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dev": true, - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } } } }, "vega-statistics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz", - "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", + "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", "dev": true, "requires": { - "d3-array": "^2.7.1" + "d3-array": "^3.1.1" } }, "vega-time": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz", - "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", + "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-time": "^2.0.0", + "d3-array": "^3.1.1", + "d3-time": "^3.0.0", "vega-util": "^1.15.2" } }, "vega-transforms": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz", - "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", + "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", "dev": true, "requires": { - "d3-array": "^2.7.1", + "d3-array": "^3.1.1", "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.7.9", - "vega-time": "^2.0.4", + "vega-statistics": "^1.8.0", + "vega-time": "^2.1.0", "vega-util": "^1.16.1" } }, "vega-typings": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.21.0.tgz", - "integrity": "sha512-dG0RtnJUn3+BQMO4NjjTdcp5UTBR56yQsLXPPCAFUHeLuycEVKlyhBa/kbvAZv2r+QxdeEYwKUNYy9CQotF5KA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", + "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", "requires": { + "vega-event-selector": "^3.0.0", + "vega-expression": "^5.0.0", "vega-util": "^1.15.2" } }, "vega-util": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz", - "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg==" + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", + "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" }, "vega-view": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz", - "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", + "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", "dev": true, "requires": { - "d3-array": "^2.7.1", - "d3-timer": "^2.0.0", + "d3-array": "^3.1.1", + "d3-timer": "^3.0.1", "vega-dataflow": "^5.7.3", - "vega-format": "^1.0.4", - "vega-functions": "^5.10.0", + "vega-format": "^1.1.0", + "vega-functions": "^5.13.0", "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.9.4", + "vega-scenegraph": "^4.10.0", "vega-util": "^1.16.1" } }, @@ -1657,12 +1536,12 @@ } }, "vega-voronoi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz", - "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", + "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", "dev": true, "requires": { - "d3-delaunay": "^5.3.0", + "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" } diff --git a/packages/vega-morphcharts/package.json b/packages/vega-morphcharts/package.json index 0da7a4a61..fa437d6d0 100644 --- a/packages/vega-morphcharts/package.json +++ b/packages/vega-morphcharts/package.json @@ -30,12 +30,12 @@ "is-plain-object": "^5.0.0", "morphcharts": "^1", "tsx-create-element": "^2.2.5", - "vega-typings": "0.21.0" + "vega-typings": "0.22.3" }, "devDependencies": { "@types/d3-color": "^3.1.0", "@types/d3-ease": "^3.0.0", "@types/react": ">=16.8.0 <18.0.0", - "vega": "5.20.2" + "vega": "5.22.1" } }

    L%b1P?~`h z!Xbr#k>XgluBInqLrhfg-Gp!u5gyv@?g zw#EzWeO}Bi09h7rXP-u8+`EFp9;(b>(6u{#59y9WB(gsMeTG4cUbKRE&b{=QPEk># zkPPu_q>lWeewE2~WMFyNDUR&owbfEnLXP~3@FFkx-3-QAq3t<}WE=ZyNJ0b;DBsf* zBMEC(Li>I+mo3uX1u7+4=<3@2=U}fTz?0Y1yO$}_`->*U~{69$d5xzC4$ov z7kplT?IDywbTh)Q_w`vBWz#9@#h*vB8D^;IDOwnnlj=9UuxIl1nR%j@4D|Sde{p>D zJ06}~XyB@yXSgz_@gYwW36COAOQes|{5&VB^GkuzAeDvSWil!9GC!+&=Sg)jKkX&? z_lGe2*Esy|VHBrudJX~KPA*hN5p1obl7mln84 z7Z~FZ!$4fh;M=jL=@eOx{zdXF!2p_5~8-$bdZMpQ!rRj_+51mXuh zwIurDL_0vDOs8=ctSHkVuXeNecCG|NGD%FTE`6v)#$~FJYI!4-YNV<+qGZrCb5*G3 zgHx#&LcPy*0!7t_6|T>|NzCAp;yM;ccSdYfvNs0`_41dboJZ**=zMo~(MuNp>mOU5JoTog$rZG9M;L=#8nT6` z*P8cE_b`9r6TY_b4IUtjMYZfRnn3;Kr1u%KngAM0d)M*ldD`v%#ct`V=V*h1iO6sO zxI$E_Fa%L~>N@_*9ngo^u3UW8&;k}5Ft@z$$N%fukN8qoj;9O%e~Af)-9aBTv9Y$j zK76Y98oDg_#L!G(uQ)h zF~h$cTb1Qchep)5H5?2da3YZ(%o_T(t-<;ZtJ_!{RWol8S_n~Sb(GR5;*sU6VE+aW zHR1@M=FndKuvYv-koUl@JFScyiY|}a`#s)8*G{# z2H=X=&-j=V@DEkI*9Js}J!IHaru~0(#h~mri zsvHwO%KU#6Ryrr13#*j%`9CZv@}=9T7E4LcrwKc=1px)Q76dl9pJQj7D%vB!S@M-kGh13U zUgt5^k*Tdr)uhCQfXno~$11b=A{M;D8A4s`J8 zI~2nPvN@{iVQ4Rnu2T#m2dB{(0eE!KEqorKn|XQ^A7f|(R8j%Mj5tMJu4Nr@fpp%?yVJop&l#c$U1fQmz(7Yd!P#a=cALe^RuWy2b+ z(D3F}lJ=5PWpvYHL_WEXcr0;RN&kf=MnzMwhRy_XskD_mbT&;;s84Z*iB3a>+M{4~ zMPT*Kwj=8I`vWFyHaE8i8^}9D>DCa*9aPV)Z4I~ASUoq`7;bH|dTwWDeX}psbN&91 zwR2nBn}Z>1=hoJ?H#b>3x3#eag=g??kaX9_q#)dxvG<@1ieNRc7s0gmK}bcA>?i9*;x+K~ z`FU{B`$hhIljo=zI_phj0kt*jCE_*k+0*k??hS$r&#%c!`O ztwyj+hbaZ_K7`>N&XNp6jPLipQ@;;k;=x{TUwnq;AN;|LKb|zGg+1TJkM}|Jeu%7Ko9{W?owH=nb)<2NR(yYpJnJP;-j3Z50 z3Zy!c#YC^qU*pps-gV-PDkER-=^-+=Sj`y#dAnWOPG za_0FA$vn=HLuCo8!D^+Y!pwg|60QDHNoH#04UtQ|tIOy-{*fGh^_#_l$D6l~_aeV$ zxnj7YVkkk;6oZVLh)Do7B&8#VByKIzHULGfT~_=9I2mh8*|6Fu&YeLP8d>etd!R`U z;|djZB~{4D>H-ZN9^JB}aXP*}TkrLIJ180$?hH2{Z(>eOoTERgHv~kyjz1_4cby<% zmKd38zB!~dM`Wxy$jboDMdZza^bg-0BwLV%9SDpK!wwn3fv0g67Hz^Wyi(yxan-R6 zWJLRk=oa$O=kp zL$OUz?uPOLz4;`_`DBZ#(Snd=vxrj4s;2BmaGe4szck8qDIZ2Lee5rsr@L5X5$%JC-bF-uG>(W+~+ zf}H3L28~V=nALCMR{#EeF=_=O!acUAwnEbZ_6@gWwbo1&Flmy$lDdV)N4~ROX5cEAlw8MnSv}O)wh8U^y!HK{HNR?W zY$>*`-kg-zKC386ADL6VScVmF4SEz9=-^*wblL<#xz)^kr9_t;8hWBAFimguvG`K;~}YKZX^RRk~CQB}xsXMK(*8J!xO|>ak_F7jbMq^kB)A zp=_o1CNMv(O{lN0XtuhvQ|w0tG_!YZu|OUtk|67Q@Q}NT1>Y-s=KyaF#P2W68O6=) zD-ClU{OKc1E4|EO0*6h3Cn~AmQc_$aBQ>@r(qIavkJjG}VhrgYsX9 zR`Ry~VF9Cb$=pWMHXZECyM{;;xvL+w`=56w6FUY+cdS;iv`ZGTT6a<8mB?j!rek#~ zAG$rAcWeN4(W{$4J#YyRpp)}vEAS~mdhO5>#lz=*yyT{(0+hcD?6YH|xO%}|drMRe zsypY?CN25o{#53fJee}cJO@2XDFhlHW%#M?;nol19 zEc|NN_#&M|`^&ti9R#&;4aPR*Y+jRa^pPu-cy1u=V*-k9w`sxV*6_tjp|!C}13=hb z&qP^JjogdKfhZ>uVLQZ$=1`hYEX{oX6*5Uvvz!VU2neKsO6NhUhbYYs+sfV9*H(z> zys8MRt0Gd6QJ`GwT^XMKHu}QN}B4*3fQHidNA; zFqgNhnvW)3EL$(_V(|Fwy|6akH7{G4TQU->mTfNRjHF$bVPq(3ohP9(?n%O$nGd%A zh^ddHC9Ibg!KW=~Mi^6e(z`^l!Gy#HMSKRwq@a-Xu)aOyw8&DB{KwFP?7`|u$?4~k zGC{lGxe*pAveepI;D9OHrn^3B{!<-|^an+Mz`NX>sMiXTPy-{T@_6AJG&1zCXrZ5C zhp#Xu{(lW0EmYRZhoMDY85ow{x^i12dgcVTG6F3axWOt6M8asi{~sRKidz0dLwDjT zDngb;$iO%iGIK52G_vu5$eVyFDbouex>y#i;{sz5$KV~~Q4cb8S-PKF#`@HACQMsF zZVv;6azOLAK%$H+02a- zUBVcv`-TlMi=v>xiU?tGTitF#@!I(@bQrO63R{EQBa~cM8#FH5wqw@cQozvImXK34 z)+!{5o^GhxYm>PJ&8$o~Lla%j#wcz#ni*>A#JpVIXcJsi2Wa<1eYCPLZT+=ZT+(;# zjNY}bn%c_cYgcHLocNk!EF6x}!P(9MZDCUhF{ySkMk_N%jayh5Wm?a?YU^%^dk~-F z1=}V9bK6IDeWl-6Ct#0SPQ6UF^7(ykP#N|BNo+~1Qa6P_t1kVaThm5!EgOD8xx5W{t=0o?Lbm-p2>h-v!rJ6>e?PENA|Ea!P5QxoldP3 z933yL+^=NI+U>fn*_oKC#r^$~{1%+1y`IXqmd4kl;zW9Z(#F6){z9;u-=bzPB~1uh zB2ia5I9_EX`mi&@?UCwGse8%HvGeuWDo0xZDq;2OGo3B2W9b($69_hqX+WI3LXv;i z6~lPJqjvI7so1MyHxU)^*g1M0x@!a(Q}I?twOA@o8UY4SKzWKX!Yq7> zFqUAz5{$y)D|6eGa9NrFlOfe=os&nGDxgcB23Ld+)y1nX+f@-rMj0%yH7;Bo99m;m zQW$&tw%pe_p!MAFE1nMgq8Z^|ZAO+fLMqvDU+ViVqA=fG8&@(CU095lOz3r7PKsoP zigi4eL9rwS!>9NRarTmRm2ZKF0=^r0#3-y6=`ouyR2&pDw!Ee>^G6AcgO^b>Xk3p7 z?tYj_=0$#xzrY_Ah13k_2VTsPNkRQ$t=o7ZTU!sshOCD`TAKU7*eR%AH8qqb-P_-Lm{}^jib|PKDZxzC=$g!$a+81UI+<1% zC+(9UI(AI|veH9rZa(NxQgCD)>JZ%s%QLAQ zhT3OBCg8QoW{#=VrZmnR4A(ZKaprn|ZIdl**0;BZYiiIXI(Z@H|B__YwsIoDDCnkm zu&K-EcKO;+m7Cqv*|3#7)T?%f8(ZTtsCI$uSlb$>!Q8iO+$sGtX8KG37|oHG*4r8E z?pDgo7&BcK;?KCqgMSvHAgczI4bB&*NeOTm#6A8Y5_XMdyeN?I4WyeNTKZeVanpZjZIB+Gm1WW-3+{rKyPa3KaS44l$346~0kIX5C-Q2H^@}v3j@qJjx zS0%hk>#sDHwOj@+Jm!<*aPFaiLWZMMs{w=);1v@qjiT_;fm%^Rl0Xh@w%YZ?8Zai7 z!8nQ7$5dR1GcjY-frU8MGrWvwtY`l0=(U5RVc^vD%aW@ zuiocSh$?EDc5K&Z)Rk%Dq znnL+%%RPjWt`~q>>}!7=kY65u=!}5|4hz3N;PA*-%p$W0Zlpn-Pgd!Q>8bGvXdGHBd3RQuSoKBgM z)8Zr?@i4)J>=?-!NDiTsp(;?~)CdZKDnkVFA+;szRvJhhQA{Gm5NjiAC55+KTyA~ z<+K2*<-+W>9{yxr@Fk0(k0lqJ$^5E#9g?@o5ym7=QwA8i@`k`=$MVv{e>Z~l;m-OF z+PZEC+89EV@Zmi$w5%;QW!>ObV3d zIJjGgSyV)qWpH$tv2n;5itW*kUVcf>6ulK-1fv}&XJ?GXBh**qi)TKf%1b^H6V|!v zFxDz&y{Rpc%5brOlTLO{zy0caX98y|?sRBK=PomAHI93i`80unPdzgqOyAMt2e|bv zW3rm8OilID_oYA!aZ|!z5J-hvlvY_}+E*vsB1t)j$!#0o+s z=tNg4@yVkyd#3csg7uA&M~@sqRR%gFoC1SL4Z~j3KCP7XClsn&LmeH zWh!vcM8MI>=o}S_bG?Lm^2A@kPkG``;3u7U0=o;?#f#l302v&%uspg@Xl({ic7`yA zf5Hgx}_-gM3J&GQVpy+)&qzsAcSzvbggqbKF(c-Rv?$Nhc0PtgHQ0#AEk6> zr+ypKfdv3WPy*G9x4JUUnFG)i2s9YiOd^#@L6WkAEcWn~z`I`Xv88RcWTnt44d(HV z=l2vqx}~3&07v)=`hkCP?#UO{1+6!Aj%dmHObeVHa})!($UI5Fl`vcy7*3VwhKK|u z9|F3JL_A0>=&}mE$}r|JLNT(FXW<;5X7C4|Fr7Bci?-)d0L6f-JKa5_8~rkz0!CuG zJjsBlyzobtyH~JWm;MRhol6As6FjMC3sS;QIK?Mii0S?q=uhZcJvsiL@LWeVoW4*! zoY_49J@fDO0F7U~n90U9OMwkTM;HI0;a}`Fdcehj9%lb;54?qVf>;P>fek|S17Kq? zumO&!1vp9vIDp(lZ~#&h!C}H7-lr7e9mP@_IOsyd)lGLNQe1<6hkENK0^@7%&PaT7 z&NwiGE9HN}3l(VQ+(flZU#LbVb|Wd=j>{S;bR$T`zL?7I^#^1|o>&Ad(_v zh?j$yIPr8mWRlfth=e4>6u^+6hDhvnzvg||`;xcELV=`YC+FOAyVvV1M=TU-!mg@a zd#b(XlW`^TdL z6Z}xIgLIOuIJYV)y)XKm-p_?ML?LIT&dZlB9Z5{P!$vSv%Q%=SZY9OQ4CNLv2XhS} zZS-O4(;_Xsdeg_nl58bAm9}HO==A$+5vT?}+?X`6i5BetKIZnZY1X0;H)@)Aclhej zCV>66zG!;U z{fRG9d;I|=e)A4F(eu9jmJ+YMZ(mX3h4(V0#JAonF7w%Y^^2HioUo?q)C&(OapQ$- zurcz&8_^`4bK=sws8He$@A8%sC*F+PnRr*+#g%t8qr^|%HP`yiyQxuPXlb8Vy+rD# zR<*U)Wc5?Mxm&g!(S!wW`}gL@vyvSeb4WTap! zbi9hpjL>SUl~Fm5TKYSxS2njOVxu@md$NO|jAXQBNt!Fbq5Tl8$To_aaQ6-kt-|XN z5KETZSdr-phuOxvM(PQNHTXa@p%>bd7#)zZ;wY#Tv}q>dyt4^l+C;gnTTqkbVqu`B zY^6~_4?`k&FItjbn+bpw&FWjoZAZR1@-g!O%hGLUK75Qf-`;kY#Dr4l9C|#%JC@e_ z^V~W|5EUC*pt(&!?PG;ED@xt4&!vyPDt=l!Yg6zUyrPW1_xCVd2XNdD{!Vds^LAsx zonGU+*!7Dt&l4M%c#X!kvI&CIyyU6n`Wi3dvxuJ-uln&L?B<-%_)eXQ+5>Cq61tOh*x7_jI|V z2s(<0#*bXtSt$lXDRz`Iy1C{k4DN{khhA9IL_LKq7Xt|GTM@=&I8Lb6(2c5& z_03FgCIU4w2g=BqqHa+QM}bBesyy)mNkEUe1d&Og_(1`FK_t_KJ3ksZBBE9-bTH5M^#)DZ_5oe?_Yi3dc6 zH=l+we$+^qF5~4c&x07dyb8{FJ$aXqqIrk!k%4$82WY`{>RiD*ovWsQs;uqIxh#BE zy4nYdilk+txz<8l0FHg(_vtXS!-ZSuQ(n`7HFN2OSq=C1I@Rs5?Jvyq02^qmBzDfc zpCIxba$5}ZAxxw0X(wd+VG8u?tagQhV!p7NICxQFy3o_?Hu&`9#D_-x6Wg)}SgE@Q zOrTJmbnD$+PhCtWOIF$_VkX(c# z9FPmF9%LlpGsudI7LzwS%C;$P%yxw9-$S|%_W@uXt1z}sh2e(~%;)c2I5papZCzzP z3R6?TgQVkGwk5%lp(VzOJ(qPRMmQ}oI!%oc#mafF^5@OUg6|1%|8NrC6;A`RUGY%h zM&K*gwX+sP*>>eQ_6x+tW^BR5$44NKMKM`WgTYs+hnWRqx%Y;WIwa3SH~BK?Q|j{pdBliaTVNze zGn{J+zuQ&;g}Xe|gD$D^8hgC<=B5*GMMzuZBg)$GedNbm|H&T&)LzeC$r&^fWwWIy zI46>g&JOM8AatexE0iL#7Qax70Eb}`+D-wGu!hS};d4CkuN_#Nx-#LZ>UtJX^u`y^ zCTP7}yx(;KLx2_w4{Ty^W2FC(n@(nh2lPV#yHcnhl3RL1b7K*W1Bgt!Lu*@O?A>cS zQ@LV_(}_670E#td2ue>P>P&M5zi~MSc$`KX>W9|! zGDB~!3%y6p`n6zeBrgUB0LzJ=#UDEJU|UG6Hgn>-D9uExra9Unxg#hw^u|ZSV>t~* zTy05uei=?@7bN9ZzXZ6QfTu;_Oqz^u@vgBK0>0CN77tNeD~DcOSQ@k<#15$l>Ez&_q|ca@>7DeT<$cp9|M#>3I8KA8&m7E>|57qxdR9OSZ_IU&;Zw)|p0k z83H@Bd}qlJ3=y(+zW8h(HPRrE%(tf=x8#$ExESUf-A9?Dk}KjN67ND=%@eQ|4lUm{H)Hi^@7ALg~wq z_SQw^!|;1%q-LNU+i5r51umWr82#PT!CSS&qUwuPFC)maut~>}@fQn=`KgeG0Hl>` zIEq#BdpFtfY9slL8obk#W#cHns=HGuj8>TsOHmpJeZ0$_AiHb?c{|wwk}5z>6NQ2+ zY80KOu(G2fNFD=*0F3_7Vc4I!dXYT0i$d8IGVA+UDPLzEnf(I_ksrrpFY*A~(lDMPv=DV_vE{wb406D>298*)GT+E60?wNE_(M9Y$YnGI3>Z$HIZ7y;4=`^z}E68 zB%7P?W@Iiy`)h3B%XdXc0IJD9$6cN<2~2O`6_WSFvHekNP296wxJE)!13tWwmq#}* zsvqewUt@eEp~W;Olj6~-=LiNi_cJu*g(Sguf1Dql6yRfsmp7Pq%IIfhVUC%o8_UsG z#`4^LthRJ3knu8BNq8P7BOUKWU@%QWX+G^CI*j6DS^8OD)IeQ#zQwEzw z-2ffFbZn+{Y#QYWo}WnIO%2`6x3;EgM`+o}a1QEbbOd*cRf`#|ND{uvVk&NdMo_EM z?~}OZKH#)xzkGN2%DlvM;pMA0c}+|&IC>)&fL)yf`lT)I7Y)s)Cw&3uMmU~E;plb) z4vPdmd~bZjSmX1ggQ_3LMeQ&&ijte;DjjmbPUPRbXz{`(#g+(C|BVM9Z`Q|5o&ttWsUuk%+-<-%pt%?tW7l$wV@BPNEM;hCx zKpwtu3X8;LqheZ65mI&Ju40Kzp=O#EdLktpNqY5;RYV(={#tpsVd<}x$BYNNWnmsf z6IzIBTDF%iw;7pj(%9Xi5T?3WjHS3&*+S(Oj$**0 zA9!&-9dwzS-Z6_InAG*ETn$D$VBieIx{4mC8oiTh`c=DJ4JL5F^EjY5fHJ96jowK$ z#?P)-lkR5Ip?PQVn^ce9Mf8)uwE#ylqOVD%vlwF?ol|yy(ub9?Yd1b2ls@(qW9+;q?iyIcWBP8Dz^_W74B z&j(_Gt`+#xGWsB@AzNM(x@NfqRyNp!m@=ld)?LjdcU0KCyF}P2TJZ#oKqJTdJYjhe zwrQnVOLWrmxA^@sbBRt|{uV!0W-rm*jZ_(Ti^JN(8fku<#@4pqj;)otj}{lHbriKt zKPl|u*sBArFZ>l}nvb#!Q5MVvqjlJ8?}c}#=f5tMFA)HYJq!t9PJHH)I0&-?rH}*@ zR3kL7G1tm+1u#+4SQ;pqrP69ZmF3!AQyQq9rP634X6{bqrDTmbR@U*&^7^bUC4Tp99w)tiqRV3=-P_KQjLVq`zaZfr0(=6Juc;~=DOoz31tC< z%-Pynu9vS--6=n+tfJx(pNav;bI$Q&&h?0s#CI z6x3|3Lsg)6m;Q10Oa?q<+S|?HTnRCdh9k!Ss2M3P1(Cd9942P?4E7vg@BphIKS^(>0VfM)E;T|gQV-YKl!fN> zm8h?qqG37SlyxNhLc}`fos55Vd7MmAwBJHIuY6Jcx=y9MBw>ejg#zgH4vO-ozT?f@ zvotFa3lTGS@khZf0yo}rFSJk>9xuGFkk!iyEl_=uiLKz${;F1J4=lHWnb-<#w6AI9 ze5Hx=g-49J|0`fe6ZGXeoFx7uTxsOyGqeGk@jQkiTd>d1755e|!j!KcKS}CU|HwvBDMFAcOgayplT;oq3yEE8` z4JTD#PRCpBM`C|xCq?g0uA;gifinaZN=)tKXL0Wq*2cyNpo!r-P++Ar)W-QVoLuk$ zOt{%!Mr{_@fgHWR|1lSO=QNppwro2Vs&AM53VnqL!)aAv!U#U{IMHe>q0&D-JB}ha zO^y*DDoj^?kOuX@>}N30g7!s*!|5pbeICsb9r%T_OO!@Ppu+J^Viy%GbC)ctUxAU4 zE9SkjBUvYN(H@+I*|NwLmQ%ymGSwDkWJL?9Y^4JupJyQ_Id7z^u({CFL~+s99Jgd_ za$UM;vNXF(OsSwqi{VX5@oy|-j!Rj58NJ0OAU)59l*Cr25u#YXXhdFwixK()9jYY zH^}nZv$Erb1I$lqDs2NsR7#C)-xGbu_as#qX&{~yz%8Z=sOd7W4~bo&s3vIbGa?x! z+MP(lYaqA8uCuiX(z-~EO=V4olhVb7D*+S$ zsk;kTnv7*hO})%A^-qJHD!>>ICJ`oY@bV;^dx{VR9guf~LZwPx=_L#eFC!I8+m2$U z-i+cN_~`>ee~SL`8`q;R6Mrd`2$zUFfFQ9=%Uj6x_!(pt`otjdT74H z%_RA}!M3(^7ikWP`8aRpB;>$3$&qitzZX;@a>rIKweK(zLt92|VaEjx4KPll!JB1+mr+3rJsSfaTh z8#cCg<_xrsdjo$qgWwHbGtZ5x^7MlriC>6T-@cVO$1l(Ki++NdLXCoG!Lw{wyQIL^ z>BRj9GyhNT#tR?*UM!4};Osx38KnPg76j_?#vC!!<;_yivM8`#p+7dmS^0EhY(<}af1kMprdI4~bs_jb znw34BQ;b;2;vj}TL&Z!057Eqlr(5GePQxv?zoWMj!ZO%c!5m`Rd#BpRC_ z28O46N9W`=5~V(V;7ZTN!#o>WlBoAVE7es~R1<+iuSRFKRb6h(4E&ENg0TRUtoXKI z#qyio<4?9}AI@NYSAE&^txGiL z-Fl@_Zo>OkE+HjX|yguM}u6XP93xzJ6!sWp5#-;eK#S5@sYGkse5FER> z6H(xc+imDg*WJrkR7)mRMfXpS+`ebWS?=M{kZ*fHEW&()m3HwOFj||aZ0n5xkW7y1@ z2NamRct44T_@PsigZ}Wn%}wo)=ph{iHFEkhcBFaU+-1(I{}!|7Iq^<}94af(e|9ip zd@Qs~KFfR;BzxwJjQINgzT(OaGk^#MOBu3{9yIa*25<^(hlV(jiyX^Mq8J>D`ghzE zdi~%rFQicl8Ba{BVDAvs0;3UnK{be#P6T(hP zKhGyYj8yMAUJxSt)@*^p_p%kmX6{4+4*)g`9#h2(IJS07?YEtADY~2h`MksK$y9%W z%z;r}#%KW(gydJ71zhBitxz6uJFxVZbln-7rjVufz*H+*7?@`dicAT#l|uh+v8h!@ z8B0y!O($vU{+`D}#(YM58@pzhW%TOHP>^m^M@zswVS~IRzt~EmmiZ;lwUfzxQu3Wi z$*nDE>_9AmjBwr+(`~l)8S`7D^6jm3_V`v(pC)W?$8J(!VE6Z%q)wEzKP9(z@*q)~ zc&CIeJJycPN1|)L5JTlnZ<&7~P4UARK4f1(vAxX}9D(4|6N)=Xx6(qy+hXN>e-E8| z$QaXmenfwIJTLe(3LHRSo3nOu6dwCymvZSEPjNOVluvQ3lYKT3Ox~D&7PK18bj?fY zJOkRckU2J)BlI{|`nqJ-i(*!?MIM zxPk6%Tn1EaNz5zD?mnDE+EXIENKFO~pwWG2B*}! z4d@J;oiE3B?5`}k!VZ}{NUzAf;J-+1oZ;%~fvW!{XOPeU;@=$nZxM9W3L@b~w7IHU_9)wt?1 zT@?%UbV9LFE|gNsy!7l0RXk(1V3_H)hi^jv6~XDzg+TDwyI4=MX#qo@{lEYF|M~Pp zL!9UY?3iMoo@@xSgs|js%vZ)SmvOj0&u8cNHk|O2(kQ(QV|GADOX2l9TnaHFd;-eZ zZ+xpp`+Z)cJ;pNtTO10)Bv?hsHSf`K1IIkek5az|q{vgA=EUzLnhyQY(ecAlIL(bb zWZ1(F4ErDLBWq(Xewm)Cenx@cD$w=mQMO$<78%`03FQlqG>PzQ(R+}YGwJ66(RE@! zcmvzte!hk6P0uX8h4&|g=i7pFkrk%yZh=#Jy3P~bOJJAZ!eTEtp;KH;KFXK<(eaRe zUUhLk;;V(GNa@D*EXR4jd_}ceyBdGsqrE9iR;xYQn}W`+mcrghvb+|CuPamnN+^qm z6l0#(wSRuX9_eEoCsCn&$w0sGL;4-gr&pW< zji0B9^aV`FMJkV0f8x3??-3)MVVS&0XnCwxJ(o422`vzD*vAL$>0_j*uG^pQ@6U+} zmC3)qza&CbCiVXQig-Gito!>DV(UV{tJ){IHRV~sObfK=JpV9N%7g(aaQQ5EuwD8^+Mx>;tJ*HCi8wbXM!Zb{#JBj?u43e4dyUssqb*z__rP}pdH<-zBSrgC*yA&ro>0e(=4XRoaXOh^Mvp4 z9E9EK-|((o+w{#}Z<-K*|6WnS+UDQ?_2z91n*ngh<*tdpFN*Etf_gWd{A z15DYMN;gW?y;^0jUMn{%%~pM{Vbgk3i-*_f(FOW$G-^|(Nx z^d6y5C}`SPXpKjk1Uh4k49XCGD#s+-C*YC{>SuC?omWPU@>w9!QA^rNJ5T!6Zv*n|5;$i&7w$9ill-geoFhjL4>Np_pbZ>_4*BhZ^#dAY z@0_FiOqb&6#m_JIw*h@5!THhYQG5(M*EE=L(#23wR~%aEYCA~2IVq?~nO!;mBE>Sc zD3%X=%Dy{y9fWU`5n#0%Q?aPHq!dm+C1%5m=+aIeVrb#a%IKk_fJt9sN3GA>BS}b!Hv1qBp!1A7=V!yr*Se9Qa(A4^3?k*n(!0Ga_1CEN@rXqMrr0G z9f#S<^S9yUWe97_EqK{^2#*+d0Ss_7#d*kQ4q=zk1!EU;Ol7%nL#+St-a(ms6daW4 zxFX>OUdFTpa>iiqe1n8j8w{bQ9FCID z`}^2s1=;%#Xj3}CtfR6Ay9`wfmY0D+(bAx8E?1WX;7+0VyGL-c!499lQY%%6X%ZGR zG#V0`WqD8%xdCHp5io9V;~!y1lG5q-zOzor!%gfjoe^jilF=FQ`$SWJykqkT+6<^y zptXqFcuH9J!}*zI_i5?7K5!ij`DuVLc%6(4O|JVit8FW-D$__LK5b3tUB8WOjR0LT zd(DMaWPPh&qxjrO>F>Wv2C+(jbGFf`1pvY=nh((62%m-IK4EJs#E8lwCbiuF%9W$j z4k|3@f<2nbZ+^ggG8|}k5{^bnDScJa|Sk1n2SA$ifp0RX;O zuKyxQ?E3UrtS>A32rpfk5q(4R__2X1_7Dia8 zMDc9o0$MXNI-(iCuV(FdyW;ah*lfo;`Y?P0+nrM1KW%SoT{;i%@9Tcdp=2+5bou6$ zg9?jG5hR%$@QM!w>CP*zL!~f)rgSlFwnINO0(QJY#xr6G*Iic(uX0GG)7l`w7dH= zw1=|t5vN*@?ZOjxG(*?sUu-#_i->UpUdE*ahF`Z|;!b%-C6+pO!uGiIt3L-a(3=@# zzx0tbd(q0xL=Fy{m5{C>mp5Bmn`X02UHecn691U*IwraFKI5<%sC!}?c`?M9GCACi zeMzBe*Stw5?ZoHAepuKqyf|=7xiis?%Xl`!1%SO6^viY>&&kbG5Q-QhipNg;44tUY z4-!(J$QwAs(H|zgni|r1?9I2sXH_r9;?s6S5DBI}C$_dm5qwy*!H*szblH}8iUPu8 z_@KFnp)1MFmB4L^fYbZQuC!}`6>av`PLW#CK4je6&im*%a?)sAJ?(9$vcPKj$PlsO zbRXEs8 zHu2W#)7VJoVT4?~Vm#!_#`&e?V~*XGEu1-q&z4Z`2569qZYF60Cn8!Pq;&5C33O-3 zrk$H+%3sCFN>+HYT53e@M*;x6alh``Mra=1MZl>dhx3>S&;c9JRnIvi#0=M4>0L`( zSu3T&8*ReMT5W6O<`)B;S>eS2)^3Mzy3U?sckQwtk}*(du{-ZARtG8>owP7NmoZs% zU4}P+hVbkhYZR5pE29rTa}1gNiL--Sb1p|LqU(9`IZ3Y*M~9~@C=krQU;4b=a5Ez} ziskKJ-~fqJ<2+*|5J_>D=M6_DZhZ*F#B7Q3sF6a!lH%QZ1}Qf*x6I~P-a~eCMT4Az zB^?VY)caH6Rc1hs+=p}nj(KP4W+njrw zac?s?B%R@MmsX!YKG3K1Ri?8->D5?$5X*KHmW!~L?{ z|H#@eQ)h_x>jCND4h%-#=m71ZE`kwxFc>oCigQr`niK^9l!fsb1$3n>Ndy<(Ho(r+ z87AH>z&iU0^`5vG03$gD2wxzCEd$`MkjyT;y;^y%`o#!s>|15F$glN3J39LG>G*DO z{0sw_eR}fErzd`e^qcrM3gL%70)FGm@H~QF(yUfIx`|Oim)IHp%*U8XN_G4t8!$-F zCFKfUUy0$7FWsUm{bC3*ivmsqHV23!6y%2FDAmJ&bnq#c^yRQBh889p+n7x64x6>5 z4p}5td`8|u*=#Um5A~Zf7D&a$PH;a#yI+l}7NU!m_Rh}CpJI%MLiX0y_Vz4ypKr!A zFSvp@w*BKXk5x%&VL4|k_`VeIO zkNHFRJMc561i|{Ji$ga~3$R(#O zdDEYs9N>-afG)5xhMI0y3^7=xkt=cafjv zXY57`&N`W0WH)F#;PEgHXW0u`;Gdq{;jC>sX9q~y3rIdDmw0m$U^0!*FS3o(X*d*% z8oC`lUwhLbB2qeYXfZHbs3SsRQLIU;+{s41GTDqTvphF#lN-Hw6SnJ8VT_@&D6E;Y z?TQDV=UQ$Kz8(chH@+oFbb&VZ<{dzClU5PuNrSMI>0W^eRDm*g zs#7Rd_I4_U6(>231}dCk5IkCzc+HiUKE(&e{0ir5bOQ<)PWO!HmTtA)Xw|+P0rq<) zFe2||Myb^MD6DuK8x>JX(pvYS1Ve^1;~2FffIu9&l_h?bB#B zgRN?ZZ41qHZh}d~w^Nj0-4AmQS8UU_>WL1i2y!yWm&BDI;82Cd^0VuhE|9bO>24UJ zZkVDO*@N?QH{Eg!?Q_X)oP^V2QGW3JBEYNau^nqlQ4>A zhe2M|CuF_|fKMYI!LTi08Fr23%j~F%8PB6+bU=?ae0+g-m+9gKodbt3B`h(E`4a9xTm+*7~PyKj?@fAn-_LSVYz=y&|I(QDie>a^D{dDX6 z!%w~P4*m8U{Ikc81AZLvZS&dyO)o2`QLV9jAwe?27rU@B)ohsHtDv-0f>tM|x>?1whT7w%OFrYYuibp`{1%YOk!HxmT%cLf=() zHL)j&T~oTQSsjzr70|WHyOPzawKO5Cq*X6#LKjD?AtP@YXtwsW)Lz|W^)w+sXtlIZ zOBYV7v!@9KLaVE#%<#Gm^G=7?)#3GIiduc`uCK591Fd$b10HDG1Ig)>b-bN&M-wvM zj!tN&qT}r-U^`VEZ>OfEYE@0tG*Q7yx$^z#Ro}r>g_*n${K49ffqKuhkAsLb~f3Aa=_=O$ZRX3dF7f zVpoCKH9+ht5W5P*t^%=JGmR_Ey1F>K3bJn98Zm*#&Da3jPK0V#UJp-Sf!l!58)6+%PGmEUJOR8sQN%eF|^#&#(3!-nJ(N}2n4K(@+jlO|Kzt+)&bl2aN?)v)0ef{FTIUf6Z zD)tQ!`mKg0Oesa){cg==^%T?gd(y&TSuy6JuJ}V;@rSzN4-L{j+|_z|njY?H z>AhV|G&QlOiH;^@B!?|U@P{oe-D;UE`QpQl8JsTNLp`kyJ6cay?qR2^2|e2m6|)>F zW;xVlaHv2zG(b7*=@%I2^n3cQFJl^%rOAN-%3!yt3H^jYLsrDVP%r~oxs|dWn3Zz1 zBZ=BT5_R*gUe`p&Wc4K>s{|5SsL{~Gp_XozHBr~BJ*~HQD2a~gucuA*nwrq=`lir8 z2RsnKRI0msn&_A;saQ2%Qx&ob5?b7RR#iW%+AziUwA7v{wWp<8rj*PsB&sH>u8BR9 zCEr@@Y4M&Zt{+|Pnc{sNX!IHCc5{m{N6tO>IvHSQA2{QZrz#2_aS4)s0ta z$XbEKK(l1eR~mb!lpy#@!?e{n)T~3D^u|B{*EEZ)DaZ*DTB=!*b!mHCc7d zGV{{Zp*GDjYw9v^9;-C_O-)F>J=5WyFani5Q*TeOHYDW3_PXYs(4Cc*`LI?+ zCbngkS*sz7q}4Q8La0<)rk|D|ib|`e&~53W@0jL06RqAxD?KxqUR7G}Dcue!sn|0+sVAINrFYoUEaA=| zp);l@86>oyfqZJ;blC4o>xU+5plg0$*8HF%9S#hP2D@5n*OXFxFfbD}s5dpy(nMDi zrnGK{fqvJ(%;BKBtBHom>S;n?J1`r4(9_~QQ@p3e4SE|03kC^Os;|R3G^G@zgMn#Y zclBUkDhfMREeo{=iGd^(gF#9P!BL=zrY2-otCdPk6Ln3r%)7oMgwujVLlb+NFfCP0 z>49bmJqC%M$&ztabR|PdO9{nNttd{YRs>g9&1wbwDy4cglU3I&Q?Vx!1W0sEmX;DC z3lj42W@%RY)w(8{nvn16oBsL@eJ7kYpmXz1$fs(*W3oCXYtLlKSo&R4s;i~Crc_r; z^-QUrmg<>OJuTHYrTSW`Z%PUESv?dky;fHA0;#4Xsuj(uwj@zAS;F5zV$WptB(ZBs z$@fE|Z?d$=rnsO3NHk2AmKvC@2LeEIPP&+no@5oWo=_-K; zsfH$6CQHE3t(a03Ev08Mq)gVH$bgR>LZWA~(6JCsi}h##2N znk2d=ORym%x|$^`YG7!&K}QI;L8oc5`i$NNT~kT{F)*SVNHsOl*Tg{I$-)>IvCg1d z(-ss#LaL{ULrLtGHBr$-O%uDCXlVVe7V7Jul))eLmEallg%ud|RY)=D3(Yy`4@@bA z%%K6pq0q08&>jzkv;g`;CVwyx*#ZzECabPl4Xvnz(ZCQ!kZNk8W3ptZgT5)%*HV2` zs^24R_U(T?^@9;e{})w1)J#@W6aTPAqGhsFu2Ju5Qwq?!;3P=wYND=*Kd0KzLlsi0 z+Q_vXjg}@9M7D0jWU0EsNW~k6dzyGusUh#0s#URc8Mz9>lzL2IA;e2TD0#3sOc(HssIvAO=z{Ddr!&@5n}S|nKiX1tX=&Z*Ju{mv zeVxp{nao^qrkl5KW~{F>);BYzGNAQZHT@o)!~Y|Cwti1PwWm0x-`7voIWeLjNa^s* zRP=Q!`ep_Os>`yJc&ZGuRCWTZ!@9}Rb^hN)i>Jfwc1_mTXzx`11}QCW$lJrdHu{*3 zud=5JDQyJZkkTxrMg}$21J=wdUHy;h2o1$JQ0Nc#blL|B*@1zq3cAaKo@)Jam7+*$ zZB1fJ^?3iI?32VlQQ24Tn=DoK{WsA6$sla~pJrM5KUL#>o&K*`)r8i|HG-;GS=9(O zh1IAuje@0lC~J7HEc+c&Qfg1xKS*h*$90N-PL*idYE@N9STk8Q&C;{!Pb(bFAX-9% zS6XJjwFDy-bdXZf)f=M&*|kBWtsimu6pg zRae(-=)81wuDj-Ay8~5K=Gsd^jFp~QTs_58mO|5LFAYd~{i-H*HA{7sJzeU(fiz`l zFLjFh26g?9_EJ-SPJ3B43DL2stxB~lV$y0^)Z$;K>NE!oq%`YL>m91bu`Gs>|Dzd| z)IU!Tsz~C$z8Mpe1mQZ?xRzm%oxRHLdtZK_hO(Nxvw8f|II zWDQiG`LEKJR#kVoPU&f~1gm!T3~ct~2=43|72P^Ls8LzUeA;?YA)40fK~0vb30uky zcJ%bOHKJ>Doi)`xTDneEE7nbx97_-AIyLJnRg|g-wN#WwANgNiMXB}V)Psb4VRv8( z3H|V2Mvtjk|Bcm`=2H(v_B%MNnk?Bh1GO)Pgz7kz7=)D8`#MdiBCdgQ>T8vwHPvkX zi?yWrEzBDemT5DRd(o&rJ){V`pPqEyzdwBUf$r62mJ^5fb_mjgV0Uk8D|#N(n|X;t z+ciPCQmyUQ8_m5|csd+KXRsqsdi2D2XNb@{LteSJuJXghEwA1iHT0+&-QTzPr&5t$ z$p&JG6ENyJ@R3_vNBHA4D)l`NIJheQso|ep{8Pt24gAx@KUAdU0fSe@KNb7~HL5kt z+iQB2YISeVYt*aF*6~Aw{a_8YB7>>a_!nBLniS>b^*-Al*^rN{n~!PKX$o3pdTKT4 z3C073s-_SSn&_RHE>!c)#M0R`z3g3t(_T8FnBxVH#(%9tdqJ#rfBSg%e2@5504oxG zm?ZFLl)|5@a0-9VQv3@Glzf!jqIZ*s{FPk9Gx)(f^zeh%O|eQEkKpGzCdVh}5(u9z zV)A@)I*r25R5lx4Pz$j1@frJv-&^#=gU{n|hE31rlW0o*QxG6n;dTt~1F6izFuV({YSGT4q_8Q9|#z!Z*c9I3C|py(~&bGji54{LJ24Ce!#Tq~>*E zc#z~hm)bd{%>1eHM?*=;cKmr^LahCv$eS(BAc{9!GhP$-N77 zy0vxajM2+a8-0=-&9}GF$z`QMaRHX`hlL8JOU{d3|2OAu;hlL`#(T%QrIuI={f)!p z6~8ocdmKYdu+t4E3TR|oTY1wm;z)+-?z^R@rP9P`jm1S|e;2GAjL`GWp|yeWT|Yg+gNi}0wFOAe zu3Sdfz7|vfN<0&tl>q{9U2Hwu{^BUfzax3GaLQip)zS6-;o)~4AO3b=#r)1;-!HC5 z*amYiT^@!P(xTiK#|A0;G}zc}`21Uz-wOZMTk^cizpzF%QRhTUO19)heUE<|reH%Z z<>ObgPq?OpVp|7cj39(wXZ-|F@5rAo%+-ECB8`gdtKy=n!2VtSAnATrhPm66VaW$J zsxoZzVUnmx!J2%>ZdE-P%(sK;SAD?t11o3gySN(}XQNW+hCXy<1+79*-FPP6e7XI_ zLMfqxgM)xE(iHuE@{*lL6S0pt|s3b3J>;rR}{3 zLp}&Lw|Bnz+t&TRKU?l&sok*9E}mEH+S4>=p}wxY{qV%Qao#%sGdcrSwlj3hpz@4I z2z8~vo~@|k4J1M~!i`Zhj4$EMC_axfbYGfhkC*wMG1i#!&1 zTjujrobBJ_6ZkVH-F(BYI8Wgi33}$6;};IHZRtl*lkKL=o`KKKGRn2z@&q(w0w&>f z7QIN&rBwL_nF+7b(1jl9LZ|4`XHE|zU#+a?3$1Z2=%+ zz4<{fl*Pj>Ri)P4pz8-{TQfQgSBsl44v0ipD%S?mDEIEROeMi*3keP5X-RaC70~Gk z5kwxeMpShNL$>7Pw3N_eA%bIJ;V5wMOi>S6?VA6pbP>+pTqo*=2euDT*cc}Y-PI5p zuVa+W>D*clXW@7zkL`+ITSD*(V%Ogl7Ijw`={hmiZJ<&7n()}QUCLU8iBKNJ0Ky7cNSe|5I>>MDPAWnL-uhS<67 zpyO)?Xt*YpTUl!UV_nk}4eYqucthSy5nDQLN z3!Fts&hM3~a{%NT1Y^LPg+0}Nrq5UobL{L>TM1T_Bj zZqL?vNi$e=T0-1}zOi7JPsuY{kU@fcqXF?W&ByYw=-ymMvg}AM_fIaK)S%%w_n{UP z!1jmj-I80puw3?%E5OJOnDy&w1 z-b^zv8*suPuqNXWK>qA+&Zkc!_u08;qKV%)*>es3;USD>v+z9Hm_}#OG)jgMpE0Kq z1-s(Fa`2rLuFu^kv7p1NkY(bD>oSr-3ZXQLX2WSbAwTJfz2bht1w;}Cayf|j0*^P# zr5mh?jr0t91wdn$jmHXW%tzPTd#sqcFn7J$W5r_2)12$=K2{V~QZ&7S1iQj>z2C@n zs4RGkZTiLDF@UD_o5mj|1`yzRCrt8_W2+LLT4H9bGLkBzyh>j9cdPL3mkR$3SZ@wR zXcHQ;4~Hf#(EF&}T8=OAT{$(I$7AbV~W~A@sm2 z(e>C-r-dbpya1!iDPY1j5iFmc^ye7hB+Q}>jNxEnIU)Ar!@$tq4?BT`A^V6Sk(yI~ z#XJ*>!c5r9gj}OPHXExhN3H3|eU9>k#5y67-~g|<>tIKJe|vidfKc& z&%nzO*M;6!w}U7bCm04Raz8k^dStyw^hK((ui2ynAuKIOepM^ zzKpdKHo%CxX&bh}cj9ea>$Z|0F3qBF3f$(iqklh-FXy+%&(4`KqG}V24|u1Xd~w*t zsEsU4ivjkT;h0#5L9IFHAK#EvWI6EZ)17lv-f4w9XPuqF@wWTv)54;%5dM~&tkQ6w z2cpw*m2(1qc%R4VE?hTn{|IeY_!8{A-yIB&DWfMD1IU1ms5%m4)7v}if_JRW;$hOY zZ7iaW`}2}G&b+L?hs^}wNo0qnf+4&+1zu8;)OM;V;qzu55$68gB+Ss`vagMtjl=Vq zFHJ3k3!JJz#r0ky_x}^&7F~)K-55p1qY~h%C$LB71s=C6dw$b?3bjs7{Dq+(LW%;P z9m2!Q*HwLlBxO{}c}@i*2E2UpZPiqw2hOaN?Ob?*?6)s8>+K78eE;`%A1WuN3we|m zg>1}x_2Tu(kDZqvvDw!ou_~D?eBJqZ<+Wx3gP6-H<^=PcN^vBxol069q&Yf4USr312nr(XmaoU5RWy|mzk&$DTj=JtpT*NXf@-R zECz-kJtEgJ8=ycavfpqH#$`L5>0Ch)GlprN18K~f#fiz9A;$MYI0sBt7HU@2&ck`f zpwF6zY0S#o=jLIBYes~h<54_l&7ud$9H-}+1xXB05#DG9Brzi&CfS9)e1#AC<|3U>XZq$ld@yz5WDbXfsl|`_b`}9} zM&|8%e$4BR$MI5;S5}^uqYst$A0Tb#|B)sU2j;X(VD1}@N=jt`f;ON4iZ-n1?QP-Z zt@X|Z8oXSF8bA;W?GuH{- zcIZdJ!GAox3m3q#KfQ|bTwQY(+=+r2#~PtV*vmsgVV)H(6?FmH z>FA)`PJQYznYvC43$AVT|6)9j&cm^#^rI1^ZeAt9D#=lLoM&a21+C5@H>h}H3W4n{ zE10cOWx-}-)W$H;$R4vo0a$MU$Y?vLPiv5g-sfPsP!g&D!I?qDk3cCt3peMqMq;qNv} z!xmoA9D(3ajNnCL1GY?1A<*ia@Oyh%ST%CK!eryL(?Vokxx25M!qv&)R55X3@;}T7B1!v-9@e-SCpHnbZ3$y_aOBqIra|{ zZ?af;wQ95SXuRwxoU5LMwS>cD7*V9kD?3nSxz<2q5e-=hXG-ie_Uh$2o+Gid*Q)MS zP$&br_1z}qjv-lZ)EgDFmWrKbxwZ?*AtWo+#@-%Ae1&S|Mx~)!^#WiM;WaEjE&U2S z5YRjTsSwi1X*#;~XOJ4l$!C8Ii5q_oe{cO^>DL9t`=fEsD8wJ^p>RC82x&$s^@`XN zdH4Y9m?+CnPp+bII*ha1el#SCF>mJBJI8kT${D?(}2rAZeqR~mHuoy#n_KAhAK7O(}C%zzuO7_TQnj;}p zJcY9=MoUNQL+It3-&{0c%p;zvXgcrV*1Cpg+Na8RRKQ?(=q{ZQ$=VZwwh`lBF6#mA zIFg5Bw99bKP%|Fr4JEvY{;a#)bfc2MDF4h1CLuTgQV8<>%w1fS`q3GRF3_rqtt&r0 zAz&i^A7vq0F8Fr>l9|6*ULaEtUe5fZJF=3nR=rd|H32}?kae@N@U%3bSX4ZHZE<@a zX$`f|G8Jm&a$Z9>^FxIzOGSCNKUBI@E-zOw7~!Eh)?k)V#)IAL=5-8ilEMUUlm{UN zfY%|+1OT@81qFY4!q^Z=h2;sl`MR+_Hoo%W7z!5qW0bqD!)Z8*=j$d6Wv{e`^0hNn zcJx8eH2>sksH~2aj)Zk1{fho~YSwtO3)mBn4Yrk+9mTBNd3=FY)>H`B%-HHj;pw*S zn=s#k5AI+rW?(qV-x2X(ztkZ-y4n8JG_I8Wt8;ks7w4~JLHK6%(^vZWtLwz>=XPB` z#}*#3zTJpG%>E{93#t6-`XyE-B>wYHu5;xfjo{s7(=eIAurCWI92)6jsBh6I1sR&d zBsZ?o){QY7pn5?4Fa6k0K% z9zi}44qEtZDg{U0XDo&i9^7JQ7Yht&Oj#dSGJCz4ayQE9#w z25bf8E6--ufXN6ZA=o+Y{?5+qASmyWl`IMF3LlNYc!gE?{ zhHk-Cfs_auIHLWKXFc5I!ZZan(OI|-;61PR6F8RB$qbfq8Q2LEy?pk34D{oSF5?AA z(t6C>2SoQO7A4!2bV7~5+7u!T`yif%#ANas`(T1NStf|dGEUGhs;q$QrM~F?3_U>` zx>@efoD(4DOubm9bQS@$0B-n!Xb{6@bp~|u!dee7nP%Z!0v8Ejt2cMc<;U1J;@dhu z6Vvv}>(3~0?Y(PK;?{frmJ*-6a7>Ag#n`oKdoAVcs^wapIlH}Pxzc3Lu2I|Ft1@TT zYP8BN=Ik2v+FpY>yK1#kFEeM?td(0e=In$`yuik)l^XDSXPDcpLh>Qbc#+Gp4v-Rt zU4=iWm$dH~pWBrtEdRU=k%J91{g!NDRO!cge&*RP{a7CLf~1YB62es|10y3a+zBL{ zBrBU?j1mR+PA{+Jc|oNLGf(2DyW9}NDzLL;%MvZWHWnLzci^iL*`u*n1?_U23SJHO zY^mWC5h`vXwL?s4u<`S<*`9=2m(emAFamCimK3>>eC_nWG{F2773Hn5vok%&$T|(- zZ5d`xVJPgqCPwcyrh)AWs%>Ls^I?}g*S*}%^y(N@)d5be@aZP*GZyYLYwU|%R z5YXEKA$I9q?OVbSW2$f&oIARC$EBY>7WePC^xJm}w;&ZTHP4Yho-@JWF0u7e#0Y_P zDP9KH0uW}a>~@UukUOH+Mx`GT7uFYX{v(x0Cvd{VqYcz(Zd?L+7w_;;H)az6hN=xv zFgFZwb>^~s07L2Xw{#B+QvF|f%MVNEBSgQL`VO61P--$mv+4z3t=5#8mng zaV*+!3`@gn65yBq_7cguiR6C%mU8{Sy~o^h$?gA2xqo}%|Lqm#UrPS@Nb)!SHo^QW z$^UK+`IxxbU3IR8}gPbL3q$oXB4G{u>3`&Q_HXbDY4WPSW>HA-iwltNOOU7I>hLV3wu_QM77FDu7c1p@ws-EZR zgKOy$5A*GE6}&gw<)RcnWnC{Mf2~-r~rCn@tzOL}5d>bXOy5_s~((b#Br8 zfqX6%{H@uwm&auYi>)m*FN;Z^q`OyGvX|*F97h{$UpCu_;_M=tZu}8VQ}i{GU8mO9 z;$n^49~?v|-Zfo2!3Rv+pn8>0j=;m~pcSpx1gdNAizHq5dm`7e$UCi5>Z$izml9EA z%jTKXLK3c8Z?sf6Uv4xSOv1J5)m^6G>brXtkiCy)x5p zFxK5N({HuiT`W4mM$45}9kGZZ`!2D8dZkfCTmj8Cngv?##NK5@-=inC=!Q9fqg)T1 zwdK-}FqQt%v1oY#lN7Dj40u=CL%O;&rYUt?XdI9(-kb!ybLx;l?lR06<(v}hryCmc z-cz30GMIH}iqXEote%!KIoE-jqB+&52HbJQ`uq=inCSgFwKIDGgFcU@KOYXbfn_Z8v?FCT%hv~;}!RRwWrhD&26 z1*5{IEtuP)N#Wm6lUp2m1|%m99Z6H5gQ+uh=Q^r1hSMPOEnA5;i6D4@ zuykQv#Ih6Uma3(vc*m_SU-J;FPP+1Cw%h=+o#g%=SBI;6#kFh!GB|Xy3*0MHi%NsE z?7lbTt1SeA5bbhGzXHASg0fE09+0dc;jr-fl!vnGDP1oh>M-92T?H=!53LDG;bbxf zMCu)VdUE*l+jocW-@kbC`qPtRC6|tl?c3|HsujZU#`9W)jzNc7G3>6Yqa-Vw#O{;ww{Cv82!&IrB!7)RHXSW5&EkiI)OKf|K9D z5ix&`VH+kYXx@6j23?5>`*o8SLTcd>T$JP=p0z&G8nHjc16y!!@qa zXs9TgD@atPq{ohceV%@1>#bxt8|7+v(+COWP2I)7YLsT_WrR0=5Ay1`KgjQxvzeHZ ziCt18f>C#E*6$}OFpgC}GVHRISukrXF`;*e^#L9h{o|_jJ ze^@U*CNa_#kUjm*8%4=1&TdV~{<&t^_5WVe+`Mvl;r%`jlPn(R1BlN|o?ZRBj>*pJ zcQS7lqN7?%}wLCqC{Qc<8bs7ao60;1S6TNPmBVX;d;tBjjq# zQjH*=DHteq@f$p`4U3QH0iM_xAD{3Y+v)qbx!~yop7%a5l{I+y5xHq>8rKrxzzAE< z(tJR(Yj~sqF<&(;{rZvA3t4K0@Euk$-E_MiNy$>noHSy*M4J8;rorPIc?1#kGTY8} zDn2=e1r+rhcEk3z8y`*KoXM*mO$`}~xWvfiN~IDI1|Aw3{cC#v)m)&Eu2InUum65q zyeI>atINK9I^}e+A&O$RNRpacNlKMY!r2V1LemXtk+?FRZtPmGNMqyJ>s5pd@0zQy z1S%FJVl65MRHsK-|3X;t5ClqR%7*%k7ZFa zPi7bKSq6N!SSunE4t)XT>rKKDw14&4n?%uPNS*!WO~&)#XTL~5C^r9t%tIagVHAG& zmd^hDm1DOZk%e9C`Y7!Hh)!tl-U6aY$XgIR%v2ZPtnNh zt#>gTL*nDmyO@pP)i0OcczzitsMYpglRxh%EVBnj`4U zhslHClBFVaa#{LSWRL!>B}#dp%Taom5*IK-1ZKBTPIm#ozON4{37Evi@K(gOOM9M98+_dY#i#Sn7YO_9@jKg|}Z< ztL#;`(I3*^I$H0~^l55`R2z=DX+}u>lAxYHzpi=LxNOfwt|brQHTIaE(cO>p((Q>{ z5-~Y{eD;uauy>OTqwB1thhQ*Rfz_j!ZRsN{IHwfi4nLcX93<1UA4GPl5V|1K}}BU{w0pAU$l^%kU4dDrLgU85uFI zNBHZ3ldKgvmdJrz&Y7|LK3P%UU#3@)0|(bBQgpKjmK2h{ea}m%os_-H#U7dh!zHFGM`ozoy3&N!iQqG5t2ZhV?UVDF}>7}U_-tsfO9DPR*T=DV;dN4IlfArwULF4r0`6x1T>)|_9WWdG{`wy8y za2FyYP{oBZ5OF((?^bK6;xO13fevH#z%a&Zr`ekaW1ebn6wJ^B<`T_baGEZ>GjGC9 zhH;D}zZp&wCM$7smlkMtya_z~gqwaoLfX}|8BCxx3kIGP z3r5}yEr~jKiQOUVq`R@P1VMA6nE-L_O~mF1sJBg&D+6MOE-s)DIU&ZS=^MgJw3En8 z;R68mBia&7bRl23bW>-NuVpWx);>Ck>*===FMZ**t!lohlHk2=Iv>yp<3{LCc;L5A z3IGj{&hl&I72-W+X=gG)H$KaY3nyW^LQmrbJ+mxwin(^&wjccZz6xohqx^o8A*;Cs zlnLM8=cfS)LUuCun{TSy4$4DzVobXS)3!PUI)b4cyWSBJ$j7)B`4iqk8*2y`N7&Rh zswxm&jOIYdJ96d>k|fLj!28bN@Z`no4~O3# zzVp76|Kjym<@3D(7G^~-5$V}R=0?xM(oF@HDgFdN*+d7Bs&YmZGh!%l%O!3rL5$WY zkm3@zRmf1_hb6MJ9HZ6*1?Ao^&e0Jz>tW4f57SjlSC5Z@_)Xo?Sv;maYO9|L>$hyI z*OH)&`nUYDUGh9OR%Jl~d?3U5DD+V0f%hnm#@-y0$?^XDAlnRP2N_0ya>AXl`;C+B z%z;0d!Qbui))p|5iZ&}-=(?kH11IgRM{+Kplkr;0RUBRGm6c0M5QRpm8@{b#Zmt}A zKcl-nM4FKG1Kun8KDaYCN_}YV1WU<9RD1@cI_GAAS57jkr(;iVkotKsbH$YJV4WQ0 zOO~1aJ>>7ve`ACT_1Jc7HCs!ik?qd)XOg!6j>`JOaCkwJ1MB5Dka3l+qVups%~}g; zgVaAyT`KwWc4RZH$P#DX@&sq4lM|#>u92!CkuTC#CZ}zs9oI*nj#lvwJ`$_TNmA+r zoqfHGnkh)Ooy=BXwJp$~_DM9Na_!XQ<8?LshuS~68K^c2`5+kXY*Cr#I{7rD4&L!Z z;FF6p9xvBgSExkq9WF~B2nhyBB4=^sf$D^(-Vb;dEj)8&%}+`v-+EW^ zEY8yD%>QBG{hjCgm$$C-y`@Krq9uhYp4uz+2v1>}eFy)dk1Rk1KVTAY!`~tO_x#?R ztOl2Yp;^j{EGiP0cMCRECRchxuJWEs3hZ|cS#tME3GWCR(?ZqgRC_+B6M`a z_lDd>S|UKu(k3b_*Vw+yg#0j;M8$iqY4CkXp@@Q}bZaXGWM^M~CBc}R>udjx)`JE` z%H_nu_Oeu>v|smgeJIdpbkz#oM8xMwI3|6zgGdc^nUsa&T|sfPzP{ldVe?djTP&+%3ipMcIPvw|TssNHm>UEOiS@J%jUHjhQbg10tw z@_?C{p`vciXy)uU*O{T24iNkA%x&PEaeK(OD_*}-Q&m9S4szc>vP{x3UXX56iPH|E z9JzlTlP`Y9EtFfThR!yvnqy)rmup3ZO6WyQmPe$^1ajn?j>bS8%>z6IBD!mU9t-fB zDeY_nolf>ifZ}H4c3@@%*Rb{H7&jva1->O}eGUl4LR4@Vg?zJNh^!5rjd=CKp1COP zupPr2JFlyT3@_~5UT(_JxATeb|Ld!2jQ|uD8rfiIS$KsDkBoQ<8;x&(J>2s;CiqD1 zp`aa3hVdb>H)iz!X`_&y7kIuM6KG) zj2(L{C7B7$BSR!4BBBU}03|UJ_p|@?RrL)ZC_6KI*4h6|ECPK)U#qLDtG=pfCCT?# z%|{iolL^I^@iCauSGGy+|L(tzT5w(XtDlQ}pTI*DV#cCIG}QLinFiZFYlw#;-tA(#5aD|o z&(&#v@#G1SJ+o2HLYTNcNq4*Z;Ur#g%DmOpX(u;psZlBy(y0|vJSkDgwR~28w78eH zQZ8&LZ(b#ChEJaC-Ch&U-ZJ$W#Y0m}t6oPg>}K@j$%9IX^d-bp0#~+%)jDmiPVr2TOv3#DKw0eBIg7{rAsz(8 zdF!NK!Zp%B`_SGR_cK8NAJA-sP#C(0@Z7~b60uKH9Y9RonDRhO3-$3U10n?_`&S+@43M#`3$=@P%(n#{GPth6Tc zT2s2#WR=#GYpwBWqd#ldP#PH<885g|V`>O}cxXQ=-V%rMss3C|2CEg%nd)4`x>s_v zC!)ZD$Yy1e4qG;AMH7ZK+2z@CPtU7e9n#Su-2ohfKgssPc?*DDHg%~}mo|0DsSW!H zn0MfzX(2d7--Yo|vZ^xKsJ5-45}ne#L8o-L3mry~z8p%PIL|mRIOa4;{|g4NZD(1x{W41(ATsU_W`<+1W{+q&qtkNSp*DS0VumjS}Ld6-;;Y z@P06)zq@VPste>II=Qp6&_Hd-6)bkCekfMqlW|ecw{o{+4B`x4BhHCUEwVp6fM~4> zS{HvA%~0BM2K%zXIKWr|`=vHlg1YYFCTDjR2|FG3U~V#P?1mZ$PIXR8G*R;vs&$^{ zG$X1#bync5*8Is-o1rp*Qh#oBh^>mf zuPc94E0GTbtVhtrX^2V}8*sbQia4Pi0G8lIoI`HUc+#|>a=uVR?jik9?okYQCEATg z2t1*mE<2w%rjx`7+r7Oh96p_I$0twcu#pYMyNmE%Fy9^0fS=Ic)`F%5)nsbNd|CrN z!tp_yuj4j!{U}+vKrdyr(q4*{w0fa(DTiLlAs2#P=e{Q@aIb95nLR)V4OJ4} z%UaXbW+4LfJ}i~AADIB!-8UPo9Y$05{bmvNqW#m6mPq+ZFbw(}1nwI3+k5kSbLw`Y zVE6Z$O$aSWl@X6m+sWfFXr&c%Lc>MlY6at6$`fd5JZ+yr*QdV=q)E)c$KPQP9(FJQ zdmiXHJAc=$8OE=IIV-!fZhqy-nMTy`GQXIiCx z-Jdeeoj#e-YU0QI$tkVJ^ZvAz-kRU{v%a}TMKYdaX=}*HW;!f_x$L6+6>;`1Oi=S5DA1hQslQ*rA1^a)(WuN*4|ho^;(bPvXvg!V^3RO&Hk!g2KxuX=@6; zJ}kj|21Sc@y6$r~Dij_w5#2wz`T=xUGB_XvH2u zKKm0@O)FIuoSx1;vAJB;B4mb_c4Dee(ki$%g;ceWs!nz}imFUIom7_Jrg)1duDS(P zx8&*;)#^UGWlz6q!a{swg?1G{#M5*Nu&fP;h#K>2Bg$Gio~Ok)pNyIy&B9$jgR`J)|M>ps;Qdb@U%a~E=htsuy?uGWM7DiSO`c~&Vg5)dp`;28ZdqdR z+HnQC{74J$JP7sqE7ZwU~eAH12OpsL=ByRVQ`J54f=5rw+aAon?k}RC^N9yI5}ICgvy2|2v4ZiIvjgZE*75jfO(WuRXgaM#F@vxq0n9) z!F)5M5dutqJ*F!$3kW6>N{6G$P+q!t*>~rT17h;EC|O1Yn0YB2Usa?$BazSW<=FFI za5CV>flpC`vOE#xlhlXrUCv4s=n+R*^9XAxWzJVCF z>$WY#SA_Xu7kEYE&bRp5y{D1NI_i2l&jcz{&*gV@*lgP=cC;#utF*$qdwE^CUU^p$ z=Eyak2AY!9^QGkGTRmm-9MUo0>%WorXxgl*i zlQtS}khYIar0vC@W=a1&;wJmvS23#%5WBa*;(k57`!|VLjb!~#anpa2mH#T9*Jmw1 z{>O<5B(z^3E5$9`;v`NDzf@-&mw{dq%pazjKir;xnM;}fvP6LB#^g&pY#tv3nO)?; z1c<#VGyGQ9f9xoRs9NXlAUHN$oN<}pad=Ed3SkY0EHNeqXJ=<(cZ|HYpp)AcbYd2C z!V5Z>IFiMrM)j753%JANa|LtUO7v!-1*j`@_|hb>EPN&Z4n>=L$^tohAR} zapI@*U}n~nl;ljgWdZ7bf+06!WVBBQDejpyKB z{Iwjq*%(nZaF$hYxxtyGFh2KI)C1p}u0X+*grE(CrTH$VHD>!dE>2iO{vajOht zacP#t#Ban5J(&A8W;iR&}3r2|L*4lo&eQceb_V|^%Vafnvc!Q?-xn0m#cvc-|p+d^4(^3`X}B& zWr}{domBg?hL3DgZwBvjZ{2~NqLnX!fNScFJD%!gv;z?Dt{<=*W&+SR;%Z$vXFyKKUp^HWN)Yb0V8zg+AsyZ{Ie~TceF$ znYbES0Q2^CiGd)*xJkn#tC4hZ_e@L6ecU29bn{V)f0z8m&dC3x-^ix_!EY30I{R}X zQ{ z$P`eZ%2bJk^mEff(qg!`nT>uZOg{zd%DR zWv+zbT}7gBKV^XegAj2hmQ(?LK@TVd33WF7_BycfCu0V4WvaFD>f+L2|NXB=j~=ln zDgHQ5yQ+L#j~raY-noi8>dq2>M1h(fs1XsHgYwmEwsu*YS1)U$j&sV>WC~u!xtxKy zx)#`fNXr=)2i$4aLx_QOXQ3HwpR6~(cI)a?E=AG@=2m2V?9)v2Feg?I6D_~mySd3( z1i7TA1p2r}f;o;y@Q*nH4#2d1{7%hc_G)ku28-Q74RYa!A5=+kAtK&F@nT2&H!F`(Vw%B#j>X|>9_rEB@BFYm%Brde8UTp)v7Mb?+4mgpX)COt_0(Q7;d8v2 zL7&Deyd_NUXQC+S_}d!y336E0F~5xXWBIzu@_}# zO+(KVWu{H>WT{O@VbiNkSMkXH=lK0SzZ(P8=U*}@eXzF&cO5V(efaRvBkcra@4>eZ zI@$?HxBKv0Jruj++?4AH`PLae?Sx;XS}>yQ9@QO9;p8U!$sF&SVW&gibGFDa?j!TCT&cDj2`2 zjIV)3045cJ>Hv0QG(Pkn{GDcevSn^K3xSXC%ApNJd&-zUwO9YnMV#qyV_c(H8KBjI zWQq3k!oc2Wv(tFDD~{S)tr2W+Cd33R;<7&)Xxy7%7$^P7AnXkdKtqK0m^OUb3Htq=IF(PcC)m{R%v2!Y0D*gB&FmdIyl(>X zW#y3L=IzZm7OiYCm}Xlx;g%LJ7F)@5YcYc-+T>hZtVmwQEfD@VH3zM<>fx1rg0+W} ze3~*+$l87yY)^<4syG*AR6^W+x}^pOe%WL+Pp2Ac0g!>R?igQVo}Ozp5(%r_HB7X- zx(~$n=`MCOzKsk4oodQJz0@uay@O9nXHSW}I>g!7)R7;%{PESTa= z_oNQsiXR0NWXkwY=p}-41LEEacX|6NwwoNSd#WI=ar9%a8}04eX>f4+G{EhW_Z4qe z7>o`Y{>6~k6~=9%_0u>{wvK7@0I~(>)7n(2Kyyx#Wxgn(hnbe+d=#3~yS~YY;$%&9m!#R6-RC9LEgB#ZQAb`CYZ_V5Sp}^Rtvv!f<4Icn=;uNv%vfakFoe_)?ndnI&qQ7z@y)YZB`Ra>`gym8lsB2ljwCsMhJ?7QkQ)g{#p&@M|lfSdFo~zaPzAm%T5}rKN zaIz@iwPD!)b){a{_oOe7q>s0er1zUN)mDw#wudyY{~ypI;mFnm`cCYQo~lUrbpVwn zT?Y+RrD3jFjfrU$D=6`k77Wn|)fH8SgUWk`_oU&5@LKO^RJ&w;nwC+yX0s&vy$~3> z#=U$0GV~MyIbc(BYIh}ppTyAG!Ocx2SSl0pt*E>7WNBALulP-TeVk2``7#<2NgcsQ z)tDZ%w<`0*;WNC!RSrapr*Nf218LsRL4;ran|$K)2BO@kX?Q4d%m0l;*YrsBYSjhu zO|1Va-7noEh6R*cns0Kjly5c)uwBWRAnUN!MX>`j1tcj<3k^JTJ@q z{7+?ho1T2-H+WmRC26<)UH4Jv!Gp(-9)17q<42Dl{_o=TU)Hz4mo*huw*@*uFhyT5 zSLS5r+zqjB6bndQxW2}91R_B@IYhtn?VvJ3BF<{J(l@lx^mOt!xR#1;+ev9vZ`e#z ze?PU$&<)z{M;5iV4%Vi5Z5FRh()Br5n__lHe~F8o@4xFj>VECT&LlZbCwvWa=v~8T zU+Gf|yvg@4aygUO%Nc9f`|aNMkGhXLokvw1p$cpgFlK(rrWRr*UB8q@a^4c#$L!&@ z3O(dp#gR-w3XNNg6y3pe~CdL3V%7uKwNRN$2J! zZ6#0P-Fr7k;`#l(5Md>S<*tKI{gPlkYPx$8Pw(aTgS~rm)+7naU9sp2%GLxofkZWS zgZzHH7veII-det=09yI)PXszUSg4U2sxh5v6HHUaZubHU+$pSu>ux^RFi)xr(A5im zllOr-0-rLs%NpLrH3gXHg?x+@$8MdUXQRlG-(~PV5nm@TKHH&C@=Ci0P_1M*Ii1rksqi>beGkT~vCi+g9R+#*c zl)OieU6d)MOIzVVOj}NNQFq%_MK7zX(lmjPSNQJ5x&F&*7K>OfZFfmn*pw&vl&{m( zB%Zf_9m&@M9ji<#K|ja*)!?;oy#-(>&wCC$>CB&GY>~WRoVoTDFyHX7q$z1VI!V-C zZxQJynwZtdGq~EAWT)_zVQ1^&NoQwg z_$1DIF4D}BC-DMkUqjq(*+@Okkh~lx1r!0&*qhoTlsA47C%sBM&v%qK0#GGG8u`&? zk-(MMYQ^j=Zs{H}Q6tj&tOvlt z)Zcd9O!T5UiS!fD+A5K>s4k+3SyWH4RzA`yIf>7yoR6WpczVP^7gYWc<))xlv|*ft z>XLrWL-hjsX~C=3B|rn!Aq8H9>KXkUh3bss4qMMS?kawB)+5`@Je|SKcj%JE9K42 z4J-@aIch=ks&%wW^**)}YZ(U@ts^|Wdm2Bdc{vL(WK^m@dl59^Ks{0Ed(Y!{^tr3} z7$1$77{ZPPeccYW-%#F{^!?*_%-+MBD9w0y22{iKcz%yJMM z(=cJq)8iFQOL`oH`$y)693Z!Ss`MbHEIIY3+76hF3Mdc;vflH;J`)vOu(v+E_(+Px zfPTyD=d1X#bq;-)7x7{1g8gJx*dFv1{i9M%Rq1WOAS16F@xH{Owr_`6#vf@#CyLep zN;shj@2vp@Vdp>dDYyw7*C_b2-7}`(@8aN$$%67zzY_}nEPfZA#qajdo_=Kc+*SOF z*U}3b+%pVphbHxVS;ep2Dqij$w+@K35P{PDPwmj%uUc7uY{GSL4mJeDr7Pa1&qkQH{Z$s6>KFoW;SL7&@~;d1yMk;d8Y4wTEh2 z75=gM3`#C0m!^E@1DE<;4AUlfDWb&B)a#A9@>3`e_QeyV`L{Ix9I#DKJUEFV1#VGn z;VD$)r-osN!y%in?5&C9ZDr@0Oj}jDptNQ?5TODLp9{%)oycj(45I6+=*Q$owZz|5 zxQd!Sam+MG7mZE1tFR=xE&8*EC5m6HHV$7Re5u2idxKRpT?L@=G}l9-0~%@W;^yXp ze!BNT@Zat1eENouPF%@XEW~-kyTwbufj@_yqg3ld>|pI|O+WVh!wwu;Vaus`QF`f? z(My<|Ja_NU83S7OvQS-fv!hhyMgXC%bXn9<`hf|6c`-}hzN5!*FYp=~aHtGB;*MYj z74BcG_d(CA+Vikw-`eeVPVLZb|8b-7rp?e*4i-ASSKjZY-$9X`*}1f}2k-0Q{W)Y| z2r0dg1XEX%We9Lm1=&wnE%x4gHzV33+(ZnK+vZj8i(TxIG4SM3;xA4S@8Cd^(TX!aX;A^4R%iY-BwW0hX)3trLzLGSS_86 z+~@E`V@BU;0B?Qbp8y6CG-r zi>G}gSST+M4tZ4lAyx8RyGj6K3 zi-)t6g&J?H_LQnkJd*NwzbMG;e99n7oa0aa6mIILPvdm83J^)FQm!86^rR*0a2Vaz z&T{EV4hMjYUa><0_VK1JXN}4f zV6%80mGMLBqeCq3n@jrpq+>OE0@`+GH#hG9;^Wzy=uhmwwI>d0bFaSRLI7+0$(a+- z(4Bxr@f?O|W3j5a2#G%!hE1krCtpl4gYf1HiT114%!^>GfYyrp;ze*mHKu1p#Vmpu zUOML9;WVC5QWQ#u_6eor#|wOMLP-+=c6Y}&I_Hkq=dn4?q33JIDSg=P&|!OM&)Q3R zUp`6beHp%pukIzSC2@|Y{TG9sg4m{Wc{oJr7xElj-rOAC+?;`@K8Vv`De?p2(({{} z?MoWqGn__ntf7x{>o^OgKenM}7wI3V5L7A zX1H%IFXV%v{Lo^aQtXos zO=b$330HIQ_m79&qrIpLFAW^s+wIcZ6`ZrQP6jOm-aEN>j_KF`wly2HF7A!*&F=3> z%#31Q#fQ6NKCT_M@OvgR@g4op)O$@o#Qkr7lylUQ*v&I;Jm`AI{{J)#fkKc?7wP`T zFA6MHRMcgBMRoaj4=2T|_;UB-eFzdRTOVB&ATT=!)iN+0zV=OfVRjXt^iJ+wQ2P&} ztLT!?r?cLSLtaF$qCMCm!ruXmL1 zt5qD42^l;+5A6na-3G9(gVcbypbw(|Qw9YIE07$j{5B;*U(1;}G4@v6sJ`sG8gok0 zn0vn4B>)`E!wO#C+$b`y;0RhP9;Dh3caJe0@NAhbE=Oy1Q}`Aymb6UgTg5nEOh)kY zTg=iSm%f!iFR?G1fg! z*Nx0$=+dNZS#!jE;_A*#6)sp?C{<=1>{;z9fNX|mH1u=KR0h_86(*;K+3s~B`)sv& zkY7)yuo<*L^Sk?HAAXWxhjax8YP6K`yyWLSem3wH2zkIEOp^KiTYfi$xq=IjdG<(i zF`It8_xREGw`td~TFvWstW)zsy??+DuhcI;@xyC%bgmuv9*?wf^mweTqO;%l;f*TZ z^25@%j23%nsN_6++>C@j<`_rf0L5oV^Kz@w|H+RDDenv-(`~6R! z79INEF8}Uz_~#jZy5BwGpGTcn^s}ea>~;1Y^UuQ*`guU1gZrn%0z#Q`l1BIMQ|~9m zayqoU8_o3c)ag+?3_XH~!+ za-Pm6$uJE@3P#GIf$U5n1~ddVjzMwrlP$P+WMX8!kL!kSozQ?T=Be5;-hY1j_=Z*9 zIPv)-L8q0kpTrCOb$hIU*)EpMPaognLg9pO=Xq-@e#wX}{PYct2UKO?t+W~xK+1n# z04dVAz)unfI3;-b$ACY|9M!+A{>x3FmRVxMS zJ?FzbFY{qOfj2Bu&>q{vbf}y-SWDAYM9Q}A|XN)bU6 zE8}Q;J6VNrd_e;rL+?zKr{TF!KgK4EEz*TDO*o!@V}8>y7BYw1q=DhEg$?I(->>Vl>fO)Ce5(W8?iM3dC0^Q?d+bS5%HOvz+~mcglpmU~>My*coQfcYYN z>Ct(8y}De^DMBe4c z6&>RG^kw)lT6niFC&{F+uiG8{3s@FnI^w5*ve?K!w#Y;5^3>fDZix$HRGsl`%&N{Cgs28eJyB(xGTUth2hGQbFXW}dKIHgCHt?5Z! zwz{F`JBp_272P)tZ>6K9mfQ?-`qU@4bcOPxcc>Dko@F;O%PSNmQqWI-MR zIfo`2tsWd8YCh<^YLAKdq;p17FfSU(o;I=eZ#kUAwQW@x+T+tyh&2l)8PUtdo9QRi zu;x$BGh6~`ooV_m?E$Q&3k!MG7*r@u@V6;8RoVcjv^Hqv=%T&tdZOVgKx`(oCZ3BP zG$16*OE3+?UKRkE-K~_GG|>MjoCshE^2^~b`X!C~?RJ}e?(rUx&z3!}NPd(lmYpmG zSZ)QJ7R&^ma?{n}hM_vEhYQxbUTDwaYpmgUmd_)DO@X~!0p6$*ihazx{eS1dZmB7j zp1l!{Wo)D=8l|bnwxqu@yoe4W_KlBpX~7OC6CI0pTF1}&r3P~vcqIMPH}A5d0Aj^q zK4UoiEnV7HKHoxCcd}zUGTM27_>(gmQ1pud28(E|np8@CqnR#Ss$^gWte{c=NpJ9` z=(IH*tlr()t*>dd6&KN=8q(j(fQce?h<^F>iM210BRYc~FGJr)?^YGFRBu()T}?ji z_JY??9VmG-)lGqs#cP#@z1Iv&2gbE($!f2d9pkvgW8gQ14Iz2zxZH2nWyl{Px-M^S zhzc>P7P3hfINRb1r~8wTc(L?@&>$%t7Fww>&{6>Z@!XM_Uqv1h?SuyPl6{ZODB3Rz zSg~Yr1`x+GJ5N8LDB$5EU{MbF-SYHWOPe)piH%&GPicrX-w3Q3c9|URfBGg_l)3P8 zjKU9kJ!aK)KXK`p^l|-iA0`p$zkub4lEw>CxT?{ZxM){Ucxc}twa#LW!_-nD7$ihDY;6WnszewwP8(hQtjwVszbb= zw^{f6!wYR&`m~sOK%p%o z4t6SnJTcoxpsr80Qe7acR>ds_BuO($f?_rn^AdQl^B~R`OgRg6Tc~7O7V_x|=QUd| zb}GeYy6#w0=nKdeXg#~bAKrL*0F%i>Sg#oqxrN1=m)urtQ~bcU@1^b&gzDZQ=E++8 zh^!uBeu$&M576@wK!1s|!t*hkNSvnA(e6ZURo3iy!fWYq27;2gc`d(@30Ot8>#dcJ znMgmpbW=y9H<6v=pMyKs=4BOrj=;RT?;mLIMFz3+6evB^bVK)>jBEN@umZU0xBqzVY{(V0zML*ab3Kr91oSl@xRp3=GRG-Z=wXYOb zUpOCXXJ8gdT>Ts9PfLe!RLv)Wuynx zV3uEEey-G=YgE!ihTM3Q<$N*WP%cyntZuoiM7a25drk}o{3@y+R8o7{$B&`Vw?BTz* zk85R7U$DTp)Vyx7y@AIwD>lS1Xs;FQM@E80RgBZIQZkm6z-!2kk@*UqsW^tdx#?1` zP;pTF1^=?UyY;j~gr`MeqV22|ocB#(JwDgTvyybigGMxs^|x7(a7$lH^@4hZwO(?= zIgnTL);y&HemWhd>wx&V^k1_QrGC7`ub%Jz^l9iEU<+yV!1YdK2MV~ z(Q4q6ASj0QB~1+V&CO}BP>`K0g9N5@6vpQQ*;8>epu^Vz3oLMHS2@QdR~gvsknyEt zp^oAVD#X29hAqO|d4=uDc^1%zfE&PC5~FY!n_9>P!i0|`3-%|&CfM?h51rZ+oF1O-n{-iR}=s0bkFC%}&B|YT6QXTR%|s))}f(_)AcGCm*6DQfJ&kSbb zSp%MI<7WXp9#i5(c^29g>`A4xTlxja>yDEui2qC5jW}w6|yk2wyaigz8SdC})eZ5=_UwRaLA8qZ+qj zSt|M*ClLty>_v$FLZu^e$b`C~KH7>vmr{ym5Y%e9(kmmQ>T8F+ywVM)&r%od z)-$#n=Ns{pB9pFl&U+ds8rI~$^@Ci)!X>TK%+x?$EBbB zlCJM)O*Ish&uMRjor>=m)};*?vR_l$Pv6{uJW9WcECUQL5|tEtWLe;VC8m{Z<`uFZ zxu%c`|KXiDf2HS(EWPwknm_ml99J1v-@oXi;18Yy+m6PkGkn{+HzbPxi+DeBd8|gI zE&I312xzk0L(khJzckm6I6B?Hf8v@UJI88ut-4d~$Ga@U@$+6K@!f0LS8Hy&B!w{Kc) z-(QXFM6|CLc7wOjCmT^{4+gp_F znz(<*c=J+t>f&jj5m&jhdi{ZMGh%|ms6SAw!6zF!BdF3d$dP%T=MxAAwX5At25g_c z;X!EY!;JA2$h3qH$JmI7bl|NuZ!?n)o&mMdiL+|ray>Dcp%a&W z;+5BAv&(?XGjDM#ucR8KFhdyXROXFSvHDH1I8QlBKeMYXL&yFeU-RjS=)Cro1f|%* zdH8z+M`zGGoEzQY$ns9UO>~+%l4+!ca=!Def>`F!yDOp(8jF?=YSE~KcdeW-4E32% z*OFLyNEeO3;H3z0Z*H`qCiPlIi~>qbPEY6QsR(Y>+yv6OtIUSbET*2*fyaW7MuVmU zhT=vZL5U60%HN?XbPz7_FoFo1=rB2fB4lAgXeiS{Tn5q^ONX8$!<5S(nE(M_4Aoc% z$QG|o^s5{y^{QtpCKHh-obOb>i_kYz=jI*Wt&MxiP+j=Jq5zKIBORPyr1J@|Btvzq zgM{5e$kK!mS7YjbWy74K)=(X|&?|1nD;+RTCkY3)qXI)rBd0uD_;ma@LB zIx_(|Fwaw|)H59jzCy6_5c7S=t~yeWTds?}iFV2}^N?NNT7WYhQq(#tdNH>x7Vgh)W1 z;=iPtthywus4&YXEcdTUNlQO6ev@jaTEwZi?5D~3ISV2Ew0}XMWZ?La9ddaIu!oou zrrA)chzC)T#FMhzSRVF7or3y4qC)ewd84IMrZWk{Q@G;i&}$x@4+<_F56u^ip18@o zo_Z-`L;JF5Em$?jlpBNMSVqczGX2{b=yRWolw=COdbq1WSHNLL<*@c9t?+bB_jZN{ z{+N0aLZ83;iOBA3M$H4{(NtIks>Js{1 z4R+Q3xmIoC{>yW9zUE4(bdubX7Bp+;PX*Ew=TbYaC8O-?Nzi<2LkvZ9K|66o=f~FT zwAE76I8Os$PnuJl%#d)Z5Bk@4G5~m&xL$UWbUmr8cn#?3B`Oy9lQsjxpuBUeuvPn0 zO`C}t%@)vMcJnp2ercGi$8dhgW^8#u{n?+=PK4SH1W6)^GTjfxDrv>O9*Op-)E@Iw z@t|i^)7K`zPwD#b{+dQV@S=d|%R8{I%{p(MbYy3ns(jzb%Cfr3jozu6rfF80rkUKB z@~kZFtemr?wurA;E`7X=-m2MxMkPvC`w+oQ<9R!ufs%4=>is;{rb)e@f~lIDdFm2C z^|^@qA3_rF_WGRG^)&M~QF`1-BALuN$ayJvXPVkNr z$dJ8N=r(vOq#t~S7)FzI!tMMJ_L$HiOn1>W5QN!4K;m+O_ppJ3)cDLnVrun+X`!`m zkmMi!N2}xL=&jW`r|L-3wfg*JjnVnKL1QG7GJ9tdD=2%7`qb(G1(SxO0lOdQj- z)|)fD46e6K0jNUtT18#+*CLo-(`fRZ`{^6L!4?g+ULN;5${p5p)M^mHp|@D=>U5Tp zX)#K#lF=lloc)GS)frUTArJ6cHgvA&mYgmt%m}s5LZVQ&49DrY7{;w_n1rNC}z9#u!6- z{|zs6gc#EEU-4{2B7eur>4M0tQJYd}X@lrs%GOjRf{Nw&agGETC(w#P^gicX_^cRG zHzM_vQ;V&7UdDZzN9>$^CU;T#*4DePHIKi@LbdNNlVV)8^dG3CjK%O7sNBm5e)&X} z(3oD(+lqpX{#<9JCiaD57Nx^gQ$xJWSumnT{Jh|{j!Ua)?+(i+<+{(}1*od`?YQy= z6CHo2nUz&OQrmX@CKs{4u`LL|p`C?fR{Tt7zKjS7yuj0t={KHKzk$wYa}iPi8p1r| z)Q2M#57tW)N<4xYFdN41M@;BjmhUlU)^DB)m;|e`762~Uga}}VSJdG+8=g(mqF5`< z#&`wVFu%+nn8flPHZAAN7oxOl%QH&6)NA&+<#!m|jiY&<7GkaYMGvt-n?Xm(WA?&-8bo2F{|h9D`>NWI;P3RHxgS{;h- zRjt;n(h2A!Rr&}1-y zMn0dkP_~Fk$sP-$Yg6?IE)Hl0MneVV(rCN_TYQz3k@wk^y$L=E&egT{fshA|_8)N2 z3n);sDA^J5hGd$!Q)TTp{6y~!iKm&RXy%BVepo78SVUI0*V}fqe$@GjM$`@Sl^teZ zr3Z>hy-WG&AC&G7)4HnYWBeeQy72N&|J#9}Z%}qMo<3Qe2z3iNB=^((!1qQWyR4 zAf{3-`m?6QU=L6om;7`PkLVz&t8!!}=S9Pb=9P!0s`qpSyPe9cN~qtaP4fyfaN0bvM0JlQS3C_g zgv?bE{9+b~Vw=(kJOM|(#jDS)*g(vKycbL~gw?gV z@e@9p_(TU~wQ!GSk=%7F-^xvCZUaNmZ^K#i9NK-B|d<s>qlkZwE=JfD%c=VQlEGbNfnrYf0WG_5Rxty$4yy`qoxVc_p+Wiij~ zCZY6QU^H9NKH!%1E4!@M_=1wHr;O8iTDaT6c0z1@;xie%gY*(+XiV)EF*dg0B%A$U zC+d*Hge!lqA+um;C^A@g^Gve?I*!v-NZg+^UizB2KzYT%>ND*pi{2<$gl1(=Y58Bo zwf<7e__JtbZ*h^Inb24qzWsAnfsfk{)s>+r2Q|jSP79d`lvFc&!xeEP=a%NYs?eOP z=%9T?@dxc?BfUX24p~!Jo$(L*l%L=h>@YTm7eF4pra&e^l+F+L_6i~s!IdUku8(a- z>V-q1x;TA$(J+hUO$M~d1slTT@j5!f-<#B#Nr3~ZmrBm7exwX_Er}cdI>+RHYy-cf zr;xwDMGf>aGcel;F+HUuynJ9Bd(6Vi%o(Yy<=zz0r z)N>0iC_AEyY1}CDO&evtaih#{-zf7hZItNlpJ&|XRHE;h~nmVowF_-3?Puo$v zp5_b?Yz~Rr#8ArNg$7k0T{H!w0H29j8>Hrep68c#YVhe>i6o#JxPqNQRW8sAUc{e= zX*LP?(9Nn;;-yY>oVM;0v0M_dRIl3f5q;W^Ki|2&SpA=H&c{Y$&Fb7$hb6c2MY-C#xuHI}gawv5qfpuVF2I6p z?d(w0VM#51#`2Q8ng_b8?mF&`Uo59aWU8qUDxbDu`l6I#>v7lB_^!u)(UPLAI^d6^ zfbC$d#24@*Ol6t^Sip0Ey1u3gaMO>pEQngDi$Zc!)h)=0HOeKm{bPwKa%SrJf**Dt zcPQE84ro*dZ&;{)58HaXIy)~ECY$MR&MQLHcscPq65)wnpe|GY}mT1wyw>^zyXKhqVFz5 zfED$UETp~4S4r{2x|M1><8@PKPb%-}p;SGNv;L+ij62O?UN`SgoS75^i!RXESJi^G z>WWJ{oL2*{@^vh8LmhkS&AZZb1H>c`=+8?ef0-_HEN}8d9rDfd6rOG z{HRe{4CfgGB1BNev~Qj+{*Pt-die`FJ_2y*X{6L;#VjkhTEPwj(A~F(T2`l5PK{Z3E?t zn_K7n$(oOkJGJW zOR$f&CV+%WChfa?gP`xVb&>4}mm`WmthFAl0&!yNtg`c-R_fePTMwtD(#9=J?0K^6 zxtqdi_3rW2)hr$2mM)nJQtVcKvQ;dOcWrZu_SPFJJxxZ{`KD(AE)a@{)OrvwJDbCDYnlBFQvWr{iQ_Rt6imy;|7Nzd$_E}SG1QrFZn!|J>bA4<1KdvbGLDt3cmn)+5k?gM7moii z(E2?(!Zu2@;(2U;2pD`(pAM>az`#Q z-tNmk6}6ty!kwo$2tmB!+myjs+5-WCQg-us9?@5 zQc?q_mXfhr%5fSbp>>w~gLwGCmcoPa7xylM@EZphB{l{}{6z;LgAV$q4$=zh9Ck;C zS*3V{Iu_^m+OF1yrCbl2C_aS>utRML<>v^RH8mZbwwQ@}i{&2`$&+B_!uG;g32Mzg zjjhSKpH_m!ddlmCfK$z$nk5Vgp`UeuDjsbmcT&9c))nvtT##6K+{&P9GNB}uH3fX}v;Td~SYRM?bx z%FA2zuUGICqzdZ7BK}=2vO{$ZnOv?{W1+-oJesUvAA+GLdIi_edY04ihBF-Fy8!XR zFYzAyYq)8%wvVO$?38R8ZBLz`co{>nm`Yu&DJw6bZfrhxO2HV}QF;>b5w#)@!a1>` z(NTsXM}{<^jVBHffb9qd;PM1V8Qfb1oJ8{3fDUcCdSNrN+|b)pYYnbBmS1px;xKm(N0uAok+S4nWSZ38(jvi9Fcj8QNPG}id`hb|t z8QL<_MLnaUgjzLNM`=0+3r0v)c%H};%P6BO{jGx)qkMh{X7+opboo;~b#2=5&CLPh zS5op<3>+Jr(mw#(8fb+=724l2@h19_0Z)mWI4G%ag9AmyoTw!(p*NjSDel=IF-oFy2zf`Q|!Kzfi~0 z#w&&xl-W?svX%_q-N9hK$ z1KKXNe!&mK<5$wmZJN2^hgX7(#vD2@bA`XHoY5_R%!#j7Kq>lngs9pf`q;#Hzlju3HnH%po4_CJa-0vq36pB zJ6}#v^-CS>&-NF@1!=y$)GH9qnf9&uY{Dk^BmJnX#aS>i>!PGp@j_klu8>dJcxYPP z-2%h3LjhDcc{~aCzP^nWTRGTAEp*rtCVfkD?JOZu`iQ{RF5XctTRSw9PpwD;HAw^AfV=GwU#tpdpLKX`F|04s*%bJ~ADCZlXoL}Huo z0_-(&s?pAB+Ho9SY}T90+TNS5vtT0dqOKxmlm8DkjrRinDfi0&dXAWs(1U(IWRR@3 zd!a+HCvcu;Rf+Kyq)NTd1|#9lHQrY^7BOhw=ZJN*fsm{DBX8)YwZqTt1D90msNe3ZwY1i9*+==Q@`f{*GQ5|Sv@ufTWrM_=h3|%Y3 zDIm7Z(}`84yjer^w>EL8uV)a8;{w+8Q=a)3Qf!y1JY;xxJ8>=WAIwvG_en`s5q8a} zfW>@5gG_&Wsdc>&a6o9ijl=H>KxFV+O~yesp|*M}^&z~P)W}73T0Q5|I+JH69H6!T zAvXoDL`7=@&T8rWj+Fguw>!Y5NDq4&w_W_CCZdj1#NsnJ2iS_BQNUD;8GXRpu{Txr z)kdVUWElB^1zkm0_KQKCHKwp#KYcL(RGoJMg?$k6>GBhPbAYfyLm`iuLhwN3_#ey? zl{p{!uYH+Kl_g-`lkr?jb%^ORk1VUoAw$wUW#!;5ls#vO(p*cF5_XJAE2YQg584Wp zWrYcj$hy&dHlH}dT2E{Q10W3nVz!pK6(6a!QYUh1PK}Z5BxDEhYv!>9pEhVRQzhsO z3*1?ZKC!)*mf zipByu5MdA**0`n_3+QQn|BmgPet)5X&0>pi&n(a^^X^eGffzQ+X6ThsrWW-~<9en7 zRFBgR>uFD#(`FH|2lce4O_iZaXceZ?0|!@QFY|d8d}ccyw%jT6*q$Zh1Q{dn3MxQdw-!??+Ig z$kau~2%Geig%(9!N@k6cGIkOeed3gBMGcwF_YPW9CW|x63wvp^YTD1MsPD=01WMz!dvjCAJxdMlnL6^D+|Y(&ajhnmJVr}Vi%=c&2Y&F4K%-4)>}n|= z2|Y26#Z~r=$~-52;zI(;A09kCyX)wv-S0vRPPnQ#EV#;?eUsb;;^xJ(ss?0j=&@qf z3R~b~Tx6yrYp(r_N=kTLTxKP4@8C2NxF+Km&45OEY)m}m=5XIjBifEpEkv{&>!C(> zF@igghl8rBM$7mQ{LWqxO#3yf)dB3o*PEfuTpOC<>v3*shNrX{)k1VL{&aP9g}A!j zF6^0}RG7L71aAhN1ioX-!rHxV7M6@1Yi3#1rH!WnUt#%-s<50il~~&Q7tt@wG@Cou z7?xE&nehD?<5YYI7@CGI`qh zM`e&3TTNTIYtKq8;{|%;qDSL7QNx-xqp#%XG#evpPGZ7V;*HX6p}~fYh6~hNP1vx@ z-f7%r0f6nfY}d64p)Ag|A7z}N>av}2;k;&jQSH+;%Y+e)KZtb+pLdD)kD+2ZR-JJF zBEHz!8C#igRaKoUb*zqXf*zXZm3m>0tFO#y_52Gu>#ta6{Z)IZPp3<#ihi}OA?;@X zbYbv9U5~D!?HTRQJ+9M%L0Df#+ouQ}dZ8;=P*4^*_PTkFS1W+9!Hs(EZi?0P+}(nz z>$z8Ad_8xq$6kqddhAXUzFL6MgqI_?jWc@g3VruOt>m{hOw25#uV=2WPpx|VrMK2K zzM?i_aZR_zde#$Te0XznSuuOEsT<9n4x7!M6bt(zl%$uvmTnZviWsBIl?6CT1va=&8pHm{D;%2`P zEw$6oiEwG-?Mu>sDEa*-{5g8zhxts$JZIvfU)~bQ(vKh6)x6;F=d@b~ShsIDYOEc^(rFb5C) zV6MD`n>}9ZoGf}o-IL1k!|==t;h8@h=vv7z@iXXijm$M4ehxlP zne;_9y<@Uh0>ne}?vzh^H#etzX6@+#iOeue<5Az}aJNn&r7ZKGW;4s;of?;Vp;a-3 zyTY5BS;g(e39Ay#!sujWE_2O&GV2NB;twC;7vK_9)VG04;NP52jK2yRPGjRftmq+G z<#guYhiA_dN467mw)AVI&7DauRh}*(1~FfZigz{rO$77sBxVzqE}*!rhxLtGh^gZCw$0@%+TMd z?SxlwRm42THG3_JrovifhO^37E1Kc3+^llSjKd2{I9(9S?!`Jvhsq0cj`M7!1M$en zxhxgZfks56uMezmDt=q3^VmRliGUZ%T{!pJ;5n|_1th>-9vSMVq+QOBZZH%FO`(R0 zZMarPgBTksbRyifL|TBR&fz3Go%vso65eG~phbn%>jN*53pZ&F1T!9>|LY0)dPg0_ zeG%jyn|V8KqgQu!j+#Kdzv|S0{0IKYf&FAwR+e^t4e3G|T3kmT#b1nK;<{59@y@2j zDa_dKiw9KaBv3q4IXp1t{(oTTN^fyUI4zBPTa~5qc@;_2Jv#BjX{zM+YoWie(ov=M zs^b~%;4llJF3>KUStT;f0*@LI3uZn)tQp*KT(ucKp`Ee{ z8(Npi)35Auj6Z?Z^ilJnu={2vzX_pk9Rv>xX5u(WIpB9R=!Y}zHix2)XYYNy zp0T^0(ay6AbzP6N(`D4Yif3(oj627PY1Cd)$TA*!Ay<1yv?pQ5oCYEEXQ4yJwhTO* z+#ahssIk|TNjH-aNA;G&SLXoLG;>UITcCCsZgiM ze|`zMonsj<+FCY32Wy#CdkE8W?v!?c%ABKT`Zx45Tp@#*ww&S16BE^`O-y@on)wrx z=OWF_W6Vu_P1p*aoqDGBj%nHInaScZ%{UA$jhUCVS?v<|C=9wQ7BS0HJ75<0sp~oT zx{3>#J2@R=3*d`jniM=?5I980k^*?XxI{}NTJA~UaPuUxSBus8Gx6t-M(RJ;gsp_D zyA6y|6CR4CUN8T0JD=?a`?zy2g`kra2OS0x${XR&@2UEQ*kPUecj(wG^hfo_l?Pbl ziclxP&_hM>uV~gWDmb z(u+{jn{isGS%LQ8C{KnDiReaZs7Khi*CKA+IrCm-!HBipU08^l^=KO&Bj=117FaDX z*0o|lCaf$k;-3=1UePiEp=>9MGLI96Ert~VWX+|*6a4`KZU6z_iw(JXSm8IVit?l6v^M{tehGI*f)L|{S2@s(B7iwq! zBf4rEwZgR6A_DlSdBJ}3MNLCGmkSy+$J#fJO0N7U^M)wl^DQY$j*Fm}B~y=pmX3gi zL^2hd8Nkts)WW>|IXyxTy7gI2ZL^52wT_{x1>~H5D5K8%!01)4n(s9hwDR&elj|a^ zB;KS|rh(91J{H-{>ld`_z|Z()*^c3UKA6L15Wvy^{moc6ckT98Gzx$|%NbJ6fU9{8 zPQap`5BB5Q9vl7*OyeeB(G25NN4x|laQnyD-J>fwpV$nyAo%9%Pzzb8jX``*LP`ih zW~5vq%v`yedcz=ATwktuf3W{`#xt2PH`;ba+o!B+B4+^3%2=aPTeh!EQz|Yrbc;3_ zacEhTcUvKPg(INRj_D5%v=Nr|esFTLo14El$yP6zO0|khYJt+?>2FHaGCq4q*&4252fDDlDQBfN{CJLrBcPUS0ZHf;=Yd%>qmbP}%t_p@X zj3NEbjCFDHq}Xq@l5i4d{bay~8%DPkuAdkBGcbtq8)6EbfQzzbQ&h<@n>H=PP&7l( z_Lw!>C0I)94dY3)FcwzaG_IZR3$d`C5Q#OO_B(_4RT^B6(mA$_k+Ik7 z^gh(}Gbk1%K7@nhai9&^bU0az(yimX9B(1R7M;$wq=+r&Mou6df+UtwiF3jaH2l%? zVjJQ)OionkxT{!uKeiTWvF90igSA2Px=rjI3_Qb>$(%YN%Ct*$#K9dRY=%uI(6Yu# zuh2*70n@~DjjkbCtIki^NWt3SPeQhoqxZZ$hfD9WofQX*V^+Qm!rmXzuVH0>n}pg2 zqj5fHe7I^igfQ7-Gk2IBM{piJ)Kl_lmnUsMO@kpk08Ol4N1bJ26ZW*f)yXQFK+Rd} z)M7jq6`Ks*Z0SCKkdry}!lGOxlgW}soTfuTYk=Dhuk_jm5-RioxLvo0BpUt+RzkkR zb9C0igVw>FE<)-_hDAo{5f09j;c5 zUT!PHzdqhf9ho4)Ul8*d@ihlQ2_IwR&r{xbe&Vv61#^=JIitw`MR#g4HySR4B5|R+ z()W=?7={L&rk#z#uyLDCuF@Jk(bxFZWXywC)0Iu>w3X(cV!R{|OQpQ~)56|^PM8uS z4M$*$sNAK(ywAT&9nrhorH;YFVeOx)b9JGP0Kinm*u=@M7mRV{V^qx}Sk3csF9Ov% zst^VPw4>(#PChH3%&7zg1gD#Q~z-O&vPHa(KtphYs#wuIPYWBKZ zyADQ_7=Ud7U8Suq)#gBO9w9z){@7zzX>=YJ$6l}a6&Ac8z+hv`URICGN}ej7%Eb|V zZb=k%{TfpVj~@yoe#y6=2R7m)4bJ0hUFzC3 z=+VY&&ce#c8EYgo0txTt5lN(eMmX`m??Ti}lH-^MDY%IH?E2scj@T?dGj$j*6S(#j z$?!oqQ0HPJ66;^*3=ciWP{Mm^@19^*26wK1AyQVyGN(G+?{;XKeI_mtb(ohus>0QJ z73hmim574V4Td~g3aJ~YMLwCnakCO1?GPlY`VI-;tya$AKn~sR7`V{w?#fzPaTE%q z--?MIr_9(m509P|7E{d(m+$>ox-IHJ{SurS$0Q+lD{zK4TDbla%u%-Xm?Q8Gxecv& z#*xT`BAZd!;OFGiHz!ssr?Ad9n+)JJxXd6`(B{v8{^~`P-h1z?Y+=)VS z-Pu=bqELe$T3a5oAj6HLFhZU<^g_g;#RhR`u~8gatcybz)fJ_iF%og8Ve(S5#x~P* z$KB)7L?+iNN|mKgaUNtiG_P zwRLTl75&s!;-_yMRy8+SB>2$qs4n7$gmU9yjFC4d)F#T_k~a?LMpqGbl@X8pXelpC zs~TR)zNnWymbKY~Dl59WG5L$x#x$&B6X!2syHv|S#Fp!;6fsHl4v2%+u766_2K>Tu z<@vWOKH>B%*M8*e65hCS8+9@DG`5PCK$hi_^tplWIX(E^%0jDRCu!OtQ+p*VFJ!%y zv~8@$cXs|?&uLSW|G&*^Q|}jR^V`I%?OgT9=J{Spv0>i(X*SM(lc;&O`cJF_^ToBb z;6-d)4pTQ3hHHCSCHK(eo~VN9M}X|Hu@Y?3b9Uo6|5;DBnuQR#w?GX|6_u&Hr? z_&+w$`hv{9Poxblo{!=7Rm7F{Rj?vV(sG_c%4$9&&2sM+4$FpcX)mM|yvIrvat5|> z0Y}*=?&wFF9^TuO$OnbQKxmK6e`JfwN*^18l1ewH z=1Esvq*Sq$SNR>T?JI}WM`datM#JhL)YI78%gWHyQ|a)qGGJ>($(3hi6zgduIP`|L zo}PlT|l!4}ck73i@yyt6_1cac6(}q}*?{re2Qzbg-Yb;$Zp|zP%J< zzp@pJRRJ$U&wBnn?9iQ2dFlKe!(4Vidz*7;z*WPSS%ZsebIl&?J6xkuE~7J%Sx%`2 ztyccDTdjlpOiMs%U9Gavv(tYMgZRk5__Y`!lyT+P>Uj+b$kURq2uj}o@_6g#^fal; z&mC<1R69y$iTdsGVQM`%{CS?29@Hz2@Xh%$>x>tOzBq04-(|cj4$n^KqA9BC0aP9* zf_9FU-%NsPKxop~Bfc62m3N!MIE(b2#SWNbjaIkvUpRiiXCW)|6$K?~OR3!g$dxW| zUqH-#Hyu?aiW)AL!3N09jd;(qWylRCy-MxvFp$YiaLn*?_9Nw&K9ZP^=owM@u)PPB zTluL7-S+clrH<0~PZ3wVRovWU{wpQ*x2Viq^jX-*culOE=_p_}XaT+foh;4Hmgxrz zdR}^{f`tzyih9q2FUhhj`z;=n)|L8=N2LZ6fE61XTFlZ=ElPFa1C|;vokYxO7XK#B zrkVIr6@S%R4+6zGRTUJUeGg4jV`=*MnMkF8zNjGzwN6luR9-$z5o3K)$MbX_6bwgW ziLi!-2PEnhgIBKu;*F|WAuKA+89C9Q-6iyYh7-peMJRD}+W6+=m3M{btW1fAPo~9g zkYaMT$P6z(j@c8HvLP6O7Ycv{JKQq@p5B%vHCZQKuu^`_6 z4{c>^rQ97iMoffYU~Ea6*on(Bh^W+)WHG^0G6DP}ZEct1l%>Nfjm0Y&q=)g8%!iSv zokE^SEQEW@&XZHQ1yWk1C>q~oMgMva@_3%*I(DVtu-p{`KkYU)TWQ~ZUUIpiF&V_i z-*?}xteriDW^#~A-Lb9PWzDs$mTzyRPX*UC@%ZL~Xz|vNNN)M4f93;10lX4$eqXw< zIsb#(^Scw-<|5GFIh}(*Jm~#Fr#c$Cdp~_M%;rNmam&+&^weL!FKFDqRGg&Z;?jxf zbgeFE@kotH08KWzLNu~(bA;DYZ3o?8^d`SmHORc^0ZqrNjHa^FgY0;Uk9(bt^36g4 zreTaSJIXT%h`P!%PoP7tSaWujwflmVG2(+Udu0o_=SO6V$AL&3j$( z%OV%1_1<7;WDbwS*ef|0=h6-huE)PSqh+GpEgR;AxW~-q`n#XLxzN|X4AU-GhF^%5 zJ4hbNHQ&oo_dC_#X`05T!LfAY3h*4+QY{?VVHE)yh2kQSH}1dp?|Fuq2m796e&=K+kfh5nMW?JnckjOnxo+a}v<_eG6D?D&apAocX#S14G#0bLf#kTR%=l2Q ztGx5YWwDfg{*o*_Em-(4a_J3cBqhZ~-cFJ5c|>>AHmkKt!H8lRwB0v9%M72AZ_Jmk z+MTmL-ja+L1Zw-nk$$E17vgo^WS077YOvKuW6jCHLvlOX^q`d^&GKwX9{F2LjXbk3 zSofOko3)Q49CdIpGfy!T2dxs-i=&UuX03xX#}El->&IA*3<8uL8xh4P;!gXv5=kBL3qj|)dU@s zll!&$go!!?u&D(xHF)ztPL4@=QEdxMbOvDCte=(tKCu)u;>K62pz_YNA1`1^uhN z$Qy1f|X^KtqJCA>iXX4N?iAi{{)jr)bYj z91(TmN!As0=d?pQLI}=U!?jwhJ=>x_SqGWBS*t+D1C(FM$N^j2I7X8v{%qJlQSHo6 z?AJ?wYW(XMBMfyQjU`x8&c2)#w0&m3S>#RN#!*o+49(DbylVCplB?B3jUF`i7IIoL z8r5qnKh$$^MC0Lrxkjf>nodDvT#)G&cWL_x>euhdd|lia*Vcd^>>6K(JFI&pSV^>OO5}>6`7x~>bg{9-;5z+ZvLvxH&nBF+8*Ke#!*-D`S8N-%_N_0%QmdTd% z#JE4M@nXv5aKO$@RgFVxvCn~whd{?NTVL9mP6X;hVt~j zCjcRmVxWVSAdW)rjK`AIH@1dm{#&5;QY@<)=$7}Af-ReLyw@Dr+_^h6W7`03W%RhUy2 zvj6XmtC_lX@DHw^_Y{!Wc;xn{v)UK&*N@+=mV!f$$B>lvvL3+R`TFFSnT4-UoG9Uk z3n$6=;o!#JBfq0%kXin8I_h)CJ!|MqCLFxcnhYjhpKeo;IGDIoy4B09v4>=`JIbu- zbUGZ+Wm;y9M#Cw2gFz{8=(=>Tgsj7fKPE4NnKkfysy3yzJa6EWvuRZ8dV?wXn9eLb zOp)P~QpZ!O;hd|Tj;G|z3y*H!AK6Ysm5uuDfJ|;sY}%iWn?Qy~eNwxL9)3|*mU(7|NQ)#~}7D9!kIKvjsmh#34*+ja)rg(3@{2}Wq zM4D!CrrS(1$xiS~$~sx9jztlPWveAwn~IRckH{>0PHKpJ$4=U03l16Fcsg$>Y8eu} z5hdPgv>0SuRY5{Ksg2YVXjuGPImz^Kads8RKZdbIL*%oj(u4MCO%CD>;)-939xZL2 zt|ZYcuVfr3E8k4A`G_PpU9;EX-ws>!6TH)0>;yCtb`)Qol*I)f)jcgsa2OxIYp^+6 z^Eav%yb15gI(mjzP{EOP4d?bwSRSuViBWBgN3FMnd*p;mGCh0CxTfvd{$icWpiy35 zU#g(rZ-cMlA|k#$?|pFO<7!FXz3}!WJ6%;L0Mx%$;esz3!?om0!c;X|;sa{TVmbgN zOR2?dp_7{8D2NJ|Tto#)`B;MKt4>ao_IAd=#_3uK6rNxHTj29OL-Iov|q?kI#%2JyXRt9FAy54js zG2_7Pk0fRsOeTKcZuVSgdT}lrKhC5ywk=@xJz+uC)v>L~x8_2h2udfLG)i`%T!Jyq z8^*ZgVE3g>;TOsy$6AtOfS_WrcV!H+)acXHlOQ|5fF9doQJYVid^)qDBs)4{8EZ=O88<^XL#lE3F?&!7JKNk!Y!=O_1 z#6rdaRY786iaQ0d;E;!fk0^C%JI33UeFU0*c(k{66wd_X`vVTV(!0ceSB~h_vweNt z>#ylT)pE{FE&YkW-4pvOK(?^6!v!`oI64Mij?r=$AG$|mg6tkS^y2Z0hyK)J2YHib z?YtXFT$&kWaj6uiL6c;D4mgM;g`ec93zAyt@aCooo%&U}jhU6b^uk#b$9VYjDT!}* zSUh*miVHk^K68LV6Fi+wk+itN)A4~3yJmIA{#tF@UvFx(^#6}dCLR25**JQKHU4+B zL9ux>u&|q|_$2F&y=rXLCOFwzUfn@wp>E8ZGIG+IGEq@b7;vKjvY7qXk-_T!)5u_T z2QrB35VWS7BqwQ(B>Q0Gwb~_S5CG1e$SHi;$L|R8)vG`AY%6vW;`YA}5*9eJF}0EfriwfO%1Q{a&Oz@_^% zmeMHPZ|@>3$*A!;*qf4_nQ-IxF0$(6o&?i-`@ua|dNU}FjW$_9_cYK!k6Uh*C|Z$1 zulvD?KKx~~z0I}{K4)iV)V47mZvV6>#XW{rfi+%2rVVo`K{A)TH2f-r0foxcNI0=& za4Y30#%%t04Q*0qH$qTL!2JR9lGUSB z0L)J!Aaw)ZUWN@uZtfGc~i0nIXarg`9AuUFNv?3yEVmWyQW*ZF==8EqH>lwq*}s(aWzjgp2Jd&>^KeIGPk%}HrM_ckNVXS*JS!|?IF zy_Obyk1lvLG`&4g>o!L)1c$Y&F{xPq)Z+6E>gC)D`7puCs7o1zJ->X2|9ty6}NId@KwGm*}bbR z-Md2fu4MPF(5ox@OWnI#>z-6)=dbABmDxX8hFX@Hj1FEI9pr3rJDcnwUrOd2ZnjhJ z(|f0TY{$VsOaRmD3Q}#N)dizT+-7B}(y--^URc2l1Vc;jPtYTa0{lt0u17q!X5Z_L zq8k5Xz`X|f=9-g_qJVGo1vu??14cHn3V1ZGJyJnqfhU}M=X>|+P1ccJCH|#sqEu3d zu@d(pnPf6qGSGo^kq@X#$iH*|{-f zxL6ZHb^h4IGih{CL}M67Mrl~%MDsnxehA*Dpiq_+X{k7J>YD>Pf(0X1*OK>?RwB38 zL?B`E5*!lK2ELp0;8-OYS=SU6>Tu}1gIQy)ZHV?t(NVtdQ#T?rxmP&z4J07d3Wv4c z+KLu!K7RLkCW|6(hj)8tXGciIh$b|9njdC_($$mXT7J1AS%3;UssNcR(G{n{Lbll# z`mnV#v@Am3`jUY%XL(&S&sP1BCRAep&~DZ7x<%D}A#Ye)ozLse=c@A`$T3*2<~N?! zP9H5*rOkt46%9vK*&2_Qr?<^6LzyaF0|vIOJSVqvxB`{`56ZI~UYFyK~~1 zBl#ORpg~KANqO5xuyXiYd)w#uyTnMC(n6L-uyx~Y6} z+_lM#0?SoIqUGPOlge0ovS{*^W>^GuXkjaSl-cZshLB3usPU42t1PkEAC1x^=t=!S zUHy{W+$~Wmr(h3>s32+`$Q}eF`&25;D)9Zr7>}CS&G9r!*_iX2n2#;tWIr2ohI#TeVNOhl$scg1Lh?-6w?k}Tb?V?#ctH;g7W%$wcSy{nqz_- z0C0<6f|NrdW?B`v7L3-c+cT|UsK56V00mNyq#oyS?Hr&PVg0x7zBMH% zJeKAJ+G1JG$SP75YIUq8g_NvqQ-fS>9KD`K&b9a2qi%)$2Ck{mb*tLZmukVRP8MO1AJXMQGq4>l@j9j?-OdP&Dg z8i?uQjE`vc_%M#E1eT)PT6X5N;3E;Rj5K0e9`aBP7|46d)i~Hd`2a4uPNXO0iE@_r zw3l#X1<_g*VIuRYWHU2zkiIy@$k5)k(IXp8EJaCpQJOMHeg90^^vjEKR>b})Rgg2q z&?%K~X4Urcxkcn7&oLy3dK{9Y>Zuh%8*C&@LQ2+K#hknpw;GoS20Ldsj#VmO|WH%k4-r0!-LnSfQW>n&H5fpzE$lUcBO>3f8bnn`cB`Gj*v*Jc-nP9lnR}@R&O1@q zH_leBcuUDTUsIH+%HI@|D$I2ebw2kug;Xx1rFEWjYg5t$!W>zPwQ3GXI16iXYu<>U zs5x6`tkC%uqInI>Zv^~?K^A8L z*rm15THl)+L=~+Kr(||z_H=9Z+E|MH4%FLH&9m;ut@91pUC%b3J{tI3KFq70xxLia zS>slL6J;;wO=?S+lV6p!&RWl!8M?iX=5^edoNpa6C-c9bYJdeS~w>@+qgo~ z=s4360^~|<6Mvhq0a%@wZtQg&0!D{x1=b{oO8Vp4GwH2C_H*fWrxqL7|4&tm$>eCL zu;)cBHpT2Ija-?`Vu(WYSX%|Cu1Fwi%_yCI07c1NmIvC|w&ZK(%C$*r+2ki%M~pA( zG7^O6n#jploo`Qv@R%31!<0I#hk_sA&lz2sg7{(IK}xIw^;!>7RZjL{>;afRhG%Ds zE34v5t~#7H)BZ?Q7eWvVLRG1^EtO#uh5oE6I`odX3OQWvPodep+}8J@==ceEQTCR| zIrOX5X+9ab6A=L$#X7fsrQG^iUa{UQ z8}2Swr)aCtj}{x$^lGA3=zS;g#a)n5pUV*wsG_mVnJ-Jp^hohGxs3Lw!d)x_wfIFl zV2sE8jF6r?%MB3-YIE!~6yVLjd6 zCJ9t^*-bzZnn#CRxGa_GdbM>bH6i_(K`YZ-WK@qv_?C+;;Xm>t!2 zdP|EUG3uC6xw>Sn`AEs|QNxyj6>8RD`v>VmHu z)+0fwWv&c!AE%(76Ta9sE6BH2pu`ld`L4`!vzE|Oiqirly6jy=jRYgjfE0&dNU$xc z&t9!stJ7qqHDXWf%Vy?oq_+EH>`mOiy+?oai7(P$3g^*Z{PamUKfab4@WOdIm0z7_ z|KNwu&M)8d!;j7jsSEnpdHIGP65+i3BDFz<^ZGGAJ#t?E$`3Du^H2G7fTs`q^vXGS z%MT0Tyc_Y;Q|H}#emED-?;byeczViDrEoq(N+UlU^TTgW^oSpRaiUslU)JzcII;Zp z8c(nI>A91f@Ix-h%PT$o(>Zy<4~1|Ra*P@1l&t=laLxojy>VctsiYafug*%22;^|}S&l@!2gJ4MT6_OI=!j zF!H34L4QQ%24rI}8M3PFf^7%}eP7xbcmr=dmPQ8s;l%Z%k%2$-+=(`F(jEoG% zu0K{r2ID@N8<35`XwvVGrH#SVANfORW8k|Z*OxX1{mFFPmo^5|>4Yo~q>aI706KI@ zbq!pq?0~Cvr=||@)AhguqFZ(R-K^&P=jB6pUe3Iks}#SV1csv3MW7UwoVNjKSJCM%p-X>|1DZBtxdw}O~k#F07_5@lAAz^11A+sa}sI;`x~AuX>X zS?EpnqEDObz_9RsHX1X6vwWsv|=wBEyKt7om{GV4Hgf=vmr8w|x;)^QN|r+;MGSc51w4wt0Ks zf9Eb^aI9hRNAQUByPKOE!mAC1_}&2MKcqUpAYUZlR%I{$+9=P<;JoKcab3+n+B`#U zcB?*Su?)p1V|Dnn+uRiTZN6pGnQP4|R1WxVxfLn{sPp}jbva9X&WTa8okI;07ArES z=iENJxgqTs-Keyy{JW+bFq4pBE2^vvrev2E+$Df?SB8;Y?347H2TNpF&@Q!=R!z2{ zRdZMzJq(bW9`*yGpsRgS_Fe^rjUg3M!=4grHJfD(^KuAQhE2wb%}O%0Fa9$0t(urgfFw;W$_74M8X zvyHD`jIZU!*AK?meBAXh$*coxl=F-A#36Iacl3DS zkQwFSJLlqvUf((^GHT>cpYi-DlFyHvSeJO=B(lU$T;iE?V!pm{QmO#&Kl3|jplMyT zH_pfJx`yuB6Z>Dtd_kEHhMZY-_O9%2Df_#Z-&Xf$%KWSUZJ8fY=J>bmnO|)V@$A+i zu4lfW%>R6J+Yr~YzoqPpug;(H;iY43;|~6`*0>kqrfd|^ z_Ao+v90*UPiR^ML2W7*g zG<7CooxjPtRTDYBCV}_wzhs-eUbcKjw**))o7As4U^d^>Ne_On$kL!I)uxMmcTUFe z637bhwqOr_fl%DQ0od2cXp=pb%b#>WT+~WyS9d3<7=7(f z&edNEreQ2aDz-)Qcrdyqzf0y?*Q;D&l}owG&emscL#r_pZdjCRQoeaot!sYx<5 zg7|9iRFK~$jy_>)J{icxWQb2&URB5o1K+6pts{nG!Ac#9-{H3#^rQBh3;gl%J1-rN zqd}UEQ&;$L==yOo^2h#UIv98|#P_{%Bx2IB)^+(!U7?7_ zVj^oy(r=ynEuJOlPHNM ziR{5tB%v6#`VpZc{b@fMPlx_+5cWsWh%&~=Dn|YBv_GB1p+EGaVVsVlSR~Ojp2VZ1 z??uT}^rvDRg+pJA<7hgV4Ek|@8YYA3039EBqezU=ZS-W|jr-wn=uHQ)7@edu zM@WIT?@jzD8ATyJPDLCF4=qI^6{F$MP10nN^y3sm7)5E4xS`+o!v1hD9>jz3DD;x) zG{Rg?V|P3pMUgiZ(=eXUEF^IP{!&DvKK(@F+EKCxPrpb6XOrkJy!?>x+Z>r+4Ol5^w;}nz4RZS*X zu`r^V+|-ZLVKl&eVWE2kLDb`{%#3V(- zkk&YiW9fbx@Gu1=3e4&tO=5R~I#KJiKN-c5o4PKbCPLfZc*OrBlijfV>=TGasC1m5 zHDnr&-Ka0d{&W(KM&Za4Vub$q;b=ValDgs(f1;gR8ZL^~$x$BF1;d{I11L>!4h zDo~2Yh14PD0MLRJk5ixi)m6}#Fb3?}lwcwTYz(pa23Vef7^Rp*)Zm9A^^iyXkGy`1 ziW(OK>N9qmh$e$1Ob6j~G7w>3_MaNZ2uH&aHtcxfMHm77PnM^aN2Ayev2YXY>PZs1 z=s2JwMww(X1X4++ekz98)Ptx`|76KNN=_0${+L=oI=}#pM-vyA!HvA6k69dy{HTu| zJH_}DOaOy*6ytj$rzyn@jZ*T*oswxI@ESYlCZFl4@KQe#$plb3!I}*xY3wCpOsh5? zMj`gx01FY1usyNseRq^bzUL3)aNvfR1D74k3z1W8Ngw+IK!!aUhS*=>a5_l(Q{bN% zfHZO=fW-iCGZcM)8V)_*1-$oNKv|zIYzF>R)^10fM&>cm*>uKt| z!PFf@(|+RmQ>?8^D{{6f&lW=U&J!s$DJJOKP`Ci}KK3HOJVuq6&;G2D~hHdp-}_^C}JOU1B7tsMcAyU2sF)~OaM{d2r%in z(Z~(GdUfA0#=-i=KphF_7gjd*CLz`rBLv0)fTW{wGDMT3;b18I!L;uu_`fHj)a$zm z=6PVOukK<*WFw|s0nm%F!=~eCoB(owhP`2gZcY2x0kP`|G=qg0yO@;W$eRLkhW^BB z)mSeM#wkKot;^N+xmusA9iZAte=_w!#9|D(?*e~M=sFVQ+4V*M@48w!a%}P`HVSY? zGLAu8u~r_iJB9^92rvb<0>6U&i+$q((ZwSVxD`De53m(nzaL6atQQ+-g#Qn&!A-+( z8co20q?p{{*b9ePwEi?nB0w_Gl^0Er!<|grN#c4$sqi~Mg)&Hh9yE~jfQAPwaSKXM5un<`)NqCYN+3#vF3A`Cr1dolqX zh=He45se2JW$1$bj4+W{<+1O9M$;yZhlAK1hL|h2KS}$(yI!$^CLvs)1ObQx@&uun zrXrkRZIY?m2hJGx`@CT4}2^lVAZ9;`F@Bw^@nN)$x4Zu_CfN8K2gN}FbREN zhJ=`$#247D*xN3EF-8x8-N7UPtpG?^4fo<^g1 z3hn_FCL|{ z50VjfC@2~_i&gyF!2?9q&YS?a{UOSY`eB0Xm_RTFQ!fQq2W;U3`w2O(a*pME%ej~9 zAgjZWukNZ2v70`|jJH=}eCxx!8Rp%(%}g&-q9;nM+VM+8bg zNJC-<&$E*J))7<=(7nN641R@tQWA4A@xf0F#sHOMFzAQa1t63lW<=)0J}3#u)o=t{ z*Y|+EfOW?%e#0?6gYCm_e?rgR)Pvjwv^j~qGz5ACT9`}*K4IOoKa9p>Fg}2Ev=1ns zfH?#i9*4mH5E7Cxi1UyzYy@7_9|M$qFTy6qCQreeF>*N#k55Ak!lnNW=pQIqIPfi}m2@CEUZU_?A{J{UKM`gGz!o&fuSaidj8OyhAF zL#`VS!43H%v^~K76+knfsHk^{-9n5r7?qSbsR?+M6td1J0k*_$1LjN_Ez@Sgl80by zAccZYC*GgVkn&WNd0`F%K#DCk@kbuGm44(8+;~9j7kKA^?}D=cs3s%KmgfTwNp1lj zO`_stgbf6K%?I`hJwFuMd_C+?Y$krVl_IgS4d+ zRGt#U;1c~9x&W^Ta%&10gA4=wHy8rBK)6l&DFj{&BMoWqpDn_rT#N)u4VvWwaiPz{ z=@@+mwWRF@#tjsbq$d{>3|RLFB0!7CTWJzPng{t5z{}ngK;wg`g8Lp!0C4>TWD*-= zJOz8}jXm(KkUND3`~%^81k8fXIURyQ1iV60hfD)lpF)_zC?ND=vVl!gLNp{I2#gna z(H~&VLWqBE3K~h`cy_Kf26_v|6ThS;h24veqv*(UXt>a_?TxpeBhY*b<;V!&rLKZHn~jKB=^ zvF;Ecv9GX)h%d$d7%@#Q!z_=A3lba!BrSkSUqoIw=wmHGsle(clRlsiOeD}!3RV)Y zV9-XOI^;_iwN5Y(AP2$%T_yt7=$VW1W4 zZcNt%3=%M`N7Ij5!A6XMpn$wxl2srFPJrTE>gxa`5aOs0QIkre97+Q}qO==v={}cs zxpbdPM^qa84N61YMrm#}A6&p99($p%baZ07B)o@I$f{F~dbj+o>&vdG@DkH*D z;G)6qfJy?H_6hHMgJB=i1pY5VtN}Lh5U3lB_+T=`(g5(M_ybNm9kL7$N(tr+ND6B< z_JJzVO-N$`TQ};9sZXbDBwa&@$1eyu@bD1W2m3XG)Fprr`zRKU0lfm~AWi#deN22V zP}g(Q4sK=n*vz@>gb#UQ!xaRNP*D6FHZ)LFcsLCZVIVNmF zXKCON!!fW^Ow|CB#i)qzoM7zd6Dxu3A7e9O-Uf68a$GDD&5)rJ9^qM#1qjh#WiVF} z_|h>J0yw~>1FS&=Anx~5>=e*lP!tfZ@ffVq00l;>!kV*}HG=UHU;`iu0+C@>2t`5I z2?f{=a4tSbGr(a;>?H(T$aG*Q{Qgw*!K0}fmE0w(1A+nyn?fE06AmU*0Kofn`Z`8; z1myX_6bQ#30JaDIU;rM)gCq*d*yo6X7x|f z9wrO?F%}M+4FnoU1$$dp_hPlEGOEi>iTxc2!mn-ue1JU&-~$2$bCyDg2UYJ+fnBhr zNFIh@(ywc276EJk*eZ+;glQTNreIkjZ$eA}_#Q$IV8B5TMy{BEhaq9a!|#9)pswt# z+6mMvU?PD{2k8fE0Pq9EK{lNX>39nGd72WNHNkv>Pp10{42^COu<#RgeynQh`}7YR zVl)DO4QKo!*AGoTjR#p8y+FQ%wJcz#w4N{2?~t zBp#3YUMMD!AAx!T4uA`QvcTJb??VMN0j-+UCg_Ls&j%Yk0CzJ2$hm_Fqy+qcC&5_y zAYPE3`$^)1$npUI#3KBUNg7q9*RMaOe_lHDCu46qPKb#H4w_=!1rTEjUfON-K|-Vy z8bN?YecA*d(J|;$ADb9#tq?I-Sr-y<1aynt&%7IYK zD%79oO$X*Aj48;eVr@i60m|!p!vi*<;>u?AGi2F7xs4-@#V)H;UDj#z+GSP7`r7TF zzNqE=z^@?53)YtS6GE$PZ zbtrW*+u}CaTBs6d4q4dnwd#4eP?;$17iX%}C2$* z=|+Z!bgdsY*ZMhKSzobpg5qJw!wu7h$Llk}ZxqXB=ou9b1bcf@;j-pnW$ z^!IG)mF|LqxgD$e!M8a8x^juymn&!3d^R5b*Diq>#O6G+@|l;Gf(6gjU%A>EoD9$V zhON6(=pm8Abb<`!G%?~82nl?yuXFliv%eF-g;ZIwO68SZWqT&GJ>zVEn$29fAnp8G z>w$F+kmcE;kojoE$-6HPW*OvMu%7U@g01j(JbP~$kdgw1Hz$RU8EF9A+~`&+L#@UL z?oiLe-m-4_;4I87hQIu<(Q-bLu5Y-$k}V8%elky}9rrZz`BtnOxu~^bQ?*Fm&nuW+ z6vxuMvc?vklkZj!N{uW4;$&_nb)dw97c%t2g_S#okwaaTupbnLSEb#2KkxR21Vp=} z5n2JZYn@7R-=+W%u(DLD2A@Un_3-)8tg(V2`;@~UDW$f2;iSiuBxjM3_MJ+Zi^$dqmn5za!ka_8iWx&0}bQg2A7CWvz`%Hln>BG_1W)8dF1NW%* z6S&qAzHtkOO)ablqgJ+A{AaDry}!deerQ>aZz-#z-Mw z>+&k?pdf$f%}b(GCF#=A4`ZDo@b(H0f>79DLt#RvJS-@00jO@A<(bg$I-%2dNr{Ym zliRZzJILYaQYEJMoGd&6oz0w(|7~6a+Kg{VseNV|Hla*8f6mE2(yxNKH?=W*t{v<^dZKl3unuh4{aCO{AEp3Lxzj9HasPfeFFGH;yZ2xJ>;EJJzK~VmoUjV}GH`z64+_yZkL$wgN?8=t%u)^z z8gPHTrdg!151X>K>?!h~!=$7LI;M^vC|)<0HpU9L9~)6+=HY{E*7NrAE;-Ze;D__y z)EYt$Ez!;G2Vn!KFKaBN9CFsa{%TazcQX2m?pPE4}J(A96KMs`{5Dkcr~e!Onod}vR+^FUYVtR{5IY%7;sAekE(aiMIDYTZG zL#b@}oo(q;WkQ(l2>E?_n9m!8nsR1x!RnGeXKV9NU<`cQ|eyPoy|BzitbLWo_ z+Qj>hLUtf?K1iGAW#&Y(M4UTuq|K}2&)U2?k+r=0wATJCoYUvh+Prd3Wqr> zb9SO^#8=V`JT0Bo3)#EUxsch4+_{u?;2$#QN||ow&KJ4#pR?_@+ume4b(QV5>km|f zIDhI-d}+Pyk0Bdt>+LBSXRkOeoHx}W;zlDKB5pG9hrYDl9-@t*wBGinqlq-$o(!jC zr%l$|)4^aokk;Fy>3A|y5#q)kmHNc?;iG}F-u6cQ!9-ebLsIvq(t3L^_9=AT0lU=a z%AQgmF&tF(go=&1-U~JmpH4s--cldP^MLJqrlF0-{fV?%dK9>du8=wQ*(cLX`Pq8J zFD=eDMC#3kxp$9OR_9i)ReSu&?_WxsuNwJzx5>YECT7%%kl>&z!!jinArfJ;vYd{#i>E9=S-Y}t($#Zn|7CF*O@`_OzW&P3jP3h7g{B3Cdv ziL99_k#mSM6cQC3g)ya>^(Mm`Ck~|vzs|oPlboi2daBE~)U+*;cR^4ybK;3 zo-R(#zr@SGs_@7<{2#_!=lXm5!7~xRjmUZZMr$@UVKlb>cV_(aZ4pQo8 z+qMqH(<3gSQsxhw-%yEVef+rWICK2&BD=$X?FY^~YQXi59yAmAr6rSV9KWSRQz0=371d_!*_t^-9=xVdfa@YmLs$-vT9!K%CVjs)owfC+0-uWgiUn&U*h9$v z^stQm9ro}wpg;3pXYbhlR`Sict%gw9O-REaRAD%E2u|$~?BKVb?oq@9=U$e_MM+_4 zngB-}os(GYyc2|E6QkLCi9b7()&wBh=)i9%$N&|v$#93QboF_Y78%PMOFFo$-CC8P_Zd`4|<$aaGg_0 zt5raq7yL$|#IGz%EU2m`qEfym_QO5VLD8+13rBRQ`Wp^sq_)xrDFnZM{s2sk^K<>? zJ3j^fu6lF+ls|!NuWN?}9j3?S|kVyNlf=c*g}^ zQY0-M2;0-IZ|u)o-7RMipVwp9o_0rpbXw)k|p}!C_SMB zFT%%<z~lmyTmX>Efs@Y3;*rr>##__XmZ>GX^{HRkd34~J z9ubQmm!2Juv-~yShoph}#gf~Z`tb?PMD>Z;-lzQtL;GZZU0!5_*}|YY{B-2d(E=Kw zKjfn@4E|w-JQm;(LXBTzwmJoj%uWb{Vo_82iv`83f$Ml%SSOtfiKV?4l_LDSCrc25 zIZ*|^CI5-h!reK4Zfd?eBLHERep8jdQOuxLcLYArveM^}b zWtM0ulqf63!-zr~Qc9nK8&b;Ph#}!i2I5W35m!d7aE;VTr*zKna*V%A{9T|Kay5lD zS+tsaq9%1Hmy4TH4Q*{kHL}*k){!jhk@WRQ22{Pjd(u5a{r+y+J>F=bsd9Zh^*H2Y zczQDYqpc%5;O151|5DTKF|JP^Pmm`k$UkZ|`PVHYUhl5xQItyx!yd1uq)Pz@A$e8jXr>Fr@!`%0|gF(JM94F@654 z{>9X_G?p(-roJVTZRhawMW%sjl)qN{l zcwv5diZ2KF(tWh|f;z&C!Td!h_-Xcn^f|~Q5pf|ey1`Gn1J4W{l6q=iJg|Q5^jw!6 zQNJ-|Mj5&F8Ha4G8T>~bvHRk|GcfLtI+o~oHofh=AtU_5x6Ws}UuB3(oW>ssK~nGr z!WV6Yk^sMC5rB3}NgJi4jZ)IS;fQCt0~HCa`&w%O{V*Ib{AJ}NUF@yXgiOW?Ck+Rx zFQe)+sy;*GwmxtZ0u#^1tNv)}O{OD%ICd%#e2ud*rn58PnTuQECpF7lk$hBh2bnzP z49nOe?i{bqPvl!YE{o-IYmHJIYS%~iSr2^dkhJC{>F*Nw0ARZ zo&7 zodWLspSv09WON~e3GV%%={>qoc5}1Q!f7Ye@9kbxWftbgw`{9#=*V4N$kw`$ZSMm3 z9o300#Yg@Zd(!T}?R!zZ-P&|gT;%^z<7;hqw{75CTQ5ml_&;dAZ0)%%C}7JbG@4(C z^gn66+irfX^{tIBtFrj~?;-Ow>_cy@XrQJeyZT_f5)Ns~kPn)cmv?qOs56z6siCJ| zq*@ly&y9X&_E&jsLG+~QX@;IsZ}h1q`@A7{>3n6&ZgmtR2r4%iOx(#}Ivx()QPcgl zx4hovZJzRaSIw7Y`wM&6HR6P~zsf+wZMRg7pCp}3G6tRd7U?~@xTCx0j#&3hW%#l( z)Q@WgFq$U2<#|fNlL!hF4nlknmIBbUpum*q2j5`lq-f?W@!uk7Yc;JbJ`$3ZoPe>F z=gRRso^^!enb}|eisV}PEtw~?PSyT)9CWgF%4yIk+bQRb8r!jRN-+N^pb#5*JDcmA z)8Qn2DYksM;xFNrFPHpfx%q`y{l)dQwFpk=TIVS{)3%*Y`vEw|h<~s6_Y%MMLej+4 zfh>k@N|jZbodXDR$Ig@BtaG}z&^ssXd~(igXQ8*wK{t}`Z9eUwn~Pn1aSoib4nNXE zWEOOu5R1G~5Xs1Y=^V&EPw;?WqhQ*(lJD(;DK&#HPAY4-;)g4KC^uD;csAMZ6P zR#CAvPuO?+@vDnwR8&PK|E98KQ?{hCaZ%=?d=ne119s`*OlD>_S+ zl2J-VDWOU!DW$Y$1+|{b)@5{#Z}j7>oek38nV?!0sHNroO(B(ad3pnRtR2G>Pf0gp zviK?pyOk3MqFYev>iRmC9}|Hw3uwwOiW=erE`r2&0qI=?m z-PC|+a67xDQ*~oV&qyWNggRI{XI*{aWA4?Wg9R~ks&GS1)W>|NiyVZ1xi)u3Dsa^kxPViQ4y5D3HlAb}_t+B;UbpWMG+ zTFam~43E&)!nPsxl0$A(bt273fbEg6vO2tQz^|@j0DtS+dYvd=4bsXKc0oH zkNQ=9%<>v*sqaRL%u7?;0-nK?Ij);RaKn+TZL}xn(Z9$6dtf+ zUYj+SW#l%FW_%K!3A*N#r%R;cZ1Waxrhwj@(SXk2o{HdPeV&bVXbQ?wY(LjfpeJoU zybX3+r+Q2B8@Xb)PTTfRRM|EQthzgwLSq{AQJF@t(DGJ*TGS;!6SbwJrm{z(t&0R^ zdy$>-jqoST&63CrCw@w+q?{7Yviuk{16f<|!PhLAg*SCT zW|G-XQ?l2aQ&4m8Q8^PQwvox|L=06a?n6+sXVy|NU0J;+oTX-_GGjj|ZAVgX4A+$# zUx+%YGe9OREl8vH@2j}85=FNSbX4Zku>7n8ma{VcGBBP&&BO)jHndT>=rdEY(E-e} zN}Q_F{770#hW2IC=BG2MS0A{t;3o=(EJ{)y!W3TgKAqa8ZQgS(De7V!bESV=``9%< zK5pzgNUcW7_xJC+I}js##aS3<)s=pgA79DDh9Og2rTY9kt z;GnB=^;>~yFTJ3nY;;~cdjILSN58&%DyRPH)-RWS(7mP1ZC`F2ae7u=Z8jckHlkqj z>aLIILa^DCF1ht1y71SEq6CU9ogh_Xvt80PHk%@4W3zVBHm>7~w=h$-FXommsCEyU zfRthBXHidMW;^A6rShZVs-F5%=f`tZPi|?e*{lPXYdF|fmFwv9)C^fPsycKs)rRf= zP<5cr?Q`yjs+~HwPr23lNig1+ysjS3Rr7f1ck0yo@y3zXm>aWiSSPC_yPk&iZ&&&o zdfePVsT8}Or?pR4z8(eJW^WE+w;9B4Gl(X&epC^*7b*hwdOe+OGl0~pnT)EQjH(W! zZ5TCDHu))eO|jCJD#xDLklM%`#k;=$(yzX}3Dd899X70A`NnK~Wa|#JTOpeG_0pS_ zq_Uoqu6jXA>fwzHEV*nhY6aP5)R(vJxX8*3C(`jlb4- z?~15d-qzFDjH(5#fc zHFeTAu98^7Fw2+b*4(jb+z4J%FEfg2aKNKpUsNH*khOj7cU28Hj*>^(8Lm`@EAQq; zIyrd%yKTJ@&NFO`S1kgqc#*XVG>ZZR6;g!bFXG*sUpIn(s}j%oEU(hMQBN1asJ|+v zc=qwTlTwhkX9y4{BA4RZk6e%p{J^4B97ffylbIQ%*cMdl^V9HHtheuEB$qtt{ljje zNqt*iGODiK8N;su^^{{O<=59cnbeW~3T}3m>)VHdqYGr(?*-j`kbMtdhrcSbV=|s6 zk0wR}*-_+0es#(bB-^nL$W2CJW)4EzDSAatg9td3D-Vm31nFwG(w1c$1KNtQ}8=!c`OdS_D6JJ<*-8R>(`? z{3@K^g!4`~kRd+^=V#&kBvjr%8=G#?)BK0?d!72HuzsbmRKE#g8vfwZmp=&*UP`?7 zy-s<_c3s#Rf7NBbh+Wb7S?pHM`#S9drTs){|1jJ5OF4^pFaO%kFZI{oH@`Nb;6K|0 z`z3W1oYy<_cJ~8@8~h|1>h=!3`yd+nM(;n1p!-39Et7dY%u;|nNT%yOeI6yM;H#mU z`<1xv`aJV1S?19B>g*Tc$b(XP;yaO=k9-II@gL}Hhoad#`iWH1{=q|_r(e|YX4ap^ z_up0OjkBTNwxQRhC#ne4RAF=dCFHg9lG5mDud1-7PVR(QPi*tb`ip7-Zv_Qeb-tHRdl~m2bih<_A2RO4(pfo)?gd@3k#a=< zT|lD0+-{r9(K`V^Ip<%%X0~f6_IDUkRg%>1@2I;#(q+oKrTy@=uxWm~m|waguIDm1)t6MgQ8(Tzsd=?@7Hk(nk?=yYD9Cq6TOCPO`9tuN&6;57_fNKC<#j^N z2{N)?5$qIn4z9xMEwP4dfRlHFpD4Xs{_r!V*WFv}5ANSzJ|sUE3uoC4ezrqvX*bI7 zDsRWky{~e2RPNSIbyaP`5oV{dAJDvX{auXF-6w;reUDDlMaQa0NiR3UwpGn4HU1IG zuITi4t8Ranki4plj5k!MpM?&xyH_tzVLzl8mIFFP4#5(FNpuzu>88$d%(WA8SDZYO{u0O@iCnMI})**Ra z_A;?cYXwZE@p-sg>{b|SxGQ!u{4I8u%=?PnoX@ZFDzNB3BDCkWl zef-W($Xx^97pdl|K#Ka!VudC*+FUfK6OWy|Qg;+P?jE*U#kioVB@4-1SL&?C?lmlK zrUP**Rlx1yLQ$>R7zH6K|26t}auDJ zV7-RsM-n}Dj!)*^MwKNBK0X7od?#(YmKuTgK5QVk^E1~o^^7k>=Y(Y ztnO}1*N6#KkRxw4z-!LwXO`6|SCoQTEzLk%n;=K)P|!Mrv<^#Jhs6zO+zOkEE(-H* z##tMMkC0*-oIFUJ1gX@C^xbj|2d#*|z zs(ky$M!x-1p(6HdS**%f zbV0C7^EmaS4S4zntC|@{q3PP{*Csjbz*yNHg}-8M>IvC$A5_JeRUMW`J!#|Z@H3lv zH~xr>AX(MM9kIGbVJ8dv?nDxvLRxPb*8ElNEWjpckHLmk;thZQNqw*~I@CZNm9qEW z1+deJ1}90A|6S#4i`qZ@}gUcGo+Fyo@U9`>gPER z^-M1@znrqrDJ!DKnl7N1bw3)wI<5gr<$Fd~6bx=)e>71rL&Ke}l>jrO?snOY-$EUp z&%Ige-6s8VOK-|F`s3W?Jj7Ow@{h+~{B+9iblzWQ zpcl%at_8@3jGlhY@Tbo7qE5QL_K5ZYdk|dw7%oq^&&GRw-9azc*XNb)B)z|4#1oiV zWD?&p?U?j5Y9m6?`@#VhyOnyNt392*#YG38~dPo1M^Y!Fa7LR2w4~m;R%BXBje-HlE{@ybg zN!4j~lh^c`^nFvC{{R^17EOZgotT(6W- zT~nXYQ^QZ{Z7ePcD3`>Vp{|EtAvEojCg+xE40e5ep&6-6o{Kb>-*?r$lgYuTv0Pt& zOB1pP+mxuOFq*qCL@RkOtxSdWT_mtk{k%ull4KGj_&)IZ+De#>Bzj9|^8Wo($yVkz zc~zw(a&%T-a(*(u%0$aHnb)_ilWe+tEqhmy)1C(Hz)|ZC?*eI@WtU>{hBzrFUwc2O z*Q4>gAm@mH#oAe3UoRUTo@z$-mNi;vwK>mp5c1ZVeQqP9y1SdU+5tx@g~%ZzmX@Fl z>>(1|gQ5lV1<%`zSm#AOb6F#$9B@+2$740ZIwNCyiZtKgcuapo2h=g-Je+wdohX7# zUC!B!Jd*<;TzND?;pbbevy4Pzy1tILbc;WkQ}f7NQ7kV_mAT?CT2n`=_WG8KeA{){ z|6He9*DQEu)C$&8-e{=;t&DHX=Bce)M6_2m9dD#-slBdzh{##uVvfU-Jkwi77n=Qe-qzV6gxhd%Ki<0X+t%zxA3uF&SIFP6JnpvT(LhC-E{aB$ zHN{(-;PSQ!)|II8a;zjl>#E2cK~BF-r<^?PCHu=(GyJ5P;SFQ@r0D@>eRuDw&UOC~~dB2;|BL^pN3;7f3|*%_FAUhv0N z@S|LC5pJ${D+oDHP7}_Wcv0Me{I2m+CH>X(@D6Ea9*Nl}VM{+y)?+fxQD5+& z{5-KTU<d#1nSzt+eD=Z%o-9k~CR0 zXIho1FeX@A%~Ym(S(!I}bj;BrXN`AheKMtlBNh+l?bn&8X=e41Tx?hSUT-+>4ZHQ= ztFC9yjKi5<*Un5{k|EWe-i2B*PV#C-uYcQeD6NXNCP_^XIRgZa%^jhI+XTsZ>%llB$Qqqe*tr zI8Bm>fHv0JxstSVF8Nqhs8ihRusYK0sG?*_t&zMEE9lU$0agPI=fz{nPlS1FQ)^v!o`6JZ`O(QAa~1zzmaNG4Im!^0qNX_#w-6nDf2QdS z!-RZn=!)b%cQkZv%90_uUoy!H&|51(kz6{JDju@;R&xpNjIlwiQ_aj@Wpq88|oIp2@3uk(lL^>wkI;OF64-3t2` z-?H3v1Ib71Y=qKH9Ml7(OmMgJfhK=J<}Y@0#?dUGF<+;(ykJ23dB8M8-8_U?r}J9q zI0x9?zu!nFUz(=KQESu4!k$^H0MopX8tH4BP~ikgtjvapR4XLMI*-IBu_tYIK&3!K zY(Pe(9OToq%o(Z)%=qxIK)QiYb50j_yyE~&#&FQayJkEj00oOS?60IjjRa)L zqbw@c0U}qd>w_fhOUv9XjQaa;qvXPi3m=nsv z?n#y;zRo-R00+DTQN%^p0s zxVY$D^ufX$Kk!}GeXu+~<^nR?CD^jh%+zdV_omb71C@cih$>&DUe9aAt@zVCd?H{X z%^%I>?PPQ$xGEP)2WE%(Jp7fe@9)%|xxv5<#Uw7Jl!*v+s)hoxsNg5c5b!Ul*f_>X z_3xY4H#_>`Z?68%DnhF=N$rY|L(o#kWtZmqVOM2*pb6qkC78U;AKM#Ut4cPj5;xjy z^>A0`d!SpZn>U*Meod;6Mb2l)0bf`>@Uei(l3%8nW&c_$dkQFAh*sH%Z8eO-wCe90 z{z$2PDgH>m-N7T7S6P3mBdt96z2ajoZ~}j*r!Y|5h28z0E_+x((cw@?mf|v{gM+^JtaBYVi(UzgdnXFK5 zR+G1T!S_5$Oy>onk;_-PP87OczMlc535Yk3c&V8(QXf6OqLb@Cr^}yQNP*);mi&SL zXp?W{9St^-rW|bI@AX{%p`MDZGpMI_+YIK$$vNG7lSOAi9@B`0{yXN54v9evGxLbF zzDH^wo2!*)lLh6(d;e)1`^s)4fCz8G(Vk>m~-QM6WXIugj#?k?5#V(GiR z;Q@8zDt1xdGqSnq{&EhIl|NWINhh$1?uv}^i(tj1xY%7fF_LqcoFkdymX$q?1L?%I zhDXAWnwM+eKB;@IuwjI4K2%g#@Zhv4Fp>H3(>#n8BGJ6WlGBlkmQA8mCd|?cWWyM~ ztt@@q!w0~}5bXY}oJ%F+eP20O>hZ7Y#`%Xj5}?WakBS8} z-#FT0(7U7%%WHk^YSKJ&Wu_}LlNv-#AQG$)>qEzTe&83b{y28)LXH( zhSL@9{<ODDOIdjuuvB=Jr*^-$1|N3A5H(!&1 zv{dRUt(Rma_*9o!()(vEkV#&boE%z6Db{;G{i-!*%f{CNEeHE|6ewfXdLEiCZ zi$I5)zE^Z~22yA=YVbOis>C*Gq1YMdKh;CEbhUcmy(Yub?i4qC)oUs|e#+VhT?F+S z6ab3ZTt(8(jM$AIzvI}A{|7N>MBafbK{C4#{x?+cN&H_gwSR$|m<87_UoWLDgUl{XO0Xyg5|NUY4M17C?T=WX~vOKHShL(k5j4gu2F%H3Oc=^+*$g2t0-sb)>*(oEZ7)M(V0t7 z6>=g;u@%YT4}epijTzl?_-G6Xg3e=aoP%t`#^Px+4bFCZf>L|wF#{V_0U@XpQH6X8 z@iX|$Aa9I^$c1d3K-NRVN*!eEMS%X2cL4k~bk$nCCGEatt^Cb~UHbH68KB2(d_~5r z&MF|2RVStZlIrpV8zYet%N6D98cPWBR*)yL<4ncqsWIM(J-3QZa7G_?t&Zjmi~ybjRbY9KRNqS zN0gmfB3;;gDW3Cjd?%3UFDjN9urjg)yU5QsrQodQ(Vt|0$3-hBb=JeC+{QGs)6?6} z59J|X!k4{@_h9x)S4nds^T=nd{mOJvVnCvU^7~5CMOmn#kzuZoTDJwlt-Zn~vxx=-jGtZ@#o+ zVl69Yb+|m*xaCgjTW;q0VtGWUaQwOgX+pN?tDaOt*FS0J z_4Ox}fS(cljEzr?%X|Il=EixO$unL6cy_yt_jFUnyYq0?IC{<3j$ZTiqt|@n=ruQw zUUeSr&uq8BBd?<+Rcp8cb8=n!i5 z&x*~pXBB$BT8LShIV=#*ay+o)J1YP+#OPsASKKB_g?2@#Ujw?xvQ(Is%!8F_qpz$neOo*3m0IbYA+MxN-PUs zCOE=q4l)IuRmC@+qNWrP=tUglE@ZE8tNI0En`#`7sj)ULz;S7NlCuSK9++CGsRcqC zvWBc?S+F!oSOFG$n?nZhwdA=Py42sOg%mG zah}WyGjsT4AKsXKWL}>7xjkdPS7mwG_eZaO0*OG}baHx4pWY-TUi3R(GW0a5F?>?y zl1F&1WESP@dA{e1W1jjvoIZ^VB49a&wVe`UCNaaxR?M)%bRZand1#{=nhlc?qBX|+ z@=d_$ZgBw4GGU-FTK5YQ)Sp zvk!#ypXy0dI;;v&+i_le!%?e=6k$7W*SlYm3Xxi!3O5apiasO?F|OC1APY@Lqmhr+ znd|@KAu2%?4cJOq5Qc0Hpo)86{K{9o54G$L;H~e4^t@x!phu)5}!EMvJAf^7^z^G1(hUkV}t@lGH*y(~slv8cXdg{%5)f*>)r z3S#Bx)Xw1uCnY2J`*Fud-ei>NA0Ih!XD>=!OW=x)sLX$=u}|#CV?D;~d^(mNg3OLxR68%^F2p@~Hotml8z!ubFW zJ>xXKN1dEc57^YjY1FTjJ#%HJr~GSR^gGP8HA=I7J0OFXs(UTph&g67h>0hxM@z)Y zu1M3>u~^YyLvv@{fJZ^SC93ZB+-6Y;?B3Bvkcb(3v)L?$oGHEp+9yOnA4i^ZC+&@F zBcWv}m5P1aBIOsit!uOWSMV3o^qgH3hphq5Q*$!{@Q^;f$m3HpRsObd{s5CZd=onJ z4=rNP7W4QSdImW;4tH420i831avV-Ms7j;E%NT&VBZF;DlKBjt`lL!WtneKm-mqXv z2J%)=ju{KM(T5L>u7JizI5k(V<*iUNWU&>tJi8xZ(|Ka3BgatFxKRrRP|LzU6On(@ zzHfx=%{3dg`4N$;H8m>xy&q(pOW!m|KJ8G5&@8I0MaEZx=OY^4lw@O@Evx+96j;^E zgtjg?ay?Q(3H=f_cHX@iZ*WCQ6dDKv(P8r)HNWP-sY18ui3sM(I-qwPTT1)L)m>+D zT}Vr)##r|^5YCp|-^?lDs$IwY*5#l>#1;5M$vJ2)4mJjM+YQ*v3=o7STx&D!60;%#yAbPMjzV|LOH2v`U5{6U4)PQ36vOQSLwh`X+W7 z+Iwy7`IZku#^HHP2rR$Nfojn_1`xYVOgp-HY|FsbfHSZOm}Hfskq!r)%Qf?vdX!yP#Ac8J#yjb6 zPJO7JjUyJqeQ6TJNtb$$ces3wB|f71-6nuSr-UDDLbd>#`@MUYDt=BR z(!&@+5<0f^*AM4$40%t1lp*{m;z{v){iZ zG(H*;4MOQgIsNy9I!*ngokHGVIH!J5N2qB!J@Sx>M0rT1=6U#Y;weDo z0!J_WcyeL}$;*Kb`m`?(!cSoIK;))=W$FR6yr(~lpBm9*!l(U@$-E#UFUJW;-v$Zw zihdFF3y;8evA%v@iXxV;;gweiXWKQ;*4XECpp$LP-Gtc4Ieaq=6>9K{*^I9eL-BLd z%#W6srA)c61uI{<_m~e^r&yM+^--fqFkPak)X#f*X`NJ0bK)A*r+5XKdr&qkIG_!} z3Ajrh{>%_7Q2IwQa%)Ktu*gju5E_Tioits8Wl-dc7hsTrI8ryvA3XrgG=K zG*?ewy=3b0XiR+d)UtsxS2<%Vi!FMz{=f6i`ymOG!7@mtP0G79PzICqXe~@GMovhu z8L+P$%gMW}1U9Y@G?Ot$>R^M(Qi-rs#&}=nQa>j)(u&)|IL9oWa&^g`u7D}z8&P@| zPu?=xVjk4r@}@NdL|#>8%+U71mG*foisBYMmS;REXNZN;aNl$NeFYsYm4WV(_rrmg zuUDGkw8Bym;^C{N=4E^qy#?7tOa@KyJb(BQ|Fctasm|kYU{@`lf?oU}3^U4#-ze96 zy39l%yL=9aH1lGi6GLbHXvORWG7eJelHnCsXl(3zwPHzA<^L>gY(`loK1zITK1@c8 z`q{s*+oy`ZK=m9#hv5i@AmAO1a}`}luUG~q-~brs&+Hf)uPlk~7Wc^tWZ9o@&ib2B z`BQDvrU$x?@)FsXhYX06DRB#>`Cyx5PY|HkG70y{{M1OyYXg_(TJ^xE$c@J|VP_0d zGHsOaP`Nb^(`Cw4v|Ng+^LZYMjG91(_>XtZNqkAeer@gLVYlM+a2fgkovewrbeypi z+7q(nF;sHk>P{mG78_|-H=yN8n?X%nHh`tX3pgFNuUT6WxMGg;O zTvBMwg0~V>S}Rfn`5?LwmhoI)P10Ot+(l?08xQ2GJ?u_%VzpKeJEJ^O+AU@dY1ZvD z>SM5!fsS-I=!7#_h5+qq$N6tAuL*a}1>n+E(iUW)Gu&*<;Lu-W$z@nB9di|7r!yi4 z$l+iP)GWW_l-1l~i6={0;4#ZJQ@K(kE%zaKuwDnpcz;-b$?@Xt%OCB11|&ChKBeQ8 zFXk?07UjSr*(8P^?KP)66m|yZc`xm2)9A3+oT}IcN!y%OB}G{P^dDw81EPly+uC9i zdPvt(TL~+_g0|Mlraqk>sJZ9KBAhB-lD9@9t|q2$Q$)4_9>EWgNNGux$NH8S-xAyF zbGsE-(nzP|CO5ttJo_SO&zqOO1T=+DxFc_vTaAgioNo~SIZx8FjcDVN0B5oxUERp? z4c!{sz-hO)t6k&giX#|rFhk3|>vv2_g+&%r)zX;$U(tfM3?A|PyyAmT5RS$rgvb?E z#IuYsD<0F0FiM0@Nm+Ww;-#b?6t}uuqw^~9OL*AYxMUBU5Mo87W+tO@?Aha2Ak7}U z0&DsJlU88=Jr5JwRO|~;)wC{=wE=|Qt8cx@4lU^~t)n*BL6&}@bs_bEFb@62{rE9! z>TqyIJns&u$OO!52f>OCsTJVZJjNNl@*T^3)n>Oi66?!Lx4HGV_Ezbu@)w5B|F7DL zPyeslRo{Wy!xsCaE<_L1$Q}zTd30X36vyt1JU{wbus*7n&>h^Wc=6$H>=p=8+%f9+ z{QuaHj#>of+y_|>^&PZ;EhW-7Zi&|0%d#gNtI2A^RwnFG#-9LDL(szudgA0ri%Nx+ zRw;LTg}<|ok$mM&9h}e#2g~fW-p^`<*dk;+Ic1fJluy==AJf%MuP5n^A7;fE0Q#az z4h!U5PnW*=PP$DUOu1>_J-G=&lV~?a5YQ3lMOdYId_0MY==ivw-|BZXag0bJS007T zTPz#^8}IckA#-*c*Dft(};Em6%429qn$t zgoL*2Tj|&)O`{VQs-7T4D}P?wuSh7Xxn1GgSsu;KlkvPkn^m*{k4nkbDE65k3O0qQ z-3(9i5v}0xntlp3Jf@$-XeuoO^&}T_*f(cEZAcxsO6HA8b`d37y$ zFp^^ZR%jKxX?#W`MB^mV8lC!`W;DO{6HI^zKg~6v6IQCVgSAQ+qd6ZjU8PxtvylK`V8QL>Ae z?*xH}Pp8?3<}_mpK;k$vcWV@LoO!LW{17i0zRgiG`0I;5SkX^3I~y{XpkB+Nox>fR zY<%si%8lKhX!1}VA_j@Zb~$LF-!`W|1hsiEfLbSkSPW&<-kgeV@IZ9Q4@q%eE%^92 zs6~(};80Ss4tA#H_1<&6c7pwRDfCgx-jS$7rha3!>Rgi`n)WN+5zTk;HG(!V7iZQA zisgE(vSCCg;mE8NOw(4@%9`4a!_@eZAB^G8rO19EwpnX|)yG;xp&j(b0m3e?U6N$& zlDO}yem(S!@JvFc!!d^_Yr~vX?5ji^-DN;0uj{Q4J z;0IT2=+4mAWbYr?|EGTkxRaBUVG%zib{K!f?~i?>MJ zKu&*-UIGO4Jh}SjixXXktiCOc+aA0SaGIyNi>$htbt0Lb(pWV=>!D@1O;#NAg;a5hs8+gf1vQ9p&sQ7%eyV>7+aj^&W zUVj{VRa6P*nR(yP=32Nct|$eA@9}-=drQLG_`Bb&X9Ba`H%f|$jB$DXE2SJ3Fi|wj zvaG3Y{rqY}mmEPjYq9n+U`^8>vSs?i=wj9{r5{TAv?wP(lH@Z^_B8jQ7$J8Yd^QyF zlkksKG8%#cWQ~VVzQD3ljDu^kP6A$WHs$Wv`<#F{(ZoWLl7xguo4%qlHyvb&9O2_m~EfYC5O=nnzl}Dae4tU;!Fd!Go zI}4UL<#~1v3B}K?&h>OfwFW|%_``;b1Oq92F_QSj%@m;y=)_|IN63mw&EwIVuB@KF;X*6toC@h8K+g= z_ZNs(ED5&x1WV~7!~)utNlj9IBNRJD--gi z=h>8%EXwSMl_KJO$9^`}Zr0k&eS*o+n9a{zY^(BDATs+I#%S*Igx(@-gwl8IfUuM+ zGp1?P;8-pj$IvpCQJEc~9oka8rrBdVJN5~2)!^sG1*V4)tpuep@v8)dBD?cUCPmiUrH}LTINMw5@+F7>8{{~ zTIj_#B}u(5#&-|_@~j5^A97;9ZjwpwWxZ%76Lp!yAHK=1XyqW#ZmTxs`=CL%-D-VB zuUdW6zOQl7>Um<_U^iKl~8JO&^FaFEJ zr`&6C?6>5~Vt=rCDPp5;5yRzTr&m3eQJ-G-SWJDI_c%D?nA1CI%;_D)$(^MRuUTzl zS_&~(ZR4sfZCrJv&g-_cb=~2*m!hjJ7DPJOVAYN&lh$(HMR4@OEo9YePP?&nH7-=< zn#{=2&^(x5pd3$=?_Kkf#n!iF`0HElPi91k>F;Z?@T7jOn4To!Z!wt!+Uw$=rs1>Y zOhbPaDOI_o=cqC0`Gr=X>8jUK*YwYLf0nx)>w;PyaD&bRY|{Yio-?k$t*9Nhz8oKv zqnNPJ7@DLJN184w=2H=r@G~m(E1OXi}0=%>SBu;^q?2|8!LQ z5!;?mzWe7iuDI8E=f151cJi8QyY6qH`^7JJWM5UQu-nNyR)0<0zWSo1Uh9>C!1s|J*}|W38Tkm67lS=)NpnbQ@^YuXCc0an0?AHn7+;=AO6@*e26! z>56UXb`}4BZdEDCOScd;J7Jg}ePDW5*PFh+fkAcNU3Tfacg%0JJVw&L3Kx#K{6)vX zS^7)7Vq55WJ}L*xE7zs(-{tHMf_0SIofk;-rxsKcJ1{jx`Ersmc3cXqQlnW7qgT|uO?@D$LUJoob{%rUw*axMr_)tbln9wKZ@%UXW zuvmx_A5X1yi;t@~g{?BZ{TX}PlN0RzoOq?&>Jj(n6XGQ!lo+O|mQePy@qB2Sccr+| z^I;s_$9(vKf&32X5WYMJ%OW6B$o(`lGH zx#_fobQiOUxCN7BHHBw2gZ`$WJo;L1?5n-Be>jV%Mj9rMXvHKn{TaB%dkJz$n|c;Z zW64@z8B}^Hx#0Wq_UQ{;8zBrRj92S&fwC1e8~x$Cf$zfF#uh?^8f@Z_UR9HYR$Pnu zJtq+^QU)`-&_X;j`XSL7LD}DI3&K=9j%gzLZdIoIhkd>2o*-r{%&aQPgwx>ryoS?k z%EqSA$B+C@RAt7!YKZN@UmWd2e_9`gNG|NH4vi?E@rIG0v}zoheKmp9tE~Iw@C4y> zrtarzp=8iBMhE|TX;Z~E15sHIi0yabk2TU%VwK$NYmS_{;ssdNVgMZ;nGj>D84tpt z2oEA-LxXT>mr#bWbGl)mwkU0)hYt~L&Kkt`*n8lFE1g3LiZHDiithJs1S{$f+)_9y zUA@a|?{nxJX)zsMbZij=U|-_aK~$qy^M6HM>9<^OUOud9zvZmp7i)H4FyEhOo}uqbKx4U+qESCtP|kMfi@=JOi+ z63@dowcL~LSOJNGNFmVfF}@tSpi5?UND-mB?!j@qE~9fKAI7T-lN8E zrAAXi*N9sO_K-bTL$NfqqllnK5GcxD$|or*^TBfv+dhM1ifwx^m|M!${!ROu_(Oj6 zx__C6H;e_U7B0W#C86=KGwM@GpD$H#XlcB4dEmaXGpbd!M@nDJr^V_vNmrU~jSyhd zu^uZ$G{;mnHh?G&K^Ok}oE0W+L80j_pKJ|?RBxi4JJ)46@^ol9&pH<5 zYhSkqKLJw~FY`((Z_}qh1iEc29+zA(AF8NF07O++#H&V7kt+}byNDQ;r_WcGjs?`5+hxggf-Xcot;FMmf~)`f+;TVRFWtr?AV z8T)rE>zbY=@HwyLNlf2am!)Yis6hqCC{SEtAF*Lz7Dna*^RK^B^iczZxOK1bLDGWi zNL3!i{!igj(2;H|&9kRt3Ly{9++se9j6gVbLLDf#p_L~B_z?1duB=i7Fa&5pp|vWm z!x|xyVNntsrEI#Q2SCtBNID96yeajyG`6DDd}Iqn0mECNy{t7(ql;vU){YYn|LuR% z?&D7J#hNFSGH8!&iSr&_&Twg+xFx>l@N%XP#tmHJc@2lPwu>2O1*ZiMl1L)J`k-nj z65Qx}-a%ZI@Z?;+w{p_SCn6<&%k{b3qrS-tA7Jq)^u5CUZo865SJ+NihgKRGqYi1r z@}BHDYn3IXYUHF;Tu+#I?fl?fk9bFC0kRNOrkt8C=9BH#`WdLLAAQXq+RyfueI>ZV zI~_$J4&SlX6l*2m0uq4(p*ZVQj$%$WzL0zJ*)NNyJ7oPKIwWm z>8zA7PFcz*LX8qPiyGJ3HQ-*iU&!69ktK3{)4iZ}gBX|UhROAw7162x%VMLl5uB6J z7^ge%{>Bm`Ve()a6>_3rdU>-$)>4_z5ym9Tz+40?TMs7gr(E4w$yKi`x2pRBD~Tet zEXhfD`CYwMEK-!9!se)p0tkyl4CCi+zAKDe%DVDrbPx>RK^GpRI>-yJ?|PM)B`dQ~ zy}MbcrDDEK-K-J~60}=n37_I5t?qCXM)q{krhwQvwTL}%u)kW}ZMeSVU}yZU?YNi= zDG)nR+13ZC35e@yF{N%3(4iWYJ?ua;zpBz$&%Rr9_U2Akv%K-HK&t&C4_NGi2zJK=jAInt&A^>=- zIQwL09T~p9vwqzH5b$SJhgZM4rRzGwph>o9r^062u=1AQj#l~Y$eWR+VlXeM;~_;$ znxW~!oUlQA_%=6EFMfftk?DNJ`>D2+MTTQb_dN8z5=bPFCN! zx^R!yQD!Wv4hCQ(Vv{EKJ?sQA@^BTUjY7*YcwnN#KK-j&;-=)g{tgEh3%zRY0vJ{+k`t|ENx#@C>=spg(f z13{eH=R2-t=4`3M%vVe$;ys0RzVfA1ga@@qX~n*_EW}FuR6}2KAYhse-^QRYdiHfc zH8H8Un9-P4ghDF|Rk+iv5Obwmlt=m{4W!)mZBX-(x7Iuog`?zuRof_DPbE@CrCPP( zpH?;cFCz95L*aQx=gJ|vqF96>CD16!wMJ2{HHvbrQIu~@b(wVpwbf}4O zf6sYqQm=pd7SU8$igWZUo`t3Qi4eQhWL&BoC!%BP(~8bYsAHRH6QH2%gjrQp4<5A# zH8>g`X@7n}kKY`xSq=W4;&v6$cC_uev3zF@C2MVA6deW;if8PfqUT!$M1#5a#dCV_ zoiW1RV8<^T7Yl0iBo_64sMo^V0oStuf~Z;2(T_YS24SCDEYw~2io%asWZeT0j`X|g zhV}8|s^fF*O_n1=ifuLYee7hJkQ|wBAQ3qaL*o9jC3J;rQ{372=Z6u;3!=G7hx3sh z+KMAtux#0=$)Ra%8RxZ?O7^EIr0T>c;ueLEjU-q)-+^`p=l%>ndN3E zmuUCK+?uN{cG74!W_GLQ!jO3WN3^fbxpCE5vhI&mWA5-uOw$t|X6%S5!bHS&BK%T_ zm$ha<)3hq5H|y*?PR1$k(K#K|2vp_41Ws-pUoTI!m%EUjX1FNGwP%jrX-=phnoMJ2 zg7K_vey2HhYZLdtF7Gd1-Z-^+&m=E4Ikva-b&;+_wHsHAZrCM&;XdIEfLJAt6TL`{ z_kloLMwNWIE>i0?BGwBkIL*8nk%^7);=Cg)Qa^y|%I*>?AB$l5PVHQ?0Z>J?^*n_pt^^ZEt^ndk2R~QtR&TceZiCKpA#+ z54PQ zQt^~s7#CtXGFNlET53v5HD#TcDV7ThIh>9Hc&wqWg=kejGeAl&a;X#Q0J;8(W#I4M zAH$;u2h`&C7jeLs3ie}$`Z-L=bmX#dY9$wh1tuf@@bwO72cPy#Q_Af0>PB!##1bs7 zYrrLpv+*Q2Z1o_m=Who5JYmzDYHbg=y2TFlUPL z^0)SK6|_z&%IM~9mVp#kECw?TZe+AQlOS0O%33(wV;&tY)Y)luYTCg7NZ8)Za6IZw zY|^sgc=y^7hz8~X@o+75u1?iVov90TsgBi&x?aCRN8$D0dS!*4LD2UEe?H*P+wjN$ z`#S>mcZY8Y*xv!zrvU4t;kywtAL3L(qiEn|jiPBG=F-FCu%%91P^ja>6RPPrI44wg zJfclin}yGY=TZfHvA7ozRZfvO0}dU+RfhX|5uP*RfPdEfF%eS%LG9Jhm&aTXo;}uw zQZQ0n%Vq6M&@_yP=hTNl)LYKNC(_mv-IjI+oS75cfh; zT(WRATQ~@MJ}vevD64=z1Jhc{03|;Q`gns-+nX~HAKUxbWRUmD{re!ovuYPvqlmQz zj!F$a;b}UuLVD@}Jd9jUIUq4#VO>sNE~Z7o@<(cNF}TU{-ce~8c@b?4kSFLfFCxu1 z?L}e_D8JqMDE!**x|-j53%qgro~HY)OMtIixG}i+~tV1Ae1l>g>4`Xh*&02DVFNZ z+5t#6EuF;CNmcGAw7sY+k8-BG*wZXTjL2-eP=jlbM+u9yTTnGnG37fHId>aUTw1x_ zklV|7|MvSAHap4-o&RY4c8?!xhxfB zQbATJSS)75tD_)$?>T6-4|YDu3VnIRY|eZ2xZsD^>gk#0fL=W2hv(|WJAOD*-*5B7 zsrvp8ez;IS@b5eIX&1F z7^~>H=FFmVet4=*gduyQ#`0;Q#=r5yRGrGFKh>EG;tzHH4?nzA$tgcPQGY+OtP|3Rg%`QbY?JK%@kRQ`e=zESfx{P45-AWgjT_`-v|ojqX- zySptsf-T&o#ICS~I|sXad(OYb=Deiu3%1t^reU)m2U-mncQt%V!x~;;y&wdF$7`IR z8^&L&sK_?j?#f;&p&dxDLO2d87xs=v*T~-S!g@|M=C;OCRDfxjgw4X|(<~}>yK;ef znr9caIlJ4i`(KL`Kp(5ZrvcOEoM=GyD&XmHy`51hHs`n+#6go= zjEOSPHOozPK!N^Aq+27fYXMnm}Y0}x&v-wlFMX*cw{@OGxF6N zb@cj}old6gLHyjkwaqo(DWyT@;^W8j#>DIN1U+U4Ma_8;&jN^W@z6I6j=X9ra~hs* z6~sHVh{4kz%&E9I97`m1N+YJ>a7t(70%j)Z^>aJbOvG^5^4wzB$Ju$j^NP7bGoX(Q`RO}uv=&pC}}Gb37sxbgGoK>oh!^-FIzGRrAy{SZeu~l}%4n!LO8FUC zt)%t4JPX)Cw(}-aF!U14f{)@wI1R!6i&_JL%<18R7U5KDG}5;Tu|^XHs7WxchtZIx z_`DWuPJ>Z@Has1LOxHRr|fKC%F`NgrYU8L9)%M#+S;N% z4z@b|IgfW9WWza)uRjT+IyPRk9Miu$vl^1BA`Gr#z`pft5kff7)}hBh8iZ{1)(`6S zNK&K2q%R%JsUPh=K69>|bFuX&(i-%qK{T2cFQ$~ameun{)QBEEBJfWSqka$%(|Ua* zO>ph$BS~#EkeZE_Sr}1|axZ#Zriyy8)eU-HjMR&Dp=Uftd9`-CwY}5c>2!BC<9fTZ z-Q5Yk>a@Fi-Tm#|?jFsYefG|-OPMWeC8#Z55$Yt?2vAr!>7}1a@y0Oj=YaRCh;R^QpAV(puLs$2+>VS z+Eb<6F2Z6$SgfG4ebDaJibhgz2V3b_`ny1#Nb=FoZ{BtoG_OOd%OR;NS(jL*N0fhQS*VkRGwBR* zLa+qtIt;IaG`v<)4Ied=>?RF6n6yTl@|mY3OgGbdwwWzIoF~(m4RCPR34qPL&Ng&! z)aUJKclbor8n@gLa!HvANf3ZSQZlcDvo~_U`^Z46-PBx4FHyeX!f< zP?7ES?v760-fkYWJNvu4t-XCJrBmDO4z+gBIcRqe_V)MMI=RznH#_ZZqKDhN2M60O zxz+5ncK3JpsH*L~U0gwL77E?lr%Ly?yL-E|$J_f|R87?3&hGABdzTVAyIs@bE>U*f z_8w8)2c6cQPTk*a?(MhswyA~AL3h_Sc(B{t+3j|^`+Ivto0~dzxA&Uc+uOVJ50^S7 z_uj#FlUmwocXrwb2VFBE-EOPdZPTRe?033*I~|p65hYLCEu=Z*`Jp^p1^;gA-;Vxm zZ$TIsZxvge=1yyOx3k~b>(YSSweX|XpiPv5hbo^`Z!Zs9#7#eH4`^@n1R(1*A8s~J zHhuSp3KJ+Ko8athMX0BjS_8U82GX>ovmdCXJZ7+t>yuv}uL9t@hr2CvI%Z z>J#qR-QQ{L9JIIhX)Rjq-Cg~SAYx~~OEXWHne_DXvB@qf&R4LrWM`pwh#7*Z|m-L^rsF%z)p+cb7#A?-`VbLQ~JK&N7O_e z?d;HTM7sgy_Vl-%ZhHrFwbKQ_b@u7gE{5G~5&X0}ojoc>^`g!LzmrYcGSuwBervnC zd$3P~FrDl)4_bSzZQ3w2aWu=VowxxQ>^A8%#8eXO9MG^^RA#RPp9cqndU)1nZr>{awmM-`c$4S}np3d)wVk3q2ujw%zsW#P_`}bq7PoBJJ+EFS{+O zZ?8q$y}R9_jgR`MTkRbHN4K-Hvrp*5fC23g^p93@mv&mK!#$_N^{~B*BiCWQq!qg_s6L*2u zmU=|Bb+`8qI#?@HuDwG&>bB_f{z2*yf+?Co;_y4PRJ7i^ditoY?JjPh_i3?q zx}0uD3?#AL>UQ_rguM26Iof`ed%$O%gI4RHwX;JjpzGYF*1P*V?d}e(KV_k01Kl*a z+ieg?`+KxK_7A$1DzRGIJ3Fmyz&$PXKJ`E^@&SS1{=xR%0nO+3eru;(incWY)ehm= zR)=;%cTY;uInnMCWDxo$Y`;@!idrGKCwxGQanR{%aN60XzES6CpU}{DyLSEQQwI=1 z%Sl`2z)aIN;e1*~TFq9M)`Th)!1!r#aT4dvWd0nEY+{ZiQ2`UiRUJCx4hZP!grQZX z8T0lg;aVC}myix^rd?`2ZnRt68S3=z&K|8Mjh43VetC0lH!-;ct+ea}@!J~i_L{qd z%UT#T4!>@>P`gQ|D$N-%4{ZjZrF{lsnvJ~!U=CX7c5A;3taM)Owds^0_}=f*2DPOC z7+r#o&OWN#*(vY!gC?D|`#^Es4xvv0a4Nq`P`^W%lM;8T(9tH~COF)06S&cV4!nrT zAOw4`)7c}8LvTQN+JiR(Q-r|iD|M5y5V-GoH~{-%k3O{bfm^oQjB#kO+o-Nfr#Nju z+9JBbZganTaKPtEw}lf!)|yIeQCBvJXXtFw8hM1%hZ1FP8M~W{IJzGd&-DAen8cT# zpy1^sjp-zfQL0SBUrEGGO|>7fi5|Uc^7@&1H}v)so#1&Z&>e0{SA1dD+cK;7K}Vj> zt=k3~E+oXY;}$DZpFV!&GFqN>#w@?Vu`f9qYsNyOryQ4r&DH> zN%RrtI=YhAR&S_JFYlZGH}>MY(q4RA*^4i$d-3__?8R55A^JN|tTpDJ80R|o!9%;~Z{H|n0zOB#&qg+C^0c#7hJ15Cp?0#|4b>|LGFv$j0 zD8e1=G_plcTwBu&R-+BGwe673HI7OlO=`5E!@}XG{EgaZ_pwcfv|mTijVKPY;3gFb z(n%gi@2r89MIB4V9eVzaT!8D#cn&g57xalYA#rL-X1lC{Htt<|TrIs8XS__V=zDx0 zyiuBcf-X0S4!*uC;Syg;<%2xrRVuF63b1SEHLv{B%68SLgRfzIgj8@1e0xMlhfoV) z2|^=1PlxB5&#LOM7_@rvBOoc(ZI$|5ZLdGGV@4cR)Zs@XR+=Jo9=5&)l`TX+_LtNB-lgm0{k9H)C^)!gp4|A@RwbE-eYoT}~7V*5kE0g;Kb*^{xLT)^>;dm6z!+KF$P#t)ghV=w5_4-&%>S1l( zm;_s6bxx1d#yLIq_4P!5%tHM!*U<)Hsf45O>tyNwFum#5_ zjhwMCQQuKLoNvytWbH<_6}eXaEO{+vZ_6!xzW^(UR)3|LdVQ|)I%Jqce#{l2RYFxM z9y6qF5)9%c;+MD)(aX|vi1uSmYobD-k-%_DM@M}+Y!hPEBcp-Dr@bjG+9t`k=q*%! z^nMZ1ThGi%suuq3^^1Qsh&c2qqyLp5c@6yQ!F^kj9uIX>qfqbcTXu?)8@e?^pNIKy zRi)QK+duwyiIHeam55qHcF`}uM zY(;8J|IX>(=~e{QLl9<$vOKF_Y|=buL3u)kE<@u2*P|CBJ4KhPQxvI7e~SM8#QL)` z{H^=Nhk}JaC%E@xxJUpOQ-+HL;9|;fk_&#ho`PzkLF3Xkv2zVo|Fl_`svi=--7#yT+g( zSP%eBp)Z~er+}kLxY%4UgiHV*Q-+U;zy|?3zf2l4yqqx@jT>ipx!^D3#s$5Y7<=KY zalU!3j>GfK%f{*EsX7U37n|pevrVe(SY3y;Gx~5LZ&zXCgfbstLQeoyVHRx0^=tZf zRgcQ>b=A1u%<3nb8U2mab)&OM&+5cM+0i;EJMt&=kCF{vo4t_h6*E{A7d0LKgINT< zN3;sQw+K^bv9W*!<2Yoc`@G)fMX{R8yaYG_&krXAm*;X_tJkPMO9!Y=vU57(R4h6GW*JjI|;Dp{Zp>}^uD!I&i)0i^Us!Jsr@1_PYWA3aV=wHhyuRO z(_E6ZQ82#$;f#d6kZ7e7To__%Qcg|-XK^*mNATnNsGJh9oe2>bVzrlrbRZrUQ~?-* zIbU5CvPL7|%qfu%x|U7dmo5IyM@y-rAZh^tD*Fw> zAUvEoBdL_?&bV&sQ9abPZGu(l!!<1(Im3b*Ae<7@Fa2+rr(_Acp<{OJNzfn3?O!;r zU*ZJ1=gZneU8)9b8SRcaUWbB?{T=h= zDmg3A7MI<<$(*)m9%5nDpwiIN$uW3InK-dNCBlZjv(^SO5@o~65Yb_nv3zK{8P>9T z8|XMfjz)w$zJ^y6Y)&n)i>U%&xo*F&bbF}n2<*0n@eP73nVma!I!+z+-~V09Hy1={ zO;&f=0#;t@Qcu^Vva5_*+qXDv0Cb6W>hwJkLrWo+Q^hWI!FH*hv2ASBbZNF&X?Gqb z4Os6zf`Lr~TIT{lgy^-tm^}ncz~ZpI<>}7NsT7pwyq0rnIgI?K3)6IlpD6sjW@`ZF zw|Nn4p5hCw>L#^c4yi^36F8j)Le{S&mC}3`%1`XUG^Q3=Wp9Y0#fQ z^Zv4aO!V$K9&JNtx`D5O`hh6zxZZ}sp~ls5zyb;DfQwac{|sv9jLltVneA$KbZ$Fj zRVYDJ3vrhep3{_W)pj=txt}spc|@Ep7sYLH8|+-LS(q)n>g8??*QC*-(N=2lQPJ0y z*ePogMT9x#qk5v4cz_){ND9y*SSBVfwuqeR)wno+La_EBd^gQU)@R2e@Td^Ul)(eX z1n}>B$}0u9Z8-pLI`kMs^r)BSt-6vgVtS6XHM<=f`9V8R)l}|tyZzmUTc%-*-u)bekPgoSk2~I)qf^d1<#0| z5o?0;SY3{_fx%T*>)l_A`u~sWpLbd%|DT*6=CP+{udS;gnL5~Q9~_8GWq+q*%&(yc z*cJ2Z{dTv#3tBp@GfOpk0K*aQw!~Kn*t09uLG&=VdaV!}6v`F5(T?yFiq# zin0wI=ZE>rE9$}^!C~GmJ7c+wrpd%r(kli1q-S;=1w)!-_-yp?V>0}JyA>!+CBrLD zIO4xgT=H9aM8u?0Q{(Jn78S_}0ur0{=A{PNm#-CrLb&h>6vr#J^HYUBpPq&{!|PG+ zuP?s(g9=fC;+9Y4S5wOV+4 zjJH;+_ti_hy~JDZt0O!=$8+6i7E4UtMf`GH>Pmi7VUCWAKZ= zt7Ly1=)R-3p550s<$H18ed|-P{`gMZVw61AFgqdPVHZYPOuvi6tRDymX|qR<7IdaY z0b81<8h#hV8W`_m4URS{&drEKq64$e4^ZhY-(gL42y?y8ubGyI$B@2%rD5+PUc)9nr3l61Um+lK}wZGI%vm6A*zX5PDm2S!N ziy!&7`KMUU*QnF5II~?1pnDsaMbx%f)_nEyzUBV(%3)^2uI<{t>w4i1Y8IP8A_z0hlg5H>p9eTP7 zdU^BYCDA@(I$|C^9OHbP);_4VdRG5{Y|rrij8?wqzTx=^o}b9`TRgwTbKZRSJ5f(# zI*KUiov!_i5*{Pru}-+4gqKKosS_?K;W-kXOG1BzEe>uL7AEV~x~B*y5HK3tLlb+> zVidyQG)Xf&pW)91{#=5sU9MqF%`(*YHseMusqY3~?OA4$4{MlDlyMoK+vY|?uPbs0 z{tmW?X2oG{3hHD&)J+-#Z@|a4NfHzv@ZoKX3W0~zmoD{4s5+!R_wzb}51-!hC!lpE zA?W!Zd9HsL^)!w0gZNmAE%sG^Lg$0Y44b9B@_ng(rn!+x*xrn}ew!W0LUQ#hOqZQ) z-jmpZ->aY13v*}|ae2banCzB0r%bm@yZcg_c}8C=lTWGZ<{x#eT>|>BeigXHx`p`7 zTZljSdCeRf+^W8mWhk%JA9k(E`Iah)?_Q5DE9;TpvL1v|l32YrE0XFJnZiv2RllGE zDZY&J>zbbH1wK53kA_z-d6wCs!w3EQR{zpGkMT)(RndxTE zs?D6~W^jUWGm&m4(#=G=nG4;_<(g*P=%d)Db>fmw$+`b6D}S5D6|8~i>f$O?;xCA8 zrDyS6EkHGJ;}s>m@tS<|HTfp1Au`d0JW9`E9YkxT59h08CSEU~u;Oe=*XEu3d9~qe z9Ku*)H{MleF*wU3;wmjic@c+av5Oc%H0)&@UX)XgW(@v&y>5p&o9TwPUF(g z+X@QX`ej#j+V)Gkqq^H2emg;#{oO9VP=}w5&}6GC1+Ve7vvbgicjawc?Lo^LZ&&y> zi$@~|o6q9%4VhSkvz@uMJMXr93o$^&h7_A^Vuu~}Hv^5d+7XnU zELBL9#gTI(l7&}r0!n31n$v6X0J1eBs2H~SHwl8?d_ertQ9Mky=+C^-9#Q3oc*Mh2 zI-sQ99AeYCh)oeBiYStdpuz~yAapIY!3}`?0iAgx{B*$M&nqXzf|lCNju;WMJ#^#L7h&~u$2E^on|`M&k8X& z7SqVc1JB|#&dtbxt}kW_{g%cGd~12|S*+eoVk0Pg7hh{Jo0?|P#7G9|IDNMecNvpd zUBE4nH-dAWq&<1DyN+1V#6=hKM*D4+TxOD+wi8W;8}l*Vv%k%xpYZFIbc1%o`$d!% ziP5r;RUS_x`AAUeDdRn(xA^@cPRH{8gx(W6Bt)P{FN+hR3O;DJAP~~9Oo-)_1T^rJ zB90XqB4XtY=4Grt&^KN9=`9k-Zfkp21d!}!#dq|<0?6I&LANUc$o>6oxQ&DWvJJ~O z5kPi#+PfVQKx&~O1duEb4k~8-2Dd}CPH)UM`x`L+h7h7tTQ+-2UnLuHT#Xus%h+Jx zM@0aiA0~WHmDa<*zW9g`F2rH@x_`^Sc?B|^fk0)+^Ws^`&ML=NLJUj2Rt(rrRUJOW zp(ATu>0#e4i2>kv;k`2zO(yg=k1yzNGP&xtmc$GghjEgL$*OTYox+oP9)}NFvU1)B z=<6E?T>;nAXfI_m_in10)5XP79Ut@8YQDJe z`%bT6sn3+a1K0E!C)C4w!SmoJHo{_wy)s$Q*70i8NwmJz#s~JJbsy+Aq`z&3m9}*H z7TSYmyx$n!%l$Vkan99dYVzfH5*7`4RPs{~&6h1*N#J+m)^d%o+@>qvlLR7vBO(@~ zvv_qmD*epk_r2j?Um)qPFGdV2Z7d}MGZ0?!#yyEI*9`j+G5`3qRnrMXrL3K5%Hzhn zSu;Zl$`eny8n@)StDm#gaoUcVsVNWGlr)ufv=zqMikykv%2w0vx zw(CTWlstD{dcUG!Fx~h}#QPQN@wPCUY;AUOQkXB`%DR;Ei zXxyVUTBdSqy3|T*Pdvg~SGMr3qzmxSMU&D-#@D);ALS`LeJI~q79T$nZ~lfT@pbyI zH_Lupn)hNDH`C}M9)+x4$x2eo*bGui1AUd<{LnSZ@ri9CdFhY=DO_8 zwg}|L`WnGO0*(Ws@9<5!Co@CG?Iee(vU3z>@{HX?9En7g2l!Y$pa>*pk+DBwdRV|nTrXDCcn^FKoeCUxmRL<_9Xd;Zci~$% z3^&1#(Z{s;;mV7g%His4_*9ywIaI^t?IQEvB4YjQcE0dmCV4gk+azx+&i3ed^ z-0Albw$0_%L7KV36$jO(<-WNUw<)S{rEJ_fLRiqxH1OyYGznjemU!M^3radotQlBe z8y7g;;9iv3*at=$Cq5S^`XMhM6%u(%Q4m z0n^;5h-oWIHy~?0-e|D4e?Yst21S1z71*kTAu!j+k2SW9XtT|vRhd9XM0Q!~hQCIj zAwGV5U;*g%PI7~j?*fiu+;>k>S=$f9@ctHrtz(V;2C3TPH$Kn zkM+HH`W-(HYUNe2$01L)d3n#xwQp_6^hAcwnLGE&+?LGS_sZPi%;V(V;~ghWsEQlnhq4d|5KUtc^n_X@NV zFXAHNlkvvfN6dRfV~o#n6N$&AxgQt`U8DoZoj|Kq*T)A5y+%M{T*PE00@G!S)5V3C z%Lwj|U3NKKN)h}-euZFQSVX2Pvgrl^80ZmLk%eEsz)rj^hmt@Xi#T&TqCBey|r1$ah)2G#H5o%6)K1WYArHPwCO$kes zL_8xBCRXd=!$c@y8+Q^W4K_bQfFoNikU;kE9TP|y%77q)l18)B%opk7Qzi}hdX9IM z6bR4-y+3L>Q4+e&8=neLg$TPbtMsG^a`<%;?go|C5E_NAq^zNap{+9K_0gG7axBtV ztG+_3Tfzn?F}6$D*bbouhVzh)eR>#;!ugV_l4T|u6c?*r8?0b!`n?DfF$B(;P^gB) z9eV-Z2T@(Fo04AAhqLi;jEHg5!*r0<=Fd-;Dh7}Z| z7b$VOGJ)(!cas_|xAqfd@#^G;HV{CWu^-oe;nrdT`;S@eoW?OlcqFqLmxx;DH8H52 zN!+tDf{_fxf6NN=P4!9k6Y9$)(5b(grcY(6-L7n;Ah`#%n>OF0dD=5vm<8Qvl<#lu%te14mphogr*EkP@{ysFhv+(Lm43@x8h@~(yQ>R|Xe~dl#UwYFq?o|%qDKV8*;!AR zP$1f#X@TErg(oC2GlXZhOy&OfyrJ-=H%JDykF0<}`Rs5Ds+?tgpH9ZJGtDO!&YIA- ztLH4RQiWDA4Av2T*P{`r2RzT9_c+g6GY>MN6^g_=w;TpSlsm`g0VS70b7vfr8wXH9 z=TA<5eedQ24gqj>g}88XdPS_^oHip$i*TCCDO;WqUS#h`(nld*oZuj2Af3e2i+BSG zOC@AP`FPQLfKjhY5ta}ZpQxrDwyPM{M6Nc+MTu6+X%%O6b40mE#4#%>p;XB?2Yu-k%IdPB;s5F9~Y29O8h^NOH152my`7Id;beE5LXSw4Q$Ld~g6V_-a7 zsY&SYSAWbNAI5<;^0siHvC?qNW@>Pu1=O`t$Aw?Vl&GKaNU_iTsqCV35cTH4+PbG8 zeQm{MDHsIRYh>0=f*dcGfqJ=)9sP!{0v#i2sQ$Igr(p>z9AX~7UnFo|;d5{t8jXPM zz8qhaj?c5)%F&J0`@-jBq^nT{irzN&!A0BUqgtJHgamlD7DY zmmb>?3Yvd(6%o zmxKX`2~iO4f$k(Y*g$jZJx>7OxFbUx4w&^me);NYPndASl8;p~@Oc=>nED8pgXo`N z`HU+_7Pe&d2*C(y>|2daalW5N=2Y9$I!=Bt?@j6aF!N#Mx$7=2f|Z+%zB_7o1WL== ze!LE}>qDMW&wez~v%LtXbr-masm*NGm1+1ui=j60mFF%LDA5%XI-GuOT%w~^4u&jMO?3nB#!RIr0S zeq?Bb9;juWV1q*F{LMOa{zMeBODKJwE%I@^7NO(L%!^;LPsyRpzx9Rj?MA2ZRkF`#Jr8I%NSndYXw z7#w>0BrNXAn{qj+SrJ<<3jEoph2iNT>We*AGdX;j1+^@Ii@8F7CLTjSHS;Vh3^U1f za7tME4$^)ZxH){KaGMyYr|Z{@D5}?@F#qp_!k=?4k4xvG77J@>FyX+(Y{tjJUtbU^ z(@z)4RXhPcG+5duxoT&&|5apf3Vl8Ni~jpS_0+%ikFad^A-rCb?`pr6vn-z(>~LH3@=N%D`bvha>I1$QkXkAFN2a7qI;;38@!Vk@na~?vAmmKr|~p-_{IMp9v4zy2S@&1mnOkF!BVX z*?T3%;$Yj~#Ana0W>n<=04FndB_)BXsdW9XFTUjINFei~23vtDw`I4AZHcGaHpOp# zTX9ntK@+lzz8=-Nku%pw8DnZ3P)3=0^(^9KpF=2{l%-=(!C>ixnbtMJ2@NdTH-uqCLFK4r5-FEJ{%8fNDUXE6=I;l1$^F7 z4G<}h)x2rd6Ba?x1G7cts5BInF3bm&Fu?>~DK}3+4^iBhd1M{`4 zIc=#6am7zBAO2A(t#(8#L^J(XO|vumdh$Un(gd(TFF$^}Ecst4N7OW5`c|*xH64m2 zPes3^@6zl;y5alww~h(m|EHcfmvOIY#?i_=1;-Zi-vbFft$b3wo&c*K05 zNdi~z1rji&P&aZ|X}t_5;1Z@s$c%lJoo=AO!-uw*XWUix9CM2*mJHz6aLAJF8#`p; zn|Y?OovYhk%vJ8gr?ZjBT`~^r@|BkDGXLLbTm#kGrjvWNEGpoi*X}#Wcm6ZN8F1#Z z0{VPpY(oOwIR?VJ>X&e(cX~^%>tO|oP2HT$NB6qiudYWrZpK~Wp^>+*|0!$1540w* zajQbWueY?^rP78etDXK?)+o*8(iox$LUGlY-F+{Hd#=?2xjlqM=iuAov6gVII3Bk* zG11{%T+?y{6pia=2!1f8Q)fXW0&WWVTAZCgH~9v6p>!)C7`6Mu1gO`NpCx}upVq(p z_BIXCztsxENd#8K%aL!FKFj+nf|jx*#+>}Cs-%z_KtG>YUUo3&%MVK8g0cgps`6_& zq;=Ip5*rVcM{0%$X+cV?uf9D8MHqTM6TV#27_F$)xq_jFh(CU(Q^Pr=(IjM)pT&Ho z-Y=RF)p&`U1#3&d`uyh3A>lg*lg))A%5d*3Y3-Cj~~{|qMNi*m%snCYV*&Z&JxG>*#X76TvF4I z>!{zSV)y?U^zZ$p>z|Z}uL#2LyhYe4oi(4#-ty0;xH!+e6J?DoV>UT0NnGTe*k}BX z{96f!`BxFY!S_bj{g>drjDg1wa3{F&iCLX8XYk|aat0-hId^Ng!UB}3{J^;sgFT-= zaAs&*KQlaVp>wL^I9RhE+}*gD5Ym6|7W zNfps6*f7h*oI79q#6iDUi$k*Ff9<~VGZbq-c`bL5Wj-NzxAyAV-RjWA2?ku+lrPqA z%De7z=+)bM_GYK=Hu9Yea}@qrGxBX^mGIy%=Z)TGJmQZZAGCRIiHvZecNu}7vHUSU zb}T$H^R>0zf-%B05J!9>e>Y{OwDB8LZ0LYNI-2V{5t^lQs~^Yv_EgO{0_s_aD;*nd zrGIgFPUOIaQ)`Ka7bCG3f;a7Q^eLiKPkCp&c!%yScxME~A+)4sArzY)ozdeN9^+xX zemWXXMq#mBp%lU!z60v9`q8X+CSG_JQ0a9Sg^pdH1f?5;Z}pAAZ|nBKGjlS!eekb< z--oK-KCL6IWellZ;jDaZ<4GD*BV$~V=7?BQ?g+(s{hXcGykam9U)<6phc1#Ptufy8U;-*qRux z1zPb+#lG;#YJ539z^Zb|62AlZz$_!G`QgLN zQvjU~rg}7@teIF%&8dtp(MPH6<`kU7JWL7O8r4+B)6j^7uv;tqg^7hlL`;f55Q~=x z8JGA1Ueo}KODyb^L60E^;25hp^t*AnGhOY3n%=2KXmk}<#Cvdd8%pR_0SZ6b1*MgM zvY#W;9~}rr>yWs-dc8m(lA@~5X%@<}Hf3!%ZsbwRkSv(hw;IZ0gcv9%+^l6zm2(#b z>%xH%Q}kLoI)^@iQf5fgpn$0zN8ixNiHTx}FD?t~cv-GDr!(U=0^BZUE?Vnyr>?iI zxx53TZM5PHCT61Gdto<0BZ)o-8Gdz$u)r~N)%b|yQ6q+*_<@wj{?jG><}&Zrq*%!=zri6p)~&*S-d zHl08#)>fiRzz)O5!|yc#^usy==()KXa|F;``Vk^OE8nBtN(lY%DW2EcavoKb8EzQI za>n|obNYoo>Xd$I-IyR|fgfvE&w07yc>Q{_zuEiCsy=x} z-Mz}UV40-I(&_aYQB-N6+O4iCX>{SW7U?(i#6A1ROVZx_SP!_WkpBQ;nyA=+Tc;9BZf2ZjKCyTwP zuZ^j-9y_fqh|#!_JI&#!-)Jn@F^9GynLGWZT;oXnA?O<+Dd1DPt-Vd3*2o7kA_A6t zi5i7d=LsB2PP~!$?`@SqD~G>ZA3D8=#%JnjEPTWFs`?4>gNai*fj51*8FLb9?OqX% z=Gmj@91ls#uJPe{ZUIO3dCWl>4Q-U(e$(U(k~z=g(jBGy8r|zgYaZWrF-VNFpKu!rd$(ow^Xj(329{MQT-heY~ z7`u7>3$F%7J(}TA#pRBOmbEoM_Kf(IccngAH#WWrE<4y?Kl`WU**}f{Bg+L5xcQvB z3z*FE#)##OUfg8u<~alwQ3!H-n6U?{l*5UqbY?vg(PHX_9v>n?xaZ>e*3q4nM|bww zu%(x3UL~qxvxPYX#>i{q;$GX~^3E-F%wNB}?$$E96A)P^0wpAWT@7(0V@%Lz4w|WL79<()4eyrPv!v(BtC$l73|#kF&Fsj_}C_ zhcbxtMz{CRi8!Y$duFTHb6H=Pgggf9faa&@CoXpBxzW(pYwFlfBZxrsPUoS6xk-=y zzh0wci>XSh6D%rY69f~bjX4YRL2le>_Tcp)6yNt^`957sD(>wE2N(n4Jf`JQfdXFsqOZ?1!W}yd0ICHD|#f3(snax*#G|T~&0UPn|sK%DFU| zG3hZY5vsEls`rXk?Z__#a;93SO5GlnS-mSY19y@9YGtu{e79Gviq9-&nLKm7dwI&r!hh`>%N4cWvFydgf9N2~xuFVfkw;jc zwz0~FiRVy4`;O8gPtDM#o-Tk8{Kn~)^O8`#+F~aO=1K}q5_p0Mw=!PPN|Dw@fK`jE zcoyKpNa3$@THu$xxT9>rWeZ!@wN`RSfL#@>-Bmw4efAk*vCrL1_qB;!Kvsjhw)-mW zi1pKbbKg%n{9m{gaAop%o=q?Bvh19nM>%XZl}Mk##l>Q;=LoLShyQo9D*xvc8l(Hl zd;aG%8b6_1H4p#9ow`Q`X!>e;2Q>v5lLaa!avTT`w05FZHJyAyQScnn7S^9~fzoET z>Q0{Bt~=>;B*(sv|z zGbO?lKJQ_V07Z{vIB^PF^@`=vyA=6EYi=mjhO`)bvi3;+k;B;C zpTe!&Wt!I&QN$YisedVmsIvBVT$Fv9y8aKY)I4QLnTNu^ zeu*fC4bgU#kcS(3>gF5q)r@%cq}Y&|^YquhCPe-4;Y`;{$HH{eKN!A#dmgV8+BlEq z8%36FoW>tEgdEmdmh2gi>kMZfKW3$)(MK`Hj<--b%L5kdt9{CX0L%EoS%T)=r z6778D5Sgu{T-*ZvzNFjhkw-}Rhgz&YL7<^umus=wYlPOkmDTv4^11yvT!$gX?vvN| zoL#2uk3I5zzPRwI@@aCBtYahAupFOc^)H##Kensad+Y^~v8h!(#gY=C`&NzuQ$c`? z|BOym&AJs~dN7+ID5i-!3Fj%46u=;0F0zl%nm{I2U)m<6EEKGIZ!vb~H%rBrvn$So z3{US9lhAwWr(zU~pRld;Wv% ztv(;CtE%fD=e%3ms;%*46RTonwM#R|?PNY?zZX*gEMZ?IDr$&VQs@WMCr}C%x>f58 zzA{I-Tb}CH5#4VrWvgw)R^iEEq<;O$HEE<jYotA4 zrh%kR)yzZi`?z+P87YIa+R z@wK?r2+0YtqKaTDg%Ru<&qAr52!sD?`My&z%qh-Ge$AiExKueojnz8j99606=`D~Q zjnG(mi#n;x`u;yhcDi!}EqZae@C5v!9fbe?3Iiex;^=nvOK&h<+G^jVP`QX(h~}3| zKVJTyu?m^Jq}gtB4XyoiWzB`wezaUm&ia`@Wi$R`2IIbH5Q_pQ%`aYNTfAUQ(DYkh ziKM;1sya4i{07mD5nWj z-E2-~tW7X-HT#+{0A0VJ>5RHPxW0yg;c_BM+per)G6_u5l6T!|_1D)%A*)Zlq&X|A zejb(&wkEC_*5FyhfXt~A5Y4ZTm?PIpIo!xm+`*YJbGzWsRlBRT7pfXNrEsxZ1J3_| z=dMh@zV5HL*={7m!phv=ou79{sBW@Qrd|Yw)yCoz3vP>0S9W<>xgYBofSfks!n$GwuP*Y3rwk!>q<<)Byp5sqzK z5J$m2o3ty$Y&=4+8}E1{UL@eT#CX&8&xAqu79Nnj_$>OA#8tZX|1%E`82-FCl4et$ zwBCLA=XiamA~SG<_lJi+5uq4}%+`Dd3Yx+nX)-T3Q6AG#+UH3qMJY@Sjk)MoBu)RJ z2G(g*IsJRLdm>WFoTGy@(0ySxsTq`202gcZ%xlX7FYTSQeq^*HZ@UY+aSkPYyzG*wRC^FW}Zhp>p=nDU%bfpQ~@`Old>QULZC4=ISmN? z6g|`RA%qcv%vb4iF$t3j2S86qFjO)Z!Pxb@kn~2~2`p2WD`8i4;mTd{Y3e3oH71== z8prf>g8r0b3u|Z4G&yOF3*WnvBhX!71nNdoQ4@&z$aPuH10hIp1>C|b$W2!{I&2nz zXv&y&*LXm?>*WsQG*Zh#8gZ9}LqGfuhf_+T@*t!Tdqzk(fO*XIbuyCK%;i>bb&V>w zz>8apEtLE-WBJ@XHoz`9^V~DGaAJ(q+-8X~hPB-&=qY zCq}n`NfsLS0d2zoYf;vkt4&@5zI!?&7uth>=hTW*h zLwut%n<<)$Q#UJ1`WWd9+|2CpJ|Y^8OS`W{g?`V^^ft6u7v?~F-5^>#Zg#-4h!6Z8 zp~#I+H=0qq5R{4z|DU$rXhhQXIHGAxin-PeRr87{R!YJihodlRxzZ)k&s1hM*$)fR zNcXiEiXn+QFt^g5oJEJQ{CAsCwik^ORq`P9n6wENJ$x3~Sx#?PI?q=)+ zUD2NgRJi;`BUy`rMAKMarxE%0O?J!+vr@a&XH2@Oh>&~UuDthiMmXTSb2g!F9z}PK zvk1VK@X|23^CQYqyb@X5{S`~{$wYYKQfF>fQ8@Syt8WxMCU+ZV>qeV_T1zSo4dW~? z4uw57FF1B(_5kiM?j$XB`#{G3Ps?>^_xrrECvyeM0WMi%UE~ghe!k9&C#DVGO`TE` zlXhm@Sv>V{>9$~C%ubj)Cxymx>P_03^`ab9d?VcrvR)Bn5H*`|*=6mic&Q)--Y>+3<>E5QA%Kg^d73azH5kwUkcR9XVvGRbw_%?_Tc5~Z8){q=T_ zT1YHoM>}{RsKw9swDL6AohbNlgm*%`sOR1*H~}=&*@ud+MMs`49m6fQ8>25V+UQQC z5Mt1lcOpZW*b*GXakZ?Gstf9Rdf_@Bpg(=#%WHw%lZp+QA$n+Qx2QBhgbEja#9moo z6x!UFrBP+ec+?|>i^2j*S60<)1RXNERMoLcnI{FAPQ+^KE@v8#fLXIwP;K?Kb(nck z17jQQ6+Fm#Sn|q#N*T<->%q~snv6lg)y^cF%1RkPvM>P)BcQ(t{+wx3;#XGAYgBb$ z9Q{)V#uZrYmydsqUmWIf~; z_GrK07xv70R+UMY>}frFN|~7|Vbh6xC;}H_MJ=$AFGE5`zb1*Eun0N~_KD&X>X~^1 z)mJCJ6;NU5|!^)i}=1&Q$o2lG`) zD~79z=wlRRuwR$7h8g?BWB2K*Exyv(pmB^ROUt+K2O*5F55Sg8V~!ByO*{U3Me z&lsUGLVQ2aFZ0euN~4ajqQ$TweCB(=PuB`Pb+xIT@YH^cyc2k8ftX~tvhp6EeH?57 zTl58>>+t$MMx{IkO>G;joHiZWaR;Fe44br#Jm-GLag z%DV|TW3Dn4)ohc$H=eXhLt4kK9wDh^2&ma(&6=T z!TAwgFTIUa?pSQsVVSrP;mDbK`1I-OgRVvz3CsWX%OsEP;1obOvb@IF_57tR3c%YgR$-L2=IS!aV$p$XTKv zu73TEiO`pk`t^)M8g^#1&Lj19%Awsz{r;UpQwk*<+EeczaNuwCLDEw7#|sYpP&>yQprgIF z%b^Pjec{kyq`pYgd8Gc7xG{w?4xL2m>lTMH_4SkVkfLNnU)A9$2l^^}#sRzmNf&=p zN83`DI{M6kzf@l)Y)cJZbKtugyx{;0UX7#zHI(LFsG*EvN1aIEh^Vc19NJd#KzgUX zuL_GUQs4E2sP8f#XOWW5ovTx6WmlcPmBFi1nc8D@DigDzM!$04cQty#fsm-9r_vgQ zq}(TU_B#i@s56D1DB4(D7yJhF*#NKZIpL*-1wbijQp5@TMp8z)%V3-z4PIaC2>O;T z^gQl55M1~LY%#ll^5s4FU)5QX=Y#?FS*)3JBj!6mV!S*N34MJX@|z*;d_^DDJK{-z zm!cT2M`{>o1MRR_215m~M8In5(Dc({|81QJrYaJSO+rT}@N+)+R672yDN$rBSFO%% ziYYP-NASt)F#HbZ{Mi);24~$rkS8c1dt=RHAv6vob~ql7rk;)<0#6U~h!%Dlbkt?A zs&<11YAbkHHnt&+1&4w!5ZQHoePp;{qv$*uIrm_g9Z$|+!_Le#?bb#l7W=yyk>7mW zZT9SWFr_8%3P}BM8cQy0?d*KmVa#0DCM45Lv4;w`^rbD0Brg2r#m@UhW#eR+R?6<$ zvZM5vi@tgP>cgU@OkPS{Es41D>J_T+Cu@oX5V zorE;6(rh*wb95Xf#@p%DD4Y^*+3n1jXqiH;6$xUbd2O4uuvp4DE8U0BSW?sxFe-Tt zU^<1KiURB=>vU zM7bw;Nh9R!l+HU$C4x`OF#@Z(xWjsQWo6tnHaPE~=n5{(D@H+?t+y{O^Pq)i!*s?n zD<)b>Nm}EWzNpHZ564X9j=N9xBg@-xcvc_gQCIQ%9ato`5gEQ2Q&j}a?lA)5RRSg>xU2*2ksUsg<*ilim04Me4oIUaYr!!aN!i z>C%K+T-ScGlAP<+)@&97?PEc?p)};}Fu@lFUfN9jd*i(dH&gT5&*xU=sVR4IVm2#V4_Pt>}%c}EIhhCAK?~(Jp*STNG`*mU7m&p6ETI*{w z2QG&))3Xp#NM<1qvetdPMN=NDD!D=V^Og`YX|Wz9lr~T>qT9x6gP|BK2<=qCV^$FT83-_sk*pHC6Y$wH2b#f;X>Ea4nh2f zwc!hp4i-u9Cv7Fr+SV=hJ`C3I>mZ9+#hM)pOVrobg>{DhXGLMt0|G)9l%65rbpje; zu_Et_84?Cw5X9{@JKc_b$%}%wGM_;EU8%1H#$IN2)^cqFC z08=QMPl>vbFYkXvAaxh)BP-~+4po>AapYXLo3gDNCZDUfP|Y_TBBij_(?$50Wu0}UOZB35eh&PhA9F|o{Pz7 zKugB+q#?pVnccsnEhKYmi<{G>Z*I}tL@IT_(`fF!XPyDTrtR^zQ=1~#7sbv)JdJu} zMoq0J&jVNypsprsM_Ck}LjPyP7_ja}v!e*5(vKi{Ffx_ZYx1(^0+SP3xe@JZ9vr|k z6>{gX(i=<))xwsS|F3jvVTCvKP1nkf_+)}7R<@)xn{g86A1)H87DQR$&@26@f-X%o zoyqS#QrjS6#mK7dbbX*IDVcNBsoIzw%@L}6K=5y15Y;5Of+kwGtypxFepBvhH&)ce zZl>rOhNKxP>!EO0dkp7SX{VJJ9I}py_SMCt7;f66 zY8KyMt11-|kDv;BS2Offx@L?LHez|+0Si)muK<@_o2-x6Gv3R@#({qhJ0oUwj` zN7~22MQG%CCF{OyFvfX=FF6N*igcIxsT#h_nfEVuC7}uXyVJ9ybkvFq@qcnKXYb#% zY~Dy0^>Mnek2}%v*5&vg_wuq*nR(1z)a(F%X#JXLZUz~g{V%*D;cl_G>VWZKL!*2nlogsX^&W1xZ_mlcESQD zLfI7D(~9TFs#ApuCV@keF+d^2u3-g=lO7MBKttR}?s-`=_PY)jXv4k4RJIlc4Fag0 z=%Jl>@ixeeCt(P+VY0~sxFe*KM)_Rp#;Zco@pj5!xD;^pe09Y)M>pZiO`AznxVZEM zX|6jR-z#`EC9Riwa;^E!9f$|j*sm4{;x1=(ao-CEqL?ui&Q5at1>H?c9vD88Qo_}M zaDpfxl_BnKfuEN&QuA<+R~s>S$D1GriZWs`l8Fx^?JPT+L+E{U;6HEE#Xf2@4!RUa zKeh}k~z6Y#o)BvA^1)N z4;z;PByQH7g@x-uyO%<3FB*!dX4a!lz(iF8(a>iQ;A9g1{ckV4zv@$RgTG6GdXDbu zXcs8IsDVf9^(OZH^|j+XWZTWf%n5!zYRD1ZW^V!n^SXPCHZd^kz1{urz9o<>9!^E% zK_C;}$R?}p)u+q~2bj`d^I4u%ve1{`bztEuw_8h?n0LLq9H-w!0-dF8f_E+Rd?y0X z;|t*Wnr|Q?CvoQ(>!~#%>Wa1iLCqauE-dInQGxYuZqaMm7G;^uiqJO04NK-!UsT1% zPa*HAj>ebs`t@?bmNfG68Evfp^*{b+b#Gc5ni_=?>Aj+9-pG7s%NErw8~5lSYc(gZ z3#FV>?3SaAoy!ik*>lP*f7*`baYrm48TJ<<`T_%r|>Jer&(WueP5&X(IP<4n;l zib_NYdINnMLAm(?eW&H4;2s5sqe+hNsVz<)FQgByXuvif(;FNny{a+1VZ@l%Jhw`d ze0Q=j5>`o6*+0U+OU-nxfl)n40!ID zArgV(4PvG?B%YrDCc!J(@;SWEO6H2Oqxy)T>Po291cX~fW?@*f9G_pr1q?vXnes4w zVClDsovB5wPjqXTXf`7ap?D%4Xv#urdEDinGx<60T5&etpn`QZ?L~HhYK<&0`ZEef z*VmI)IEs&x{7YP%*tO>4u1BO6R0dk~cEhwamIkv~=J6=^#T%rR(Zi`lPGGQBN@s_* zarZnr4i6n*<8JB?3pRDTvZLSJX4`N6B-4k5-o9*iZZFDvqkB-1EtPZi;pgWH3^jYS z{MMm09n1Hwf(-E zwECyZ*EBP1%a~0tRTRU~iFtK#rxzf++04-LUf;c2?RVVz!O(=zw^BZrw-N&m$NWoq z@?Qp5w4!k_6>V>0%}77v6#uo_gN9$&kHNI-!mHSE7Da<;*NA>pUPvkx;Ngw1qK`BN z0XfP*DJog17S9oiAJ1m$WBDW$mwvH})@7#|wJukw4hj_r6|E`arihy&Zo2BL_vQu4 z8V@%QEDp;8go?TIz!{+P$$Uz>k3M=SwmBWdvag!-1gv>i6Ie8rm@UBmNIV}l z(aVq@BjOZ%_MlA^ zd=d}Fidh2vpl^2DJ6|oT-iY9<%G!qUTiwPi2YJr0{KhY z&Luw7ucDA6c~5a*1zSDTu!^wjz9^y>{Xr)X04+Fs$C%L|G1uv8O`{j??p7cD zVeD2l`=VfUrU+Egs31>uN$b9=Hi#ggncwo|g?Wt|$*B>leNS5YNh6nKBh5b5t(!ZW zYos&Z$cP$=8#lH>jjTE&(QWh>woz|lQchOZSUy`@z(MAkID;;1r3p%Mn=pEB7qn$A zsfj^rI&+A)*FSu3t2`{;h1&CBnDVtZP~U!mtD%d=(7%>XXejQ{CoTZJ=D}B(&ShXk zrEKh$6N~5taMbR{1p;(NLc%~Wkjy0?p=gDZA~k7w5Z?3RMnX82c;jKuwCy$10chm) zCIQeqnqeosZ<}=!*=Nu*2bp-i51C)Kf60zKo;D*>kk;V)$u9`q!9kZkXrb*;E{xSIdoXs|x znz7Hig*$Y*F?b#oLOgv=J60Od5H@__{hs*Dxn}9+x;2!nYke}uy}0Xe_}{wE0PF2u zIZMsRcQaZEKW0Iys@G%2X$V5!jax~|%SAxiPz`kD?DhWc{z<_4Yh}y?uz!acR`6BS zDLgEfpD*A&7@uPejVXP%5Td zm9IYNAZ2(%dwa7?d8vcj5L#{%ePUDImBG(8s0E$CXx?H*^9Q`&wVmi~j(%B>e#Oyr z2%%0yXf4vuVV7h?M`^_SLA~cf6f>n5>J!X- z_WFpa;{l_)To3IEnmGE}lrMmyBicb1EJl|GowbzbH5ECoV+f)IDOZ*>f-V1e9o4Ym z#T}1umf!6n2V%WqcYF)0$ZfI8~bzI*J z;|BMf4@n~!OW7%Jsg)JL5_ys$*s`*+{k-GX*A)Ib^MJQT?@gBu@_%g|_|4DUgH_#= zCOYOr`OVW^yuZr3c3NrT1vLSSr(5%ljL`_ML+@kv<-R_`rlF~BXxe;d8`9%JL-pDY z^%cow%NymrnFf%#g0l_<+9v&zG!rZY8fuj|)>?C7PJNAfo^*%J;LtEjTs&(~Nx8o| z)2%tRyeMlKBd_7IRI8~ZQ9ZIr82DtkR=gp)>wJ%Wb!c&JcS?Br7SWhsxn&j_HL+GT+@YoTH63Il=w4F`Z~SxC1}l9|QVq1fjQ~Mjk%t67sbR<0`jE zmp8F2+e%XbMZj;r{6=Kw9eGiNf5(0l4eqe(GFBLc4N=hU`h6MNzZ;DpRRD+QrR}5R z^>f-J$9{R49kbu?F8MA@3hsS9U@1GG6K5GUi zbcTE0rM8zd>`hyjUFRT7O@gs13hM#WyHaRxw>z#k5j|IgY+>kHXRX zw!dsrte~&E2nzm6*dF0Am-KfU>{_J$2&8mK1kvICU6i{mn->Z#U~$OM1pG)7 z1~Fkw@mkgkU5Joi2GVc>mW`T)I$evNq|ESO0zXg&w6-)5V^gsr8eT83P%akuo;P*NF zf0y5;E7IH+7EQD09~=Nmymlb<92F6D!H%}ZU~zLQk+YaE*xdW}i(CN^IDiiG8NsF# zLe%j)=(Qeo+e9N=F#*uMP%??#vGd{yx>+Oqa6cJkMa*{0sXVgL1V>s)$){@VgMlU) zxGGw<;}|dhPpK-tn>pGDr_j|Q1PtC8%~e_G3oGv)>PsxR(nn5c&J37u^H}$-d!nY@ z^LyZxW_EKmR_|qu5NGK{_iR>Wf6P_OxOfI!oq)wZsw{LWo4S3(c1Iskp<3%?zE62X>b zO$^O6EG)FVwV}JjQo(HgCO4`_`t1rr*Cm$`LRG?1g^Oa%E*(%%!~G!zFA1?p2~Ra* z*{wrK?AcHa;0z!jrIUhzVL7OQMThFf7DbGxu(Wg%WX-q*cg^^n3jc?@DJ)Sb5!!)t z9KLBk2n}Wj-m%L<1%W!GDnlL;ey8S0g?jAvWD&ydh%MGHt;V2wVDzS}a^KQM5Z14% z#=u~pUUGe%5*E&iRWaWtYOWV_FNctUjR~*mgN<0@Qx2W<6J}yG2I}X9CY3^c;e3oM z^)x$RCzgXW1DY>50~{EeQG{T;_^OH*hvoI(%wRVb&sH+#<`8Y`qWmFr>Vl~O3{O>B zJ|~nyLxb8aVy}*Q>6T(%x&?P)hs6+N>){dD{hWCzSfg>UdM~xHS>AmBe8W_;&_lDh!QIc`vd32<9L<`=AB4p|wfu)?@%DbL;c8|rzCMw1~QVMCbtt9Fd+RnTC z2e>pfA*R1XsFT0w3^-}@<)l$gzF5Q(Dy5ZQ;$CqrWl8@OA|Nq*u4MZu?HcJ;QIY&9 z#S?!bPv`*f^KRHG`z=b&tyU|pK>0(-q`SN%)08rmqg;~dQZoI#rXy*NXMqs^_JNzY zD>cj|nrkKG>2RwySWGy>OU@wZOAe;m9VUJhb&H7T_t-qYUbqbSLCJu>s59VA+WiYK z;J5ExSh+>KD-2*cd&fZam6e_9GeO^(egbVHW>U%b%P<+J7koef@|ic`W~Zv#YFjmb z_cjy@`o7kJ#lHHBQnr*ZS}1ry7dLdh`_2k2YV1@umYBxM?A+LeX-wwDZLh=aO{KjK z<&^fyZDZS$@5{Lhhlh(}WLT7YtYZuBLoZFxt z92$Jpyr>ROKfHT6H^*Nu3@?zb0Xu*_k>*BR&Tu$wOuAWfqDEywJt?h6wBB|?IECO- zTkVv?T;A$w*{Td=uHldxP8KwL>NafJpoTlrFw@z}K-498H^I|^+MxN_Gx)SRt>{;j zEIjq1nozRt=#VXVqddig()qF^z>X9Cz~+YtRtf`d&+w!+)-MQhZWyrWrNQ3*2Eon> zbo74nQor}AyJPPE?~EX#!3tnHrW-VMBhI=X1kf;9lvZ+E+q7Nz%KPcqd=c2yfK>xL z4M8=G)PU}l?oDc0E<5#@8t~h$r$dwegW)E+4*ot=(KQyw5^~}CdgN<7tJsH}9skhu z`o80qvhEeu-p>i!Dp>>MOH=~QtW1GB3dMnW5y{N6iit|dJwW7Z#;RtfN zn*IY)Y;puP*1@KD z6NAE47KJ8^wzZfA^D@fts(w8)OO;_ZXXfjb*?~Lks?71^SwMS@84lUUq1y&|zBxxj140Q1x~^9LX)kArP) zwemu&UV-%^U&7bSLM=8%1+NV3_{XA7eQv_~c=mH)HIrKBnA`EZm7O6e4TY3D3@AyZ%K%ojjTp(AEyKIBc@y zE~{wc$SzBUteqCygDR|cyZ0O{KM*AGc0XXfs<>`Wnq1+0Cz}O-*KE6L3G`vn9bsGbupoE#_APx zlF=TkB7@yFhI5N@&+dBG0}$05ozoh;i}M05-Zg_oG$CUpDgk-d`ZuGcrga&NqO6;^ zR&KZIMygH48*K6iawP6I?G`cz06mRU>_;bs1R;8^k)()+oZ4@t&nsID|^es!)t7g0+;YNG+`0 zWsE^@K!Y(Ug1BOc_r(I^A1$6wSbX5q#HJS5YN2t5Q)u__YnisGOhc1^GD(VE%5S;b zjIGD0T`!{sIml3$)!cNc0RG|!aXtYlM~i?f=k9^gAmt*zEBiT`&0wR^ zney#LXjp9=xUEk4q5d3JuKJ@emxui0uz3{2YydlG{`N~24&qc3pgdc>w41^(Io-1x zC-G?Dp&E1X5au$MMx#v@w$V(O&^&LPxr)0)IU8+ z34Q72!A^y-kw>El7da(-s3ho-QT&@)Jnd_a-<;+AKnI{QXK=us-c!$RrMYb!`^J2? z@f7&&mq<3fiAd_VwXTb;k$n3F%S`>z#)8)7a?3QTa%mI2+p^j;CPxx#{q1jlBf4IGwLNb2X;!%+eyP)whL8 z7mY_i)7*ek(?WensWYUs>;}x%@VkbqyT54Z%@)(nne4cHvBbpcRBV7ZZlz;XlrM9V z83)GT+-&V7EB>Z8kx5(yr{R**@etv1@ zCdnCC*?BhdMwen(E?I8(x30Uoxy4HvTw=at88KE}o!{xB%1(z#wtuj(i&Bwu5;))( z4ir83)V#hf^oB5(=cF~xB8=A?)pyi{2o+gbET!ugyPOhU(V9&k@nV><7sHpZp?@II zK^44-@$HP;S;S4pFnD0qW1uVJHDD^>vT+B$aRO85RdY$4+~dEcTfoU$AJ!LvFeJHYb*;;U1O@Yn<{i7QK+w*&#;0T z3RjlKY|R<^P}_B*`dOWnHZu88PAZ6wZa~?6(9kjdZ1MIngXu$+Q=9aca9mX1$HD0o#3E&L7jdsb@-)~Z@+AQ*tV(G2Kk*NB?2B}V~@h@y#oT-G<6oo z{(BN-(_Mz2++BaZ?p@x(cK{vl=p`>}Hk2@r5wd72E3q$AZm*4-dR1fMu z(~DfG{!8`fT1JU>zqxt?mo`uTSwDt2Rb4wOIt);Y?K-DJjALZ2 zw}+g})~72bgG#Hkr9hJ7G!hV*H=$=+iP1_7Gqo`zkFD=%oUk!Sh;sYdEF$wj3!ys~ zDebzpDgU%}DDXAJPUS-98}3l4hX3_H{^x<2fQ94z_RAIJnSnH_>Eu?u@3Igrt`oX+ zlh#ScxY|;MzF4sT^c7>GB=PvzBqHRQC}X{yzu&>7md?asuZ)&jU^4{Pi6m5Fsyvp_ z6W@cMYn^Hfz;UmHusHqJ?nj?cVKIkHqX37~hqubZXe8j4gD+{P+fRWPdl0rNS_bl5 zU#G3^C*8bNO_nJQ~zv9X?$} zbk4lKl#8MH;dvJp-y?7;4UJY*#Q@6v3LENp^@K$bj@>!dvHW0e*}5KE9Ov2sC$&+o~ai6I*a)MSl5JGKA>3Hc>WVmcOJ4n>^NR^F=8x|B~Q) zlu>0`c9%D#7Sc73yS#-(S~s?@#)z~m_24&}6;seA341*FE@@Jb6NUF3?6={3-fr7~ z&x*M;gHGjsFkJLQJFkI$1BGvK-7A%p>ICJb4_A85gKJ>l-Ga`{hGiI$I1k54Xt7j1 z7h;;O@{ABLGQsii730HC9Q%KWXU^N+Ya>ZLSFxVaYRz`a7FV6kO3SKFm8rU-QGcjZLz#Rg8-UGZR(_86A;jIFr~LHzG>ek zopa4b{j5dI;-I^Xo{%hem>a=}9P*t#1$E-I_eaeVC)HgLSsN7^3L8scxEcO&53Oga&heWN@yYM zlDdkt`?T~2KUY~F12F$(25P*$L)d@Dvjpk=-x(iNS3>qh=s{SxhOC7&W2CWkB4P45 zdI6YU?K54F9-8ew9k+AzJP!`>la;l&434bI z?WkmvT3Nm#SmIzMy5gsspW%t&&uyT&q(@ zh+f$OC)h@e)GqbHZbNMjZ2K=?mLj%ZV71M-t7_$KRbPl&e@!_!6mo!p?1!4ipAuXf z7ji-%bzL}E5ZsYAP~pnTiJpdNq{`?(Zy?Jnu_-g2Ce8G%5bfXeZyk){@f#_LblL@IQeHv z)1yD_cGNSYP3TXiDsCO6A%%LUf@b)xciv=KAr5a5{xb>9Ok-YAE zp+gY3$w6eZOEuUPi}P!esNezuwF&D2a!o(rL7T{qM0TJGQL9H2oP^2dC_yvp!J~xM z8%lMYo^9>ON_G*r80s$6sR@eJpN(9HxIy7u%PayFLuwiCYZ;+?yw3{uA3!&;#h5HE zlJJYSzP<%vn`_H=tx+3lz*eDu;qH!Qjr9{{vzdyApdtJ$!h|R5y~YyOg%sYYcwdW0 zHU2?QeY5v%M~6dp@TMI=I%kaMXQzTjxip=N;#oASG)QRJ)Di277e<4nG9mMo3s+!a z)yyC$Yqg8R=4@!!j``w;4O?Y%}wX??p_je(309#dewTDG3z?tSkT3H#<%?}2B`A#L&hm+1p0GYWUdrb9!)B@pxS;+mPRk9aNC?jf{PKg7l58%z#7$U#aZ zu7X}#KoRsezpgWfUItEnX&^zLc{<3}51!>9vG2?%NF67Q;P+|*N%Y&JHNW7A6jN`i z;Hea|ZYt6`31FX;qbOZ~N#F{1x-fOZXJ}OzVK#!_s^A|2lb5Q?X*X1ta4Uh%v%Z`C z=p4*uVk?AS1mvk$UL9D_fX}qNWcphk&^#T(J2vNsq|BSpmvtn>M@(ndOhd^#clQ@+ zqAtsV7D^AgX|9upds>eWdf(vPYyI_;wML`whx`45g+ub!cB#owAt?G~xsli22on~LpnEnQokvz|v~nnxu(;Sb^>r zSCHdTx;y_ar7=*geZ#p7Zfkkm;v97;HydT{q}d&!gTIUYIKv?*tT^FJmE>h@6z-!x z-}DYIfS)WX_yL&mgo#+LMM8iqkO%ds_l{pUiK3Gy$;A&eu38fax1uiO0kt#UP|Ssk z`+3sDkwC_fN+?{g_aH+R`Zc49@m;`LVHAqoZ5u(r|6oHyc0WucdUx?N@MRBuQmQ2v*j;+hKpl93?=$ zi$~!CRxUNyB{3Qez@`=v1F3oX$AZ*Lf#704SP2~z=r_Y5jF)QOw8&{}=8&o}$;u?M zlQ9v)N@Sv-q@jn=d(qv7oN&P&N}++k0}|&tiSvxNZ+dc|7WBDScD~bP@i1?G;JiGh z1s0p;HPt=2zAlVtL=0Z%o3rpZ`n2<|TNPu}3Z%3@9MK<|QWLTJ`8Vh5}`~`5b12%!0C+-eP!-IOgIkmx)@5T$J`oH7mjF3Tm1AbeW4>f27S5Kww<@D@1*h0yg>40u(eUPK z`bj;M9hwf(;~D&f@3I8U0(rpd#cFbT(5Po*K^c`` zkKNU>M8vL>$}*gFQ4wW~OYHAAJJBPBKL=_bL4*$YDUqt`UftY!+5AE`pr$3fa)G}- zJD9B*jhM1=WtuJ*Y*ay_2#E(l8%wBjuqKRTV==hd(M0!tb|4&Y0>%8nobH(D7E6JA z`(>K|VnCh0rB00j@vPCYvZwDv^z>(9*F&l-r{CL8^ym{AJLfTZIeTs;om}^&t*@0^l?;S%>b@N>jkUk*r^X&{b)4$n2x5$3>elj0>At50iiK;jI>8l z%bV7w6Qadl6ycVePW`h74<9|e?Ww;=vq689PQ*F)p>ys#Po6w|T(_*CK>#c(Jblu6 z+7`w;cj8iPu=i@9cG~tpsj!_}D&5jw@5;2&v zL$?cCK0$@|Q#HAtYD4ELH-`2DSh;MoefhJhRut_`_<~<&lj0CE}bIN=B2iZOWQxR zW!Yin^JDgg()ZP{5kBYTrU+h&MsSR^fMwtQ^I+nOYH#9L&+�FMR&I_r2A7j$vn7VzjxB` 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