diff --git a/CHANGELOG.md b/CHANGELOG.md index d5493a23..da1fa207 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ ## [unreleased] +## [0.1.0] + +- #49: + + - Performs a bunch of README etc updates in preparation for the `0.1.0` + release. + + - Bumps portal to `0.42.1` and enables the Leva portal viewers. + + - Removes custom JS compilation from the `emmy-viewers/clerk` template, which + no longer needs it thanks to our precompiled JS. + + - Sets a default camera `:up` direction of `[0 0 1]`, removing the need to + emit in `xzy` order. This would almost certainly have been ultra confusing + to anyone trying to extend the library. Thanks to @ChristopherChudzicki for + the suggestion here. + - #44: - Adds `emmy.viewer.physics` and `emmy.mathbox.physics` in support of the new diff --git a/README.md b/README.md index 931b1ee6..f9724539 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,9 @@ # Emmy-Viewers -A library of functions for building high-performance interactive 2D and 3D -mathematical scenes powered by the [Emmy][emmy-url] computer algebra system. - -Emmy-Viewers makes it easy to use either [Clerk][clerk-url] or -[Portal][portal-url] +Emmy-Viewers is a library of tools for visually rendering mathematical objects +found in the [Emmy](https://github.com/mentat-collective/emmy) computer algebra +system. These tools allow you to build symbolic representations and 2D and 3D +mathematical scenes for exploring physical and mathematical worlds.
@@ -16,26 +15,133 @@ Emmy-Viewers makes it easy to use either [Clerk][clerk-url] or
-## Quickstart with Clerk +## Examples + +The first example uses the functions in the +[`emmy.mafs`](https://cljdoc.org/d/org.mentat/emmy-viewers/CURRENT/api/emmy.mafs) +namespace to plot + +- `((cube D) tanh)`, the third derivative of the [hyperbolic tangent + function](https://mathworld.wolfram.com/HyperbolicTangent.html), shifted by + the `x`-value of the (interactive, try sliding!) pink point in the scene, and +- the inequality between that function and `(cos x)`: + +```clojure +(emmy.viewer/with-let [!phase [0 0]] + (let [shifted (emmy.viewer/with-params {:atom !phase :params [0]} + (fn [shift] + (((cube D) tanh) (- identity shift))))] + (emmy.mafs/mafs + {:height 400} + (emmy.mafs/cartesian) + (emmy.mafs/of-x shifted) + (emmy.mafs/inequality + {:y {:<= shifted :> cos} :color :blue}) + (emmy.mafs/movable-point + {:atom !phase :constrain "horizontal"})))) +``` + +![2023-06-26 16 53 03](https://github.com/mentat-collective/emmy-viewers/assets/69635/075fe878-db6c-4249-84bd-d83109b3e3c9) + +> **Note** +> To play with interactive versions of these examples, visit +> https://emmy-viewers.mentat.org. + +The next example uses the functions in +[`emmy.mathbox.plot`](https://cljdoc.org/d/org.mentat/emmy-viewers/CURRENT/api/emmy.mathbox.plot) +and +[`emmy.leva`](https://cljdoc.org/d/org.mentat/emmy-viewers/CURRENT/api/emmy.leva) +to plot the functions -Install `emmy-viewers` into your Clojure project using the instructions at -its Clojars page: +- $f(x, y) := D^3\tanh(x) + \sin(y-\texttt{phase})$ +- $g(y) := \texttt{shift} * \cos(y - \texttt{phase})$ + +where $\texttt{phase}$ is supplied by the interactive slider hovering in the top +right: + +```clojure +(emmy.viewer/with-let [!phase {:phase 0}] + (emmy.mathbox.plot/scene + (emmy.leva/controls + {:folder {:name "Intro Demo"} + :schema {:phase {:min -4 :max 4 :step 0.01}} + :atom !phase}) + (emmy.mathbox.plot/of-y + {:z (ev/with-params {:atom !phase :params [:phase]} + (fn [shift] + (fn [y] + (* shift (sin (- y shift)))))) + + :color "LimeGreen"}) + (emmy.mathbox.plot/of-xy + {:color "#3090FF" + :z (ev/with-params {:atom !phase :params [:phase]} + (fn [shift] + (fn [[x y]] + (+ (((cube D) tanh) x) + (sin (- y shift))))))}))) +``` + +![2023-06-26 16 54 26](https://github.com/mentat-collective/emmy-viewers/assets/69635/b0a48fab-6d16-4a56-8504-3835c09c648b) + +Emmy-Viewers uses either [Clerk][portal-url] or [Portal][portal-url] as a +presentation environment. + +## Quickstart + +Install `Emmy-Viewers` into your Clojure project using the instructions at its +Clojars page: [![Clojars Project][clojars]][clojars-url] Or grab the most recent code using a Git dependency: ```clj -;; replace $GIT_SHA with the sha you'd like to target! +replace $GIT_SHA with the sha you'd like to target! {io.github.mentat-collective/emmy-viewers {:git/url "https://github.com/mentat-collective/emmy-viewers.git" :git/sha "$GIT_SHA"}} ``` -Then install Clerk: [![Clojars Project][clerk-clojars]][clerk-clojars-url] +Next visit ["Quickstart via Clerk"](#quickstart-via-clerk) to build scenes using +[Clerk](http://github.com/nextjournal/clerk), or ["Quickstart via +Portal"](#quickstart-via-portal) to use +[Portal](https://github.com/djblue/portal). + +### Quickstart via Clerk -Create a namespace called `emmy.demo`, and install our default Clerk viewers +The fastest way to get started with Clerk is to use the [`emmy-viewers/clerk` +project template](#clerk-project-template). Jump there, or read on to set +Clerk up manually. + +Install Clerk by adding the following entry to your `deps.edn`: + +```clojure +{:deps + { + io.github.nextjournal/clerk {:mvn/version "0.14.919"}}} +``` + +Require and start `emmy.clerk` in your `user.clj`: + +```clojure +(ns user + (:require [emmy.clerk :as ec])) + +;; start Clerk's built-in webserver on the default port 7777, opening the +;; browser when done +(ec/serve! {:browse true}) +``` + +> **Note** +> See Clerk's ["Using +> Clerk"](https://github.com/nextjournal/clerk#-using-clerk) section for more +> configuration options. Replace any call in that guide to +> `nextjournal.clerk/{serve!,halt!,build!}` with +> `emmy.clerk/{serve!,halt!,build!}`. + +Create a file called `emmy/demo.clj` and install our default Clerk viewers from `emmy.clerk`: ```clojure @@ -54,7 +160,17 @@ from `emmy.clerk`: (ec/install!) ``` -Add this line to the file to plot a function using the [Mafs][mafs-url]: +> **Note** +> This namespace imports every function +> from [`emmy.env`](https://cljdoc.org/d/org.mentat/emmy/0.31.0/api/emmy.env). +> You'll need to build your mathematical functions out of these `emmy.env` +> functions to use them with Emmy-Viewers 2D and 3D plotting capabilities. + +Thanks to the `ec/install!` call above, the return values of all Emmy-Viewers +functions will be able to present themselves graphically. + +Add this line to plot the sine function using +the [Mafs.cljs](https://mafs.mentat.org/) 2D plotting library: ```clojure (mafs/of-x sin {:color :blue}) @@ -63,17 +179,151 @@ Add this line to the file to plot a function using the [Mafs][mafs-url]: Render it by calling `(nextjournal.clerk/show! "src/emmy/demo.clj")` at the REPL. You'll see the following: -;; TODO insert picture, add more getting started info with a MathBox example. +![Mafs plot example](https://github.com/mentat-collective/emmy-viewers/assets/69635/446cd61f-0795-4375-bb67-4a2b687c9a2e) + +> See the [Mafs Guide](https://emmy-viewers.mentat.org/dev/examples/mafs) for 2D plotting examples. + +Use `plot/scene` to render multiple plots onto a 3D canvas: + +```clojure +(plot/scene + (plot/of-x {:z sin}) + (plot/parametric-curve + {:f (up sin cos (/ identity 3)) + :t [-10 10] + :color :green})) +``` + +![MathBox plot example](https://github.com/mentat-collective/emmy-viewers/assets/69635/3349cff0-744c-40fa-b996-1d324162b3d9) + +> See the [MathBox Guide](https://emmy-viewers.mentat.org/dev/examples/mafs) for 3D plotting examples. + +Next, try clicking the 'show code' link for the examples at the top of the +page and pasting their source into your namespace. Then visit the ["Specific +Guides"](#specific-guides) section, and click through ["Demos"](#demos) for +inspiration. + +### Quickstart via Portal + +Follow the [Portal Usage +instructions](https://github.com/djblue/portal#usage) to the point where you +have the Portal dependency installed and loadable. + +You'll also need to install [node.js](https://nodejs.org/en/) to download +JavaScript dependencies. + +Test your installation by running this command at the REPL: + +```clojure +(require '[portal.api :as p]) +``` -## Quickstart with Portal +If this returns `nil` you're all set. -;; TODO fill in. +Require `emmy.portal` in your `user.clj`, and call `prepare!` to make sure +you've downloaded all JavaScript dependencies from `npm`: -## Demo Instructions +```clojure +(ns user + (:require [emmy.portal :as ep])) + +;; This really only needs to be run once, but run it at each system start to +;; be safe. +(ep/prepare!) +``` + +Start the Emmy-Viewers customization of Portal: + +```clojure +(def portal + (ep/start! + {:emmy.portal/tex {:macros {"\\f" "#1f(#2)"}} + :theme :portal.colors/zenburn})) +``` -The project's [demos][emmy-viewers-url] are generated using Nextjournal's -[Clerk][clerk-url]. If you'd like to edit or play with the demos, you'll need to -install +The options passed above are optional; `:emmy.portal/tex` customizes the +[katex](https://katex.org/) viewer with any option allowed by [katex's option +support](https://katex.org/docs/options.html), while `:theme` sets a custom +theme. You can pass any [Portal +theme](https://cljdoc.org/d/djblue/portal/0.42.1/doc/ui-concepts/themes) that +you like, or remove this entry. + +Use `tap>` to send values to Portal: + +```clojure +(tap> (mafs/of-x sin {:color :indigo})) +``` + +
+ Portal Mafs +
+ +`tap>` an Emmy symbolic expression: + +```clojure +(tap> (((exp D) (literal-function 'f)) 'x)) +``` + +then click the cell in the Portal UI and choose `:emmy.portal/tex` from the +viewer list at the bottom. You should see the expression transform into nicely +typeset mathematics. + +
+ Emmy Expression in Portal +
+ +> **Note** +> Currently anything from `emmy.mafs`, `emmy.leva`, `emmy.jsxgraph` and +> `emmy.mathlive` will render. MathBox support is coming soon! + +Visit the ["Specific Guides"](#specific-guides) section, and click +through ["Demos"](#demos) for inspiration. + +## Specific Guides + +- [MathBox Guide](https://emmy-viewers.mentat.org/dev/examples/mathbox) +- [Mafs Guide](https://emmy-viewers.mentat.org/dev/examples/mafs) +- [Leva Guide](https://emmy-viewers.mentat.org/dev/examples/leva) + +[JSXGraph.cljs](https://github.com/mentat-collective/jsxgraph.cljs) and +[MathLive.cljs](https://github.com/mentat-collective/jsxgraph.cljs) guides are +coming soon. + +## Demos + +These demos are in-progress, more advanced demonstrations of the capabilities of +Emmy-Viewers. I'm using these as test cases to flesh out the more settled API, +so please read them with that in mind! + +- [examples.manifold.fdg](https://emmy-viewers.mentat.org/dev/examples/manifold/fdg) +- [examples.manifold.klein](https://emmy-viewers.mentat.org/dev/examples/manifold/klein) +- [examples.manifold.pq-knot](https://emmy-viewers.mentat.org/dev/examples/manifold/pq_knot) +- [examples.mathbox.cube-controls](https://emmy-viewers.mentat.org/dev/examples/mathbox/cube_controls) +- [examples.mathbox.functions](https://emmy-viewers.mentat.org/dev/examples/mathbox/functions) +- [examples.mathbox.geom](https://emmy-viewers.mentat.org/dev/examples/mathbox/geom) +- [examples.mathbox.ode](https://emmy-viewers.mentat.org/dev/examples/mathbox/ode) +- [examples.mathbox.quickstart](https://emmy-viewers.mentat.org/dev/examples/mathbox/quickstart) +- [examples.simulation.cylinder-flow](https://emmy-viewers.mentat.org/dev/examples/simulation/cylinder_flow) +- [examples.simulation.double-ellipsoid](https://emmy-viewers.mentat.org/dev/examples/simulation/double_ellipsoid) +- [examples.simulation.ellipsoid](https://emmy-viewers.mentat.org/dev/examples/simulation/ellipsoid) +- [examples.simulation.lorenz](https://emmy-viewers.mentat.org/dev/examples/simulation/lorenz) +- [examples.simulation.oscillator](https://emmy-viewers.mentat.org/dev/examples/simulation/oscillator) +- [examples.simulation.phase-portrait](https://emmy-viewers.mentat.org/dev/examples/simulation/phase_portrait) +- [examples.simulation.quartic-well](https://emmy-viewers.mentat.org/dev/examples/simulation/quartic_well) +- [examples.simulation.toroid](https://emmy-viewers.mentat.org/dev/examples/simulation/toroid) +- [examples.vega.pendulum](https://emmy-viewers.mentat.org/dev/examples/vega/pendulum) + +## Interactive Demos via Clerk + +The project's [interactive documentation][emmy-viewers-url] was generated using +Nextjournal's [Clerk][clerk-url]. If you'd like to edit or play with the +documentation or demos, you'll need to install - The [Clojure command line tool](https://clojure.org/guides/install_clojure) - [Babashka](https://github.com/babashka/babashka#installation) @@ -92,8 +342,8 @@ bb clerk-watch ``` This will open a browser window to `http://localhost:7777` with the contents of -the documentation notebook. Any edits you make to any file in the `src` or `dev` -directories will be picked up and displayed in the browser on save. +the main documentation notebook. Any edits you make to any file in the `src` or +`dev` directories will be picked up and displayed in the browser on save. ## Dependencies @@ -103,6 +353,7 @@ These viewers are built on the following libraries: - [JSXGraph.cljs][jsxgraph-url] - [Mafs.cljs][mafs-url] - [Leva.cljs][leva-url] +- [MathLive.cljs][mathlive-url] ## Thanks and Support @@ -110,6 +361,11 @@ To support this work and my other open source projects, consider sponsoring me via my [GitHub Sponsors page](https://github.com/sponsors/sritchie). Thank you to my current sponsors! +I'm grateful to [Clojurists Together](https://www.clojuriststogether.org/) for +financial support during this library's creation. Please consider [becoming a +member](https://www.clojuriststogether.org/developers/) to support this work and +projects like it. + ## License Copyright © 2022-2023 Sam Ritchie. @@ -137,6 +393,7 @@ Distributed under the [MIT License](LICENSE). See [LICENSE](LICENSE). [license]: https://img.shields.io/badge/license-MIT-brightgreen.svg [mafs-url]: https://mafs.mentat.org [mathbox-url]: https://mathbox.mentat.org +[mathlive-url]: https://mathlive.mentat.org [mentat-slack-url]: https://clojurians.slack.com/archives/C041G9B1AAK [portal-url]: https://github.com/djblue/portal [reagent-url]: https://reagent-project.github.io/ diff --git a/build.clj b/build.clj index b1b77a3f..263fdb64 100644 --- a/build.clj +++ b/build.clj @@ -20,7 +20,13 @@ (def version "0.1.0") (def pom-deps {'org.babashka/sci - {:mvn/version "0.6.37" + {:mvn/version "0.7.39" + :mvn/scope "provided"} + 'io.github.nextjournal/clerk + {:mvn/version "0.14.919" + :mvn/scope "provided"} + 'djblue/portal + {:mvn/version "0.42.1" :mvn/scope "provided"}}) (defn- ->version diff --git a/deps.edn b/deps.edn index e4547b50..af4f272f 100644 --- a/deps.edn +++ b/deps.edn @@ -4,7 +4,7 @@ org.mentat/emmy {:mvn/version "0.31.0"} org.mentat/jsxgraph.cljs {:mvn/version "0.2.1"} org.mentat/leva.cljs {:mvn/version "0.3.0"} - org.mentat/mathbox.cljs {:mvn/version "0.2.0"} + org.mentat/mathbox.cljs {:mvn/version "0.2.2"} org.mentat/mathlive.cljs {:mvn/version "0.2.1"} org.mentat/mafs.cljs {:mvn/version "0.3.0"} org.mentat/clerk-utils {:mvn/version "0.6.0"}} @@ -17,18 +17,17 @@ org.clojure/clojurescript {:mvn/version "1.11.60"} io.github.nextjournal/cas-client {:git/sha "84ab35c3321c1e51a589fddbeee058aecd055bf8"} - io.github.nextjournal/clerk - {:git/sha "1f6c5331418aaf9c5a4335fc2e6e95f07dc3af6b"} + io.github.nextjournal/clerk {:mvn/version "0.14.919"} io.github.nextjournal/clerk.render {:git/url "https://github.com/nextjournal/clerk" - :git/sha "1f6c5331418aaf9c5a4335fc2e6e95f07dc3af6b" + :git/sha "4c4983182061abd24201cd43fab6ee55dc16b7e8" :deps/root "render"}} :exec-fn user/build!} :portal {:extra-paths ["dev"] :extra-deps - {djblue/portal {:mvn/version "0.42.0"}}} + {djblue/portal {:mvn/version "0.42.1"}}} :cljs {:extra-deps diff --git a/dev/emmy_viewers/notebook.clj b/dev/emmy_viewers/notebook.clj index 8d5b0d98..18bed5be 100644 --- a/dev/emmy_viewers/notebook.clj +++ b/dev/emmy_viewers/notebook.clj @@ -4,22 +4,37 @@ (:refer-clojure :exclude [+ - * / zero? compare divide numerator denominator infinite? abs ref partial =]) - (:require [emmy.env :as e :refer :all] + (:require [emmy.clerk :as ec] + [emmy.env :as e :refer :all] + [emmy.leva :as leva] + [emmy.mafs :as mafs] + [emmy.mathbox.plot :as plot] + [emmy.viewer :as ev] [mentat.clerk-utils.docs :as docs] [nextjournal.clerk :as clerk])) -;; # Emmy-Viewers [ALPHA!] +{:nextjournal.clerk/width :wide} + +^{:nextjournal.clerk/visibility {:code :hide :result :hide}} +(ec/install!) + +;; # Emmy-Viewers ;; -;; Visualizations over [Emmy](https://emmy.mentat.org). +;; A library of functions for building high-performance interactive symbolic +;; representations and 2D and 3D mathematical scenes powered by +;; the [Emmy](https://github.com/mentat-collective/emmy) computer algebra +;; system. -{::clerk/visibility {:code :hide}} +^{::clerk/visibility {:code :hide}} (clerk/html [:<> [:center (clerk/md "[![Build Status](https://github.com/mentat-collective/emmy/actions/workflows/kondo.yml/badge.svg?branch=main)](https://github.com/mentat-collective/emmy/actions/workflows/kondo.yml) [![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/mentat-collective/emmy/blob/main/LICENSE) -[![cljdoc badge](https://cljdoc.org/badge/org.mentat/emmy)](https://cljdoc.org/d/org.mentat/emmy/CURRENT)")]]) +[![cljdoc badge](https://cljdoc.org/badge/org.mentat/emmy-viewers)](https://cljdoc.org/d/org.mentat/emmy-viewers/CURRENT) +[![Clojars Project](https://img.shields.io/clojars/v/org.mentat/emmy-viewers.svg)](https://clojars.org/org.mentat/emmy-viewers) +[![Discord Shield](https://img.shields.io/discord/731131562002743336?style=flat&colorA=000000&colorB=000000&label=&logo=discord)](https://discord.gg/hsRBqGEeQ4)")]]) ;; ;; ;; @@ -37,54 +52,291 @@ ;; ;; ## What is Emmy-Viewers? ;; -;; TODO +;; Emmy-Viewers is a library of tools for visually rendering mathematical +;; objects found in the [Emmy](https://github.com/mentat-collective/emmy) +;; computer algebra system. These tools allow you to build interactive scenes +;; for exploring physical and mathematical worlds. +;; +;; The first example uses the functions in +;; the [`emmy.mafs`](https://cljdoc.org/d/org.mentat/emmy-viewers/CURRENT/api/emmy.mafs) +;; namespace to plot +;; +;; - `((cube D) tanh)`, the third derivative of the [hyperbolic tangent +;; function](https://mathworld.wolfram.com/HyperbolicTangent.html), shifted by +;; the `x`-value of the (interactive, try sliding!) pink point in the scene, and +;; - the inequality between that function and `(cos x)`: +;; +;; > The 'show code' link below will expand the example's source. + +^{::clerk/visibility {:code :fold}} +(emmy.viewer/with-let [!phase [0 0]] + (let [shifted (emmy.viewer/with-params {:atom !phase :params [0]} + (fn [shift] + (((cube D) tanh) (- identity shift))))] + (emmy.mafs/mafs + {:height 400} + (emmy.mafs/cartesian) + (emmy.mafs/of-x shifted) + (emmy.mafs/inequality + {:y {:<= shifted :> cos} :color :blue}) + (emmy.mafs/movable-point + {:atom !phase :constrain "horizontal"})))) + +;; The next example uses the functions +;; in [`emmy.mathbox.plot`](https://cljdoc.org/d/org.mentat/emmy-viewers/CURRENT/api/emmy.mathbox.plot) and [`emmy.leva`](https://cljdoc.org/d/org.mentat/emmy-viewers/CURRENT/api/emmy.leva) +;; to plot the functions +;; +;; - $f(x, y) := D^3\tanh(x) + \sin(y-\texttt{phase})$ +;; - $g(y) := \texttt{shift} * \cos(y - \texttt{phase})$ +;; +;; where $\texttt{phase}$ is supplied by the interactive slider hovering in the +;; top right: + +^{::clerk/visibility {:code :fold}} +(emmy.viewer/with-let [!phase {:phase 0}] + (emmy.mathbox.plot/scene + (emmy.leva/controls + {:folder {:name "Intro Demo"} + :schema {:phase {:min -4 :max 4 :step 0.01}} + :atom !phase}) + (emmy.mathbox.plot/of-y + {:z (ev/with-params {:atom !phase :params [:phase]} + (fn [shift] + (fn [y] + (* shift (sin (- y shift)))))) + + :color "LimeGreen"}) + (emmy.mathbox.plot/of-xy + {:color "#3090FF" + :z (ev/with-params {:atom !phase :params [:phase]} + (fn [shift] + (fn [[x y]] + (+ (((cube D) tanh) x) + (sin (- y shift))))))}))) + +;; Emmy-Viewers uses either [Clerk](https://github.com/nextjournal/clerk) or +;; [Portal](https://github.com/djblue/portal) as a presentation environment. +;; ;; ;; ## Quickstart + +;;Install Emmy-Viewers into your Clojure project using the instructions at its +;; Clojars page: + +;; [![Clojars +;; Project](https://img.shields.io/clojars/v/org.mentat/emmy-viewers.svg)](https://clojars.org/org.mentat/emmy-viewers) ;; -;; Grab the most recent code using a Git dependency: +;; Or grab the most recent code by adding a Git dependency to your `deps.edn` +;; file: ^{::clerk/visibility {:code :hide}} -(docs/git-dependency - "mentat-collective/emmy-viewers") +(clerk/md + (format + "```clojure +{:deps + {org.mentat/emmy-viewers + {:git/url \"https://github.com/mentat-collective/emmy-viewers.git\" + :git/sha \"%s\"}}} + ```" (docs/git-sha))) + +;; Next visit ["Quickstart via Clerk"](#quickstart-via-clerk) to build scenes +;; using [Clerk](http://github.com/nextjournal/clerk), or ["Quickstart via +;; Portal"](#quickstart-via-portal) to +;; use [Portal](https://github.com/djblue/portal). +;; +;; +;; ### Quickstart via Clerk +;; +;; The fastest way to get started with Clerk is to use the [`emmy-viewers/clerk` +;; project template](#clerk-project-template). Jump there, or read on to set +;; Clerk up manually. + +;; Install Clerk by adding the following entry to your `deps.edn`: +;; +;; ```clojure +;; {:deps +;; { +;; io.github.nextjournal/clerk {:mvn/version "0.14.919"}}} +;; ``` +;; +;; Require and start `emmy.clerk` in your `user.clj`: +;; +;; ```clojure +;; (ns user +;; (:require [emmy.clerk :as ec])) + +;; ;; start Clerk's built-in webserver on the default port 7777, opening the +;; ;; browser when done +;; (ec/serve! {:browse true}) +;; ``` +;; +;; > See Clerk's ["Using +;; > Clerk"](https://github.com/nextjournal/clerk#-using-clerk) section for more +;; > configuration options. Replace any call in that guide to +;; > `nextjournal.clerk/{serve!,halt!,build!}` with +;; > `emmy.clerk/{serve!,halt!,build!}`. + +;; Create a file called `emmy/demo.clj` and install our default Clerk viewers +;; from `emmy.clerk`: + +;; ```clojure +;; (ns emmy.demo +;; (:refer-clojure +;; :exclude [+ - * / zero? compare divide numerator denominator +;; infinite? abs ref partial =]) +;; (:require [emmy.clerk :as ec] +;; [emmy.env :as e :refer :all] +;; [emmy.mafs :as mafs] +;; [emmy.mathbox.plot :as plot] +;; [emmy.viewer :as ev] +;; [nextjournal.clerk :as clerk])) + +;; ^{::clerk/visibility {:code :hide :result :hide}} +;; (ec/install!) +;; ``` +;; +;; > This namespace imports every function +;; > from [`emmy.env`](https://cljdoc.org/d/org.mentat/emmy/0.31.0/api/emmy.env). +;; > You'll need to build your mathematical functions out of these `emmy.env` +;; > functions to use them with Emmy-Viewers 2D and 3D plotting capabilities. +;; +;; Thanks to the `ec/install!` call above, the return values of all Emmy-Viewers +;; functions will be able to present themselves graphically. +;; +;; Add this line to plot the sine function using +;; the [Mafs.cljs](https://mafs.mentat.org/) 2D plotting library: + +(mafs/of-x sin {:color :blue}) + +;; Render it by calling `(nextjournal.clerk/show! "src/emmy/demo.clj")` at the +;; REPL. + +;; > See the [Mafs Guide](/dev/examples/mafs) for 2D plotting examples. + +;; Use `plot/scene` to render multiple plots onto a 3D canvas: + +(plot/scene + (plot/of-x {:z sin}) + (plot/parametric-curve + {:f (up sin cos (/ identity 3)) + :t [-10 10] + :color :green})) + +;; > See the [MathBox Guide](/dev/examples/mafs) for 3D plotting examples. +;; +;; Next, try clicking the 'show code' link for the examples at the top of the +;; page and pasting their source into your namespace. Then visit the ["Specific +;; Guides"](#specific-guides) section, and click through ["Demos"](#demos) for +;; inspiration. + +;; ### Quickstart via Portal +;; +;; Follow the [Portal Usage +;; instructions](https://github.com/djblue/portal#usage) to the point where you +;; have the Portal dependency installed and loadable. +;; +;; You'll also need to install [node.js](https://nodejs.org/en/) to download +;; JavaScript dependencies. +;; +;; Test your installation by running this command at the REPL: + +;; ```clojure +;; (require '[portal.api :as p]) +;; ``` +;; +;; If this returns `nil` you're all set. + +;; Require `emmy.portal` in your `user.clj`, and call `prepare!` to make sure +;; you've downloaded all JavaScript dependencies from `npm`: +;; +;; ```clojure +;; (ns user +;; (:require [emmy.portal :as ep])) +;; +;; ;; This really only needs to be run once, but run it at each system start to +;; ;; be safe. +;; (ep/prepare!) +;; ``` +;; +;; Start the Emmy-Viewers customization of Portal: +;; +;; ```clojure +;; (def portal +;; (ep/start! +;; {:emmy.portal/tex {:macros {"\\f" "#1f(#2)"}} +;; :theme :portal.colors/zenburn})) +;; ``` +;; +;; The options passed above are optional; `:emmy.portal/tex` customizes +;; the [katex](https://katex.org/) viewer with any option allowed by [katex's +;; option support](https://katex.org/docs/options.html), while `:theme` sets a +;; custom theme. You can pass any [Portal +;; theme](https://cljdoc.org/d/djblue/portal/0.42.1/doc/ui-concepts/themes) that +;; you like, or remove this entry. +;; +;; Use `tap>` to send values to Portal: + +;; ```clojure +;; (tap> (mafs/of-x sin {:color :indigo})) +;; ``` +;; +;; `tap>` an Emmy symbolic expression: +;; +;; ```clojure +;; (tap> (((exp D) (literal-function 'f)) 'x)) +;; ``` +;; +;; then click the cell in the Portal UI and choose `:emmy.portal/tex` from the +;; viewer list at the bottom. You should see the expression transform into +;; nicely typeset mathematics. +;; +;; > Currently anything from `emmy.mafs`, `emmy.leva`, `emmy.jsxgraph` and +;; > `emmy.mathlive` will render. MathBox support is coming soon! + +;; Visit the ["Specific Guides"](#specific-guides) section, and click +;; through ["Demos"](#demos) for inspiration. + +;; ## Specific Guides +;; +;; - [Mafs Guide](/dev/examples/mafs) +;; - [MathBox Guide](/dev/examples/mathbox) +;; - [Leva Guide](/dev/examples/leva) +;; +;; [JSXGraph.cljs](https://github.com/mentat-collective/jsxgraph.cljs) +;; and [MathLive.cljs](https://github.com/mentat-collective/jsxgraph.cljs) +;; guides are coming soon. ;; ## Demos ;; -;; - [examples.complex](/dev/examples/complex.html) -;; - [examples.continued-fractions](/dev/examples/continued_fractions.html) -;; - [examples.expression](/dev/examples/expression.html) -;; - [examples.functions](/dev/examples/functions.html) -;; - [examples.index.md](/dev/examples/index.md) -;; - [examples.mafs](/dev/examples/mafs.html) +;; These demos are in-progress, more advanced demonstrations of the capabilities +;; of Emmy-Viewers. I'm using these as test cases to flesh out the more settled API, so please read them with that in mind! +;; +;; - [examples.manifold.fdg](/dev/examples/manifold/fdg) +;; - [examples.manifold.klein](/dev/examples/manifold/klein) ;; - [examples.manifold.pq-knot](/dev/examples/manifold/pq_knot) -;; - [examples.mathbox.cube-controls](/dev/examples/mathbox/cube_controls.html) -;; - [examples.matrix](/dev/examples/matrix.html) -;; - [examples.modint](/dev/examples/modint.html) -;; - [examples.number](/dev/examples/number.html) -;; - [examples.operator](/dev/examples/operator.html) -;; - [examples.polynomial](/dev/examples/polynomial.html) -;; - [examples.power-series](/dev/examples/power_series.html) -;; - [examples.quaternion](/dev/examples/quaternion.html) -;; - [examples.rational-function](/dev/examples/rational_function.html) -;; - [examples.simulation.cylinder-flow](/dev/examples/simulation/cylinder_flow.html) -;; - [examples.simulation.double-ellipsoid](/dev/examples/simulation/double_ellipsoid.html) -;; - [examples.simulation.ellipsoid](/dev/examples/simulation/ellipsoid.html) -;; - [examples.simulation.lorenz](/dev/examples/simulation/lorenz.html) -;; - [examples.simulation.oscillator](/dev/examples/simulation/oscillator.html) -;; - [examples.simulation.phase-portrait](/dev/examples/simulation/phase_portrait.html) -;; - [examples.simulation.quartic-well](/dev/examples/simulation/quartic_well.html) -;; - [examples.simulation.toroid](/dev/examples/simulation/toroid.html) -;; - [examples.stern-brocot](/dev/examples/stern_brocot.html) -;; - [examples.structure](/dev/examples/structure.html) -;; - [examples.symbolic.einstein](/dev/examples/symbolic/einstein.html) -;; - [examples.vega.pendulum](/dev/examples/vega/pendulum.html) +;; - [examples.mathbox.cube-controls](/dev/examples/mathbox/cube_controls) +;; - [examples.mathbox.functions](/dev/examples/mathbox/functions) +;; - [examples.mathbox.geom](/dev/examples/mathbox/geom) +;; - [examples.mathbox.ode](/dev/examples/mathbox/ode) +;; - [examples.mathbox.quickstart](/dev/examples/mathbox/quickstart) +;; - [examples.simulation.cylinder-flow](/dev/examples/simulation/cylinder_flow) +;; - [examples.simulation.double-ellipsoid](/dev/examples/simulation/double_ellipsoid) +;; - [examples.simulation.ellipsoid](/dev/examples/simulation/ellipsoid) +;; - [examples.simulation.lorenz](/dev/examples/simulation/lorenz) +;; - [examples.simulation.oscillator](/dev/examples/simulation/oscillator) +;; - [examples.simulation.phase-portrait](/dev/examples/simulation/phase_portrait) +;; - [examples.simulation.quartic-well](/dev/examples/simulation/quartic_well) +;; - [examples.simulation.toroid](/dev/examples/simulation/toroid) +;; - [examples.vega.pendulum](/dev/examples/vega/pendulum) ;; ## Emmy-Viewers via SCI ;; -;; `Emmy` is compatible with [SCI, the Small Clojure +;; `Emmy-Viewers` is compatible with [SCI, the Small Clojure ;; Interpreter](https://github.com/babashka/sci). ;; -;; To install `Emmy-Viewers` into your SCI context, require the -;; `emmy-viewers.sci` namespace and call `emmy-viewers.sci/install!`: +;; To install the Reagent components and code defined in `Emmy-Viewers` into +;; your SCI context, require the `emmy-viewers.sci` namespace and call +;; `emmy-viewers.sci/install!`: ;; ```clj ;; (ns myproject.sci-extensions @@ -94,30 +346,11 @@ ;; ``` ;; ;; If you want more granular control, see the [cljdoc page for -;; `emmy.sci`](https://cljdoc.org/d/org.mentat/emmy/CURRENT/api/emmy.sci) +;; `emmy.viewer.sci`](https://cljdoc.org/d/org.mentat/emmy-viewers/CURRENT/api/emmy.viewer.sci) ;; for an SCI config and distinct SCI namespace objects that you can piece ;; together. ;; -;; > Note that `Emmy` does not ship with a dependency on SCI, so you'll -;; > need to install your own version. -;; -;; ## Emmy-Viewers via Clerk -;; -;; Using `Emmy-Viewers` with Nextjournal's [Clerk](https://clerk.vision/) gives -;; you the ability to write notebooks like this one. -;; -;; Doing this requires that you generate a custom ClojureScript build for your -;; Clerk project. The easiest way to do this for an existing project is with -;; the [`clerk-utils` project](https://clerk-utils.mentat.org/). Follow the -;; instructions on the [`clerk-utils` guide for custom -;; ClojureScript](https://clerk-utils.mentat.org/#custom-clojurescript-builds). -;; -;; If this is your first time using Clerk, use the [`emmy/clerk` template -;; described below](#project-template) to generate a new project with all steps -;; described in ["Emmy-Viewers via SCI"](#emmy-viewers-via-sci) already -;; completed. -;; -;; ## Project Template +;; ## Clerk Project Template ;; ;; `Emmy-Viewers` includes ;; a [`deps-new`](https://github.com/seancorfield/deps-new) template called @@ -156,7 +389,7 @@ clojure -Sdeps '{:deps {io.github.mentat-collective/emmy-viewers {:git/sha \"%s\ ;; ## clj-kondo config -;; `Emmy` ships with a configuration that allows +;; `Emmy-Viewers` ships with a configuration that allows ;; [clj-kondo](https://github.com/clj-kondo/clj-kondo) to lint the library's ;; macros. @@ -190,17 +423,24 @@ clojure -Sdeps '{:deps {io.github.mentat-collective/emmy-viewers {:git/sha \"%s\ ;; repo](https://github.com/clj-kondo/clj-kondo/blob/master/doc/config.md#importing). ;; ## Who is using Emmy-Viewers? - -;; If you want to show off your use of Emmy-Viewers, please [file a -;; ticket](https://github.com/mentat-collective/emmy-viewers/issues/new) and let -;; us know! +;; +;; - [The Road to Reality series](https://github.com/mentat-collective/road-to-reality) +;; +;; > If you want to show off your use of Emmy-Viewers, please [file a +;; > ticket](https://github.com/mentat-collective/emmy-viewers/issues/new) and +;; > let us know! ;; ## Thanks and Support ;; To support this work and my other open source projects, consider sponsoring ;; me via my [GitHub Sponsors page](https://github.com/sponsors/sritchie). Thank ;; you to my current sponsors! - +;; +;; I'm grateful to [Clojurists Together](https://www.clojuriststogether.org/) +;; for financial support during this library's creation. Please +;; consider [becoming a member](https://www.clojuriststogether.org/developers/) +;; to support this work and projects like it. +;; ;; For more information on me and my work, visit https://samritchie.io. ;; ## License diff --git a/dev/examples/leva.clj b/dev/examples/leva.clj new file mode 100644 index 00000000..f18864d9 --- /dev/null +++ b/dev/examples/leva.clj @@ -0,0 +1,28 @@ +;; ## Leva Viewers +;; +;; This namespace form makes use of a number of aliases that you'll want to use +;; in your own namespace to follow these examples. + +(ns examples.leva + {:nextjournal.clerk/toc true} + (:refer-clojure + :exclude [+ - * / zero? compare divide numerator denominator + infinite? abs ref partial =]) + (:require [emmy.clerk :as ec] + [emmy.env :as e :refer :all] + [nextjournal.clerk :as clerk])) + +;; To enable rendering of a Leva control panel, install the Emmy viewers: + +^{::clerk/visibility {:result :hide}} +(ec/install!) + +;; This page is in-progress. For now, see Leva in action at the following demo pages: + +;; - [examples.manifold.fdg](/dev/examples/manifold/fdg) +;; - [examples.manifold.klein](/dev/examples/manifold/klein) +;; - [examples.manifold.pq-knot](/dev/examples/manifold/pq_knot) +;; - [examples.mathbox.cube-controls](/dev/examples/mathbox/cube_controls) +;; - [examples.mathbox.functions](/dev/examples/mathbox/functions) +;; - [examples.mathbox.ode](/dev/examples/mathbox/ode) +;; - [examples.simulation.toroid](/dev/examples/simulation/toroid) diff --git a/dev/examples/mafs.clj b/dev/examples/mafs.clj index 95f1829d..5b0b9089 100644 --- a/dev/examples/mafs.clj +++ b/dev/examples/mafs.clj @@ -1,11 +1,14 @@ -^{:nextjournal.clerk/visibility {:code :hide}} +;; ## Mafs Viewers +;; +;; This namespace form makes use of a number of aliases that you'll want to use +;; in your own namespace to follow these examples. + (ns examples.mafs {:nextjournal.clerk/toc true} (:refer-clojure :exclude [+ - * / zero? compare divide numerator denominator infinite? abs ref partial =]) - (:require [emmy.mafs.core] - [emmy.clerk :as ec] + (:require [emmy.clerk :as ec] [emmy.env :as e :refer :all] [emmy.mafs :as mafs] [emmy.polynomial :as poly] @@ -15,12 +18,60 @@ {::clerk/width :wide} -;; ## Server-Side Mafs +;; To enable rendering of the Mafs forms, install the Emmy viewers: -^{::clerk/visibility {:code :hide :result :hide}} +^{::clerk/visibility {:result :hide}} (ec/install!) -;; parametrized function controlled by a stateful point: +;; The page currently contains a bunch of representative demos. Read on, adapt, +;; and be inspired! + +;; ## Non-Plots +;; +;; shorter vector and text on the same page: + +(mafs/mafs + {:height 300} + (mafs/cartesian) + (mafs/vector [1 2] {:color :blue}) + (mafs/text "face" {:color :green})) + +;; ## Function Plots + +;; cartesian grid with nothing on it: + +(mafs/cartesian) + +;; ### Basics + +;; Plot of `sin`: + +(mafs/of-x {:y sin :color :blue}) + +;; more fun with easy derivatives: + +(defn sigmoid1 [x] + (-> (/ 2 (+ 1 (exp (- x)))) + (- 1))) + +(mafs/mafs {:zoom {:min 0.1 :max 2}} + (mafs/cartesian) + (mafs/of-x {:y sin :color :blue}) + (mafs/of-x {:y (+ cos (D sin)) :color :green}) + (mafs/of-y {:x sigmoid1 :color :pink})) + +;; ### Inequality + +(mafs/inequality + {:y {:<= sin :> cos} :color :blue}) + +;; ### Param Function, Stateful Point +;; +;; Note that the function inside of `ev/with-params` takes `shift` and returns +;; another function, built using Emmy's "function algebra". +;; +;; The inner function `(((cube D) tanh) (- identity shift))` is equivalent +;; to `(fn [x] (((cube D) tanh) (- x shift)))`. (ev/with-let [!phase [0 0]] (let [shifted (ev/with-params {:atom !phase :params [0]} @@ -34,7 +85,7 @@ (mafs/movable-point {:atom !phase :constrain "horizontal"})))) -;; same thing, different component: +;; Similar idea with a parametric function: (ev/with-let [!phase [1 0]] (let [path (ev/with-params {:atom !phase :params [0 1]} @@ -50,22 +101,8 @@ (mafs/movable-point {:atom !phase})))) -;; inequality: - -(mafs/inequality - {:y {:<= sin :> cos} :color :blue}) - -;; shorter vector and text on the same page: - -(mafs/mafs - {:height 300} - (mafs/cartesian) - (mafs/vector [1 2] {:color :blue}) - (mafs/text "face" {:color :green})) - -;; parametrized function running a vector field: +;; ### Vector field: -^{::clerk/width :wide} (ev/with-let [!point [1 0]] (mafs/mafs (mafs/cartesian {:subdivisions 2}) @@ -81,9 +118,34 @@ 10))}) (mafs/movable-point {:atom !point}))) +;; ## Polynomials +;; +;; Emmy polynomials are functions, so are fair game for plotting: + +(mafs/of-x + (let [x (poly/identity)] + (+ (- x) + (square x) + (cube x)))) + +;; ## Multiviewer +;; +;; tabbed viewer between TeX and plot: + +(def ->tex + (comp clerk/tex ->TeX simplify)) + +(let [f ((expt D 5) tanh)] + (ec/multi + {:TeX (->tex (f 'x)) + :Mafs (mafs/mafs + {:zoom {:min 0.1 :max 2}} + (mafs/cartesian) + (mafs/of-x {:y f :color :blue}))})) + ;; this one is a little more fun... I am building a quoted value for `:radius`, ;; but the backtick means that on the client-side we'll see `emmy.env/abs`. And -;; Emmy is available over there so this works fine! +;; Emmy is available in the SCI environment so this works fine! (ev/with-let [!point [1 1]] (mafs/mafs @@ -93,6 +155,8 @@ :radius `(abs @~!point)}) (mafs/movable-point {:atom !point}))) +;; ## Combinators + ;; Build up a more complex set of fragments with a combinators: (defn chain [& points] @@ -111,6 +175,8 @@ (chain [1 2] [1 0] [-1 1]) +;; ## Compositional Scenes +;; ;; This is the ellipse example from mafs as a higher-order function. Takes a ;; function of a state symbol and returns a reagent fragment. @@ -155,8 +221,8 @@ :path :translate :color :orange})))))) -;; -#_{:clj-kondo/ignore [:unused-binding]} +;; Then use the function: + (with-handles (fn [!state] [:<> @@ -169,10 +235,6 @@ (let [{[x _] :width [_ y] :height} @~!state] [(Math/abs x) (Math/abs y)]))})])) -(defn sigmoid1 [x] - (-> (/ 2 (+ 1 (exp (- x)))) - (- 1))) - ;; function that generates fragments representing `n` derivatives of `f`: (defn derivatives [n f] @@ -184,7 +246,7 @@ (cycle [:red :orange :green :blue :indigo :violet :pink :yellow])))) -;; `clerk/row` combinator works: +;; `clerk/row` combinator works. Note that these can zoom! (clerk/row (mafs/mafs {:zoom {:min 0.1 :max 2}} @@ -194,9 +256,8 @@ (mafs/cartesian) (derivatives 5 tanh))) -(def ->tex - (comp clerk/tex ->TeX simplify)) - +;; ## Clerk Row and Column +;; ;; show off a column of tex and then a graph of the same function: (let [f ((expt D 3) tanh)] @@ -225,44 +286,3 @@ (mafs/cartesian) (derivatives 5 tanh)) (caption [:<> "Derivatives of " [:code "tanh"] "."]))) - -;; cartesian works without a `mafs` wrapper: - -(mafs/cartesian) - -;; same here for `of-x`: - -(mafs/of-x {:y sin :color :blue}) - -;; more fun with easy derivatives: - -(mafs/mafs {:zoom {:min 0.1 :max 2}} - (mafs/cartesian) - (mafs/of-x {:y sin :color :blue}) - (mafs/of-x {:y (+ cos (D sin)) :color :green}) - (mafs/of-y {:x sigmoid1 :color :pink})) - -;; ## Polynomials -;; -;; I think this can work out of the box for an Emmy Polynomial. - -(def my-poly - (let [x (poly/identity)] - (+ (- x) - (square x) - (cube x)))) - - -(mafs/of-x my-poly) - -;; ## Multiviewer -;; -;; tabbed viewer between TeX and plot: - -(let [f ((expt D 5) tanh)] - (ec/multi - {:TeX (->tex (f 'x)) - :Mafs (mafs/mafs - {:zoom {:min 0.1 :max 2}} - (mafs/cartesian) - (mafs/of-x {:y f :color :blue}))})) diff --git a/dev/examples/manifold/pq_knot.clj b/dev/examples/manifold/pq_knot.clj index a9ca5e88..65265bc6 100644 --- a/dev/examples/manifold/pq_knot.clj +++ b/dev/examples/manifold/pq_knot.clj @@ -7,7 +7,6 @@ (:require [emmy.clerk :as ec] [emmy.env :as e :refer :all] [emmy.leva :as leva] - [emmy.mathbox :as box] [emmy.mathbox.plot :as plot] [emmy.viewer :as ev])) @@ -135,22 +134,16 @@ (torus-knot R (+ r2 r3) p q) r3)) -(defn scene [& children] - (box/mathbox - {:container {:style {:height "500px" :width "100%"}} - :renderer {:background-opacity 0} - :scale 500 :focus 3} - (box/camera {:proxy true :position [1 1 3]}) - (apply box/cartesian - {:range [[-1 1] [-1 1] [-1 1]] - :scale [1 1 1]} - children))) - ^{:nextjournal.clerk/width :full :nextjournal.clerk/visibility {:code :fold}} - (ev/with-let [!opts {:p 7 :q 8 :r1 1.791 :r2 0.95 :r3 0.1 :torus? false}] - (scene + (plot/scene + {:threestrap {:controls {:klass :trackball}} + :container {:style {:height "500px" :width "100%"}} + :camera [1 3 1] + :range [[-1 1] [-1 1] [-1 1]] + :axes [] + :grids []} (leva/controls {:folder {:name "PQ Knot"} :atom !opts @@ -171,6 +164,7 @@ :v-samples 16 :grid-color 0xffffff :grid-opacity 1 + :grid-width 3 :grid-u 100 :grid-v 4 :u [(- Math/PI) Math/PI] diff --git a/dev/examples/mathbox.clj b/dev/examples/mathbox.clj new file mode 100644 index 00000000..6c773f29 --- /dev/null +++ b/dev/examples/mathbox.clj @@ -0,0 +1,28 @@ +;; ## MathBox Viewers +;; +;; This namespace form makes use of a number of aliases that you'll want to use +;; in your own namespace to follow these examples. + +(ns examples.mathbox + {:nextjournal.clerk/toc true} + (:refer-clojure + :exclude [+ - * / zero? compare divide numerator denominator + infinite? abs ref partial =]) + (:require [emmy.clerk :as ec] + [emmy.env :as e :refer :all] + [nextjournal.clerk :as clerk])) + +{::clerk/width :wide} + +;; To enable rendering of MathBox plots, install the Emmy viewers: + +^{::clerk/visibility {:result :hide}} +(ec/install!) + +;; This page is in-progress. For now, see the examples at the following demo pages: + +;; - [examples.mathbox.functions](/dev/examples/mathbox/functions) +;; - [examples.mathbox.quickstart](/dev/examples/mathbox/quickstart) +;; - [examples.manifold.fdg](/dev/examples/manifold/fdg) +;; - [examples.manifold.klein](/dev/examples/manifold/klein) +;; - [examples.manifold.pq-knot](/dev/examples/manifold/pq_knot) diff --git a/dev/examples/mathbox/functions.clj b/dev/examples/mathbox/functions.clj index 19ea0526..c6fe391c 100644 --- a/dev/examples/mathbox/functions.clj +++ b/dev/examples/mathbox/functions.clj @@ -12,13 +12,12 @@ {:nextjournal.clerk/width :wide} - ^{:nextjournal.clerk/visibility {:code :hide :result :hide}} (ec/install!) -;; ## Function Viewer +;; # Function Viewer -;; ### Demo +;; ## Demo ;; ;; Let's make a function to try! @@ -33,19 +32,22 @@ ;; Then we'll call it with our new viewer: -(plot/scene - (plot/of-x {:z my-fn :samples 256})) +(plot/of-x {:z my-fn :samples 256}) -(ev/with-let [!opts {:x-max 5 - :color "#3090ff"}] +(ev/with-let [!opts {:x-max 5 :color "#3090ff"}] (plot/scene {:range [[-5 (ev/get !opts :x-max)] [-5 5] [-5 5]]} (emmy.leva/controls {:folder {:name "Plot Color"} :atom !opts}) + + (plot/polar-curve + {:color "Salmon" + :r (fn [theta] + (* 2 (+ 1 (cos (* 3 theta)))))}) + (plot/polar-surface - {:shaded? true - :color (ev/get !opts :color) + {:color (ev/get !opts :color) :grid-r 8 :grid-theta 8 :z (fn [[r theta]] diff --git a/dev/examples/rational_function.clj b/dev/examples/rational_function.clj index 1772995c..f2a0b5a5 100644 --- a/dev/examples/rational_function.clj +++ b/dev/examples/rational_function.clj @@ -3,11 +3,3 @@ {:nextjournal.clerk/toc true}) ;; ## Rational Function - -;; TODO remaining: -;; -;; Modular Int -;; Function -;; Operator -;; Structures -;; Matrix diff --git a/package-lock.json b/package-lock.json index 56cce19d..f698a9c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,20 +5,20 @@ "packages": { "": { "dependencies": { - "@codemirror/autocomplete": "6.7.1", + "@codemirror/autocomplete": "6.8.1", "@codemirror/commands": "6.2.4", "@codemirror/lang-markdown": "6.0.0", - "@codemirror/language": "6.7.0", - "@codemirror/lint": "6.2.1", - "@codemirror/search": "6.4.0", + "@codemirror/language": "6.8.0", + "@codemirror/lint": "6.3.0", + "@codemirror/search": "6.5.0", "@codemirror/state": "6.2.1", - "@codemirror/view": "6.12.0", + "@codemirror/view": "6.14.0", "@cortex-js/compute-engine": "0.12.3", - "@lezer/common": "1.0.2", - "@lezer/generator": "1.2.3", + "@lezer/common": "1.0.3", + "@lezer/generator": "1.3.0", "@lezer/highlight": "1.1.6", - "@lezer/lr": "1.3.5", - "@lezer/markdown": "1.0.2", + "@lezer/lr": "1.3.7", + "@lezer/markdown": "1.0.3", "@nextjournal/lang-clojure": "1.0.0", "@nextjournal/lezer-clojure": "1.0.0", "complex.js": "2.1.1", @@ -26,36 +26,35 @@ "fraction.js": "4.2.0", "framer-motion": "6.5.1", "jsxgraph": "1.5.0", - "katex": "^0.16.7", - "leva": "0.9.34", - "mafs": "0.16.0", + "katex": "0.16.8", + "leva": "0.9.35", + "mafs": "0.17.1", "markdown-it": "12.3.2", "markdown-it-block-image": "0.0.3", "markdown-it-footnote": "3.0.3", "markdown-it-texmath": "0.9.7", "markdown-it-toc-done-right": "4.2.0", "mathbox": "2.3.1", - "mathbox-react": "0.2.2", + "mathbox-react": "0.0.14", "mathlive": "0.86.1", "odex": "3.0.0-rc.4", "punycode": "2.1.1", "react": "18.2.0", "react-dom": "18.2.0", "shadow-cljs": "2.23.1", - "three": "0.149.0", + "three": "0.150.0", "threestrap": "0.5.1", "use-sync-external-store": "1.2.0", "vh-sticky-table-header": "1.2.1", - "w3c-keyname": "2.2.7" + "w3c-keyname": "2.2.8" }, "devDependencies": { "gh-pages": "^3.2.3" } }, "node_modules/@babel/runtime": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", - "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", + "version": "7.22.5", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -64,9 +63,8 @@ } }, "node_modules/@codemirror/autocomplete": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.7.1.tgz", - "integrity": "sha512-hSxf9S0uB+GV+gBsjY1FZNo53e1FFdzPceRfCfD1gWOnV6o21GfB5J5Wg9G/4h76XZMPrF0A6OCK/Rz5+V1egg==", + "version": "6.8.1", + "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -82,8 +80,7 @@ }, "node_modules/@codemirror/commands": { "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.4.tgz", - "integrity": "sha512-42lmDqVH0ttfilLShReLXsDfASKLXzfyC36bzwcqzox9PlHulMcsUOfHXNo2X2aFMVNUoQ7j+d4q5bnfseYoOA==", + "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.2.0", @@ -93,8 +90,7 @@ }, "node_modules/@codemirror/lang-css": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.0.tgz", - "integrity": "sha512-oyIdJM29AyRPM3+PPq1I2oIk8NpUfEN3kAM05XWDDs6o3gSneIKaVJifT2P+fqONLou2uIgXynFyMUDQvo/szA==", + "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -104,9 +100,8 @@ } }, "node_modules/@codemirror/lang-html": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.3.tgz", - "integrity": "sha512-VKzQXEC8nL69Jg2hvAFPBwOdZNvL8tMFOrdFwWpU+wc6a6KEkndJ/19R5xSaglNX6v2bttm8uIEFYxdQDcIZVQ==", + "version": "6.4.5", + "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", @@ -120,9 +115,8 @@ } }, "node_modules/@codemirror/lang-javascript": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.1.8.tgz", - "integrity": "sha512-5cIA6IOkslTu1DtldcYnj7hsBm3p+cD37qSaKvW1kV16M6q9ysKvKrveCOWgbrj4+ilSWRL2JtSLudbeB158xg==", + "version": "6.1.9", + "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", @@ -135,8 +129,7 @@ }, "node_modules/@codemirror/lang-markdown": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.0.0.tgz", - "integrity": "sha512-ozJaO1W4WgGlwWOoYCSYzbVhhM0YM/4lAWLrNsBbmhh5Ztpl0qm4CgEQRl3t8/YcylTZYBIXiskui8sHNGd4dg==", + "license": "MIT", "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -147,9 +140,8 @@ } }, "node_modules/@codemirror/language": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.7.0.tgz", - "integrity": "sha512-4SMwe6Fwn57klCUsVN0y4/h/iWT+XIXFEmop2lIHHuWO0ubjCrF3suqSZLyOQlznxkNnNbOOfKe5HQbQGCAmTg==", + "version": "6.8.0", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -160,9 +152,8 @@ } }, "node_modules/@codemirror/lint": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.2.1.tgz", - "integrity": "sha512-y1muai5U/uUPAGRyHMx9mHuHLypPcHWxzlZGknp/U5Mdb5Ol8Q5ZLp67UqyTbNFJJ3unVxZ8iX3g1fMN79S1JQ==", + "version": "6.3.0", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -170,9 +161,8 @@ } }, "node_modules/@codemirror/search": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.4.0.tgz", - "integrity": "sha512-zMDgaBXah+nMLK2dHz9GdCnGbQu+oaGRXS1qviqNZkvOCv/whp5XZFyoikLp/23PM9RBcbuKUUISUmQHM1eRHw==", + "version": "6.5.0", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -181,13 +171,11 @@ }, "node_modules/@codemirror/state": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.1.tgz", - "integrity": "sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==" + "license": "MIT" }, "node_modules/@codemirror/view": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.12.0.tgz", - "integrity": "sha512-xNHvbJBc2v8JuEcIGOck6EUGShpP+TYGCEMVEVQMYxbFXfMhYnoF3znxB/2GgeKR0nrxBs+nhBupiTYQqCp2kw==", + "version": "6.14.0", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.1.4", "style-mod": "^4.0.0", @@ -196,8 +184,7 @@ }, "node_modules/@cortex-js/compute-engine": { "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@cortex-js/compute-engine/-/compute-engine-0.12.3.tgz", - "integrity": "sha512-LuiSWMSlgsLFcRWm5ifR8ZeE9HXWOrJ+hE6F211eVI+S+w9SQQvZhhCdUCBusyspW0+29R8lksJPH4qFFr3Xag==", + "license": "MIT", "dependencies": { "complex.js": "^2.1.1", "decimal.js": "^10.4.0" @@ -209,8 +196,7 @@ }, "node_modules/@emotion/is-prop-valid": { "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "license": "MIT", "optional": true, "dependencies": { "@emotion/memoize": "0.7.4" @@ -218,33 +204,50 @@ }, "node_modules/@emotion/memoize": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "license": "MIT", "optional": true }, + "node_modules/@floating-ui/core": { + "version": "1.3.1", + "license": "MIT" + }, + "node_modules/@floating-ui/dom": { + "version": "1.4.2", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.3.1" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.3.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/@juggle/resize-observer": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", - "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" + "license": "Apache-2.0" }, "node_modules/@lezer/common": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.2.tgz", - "integrity": "sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==" + "version": "1.0.3", + "license": "MIT" }, "node_modules/@lezer/css": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.2.tgz", - "integrity": "sha512-5TKMAReXukfEmIiZprDlGfZVfOOCyEStFi1YLzxclm9H3G/HHI49/2wzlRT6bQw5r7PoZVEtjTItEkb/UuZQyg==", + "license": "MIT", "dependencies": { "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "node_modules/@lezer/generator": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-1.2.3.tgz", - "integrity": "sha512-xRmNryYbJpWs7novjWtQLCGHOj71B4X1QHQ4SgJqwm11tl6COEVAGhuFTXKX16JMJUhumdXaX8We6hEMd4clDg==", + "version": "1.3.0", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.2", "@lezer/lr": "^1.3.0" @@ -255,16 +258,14 @@ }, "node_modules/@lezer/highlight": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.6.tgz", - "integrity": "sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0" } }, "node_modules/@lezer/html": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.4.tgz", - "integrity": "sha512-HdJYMVZcT4YsMo7lW3ipL4NoyS2T67kMPuSVS5TgLGqmaCjEU/D6xv7zsa1ktvTK5lwk7zzF1e3eU6gBZIPm5g==", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", @@ -273,25 +274,22 @@ }, "node_modules/@lezer/javascript": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.3.tgz", - "integrity": "sha512-k7Eo9z9B1supZ5cCD4ilQv/RZVN30eUQL+gGbr6ybrEY3avBAL5MDiYi2aa23Aj0A79ry4rJRvPAwE2TM8bd+A==", + "license": "MIT", "dependencies": { "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "node_modules/@lezer/lr": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.5.tgz", - "integrity": "sha512-Kye0rxYBi+OdToLUN2tQfeH5VIrpESC6XznuvxmIxbO1lz6M1C90vkjMNYoX1SfbUcuvoPXvLYsBquZ//77zVQ==", + "version": "1.3.7", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0" } }, "node_modules/@lezer/markdown": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.0.2.tgz", - "integrity": "sha512-8CY0OoZ6V5EzPjSPeJ4KLVbtXdLBd8V6sRCooN5kHnO28ytreEGTyrtU/zUwo/XLRzGr/e1g44KlzKi3yWGB5A==", + "version": "1.0.3", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0" @@ -299,8 +297,7 @@ }, "node_modules/@motionone/animation": { "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz", - "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==", + "license": "MIT", "dependencies": { "@motionone/easing": "^10.15.1", "@motionone/types": "^10.15.1", @@ -310,8 +307,7 @@ }, "node_modules/@motionone/dom": { "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", - "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", + "license": "MIT", "dependencies": { "@motionone/animation": "^10.12.0", "@motionone/generators": "^10.12.0", @@ -323,8 +319,7 @@ }, "node_modules/@motionone/easing": { "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz", - "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==", + "license": "MIT", "dependencies": { "@motionone/utils": "^10.15.1", "tslib": "^2.3.1" @@ -332,8 +327,7 @@ }, "node_modules/@motionone/generators": { "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz", - "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==", + "license": "MIT", "dependencies": { "@motionone/types": "^10.15.1", "@motionone/utils": "^10.15.1", @@ -342,13 +336,11 @@ }, "node_modules/@motionone/types": { "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz", - "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==" + "license": "MIT" }, "node_modules/@motionone/utils": { "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz", - "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==", + "license": "MIT", "dependencies": { "@motionone/types": "^10.15.1", "hey-listen": "^1.0.8", @@ -357,8 +349,7 @@ }, "node_modules/@nextjournal/lang-clojure": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nextjournal/lang-clojure/-/lang-clojure-1.0.0.tgz", - "integrity": "sha512-gOCV71XrYD0DhwGoPMWZmZ0r92/lIHsqQu9QWdpZYYBwiChNwMO4sbVMP7eTuAqffFB2BTtCSC+1skSH9d3bNg==", + "license": "ISC", "dependencies": { "@codemirror/language": "^6.0.0", "@nextjournal/lezer-clojure": "1.0.0" @@ -366,92 +357,409 @@ }, "node_modules/@nextjournal/lezer-clojure": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nextjournal/lezer-clojure/-/lezer-clojure-1.0.0.tgz", - "integrity": "sha512-VZyuGu4zw5mkTOwQBTaGVNWmsOZAPw5ZRxu1/Knk/Xfs7EDBIogwIs5UXTYkuECX5ZQB8eOB+wKA2pc7VyqaZQ==", + "license": "ISC", "dependencies": { "@lezer/lr": "^1.0.0" } }, - "node_modules/@radix-ui/popper": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/popper/-/popper-0.1.0.tgz", - "integrity": "sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ==", + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", - "csstype": "^3.0.4" + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@radix-ui/primitive": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz", - "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==", + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-presence": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-0.1.1.tgz", - "integrity": "sha512-LsL+NcWDpFUAYCmXeH02o4pgqcSLpwxP84UIjCtpIKrsPe2vLuhcp79KC/jZJeXz+of2lUpMAxpM+eCpxFZtlg==", + "version": "1.0.1", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-use-layout-effect": "0.1.0" + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" }, "peerDependencies": { - "react": ">=16.8" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@radix-ui/react-presence/node_modules/@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.0.6", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.2", + "@radix-ui/react-portal": "1.0.3", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@radix-ui/react-presence/node_modules/@radix-ui/react-use-layout-effect": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz", - "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==", + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/rect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-0.1.1.tgz", - "integrity": "sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw==", + "version": "1.0.1", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10" } }, "node_modules/@react-hook/latest": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz", - "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==", + "license": "MIT", "peerDependencies": { "react": ">=16.8" } }, "node_modules/@react-hook/passive-layout-effect": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz", - "integrity": "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==", + "license": "MIT", "peerDependencies": { "react": ">=16.8" } }, "node_modules/@react-hook/resize-observer": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@react-hook/resize-observer/-/resize-observer-1.2.6.tgz", - "integrity": "sha512-DlBXtLSW0DqYYTW3Ft1/GQFZlTdKY5VAFIC4+km6IK5NiPPDFchGbEJm1j6pSgMqPRHbUQgHJX7RaR76ic1LWA==", + "license": "MIT", "dependencies": { "@juggle/resize-observer": "^3.3.1", "@react-hook/latest": "^1.0.2", @@ -463,37 +771,32 @@ }, "node_modules/@sicmutils/glsl-parser": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@sicmutils/glsl-parser/-/glsl-parser-2.0.1.tgz", - "integrity": "sha512-svY++7/9A7oYE/BJtURM+Y77uvVWZ+PXfKuzZmbiQSWgBJRChUU3AHt8QXmmt4GFIXeVHV1zuSwjYpluU2WjXQ==", + "license": "MIT", "dependencies": { "glsl-tokenizer": "^2.1.4" } }, "node_modules/@stitches/react": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz", - "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==", + "license": "MIT", "peerDependencies": { "react": ">= 16.3.0" } }, "node_modules/@swc/helpers": { "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "license": "MIT", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@use-gesture/core": { "version": "10.2.27", - "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.2.27.tgz", - "integrity": "sha512-V4XV7hn9GAD2MYu8yBBVi5iuWBsAMfjPRMsEVzoTNGYH72tf0kFP+OKqGKc8YJFQIJx6yj+AOqxmEHOmx2/MEA==" + "license": "MIT" }, "node_modules/@use-gesture/react": { "version": "10.2.27", - "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.2.27.tgz", - "integrity": "sha512-7E5vnWCxeslWlxwZ8uKIcnUZVMTRMZ8cvSnLLKF1NkyNb3PnNiAzoXM4G1vTKJKRhgOTeI6wK1YsEpwo9ABV5w==", + "license": "MIT", "dependencies": { "@use-gesture/core": "10.2.27" }, @@ -503,14 +806,12 @@ }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "license": "Python-2.0" }, "node_modules/array-union": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, + "license": "MIT", "dependencies": { "array-uniq": "^1.0.1" }, @@ -520,17 +821,15 @@ }, "node_modules/array-uniq": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/asn1.js": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -540,13 +839,11 @@ }, "node_modules/asn1.js/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "node_modules/assert": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "license": "MIT", "dependencies": { "object-assign": "^4.1.1", "util": "0.10.3" @@ -554,52 +851,44 @@ }, "node_modules/assert/node_modules/inherits": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" + "license": "ISC" }, "node_modules/assert/node_modules/util": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "license": "MIT", "dependencies": { "inherits": "2.0.1" } }, "node_modules/assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/async": { "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.14" } }, "node_modules/attr-accept": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -613,23 +902,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/bn.js": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "license": "MIT" }, "node_modules/boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "license": "ISC" }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -637,13 +924,11 @@ }, "node_modules/brorand": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "license": "MIT" }, "node_modules/browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -655,8 +940,7 @@ }, "node_modules/browserify-cipher": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "license": "MIT", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -665,8 +949,7 @@ }, "node_modules/browserify-des": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -676,8 +959,7 @@ }, "node_modules/browserify-rsa": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "license": "MIT", "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -685,8 +967,7 @@ }, "node_modules/browserify-sign": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "license": "ISC", "dependencies": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -701,8 +982,7 @@ }, "node_modules/browserify-sign/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -714,16 +994,14 @@ }, "node_modules/browserify-zlib": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "license": "MIT", "dependencies": { "pako": "~1.0.5" } }, "node_modules/buffer": { "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "license": "MIT", "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -732,18 +1010,26 @@ }, "node_modules/buffer-xor": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "license": "MIT" }, "node_modules/builtin-status-codes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/cipher-base": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -751,25 +1037,21 @@ }, "node_modules/colord": { "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/complex.js": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", - "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", + "license": "MIT", "engines": { "node": "*" }, @@ -780,34 +1062,27 @@ }, "node_modules/computer-modern": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/computer-modern/-/computer-modern-0.1.2.tgz", - "integrity": "sha512-qvW7/uUkNFjJT6DaM4NaLXrYSnkFdES8iJajX3xD2S7KRFYxxppFsEUM0+R7SLypEN/t/3TQ4zFBvj5i/MBL9A==" + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + "version": "1.2.0" }, "node_modules/constants-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "license": "MIT" }, "node_modules/create-ecdh": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -815,13 +1090,11 @@ }, "node_modules/create-ecdh/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "node_modules/create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -832,8 +1105,7 @@ }, "node_modules/create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -845,13 +1117,11 @@ }, "node_modules/crelt": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + "license": "MIT" }, "node_modules/crypto-browserify": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "license": "MIT", "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -871,8 +1141,7 @@ }, "node_modules/css-select": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -886,8 +1155,7 @@ }, "node_modules/css-what": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -895,33 +1163,24 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, "node_modules/d3-require": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/d3-require/-/d3-require-1.3.0.tgz", - "integrity": "sha512-XaNc2azaAwXhGjmCMtxlD+AowpMfLimVsAoTMpqrvb8CWoA4QqyV12mc4Ue6KSoDvfuS831tsumfhDYxGd4FGA==" + "license": "ISC" }, "node_modules/decimal.js": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + "license": "MIT" }, "node_modules/dequal": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/des.js": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -929,8 +1188,7 @@ }, "node_modules/diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -939,13 +1197,11 @@ }, "node_modules/diffie-hellman/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "node_modules/dom-serializer": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -957,8 +1213,7 @@ }, "node_modules/domain-browser": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "license": "MIT", "engines": { "node": ">=0.4", "npm": ">=1.2" @@ -966,19 +1221,17 @@ }, "node_modules/domelementtype": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -991,8 +1244,7 @@ }, "node_modules/domutils": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -1004,8 +1256,7 @@ }, "node_modules/elliptic": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -1018,44 +1269,38 @@ }, "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "node_modules/email-addresses": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", - "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/entities": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/evp_bytestokey": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -1063,8 +1308,7 @@ }, "node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -1074,16 +1318,14 @@ }, "node_modules/extend-shallow/node_modules/is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/file-selector": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.5.0.tgz", - "integrity": "sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA==", + "license": "MIT", "dependencies": { "tslib": "^2.0.3" }, @@ -1093,18 +1335,16 @@ }, "node_modules/filename-reserved-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/filenamify": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", "dev": true, + "license": "MIT", "dependencies": { "filename-reserved-regex": "^2.0.0", "strip-outer": "^1.0.1", @@ -1119,9 +1359,8 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -1136,9 +1375,8 @@ }, "node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -1149,16 +1387,14 @@ }, "node_modules/for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/fraction.js": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "license": "MIT", "engines": { "node": "*" }, @@ -1169,8 +1405,7 @@ }, "node_modules/framer-motion": { "version": "6.5.1", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", - "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", + "license": "MIT", "dependencies": { "@motionone/dom": "10.12.0", "framesync": "6.0.1", @@ -1189,17 +1424,15 @@ }, "node_modules/framesync": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", - "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", + "license": "MIT", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/fs-extra": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -1211,23 +1444,37 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/gh-pages": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", - "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", "dev": true, + "license": "MIT", "dependencies": { "async": "^2.6.1", "commander": "^2.18.0", @@ -1247,9 +1494,8 @@ }, "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1267,9 +1513,8 @@ }, "node_modules/globby": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^1.0.1", "glob": "^7.0.3", @@ -1283,22 +1528,49 @@ }, "node_modules/glsl-tokenizer": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz", - "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", + "license": "MIT", "dependencies": { "through2": "^0.6.3" } }, "node_modules/graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/has": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/hash-base": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -1310,8 +1582,7 @@ }, "node_modules/hash-base/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -1323,8 +1594,7 @@ }, "node_modules/hash.js": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -1332,13 +1602,11 @@ }, "node_modules/hey-listen": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + "license": "MIT" }, "node_modules/hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -1347,13 +1615,10 @@ }, "node_modules/https-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + "license": "MIT" }, "node_modules/ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -1367,13 +1632,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1381,13 +1646,11 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -1397,8 +1660,7 @@ }, "node_modules/is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -1408,405 +1670,91 @@ }, "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "license": "MIT" }, "node_modules/jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/jsxgraph": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jsxgraph/-/jsxgraph-1.5.0.tgz", - "integrity": "sha512-mXsW1LG9AEZpiYDM+nScs5G5ZKw6xrQIrVLszRXeXFX+XYbS1Abx9oMmk7WMDbCXerYFzNo5/vZ9MRZpFeABpQ==", + "license": "(MIT OR LGPL-3.0-or-later)", "engines": { "node": ">=0.6.0" } }, "node_modules/katex": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.7.tgz", - "integrity": "sha512-Xk9C6oGKRwJTfqfIbtr0Kes9OSv6IFsuhFGc7tW4urlpMJtuh+7YhzU6YEG9n8gmWKcMAFzkp7nr+r69kV0zrA==", + "version": "0.16.8", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], + "license": "MIT", "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } - }, - "node_modules/katex/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/leva": { - "version": "0.9.34", - "resolved": "https://registry.npmjs.org/leva/-/leva-0.9.34.tgz", - "integrity": "sha512-hQmWAakOCuBXYIenJ7RaNIei5enDwHNNb6Gz5BUU3mZk+ElECdbvNJbmcMfkFAJslJw33MXRabt7OKIzItLLWw==", - "dependencies": { - "@radix-ui/react-portal": "^0.1.3", - "@radix-ui/react-tooltip": "0.1.6", - "@stitches/react": "1.2.8", - "@use-gesture/react": "^10.2.5", - "colord": "^2.9.2", - "dequal": "^2.0.2", - "merge-value": "^1.0.0", - "react-colorful": "^5.5.1", - "react-dropzone": "^12.0.0", - "v8n": "^1.3.3", - "zustand": "^3.6.9" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-portal": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-0.1.4.tgz", - "integrity": "sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-layout-effect": "0.1.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz", - "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "0.1.2" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz", - "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-use-layout-effect": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz", - "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-0.1.6.tgz", - "integrity": "sha512-0uaRpRmTCQo5yMUkDpv4LEDnaQDoeLXcNNhZonCZdbZBQ7ntvjURIWIigq1/pXZp0UX7oPpFzsXD9jUp8JT0WA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-id": "0.1.4", - "@radix-ui/react-popper": "0.1.3", - "@radix-ui/react-portal": "0.1.3", - "@radix-ui/react-presence": "0.1.1", - "@radix-ui/react-primitive": "0.1.3", - "@radix-ui/react-slot": "0.1.2", - "@radix-ui/react-use-controllable-state": "0.1.0", - "@radix-ui/react-use-escape-keydown": "0.1.0", - "@radix-ui/react-use-previous": "0.1.0", - "@radix-ui/react-use-rect": "0.1.1", - "@radix-ui/react-visually-hidden": "0.1.3" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-context": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz", - "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-id": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.4.tgz", - "integrity": "sha512-/hq5m/D0ZfJWOS7TLF+G0l08KDRs87LBE46JkAvgKkg1fW4jkucx9At9D9vauIPSbdNmww5kXEp566hMlA8eXA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "0.1.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-id/node_modules/@radix-ui/react-use-layout-effect": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz", - "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-popper": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-0.1.3.tgz", - "integrity": "sha512-2OV2YaJv7iTZexJY3HJ7B6Fs1A/3JXd3fRGU4JY0guACfGMD1C/jSgds505MKQOTiHE/quI6j3/q8yfzFjJR9g==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/popper": "0.1.0", - "@radix-ui/react-arrow": "0.1.3", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-primitive": "0.1.3", - "@radix-ui/react-use-rect": "0.1.1", - "@radix-ui/react-use-size": "0.1.0", - "@radix-ui/rect": "0.1.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-arrow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-0.1.3.tgz", - "integrity": "sha512-9x1gRYdlUD5OUwY7L+M+4FY/YltDSsrNSj8QXGPbxZxL5ghWXB/4lhyIGccCwk/e8ggfmQYv9SRNmn3LavPo3A==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.3" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-use-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-0.1.0.tgz", - "integrity": "sha512-TcZAsR+BYI46w/RbaSFCRACl+Jh6mDqhu6GS2r0iuJpIVrj8atff7qtTjmMmfGtEDNEjhl7DxN3pr1nTS/oruQ==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-portal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-0.1.3.tgz", - "integrity": "sha512-DrV+sPYLs0HhmX5/b7yRT6nLM9Nl6FtQe2KUG+46kiCOKQ+0XzNMO5hmeQtyq0mRf/qlC02rFu6OMsWpIqVsJg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.3", - "@radix-ui/react-use-layout-effect": "0.1.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-use-layout-effect": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz", - "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-primitive": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.3.tgz", - "integrity": "sha512-fcyADaaAx2jdqEDLsTs6aX50S3L1c9K9CC6XMpJpuXFJCU4n9PGTFDZRtY2gAoXXoRCPIBsklCopSmGb6SsDjQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "0.1.2" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz", - "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-controllable-state": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz", - "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-controllable-state/node_modules/@radix-ui/react-use-callback-ref": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz", - "integrity": "sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-escape-keydown": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz", - "integrity": "sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-escape-keydown/node_modules/@radix-ui/react-use-callback-ref": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz", - "integrity": "sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-previous": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-0.1.0.tgz", - "integrity": "sha512-0fxNc33rYnCzDMPSiSnfS8YklnxQo8WqbAQXPAgIaaA1jRu2qFB916PL4qCIW+avcAAqFD38vWhqDqcVmBharA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-use-rect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz", - "integrity": "sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/rect": "0.1.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0" + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" } }, - "node_modules/leva/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-visually-hidden": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-0.1.3.tgz", - "integrity": "sha512-dPU6ZR2WQ/W9qv7E1Y8/I8ymqG+8sViU6dQQ6sfr2/8yGr0I4mmI7ywTnqXaE+YS9gHLEZHdQcEqTNESg6YfdQ==", + "node_modules/leva": { + "version": "0.9.35", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.3" + "@radix-ui/react-portal": "^1.0.2", + "@radix-ui/react-tooltip": "^1.0.5", + "@stitches/react": "^1.2.8", + "@use-gesture/react": "^10.2.5", + "colord": "^2.9.2", + "dequal": "^2.0.2", + "merge-value": "^1.0.0", + "react-colorful": "^5.5.1", + "react-dropzone": "^12.0.0", + "v8n": "^1.3.3", + "zustand": "^3.6.9" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, "node_modules/linkify-it": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "license": "MIT", "dependencies": { "uc.micro": "^1.0.1" } }, "node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -1816,13 +1764,11 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -1831,14 +1777,14 @@ } }, "node_modules/mafs": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/mafs/-/mafs-0.16.0.tgz", - "integrity": "sha512-9ZZo5JrFFly17vRJrlNqd5bQHv5aryV/vlWKa+loz2yLBMwYHTcBripUfq2G/zuDJPeuDqBHCwGz2ZAslTYAtQ==", + "version": "0.17.1", + "license": "MIT", "dependencies": { "@react-hook/resize-observer": "^1.2.6", "@swc/helpers": "^0.4.14", "@use-gesture/react": "^10.2.23", "computer-modern": "^0.1.2", + "katex": "^0.16.4", "tiny-invariant": "^1.3.1", "use-resize-observer": "^9.0.0" }, @@ -1849,9 +1795,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -1864,17 +1809,15 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/markdown-it": { "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "~2.1.0", @@ -1888,28 +1831,23 @@ }, "node_modules/markdown-it-block-image": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/markdown-it-block-image/-/markdown-it-block-image-0.0.3.tgz", - "integrity": "sha512-+esbdLegMSWmIRGwVncj5ZwVi5K1qt894uXfnkZIyMFC7ssbv7aR7YEVI16w0PdFWow1HmBNUZ4chl0vScjoIA==" + "license": "MIT" }, "node_modules/markdown-it-footnote": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-3.0.3.tgz", - "integrity": "sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==" + "license": "MIT" }, "node_modules/markdown-it-texmath": { "version": "0.9.7", - "resolved": "https://registry.npmjs.org/markdown-it-texmath/-/markdown-it-texmath-0.9.7.tgz", - "integrity": "sha512-2oZ7WO+xQCvQpfCwxUsCzDpz5jRjiY+FbSJSVz+66+Z9NoPR7ljzUNaOp1CDHYj0JWx+drQLxO0XUjuSsuqc0A==" + "license": "MIT" }, "node_modules/markdown-it-toc-done-right": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/markdown-it-toc-done-right/-/markdown-it-toc-done-right-4.2.0.tgz", - "integrity": "sha512-UB/IbzjWazwTlNAX0pvWNlJS8NKsOQ4syrXZQ/C72j+jirrsjVRT627lCaylrKJFBQWfRsPmIVQie8x38DEhAQ==" + "license": "MIT" }, "node_modules/mathbox": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mathbox/-/mathbox-2.3.1.tgz", - "integrity": "sha512-DtTa/zvFVVhaMsiROAXRByq8BpPJxnhAx2JaGmiCSOCaJEfzeuJycOAPyBw9s3OdzRY9NWyvoq79k0xQFsxHMg==", + "license": "MIT", "dependencies": { "css-select": "^4.2.1", "lodash": "^4.17.21", @@ -1921,22 +1859,20 @@ } }, "node_modules/mathbox-react": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/mathbox-react/-/mathbox-react-0.2.2.tgz", - "integrity": "sha512-R9wi1oJpFI/TqhfujTibjuz9/m5Mzl9hS/wbCeSKWrTUAj9I5+oIt3uDP0toTrcoawvPmA9LTiNnZUSdAxCc4w==", + "version": "0.0.14", + "license": "ISC", "dependencies": { "lodash": "^4.17.21" }, "peerDependencies": { - "mathbox": "^2.3.1", + "mathbox": "^2.2.1", "react": "^17.0.2 || ^18.0.0", "three": ">=0.118.0" } }, "node_modules/mathlive": { "version": "0.86.1", - "resolved": "https://registry.npmjs.org/mathlive/-/mathlive-0.86.1.tgz", - "integrity": "sha512-xkObr7S/0WwD8l4z/pdFREWueFDgqRd9wYi8vGUEFiC0fiRxW1kQlzQMNb5Xs0UokoOq7yR/2mGf3wHX1ekmYQ==", + "license": "MIT", "engines": { "node": ">=16.14.2", "npm": ">=8.5.0" @@ -1948,8 +1884,7 @@ }, "node_modules/md5.js": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -1958,13 +1893,11 @@ }, "node_modules/mdurl": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + "license": "MIT" }, "node_modules/merge-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/merge-value/-/merge-value-1.0.0.tgz", - "integrity": "sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==", + "license": "MIT", "dependencies": { "get-value": "^2.0.6", "is-extendable": "^1.0.0", @@ -1977,8 +1910,7 @@ }, "node_modules/miller-rabin": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -1989,24 +1921,20 @@ }, "node_modules/miller-rabin/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "license": "ISC" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "license": "MIT" }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2016,8 +1944,7 @@ }, "node_modules/mixin-deep": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "license": "MIT", "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -2028,8 +1955,7 @@ }, "node_modules/node-libs-browser": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "license": "MIT", "dependencies": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", @@ -2058,13 +1984,11 @@ }, "node_modules/node-libs-browser/node_modules/punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + "license": "MIT" }, "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -2074,36 +1998,38 @@ }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.12.3", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/odex": { "version": "3.0.0-rc.4", - "resolved": "https://registry.npmjs.org/odex/-/odex-3.0.0-rc.4.tgz", - "integrity": "sha512-NPpR3eFHUJWQWYT9VParetnYF2bVe1p9iel1PHk2PLGgOdfXd7tr67XJi6x6fVzDmoKnUv1e9AtRtdwLxg2Z2Q==" + "license": "BSD-2-Clause" }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/os-browserify": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + "license": "MIT" }, "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, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2116,9 +2042,8 @@ }, "node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -2128,22 +2053,19 @@ }, "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, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pako": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "license": "(MIT AND Zlib)" }, "node_modules/parse-asn1": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "license": "ISC", "dependencies": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -2154,31 +2076,27 @@ }, "node_modules/path-browserify": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pbkdf2": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "license": "MIT", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -2192,27 +2110,24 @@ }, "node_modules/pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, + "license": "MIT", "dependencies": { "pinkie": "^2.0.0" }, @@ -2222,9 +2137,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -2234,8 +2148,7 @@ }, "node_modules/popmotion": { "version": "11.0.3", - "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz", - "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==", + "license": "MIT", "dependencies": { "framesync": "6.0.1", "hey-listen": "^1.0.8", @@ -2245,21 +2158,18 @@ }, "node_modules/process": { "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", "engines": { "node": ">= 0.6.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "license": "MIT" }, "node_modules/prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -2268,8 +2178,7 @@ }, "node_modules/public-encrypt": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -2281,46 +2190,44 @@ }, "node_modules/public-encrypt/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "node_modules/punycode": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "node_modules/qs": { + "version": "6.11.2", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { - "node": ">=0.4.x" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/querystring-es3": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "engines": { "node": ">=0.4.x" } }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/randomfill": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "license": "MIT", "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -2328,8 +2235,7 @@ }, "node_modules/react": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, @@ -2339,8 +2245,7 @@ }, "node_modules/react-colorful": { "version": "5.6.1", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", - "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "license": "MIT", "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" @@ -2348,8 +2253,7 @@ }, "node_modules/react-dom": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -2360,8 +2264,7 @@ }, "node_modules/react-dropzone": { "version": "12.1.0", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-12.1.0.tgz", - "integrity": "sha512-iBYHA1rbopIvtzokEX4QubO6qk5IF/x3BtKGu74rF2JkQDXnwC4uO/lHKpaw4PJIV6iIAYOlwLv2FpiGyqHNog==", + "license": "MIT", "dependencies": { "attr-accept": "^2.2.2", "file-selector": "^0.5.0", @@ -2376,13 +2279,11 @@ }, "node_modules/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==" + "license": "MIT" }, "node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -2395,34 +2296,29 @@ }, "node_modules/readable-stream/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==" + "license": "MIT" }, "node_modules/readable-stream/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==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/readline-sync": { "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/regenerator-runtime": { "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "license": "MIT" }, "node_modules/ripemd160": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -2430,8 +2326,6 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -2445,25 +2339,23 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "license": "MIT" }, "node_modules/scheduler": { "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/set-value": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -2476,21 +2368,18 @@ }, "node_modules/set-value/node_modules/is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "license": "MIT" }, "node_modules/sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -2501,8 +2390,7 @@ }, "node_modules/shadergraph": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/shadergraph/-/shadergraph-2.1.3.tgz", - "integrity": "sha512-98Objdkj8OTNIuYG5wxkAZTdPsBEGXuDq8yveqQh0QVzBBkEObb6RA3sMozlOiWPQXycQ+Ng4ZmT2OJiokYplQ==", + "license": "MIT", "dependencies": { "@sicmutils/glsl-parser": "^2.0.1", "glsl-tokenizer": "^2.1.5" @@ -2513,8 +2401,7 @@ }, "node_modules/shadow-cljs": { "version": "2.23.1", - "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.23.1.tgz", - "integrity": "sha512-qPI8FyRSmOJgl24svvrWvA/29fA94CVo89X0v6B4eaH/uex5NBSBZqyw58Bo4ZBu0YUxEXnwB8BSHLgmAzf8LQ==", + "license": "ISC", "dependencies": { "node-libs-browser": "^2.2.1", "readline-sync": "^1.4.7", @@ -2532,29 +2419,37 @@ }, "node_modules/shadow-cljs-jar": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz", - "integrity": "sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA==" + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "license": "MIT", "dependencies": { "source-map": "^0.5.6" } }, "node_modules/split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "license": "MIT", "dependencies": { "extend-shallow": "^3.0.0" }, @@ -2564,8 +2459,7 @@ }, "node_modules/split-string/node_modules/extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "license": "MIT", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -2576,13 +2470,11 @@ }, "node_modules/stats.js": { "version": "0.17.0", - "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", - "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" + "license": "MIT" }, "node_modules/stream-browserify": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "license": "MIT", "dependencies": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" @@ -2590,8 +2482,7 @@ }, "node_modules/stream-http": { "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "license": "MIT", "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", @@ -2602,17 +2493,15 @@ }, "node_modules/string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/strip-outer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.2" }, @@ -2622,27 +2511,24 @@ }, "node_modules/style-mod": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.3.tgz", - "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==" + "license": "MIT" }, "node_modules/style-value-types": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", - "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==", + "license": "MIT", "dependencies": { "hey-listen": "^1.0.8", "tslib": "^2.1.0" } }, "node_modules/three": { - "version": "0.149.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.149.0.tgz", - "integrity": "sha512-tohpUxPDht0qExRLDTM8sjRLc5d9STURNrdnK3w9A+V4pxaTBfKWWT/IqtiLfg23Vfc3Z+ImNfvRw1/0CtxrkQ==" + "version": "0.150.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.150.0.tgz", + "integrity": "sha512-12oqqBZom9fb5HtX3rD8qPVnamojuiN5Os7r0x8s3HQ+WHRwnEyzl2XU3aEKocsDkG++rkE9+HWzx77O59NXtw==" }, "node_modules/threestrap": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/threestrap/-/threestrap-0.5.1.tgz", - "integrity": "sha512-58Wq1NRw6r+clwZ59xL6BK4NXKZvLWS7TUCM5a2utOM9Dy5PFXv8pT+A9AWUxi735yWUXQ0l0Fddr8povBKOCw==", + "license": "MIT", "dependencies": { "stats.js": "^0.17.0" }, @@ -2652,8 +2538,7 @@ }, "node_modules/through2": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", + "license": "MIT", "dependencies": { "readable-stream": ">=1.0.33-1 <1.1.0-0", "xtend": ">=4.0.0 <4.1.0-0" @@ -2661,13 +2546,11 @@ }, "node_modules/through2/node_modules/isarray": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "license": "MIT" }, "node_modules/through2/node_modules/readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -2677,13 +2560,11 @@ }, "node_modules/through2/node_modules/string_decoder": { "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "license": "MIT" }, "node_modules/timers-browserify": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "license": "MIT", "dependencies": { "setimmediate": "^1.0.4" }, @@ -2693,19 +2574,16 @@ }, "node_modules/tiny-invariant": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + "license": "MIT" }, "node_modules/to-arraybuffer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" + "license": "MIT" }, "node_modules/trim-repeated": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.2" }, @@ -2714,47 +2592,40 @@ } }, "node_modules/tslib": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", - "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + "version": "2.5.3", + "license": "0BSD" }, "node_modules/tty-browserify": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" + "license": "MIT" }, "node_modules/uc.micro": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + "license": "MIT" }, "node_modules/universalify": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "version": "0.11.1", + "license": "MIT", "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "punycode": "^1.4.1", + "qs": "^6.11.0" } }, "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + "version": "1.4.1", + "license": "MIT" }, "node_modules/use-resize-observer": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz", - "integrity": "sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==", + "license": "MIT", "dependencies": { "@juggle/resize-observer": "^3.3.1" }, @@ -2765,54 +2636,45 @@ }, "node_modules/use-sync-external-store": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/util": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "license": "MIT", "dependencies": { "inherits": "2.0.3" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "license": "MIT" }, "node_modules/util/node_modules/inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "license": "ISC" }, "node_modules/v8n": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/v8n/-/v8n-1.5.1.tgz", - "integrity": "sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A==" + "license": "MIT" }, "node_modules/vh-sticky-table-header": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/vh-sticky-table-header/-/vh-sticky-table-header-1.2.1.tgz", - "integrity": "sha512-ZetSgFI6QYSp/iON1hU6LAyijW5kr/B+o7ndWegJ3B6vq/6na8Lat/vf6/VXdgtm/nsH8bgtXxRKz5dBU4YZdg==" + "license": "MIT" }, "node_modules/vm-browserify": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + "license": "MIT" }, "node_modules/w3c-keyname": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.7.tgz", - "integrity": "sha512-XB8aa62d4rrVfoZYQaYNy3fy+z4nrfy2ooea3/0BnBzXW0tSdZ+lRgjzBZhk0La0H6h8fVyYCxx/qkQcAIuvfg==" + "version": "2.2.8", + "license": "MIT" }, "node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2822,14 +2684,12 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ws": { "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -2848,16 +2708,14 @@ }, "node_modules/xtend": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", "engines": { "node": ">=0.4" } }, "node_modules/zustand": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", - "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", + "license": "MIT", "engines": { "node": ">=12.7.0" }, @@ -2873,17 +2731,13 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", - "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", + "version": "7.22.5", "requires": { "regenerator-runtime": "^0.13.11" } }, "@codemirror/autocomplete": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.7.1.tgz", - "integrity": "sha512-hSxf9S0uB+GV+gBsjY1FZNo53e1FFdzPceRfCfD1gWOnV6o21GfB5J5Wg9G/4h76XZMPrF0A6OCK/Rz5+V1egg==", + "version": "6.8.1", "requires": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -2893,8 +2747,6 @@ }, "@codemirror/commands": { "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.4.tgz", - "integrity": "sha512-42lmDqVH0ttfilLShReLXsDfASKLXzfyC36bzwcqzox9PlHulMcsUOfHXNo2X2aFMVNUoQ7j+d4q5bnfseYoOA==", "requires": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.2.0", @@ -2904,8 +2756,6 @@ }, "@codemirror/lang-css": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.0.tgz", - "integrity": "sha512-oyIdJM29AyRPM3+PPq1I2oIk8NpUfEN3kAM05XWDDs6o3gSneIKaVJifT2P+fqONLou2uIgXynFyMUDQvo/szA==", "requires": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -2915,9 +2765,7 @@ } }, "@codemirror/lang-html": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.3.tgz", - "integrity": "sha512-VKzQXEC8nL69Jg2hvAFPBwOdZNvL8tMFOrdFwWpU+wc6a6KEkndJ/19R5xSaglNX6v2bttm8uIEFYxdQDcIZVQ==", + "version": "6.4.5", "requires": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", @@ -2931,9 +2779,7 @@ } }, "@codemirror/lang-javascript": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.1.8.tgz", - "integrity": "sha512-5cIA6IOkslTu1DtldcYnj7hsBm3p+cD37qSaKvW1kV16M6q9ysKvKrveCOWgbrj4+ilSWRL2JtSLudbeB158xg==", + "version": "6.1.9", "requires": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", @@ -2946,8 +2792,6 @@ }, "@codemirror/lang-markdown": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.0.0.tgz", - "integrity": "sha512-ozJaO1W4WgGlwWOoYCSYzbVhhM0YM/4lAWLrNsBbmhh5Ztpl0qm4CgEQRl3t8/YcylTZYBIXiskui8sHNGd4dg==", "requires": { "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -2958,9 +2802,7 @@ } }, "@codemirror/language": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.7.0.tgz", - "integrity": "sha512-4SMwe6Fwn57klCUsVN0y4/h/iWT+XIXFEmop2lIHHuWO0ubjCrF3suqSZLyOQlznxkNnNbOOfKe5HQbQGCAmTg==", + "version": "6.8.0", "requires": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -2971,9 +2813,7 @@ } }, "@codemirror/lint": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.2.1.tgz", - "integrity": "sha512-y1muai5U/uUPAGRyHMx9mHuHLypPcHWxzlZGknp/U5Mdb5Ol8Q5ZLp67UqyTbNFJJ3unVxZ8iX3g1fMN79S1JQ==", + "version": "6.3.0", "requires": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -2981,9 +2821,7 @@ } }, "@codemirror/search": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.4.0.tgz", - "integrity": "sha512-zMDgaBXah+nMLK2dHz9GdCnGbQu+oaGRXS1qviqNZkvOCv/whp5XZFyoikLp/23PM9RBcbuKUUISUmQHM1eRHw==", + "version": "6.5.0", "requires": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -2991,14 +2829,10 @@ } }, "@codemirror/state": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.1.tgz", - "integrity": "sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==" + "version": "6.2.1" }, "@codemirror/view": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.12.0.tgz", - "integrity": "sha512-xNHvbJBc2v8JuEcIGOck6EUGShpP+TYGCEMVEVQMYxbFXfMhYnoF3znxB/2GgeKR0nrxBs+nhBupiTYQqCp2kw==", + "version": "6.14.0", "requires": { "@codemirror/state": "^6.1.4", "style-mod": "^4.0.0", @@ -3007,8 +2841,6 @@ }, "@cortex-js/compute-engine": { "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@cortex-js/compute-engine/-/compute-engine-0.12.3.tgz", - "integrity": "sha512-LuiSWMSlgsLFcRWm5ifR8ZeE9HXWOrJ+hE6F211eVI+S+w9SQQvZhhCdUCBusyspW0+29R8lksJPH4qFFr3Xag==", "requires": { "complex.js": "^2.1.1", "decimal.js": "^10.4.0" @@ -3016,8 +2848,6 @@ }, "@emotion/is-prop-valid": { "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", "optional": true, "requires": { "@emotion/memoize": "0.7.4" @@ -3025,33 +2855,38 @@ }, "@emotion/memoize": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", "optional": true }, + "@floating-ui/core": { + "version": "1.3.1" + }, + "@floating-ui/dom": { + "version": "1.4.2", + "requires": { + "@floating-ui/core": "^1.3.1" + } + }, + "@floating-ui/react-dom": { + "version": "2.0.1", + "requires": { + "@floating-ui/dom": "^1.3.0" + } + }, "@juggle/resize-observer": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", - "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" + "version": "3.4.0" }, "@lezer/common": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.2.tgz", - "integrity": "sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==" + "version": "1.0.3" }, "@lezer/css": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.2.tgz", - "integrity": "sha512-5TKMAReXukfEmIiZprDlGfZVfOOCyEStFi1YLzxclm9H3G/HHI49/2wzlRT6bQw5r7PoZVEtjTItEkb/UuZQyg==", "requires": { "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "@lezer/generator": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-1.2.3.tgz", - "integrity": "sha512-xRmNryYbJpWs7novjWtQLCGHOj71B4X1QHQ4SgJqwm11tl6COEVAGhuFTXKX16JMJUhumdXaX8We6hEMd4clDg==", + "version": "1.3.0", "requires": { "@lezer/common": "^1.0.2", "@lezer/lr": "^1.3.0" @@ -3059,16 +2894,12 @@ }, "@lezer/highlight": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.6.tgz", - "integrity": "sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==", "requires": { "@lezer/common": "^1.0.0" } }, "@lezer/html": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.4.tgz", - "integrity": "sha512-HdJYMVZcT4YsMo7lW3ipL4NoyS2T67kMPuSVS5TgLGqmaCjEU/D6xv7zsa1ktvTK5lwk7zzF1e3eU6gBZIPm5g==", "requires": { "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", @@ -3077,25 +2908,19 @@ }, "@lezer/javascript": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.3.tgz", - "integrity": "sha512-k7Eo9z9B1supZ5cCD4ilQv/RZVN30eUQL+gGbr6ybrEY3avBAL5MDiYi2aa23Aj0A79ry4rJRvPAwE2TM8bd+A==", "requires": { "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "@lezer/lr": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.5.tgz", - "integrity": "sha512-Kye0rxYBi+OdToLUN2tQfeH5VIrpESC6XznuvxmIxbO1lz6M1C90vkjMNYoX1SfbUcuvoPXvLYsBquZ//77zVQ==", + "version": "1.3.7", "requires": { "@lezer/common": "^1.0.0" } }, "@lezer/markdown": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.0.2.tgz", - "integrity": "sha512-8CY0OoZ6V5EzPjSPeJ4KLVbtXdLBd8V6sRCooN5kHnO28ytreEGTyrtU/zUwo/XLRzGr/e1g44KlzKi3yWGB5A==", + "version": "1.0.3", "requires": { "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0" @@ -3103,8 +2928,6 @@ }, "@motionone/animation": { "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz", - "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==", "requires": { "@motionone/easing": "^10.15.1", "@motionone/types": "^10.15.1", @@ -3114,8 +2937,6 @@ }, "@motionone/dom": { "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", - "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", "requires": { "@motionone/animation": "^10.12.0", "@motionone/generators": "^10.12.0", @@ -3127,8 +2948,6 @@ }, "@motionone/easing": { "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz", - "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==", "requires": { "@motionone/utils": "^10.15.1", "tslib": "^2.3.1" @@ -3136,8 +2955,6 @@ }, "@motionone/generators": { "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz", - "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==", "requires": { "@motionone/types": "^10.15.1", "@motionone/utils": "^10.15.1", @@ -3145,14 +2962,10 @@ } }, "@motionone/types": { - "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz", - "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==" + "version": "10.15.1" }, "@motionone/utils": { "version": "10.15.1", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz", - "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==", "requires": { "@motionone/types": "^10.15.1", "hey-listen": "^1.0.8", @@ -3161,8 +2974,6 @@ }, "@nextjournal/lang-clojure": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nextjournal/lang-clojure/-/lang-clojure-1.0.0.tgz", - "integrity": "sha512-gOCV71XrYD0DhwGoPMWZmZ0r92/lIHsqQu9QWdpZYYBwiChNwMO4sbVMP7eTuAqffFB2BTtCSC+1skSH9d3bNg==", "requires": { "@codemirror/language": "^6.0.0", "@nextjournal/lezer-clojure": "1.0.0" @@ -3170,81 +2981,179 @@ }, "@nextjournal/lezer-clojure": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nextjournal/lezer-clojure/-/lezer-clojure-1.0.0.tgz", - "integrity": "sha512-VZyuGu4zw5mkTOwQBTaGVNWmsOZAPw5ZRxu1/Knk/Xfs7EDBIogwIs5UXTYkuECX5ZQB8eOB+wKA2pc7VyqaZQ==", "requires": { "@lezer/lr": "^1.0.0" } }, - "@radix-ui/popper": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/popper/-/popper-0.1.0.tgz", - "integrity": "sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ==", + "@radix-ui/primitive": { + "version": "1.0.1", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-arrow": { + "version": "1.0.3", "requires": { "@babel/runtime": "^7.13.10", - "csstype": "^3.0.4" + "@radix-ui/react-primitive": "1.0.3" } }, - "@radix-ui/primitive": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz", - "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==", + "@radix-ui/react-compose-refs": { + "version": "1.0.1", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-context": { + "version": "1.0.1", "requires": { "@babel/runtime": "^7.13.10" } }, + "@radix-ui/react-dismissable-layer": { + "version": "1.0.4", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + } + }, + "@radix-ui/react-id": { + "version": "1.0.1", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-popper": { + "version": "1.1.2", + "requires": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + } + }, + "@radix-ui/react-portal": { + "version": "1.0.3", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, "@radix-ui/react-presence": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-0.1.1.tgz", - "integrity": "sha512-LsL+NcWDpFUAYCmXeH02o4pgqcSLpwxP84UIjCtpIKrsPe2vLuhcp79KC/jZJeXz+of2lUpMAxpM+eCpxFZtlg==", + "version": "1.0.1", "requires": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-use-layout-effect": "0.1.0" - }, - "dependencies": { - "@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-use-layout-effect": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz", - "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - } + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-primitive": { + "version": "1.0.3", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + } + }, + "@radix-ui/react-slot": { + "version": "1.0.2", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + } + }, + "@radix-ui/react-tooltip": { + "version": "1.0.6", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.2", + "@radix-ui/react-portal": "1.0.3", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + } + }, + "@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-rect": { + "version": "1.0.1", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + } + }, + "@radix-ui/react-use-size": { + "version": "1.0.1", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" } }, "@radix-ui/rect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-0.1.1.tgz", - "integrity": "sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw==", + "version": "1.0.1", "requires": { "@babel/runtime": "^7.13.10" } }, "@react-hook/latest": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz", - "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==", "requires": {} }, "@react-hook/passive-layout-effect": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz", - "integrity": "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==", "requires": {} }, "@react-hook/resize-observer": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@react-hook/resize-observer/-/resize-observer-1.2.6.tgz", - "integrity": "sha512-DlBXtLSW0DqYYTW3Ft1/GQFZlTdKY5VAFIC4+km6IK5NiPPDFchGbEJm1j6pSgMqPRHbUQgHJX7RaR76ic1LWA==", "requires": { "@juggle/resize-observer": "^3.3.1", "@react-hook/latest": "^1.0.2", @@ -3253,48 +3162,34 @@ }, "@sicmutils/glsl-parser": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@sicmutils/glsl-parser/-/glsl-parser-2.0.1.tgz", - "integrity": "sha512-svY++7/9A7oYE/BJtURM+Y77uvVWZ+PXfKuzZmbiQSWgBJRChUU3AHt8QXmmt4GFIXeVHV1zuSwjYpluU2WjXQ==", "requires": { "glsl-tokenizer": "^2.1.4" } }, "@stitches/react": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz", - "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==", "requires": {} }, "@swc/helpers": { "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", "requires": { "tslib": "^2.4.0" } }, "@use-gesture/core": { - "version": "10.2.27", - "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.2.27.tgz", - "integrity": "sha512-V4XV7hn9GAD2MYu8yBBVi5iuWBsAMfjPRMsEVzoTNGYH72tf0kFP+OKqGKc8YJFQIJx6yj+AOqxmEHOmx2/MEA==" + "version": "10.2.27" }, "@use-gesture/react": { "version": "10.2.27", - "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.2.27.tgz", - "integrity": "sha512-7E5vnWCxeslWlxwZ8uKIcnUZVMTRMZ8cvSnLLKF1NkyNb3PnNiAzoXM4G1vTKJKRhgOTeI6wK1YsEpwo9ABV5w==", "requires": { "@use-gesture/core": "10.2.27" } }, "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "version": "2.0.1" }, "array-union": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "requires": { "array-uniq": "^1.0.1" @@ -3302,14 +3197,10 @@ }, "array-uniq": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, "asn1.js": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -3318,30 +3209,22 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "assert": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" + "version": "2.0.1" }, "util": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "requires": { "inherits": "2.0.1" } @@ -3349,49 +3232,33 @@ } }, "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + "version": "1.0.0" }, "async": { "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" } }, "attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" + "version": "2.2.2" }, "balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "version": "1.5.1" }, "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "version": "5.2.1" }, "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "version": "1.0.0" }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -3399,14 +3266,10 @@ } }, "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "version": "1.1.0" }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -3418,8 +3281,6 @@ }, "browserify-cipher": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -3428,8 +3289,6 @@ }, "browserify-des": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -3439,8 +3298,6 @@ }, "browserify-rsa": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "requires": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -3448,8 +3305,6 @@ }, "browserify-sign": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -3464,8 +3319,6 @@ "dependencies": { "readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -3476,16 +3329,12 @@ }, "browserify-zlib": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "requires": { "pako": "~1.0.5" } }, "buffer": { "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -3493,92 +3342,69 @@ } }, "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "version": "1.0.3" }, "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + "version": "3.0.0" + }, + "call-bind": { + "version": "1.0.2", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } }, "cipher-base": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, "colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "version": "2.9.3" }, "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 }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "complex.js": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", - "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==" + "version": "2.1.1" }, "computer-modern": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/computer-modern/-/computer-modern-0.1.2.tgz", - "integrity": "sha512-qvW7/uUkNFjJT6DaM4NaLXrYSnkFdES8iJajX3xD2S7KRFYxxppFsEUM0+R7SLypEN/t/3TQ4zFBvj5i/MBL9A==" + "version": "0.1.2" }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + "version": "1.2.0" }, "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + "version": "1.0.0" }, "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "version": "1.0.3" }, "create-ecdh": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "requires": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -3589,8 +3415,6 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -3601,14 +3425,10 @@ } }, "crelt": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + "version": "1.0.6" }, "crypto-browserify": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -3625,8 +3445,6 @@ }, "css-select": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "requires": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -3636,34 +3454,19 @@ } }, "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - }, - "csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "6.1.0" }, "d3-require": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/d3-require/-/d3-require-1.3.0.tgz", - "integrity": "sha512-XaNc2azaAwXhGjmCMtxlD+AowpMfLimVsAoTMpqrvb8CWoA4QqyV12mc4Ue6KSoDvfuS831tsumfhDYxGd4FGA==" + "version": "1.3.0" }, "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + "version": "10.4.3" }, "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + "version": "2.0.3" }, "des.js": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -3671,8 +3474,6 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -3680,16 +3481,12 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "dom-serializer": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -3697,27 +3494,19 @@ } }, "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + "version": "1.2.0" }, "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + "version": "2.3.0" }, "domhandler": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "requires": { "domelementtype": "^2.2.0" } }, "domutils": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "requires": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -3726,8 +3515,6 @@ }, "elliptic": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -3739,38 +3526,26 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "email-addresses": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", - "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", "dev": true }, "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + "version": "2.1.0" }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "version": "3.3.0" }, "evp_bytestokey": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -3778,37 +3553,27 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" }, "dependencies": { "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + "version": "0.1.1" } } }, "file-selector": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.5.0.tgz", - "integrity": "sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA==", "requires": { "tslib": "^2.0.3" } }, "filename-reserved-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true }, "filenamify": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", "dev": true, "requires": { "filename-reserved-regex": "^2.0.0", @@ -3818,8 +3583,6 @@ }, "find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -3829,8 +3592,6 @@ }, "find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -3838,19 +3599,13 @@ } }, "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + "version": "1.0.2" }, "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" + "version": "4.2.0" }, "framer-motion": { "version": "6.5.1", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", - "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", "requires": { "@emotion/is-prop-valid": "^0.8.2", "@motionone/dom": "10.12.0", @@ -3863,16 +3618,12 @@ }, "framesync": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", - "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", "requires": { "tslib": "^2.1.0" } }, "fs-extra": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -3882,19 +3633,25 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "function-bind": { + "version": "1.1.1" + }, + "get-intrinsic": { + "version": "1.2.1", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" + "version": "2.0.6" }, "gh-pages": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", - "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", "dev": true, "requires": { "async": "^2.6.1", @@ -3908,8 +3665,6 @@ }, "glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3922,8 +3677,6 @@ }, "globby": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, "requires": { "array-union": "^1.0.1", @@ -3935,22 +3688,28 @@ }, "glsl-tokenizer": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz", - "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", "requires": { "through2": "^0.6.3" } }, "graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "has": { + "version": "1.0.3", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1" + }, + "has-symbols": { + "version": "1.0.3" + }, "hash-base": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "requires": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -3959,8 +3718,6 @@ "dependencies": { "readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -3971,22 +3728,16 @@ }, "hash.js": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" } }, "hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + "version": "1.0.8" }, "hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -3994,19 +3745,13 @@ } }, "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + "version": "1.0.0" }, "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "version": "1.2.1" }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -4014,83 +3759,59 @@ } }, "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "version": "2.0.4" }, "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { "isobject": "^3.0.1" } }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "version": "1.0.0" }, "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "version": "2.0.0" }, "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + "version": "3.0.1" }, "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "version": "4.0.0" }, "jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "requires": { "graceful-fs": "^4.1.6" } }, "jsxgraph": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jsxgraph/-/jsxgraph-1.5.0.tgz", - "integrity": "sha512-mXsW1LG9AEZpiYDM+nScs5G5ZKw6xrQIrVLszRXeXFX+XYbS1Abx9oMmk7WMDbCXerYFzNo5/vZ9MRZpFeABpQ==" + "version": "1.5.0" }, "katex": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.7.tgz", - "integrity": "sha512-Xk9C6oGKRwJTfqfIbtr0Kes9OSv6IFsuhFGc7tW4urlpMJtuh+7YhzU6YEG9n8gmWKcMAFzkp7nr+r69kV0zrA==", + "version": "0.16.8", "requires": { "commander": "^8.3.0" }, "dependencies": { "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + "version": "8.3.0" } } }, "leva": { - "version": "0.9.34", - "resolved": "https://registry.npmjs.org/leva/-/leva-0.9.34.tgz", - "integrity": "sha512-hQmWAakOCuBXYIenJ7RaNIei5enDwHNNb6Gz5BUU3mZk+ElECdbvNJbmcMfkFAJslJw33MXRabt7OKIzItLLWw==", + "version": "0.9.35", "requires": { - "@radix-ui/react-portal": "^0.1.3", - "@radix-ui/react-tooltip": "0.1.6", - "@stitches/react": "1.2.8", + "@radix-ui/react-portal": "^1.0.2", + "@radix-ui/react-tooltip": "^1.0.5", + "@stitches/react": "^1.2.8", "@use-gesture/react": "^10.2.5", "colord": "^2.9.2", "dequal": "^2.0.2", @@ -4099,303 +3820,44 @@ "react-dropzone": "^12.0.0", "v8n": "^1.3.3", "zustand": "^3.6.9" - }, - "dependencies": { - "@radix-ui/react-portal": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-0.1.4.tgz", - "integrity": "sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-layout-effect": "0.1.0" - }, - "dependencies": { - "@radix-ui/react-primitive": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz", - "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "0.1.2" - }, - "dependencies": { - "@radix-ui/react-slot": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz", - "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0" - }, - "dependencies": { - "@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - } - } - } - } - }, - "@radix-ui/react-use-layout-effect": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz", - "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - } - } - }, - "@radix-ui/react-tooltip": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-0.1.6.tgz", - "integrity": "sha512-0uaRpRmTCQo5yMUkDpv4LEDnaQDoeLXcNNhZonCZdbZBQ7ntvjURIWIigq1/pXZp0UX7oPpFzsXD9jUp8JT0WA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-id": "0.1.4", - "@radix-ui/react-popper": "0.1.3", - "@radix-ui/react-portal": "0.1.3", - "@radix-ui/react-presence": "0.1.1", - "@radix-ui/react-primitive": "0.1.3", - "@radix-ui/react-slot": "0.1.2", - "@radix-ui/react-use-controllable-state": "0.1.0", - "@radix-ui/react-use-escape-keydown": "0.1.0", - "@radix-ui/react-use-previous": "0.1.0", - "@radix-ui/react-use-rect": "0.1.1", - "@radix-ui/react-visually-hidden": "0.1.3" - }, - "dependencies": { - "@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-context": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz", - "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-id": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.4.tgz", - "integrity": "sha512-/hq5m/D0ZfJWOS7TLF+G0l08KDRs87LBE46JkAvgKkg1fW4jkucx9At9D9vauIPSbdNmww5kXEp566hMlA8eXA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "0.1.0" - }, - "dependencies": { - "@radix-ui/react-use-layout-effect": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz", - "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - } - } - }, - "@radix-ui/react-popper": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-0.1.3.tgz", - "integrity": "sha512-2OV2YaJv7iTZexJY3HJ7B6Fs1A/3JXd3fRGU4JY0guACfGMD1C/jSgds505MKQOTiHE/quI6j3/q8yfzFjJR9g==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/popper": "0.1.0", - "@radix-ui/react-arrow": "0.1.3", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-primitive": "0.1.3", - "@radix-ui/react-use-rect": "0.1.1", - "@radix-ui/react-use-size": "0.1.0", - "@radix-ui/rect": "0.1.1" - }, - "dependencies": { - "@radix-ui/react-arrow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-0.1.3.tgz", - "integrity": "sha512-9x1gRYdlUD5OUwY7L+M+4FY/YltDSsrNSj8QXGPbxZxL5ghWXB/4lhyIGccCwk/e8ggfmQYv9SRNmn3LavPo3A==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.3" - } - }, - "@radix-ui/react-use-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-0.1.0.tgz", - "integrity": "sha512-TcZAsR+BYI46w/RbaSFCRACl+Jh6mDqhu6GS2r0iuJpIVrj8atff7qtTjmMmfGtEDNEjhl7DxN3pr1nTS/oruQ==", - "requires": { - "@babel/runtime": "^7.13.10" - } - } - } - }, - "@radix-ui/react-portal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-0.1.3.tgz", - "integrity": "sha512-DrV+sPYLs0HhmX5/b7yRT6nLM9Nl6FtQe2KUG+46kiCOKQ+0XzNMO5hmeQtyq0mRf/qlC02rFu6OMsWpIqVsJg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.3", - "@radix-ui/react-use-layout-effect": "0.1.0" - }, - "dependencies": { - "@radix-ui/react-use-layout-effect": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz", - "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - } - } - }, - "@radix-ui/react-primitive": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.3.tgz", - "integrity": "sha512-fcyADaaAx2jdqEDLsTs6aX50S3L1c9K9CC6XMpJpuXFJCU4n9PGTFDZRtY2gAoXXoRCPIBsklCopSmGb6SsDjQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "0.1.2" - } - }, - "@radix-ui/react-slot": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz", - "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0" - } - }, - "@radix-ui/react-use-controllable-state": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz", - "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" - }, - "dependencies": { - "@radix-ui/react-use-callback-ref": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz", - "integrity": "sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==", - "requires": { - "@babel/runtime": "^7.13.10" - } - } - } - }, - "@radix-ui/react-use-escape-keydown": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz", - "integrity": "sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" - }, - "dependencies": { - "@radix-ui/react-use-callback-ref": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz", - "integrity": "sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==", - "requires": { - "@babel/runtime": "^7.13.10" - } - } - } - }, - "@radix-ui/react-use-previous": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-0.1.0.tgz", - "integrity": "sha512-0fxNc33rYnCzDMPSiSnfS8YklnxQo8WqbAQXPAgIaaA1jRu2qFB916PL4qCIW+avcAAqFD38vWhqDqcVmBharA==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-use-rect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz", - "integrity": "sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/rect": "0.1.1" - } - }, - "@radix-ui/react-visually-hidden": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-0.1.3.tgz", - "integrity": "sha512-dPU6ZR2WQ/W9qv7E1Y8/I8ymqG+8sViU6dQQ6sfr2/8yGr0I4mmI7ywTnqXaE+YS9gHLEZHdQcEqTNESg6YfdQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.3" - } - } - } - } } }, "linkify-it": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", "requires": { "uc.micro": "^1.0.1" } }, "locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "version": "4.17.21" }, "loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } }, "mafs": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/mafs/-/mafs-0.16.0.tgz", - "integrity": "sha512-9ZZo5JrFFly17vRJrlNqd5bQHv5aryV/vlWKa+loz2yLBMwYHTcBripUfq2G/zuDJPeuDqBHCwGz2ZAslTYAtQ==", + "version": "0.17.1", "requires": { "@react-hook/resize-observer": "^1.2.6", "@swc/helpers": "^0.4.14", "@use-gesture/react": "^10.2.23", "computer-modern": "^0.1.2", + "katex": "^0.16.4", "tiny-invariant": "^1.3.1", "use-resize-observer": "^9.0.0" } }, "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" @@ -4403,16 +3865,12 @@ "dependencies": { "semver": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "markdown-it": { "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", "requires": { "argparse": "^2.0.1", "entities": "~2.1.0", @@ -4422,29 +3880,19 @@ } }, "markdown-it-block-image": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/markdown-it-block-image/-/markdown-it-block-image-0.0.3.tgz", - "integrity": "sha512-+esbdLegMSWmIRGwVncj5ZwVi5K1qt894uXfnkZIyMFC7ssbv7aR7YEVI16w0PdFWow1HmBNUZ4chl0vScjoIA==" + "version": "0.0.3" }, "markdown-it-footnote": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-3.0.3.tgz", - "integrity": "sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==" + "version": "3.0.3" }, "markdown-it-texmath": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/markdown-it-texmath/-/markdown-it-texmath-0.9.7.tgz", - "integrity": "sha512-2oZ7WO+xQCvQpfCwxUsCzDpz5jRjiY+FbSJSVz+66+Z9NoPR7ljzUNaOp1CDHYj0JWx+drQLxO0XUjuSsuqc0A==" + "version": "0.9.7" }, "markdown-it-toc-done-right": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/markdown-it-toc-done-right/-/markdown-it-toc-done-right-4.2.0.tgz", - "integrity": "sha512-UB/IbzjWazwTlNAX0pvWNlJS8NKsOQ4syrXZQ/C72j+jirrsjVRT627lCaylrKJFBQWfRsPmIVQie8x38DEhAQ==" + "version": "4.2.0" }, "mathbox": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mathbox/-/mathbox-2.3.1.tgz", - "integrity": "sha512-DtTa/zvFVVhaMsiROAXRByq8BpPJxnhAx2JaGmiCSOCaJEfzeuJycOAPyBw9s3OdzRY9NWyvoq79k0xQFsxHMg==", "requires": { "css-select": "^4.2.1", "lodash": "^4.17.21", @@ -4453,22 +3901,16 @@ } }, "mathbox-react": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/mathbox-react/-/mathbox-react-0.2.2.tgz", - "integrity": "sha512-R9wi1oJpFI/TqhfujTibjuz9/m5Mzl9hS/wbCeSKWrTUAj9I5+oIt3uDP0toTrcoawvPmA9LTiNnZUSdAxCc4w==", + "version": "0.0.14", "requires": { "lodash": "^4.17.21" } }, "mathlive": { - "version": "0.86.1", - "resolved": "https://registry.npmjs.org/mathlive/-/mathlive-0.86.1.tgz", - "integrity": "sha512-xkObr7S/0WwD8l4z/pdFREWueFDgqRd9wYi8vGUEFiC0fiRxW1kQlzQMNb5Xs0UokoOq7yR/2mGf3wHX1ekmYQ==" + "version": "0.86.1" }, "md5.js": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -4476,14 +3918,10 @@ } }, "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + "version": "1.0.1" }, "merge-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/merge-value/-/merge-value-1.0.0.tgz", - "integrity": "sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==", "requires": { "get-value": "^2.0.6", "is-extendable": "^1.0.0", @@ -4493,34 +3931,24 @@ }, "miller-rabin": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "version": "1.0.1" }, "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "version": "1.0.1" }, "minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4528,8 +3956,6 @@ }, "mixin-deep": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -4537,8 +3963,6 @@ }, "node-libs-browser": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "requires": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", @@ -4566,48 +3990,37 @@ }, "dependencies": { "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + "version": "1.4.1" } } }, "nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "requires": { "boolbase": "^1.0.0" } }, "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "version": "4.1.1" + }, + "object-inspect": { + "version": "1.12.3" }, "odex": { - "version": "3.0.0-rc.4", - "resolved": "https://registry.npmjs.org/odex/-/odex-3.0.0-rc.4.tgz", - "integrity": "sha512-NPpR3eFHUJWQWYT9VParetnYF2bVe1p9iel1PHk2PLGgOdfXd7tr67XJi6x6fVzDmoKnUv1e9AtRtdwLxg2Z2Q==" + "version": "3.0.0-rc.4" }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" } }, "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + "version": "0.3.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" @@ -4615,8 +4028,6 @@ }, "p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -4624,19 +4035,13 @@ }, "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 }, "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "version": "1.0.11" }, "parse-asn1": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "requires": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -4646,26 +4051,18 @@ } }, "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + "version": "0.0.1" }, "path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "pbkdf2": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -4676,20 +4073,14 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -4697,8 +4088,6 @@ }, "pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" @@ -4706,8 +4095,6 @@ }, "popmotion": { "version": "11.0.3", - "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz", - "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==", "requires": { "framesync": "6.0.1", "hey-listen": "^1.0.8", @@ -4716,19 +4103,13 @@ } }, "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + "version": "0.11.10" }, "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "version": "2.0.1" }, "prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -4737,8 +4118,6 @@ }, "public-encrypt": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -4749,39 +4128,30 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "version": "2.1.1" }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + "qs": { + "version": "6.11.2", + "requires": { + "side-channel": "^1.0.4" + } }, "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" + "version": "0.2.1" }, "randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { "safe-buffer": "^5.1.0" } }, "randomfill": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -4789,22 +4159,16 @@ }, "react": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "requires": { "loose-envify": "^1.1.0" } }, "react-colorful": { "version": "5.6.1", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", - "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", "requires": {} }, "react-dom": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "requires": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -4812,8 +4176,6 @@ }, "react-dropzone": { "version": "12.1.0", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-12.1.0.tgz", - "integrity": "sha512-iBYHA1rbopIvtzokEX4QubO6qk5IF/x3BtKGu74rF2JkQDXnwC4uO/lHKpaw4PJIV6iIAYOlwLv2FpiGyqHNog==", "requires": { "attr-accept": "^2.2.2", "file-selector": "^0.5.0", @@ -4821,14 +4183,10 @@ } }, "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==" + "version": "16.13.1" }, "readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -4840,14 +4198,10 @@ }, "dependencies": { "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==" + "version": "5.1.2" }, "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==", "requires": { "safe-buffer": "~5.1.0" } @@ -4855,46 +4209,32 @@ } }, "readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==" + "version": "1.4.10" }, "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.13.11" }, "ripemd160": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "version": "5.2.1" }, "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "version": "2.1.2" }, "scheduler": { "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "requires": { "loose-envify": "^1.1.0" } }, "set-value": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -4903,21 +4243,15 @@ }, "dependencies": { "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + "version": "0.1.1" } } }, "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "version": "1.0.5" }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -4925,8 +4259,6 @@ }, "shadergraph": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/shadergraph/-/shadergraph-2.1.3.tgz", - "integrity": "sha512-98Objdkj8OTNIuYG5wxkAZTdPsBEGXuDq8yveqQh0QVzBBkEObb6RA3sMozlOiWPQXycQ+Ng4ZmT2OJiokYplQ==", "requires": { "@sicmutils/glsl-parser": "^2.0.1", "glsl-tokenizer": "^2.1.5" @@ -4934,8 +4266,6 @@ }, "shadow-cljs": { "version": "2.23.1", - "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.23.1.tgz", - "integrity": "sha512-qPI8FyRSmOJgl24svvrWvA/29fA94CVo89X0v6B4eaH/uex5NBSBZqyw58Bo4ZBu0YUxEXnwB8BSHLgmAzf8LQ==", "requires": { "node-libs-browser": "^2.2.1", "readline-sync": "^1.4.7", @@ -4946,35 +4276,33 @@ } }, "shadow-cljs-jar": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz", - "integrity": "sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA==" + "version": "1.3.4" + }, + "side-channel": { + "version": "1.0.4", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + "version": "0.5.7" }, "source-map-support": { "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "requires": { "source-map": "^0.5.6" } }, "split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { "extend-shallow": "^3.0.0" }, "dependencies": { "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -4983,14 +4311,10 @@ } }, "stats.js": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", - "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" + "version": "0.17.0" }, "stream-browserify": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" @@ -4998,8 +4322,6 @@ }, "stream-http": { "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", @@ -5010,66 +4332,50 @@ }, "string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { "safe-buffer": "~5.2.0" } }, "strip-outer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.2" } }, "style-mod": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.3.tgz", - "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==" + "version": "4.0.3" }, "style-value-types": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", - "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==", "requires": { "hey-listen": "^1.0.8", "tslib": "^2.1.0" } }, "three": { - "version": "0.149.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.149.0.tgz", - "integrity": "sha512-tohpUxPDht0qExRLDTM8sjRLc5d9STURNrdnK3w9A+V4pxaTBfKWWT/IqtiLfg23Vfc3Z+ImNfvRw1/0CtxrkQ==" + "version": "0.150.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.150.0.tgz", + "integrity": "sha512-12oqqBZom9fb5HtX3rD8qPVnamojuiN5Os7r0x8s3HQ+WHRwnEyzl2XU3aEKocsDkG++rkE9+HWzx77O59NXtw==" }, "threestrap": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/threestrap/-/threestrap-0.5.1.tgz", - "integrity": "sha512-58Wq1NRw6r+clwZ59xL6BK4NXKZvLWS7TUCM5a2utOM9Dy5PFXv8pT+A9AWUxi735yWUXQ0l0Fddr8povBKOCw==", "requires": { "stats.js": "^0.17.0" } }, "through2": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", "requires": { "readable-stream": ">=1.0.33-1 <1.1.0-0", "xtend": ">=4.0.0 <4.1.0-0" }, "dependencies": { "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "version": "0.0.1" }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -5078,159 +4384,109 @@ } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "version": "0.10.31" } } }, "timers-browserify": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "requires": { "setimmediate": "^1.0.4" } }, "tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + "version": "1.3.1" }, "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" + "version": "1.0.1" }, "trim-repeated": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.2" } }, "tslib": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", - "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + "version": "2.5.3" }, "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" + "version": "0.0.0" }, "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + "version": "1.0.6" }, "universalify": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "version": "0.11.1", "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "punycode": "^1.4.1", + "qs": "^6.11.0" }, "dependencies": { "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + "version": "1.4.1" } } }, "use-resize-observer": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz", - "integrity": "sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==", "requires": { "@juggle/resize-observer": "^3.3.1" } }, "use-sync-external-store": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", "requires": {} }, "util": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "requires": { "inherits": "2.0.3" }, "dependencies": { "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "version": "2.0.3" } } }, "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "version": "1.0.2" }, "v8n": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/v8n/-/v8n-1.5.1.tgz", - "integrity": "sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A==" + "version": "1.5.1" }, "vh-sticky-table-header": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/vh-sticky-table-header/-/vh-sticky-table-header-1.2.1.tgz", - "integrity": "sha512-ZetSgFI6QYSp/iON1hU6LAyijW5kr/B+o7ndWegJ3B6vq/6na8Lat/vf6/VXdgtm/nsH8bgtXxRKz5dBU4YZdg==" + "version": "1.2.1" }, "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + "version": "1.1.2" }, "w3c-keyname": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.7.tgz", - "integrity": "sha512-XB8aa62d4rrVfoZYQaYNy3fy+z4nrfy2ooea3/0BnBzXW0tSdZ+lRgjzBZhk0La0H6h8fVyYCxx/qkQcAIuvfg==" + "version": "2.2.8" }, "which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { "isexe": "^2.0.0" } }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "ws": { "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "requires": {} }, "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "version": "4.0.2" }, "zustand": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", - "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", "requires": {} } } diff --git a/package.json b/package.json index b85869f9..b2e1cf9a 100644 --- a/package.json +++ b/package.json @@ -8,20 +8,20 @@ "gh-pages": "gh-pages -d public/build --dotfiles true" }, "dependencies": { - "@codemirror/autocomplete": "6.7.1", + "@codemirror/autocomplete": "6.8.1", "@codemirror/commands": "6.2.4", "@codemirror/lang-markdown": "6.0.0", - "@codemirror/language": "6.7.0", - "@codemirror/lint": "6.2.1", - "@codemirror/search": "6.4.0", + "@codemirror/language": "6.8.0", + "@codemirror/lint": "6.3.0", + "@codemirror/search": "6.5.0", "@codemirror/state": "6.2.1", - "@codemirror/view": "6.12.0", + "@codemirror/view": "6.14.0", "@cortex-js/compute-engine": "0.12.3", - "@lezer/common": "1.0.2", - "@lezer/generator": "1.2.3", + "@lezer/common": "1.0.3", + "@lezer/generator": "1.3.0", "@lezer/highlight": "1.1.6", - "@lezer/lr": "1.3.5", - "@lezer/markdown": "1.0.2", + "@lezer/lr": "1.3.7", + "@lezer/markdown": "1.0.3", "@nextjournal/lang-clojure": "1.0.0", "@nextjournal/lezer-clojure": "1.0.0", "complex.js": "2.1.1", @@ -29,26 +29,26 @@ "fraction.js": "4.2.0", "framer-motion": "6.5.1", "jsxgraph": "1.5.0", - "katex": "^0.16.7", - "leva": "0.9.34", - "mafs": "0.16.0", + "katex": "0.16.8", + "leva": "0.9.35", + "mafs": "0.17.1", "markdown-it": "12.3.2", "markdown-it-block-image": "0.0.3", "markdown-it-footnote": "3.0.3", "markdown-it-texmath": "0.9.7", "markdown-it-toc-done-right": "4.2.0", "mathbox": "2.3.1", - "mathbox-react": "0.2.2", + "mathbox-react": "0.0.14", "mathlive": "0.86.1", "odex": "3.0.0-rc.4", "punycode": "2.1.1", "react": "18.2.0", "react-dom": "18.2.0", "shadow-cljs": "2.23.1", - "three": "0.149.0", + "three": "0.150.0", "threestrap": "0.5.1", "use-sync-external-store": "1.2.0", "vh-sticky-table-header": "1.2.1", - "w3c-keyname": "2.2.7" + "w3c-keyname": "2.2.8" } } diff --git a/resources/emmy_viewers/clerk/README.md b/resources/emmy_viewers/clerk/README.md index 9515fefb..33c7db98 100644 --- a/resources/emmy_viewers/clerk/README.md +++ b/resources/emmy_viewers/clerk/README.md @@ -1,10 +1,10 @@ # emmy-viewers/clerk template This directory contains a [`deps-new`][deps-new-url] template that creates a new -[Emmy-Viewers][emmy-viewers-url] project with everything described in the ["Emmy -via Clerk"](https://emmy-viewers.mentat.org/#emmy-viewers-via-clerk) section of -the [`Emmy-Viewers` documentation notebook][emmy-viewers-notebook] already -configured. +[Emmy-Viewers][emmy-viewers-url] project with everything described in the +["Quickstart via Clerk"](https://emmy-viewers.mentat.org/#quickstart-via-clerk) +section of the [`Emmy-Viewers` documentation notebook][emmy-viewers-notebook] +already configured. To use the template, install the [`deps-new`][deps-new-url] tool: @@ -49,16 +49,7 @@ following key-value pairs to the above command (See Clerk.) - `:clerk-port`: the port used by `clerk/serve!` during interactive development. - `:clerk-sha`: the hash of the Clerk version you'd like to use in the template. -- `:shadow-port`: the port that [`shadow-cljs`][shadow-url] uses to serve - compiled JavaScript during interactive development. -- `:shadow-version`: the version of [`shadow-cljs`][shadow-url] required by the - generated project. - `:clj-version`: the version of Clojure required by the generated project. -- `:cljs-version`: the version of ClojureScript required by the generated - project. (_note that this needs to meet or exceed the version declared in the - [`shadow-cljs` `deps.edn` - file](https://github.com/thheller/shadow-cljs/blob/master/deps.edn) for the - `shadow-cljs` version you've chosen._) - `:http-server-port`: The port used by `bb serve` and `bb publish-local` to serve the local statically built site. - `:cname`: If you're serving your GitHub Pages build from a custom URL, pass diff --git a/resources/emmy_viewers/clerk/dev/user.tmpl b/resources/emmy_viewers/clerk/dev/user.tmpl index 74123a99..7262f4e4 100644 --- a/resources/emmy_viewers/clerk/dev/user.tmpl +++ b/resources/emmy_viewers/clerk/dev/user.tmpl @@ -1,9 +1,5 @@ (ns user - (:require [emmy.clerk :as ec] - [mentat.clerk-utils.build :as b] - [nextjournal.clerk :as clerk])) - -(ec/install-css!) + (:require [emmy.clerk :as ec])) (def index "notebooks/{{top/file}}/{{main/file}}.clj") @@ -16,11 +12,6 @@ ;; Comment out the following line to tell Clerk to generate its own index ;; with a list of all built pages. :index index - - ;; Comment out the following line and enable the `:cljs-namespaces` line to - ;; build a custom JS bundle. - :custom-js ec/custom-js - ;; :cljs-namespaces '[{{top/ns}}.sci-extensions] }) (def serve-defaults @@ -37,24 +28,24 @@ :git/url "https://github.com/{{raw-name}}")) (defn serve! - "Alias of [[mentat.clerk-utils.build/serve!]] with [[defaults]] supplied as + "Alias of [[emmy.clerk/serve!]] with [[defaults]] supplied as default arguments. Any supplied `opts` overrides the defaults." ([] (serve! {})) ([opts] - (b/serve! + (ec/serve! (merge serve-defaults opts)))) -(def ^{:doc "Alias for [[mentat.clerk-utils.build/halt!]]."} +(def ^{:doc "Alias for [[emmy.clerk/halt!]]."} halt! - b/halt!) + ec/halt!) (defn build! - "Alias of [[mentat.clerk-utils.build/build!]] with [[static-defaults]] supplied + "Alias of [[emmy.clerk/build!]] with [[static-defaults]] supplied as default arguments. Any supplied `opts` overrides the defaults." [opts] - (b/build! + (ec/build! (merge static-defaults opts))) diff --git a/resources/emmy_viewers/clerk/notebooks/main.tmpl b/resources/emmy_viewers/clerk/notebooks/main.tmpl index 0f8f4d20..cdc336df 100644 --- a/resources/emmy_viewers/clerk/notebooks/main.tmpl +++ b/resources/emmy_viewers/clerk/notebooks/main.tmpl @@ -24,7 +24,6 @@ ;; - Interactively develop Clerk notebooks ;; - Publish them to [GitHub Pages](https://pages.github.com/) or [Clerk's Garden](https://github.clerk.garden/) -;; - Use a [custom ClojureScript build](https://clerk-utils.mentat.org/#custom-clojurescript-builds) in both modes ;; Some good next steps: diff --git a/resources/emmy_viewers/clerk/root/.dir-locals.el b/resources/emmy_viewers/clerk/root/.dir-locals.el deleted file mode 100644 index d0ba4bf4..00000000 --- a/resources/emmy_viewers/clerk/root/.dir-locals.el +++ /dev/null @@ -1,6 +0,0 @@ -((clojurec-mode - . ((cider-clojure-cli-aliases . ":nextjournal/clerk"))) - (clojurescript-mode - . ((cider-clojure-cli-aliases . ":nextjournal/clerk"))) - (clojure-mode - . ((cider-clojure-cli-aliases . ":nextjournal/clerk")))) diff --git a/resources/emmy_viewers/clerk/root/README.md b/resources/emmy_viewers/clerk/root/README.md index ab2a5ed0..3790c575 100644 --- a/resources/emmy_viewers/clerk/root/README.md +++ b/resources/emmy_viewers/clerk/root/README.md @@ -16,13 +16,6 @@ written with [`Emmy-Viewers`](https://emmy-viewers.mentat.org) and produce static builds of these notebooks ready for publication via [GitHub Pages](https://pages.github.com/) or [Clerk's Garden](https://clerk.garden/). -The project is also configured to let you use `Emmy-Viewers` code, as well as -other custom ClojureScript code that you write, inside of your Clerk project's -[viewers](https://book.clerk.vision#viewers). To enable this feature, uncomment -the two lines beginning with `:cljs-namespaces` to activate a custom -ClojureScript build. See `dev/{{top/file}}/sci_extensions.cljs` for more -information. - > **Note** > This README contains a good amount of Getting Started material. Feel free to > delete anything that you don't want to keep, or move it to a file like @@ -35,9 +28,6 @@ Install the following dependencies: - [Clojure CLI tools](https://clojure.org/guides/install_clojure) - [`babashka`](https://github.com/babashka/babashka#installation) -You'll also need `node` installed, preferably via -[`nvm`](https://github.com/nvm-sh/nvm#installing-and-updating). - Run the following command to see all of the [Babashka Tasks](https://book.babashka.org/#tasks) declared in `bb.edn`: @@ -125,19 +115,6 @@ To show a file, pass it to `clerk/show!`: > These commands work because dev/user.clj requires `nextjournal.clerk` under a > `clerk` alias, and defines a `serve!` function. -## Custom ClojureScript and JavaScript - -All ClojureScript code you add to `src/{{top/file}}/custom.cljs` is available -for use inside any [custom viewer code you -write](https://book.clerk.vision/#writing-viewers). - -This is made possible by the code in `src/{{top/file}}/sci_viewers.cljs`. If you -want to add more namespaces, follow the instructions in `sci_viewers.cljs` to -get them into Clerk's SCI environment. - -That file also contains instructions on how to make JavaScript and NPM -dependencies available to your viewers. - ## Static Builds Once you're ready to share your work, run the following command to generate a diff --git a/resources/emmy_viewers/clerk/root/deps.edn b/resources/emmy_viewers/clerk/root/deps.edn index 17d378a2..82f7e855 100644 --- a/resources/emmy_viewers/clerk/root/deps.edn +++ b/resources/emmy_viewers/clerk/root/deps.edn @@ -1,19 +1,12 @@ {:paths ["src" "dev" "notebooks"] :deps {org.clojure/clojure {:mvn/version "{{clj-version}}"} - io.github.nextjournal/clerk {:git/sha "{{clerk-sha}}"} - io.github.mentat-collective/emmy-viewers - {:git/sha "{{emmy-viewers-sha}}" + org.mentat/emmy-viewers + {:git/url "https://github.com/mentat-collective/emmy-viewers.git" + :git/sha "{{emmy-viewers-sha}}" ;; This is required because Clerk specifies SCI using a ;; git dependency and `clojure` can't resolve the ;; conflict. :exclusions [org.babashka/sci]} - io.github.mentat-collective/clerk-utils {:git/sha "{{clerk-utils-sha}}"}} + io.github.nextjournal/clerk {:git/sha "{{clerk-sha}}"}} :aliases - {:nextjournal/clerk - {:extra-deps - {io.github.nextjournal/clerk.render - {:git/url "https://github.com/nextjournal/clerk" - ;; make sure this sha matches the one in `:deps` above. - :git/sha "{{clerk-sha}}" - :deps/root "render"}} - :exec-fn user/build!}}} + {:nextjournal/clerk {:exec-fn user/build!}}} diff --git a/resources/emmy_viewers/clerk/src/custom.tmpl b/resources/emmy_viewers/clerk/src/custom.tmpl deleted file mode 100644 index 80becc95..00000000 --- a/resources/emmy_viewers/clerk/src/custom.tmpl +++ /dev/null @@ -1,15 +0,0 @@ -(ns {{top/ns}}.custom) - -;; ## Custom ClojureScript -;; -;; This namespace contains custom ClojureScript definitions used by the -;; {{raw/name}} project. - -;; With the default configuration in `{{top/ns}}.sci-extensions`, any function -;; or var you add here will be available inside your SCI viewers as -;; `custom/` or as the fully-qualified `{{top/ns}}.custom/`. - -(defn square - "Returns the square of `x`." - [x] - (* x x)) diff --git a/resources/emmy_viewers/clerk/src/sci_extensions.tmpl b/resources/emmy_viewers/clerk/src/sci_extensions.tmpl deleted file mode 100644 index b98fa58e..00000000 --- a/resources/emmy_viewers/clerk/src/sci_extensions.tmpl +++ /dev/null @@ -1,59 +0,0 @@ -(ns {{top/ns}}.sci-extensions - (:require [{{top/ns}}.custom] - [emmy.viewer.sci] - [sci.ctx-store] - [sci.core :as sci])) - -;; ## SCI Environment Extension -;; -;; This namespace extends the SCI environment used by Clerk, making available -;; any custom ClojureScript you'd like to use while [writing -;; viewers](https://book.clerk.vision/#writing-viewers) for your notebooks. - -;; ## Emmy-Viewers installation -;; -;; This first section installs all `Emmy-Viewers` namespaces into the project: - -(emmy.viewer.sci/install!) - -;; See [`Emmy-Viewers` via -;; SCI](https://emmy-viewers.mentat.org/#emmy-viewers-via-sci) for more detail. - -;; ## SCI Environment Extension - -;; This form creates a "lives-within-SCI" version of the `clerk-utils.custom` -;; namespace by copying all public vars. -(def custom-namespace - (sci/copy-ns {{top/ns}}.custom - (sci/create-ns '{{top/ns}}.custom))) - -;; Adding an entry to this map is equivalent to adding an entry like -;; `(:require [clerk-utils.custom])` to a Clojure namespace. -(def custom-namespaces - {'{{top/ns}}.custom custom-namespace - ;; Add any more namespaces here! Make sure to `:require` anything you add at - ;; the top of this file. - }) - -;; Add aliases here for namespaces that you've included above. This adds an -;; `:as` form to a namespace: `(:require [{{top/ns}}.custom :as custom])` -(def custom-aliases - {'custom '{{top/ns}}.custom}) - -;; This next form mutates SCI's default environment, merging in your custom code -;; on top of what Clerk has already configured. - -(sci.ctx-store/swap-ctx! - sci/merge-opts - {;; Use `:classes` to expose JavaScript classes that you'd like to use in your - ;; viewer code. `Math/sin` etc will work with this entry: - :classes {'Math js/Math} - :namespaces custom-namespaces - :aliases custom-aliases}) - -;; ## JavaScript Libraries -;; -;; See the [Extending SCI](https://clerk-utils.mentat.org/#extending-sci) -;; section of the [Clerk-Utils docs](https://clerk-utils.mentat.org) for -;; instructions on how to make NPM dependencies like "react" available inside of -;; Clerk's viewers. diff --git a/resources/emmy_viewers/clerk/template.edn b/resources/emmy_viewers/clerk/template.edn index 46d068a3..4aad2bc7 100644 --- a/resources/emmy_viewers/clerk/template.edn +++ b/resources/emmy_viewers/clerk/template.edn @@ -3,17 +3,11 @@ :emmy-viewers-sha "034bc313d95df7ae8f304de263b9bcee01347df5" :clerk-sha "1f6c5331418aaf9c5a4335fc2e6e95f07dc3af6b" :clerk-utils-sha "b98b74fa025b5543318a6b5beb1622fd35b4906e" - :shadow-port 8765 - :shadow-version "2.23.1" :clj-version "1.11.1" - :cljs-version "1.11.60" :http-server-port 8080 :cname "" :transform - [["src" "src" - {"custom.tmpl" "{{top/file}}/custom.cljs" - "sci_extensions.tmpl" "{{top/file}}/sci_extensions.cljs"}] - ["notebooks" "notebooks" + [["notebooks" "notebooks" {"main.tmpl" "{{top/file}}/{{main/file}}.clj"}] ["dev" "dev" {"user.tmpl" "user.clj"}]]} diff --git a/src/demo/mathbox.cljs b/src/demo/mathbox.cljs index 6a218c3d..0d1a6c13 100644 --- a/src/demo/mathbox.cljs +++ b/src/demo/mathbox.cljs @@ -48,9 +48,7 @@ #js {:absoluteTolerance epsilon :relativeTolerance epsilon :rawFunction true - :maxSteps 10000}) - ) - ) + :maxSteps 10000}))) (defn Lagrangian-collector "hardcoded at first for this use case." diff --git a/src/emmy/clerk.clj b/src/emmy/clerk.clj index 8fd48cfd..81e4be04 100644 --- a/src/emmy/clerk.clj +++ b/src/emmy/clerk.clj @@ -3,7 +3,9 @@ Use: - - [[install-css!]] for project configuration + - [[install-css!]] for project configuration (or use [[serve!]], [[halt!]] + and [[build!]] in place of the Clerk versions) + - [[install!]] for notebook-specific configuration" {:nextjournal.clerk/toc true} (:require [clojure.walk :refer [postwalk]] @@ -17,7 +19,7 @@ (def custom-js "CDN address of a pre-built JS bundle for Clerk with support for all of this library's viewers." - "https://cas.clerk.garden/tree/8Vx3qnFoB2pE6Yk63LD14HRLNhXBapzwyjVaaxr4p4GiMf8QXiMc5kT4xePqWes8CkQaBBwqyPKCrYBzvd5XY8uGtX/.clerk/shadow-cljs/main.js") + "https://cas.clerk.garden/tree/8VtzzNQNgLi8tCtfjg3epG8AC4eLkodBppZFoyCrgfQSybHCky9BcT9PbYeoexpUmzRcQjPitiqqBa2UEXTkUguyRq/.clerk/shadow-cljs/main.js") ;; ## Viewers ;; @@ -238,13 +240,12 @@ All remaining `opts` are forwarded to [[nextjournal.clerk/build!]]" [opts] (let [existing @css/custom-css - opts (cond-> opts - (or (:cljs-namespaces opts) - (:custom-js opts)) - (assoc :custom-js custom-js))] - + opts (if (or (:cljs-namespaces opts) + (:custom-js opts)) + opts + (assoc opts :custom-js custom-js))] (try (install-css!) - (b/build! (merge opts)) + (b/build! opts) (finally (apply css/set-css! existing))))) diff --git a/src/emmy/mathbox/compile.clj b/src/emmy/mathbox/compile.clj index 0c052397..10b85e12 100644 --- a/src/emmy/mathbox/compile.clj +++ b/src/emmy/mathbox/compile.clj @@ -35,8 +35,8 @@ syms) (~sym ~in out# psym#) (emit# (aget out# 0) - (aget out# 2) - (aget out# 1)))))) + (aget out# 1) + (aget out# 2)))))) (defn param-3d "Given: diff --git a/src/emmy/mathbox/physics.cljs b/src/emmy/mathbox/physics.cljs index cfed7789..a43b6de9 100644 --- a/src/emmy/mathbox/physics.cljs +++ b/src/emmy/mathbox/physics.cljs @@ -90,8 +90,8 @@ (fn [ys] (state->xyz ys xyz) (emit (aget xyz 0) - (aget xyz 2) - (aget xyz 1)))))}] + (aget xyz 1) + (aget xyz 2)))))}] [mb/Vector {:size arrow-size :width width diff --git a/src/emmy/mathbox/plot.clj b/src/emmy/mathbox/plot.clj index e0a2bc1c..3be95f74 100644 --- a/src/emmy/mathbox/plot.clj +++ b/src/emmy/mathbox/plot.clj @@ -8,26 +8,6 @@ [emmy.viewer :as ev] [emmy.viewer.compile :as c])) -;; ## Utilities - -(defn ^:no-doc split-opts - "Returns a pair of a parameters map and the rest of the children. Useful for - allowing a component to take a props map optionally. - - TODO this is duplicated between the clj and cljs versions of this file. Find a - better place and consolidate." - [children] - (if (map? (first children)) - [(first children) (rest children)] - [{} children])) - -(def ^:no-doc box-defaults - {:container {:style {:height "400px" :width "100%"}} - :renderer {:background-opacity 0}}) - -(def ^:no-doc client-keys - [:range :scale :camera :axes :grids]) - ;; ## Scene Elements (defn labeled-axis @@ -113,13 +93,10 @@ [opts] ['emmy.mathbox.plot/Grid opts]) -(defn scene - "Takes an optional options map and any number of children and nests them into a - configured [[mathbox.coordinates/Cartesian]] component that renders a - mathematical 3d plotting scene into MathBox. - - Any option supported by [[emmy.mathbox/mathbox]] is removed and passed along - to that functions. +(defn cartesian + "Component that renders a mathematical 3d plotting scene into MathBox. + Takes any number of children and nests them into a + configured [[emmy.mathbox.plot/Cartesian]] component. Optional arguments: @@ -132,7 +109,7 @@ given to each dimension in the rendering. Each entry defaults to 1. - `:camera`: Camera position in units I don't really understand yet! Defaults - to `[0.5 0.6 2]`. + to `[0.5 -2 0.6]`. - `:axes`: can be either @@ -152,12 +129,22 @@ See [[grid]] for more detail on allowed configuration values." [& children] - (let [[opts children] (split-opts children) - client-opts (select-keys opts client-keys) - box-opts (apply dissoc opts client-keys)] - (box/mathbox - (merge box-defaults box-opts) - (into ['emmy.mathbox.plot/Scene client-opts] children)))) + (ev/fragment + (into ['emmy.mathbox.plot/Cartesian] children) + #(box/mathbox 'emmy.mathbox.plot/box-defaults %))) + +(defn scene + "Takes an optional options map and any number of children and nests them into a + configured [[emmy.mathbox.plot/Cartesian]] component that renders a + mathematical 3d plotting scene into MathBox. + + Any option supported by [[emmy.mathbox/mathbox]] is removed and passed along + to that function. + + See [[cartesian]] for all other supported options." + [& children] + (ev/fragment + (into ['emmy.mathbox.plot/Scene] children))) ;; ## Geometric Primitives @@ -307,6 +294,11 @@ (-> (c/wrap [f-bind] ['emmy.mathbox.plot/ParametricCurve opts]) (ev/fragment scene)))) +(defn polar-curve [opts] + (let [[r-bind opts] (c/compile-1d opts :r)] + (-> (c/wrap [r-bind] ['emmy.mathbox.plot/PolarCurve opts]) + (ev/fragment scene)))) + (defn of-x "Returns a fragment that plots a function in either the `y` or `z` directions as a function of `x` values. @@ -324,7 +316,7 @@ - `:samples`: the number of points to use to generate the curve. Defaults to 256. - - `:range` 2-vector of the form `[ ]` specifying the range to + - `:range`: 2-vector of the form `[ ]` specifying the range to feed into `:y` or `:z`. - `:start?` if `true`, renders an arrow at the start of the curve. Defaults to @@ -372,7 +364,7 @@ - `:samples`: the number of points to use to generate the curve. Defaults to 256. - - `:range` 2-vector of the form `[ ]` specifying the range to + - `:range`: 2-vector of the form `[ ]` specifying the range to feed into `:x` or `:z`. - `:start?` if `true`, renders an arrow at the start of the curve. Defaults to @@ -420,7 +412,7 @@ - `:samples`: the number of points to use to generate the curve. Defaults to 256. - - `:range` 2-vector of the form `[ ]` specifying the range to + - `:range`: 2-vector of the form `[ ]` specifying the range to feed into `:x` or `:y`. - `:start?` if `true`, renders an arrow at the start of the curve. Defaults to @@ -516,13 +508,13 @@ - `:f`: function of the form `(fn [[r theta]] [])`, valid within the area specified by `:r-range` and `:theta-range`. + Optional arguments: + - `:r-range`: 2-vector of the form `[ ]` specifying the interval - of the first input to `f`. + of the first input to `f`. Defaults to `[0 3]`. - `:theta-range`: 2-vector of the form `[ ]` specifying - the interval of the second input to `f`. - - Optional arguments: + the interval of the second input to `f`. Defaults to `[0 (* 2 Math/PI)]`. - `:r-samples`: the number of r samples to use to generate the surface. Defaults to 64. @@ -569,13 +561,13 @@ - `:z`: function of the form `(fn [[x y]] [])`, valid within the area specified by `:x-range` and `:y-range`. + Optional arguments: + - `:x-range`: 2-vector of the form `[ ]` specifying the interval - of the first input to `f`. + of the first input to `f`. Defaults to the scene's range. - `:y-range`: 2-vector of the form `[ ]` specifying the interval - of the second input to `f`. - - Optional arguments: + of the second input to `f`. Defaults to the scene's range. - `:x-samples`: the number of x samples to use to generate the surface. Defaults to 64. @@ -622,13 +614,13 @@ - `:y`: function of the form `(fn [[x z]] [])`, valid within the area specified by `:x-range` and `:z-range`. + Optional arguments: + - `:x-range`: 2-vector of the form `[ ]` specifying the interval - of the first input to `f`. + of the first input to `f`. Defaults to the scene's range. - `:z-range`: 2-vector of the form `[ ]` specifying the interval - of the second input to `f`. - - Optional arguments: + of the second input to `f`. Defaults to the scene's range. - `:x-samples`: the number of x samples to use to generate the surface. Defaults to 64. @@ -675,13 +667,13 @@ - `:x`: function of the form `(fn [[y z]] [])`, valid within the area specified by `:y-range` and `:z-range`. + Optional arguments: + - `:y-range`: 2-vector of the form `[ ]` specifying the interval - of the first input to `f`. + of the first input to `f`. Defaults to the scene's range. - `:z-range`: 2-vector of the form `[ ]` specifying the interval - of the second input to `f`. - - Optional arguments: + of the second input to `f`. Defaults to the scene's range. - `:y-samples`: the number of y samples to use to generate the surface. Defaults to 64. @@ -722,7 +714,63 @@ ;; ## Vector Fields (defn vector-field - "Currently in-progress component for displaying 3-dimensional vector fields." + "Returns a fragment that plots a vector field defined by `:f` into the scene + along the volume specified by `:x-range`, `:y-range` and `:z-range`. + + Required arguments: + + - `:f`: function of the form `(fn [[x y z]] [ ])`, valid within the + area specified by `:x-range`, `:y-range` and `:z-range`. + + The function should return the coordinates of the tip of a vector with + origin at `[0 0 0]`; [[VectorField]] will translate each vector to start at + `[x y z]`. + + Optional arguments: + + - `:scale`: Optional scale factor to apply to each vector's magnitude. + Defaults to 1.0. + + - `:x-range`: 2-vector of the form `[ ]` specifying the interval + of the first input to `f`. Defaults to the scene's range. + + - `:y-range`: 2-vector of the form `[ ]` specifying the interval + of the first input to `f`. Defaults to the scene's range. + + - `:z-range`: 2-vector of the form `[ ]` specifying the interval + of the second input to `f`. Defaults to the scene's range. + + - `:x-samples`: the number of vectors to plot in the `x` direction. Defaults + to 10. + + - `:y-samples`: the number of vectors to plot in the `y` direction. Defaults + to 10. + + - `:z-samples`: the number of vectors to plot in the `z` direction. Defaults + to 10. + + - `:start?` if `true`, renders an arrow at the start of each vector. Defaults + to `false`. + + - `:end?` if `true`, renders an arrow at the end of each vector. Defaults to + `true`. + + - `:arrow-size`: size of the arrows toggled by `:start?` and `:end?`. Defaults + to 6. + + - `:width`: width of each vector. Defaults to 2. + + - `:opacity`: opacity of each vector. Defaults to 1.0. + + - `:color`: color of each vector. This can be a `three.js` `Color` object + or [any valid input to its + constructor](https://threejs.org/docs/#api/en/math/Color). + + - `:z-order`: z-order of the vector field. + + - `:z-index`: zIndex of the vector field. Defaults to 0. + + - `:z-bias`: zBias of the vector field. Defaults to 0." [opts] (let [[f-bind opts] (mc/compile-3d opts :f 3)] (-> (c/wrap [f-bind] ['emmy.mathbox.plot/VectorField opts]) diff --git a/src/emmy/mathbox/plot.cljs b/src/emmy/mathbox/plot.cljs index 33abf20f..fa50b063 100644 --- a/src/emmy/mathbox/plot.cljs +++ b/src/emmy/mathbox/plot.cljs @@ -5,6 +5,7 @@ (:require [clojure.set :as cs] [emmy.mathbox.color :as color] [emmy.viewer.plot :as p] + [mathbox.core] [mathbox.primitives :as mb] ["katex" :as katex] ["mathbox" :as box])) @@ -20,17 +21,13 @@ [{} children])) (def ^:no-doc axis->idx - "Map of axis keyword => the MathBox dimensions that represent the axis or axes. - - MathBox's `emit` calls confusingly take inputs in 'xzy' order! Rather than - swizzle everything I'm using this map to track the actual indices and being - careful." + "Map of axis keyword => the MathBox dimensions that represent the axis or axes." {:x 1 - :y 3 - :z 2 - :xy [1 3] :yx [3 1] - :yz [3 2] :zy [2 3] - :xz [1 2] :zx [2 1]}) + :y 2 + :z 3 + :xy [1 2] :yx [2 1] + :yz [2 3] :zy [3 2] + :xz [1 3] :zx [3 1]}) (def ^:no-doc latex-render "HTML renderer for MathBox that renders its children using katex." @@ -150,12 +147,14 @@ [mb/Ticks {:width width}] (when labels? [:<> - [mb/Format {:expr (fn [x] (label-fn x))}] + [mb/Format + {:live false + :expr (fn [x] (label-fn x))}] [mb/Label {:offset - (if (= idx 2) + (if (= axis :z) [20 0 0] - [0 -20 0])}]])])) + [0 0 -20])}]])])) (defn AxisLabel "Component that renders an axis label above the referenced `axis`. @@ -189,7 +188,8 @@ :live false :data [(assoc [0 0 0] (dec idx) position)]}] [mb/Text - {:weight "bold" + {:live false + :weight "bold" :data [label]}] [mb/Label {:size size @@ -385,7 +385,7 @@ (assoc :axes grid))]))) m))) -(defn Scene +(defn Cartesian "Component that renders a mathematical 3d plotting scene into MathBox. Takes any number of children and nests them into a configured [[mathbox.coordinates/Cartesian]] component. @@ -401,7 +401,7 @@ given to each dimension in the rendering. Each entry defaults to 1. - `:camera`: Camera position in units I don't really understand yet! Defaults - to `[0.5 0.6 2]`. + to `[0.5 -2 0.6]`. - `:axes`: can be either @@ -415,6 +415,7 @@ - `:grids`: either - a vector like `[:xy :yz]` + - a map of `{ }` Any plane entries missing from `:grids` won't be rendered. @@ -425,18 +426,49 @@ {:keys [camera range scale axes grids] :or {range [[-5 5] [-5 5] [-5 5]] scale [1 1 1] - camera [0.5 2 0.6] + camera [0.5 -2 0.6] axes [:x :y :z] - grids [:xy]}} opts - range [(range 0) (range 2) (range 1)]] + grids [:xy]}} opts] [mb/Cartesian - {:range range :scale [(nth scale 0) (nth scale 2) (nth scale 1)]} + {:range range :scale scale} [mb/Camera - {:proxy true :position [(nth camera 0) (nth camera 2) (nth camera 1)]}] + {:proxy true :position camera}] (into [:<>] children) [SceneAxes axes range] [SceneGrids grids]])) +(def threestrap-defaults + "Default Threestrap options." + {:camera {:up [0 0 1]}}) + +(def box-defaults + "Default MathBox options." + {:container {:style {:height "400px" :width "100%"}} + :renderer {:background-opacity 0} + :threestrap threestrap-defaults}) + +(def ^:no-doc content-keys + [:range :scale :camera :axes :grids]) + +(defn Scene + "Takes an optional options map and any number of children and nests them into a + configured [[mathbox.coordinates/Cartesian]] component that renders a + mathematical 3d plotting scene into MathBox. + + Any option supported by [[mathbox.core/MathBox]] is removed and passed along + to that component, after merging with [[box-defaults]]. + + See [[Cartesian]] for all other supported options." + [& children] + (let [[opts children] (split-opts children) + content-opts (select-keys opts content-keys) + box-opts (apply dissoc opts content-keys) + box-opts (if-let [m (:threestrap box-opts)] + (assoc box-opts :threestrap (merge threestrap-defaults m)) + box-opts)] + [mathbox.core/MathBox (merge box-defaults box-opts) + (into [Cartesian content-opts] children)])) + ;; ## Objects ;; ;; Next we have a number of geometric objects. @@ -476,7 +508,6 @@ color color/default}}] [:<> [mb/Array {:items 1 :live false :channels 3 :data [coords]}] - [mb/Swizzle {:order "xzy"}] [mb/Point {:size size :opacity opacity @@ -565,7 +596,7 @@ :else ["" label])] [:<> [mb/Format {:weight "bold" :data data}] - [mb/Label {:offset [0 40 0]}]]))]) + [mb/Label {:offset [0 0 40]}]]))]) (defn Vector "Component that renders a vector into the scene with the specified `tip` and @@ -662,10 +693,61 @@ - `:z-index`: zIndex of the curve. Defaults to 0. - `:z-bias`: zBias of the curve. Defaults to 0." - [{:keys [f t] :as opts}] + [opts] [Curve1D - (-> (dissoc opts :f :t) - (assoc :expr f :range t))]) + (cs/rename-keys opts {:f :expr :t :range})]) + +(defn PolarCurve + "Component that plots a polar curve, ie, radius as a function of theta. + + Required arguments: + + - `:r`: function of the form `(fn [theta] )`, valid within the range of + theta values specified by `:range`. + + NOTE that you may only supply ONE of these two! Supplying both will trigger + an error. + + Optional arguments: + + - `:samples`: the number of points to use to generate the curve. Defaults to + 256. + + - `:range`: 2-vector of the form `[ ]` specifying the + range to feed into `:r`. Defaults to `[0 (* 2 Math/PI)]`. + + - `:start?` if `true`, renders an arrow at the start of the curve. Defaults to + `false`. + + - `:end?` if `true`, renders an arrow at the end of the curve. Defaults to + `false`. + + - `:arrow-size`: size of the arrows toggled by `:start?` and `:end?`. Defaults + to 6. + + - `:width`: width of the curve. Defaults to 4. + + - `:opacity`: opacity of the curve. Defaults to 1.0. + + - `:color`: color of the curve. This can be a `three.js` `Color` object or [any + valid input to its constructor](https://threejs.org/docs/#api/en/math/Color). + + - `:z-order`: z-order of the curve. + + - `:z-index`: zIndex of the curve. Defaults to 0. + + - `:z-bias`: zBias of the curve. Defaults to 0." + [{:keys [r range] + :or {range [0 (* 2 Math/PI)]} + :as opts}] + (let [expr (fn [emit theta _i _time] + (let [radius (r theta)] + (emit (* radius (Math/cos theta)) + (* radius (Math/sin theta)) + 0)))] + [Curve1D + (-> (dissoc opts :r) + (assoc :expr expr :range range))])) (defn OfX "Component that plots a function in either the `y` or `z` directions as a @@ -684,7 +766,7 @@ - `:samples`: the number of points to use to generate the curve. Defaults to 256. - - `:range` 2-vector of the form `[ ]` specifying the range to + - `:range`: 2-vector of the form `[ ]` specifying the range to feed into `:y` or `:z`. - `:start?` if `true`, renders an arrow at the start of the curve. Defaults to @@ -714,9 +796,9 @@ (js/Error. (str "Error: specify only one of `:y` or `:z`, not both!")))) (let [expr (cond y (fn [emit x _i _time _delta] - (emit x 0 (y x))) + (emit x (y x) 0)) z (fn [emit x _i _time _delta] - (emit x (z x) 0)) + (emit x 0 (z x))) :else (throw (js/Error. @@ -742,7 +824,7 @@ - `:samples`: the number of points to use to generate the curve. Defaults to 256. - - `:range` 2-vector of the form `[ ]` specifying the range to + - `:range`: 2-vector of the form `[ ]` specifying the range to feed into `:x` or `:z`. - `:start?` if `true`, renders an arrow at the start of the curve. Defaults to @@ -771,9 +853,9 @@ (throw (js/Error. (str "Error: specify only one of `:x` or `:z`, not both!")))) (let [expr (cond x (fn [emit y _i _time _delta] - (emit (x y) 0 y)) + (emit (x y) y 0)) z (fn [emit y _i _time _delta] - (emit 0 (z y) y)) + (emit 0 y (z y))) :else (throw (js/Error. @@ -799,7 +881,7 @@ - `:samples`: the number of points to use to generate the curve. Defaults to 256. - - `:range` 2-vector of the form `[ ]` specifying the range to + - `:range`: 2-vector of the form `[ ]` specifying the range to feed into `:x` or `:y`. - `:start?` if `true`, renders an arrow at the start of the curve. Defaults to @@ -828,9 +910,9 @@ (throw (js/Error. (str "Error: specify only one of `:x` or `:y`, not both!")))) (let [expr (cond x (fn [emit z _i _time _delta] - (emit (x z) z 0)) + (emit (x z) 0 z)) y (fn [emit z _i _time _delta] - (emit 0 z (y z))) + (emit 0 (y z) z)) :else (throw (js/Error. @@ -972,13 +1054,11 @@ - `:grid-color`: color of the grid lines. Defaults to a darkened version of `:color`." - [{:keys [f] :as opts}] + [opts] [Surface2D - (-> (dissoc opts :f) - (assoc :expr f) - (cs/rename-keys - {:u :u-range - :v :v-range}))]) + (cs/rename-keys opts {:f :expr + :u :u-range + :v :v-range})]) (defn PolarSurface "Component that plots a polar surface defined by `:f` into the scene along the @@ -989,13 +1069,13 @@ - `:f`: function of the form `(fn [[r theta]] [])`, valid within the area specified by `:r-range` and `:theta-range`. + Optional arguments: + - `:r-range`: 2-vector of the form `[ ]` specifying the interval - of the first input to `f`. + of the first input to `f`. Defaults to `[0 3]`. - `:theta-range`: 2-vector of the form `[ ]` specifying - the interval of the second input to `f`. - - Optional arguments: + the interval of the second input to `f`. Defaults to `[0 (* 2 Math/PI)]`. - `:r-samples`: the number of r samples to use to generate the surface. Defaults to 64. @@ -1031,15 +1111,15 @@ [_] (let [in #js [0 0]] (fn [{:keys [z r-range theta-range] - :or {r-range [0 3] + :or {r-range [0 3] theta-range [0 (* 2 Math/PI)]} :as opts}] (let [expr (fn [emit r theta _i _j _time] (aset in 0 r) (aset in 1 theta) (emit (* r (Math/cos theta)) - (z in) - (* r (Math/sin theta))))] + (* r (Math/sin theta)) + (z in)))] [Surface2D (-> (dissoc opts :z) (assoc :axes [1 3] @@ -1063,13 +1143,13 @@ - `:z`: function of the form `(fn [[x y]] [])`, valid within the area specified by `:x-range` and `:y-range`. + Optional arguments: + - `:x-range`: 2-vector of the form `[ ]` specifying the interval - of the first input to `f`. + of the first input to `f`. Defaults to the scene's range. - `:y-range`: 2-vector of the form `[ ]` specifying the interval - of the second input to `f`. - - Optional arguments: + of the second input to `f`. Defaults to the scene's range. - `:x-samples`: the number of x samples to use to generate the surface. Defaults to 64. @@ -1108,7 +1188,7 @@ (let [expr (fn [emit x y _i _j _time] (aset in 0 x) (aset in 1 y) - (emit x (z in) y))] + (emit x y (z in)))] [Surface2D (-> (dissoc opts :z) (cs/rename-keys {:x-range :u-range @@ -1129,13 +1209,13 @@ - `:y`: function of the form `(fn [[x z]] [])`, valid within the area specified by `:x-range` and `:z-range`. + Optional arguments: + - `:x-range`: 2-vector of the form `[ ]` specifying the interval - of the first input to `f`. + of the first input to `f`. Defaults to the scene's range. - `:z-range`: 2-vector of the form `[ ]` specifying the interval - of the second input to `f`. - - Optional arguments: + of the second input to `f`. Defaults to the scene's range. - `:x-samples`: the number of x samples to use to generate the surface. Defaults to 64. @@ -1174,7 +1254,7 @@ (let [expr (fn [emit x z _i _j _time] (aset in 0 x) (aset in 1 z) - (emit x z (y in)))] + (emit x (y in) z))] [Surface2D (-> (dissoc opts :y) (cs/rename-keys {:x-range :u-range @@ -1184,8 +1264,7 @@ :grid-x :grid-u :grid-z :grid-v}) (assoc :axes (axis->idx :xz) - :expr expr))] - )))) + :expr expr))])))) (defn OfYZ "Component that plots an explicit surface defined by `:x` into the scene along the @@ -1196,13 +1275,13 @@ - `:x`: function of the form `(fn [[y z]] [])`, valid within the area specified by `:y-range` and `:z-range`. + Optional arguments: + - `:y-range`: 2-vector of the form `[ ]` specifying the interval - of the first input to `f`. + of the first input to `f`. Defaults to the scene's range. - `:z-range`: 2-vector of the form `[ ]` specifying the interval - of the second input to `f`. - - Optional arguments: + of the second input to `f`. Defaults to the scene's range. - `:y-samples`: the number of y samples to use to generate the surface. Defaults to 64. @@ -1241,7 +1320,7 @@ (let [expr (fn [emit y z _i _j _time] (aset in 0 y) (aset in 1 z) - (emit (x in) z y))] + (emit (x in) y z))] [Surface2D (-> (dissoc opts :x) (cs/rename-keys {:y-range :u-range @@ -1253,39 +1332,108 @@ (assoc :axes (axis->idx :yz) :expr expr))])))) -;; Finish getting info from -;; https://github.com/ChristopherChudzicki/math3d-react/blob/master/client/src/components/MathBox/MathBoxComponents.js#L1424-L1435 -;; -;; and make sure it feels like the mafs vectorfield example. Should we normalize -;; down? Probably not, let the user do that. - (defn VectorField - "Currently in-progress component for displaying 3-dimensional vector fields." - [{:keys [f x y z] :as opts}] - [:<> - [mb/Volume - (merge - {:live false - :width 10 - :height 10 - :depth 10} - (-> opts - (dissoc :f :x :y :z) - (assoc :expr - (let [scale 0.2] - (fn [emit x y z] - (emit x z y) - (f (fn [x' z' y'] - (emit (+ x (* scale x')) - (+ z (* scale z')) - (+ y (* scale y')))) - x y z))) - :items 2 - :channels 3 - :rangeX x - :rangeY y - :rangeZ z)))] - [mb/Vector {:points "<" - :color "blue" - :size 4 - :end true}]]) + "Component that plots a vector field defined by `:f` into the scene along the + volume specified by `:x-range`, `:y-range` and `:z-range`. + + Required arguments: + + - `:f`: function of the form `(fn [[x y z]] [ ])`, valid within the + area specified by `:x-range`, `:y-range` and `:z-range`. + + The function should return the coordinates of the tip of a vector with + origin at `[0 0 0]`; [[VectorField]] will translate each vector to start at + `[x y z]`. + + Optional arguments: + + - `:scale`: Optional scale factor to apply to each vector's magnitude. + Defaults to 1.0. + + - `:x-range`: 2-vector of the form `[ ]` specifying the interval + of the first input to `f`. Defaults to the scene's range. + + - `:y-range`: 2-vector of the form `[ ]` specifying the interval + of the first input to `f`. Defaults to the scene's range. + + - `:z-range`: 2-vector of the form `[ ]` specifying the interval + of the second input to `f`. Defaults to the scene's range. + + - `:x-samples`: the number of vectors to plot in the `x` direction. Defaults + to 10. + + - `:y-samples`: the number of vectors to plot in the `y` direction. Defaults + to 10. + + - `:z-samples`: the number of vectors to plot in the `z` direction. Defaults + to 10. + + - `:start?` if `true`, renders an arrow at the start of each vector. Defaults + to `false`. + + - `:end?` if `true`, renders an arrow at the end of each vector. Defaults to + `true`. + + - `:arrow-size`: size of the arrows toggled by `:start?` and `:end?`. Defaults + to 6. + + - `:width`: width of each vector. Defaults to 2. + + - `:opacity`: opacity of each vector. Defaults to 1.0. + + - `:color`: color of each vector. This can be a `three.js` `Color` object + or [any valid input to its + constructor](https://threejs.org/docs/#api/en/math/Color). + + - `:z-order`: z-order of the vector field. + + - `:z-index`: zIndex of the vector field. Defaults to 0. + + - `:z-bias`: zBias of the vector field. Defaults to 0." + [{:keys [f scale + x-samples y-samples z-samples + x-range y-range z-range + arrow-size width start? end? + opacity color z-order z-index z-bias] + :or {scale 1 + x-samples 10 + y-samples 10 + z-samples 10 + z-index 0 + z-bias 0 + opacity 1 + color "#3090ff" + arrow-size 6 + width 2 + start? false + end? true}}] + (let [x-range (or x-range (when (= 1 x-samples) [0 0])) + y-range (or y-range (when (= 1 y-samples) [0 0])) + z-range (or z-range (when (= 1 z-samples) [0 0]))] + [:<> + [mb/Volume + (cond-> {:expr + (fn [emit x y z] + (emit x y z) + (f (fn [x' y' z'] + (emit (+ x (* scale x')) + (+ y (* scale y')) + (+ z (* scale z')))) + x y z)) + :items 2 + :channels 3 + :live false + :width x-samples + :height y-samples + :depth z-samples} + x-range (assoc :rangeX x-range) + y-range (assoc :rangeY y-range) + z-range (assoc :rangeZ z-range))] + [mb/Vector + {:size arrow-size + :width width + :opacity opacity + :start start? + :end end? + :color color + :zOrder z-order :zIndex z-index :zBias z-bias}]])) diff --git a/src/emmy/portal.clj b/src/emmy/portal.clj index 7f915756..ce381c71 100644 --- a/src/emmy/portal.clj +++ b/src/emmy/portal.clj @@ -13,9 +13,7 @@ ["emmy/portal/tex.cljs" "emmy/portal/reagent.cljs" "emmy/portal/mafs.cljs" - - ;; TODO: activate and bump Portal once 0.43.0 ships. - #_"emmy/portal/leva.cljs" + "emmy/portal/leva.cljs" "emmy/portal/jsxgraph.cljs" "emmy/portal/mathlive.cljs"])