Commit 7a0c5fa4 authored by Alexandre Delanoë's avatar Alexandre Delanoë

Merge remote-tracking branch 'origin/dev-add-edge-weight-control' into dev

parents 2c54e6d4 abebff62
......@@ -9,32 +9,49 @@ variables:
STACK_OPTS: "--system-ghc"
#before_script:
#- nix-env -iA nixpkgs.nix nixpkgs.cacert
#- apt-get update
#- apt-get install make xz-utils
stages:
- deps
- compile
- test
deps:
stage: deps
cache:
paths:
- /nix/store
- node_modules/
#- ${CI_PROJECT_DIR}/bun.lockb
script:
- nix-env -i git
- nix-shell shell.nix --run 'yarn --skip-builds'
- nix-shell shell.nix --run 'bun install --skip-builds'
compile:
stage: compile
cache:
paths:
- /nix/store
- node_modules/
- output/
- .spago/
#- ${CI_PROJECT_DIR}/bun.lockb
script:
- nix-shell shell.nix --run fix-bun
- nix-shell shell.nix --run compile
test:
stage: test
cache:
# cache per branch name
# key: ${CI_COMMIT_REF_SLUG}
paths:
- /nix/store
- node_modules/
- output/
- .spago/
#- ${CI_PROJECT_DIR}/bun.lockb
script:
# find 0.14.5 purescript version here:
# https://lazamar.co.uk/nix-versions/
- nix-env -i git
- nix-shell shell.nix --run 'yarn --skip-builds'
- nix-shell shell.nix --run fix-bun
- nix-shell shell.nix --run test-ps
......@@ -60,6 +60,27 @@ To build the frontend just execute the install script at the root at the project
**Local instance is ready!** (Example: http://localhost:8000/)
#### [bun](https://bun.sh/)
We use [bun](https://bun.sh/) as the package manager.
Sometimes, when you remove `node_modules` it complains about
`better-sqlite3`:
```
file:///home/przemek/GARGANTEXT/haskell-gargantext/purescript-gargantext/node_modules/spago/bin/bundle.js:61138
throw util.fromLeft(step3);
```
Just issue this (I guess it reinstalls `better-sqlite3` for local bun dev):
```sh
cd node_modules/better-sqlite3
bun install
cd ../..
```
or
```sh
nix-shell shell.nix --run fix-bun
```
### 2. Use Docker setup
You will need docker and docker-compose installed.
......@@ -101,6 +122,6 @@ nix-shell --run build
To compile CSS (Sass):
```shell
nix-shell --run "yarn css"
nix-shell --run "bun css"
```
......@@ -5,4 +5,6 @@
nix-channel --update
nix-env -iA nixpkgs.nix nixpkgs.cacert
nix-shell --show-trace --option build-fallback true --run 'bun install'
nix-shell --show-trace --option build-fallback true --run fix-bun
nix-shell --show-trace --option build-fallback true --run build
......@@ -5,8 +5,8 @@ import
pkgs.fetchFromGitHub {
owner = "justinwoo";
repo = "easy-purescript-nix";
rev = "11d3bd58ce6e32703bf69cec04dc7c38eabe14ba";
sha256 = "tESal32bcqqdZO+aKnBzc1GoL2mtnaDtj2y7ociCRGA=";
rev = "117fd96acb69d7d1727df95b6fde9d8715e031fc";
sha256 = "lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=";
}
) {
inherit pkgs;
......
import (
builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/23.05.tar.gz";
url = "https://github.com/NixOS/nixpkgs/archive/23.11.tar.gz";
}
)
......@@ -2,92 +2,85 @@
"name": "Gargantext",
"version": "0.0.7.1.3",
"scripts": {
"generate-purs-packages-nix": "./nix/generate-purs-packages.nix",
"generate-psc-packages-nix": "./nix/generate-packages-json.bash",
"css": "yarn css-themes",
"css-themes": "yarn css-default-theme && yarn css-dark-theme && yarn css-darkster-theme && yarn css-greyson-theme && yarn css-herbie-theme && yarn css-monotony-theme",
"build": "spago build",
"bundle": "spago bundle --module Main --outfile dist/bundle.js",
"css": "$npm_execpath css-themes",
"css-themes": "$npm_execpath css-default-theme && $npm_execpath css-dark-theme && $npm_execpath css-darkster-theme && $npm_execpath css-greyson-theme && $npm_execpath css-herbie-theme && $npm_execpath css-monotony-theme",
"css-default-theme": "sass src/sass/themes/default.scss:dist/styles/bootstrap-default.css",
"css-dark-theme": "cp node_modules/bootstrap-dark/src/bootstrap-dark.css dist/styles/bootstrap-dark.css",
"css-darkster-theme": "sass src/sass/themes/darkster.scss:dist/styles/bootstrap-darkster.css",
"css-greyson-theme": "sass src/sass/themes/greyson.scss:dist/styles/bootstrap-greyson.css",
"css-herbie-theme": "sass src/sass/themes/herbie.scss:dist/styles/bootstrap-herbie.css",
"css-monotony-theme": "sass src/sass/themes/monotony.scss:dist/styles/bootstrap-monotony.css",
"css-npm": "npm run css-themes-npm",
"css-themes-npm": "npm run css-default-theme && npm run css-dark-theme && npm run css-darkster-theme && npm run css-greyson-theme && npm run css-herbie-theme && npm run css-monotony-theme",
"docs": "pulp docs -- --format html",
"repl": "pulp repl",
"clean": "rm -Rf output node_modules",
"clean-js": "rm -Rf node_modules",
"clean-ps": "rm -Rf output",
"docs": "spago docs",
"minify": "spago bundle --module Main --outfile dist/bundle.min.js --minify",
"repl": "spago repl",
"server": "serve -l 8008 dist",
"server-ssl": "ssl-serve --ssl dist",
"build": "spago bundle-app --main Main --to dist/bundle.js",
"prod": "yarn prod:compile && yarn prod:dce && yarn prod:bundle && yarn prod:pack",
"prod:compile": "pulp build -- -g corefn",
"prod:dce": "zephyr -f Main.main",
"prod:bundle": "pulp browserify --skip-compile -o dce-output -t app.js",
"prod:pack": "parcel build index.html -d prod --public-url . --no-source-maps",
"test-pulp": "pulp test",
"test": "gauge run specs/"
"test": "spago test"
},
"dependencies": {
"@fontsource/crete-round": "^5.0.12",
"@fontsource/montserrat": "^5.0.17",
"@fontsource/crete-round": "~5.0.12",
"@fontsource/montserrat": "~5.0.17",
"@fontsource/mulish": "^5.0.16",
"@fontsource/nunito": "^5.0.17",
"@fontsource/open-sans": "^5.0.25",
"@fontsource/oswald": "^5.0.18",
"@popperjs/core": "^2.9.2",
"@urql/core": "^2.3.3",
"aes-js": "^3.1.1",
"base-x": "^3.0.2",
"bootstrap": "^4.6.0",
"bootstrap-dark": "^1.0.3",
"buffer": "^6.0.3",
"create-react-class": "^15.6.3",
"crypto": "^1.0.1",
"d3": "^7.6.1",
"echarts": "^5.1.2",
"echarts-for-react": "^3.0.1",
"esbuild": "^0.15.7",
"graphology": "^0.25.1",
"graphology-communities-louvain": "^2.0.1",
"graphology-layout-forceatlas2": "^0.9.2",
"graphology-layout-noverlap": "^0.4.2",
"graphology-operators": "^1.6.0",
"graphql": "^15.6.1",
"graphql-ws": "^5.5.0",
"highlightjs": "^9.16.2",
"immer": "^9.0.5",
"isomorphic-unfetch": "^3.1.0",
"markdown-it": "^13.0.1",
"prop-types": "^15.6.2",
"pullstate": "^1.20.6",
"react-awesome-popover": "^6.1.1",
"react-bootstrap": "^1.5.2",
"react-dom": "^17.0.2",
"react-tooltip": "^4.2.8",
"secp256k1": "^4.0.2",
"sigma": "^2.4.0",
"twgl.js": "^5.0.4",
"@fontsource/open-sans": "~5.0.25",
"@fontsource/oswald": "~5.0.18",
"@popperjs/core": "~2.9.2",
"@urql/core": "~2.3.3",
"aes-js": "~3.1.1",
"base-x": "~3.0.2",
"bootstrap": "~4.6.0",
"bootstrap-dark": "~1.0.3",
"buffer": "~6.0.3",
"create-react-class": "~15.6.3",
"crypto": "~1.0.1",
"d3": "~7.6.1",
"debounce": "^2.0.0",
"debouncing": "^22.7.25",
"echarts": "~5.1.2",
"echarts-for-react": "~3.0.1",
"graphology": "~0.25.1",
"graphology-communities-louvain": "~2.0.1",
"graphology-layout-forceatlas2": "~0.9.2",
"graphology-layout-noverlap": "~0.4.2",
"graphology-operators": "~1.6.0",
"graphql": "~15.6.1",
"graphql-ws": "~5.5.0",
"highlightjs": "~9.16.2",
"immer": "~9.0.5",
"isomorphic-unfetch": "~3.1.0",
"markdown-it": "~13.0.1",
"prop-types": "~15.6.2",
"pullstate": "~1.20.6",
"react": "~18.2.0",
"react-awesome-popover": "~6.1.1",
"react-bootstrap": "~1.5.2",
"react-dom": "~18.2.0",
"react-tooltip": "~4.2.8",
"secp256k1": "~4.0.2",
"sigma": "~2.4.0",
"twgl.js": "~5.0.4",
"use-debounce": "^10.0.0",
"uuid": "8.3.2"
},
"devDependencies": {
"@babel/core": "^7.15.0",
"@babel/preset-env": "^7.15.6",
"@babel/preset-react": "^7.12.7",
"@getgauge/cli": "^1.4.0",
"parcel": "^2.8.2",
"react-testing-library": "^8.0.1",
"sass": "^1.35.2",
"serve": "^12.0.0",
"spago": "^0.20.9",
"ssl-serve": "^6.5.8",
"@babel/core": "~7.15.0",
"@babel/preset-env": "~7.15.6",
"@babel/preset-react": "~7.12.7",
"@getgauge/cli": "~1.4.0",
"esbuild": "~0.15.7",
"parcel": "~2.8.2",
"react-testing-library": "~8.0.1",
"sass": "~1.35.2",
"serve": "~12.0.0",
"spago": "~0.93.29",
"ssl-serve": "~6.5.8",
"taiko": "latest",
"vscode-languageserver": "^7.0.0",
"xhr2": "^0.2.1"
"vscode-languageserver": "~7.0.0",
"xhr2": "~0.2.1"
},
"optionalDependencies": {
"purescript-language-server": "^0.17.1"
"purescript-language-server": "~0.17.1"
}
}
let upstream =
https://github.com/garganscript/package-sets/releases/download/v0.1.7/release.dhall
sha256:52886309e1f0158a85427f80c1e3d47ce747c5f14fcec671a81fe5c2c711a6db
let overrides =
{ graphql-client =
{ dependencies =
[ "aff"
, "aff-promise"
, "affjax"
, "affjax-node"
, "affjax-web"
, "argonaut-codecs"
, "argonaut-core"
, "arrays"
, "bifunctors"
, "control"
, "datetime"
, "debug"
, "effect"
, "either"
, "enums"
, "exceptions"
, "foldable-traversable"
, "foreign"
, "foreign-object"
, "functions"
, "halogen-subscriptions"
, "heterogeneous"
, "http-methods"
, "integers"
, "lists"
, "maybe"
, "media-types"
, "newtype"
, "node-buffer"
, "node-fs"
, "nullable"
, "numbers"
, "ordered-collections"
, "parsing"
, "prelude"
, "profunctor"
, "profunctor-lenses"
, "psci-support"
, "quickcheck"
, "record"
, "spec"
, "spec-discovery"
, "string-parsers"
, "strings"
, "strings-extra"
, "transformers"
, "tuples"
, "unicode"
, "unsafe-coerce"
, "variant"
]
, repo =
"https://github.com/OxfordAbstracts/purescript-graphql-client.git"
, version = "v9.2.2"
}
, jest =
{ dependencies =
[ "aff"
, "aff-promise"
, "effect"
, "foldable-traversable"
, "prelude"
, "psci-support"
]
, repo = "https://github.com/nonbili/purescript-jest"
, version = "018543987af27db6a3842048b6b3f5ec47609087"
}
, markdown-it =
{ dependencies =
[ "effect"
, "foldable-traversable"
, "foreign"
, "jest"
, "options"
, "prelude"
, "tuples"
]
, repo = "https://github.com/nonbili/purescript-markdown-it"
, version = "f6e8ee91298f2fc13c4277e75a19e0538de5f7a2"
}
, record-extra =
{ dependencies =
[ "arrays"
, "effect"
, "functions"
, "lists"
, "maybe"
, "prelude"
, "record"
, "test-unit"
, "tuples"
, "typelevel-prelude"
]
, repo = "https://github.com/justinwoo/purescript-record-extra"
, version = "v5.0.1"
}
}
let additions =
{ convertable-options =
{ dependencies = [ "console", "effect", "maybe", "record" ]
, repo = "https://github.com/natefaubion/purescript-convertable-options"
, version = "v1.0.0"
}
, data-default =
{ dependencies =
[ "assert", "lists", "maybe", "record", "effect", "prelude" ]
, repo = "https://github.com/thought2/purescript-data-default"
, version = "350e600a5a022c9599865a2dd14196b442f59bcc"
}
, dom-filereader =
{ dependencies = [ "aff", "arraybuffer-types", "web-file", "web-html" ]
, repo = "https://github.com/nwolverson/purescript-dom-filereader"
, version = "v5.0.0"
}
, sequences =
{ dependencies =
[ "arrays"
, "assert"
, "console"
, "control"
, "effect"
, "lazy"
, "maybe"
, "newtype"
, "nonempty"
, "partial"
, "prelude"
, "profunctor"
, "psci-support"
, "tuples"
, "unfoldable"
, "unsafe-coerce"
]
, repo = "https://github.com/garganscript/purescript-sequences.git"
, version = "recursion-fix"
}
, read =
{ dependencies = [ "prelude", "maybe", "strings" ]
, repo = "https://github.com/truqu/purescript-read"
, version = "v1.0.1"
}
, simple-json-generics =
{ dependencies =
[ "assert"
, "control"
, "effect"
, "either"
, "foreign"
, "partial"
, "prelude"
, "simple-json"
, "transformers"
, "typelevel-prelude"
]
, repo =
"https://github.com/garganscript/purescript-simple-json-generics"
, version = "master"
}
, spec-discovery =
{ dependencies = [ "prelude", "effect", "arrays", "spec", "node-fs" ]
, repo = "https://github.com/purescript-spec/purescript-spec-discovery"
, version = "v8.0.0"
}
, spec-quickcheck =
{ dependencies = [ "prelude", "aff", "random", "quickcheck", "spec" ]
, repo = "https://github.com/purescript-spec/purescript-spec-quickcheck"
, version = "v3.1.0"
}
, string-search =
{ dependencies =
[ "arrays"
, "enums"
, "foldable-traversable"
, "int64"
, "integers"
, "lists"
, "maybe"
, "ordered-collections"
, "partial"
, "prelude"
, "strings"
, "tuples"
, "uint"
]
, repo =
"https://gitlab.iscpif.fr/gargantext/purescript-string-search.git"
, version = "v0.1.6"
}
, tuples-native =
{ dependencies =
[ "console"
, "effect"
, "functions"
, "prelude"
, "tuples"
, "typelevel"
, "typelevel-prelude"
]
, repo = "https://github.com/garganscript/purescript-tuples-native"
, version = "v2.3.0"
}
, versions =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/hdgarrood/purescript-versions.git"
, version = "v6.0.0"
}
, web-url =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/mjepronk/purescript-web-url"
, version = "v2.0.0"
}
}
in upstream // overrides // additions
......@@ -2,51 +2,45 @@
let
easy-ps = import ./nix/easy-ps.nix { inherit pkgs; };
purs-packages = import ./purs-packages.nix { inherit pkgs; };
purs-project = import ./nix/purs-project.nix { inherit pkgs; };
build-purs = pkgs.writeShellScriptBin "build-purs" ''
# sometimes bun is broken because of better-sqlite3
fix-bun = pkgs.writeShellScriptBin "fix-bun" ''
#!/usr/bin/env bash
purs compile ${toString purs-project.sourceGlobs} "src/**/*.purs" "test/**/*.purs"
set -e
cd ./node_modules/better-sqlite3
bun install
'';
build = pkgs.writeShellScriptBin "build" ''
compile = pkgs.writeShellScriptBin "compile" ''
#!/usr/bin/env bash
set -e
echo "Installing JS Dependencies"
yarn
#yarn
bun install
echo "Compiling"
#build-purs
#spago build
#echo "Bundling"
#pulp browserify --skip-compile -t dist/bundle.js --src-path output
#browserify
bun run build
'';
build = pkgs.writeShellScriptBin "build" ''
#!/usr/bin/env bash
set -e
# 0.15
spago bundle-app --main Main --to dist/bundle.js
echo "Bundling"
bun run bundle
'';
build-suggestions = pkgs.writeShellScriptBin "build-suggestions" ''
#!/usr/bin/env bash
set -e
echo "Installing JS Dependencies"
yarn
rm -rf ./output
echo "Compiling"
#build-purs
#spago build
#echo "Bundling"
#pulp browserify --skip-compile -t dist/bundle.js --src-path output
#browserify
# 0.15
spago bundle-app --main Main --to dist/bundle.js --purs-args "--json-errors" | jq -r '.warnings | map(select(.errorCode | test("UnusedDctorExplicitImport|UnusedDctorImport|UnusedDeclaration|UnusedExplicitImport|UnusedImport|UnusedName|UnusedTypeVar"))) | map(select(.filename | test("^.spago") | not)) | map("[\(.filename)::\(.position.startLine)] \(.message)\n \(.suggestion)") | join("\n----------\n")'
echo "Bundling"
bun spago bundle --module Main --outfile dist/bundle.js --purs-args "--json-errors" | jq -r '.warnings | map(select(.errorCode | test("UnusedDctorExplicitImport|UnusedDctorImport|UnusedDeclaration|UnusedExplicitImport|UnusedImport|UnusedName|UnusedTypeVar"))) | map(select(.filename | test("^.spago") | not)) | map("[\(.filename)::\(.position.startLine)] \(.message)\n \(.suggestion)") | join("\n----------\n")'
'';
......@@ -54,15 +48,16 @@ let
#!/usr/bin/env bash
set -e
yarn css
#yarn css
bun run css
'';
serve = pkgs.writeShellScriptBin "serve" ''
#!/usr/bin/env bash
set -e
yarn server
#yarn server
bun run server
'';
......@@ -71,60 +66,39 @@ let
set -e
echo "Build watch"
spago build -w --then browserify
bun spago build -w --then browserify
'';
build-zephyr = pkgs.writeShellScriptBin "build-zephyr" ''
#!/usr/bin/env bash
set -e
spago build --purs-args '--codegen corefn,js'
bun spago build --purs-args '--codegen corefn,js'
zephyr -f Main.main
browserify-zephyr
'';
browserify = pkgs.writeShellScriptBin "browserify" ''
#!/usr/bin/env bash
set -e
pulp browserify --skip-compile -t dist/bundle.js --src-path output
'';
browserify-zephyr = pkgs.writeShellScriptBin "browserify-zephyr" ''
#!/usr/bin/env bash
set -e
pulp browserify --skip-compile -t dist/bundle.js -o dce-output
#purs bundle -o dist/bundle.js -m Main dce-output/**/*.js
'';
minify-bundle = pkgs.writeShellScriptBin "minify-bundle" ''
#!/usr/bin/env bash
set -e
minify dist/bundle.js > dist/bundle.min.js
bun run minify
'';
repl = pkgs.writeShellScriptBin "repl" ''
#!/usr/bin/env bash
spago repl
bun run repl
'';
test-ps = pkgs.writeShellScriptBin "test-ps" ''
#!/usr/bin/env bash
set -e
echo "Compiling"
yarn
#spago build
#build-purs
compile
echo "Testing"
spago -v -x test.dhall test --main Test.Main
# spago -x test.dhall bundle-app --main Test.Main --to dist/test-bundle.js --platform node
# pulp browserify --skip-compile -t dist/bundle.js --src-path output
# pulp test --src-path output --test-path output
#NODE_PATH=output node -e "require('Test.Main').main();"
bun run test
'';
# TODO: Remove this when nixpkgs is updated to newer version (23.05
......@@ -133,39 +107,33 @@ let
in
pkgs.mkShell {
buildInputs = [
easy-ps.purs-0_15_7
easy-ps.psc-package
easy-ps.dhall-json-simple
easy-ps.purs-0_15_15
easy-ps.zephyr
browserify
browserify-zephyr
pkgs.ijq
pkgs.jq
#pkgs.esbuild
pkgs.nodejs
#pkgs.yarn
pkgs.bun
pkgs.sqlite
# scripts
build-css
build-purs
build-suggestions
build-watch
build-zephyr
build
pkgs.ijq
pkgs.jq
compile
fix-bun
minify-bundle
#pkgs.closurecompiler
pkgs.esbuild
pkgs.minify
pkgs.nodejs
#pkgs.nodePackages.purescript-language-server
#pkgs.python # needed for msgpack etc
#nodejs_20_3_1
repl
serve
pkgs.pulp
pkgs.spago
pkgs.yarn
test-ps
];
shellHook = ''
export PURS_IDE_SOURCES='${toString purs-project.unquotedSourceGlobs}'
'';
#shellHook = ''
# export PURS_IDE_SOURCES='${toString purs-project.unquotedSourceGlobs}'
#'';
}
## how to build the project with nix dependencies:
......
{-
Welcome to a Spago project!
You can edit this file as you like.
Need help? See the following resources:
- Spago documentation: https://github.com/purescript/spago
- Dhall language tour: https://docs.dhall-lang.org/tutorials/Language-Tour.html
When creating a new Spago project, you can use
`spago init --no-comments` or `spago init -C`
to generate this file without the comments in this block.
-}
{ name = "gargantext"
, dependencies =
[ "aff"
, "aff-promise"
, "affjax"
, "affjax-web"
, "argonaut"
, "argonaut-codecs"
, "argonaut-core"
, "arraybuffer-types"
, "arrays"
, "bifunctors"
, "colors"
, "console"
, "control"
, "convertable-options"
, "css"
, "d3"
, "data-default"
, "datetime"
, "debug"
, "dom-filereader"
, "dom-simple"
, "effect"
, "either"
, "enums"
, "exceptions"
, "ffi-simple"
, "foldable-traversable"
, "foreign"
, "foreign-object"
, "form-urlencoded"
, "formatters"
, "functions"
, "graphql-client"
, "heterogeneous"
, "http-methods"
, "integers"
, "js-timers"
, "lists"
, "markdown-it"
, "maybe"
, "media-types"
, "milkis"
, "newtype"
, "nonempty"
, "now"
, "nullable"
, "numbers"
, "ordered-collections"
, "orders"
, "parallel"
, "partial"
, "prelude"
, "profunctor-lenses"
, "psci-support"
, "random"
, "react"
, "reactix"
, "record"
, "record-extra"
, "routing"
, "sequences"
, "simple-json"
, "simple-json-generics"
, "string-search"
, "strings"
, "strings-extra"
, "stringutils"
, "these"
, "toestand"
, "transformers"
, "tuples"
, "tuples-native"
, "typelevel"
, "typelevel-prelude"
, "unfoldable"
, "unordered-collections"
, "unsafe-coerce"
, "uri"
, "uuid"
, "validation"
, "web-file"
, "web-html"
, "web-storage"
, "web-url"
, "web-xhr"
]
, packages = ./packages.dhall
, sources = [ "src/**/*.purs" ]
}
workspace:
packages:
gargantext:
path: ./
dependencies:
- aff: ">=7.1.0 <8.0.0"
- aff-promise: ">=4.0.0 <5.0.0"
- affjax: ">=13.0.0 <14.0.0"
- affjax-web: ">=1.0.0 <2.0.0"
- argonaut: ">=9.0.0 <10.0.0"
- argonaut-codecs: ">=9.1.0 <10.0.0"
- argonaut-core: ">=7.0.0 <8.0.0"
- arraybuffer-types: ">=3.0.2 <4.0.0"
- arrays: ">=7.3.0 <8.0.0"
- bifunctors: ">=6.0.0 <7.0.0"
- colors: ">=7.0.1 <8.0.0"
- console: ">=6.1.0 <7.0.0"
- control: ">=6.0.0 <7.0.0"
- convertable-options: ">=1.0.0 <2.0.0"
- css: ">=6.0.0 <7.0.0"
- d3: "*"
- data-default: "*"
- datetime: ">=6.1.0 <7.0.0"
- debouncing: ">=0.1.0 <0.2.0"
- debug: ">=6.0.2 <7.0.0"
- dom-filereader: ">=7.0.0 <8.0.0"
- dom-simple: ">=0.4.0 <0.5.0"
- effect: ">=4.0.0 <5.0.0"
- either: ">=6.1.0 <7.0.0"
- enums: ">=6.0.1 <7.0.0"
- exceptions: ">=6.0.0 <7.0.0"
- ffi-simple: ">=0.5.1 <0.6.0"
- foldable-traversable: ">=6.0.0 <7.0.0"
- foreign: ">=7.0.0 <8.0.0"
- foreign-object: ">=4.1.0 <5.0.0"
- form-urlencoded: ">=7.0.0 <8.0.0"
- formatters: ">=7.0.0 <8.0.0"
- functions: ">=6.0.0 <7.0.0"
- graphql-client: "*"
- heterogeneous: ">=0.6.0 <0.7.0"
- http-methods: ">=6.0.0 <7.0.0"
- integers: ">=6.0.0 <7.0.0"
- js-timers: ">=6.1.0 <7.0.0"
- lists: ">=7.0.0 <8.0.0"
- markdown-it: "*"
- maybe: ">=6.0.0 <7.0.0"
- media-types: ">=6.0.0 <7.0.0"
- milkis: ">=9.0.0 <10.0.0"
- newtype: ">=5.0.0 <6.0.0"
- nonempty: ">=7.0.0 <8.0.0"
- now: ">=6.0.0 <7.0.0"
- nullable: ">=6.0.0 <7.0.0"
- numbers: ">=9.0.1 <10.0.0"
- ordered-collections: ">=3.2.0 <4.0.0"
- orders: ">=6.0.0 <7.0.0"
- parallel: ">=7.0.0 <8.0.0"
- partial: ">=4.0.0 <5.0.0"
- prelude: ">=6.0.1 <7.0.0"
- profunctor-lenses: ">=8.0.0 <9.0.0"
- random: ">=6.0.0 <7.0.0"
- react: ">=11.0.0 <12.0.0"
- reactix: ">=0.6.1 <0.7.0"
- record: ">=4.0.0 <5.0.0"
- record-extra: ">=5.0.1 <6.0.0"
- routing: ">=11.0.0 <12.0.0"
- sequences: "*"
- simple-json: ">=9.0.0 <10.0.0"
- simple-json-generics: "*"
- string-search: "*"
- strings: ">=6.0.1 <7.0.0"
- strings-extra: ">=4.0.0 <5.0.0"
- stringutils: ">=0.0.12 <0.0.13"
- these: ">=6.0.0 <7.0.0"
- toestand: ">=0.9.0 <0.10.0"
- transformers: ">=6.0.0 <7.0.0"
- tuples: ">=7.0.0 <8.0.0"
- tuples-native: "*"
- typelevel: ">=6.0.0 <7.0.0"
- typelevel-prelude: ">=7.0.0 <8.0.0"
- unfoldable: ">=6.0.0 <7.0.0"
- unordered-collections: ">=3.1.0 <4.0.0"
- unsafe-coerce: ">=6.0.0 <7.0.0"
- uri: ">=9.0.0 <10.0.0"
- uuid: ">=9.0.0 <10.0.0"
- validation: ">=6.0.0 <7.0.0"
- web-file: ">=4.0.0 <5.0.0"
- web-html: ">=4.1.0 <5.0.0"
- web-storage: ">=5.0.0 <6.0.0"
- web-url: ">=2.0.0 <3.0.0"
- web-xhr: ">=5.0.1 <6.0.0"
test_dependencies:
- spec
- spec-discovery
- spec-quickcheck
build_plan:
- aff
- aff-promise
- affjax
- affjax-node
- affjax-web
- ansi
- argonaut
- argonaut-codecs
- argonaut-core
- argonaut-traversals
- arraybuffer-types
- arrays
- assert
- avar
- bifunctors
- catenable-lists
- colors
- console
- const
- contravariant
- control
- convertable-options
- css
- d3
- data-default
- datetime
- debouncing
- debug
- distributive
- dom-filereader
- dom-simple
- effect
- either
- enums
- exceptions
- exists
- ffi-simple
- filterable
- fixed-points
- foldable-traversable
- foreign
- foreign-object
- fork
- form-urlencoded
- formatters
- free
- functions
- functors
- gen
- graphql-client
- halogen-subscriptions
- heterogeneous
- http-methods
- identity
- int64
- integers
- invariant
- js-date
- js-timers
- js-uri
- lazy
- lcg
- lists
- markdown-it
- maybe
- media-types
- milkis
- mmorph
- newtype
- node-buffer
- node-event-emitter
- node-fs
- node-path
- node-streams
- nonempty
- now
- nullable
- numbers
- options
- ordered-collections
- orders
- parallel
- parsing
- partial
- pipes
- prelude
- profunctor
- profunctor-lenses
- psci-support
- quickcheck
- quickcheck-laws
- random
- react
- reactix
- record
- record-extra
- refs
- routing
- safe-coerce
- semirings
- sequences
- simple-json
- simple-json-generics
- small-ffi
- spec
- spec-discovery
- spec-quickcheck
- st
- string-parsers
- string-search
- strings
- strings-extra
- stringutils
- tailrec
- these
- toestand
- transformers
- tuples
- tuples-native
- type-equality
- typelevel
- typelevel-lists
- typelevel-peano
- typelevel-prelude
- typisch
- unfoldable
- unicode
- unordered-collections
- unsafe-coerce
- unsafe-reference
- uri
- uuid
- validation
- variant
- web-dom
- web-events
- web-file
- web-html
- web-storage
- web-url
- web-xhr
package_set:
address:
registry: 50.13.1
compiler: ">=0.15.15 <0.16.0"
content:
abc-parser: 2.0.1
ace: 9.1.0
address-rfc2821: 0.1.1
aff: 7.1.0
aff-bus: 6.0.0
aff-coroutines: 9.0.0
aff-promise: 4.0.0
aff-retry: 2.0.0
affjax: 13.0.0
affjax-node: 1.0.0
affjax-web: 1.0.0
ansi: 7.0.0
apexcharts: 0.5.0
applicative-phases: 1.0.0
argonaut: 9.0.0
argonaut-aeson-generic: 0.4.1
argonaut-codecs: 9.1.0
argonaut-core: 7.0.0
argonaut-generic: 8.0.0
argonaut-traversals: 10.0.0
argparse-basic: 2.0.0
array-builder: 0.1.2
array-search: 0.5.6
arraybuffer: 13.2.0
arraybuffer-builder: 3.1.0
arraybuffer-types: 3.0.2
arrays: 7.3.0
arrays-extra: 0.6.1
arrays-zipper: 2.0.1
ask: 1.0.0
assert: 6.0.0
assert-multiple: 0.3.4
avar: 5.0.0
b64: 0.0.8
barbies: 1.0.1
barlow-lens: 0.9.0
bifunctors: 6.0.0
bigints: 7.0.1
bolson: 0.3.9
bookhound: 0.1.7
bower-json: 3.0.0
call-by-name: 4.0.1
canvas: 6.0.0
canvas-action: 9.0.0
cartesian: 1.0.6
catenable-lists: 7.0.0
chameleon: 1.0.0
chameleon-halogen: 1.0.3
chameleon-react-basic: 1.1.0
chameleon-styled: 2.5.0
chameleon-transformers: 1.0.0
channel: 1.0.0
checked-exceptions: 3.1.1
choku: 1.0.1
classless: 0.1.1
classless-arbitrary: 0.1.1
classless-decode-json: 0.1.1
classless-encode-json: 0.1.3
classnames: 2.0.0
codec: 6.1.0
codec-argonaut: 10.0.0
codec-json: 1.1.0
colors: 7.0.1
concur-core: 0.5.0
concur-react: 0.5.0
concurrent-queues: 3.0.0
console: 6.1.0
const: 6.0.0
contravariant: 6.0.0
control: 6.0.0
convertable-options: 1.0.0
coroutines: 7.0.0
css: 6.0.0
css-frameworks: 1.0.1
csv-stream: 1.1.7
data-mvc: 0.0.2
datetime: 6.1.0
datetime-parsing: 0.2.0
debug: 6.0.2
decimals: 7.1.0
default-values: 1.0.1
deku: 0.9.23
deno: 0.0.5
dissect: 1.0.0
distributive: 6.0.0
dom-filereader: 7.0.0
dom-indexed: 12.0.0
dom-simple: 0.4.0
dotenv: 4.0.3
droplet: 0.6.0
dts: 1.0.0
dual-numbers: 1.0.2
dynamic-buffer: 3.0.1
echarts-simple: 0.0.1
effect: 4.0.0
either: 6.1.0
elmish: 0.11.3
elmish-enzyme: 0.1.1
elmish-hooks: 0.10.0
elmish-html: 0.8.2
elmish-testing-library: 0.3.2
email-validate: 7.0.0
encoding: 0.0.9
enums: 6.0.1
env-names: 0.3.4
error: 2.0.0
eta-conversion: 0.3.2
exceptions: 6.0.0
exists: 6.0.0
exitcodes: 4.0.0
expect-inferred: 3.0.0
fahrtwind: 2.0.0
fallback: 0.1.0
fast-vect: 1.2.0
fetch: 4.1.0
fetch-argonaut: 1.0.1
fetch-core: 5.1.0
fetch-yoga-json: 1.1.0
ffi-simple: 0.5.1
fft-js: 0.1.0
filterable: 5.0.0
fix-functor: 0.1.0
fixed-points: 7.0.0
fixed-precision: 5.0.0
flame: 1.3.0
float32: 2.0.0
fmt: 0.2.1
foldable-traversable: 6.0.0
foldable-traversable-extra: 0.0.6
foreign: 7.0.0
foreign-object: 4.1.0
foreign-readwrite: 3.4.0
forgetmenot: 0.1.0
fork: 6.0.0
form-urlencoded: 7.0.0
formatters: 7.0.0
framer-motion: 1.0.1
free: 7.1.0
freeap: 7.0.0
freer-free: 0.0.1
freet: 7.0.0
functions: 6.0.0
functor1: 3.0.0
functors: 5.0.0
fuzzy: 0.4.0
gen: 4.0.0
generate-values: 1.0.1
generic-router: 0.0.1
geojson: 0.0.5
geometry-plane: 1.0.3
gojs: 0.1.1
grain: 3.0.0
grain-router: 3.0.0
grain-virtualized: 3.0.0
graphs: 8.1.0
group: 4.1.1
halogen: 7.0.0
halogen-bootstrap5: 5.3.2
halogen-canvas: 1.0.0
halogen-css: 10.0.0
halogen-echarts-simple: 0.0.4
halogen-formless: 4.0.3
halogen-helix: 1.0.0
halogen-hooks: 0.6.3
halogen-hooks-extra: 0.9.0
halogen-infinite-scroll: 1.1.0
halogen-store: 0.5.4
halogen-storybook: 2.0.0
halogen-subscriptions: 2.0.0
halogen-svg-elems: 8.0.0
halogen-typewriter: 1.0.4
halogen-vdom: 8.0.0
halogen-vdom-string-renderer: 0.5.0
halogen-xterm: 2.0.0
heckin: 2.0.1
heterogeneous: 0.6.0
homogeneous: 0.4.0
http-methods: 6.0.0
httpurple: 4.0.0
humdrum: 0.0.1
hyrule: 2.3.8
identity: 6.0.0
identy: 4.0.1
indexed-db: 1.0.0
indexed-monad: 3.0.0
int64: 3.0.0
integers: 6.0.0
interpolate: 5.0.2
intersection-observer: 1.0.1
invariant: 6.0.0
jarilo: 1.0.1
jelly: 0.10.0
jelly-router: 0.3.0
jelly-signal: 0.4.0
jest: 1.0.0
js-abort-controller: 1.0.0
js-bigints: 2.2.1
js-date: 8.0.0
js-fetch: 0.2.1
js-fileio: 3.0.0
js-intl: 1.0.4
js-iterators: 0.1.1
js-maps: 0.1.2
js-promise: 1.0.0
js-promise-aff: 1.0.0
js-timers: 6.1.0
js-uri: 3.1.0
json: 1.0.0
json-codecs: 5.0.0
justifill: 0.5.0
jwt: 0.0.9
labeled-data: 0.2.0
language-cst-parser: 0.14.0
lazy: 6.0.0
lazy-joe: 1.0.0
lcg: 4.0.0
leibniz: 5.0.0
leveldb: 1.0.1
liminal: 1.0.1
linalg: 6.0.0
lists: 7.0.0
literals: 1.0.2
logging: 3.0.0
logging-journald: 0.4.0
lumi-components: 18.0.0
machines: 7.0.0
maps-eager: 0.4.1
marionette: 1.0.0
marionette-react-basic-hooks: 0.1.1
marked: 0.1.0
matrices: 5.0.1
matryoshka: 1.0.0
maybe: 6.0.0
media-types: 6.0.0
meowclient: 1.0.0
midi: 4.0.0
milkis: 9.0.0
minibench: 4.0.1
mmorph: 7.0.0
monad-control: 5.0.0
monad-logger: 1.3.1
monad-loops: 0.5.0
monad-unlift: 1.0.1
monoid-extras: 0.0.1
monoidal: 0.16.0
morello: 0.4.0
mote: 3.0.0
motsunabe: 2.0.0
mvc: 0.0.1
mysql: 6.0.1
n3: 0.1.0
nano-id: 1.1.0
nanoid: 0.1.0
naturals: 3.0.0
nested-functor: 0.2.1
newtype: 5.0.0
nextjs: 0.1.1
nextui: 0.2.0
node-buffer: 9.0.0
node-child-process: 11.1.0
node-event-emitter: 3.0.0
node-execa: 5.0.0
node-fs: 9.1.0
node-glob-basic: 1.3.0
node-http: 9.1.0
node-http2: 1.1.1
node-human-signals: 1.0.0
node-net: 5.1.0
node-os: 5.1.0
node-path: 5.0.0
node-process: 11.2.0
node-readline: 8.1.0
node-sqlite3: 8.0.0
node-streams: 9.0.0
node-tls: 0.3.1
node-url: 7.0.1
node-zlib: 0.4.0
nonempty: 7.0.0
now: 6.0.0
npm-package-json: 2.0.0
nullable: 6.0.0
numberfield: 0.1.0
numbers: 9.0.1
oak: 3.1.1
oak-debug: 1.2.2
object-maps: 0.3.0
ocarina: 1.5.4
open-folds: 6.3.0
open-memoize: 6.1.0
open-pairing: 6.1.0
options: 7.0.0
optparse: 5.0.1
ordered-collections: 3.2.0
ordered-set: 0.4.0
orders: 6.0.0
owoify: 1.2.0
pairs: 9.0.1
parallel: 7.0.0
parsing: 10.2.0
parsing-dataview: 3.2.4
partial: 4.0.0
pathy: 9.0.0
pha: 0.13.0
phaser: 0.7.0
phylio: 1.1.2
pipes: 8.0.0
pirates-charm: 0.0.1
pmock: 0.9.0
point-free: 1.0.0
pointed-list: 0.5.1
polymorphic-vectors: 4.0.0
posix-types: 6.0.0
postgresql: 1.5.1
precise: 6.0.0
precise-datetime: 7.0.0
prelude: 6.0.1
prettier-printer: 3.0.0
profunctor: 6.0.1
profunctor-lenses: 8.0.0
protobuf: 4.3.0
psa-utils: 8.0.0
psci-support: 6.0.0
punycode: 1.0.0
qualified-do: 2.2.0
quantities: 12.2.0
quickcheck: 8.0.1
quickcheck-combinators: 0.1.3
quickcheck-laws: 7.0.0
quickcheck-utf8: 0.0.0
random: 6.0.0
rationals: 6.0.0
rdf: 0.1.0
react: 11.0.0
react-aria: 0.2.0
react-basic: 17.0.0
react-basic-classic: 3.0.0
react-basic-dnd: 10.1.0
react-basic-dom: 6.1.0
react-basic-emotion: 7.1.0
react-basic-hooks: 8.2.0
react-basic-storybook: 2.0.0
react-dom: 8.0.0
react-halo: 3.0.0
react-icons: 1.1.5
react-markdown: 0.1.0
react-testing-library: 4.0.1
react-virtuoso: 1.0.0
reactix: 0.6.0
read: 1.0.1
recharts: 1.1.0
record: 4.0.0
record-extra: 5.0.1
record-ptional-fields: 0.1.2
record-studio: 1.0.4
refs: 6.0.0
remotedata: 5.0.1
resize-observer: 1.0.0
resource: 2.0.1
resourcet: 1.0.0
result: 1.0.3
return: 0.2.0
ring-modules: 5.0.1
rito: 0.3.4
rough-notation: 1.0.2
routing: 11.0.0
routing-duplex: 0.7.0
run: 5.0.0
safe-coerce: 2.0.0
safely: 4.0.1
school-of-music: 1.3.0
selection-foldable: 0.2.0
selective-functors: 1.0.1
semirings: 7.0.0
signal: 13.0.0
simple-emitter: 3.0.1
simple-i18n: 2.0.1
simple-json: 9.0.0
simple-json-generics: 0.2.1
simple-ulid: 3.0.0
sized-matrices: 1.0.0
sized-vectors: 5.0.2
slug: 3.0.8
small-ffi: 4.0.1
soundfonts: 4.1.0
sparse-matrices: 1.3.0
sparse-polynomials: 2.0.5
spec: 7.6.0
spec-mocha: 5.1.0
spec-quickcheck: 5.0.0
splitmix: 2.1.0
ssrs: 1.0.0
st: 6.2.0
statistics: 0.3.2
strictlypositiveint: 1.0.1
string-parsers: 8.0.0
strings: 6.0.1
strings-extra: 4.0.0
stringutils: 0.0.12
substitute: 0.2.3
supply: 0.2.0
svg-parser: 3.0.0
systemd-journald: 0.3.0
tagged: 4.0.2
tailrec: 6.1.0
tecton: 0.2.1
tecton-halogen: 0.2.0
test-unit: 17.0.0
thermite: 6.3.1
thermite-dom: 0.3.1
these: 6.0.0
toestand: 0.9.0
transformation-matrix: 1.0.1
transformers: 6.0.0
tree-rose: 4.0.2
ts-bridge: 4.0.0
tuples: 7.0.0
two-or-more: 1.0.0
type-equality: 4.0.1
typedenv: 2.0.1
typelevel: 6.0.0
typelevel-lists: 2.1.0
typelevel-peano: 1.0.1
typelevel-prelude: 7.0.0
typelevel-regex: 0.0.3
typelevel-rows: 0.1.0
typisch: 0.4.0
uint: 7.0.0
ulid: 3.0.1
uncurried-transformers: 1.1.0
undefined: 2.0.0
undefined-is-not-a-problem: 1.1.0
unfoldable: 6.0.0
unicode: 6.0.0
unique: 0.6.1
unlift: 1.0.1
unordered-collections: 3.1.0
unsafe-coerce: 6.0.0
unsafe-reference: 5.0.0
untagged-to-tagged: 0.1.4
untagged-union: 1.0.0
uri: 9.0.0
uuid: 9.0.0
uuidv4: 1.0.0
validation: 6.0.0
variant: 8.0.0
variant-encodings: 2.0.0
vectorfield: 1.0.1
vectors: 2.1.0
versions: 7.0.0
visx: 0.0.2
web-clipboard: 5.0.0
web-cssom: 2.0.0
web-cssom-view: 0.1.0
web-dom: 6.0.0
web-dom-parser: 8.0.0
web-dom-xpath: 3.0.0
web-encoding: 3.0.0
web-events: 4.0.0
web-fetch: 4.0.1
web-file: 4.0.0
web-geometry: 0.1.0
web-html: 4.1.0
web-pointerevents: 2.0.0
web-proletarian: 1.0.0
web-promise: 3.2.0
web-resize-observer: 2.1.0
web-router: 1.0.0
web-socket: 4.0.0
web-storage: 5.0.0
web-streams: 4.0.0
web-touchevents: 4.0.0
web-uievents: 5.0.0
web-url: 2.0.0
web-workers: 1.1.0
web-xhr: 5.0.1
webextension-polyfill: 0.1.0
webgpu: 0.0.1
which: 2.0.0
xterm: 1.0.0
yoga-fetch: 1.0.1
yoga-json: 5.1.0
yoga-om: 0.1.0
yoga-postgres: 6.0.0
yoga-tree: 1.0.0
z3: 0.0.2
zipperarray: 2.0.0
extra_packages:
d3:
git: https://github.com/garganscript/purescript-d3.git
ref: v0.11.0
data-default:
git: https://github.com/garganscript/purescript-data-default.git
ref: v0.4.0
debouncing: 0.1.2
graphql-client:
git: https://github.com/garganscript/purescript-graphql-client.git
ref: spago-next-9.3.2
markdown-it:
git: https://github.com/garganscript/purescript-markdown-it.git
ref: spago-next
reactix: 0.6.1
sequences:
git: https://github.com/garganscript/purescript-sequences.git
ref: v3.0.2-spago-next
simple-json-generics: 0.2.1
spec-discovery:
git: https://github.com/garganscript/purescript-spec-discovery.git
ref: v8.2.0-spago-next
string-search:
git: https://gitlab.iscpif.fr/gargantext/purescript-string-search.git
ref: spago-next
tuples-native:
git: https://github.com/garganscript/purescript-tuples-native.git
ref: v2.3.0-spago-next
packages:
aff:
type: registry
version: 7.1.0
integrity: sha256-7hOC6uQO9XBAI5FD8F33ChLjFAiZVfd4BJMqlMh7TNU=
dependencies:
- arrays
- bifunctors
- control
- datetime
- effect
- either
- exceptions
- foldable-traversable
- functions
- maybe
- newtype
- parallel
- prelude
- refs
- tailrec
- transformers
- unsafe-coerce
aff-promise:
type: registry
version: 4.0.0
integrity: sha256-Kq5EupbUpXeUXx4JqGQE7/RTTz/H6idzWhsocwlEFhM=
dependencies:
- aff
- foreign
affjax:
type: registry
version: 13.0.0
integrity: sha256-blYfaoW4FYIrIdvmT4sB7nN7BathFaEfZuiVLPmHJOo=
dependencies:
- aff
- argonaut-core
- arraybuffer-types
- foreign
- form-urlencoded
- http-methods
- integers
- media-types
- nullable
- refs
- unsafe-coerce
- web-xhr
affjax-node:
type: registry
version: 1.0.0
integrity: sha256-NcmRTXJxJzgHuKoLh+36yA8UejkfouYcX3uevT+Trjc=
dependencies:
- aff
- affjax
- either
- maybe
- prelude
affjax-web:
type: registry
version: 1.0.0
integrity: sha256-n/yJUk1wMxMN7fJ2TJ+fELgieomy29N617yOshAnrc0=
dependencies:
- aff
- affjax
- either
- maybe
- prelude
ansi:
type: registry
version: 7.0.0
integrity: sha256-ZMB6HD+q9CXvn9fRCmJ8dvuDrOVHcjombL3oNOerVnE=
dependencies:
- foldable-traversable
- lists
- strings
argonaut:
type: registry
version: 9.0.0
integrity: sha256-9sHzkzcFkaMUa9+3FjIybJDYnHtY4Jp4zHOJ84qPTXo=
dependencies:
- argonaut-codecs
- argonaut-core
- argonaut-traversals
argonaut-codecs:
type: registry
version: 9.1.0
integrity: sha256-N6efXByUeg848ompEqJfVvZuZPfdRYDGlTDFn0G0Oh8=
dependencies:
- argonaut-core
- arrays
- effect
- foreign-object
- identity
- integers
- maybe
- nonempty
- ordered-collections
- prelude
- record
argonaut-core:
type: registry
version: 7.0.0
integrity: sha256-RC82GfAjItydxrO24cdX373KHVZiLqybu19b5X8u7B4=
dependencies:
- arrays
- control
- either
- foreign-object
- functions
- gen
- maybe
- nonempty
- prelude
- strings
- tailrec
argonaut-traversals:
type: registry
version: 10.0.0
integrity: sha256-9nSfqR70rjiNWVVsCoK+jrm9dmyZTx89IKNYO6uNUIk=
dependencies:
- argonaut-codecs
- argonaut-core
- profunctor-lenses
arraybuffer-types:
type: registry
version: 3.0.2
integrity: sha256-mQKokysYVkooS4uXbO+yovmV/s8b138Ws3zQvOwIHRA=
dependencies: []
arrays:
type: registry
version: 7.3.0
integrity: sha256-tmcklBlc/muUtUfr9RapdCPwnlQeB3aSrC4dK85gQlc=
dependencies:
- bifunctors
- control
- foldable-traversable
- functions
- maybe
- nonempty
- partial
- prelude
- safe-coerce
- st
- tailrec
- tuples
- unfoldable
- unsafe-coerce
assert:
type: registry
version: 6.0.0
integrity: sha256-hCSYcCw9kj3qujoDcriWhCdmrpPZoguSPDZhEMnTl3A=
dependencies:
- console
- effect
- prelude
avar:
type: registry
version: 5.0.0
integrity: sha256-e7hf0x4hEpcygXP0LtvfvAQ49Bbj2aWtZT3gqM///0A=
dependencies:
- aff
- effect
- either
- exceptions
- functions
- maybe
bifunctors:
type: registry
version: 6.0.0
integrity: sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw=
dependencies:
- const
- either
- newtype
- prelude
- tuples
catenable-lists:
type: registry
version: 7.0.0
integrity: sha256-76vYENhwF4BWTBsjeLuErCH2jqVT4M3R1HX+4RwSftA=
dependencies:
- control
- foldable-traversable
- lists
- maybe
- prelude
- tuples
- unfoldable
colors:
type: registry
version: 7.0.1
integrity: sha256-udlg/y2PFsHYli8Tgz8BQGGrOjyGo0BcJj36IfgYADs=
dependencies:
- arrays
- integers
- lists
- numbers
- partial
- strings
console:
type: registry
version: 6.1.0
integrity: sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=
dependencies:
- effect
- prelude
const:
type: registry
version: 6.0.0
integrity: sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc=
dependencies:
- invariant
- newtype
- prelude
contravariant:
type: registry
version: 6.0.0
integrity: sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c=
dependencies:
- const
- either
- newtype
- prelude
- tuples
control:
type: registry
version: 6.0.0
integrity: sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=
dependencies:
- newtype
- prelude
convertable-options:
type: registry
version: 1.0.0
integrity: sha256-IFsYp0rXyzUtjoi3jed6yFYAVM+NhfgSn2j/zkjpccM=
dependencies:
- console
- effect
- maybe
- record
css:
type: registry
version: 6.0.0
integrity: sha256-zfSHxgiU4rSWuVxMjSKKh+s7j433wxmsr+CqI6hm9s4=
dependencies:
- colors
- console
- effect
- nonempty
- profunctor
- strings
- these
- transformers
d3:
type: git
url: https://github.com/garganscript/purescript-d3.git
rev: 37ad74a2933dc8cb07be121928054af6baecfba4
dependencies:
- aff
- aff-promise
- dom-simple
- effect
- exceptions
- foreign
- functions
- js-date
- maybe
- prelude
- small-ffi
- tuples
- web-dom
data-default:
type: git
url: https://github.com/garganscript/purescript-data-default.git
rev: 4b7a0b7f5f53f237dab7a55f362d4e775e847d89
dependencies:
- assert
- effect
- lists
- maybe
- prelude
- record
datetime:
type: registry
version: 6.1.0
integrity: sha256-g/5X5BBegQWLpI9IWD+sY6mcaYpzzlW5lz5NBzaMtyI=
dependencies:
- bifunctors
- control
- either
- enums
- foldable-traversable
- functions
- gen
- integers
- lists
- maybe
- newtype
- numbers
- ordered-collections
- partial
- prelude
- tuples
debouncing:
type: registry
version: 0.1.2
integrity: sha256-2Ajskjmc+r3gnpcv6L8U4BfiSKj4N7sCINiBD99RjO8=
dependencies:
- effect
- prelude
debug:
type: registry
version: 6.0.2
integrity: sha256-vmkYFuXYuELBzeauvgHG6E6Kf/Hp1dAnxwE9ByHfwSg=
dependencies:
- functions
- prelude
distributive:
type: registry
version: 6.0.0
integrity: sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ=
dependencies:
- identity
- newtype
- prelude
- tuples
- type-equality
dom-filereader:
type: registry
version: 7.0.0
integrity: sha256-wFJm1GtrdVfmW/mZIvwRM19GBlm6+/g7bXLjgGs7Hi8=
dependencies:
- aff
- arraybuffer-types
- web-file
- web-html
dom-simple:
type: registry
version: 0.4.0
integrity: sha256-YHkzShJ0iZvSrDPrr0s5FV8yXL2ahzHAgZcsNME9yBI=
dependencies:
- effect
- ffi-simple
- maybe
- nullable
- prelude
- unsafe-coerce
effect:
type: registry
version: 4.0.0
integrity: sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=
dependencies:
- prelude
either:
type: registry
version: 6.1.0
integrity: sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY=
dependencies:
- control
- invariant
- maybe
- prelude
enums:
type: registry
version: 6.0.1
integrity: sha256-HWaD73JFLorc4A6trKIRUeDMdzE+GpkJaEOM1nTNkC8=
dependencies:
- control
- either
- gen
- maybe
- newtype
- nonempty
- partial
- prelude
- tuples
- unfoldable
exceptions:
type: registry
version: 6.0.0
integrity: sha256-y/xTAEIZIARCE+50/u1di0ncebJ+CIwNOLswyOWzMTw=
dependencies:
- effect
- either
- maybe
- prelude
exists:
type: registry
version: 6.0.0
integrity: sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8=
dependencies:
- unsafe-coerce
ffi-simple:
type: registry
version: 0.5.1
integrity: sha256-S8SYzvSVZKwZQwgAD90YBWq1FMXqgSmQaLsMKq6MM+A=
dependencies:
- functions
- maybe
- nullable
- prelude
- unsafe-coerce
filterable:
type: registry
version: 5.0.0
integrity: sha256-cCojJHRnTmpY1j1kegI4CFwghdQ2Fm/8dzM8IlC+lng=
dependencies:
- arrays
- either
- foldable-traversable
- identity
- lists
- ordered-collections
fixed-points:
type: registry
version: 7.0.0
integrity: sha256-hTl5fzeG4mzAOFzEzAeNH7kJvJgYCH7x3v2NdX9pOE4=
dependencies:
- exists
- newtype
- prelude
- transformers
foldable-traversable:
type: registry
version: 6.0.0
integrity: sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM=
dependencies:
- bifunctors
- const
- control
- either
- functors
- identity
- maybe
- newtype
- orders
- prelude
- tuples
foreign:
type: registry
version: 7.0.0
integrity: sha256-1ORiqoS3HW+qfwSZAppHPWy4/6AQysxZ2t29jcdUMNA=
dependencies:
- either
- functions
- identity
- integers
- lists
- maybe
- prelude
- strings
- transformers
foreign-object:
type: registry
version: 4.1.0
integrity: sha256-q24okj6mT+yGHYQ+ei/pYPj5ih6sTbu7eDv/WU56JVo=
dependencies:
- arrays
- foldable-traversable
- functions
- gen
- lists
- maybe
- prelude
- st
- tailrec
- tuples
- typelevel-prelude
- unfoldable
fork:
type: registry
version: 6.0.0
integrity: sha256-X7u0SuCvFbLbzuNEKLBNuWjmcroqMqit4xEzpQwAP7E=
dependencies:
- aff
form-urlencoded:
type: registry
version: 7.0.0
integrity: sha256-WUzk8DTjrbPVHKZ5w7XpPBO6ci6xFhvYguHp6RvX+18=
dependencies:
- foldable-traversable
- js-uri
- maybe
- newtype
- prelude
- strings
- tuples
formatters:
type: registry
version: 7.0.0
integrity: sha256-5JaC9d2p0xoqJWjWxlHH19R4iJwFTBr4j7SlYcLgicE=
dependencies:
- datetime
- fixed-points
- lists
- numbers
- parsing
- prelude
- transformers
free:
type: registry
version: 7.1.0
integrity: sha256-JAumgEsGSzJCNLD8AaFvuX7CpqS5yruCngi6yI7+V5k=
dependencies:
- catenable-lists
- control
- distributive
- either
- exists
- foldable-traversable
- invariant
- lazy
- maybe
- prelude
- tailrec
- transformers
- tuples
- unsafe-coerce
functions:
type: registry
version: 6.0.0
integrity: sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI=
dependencies:
- prelude
functors:
type: registry
version: 5.0.0
integrity: sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU=
dependencies:
- bifunctors
- const
- contravariant
- control
- distributive
- either
- invariant
- maybe
- newtype
- prelude
- profunctor
- tuples
- unsafe-coerce
gen:
type: registry
version: 4.0.0
integrity: sha256-f7yzAXWwr+xnaqEOcvyO3ezKdoes8+WXWdXIHDBCAPI=
dependencies:
- either
- foldable-traversable
- identity
- maybe
- newtype
- nonempty
- prelude
- tailrec
- tuples
- unfoldable
graphql-client:
type: git
url: https://github.com/garganscript/purescript-graphql-client.git
rev: 051dc0fdef337980f615c29440a07f42c734de43
dependencies:
- aff
- affjax
- affjax-node
- affjax-web
- argonaut-codecs
- argonaut-core
- arrays
- bifunctors
- control
- datetime
- effect
- either
- enums
- filterable
- foldable-traversable
- foreign
- foreign-object
- functions
- halogen-subscriptions
- heterogeneous
- http-methods
- integers
- lists
- maybe
- media-types
- newtype
- node-fs
- now
- nullable
- numbers
- ordered-collections
- parsing
- partial
- prelude
- profunctor-lenses
- psci-support
- record
- string-parsers
- strings
- strings-extra
- transformers
- tuples
- typelevel-lists
- unfoldable
- unicode
- unsafe-coerce
- variant
halogen-subscriptions:
type: registry
version: 2.0.0
integrity: sha256-8/BPME/sC/kWMDxp0+n4k09gA1IIedXn2yUJ4pCH5xw=
dependencies:
- arrays
- effect
- foldable-traversable
- functors
- refs
- safe-coerce
- unsafe-reference
heterogeneous:
type: registry
version: 0.6.0
integrity: sha256-cfNYSK6yYmjTrkzk95Otpv6TUUkeBreexwqG/tBvUyg=
dependencies:
- either
- functors
- prelude
- record
- tuples
- variant
http-methods:
type: registry
version: 6.0.0
integrity: sha256-Orr7rbDGcp7qoqmUMXPRMjBx+C4jqOQcFe9+gE3nMgU=
dependencies:
- either
- prelude
- strings
identity:
type: registry
version: 6.0.0
integrity: sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY=
dependencies:
- control
- invariant
- newtype
- prelude
int64:
type: registry
version: 3.0.0
integrity: sha256-IK5NkLmqjdyqHo7MC3W2loWnpIzTjjJgSyePGV0Jw+c=
dependencies:
- effect
- foreign
- functions
- gen
- integers
- maybe
- nullable
- prelude
- unsafe-coerce
integers:
type: registry
version: 6.0.0
integrity: sha256-sf+sK26R1hzwl3NhXR7WAu9zCDjQnfoXwcyGoseX158=
dependencies:
- maybe
- numbers
- prelude
invariant:
type: registry
version: 6.0.0
integrity: sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=
dependencies:
- control
- prelude
js-date:
type: registry
version: 8.0.0
integrity: sha256-6TVF4DWg5JL+jRAsoMssYw8rgOVALMUHT1CuNZt8NRo=
dependencies:
- datetime
- effect
- exceptions
- foreign
- integers
- now
js-timers:
type: registry
version: 6.1.0
integrity: sha256-znHWLSSOYw15P5DTcsAdal2lf7nGA2yayLdOZ2t5r7o=
dependencies:
- effect
js-uri:
type: registry
version: 3.1.0
integrity: sha256-3p0ynHveCJmC2CXze+eMBdW/2l5e953Q8XMAKz+jxUo=
dependencies:
- functions
- maybe
lazy:
type: registry
version: 6.0.0
integrity: sha256-lMsfFOnlqfe4KzRRiW8ot5ge6HtcU3Eyh2XkXcP5IgU=
dependencies:
- control
- foldable-traversable
- invariant
- prelude
lcg:
type: registry
version: 4.0.0
integrity: sha256-h7ME5cthLfbgJOJdsZcSfFpwXsx4rf8YmhebU+3iSYg=
dependencies:
- effect
- integers
- maybe
- partial
- prelude
- random
lists:
type: registry
version: 7.0.0
integrity: sha256-EKF15qYqucuXP2lT/xPxhqy58f0FFT6KHdIB/yBOayI=
dependencies:
- bifunctors
- control
- foldable-traversable
- lazy
- maybe
- newtype
- nonempty
- partial
- prelude
- tailrec
- tuples
- unfoldable
markdown-it:
type: git
url: https://github.com/garganscript/purescript-markdown-it.git
rev: 94075f6b017999d15b7b09f255e1d67c7750496f
dependencies:
- options
- prelude
maybe:
type: registry
version: 6.0.0
integrity: sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=
dependencies:
- control
- invariant
- newtype
- prelude
media-types:
type: registry
version: 6.0.0
integrity: sha256-n/4FoGBasbVSYscGVRSyBunQ6CZbL3jsYL+Lp01mc9k=
dependencies:
- newtype
- prelude
milkis:
type: registry
version: 9.0.0
integrity: sha256-IeAPHAqqe4NmOpCjnjh6ROZZllM4tfNYAu2hfSOTNBg=
dependencies:
- aff-promise
- arraybuffer-types
- foreign-object
- prelude
- typelevel-prelude
mmorph:
type: registry
version: 7.0.0
integrity: sha256-urZlZNNqGeQFe5D/ClHlR8QgGBNHTMFPtJ5S5IpflTQ=
dependencies:
- free
- functors
- transformers
newtype:
type: registry
version: 5.0.0
integrity: sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=
dependencies:
- prelude
- safe-coerce
node-buffer:
type: registry
version: 9.0.0
integrity: sha256-PWE2DJ5ruBLCmeA/fUiuySEFmUJ/VuRfyrnCuVZBlu4=
dependencies:
- arraybuffer-types
- effect
- maybe
- nullable
- st
- unsafe-coerce
node-event-emitter:
type: registry
version: 3.0.0
integrity: sha256-Qw0MjsT4xRH2j2i4K8JmRjcMKnH5z1Cw39t00q4LE4w=
dependencies:
- effect
- either
- functions
- maybe
- nullable
- prelude
- unsafe-coerce
node-fs:
type: registry
version: 9.1.0
integrity: sha256-TzhvGdrwcM0bazDvrWSqh+M/H8GKYf1Na6aGm2Qg4+c=
dependencies:
- datetime
- effect
- either
- enums
- exceptions
- functions
- integers
- js-date
- maybe
- node-buffer
- node-path
- node-streams
- nullable
- partial
- prelude
- strings
- unsafe-coerce
node-path:
type: registry
version: 5.0.0
integrity: sha256-pd82nQ+2l5UThzaxPdKttgDt7xlsgIDLpPG0yxDEdyE=
dependencies:
- effect
node-streams:
type: registry
version: 9.0.0
integrity: sha256-2n6dq7YWleTDmD1Kur/ul7Cn08IvWrScgPf+0PgX2TQ=
dependencies:
- aff
- effect
- either
- exceptions
- node-buffer
- node-event-emitter
- nullable
- prelude
nonempty:
type: registry
version: 7.0.0
integrity: sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs=
dependencies:
- control
- foldable-traversable
- maybe
- prelude
- tuples
- unfoldable
now:
type: registry
version: 6.0.0
integrity: sha256-xZ7x37ZMREfs6GCDw/h+FaKHV/3sPWmtqBZRGTxybQY=
dependencies:
- datetime
- effect
nullable:
type: registry
version: 6.0.0
integrity: sha256-yiGBVl3AD+Guy4kNWWeN+zl1gCiJK+oeIFtZtPCw4+o=
dependencies:
- effect
- functions
- maybe
numbers:
type: registry
version: 9.0.1
integrity: sha256-/9M6aeMDBdB4cwYDeJvLFprAHZ49EbtKQLIJsneXLIk=
dependencies:
- functions
- maybe
options:
type: registry
version: 7.0.0
integrity: sha256-treC6h+jvzcWhplPaF/aMENCOx+JGk+ysa5pL1BGHtg=
dependencies:
- contravariant
- foreign
- foreign-object
- maybe
- tuples
ordered-collections:
type: registry
version: 3.2.0
integrity: sha256-o9jqsj5rpJmMdoe/zyufWHFjYYFTTsJpgcuCnqCO6PM=
dependencies:
- arrays
- foldable-traversable
- gen
- lists
- maybe
- partial
- prelude
- st
- tailrec
- tuples
- unfoldable
orders:
type: registry
version: 6.0.0
integrity: sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink=
dependencies:
- newtype
- prelude
parallel:
type: registry
version: 7.0.0
integrity: sha256-gUC9i4Txnx9K9RcMLsjujbwZz6BB1bnE2MLvw4GIw5o=
dependencies:
- control
- effect
- either
- foldable-traversable
- functors
- maybe
- newtype
- prelude
- profunctor
- refs
- transformers
parsing:
type: registry
version: 10.2.0
integrity: sha256-ZDIdMFAKkst57x6BVa1aUWJnS8smoZnXsZ339Aq1mPA=
dependencies:
- arrays
- control
- effect
- either
- enums
- foldable-traversable
- functions
- identity
- integers
- lazy
- lists
- maybe
- newtype
- nullable
- numbers
- partial
- prelude
- st
- strings
- tailrec
- transformers
- tuples
- unfoldable
- unicode
- unsafe-coerce
partial:
type: registry
version: 4.0.0
integrity: sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4=
dependencies: []
pipes:
type: registry
version: 8.0.0
integrity: sha256-kvfqGM4cPA/wCcBHbp5psouFw5dZGvku2462x7ZBwSY=
dependencies:
- aff
- lists
- mmorph
- prelude
- tailrec
- transformers
- tuples
prelude:
type: registry
version: 6.0.1
integrity: sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=
dependencies: []
profunctor:
type: registry
version: 6.0.1
integrity: sha256-E58hSYdJvF2Qjf9dnWLPlJKh2Z2fLfFLkQoYi16vsFk=
dependencies:
- control
- distributive
- either
- exists
- invariant
- newtype
- prelude
- tuples
profunctor-lenses:
type: registry
version: 8.0.0
integrity: sha256-K7f29rHRHgVSb2Y/PaSKtfYPriP6n87BJNO7EhsZHas=
dependencies:
- arrays
- bifunctors
- const
- control
- distributive
- either
- foldable-traversable
- foreign-object
- functors
- identity
- lists
- maybe
- newtype
- ordered-collections
- partial
- prelude
- profunctor
- record
- transformers
- tuples
psci-support:
type: registry
version: 6.0.0
integrity: sha256-C6ql4P9TEP06hft/1Z5QumPA4yARR4VIxDdhmL1EO+Y=
dependencies:
- console
- effect
- prelude
quickcheck:
type: registry
version: 8.0.1
integrity: sha256-ZvpccKQCvgslTXZCNmpYW4bUsFzhZd/kQUr2WmxFTGY=
dependencies:
- arrays
- console
- control
- effect
- either
- enums
- exceptions
- foldable-traversable
- gen
- identity
- integers
- lazy
- lcg
- lists
- maybe
- newtype
- nonempty
- numbers
- partial
- prelude
- record
- st
- strings
- tailrec
- transformers
- tuples
- unfoldable
quickcheck-laws:
type: registry
version: 7.0.0
integrity: sha256-rnzVTiDnymzYkvnhI8EvPwrmO8LgcTnrMTuiI172Tkc=
dependencies:
- enums
- quickcheck
random:
type: registry
version: 6.0.0
integrity: sha256-CJ611a35MPCE7XQMp0rdC6MCn76znlhisiCRgboAG+Q=
dependencies:
- effect
- integers
react:
type: registry
version: 11.0.0
integrity: sha256-BjNR0bcjA/ye4x3shQnpj+opSNPkneP3G9zPf9BOAQg=
dependencies:
- effect
- exceptions
- maybe
- nullable
- prelude
- typelevel-prelude
- unsafe-coerce
reactix:
type: registry
version: 0.6.1
integrity: sha256-mM6JZFWfeMhgMJa9oGdzNchkp/Xcnv2e/oGc0nZp6EQ=
dependencies:
- dom-simple
- effect
- ffi-simple
- foldable-traversable
- functions
- maybe
- nullable
- prelude
- strings
- tuples
- unsafe-coerce
record:
type: registry
version: 4.0.0
integrity: sha256-Za5U85bTRJEfGK5Sk4hM41oXy84YQI0I8TL3WUn1Qzg=
dependencies:
- functions
- prelude
- unsafe-coerce
record-extra:
type: registry
version: 5.0.1
integrity: sha256-7vnREK2fpGJ7exswSeA9UpZFuU+UXRt3SA7AFUldT/Y=
dependencies:
- arrays
- functions
- lists
- prelude
- record
- tuples
- typelevel-prelude
refs:
type: registry
version: 6.0.0
integrity: sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s=
dependencies:
- effect
- prelude
routing:
type: registry
version: 11.0.0
integrity: sha256-h2ZehllxQlfJDYh6Rlj0VySlJwqJvY4LMkb7p8cjxLs=
dependencies:
- aff
- console
- control
- effect
- either
- foldable-traversable
- integers
- js-uri
- lists
- maybe
- numbers
- partial
- prelude
- semirings
- tuples
- validation
- web-html
safe-coerce:
type: registry
version: 2.0.0
integrity: sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=
dependencies:
- unsafe-coerce
semirings:
type: registry
version: 7.0.0
integrity: sha256-2qGNMxVYns7RJxZd1uGtJbGTeVl/6Ozsz9OM5gRM61A=
dependencies:
- foldable-traversable
- lists
- newtype
- prelude
sequences:
type: git
url: https://github.com/garganscript/purescript-sequences.git
rev: 96e368b99927c295b5f9036c754518e2c67bd162
dependencies:
- prelude
simple-json:
type: registry
version: 9.0.0
integrity: sha256-K3RJaThqsszTd+TEklzZmAdDqvIHWgXIfKqlsoykU1c=
dependencies:
- arrays
- exceptions
- foreign
- foreign-object
- nullable
- prelude
- record
- typelevel-prelude
- variant
simple-json-generics:
type: registry
version: 0.2.1
integrity: sha256-pDa2iKfp5BVRNuMjrFHLI0LUMwvcOPxl8Q1+CVi5cdI=
dependencies:
- control
- foreign
- prelude
- simple-json
- transformers
- typelevel-prelude
small-ffi:
type: registry
version: 4.0.1
integrity: sha256-wkZVtBU3PRMYqS5uYsrqPAzaVc6y4TqzfSMikoFgNxU=
dependencies:
- arrays
- console
- effect
- prelude
- quickcheck
spec:
type: registry
version: 7.6.0
integrity: sha256-+merGdQbL9zWONbnt8S8J9afGJ59MQqGtS0qSd3yu4I=
dependencies:
- aff
- ansi
- arrays
- avar
- bifunctors
- control
- datetime
- effect
- either
- exceptions
- foldable-traversable
- fork
- identity
- integers
- lists
- maybe
- newtype
- now
- ordered-collections
- parallel
- pipes
- prelude
- refs
- strings
- tailrec
- transformers
- tuples
spec-discovery:
type: git
url: https://github.com/garganscript/purescript-spec-discovery.git
rev: 8e1e85dea4b52c5b52f80003311226c327fbba64
dependencies:
- aff
- aff-promise
- effect
- foldable-traversable
- prelude
- spec
spec-quickcheck:
type: registry
version: 5.0.0
integrity: sha256-iE0iThqZCuDGe3pwg5RvqcL8E5cRQ4txDuloCclOsCs=
dependencies:
- aff
- prelude
- quickcheck
- random
- spec
st:
type: registry
version: 6.2.0
integrity: sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY=
dependencies:
- partial
- prelude
- tailrec
- unsafe-coerce
string-parsers:
type: registry
version: 8.0.0
integrity: sha256-9ATYh0S54ERoR+uhkCM59wBRvW/6zv6geHJ0TmcI644=
dependencies:
- arrays
- bifunctors
- control
- either
- foldable-traversable
- lists
- maybe
- prelude
- strings
- tailrec
string-search:
type: git
url: https://gitlab.iscpif.fr/gargantext/purescript-string-search.git
rev: ac2a05d7c3728b6d26a979903c444049b4f53420
dependencies:
- int64
- prelude
strings:
type: registry
version: 6.0.1
integrity: sha256-WssD3DbX4OPzxSdjvRMX0yvc9+pS7n5gyPv5I2Trb7k=
dependencies:
- arrays
- control
- either
- enums
- foldable-traversable
- gen
- integers
- maybe
- newtype
- nonempty
- partial
- prelude
- tailrec
- tuples
- unfoldable
- unsafe-coerce
strings-extra:
type: registry
version: 4.0.0
integrity: sha256-tah7VFvEvFF4tpWXgWwGFIynpWHkYe5tpy6bWi5tMpU=
dependencies:
- arrays
- foldable-traversable
- maybe
- prelude
- strings
- unicode
stringutils:
type: registry
version: 0.0.12
integrity: sha256-t63QWBlp49U0nRqUcFryKflSJsNKGTQAHKjn24/+ooI=
dependencies:
- arrays
- integers
- maybe
- partial
- prelude
- strings
tailrec:
type: registry
version: 6.1.0
integrity: sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk=
dependencies:
- bifunctors
- effect
- either
- identity
- maybe
- partial
- prelude
- refs
these:
type: registry
version: 6.0.0
integrity: sha256-6poQvFzGw7Ir9mTDEbFV9N6+cUeSHe0FdzTR2ZK1o6g=
dependencies:
- arrays
- gen
- lists
- quickcheck
- quickcheck-laws
- tuples
toestand:
type: registry
version: 0.9.0
integrity: sha256-ghQW2Xh6u1qXEGKByq9XGI6ZNdNTZcOxKHOJatCo7RM=
dependencies:
- effect
- foldable-traversable
- ordered-collections
- prelude
- reactix
- record
- tuples
- typelevel-prelude
- typisch
transformers:
type: registry
version: 6.0.0
integrity: sha256-Pzw40HjthX77tdPAYzjx43LK3X5Bb7ZspYAp27wksFA=
dependencies:
- control
- distributive
- effect
- either
- exceptions
- foldable-traversable
- identity
- lazy
- maybe
- newtype
- prelude
- tailrec
- tuples
- unfoldable
tuples:
type: registry
version: 7.0.0
integrity: sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M=
dependencies:
- control
- invariant
- prelude
tuples-native:
type: git
url: https://github.com/garganscript/purescript-tuples-native.git
rev: 72f097fb04c4ddb72d6994887ece856fdc59634f
dependencies:
- functions
- prelude
- tuples
- typelevel
type-equality:
type: registry
version: 4.0.1
integrity: sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw=
dependencies: []
typelevel:
type: registry
version: 6.0.0
integrity: sha256-Iu7INcwTC/SbKcienMe7KKQvWku2VhCZSGCvrQWVVoc=
dependencies:
- partial
- prelude
- tuples
- typelevel-prelude
- unsafe-coerce
typelevel-lists:
type: registry
version: 2.1.0
integrity: sha256-h7fTc4i98F/mRizWGIjm91eRwUQlC6/33Lm1JbnD3BE=
dependencies:
- prelude
- tuples
- typelevel-peano
- typelevel-prelude
- unsafe-coerce
typelevel-peano:
type: registry
version: 1.0.1
integrity: sha256-DO/EazDNu07i2ekvj8vIdgH2HdKWUjfohNYo5aNQZy0=
dependencies:
- arrays
- console
- effect
- prelude
- psci-support
- typelevel-prelude
- unsafe-coerce
typelevel-prelude:
type: registry
version: 7.0.0
integrity: sha256-uFF2ph+vHcQpfPuPf2a3ukJDFmLhApmkpTMviHIWgJM=
dependencies:
- prelude
- type-equality
typisch:
type: registry
version: 0.4.0
integrity: sha256-zdTxMuBOlh5AcmH52o+Vvp4kj8gnv3ISOVgUmu2o6wM=
dependencies:
- prelude
unfoldable:
type: registry
version: 6.0.0
integrity: sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg=
dependencies:
- foldable-traversable
- maybe
- partial
- prelude
- tuples
unicode:
type: registry
version: 6.0.0
integrity: sha256-QJnTVZpmihEAUiMeYrfkusVoziJWp2hJsgi9bMQLue8=
dependencies:
- foldable-traversable
- maybe
- strings
unordered-collections:
type: registry
version: 3.1.0
integrity: sha256-H2eQR+ylI+cljz4XzWfEbdF7ee+pnw2IZCeq69AuJ+Q=
dependencies:
- arrays
- enums
- functions
- integers
- lists
- prelude
- record
- tuples
- typelevel-prelude
- unfoldable
unsafe-coerce:
type: registry
version: 6.0.0
integrity: sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=
dependencies: []
unsafe-reference:
type: registry
version: 5.0.0
integrity: sha256-zU7BhfJU14nXQRZG9iADsp0mSiKhz07OcKyjRB2YT+Y=
dependencies:
- prelude
uri:
type: registry
version: 9.0.0
integrity: sha256-7joTbdbzpCTccLL+4+CjS9dVdl7MY8HnsLRuxykHXDM=
dependencies:
- arrays
- integers
- js-uri
- numbers
- parsing
- prelude
- profunctor-lenses
- these
- transformers
- unfoldable
uuid:
type: registry
version: 9.0.0
integrity: sha256-DcLGdOzdMsqtENDLQ0tPpd8f/gU9AfwmMzGwSs6EGas=
dependencies:
- aff
- effect
- maybe
- partial
- prelude
- spec
- strings
validation:
type: registry
version: 6.0.0
integrity: sha256-kfFailaIW4spGxbRk4261z/RGT0Sb7Dx5f3qihy0MTw=
dependencies:
- bifunctors
- control
- either
- foldable-traversable
- newtype
- prelude
variant:
type: registry
version: 8.0.0
integrity: sha256-SR//zQDg2dnbB8ZHslcxieUkCeNlbMToapvmh9onTtw=
dependencies:
- enums
- lists
- maybe
- partial
- prelude
- record
- tuples
- unsafe-coerce
web-dom:
type: registry
version: 6.0.0
integrity: sha256-1kSKWFDI4LupdmpjK01b1MMxDFW7jvatEgPgVmCmSBQ=
dependencies:
- web-events
web-events:
type: registry
version: 4.0.0
integrity: sha256-YDt8b6u1tzGtnWyNRodne57iO8FNSGPaTCVzBUyUn4k=
dependencies:
- datetime
- enums
- foreign
- nullable
web-file:
type: registry
version: 4.0.0
integrity: sha256-1h5jPBkvjY71jLEdwVadXCx86/2inNoMBO//Rd3eCSU=
dependencies:
- foreign
- media-types
- web-dom
web-html:
type: registry
version: 4.1.0
integrity: sha256-ByqS/h1/yG+hjCOnOQp7L1QpIWzQENNKB1kaHtpEhlE=
dependencies:
- js-date
- web-dom
- web-file
- web-storage
web-storage:
type: registry
version: 5.0.0
integrity: sha256-q+6lxcnfWxus0/nDeFVtF1V+tLehZvvXQ0cduYPLksY=
dependencies:
- nullable
- web-events
web-url:
type: registry
version: 2.0.0
integrity: sha256-isicTqg0+JZmIK+eD3kwQroOocufYDGZVNIx/wFw488=
dependencies:
- aff
- effect
- maybe
- partial
- prelude
- spec
- tuples
web-xhr:
type: registry
version: 5.0.1
integrity: sha256-3dbIPVG66S+hPrgEVnpD78hrGjE7qlBbsReWOz89Ios=
dependencies:
- arraybuffer-types
- datetime
- http-methods
- web-dom
- web-file
- web-html
workspace:
packageSet:
registry: 50.13.1
extraPackages:
# garganscript packages
d3:
git: https://github.com/garganscript/purescript-d3.git
ref: v0.11.0
debouncing: 0.1.2
reactix: 0.6.1
string-search:
git: https://gitlab.iscpif.fr/gargantext/purescript-string-search.git
ref: spago-next
# custom forks
data-default:
git: https://github.com/garganscript/purescript-data-default.git
ref: v0.4.0
graphql-client:
git: https://github.com/garganscript/purescript-graphql-client.git
ref: spago-next-9.3.2
markdown-it:
git: https://github.com/garganscript/purescript-markdown-it.git
ref: spago-next
sequences:
git: https://github.com/garganscript/purescript-sequences.git
ref: v3.0.2-spago-next
simple-json-generics: 0.2.1
tuples-native:
git: https://github.com/garganscript/purescript-tuples-native.git
ref: v2.3.0-spago-next
# for tests
spec-discovery:
git: https://github.com/garganscript/purescript-spec-discovery.git
ref: v8.2.0-spago-next
package:
name: gargantext
dependencies:
# debugging
- aff: ">=7.1.0 <8.0.0"
- aff-promise: ">=4.0.0 <5.0.0"
- affjax: ">=13.0.0 <14.0.0"
- affjax-web: ">=1.0.0 <2.0.0"
- argonaut: ">=9.0.0 <10.0.0"
- argonaut-codecs: ">=9.1.0 <10.0.0"
- argonaut-core: ">=7.0.0 <8.0.0"
- arraybuffer-types: ">=3.0.2 <4.0.0"
- arrays: ">=7.3.0 <8.0.0"
- bifunctors: ">=6.0.0 <7.0.0"
- colors: ">=7.0.1 <8.0.0"
- console: ">=6.1.0 <7.0.0"
- control: ">=6.0.0 <7.0.0"
- convertable-options: ">=1.0.0 <2.0.0"
- css: ">=6.0.0 <7.0.0"
- d3: "*"
- data-default: "*"
- datetime: ">=6.1.0 <7.0.0"
- debouncing: ">=0.1.0 <0.2.0"
- debug: ">=6.0.2 <7.0.0"
- dom-filereader: ">=7.0.0 <8.0.0"
- dom-simple: ">=0.4.0 <0.5.0"
- effect: ">=4.0.0 <5.0.0"
- either: ">=6.1.0 <7.0.0"
- enums: ">=6.0.1 <7.0.0"
- exceptions: ">=6.0.0 <7.0.0"
- ffi-simple: ">=0.5.1 <0.6.0"
- foldable-traversable: ">=6.0.0 <7.0.0"
- foreign: ">=7.0.0 <8.0.0"
- foreign-object: ">=4.1.0 <5.0.0"
- form-urlencoded: ">=7.0.0 <8.0.0"
- formatters: ">=7.0.0 <8.0.0"
- functions: ">=6.0.0 <7.0.0"
- graphql-client: "*"
- heterogeneous: ">=0.6.0 <0.7.0"
- http-methods: ">=6.0.0 <7.0.0"
- integers: ">=6.0.0 <7.0.0"
- js-timers: ">=6.1.0 <7.0.0"
- lists: ">=7.0.0 <8.0.0"
- markdown-it: "*"
- maybe: ">=6.0.0 <7.0.0"
- media-types: ">=6.0.0 <7.0.0"
- milkis: ">=9.0.0 <10.0.0"
- newtype: ">=5.0.0 <6.0.0"
- nonempty: ">=7.0.0 <8.0.0"
- now: ">=6.0.0 <7.0.0"
- nullable: ">=6.0.0 <7.0.0"
- numbers: ">=9.0.1 <10.0.0"
- ordered-collections: ">=3.2.0 <4.0.0"
- orders: ">=6.0.0 <7.0.0"
- parallel: ">=7.0.0 <8.0.0"
- partial: ">=4.0.0 <5.0.0"
- prelude: ">=6.0.1 <7.0.0"
- profunctor-lenses: ">=8.0.0 <9.0.0"
- random: ">=6.0.0 <7.0.0"
- react: ">=11.0.0 <12.0.0"
- reactix: ">=0.6.1 <0.7.0"
- record: ">=4.0.0 <5.0.0"
- record-extra: ">=5.0.1 <6.0.0"
- routing: ">=11.0.0 <12.0.0"
- sequences: "*"
- simple-json: ">=9.0.0 <10.0.0"
- simple-json-generics: "*"
- string-search: "*"
- strings: ">=6.0.1 <7.0.0"
- strings-extra: ">=4.0.0 <5.0.0"
- stringutils: ">=0.0.12 <0.0.13"
- these: ">=6.0.0 <7.0.0"
- toestand: ">=0.9.0 <0.10.0"
- transformers: ">=6.0.0 <7.0.0"
- tuples: ">=7.0.0 <8.0.0"
- tuples-native: "*"
- typelevel: ">=6.0.0 <7.0.0"
- typelevel-prelude: ">=7.0.0 <8.0.0"
- unfoldable: ">=6.0.0 <7.0.0"
- unordered-collections: ">=3.1.0 <4.0.0"
- unsafe-coerce: ">=6.0.0 <7.0.0"
- uri: ">=9.0.0 <10.0.0"
- uuid: ">=9.0.0 <10.0.0"
- validation: ">=6.0.0 <7.0.0"
- web-file: ">=4.0.0 <5.0.0"
- web-html: ">=4.1.0 <5.0.0"
- web-storage: ">=5.0.0 <6.0.0"
- web-url: ">=2.0.0 <3.0.0"
- web-xhr: ">=5.0.1 <6.0.0"
build:
# Be strict about missing packages
# https://github.com/purescript/spago/issues/1211#issuecomment-2066083651
pedanticPackages: true
# convert compiler warnings to errors:
# strict:
# true
censorProjectWarnings:
- UnusedDctorExplicitImport
- UnusedDctorImport
- UnusedDeclaration
- UnusedExplicitImport
- UnusedImport
- UnusedName
- UnusedTypeVar
test:
main: Test.Main
dependencies:
- spec
- spec-discovery
- spec-quickcheck
......@@ -235,6 +235,8 @@ graphViewCpt = R.memo' $ here.component "graphView" cpt where
, sigmaRef
} _ = do
-- { edgeConfluence, edgeWeight } <- GraphStore.use
-- edgeConfluence' <- R2.useLive' edgeConfluence
-- edgeWeight' <- R2.useLive' edgeWeight
-- nodeSize' <- R2.useLive' nodeSize
......@@ -410,7 +412,11 @@ hooksTransformGraph = do
params <- transformGraphStoreParams
graph' <- R2.useLive' store.graph
-- R.useEffect' $ do
-- here.log2 "[hooksTransformGraph] hashed" $ hashLiveProps params
R.useEffect2' (hashLiveProps params) graph' $ do
-- here.log2 "[hooksTransformGraph] transformed" $ transformGraph graph' params
T.write_ (transformGraph graph' params) store.transformedGraph
transformGraph :: SigmaxT.SGraph -> Record LiveProps -> SigmaxT.SGraph
......@@ -450,8 +456,8 @@ transformGraph graph { edgeConfluence'
edge { hidden = true }
edgeHideWeight :: Record SigmaxT.Edge -> Record SigmaxT.Edge
edgeHideWeight edge@{ weightIdx } =
if Range.within edgeWeight' $ toNumber weightIdx then
edgeHideWeight edge@{ weight } =
if Range.within edgeWeight' weight then
edge
else
edge { hidden = true }
......
......@@ -44,6 +44,7 @@ type Store =
, edgeConfluence :: T.Box Range.NumberRange
, edgeConfluenceRange :: T.Box Range.NumberRange
, edgeWeight :: T.Box Range.NumberRange
, edgeWeightRange :: T.Box Range.NumberRange
, forceAtlasState :: T.Box SigmaxT.ForceAtlasState
, noverlapState :: T.Box SigmaxT.NoverlapState
, graphStage :: T.Box GET.Stage
......@@ -79,6 +80,7 @@ type State =
, edgeConfluence :: Range.NumberRange
, edgeConfluenceRange :: Range.NumberRange
, edgeWeight :: Range.NumberRange
, edgeWeightRange :: Range.NumberRange
, forceAtlasState :: SigmaxT.ForceAtlasState
, noverlapState :: SigmaxT.NoverlapState
, graphStage :: GET.Stage
......@@ -109,6 +111,7 @@ options ::
, mouseSelectorSize :: Number
, multiSelectEnabled :: Boolean
, edgeConfluence :: Range.NumberRange
, edgeWeight :: Range.NumberRange
, graphStage :: GET.Stage
, nodeSize :: Range.NumberRange
--, showLouvain :: Boolean
......@@ -131,6 +134,7 @@ options =
, labelRenderedSizeThreshold : 2.0
, mouseSelectorSize : 15.0
, edgeConfluence : Range.Closed { min: 0.0, max: 1.0 }
, edgeWeight : Range.Closed { min: 0.0, max: 1.0 }
, graphStage : GET.Init
, nodeSize : Range.Closed { min: 0.0, max: 100.0 }
--, showLouvain : false
......
......@@ -11,7 +11,7 @@ import Effect.Timer (setTimeout)
import Gargantext.Components.Bootstrap as B
import Gargantext.Components.GraphExplorer.Store as GraphStore
import Gargantext.Components.GraphExplorer.Toolbar.Buttons (cameraButton, centerButton, edgesToggleButton, louvainButton, pauseForceAtlasButton, pauseNoverlapButton, multiSelectEnabledButton)
import Gargantext.Components.GraphExplorer.Toolbar.RangeControl (edgeConfluenceControl, nodeSizeControl)
import Gargantext.Components.GraphExplorer.Toolbar.RangeControl (edgeConfluenceControl, edgeWeightControl, nodeSizeControl)
import Gargantext.Components.GraphExplorer.Toolbar.SlideButton (labelSizeButton, labelRenderedSizeThresholdButton, mouseSelectorSizeSlider)
import Gargantext.Components.GraphExplorer.Types as GET
import Gargantext.Hooks.Sigmax.ForceAtlas2 as ForceAtlas
......@@ -52,7 +52,8 @@ controlsCpt = R.memo' $ here.component "controls" cpt where
-- |
{ edgeConfluence
, edgeConfluenceRange
-- , edgeWeight
, edgeWeight
, edgeWeightRange
, forceAtlasState
, noverlapState
, graph
......@@ -80,6 +81,7 @@ controlsCpt = R.memo' $ here.component "controls" cpt where
selectedNodeIds' <- R2.useLive' selectedNodeIds
showSidebar' <- R2.useLive' showSidebar
edgeConfluenceRange' <- R2.useLive' edgeConfluenceRange
edgeWeightRange' <- R2.useLive' edgeWeightRange
nodeSizeRange' <- R2.useLive' nodeSizeRange
-- session <- useSession
......@@ -207,12 +209,10 @@ controlsCpt = R.memo' $ here.component "controls" cpt where
}
,
gap, gap
,
labelRenderedSizeThresholdButton
, edgeWeightControl
{ forceAtlasState
, sigmaRef
, state: labelRenderedSizeThreshold
}
, range: edgeWeightRange'
, state: edgeWeight }
]
,
-- Run spatialization
......@@ -321,12 +321,12 @@ controlsCpt = R.memo' $ here.component "controls" cpt where
{ forceAtlasState
, range: edgeConfluenceRange'
, state: edgeConfluence }
{- ,
edgeWeightControl
, gap
, labelRenderedSizeThresholdButton
{ forceAtlasState
, range: edgeWeightRange
, state: edgeWeight }
-}
, sigmaRef
, state: labelRenderedSizeThreshold
}
,
gap, gap
,
......
......@@ -6,19 +6,29 @@ module Gargantext.Components.GraphExplorer.Toolbar.RangeControl
, nodeSizeControl
) where
import Data.Maybe (Maybe(..))
import Data.Tuple.Nested((/\))
import Debug (spy)
import Effect.Aff (launchAff_)
import Effect.Class (liftEffect)
import Effect.Debouncing as Debounce
import FFI.Simple (delay)
import Gargantext.Components.RangeSlider as RS
import Gargantext.Hooks.Sigmax.Types as SigmaxTypes
import Gargantext.Utils.Range as Range
import Gargantext.Utils.Reactix as R2
import Prelude
import Reactix as R
import Reactix.DOM.HTML as H
import Toestand as T
import Gargantext.Components.RangeSlider as RS
import Gargantext.Hooks.Sigmax.Types as SigmaxTypes
import Gargantext.Utils.Range as Range
import Gargantext.Utils.Reactix as R2
here :: R2.Here
here = R2.here "Gargantext.Components.GraphExplorer.Toolbar.RangeControl"
defaultThrottleInterval :: Int
defaultThrottleInterval = 500
type Props =
( caption :: String
, sliderProps :: Record RS.Props
......@@ -54,22 +64,24 @@ edgeConfluenceControlCpt :: R.Component EdgeConfluenceControlProps
edgeConfluenceControlCpt = here.component "edgeConfluenceControl" cpt
where
cpt { forceAtlasState
, range: Range.Closed { min, max }
, range
, state
} _ = do
forceAtlasState' <- R2.useLive' forceAtlasState
state' <- T.useLive T.unequal state
pure $ rangeControl {
caption: "Edge Confluence Weight"
, sliderProps: {
bounds: Range.Closed { min, max }
bounds: range
, epsilon: 0.01
, height: 5.0
, initialValue: state'
, onChange: \rng -> T.write_ rng state
, status: SigmaxTypes.forceAtlasComponentStatus forceAtlasState'
, step: 1.0
, throttleInterval: Just defaultThrottleInterval
, width: 10.0
}
}
......@@ -88,22 +100,27 @@ edgeWeightControlCpt :: R.Component EdgeWeightControlProps
edgeWeightControlCpt = here.component "edgeWeightControl" cpt
where
cpt { forceAtlasState
, range: Range.Closed { min, max }
, range: range@(Range.Closed { min, max })
, state
} _ = do
forceAtlasState' <- R2.useLive' forceAtlasState
state' <- T.useLive T.unequal state
pure $ rangeControl {
caption: "Edge Weight"
, sliderProps: {
bounds: Range.Closed { min, max }
bounds: range
, initialValue: state'
, epsilon: 1.0
, epsilon: (max - min) / 100.0
, height: 5.0
, onChange: \rng -> T.write_ rng state
-- , onChange: \rng -> Debounce.call onChange rng
-- , onChange: \rng -> RD.callDebouncedCallback rd rng
-- , onChange: onChange'
, status: SigmaxTypes.forceAtlasComponentStatus forceAtlasState'
, step: 1.0
, throttleInterval: Just defaultThrottleInterval
, width: 10.0
}
}
......@@ -138,6 +155,7 @@ nodeSizeControlCpt = here.component "nodeSizeControl" cpt
, onChange: \rng -> T.write_ rng state
, status: SigmaxTypes.forceAtlasComponentStatus forceAtlasState'
, step: 1.0
, throttleInterval: Just defaultThrottleInterval
, width: 10.0
}
}
......@@ -7,10 +7,11 @@ module Gargantext.Components.GraphExplorer.Toolbar.SlideButton
) where
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Maybe (Maybe(..), fromMaybe)
import Data.Number as DN
import Prelude
import Effect (Effect)
import Effect.Debouncing as Debounce
import Prelude
import Reactix as R
import Reactix.DOM.HTML as H
import Toestand as T
......@@ -25,20 +26,29 @@ import Gargantext.Utils.Reactix as R2
here :: R2.Here
here = R2.here "Gargantext.Components.GraphExplorer.Toolbar.SlideButton"
defaultThrottleInterval :: Int
defaultThrottleInterval = 500
type Props =
( caption :: String
, forceAtlasState :: T.Box SigmaxTypes.ForceAtlasState
, min :: Number
, max :: Number
, onChange :: forall e. e -> Effect Unit
, onChange :: Number -> Effect Unit
, state :: T.Box Number
, throttleInterval :: Maybe Int -- then Nothing, no throttling is done
)
sizeButton :: Record Props -> R.Element
sizeButton props = R.createElement sizeButtonCpt props []
sizeButtonCpt :: R.Component Props
sizeButtonCpt = here.component "sizeButton" cpt where
cpt { state, caption, forceAtlasState, min, max, onChange } _ = do
cpt { state, caption, forceAtlasState, min, max, onChange, throttleInterval } _ = do
let throttled = Debounce.throttleWithDebounceAtEnd onChange (fromMaybe 0 throttleInterval)
let onChangeThrottled = case throttleInterval of
Nothing -> onChange
Just ti -> \rng -> Debounce.call throttled rng
defaultValue <- T.useLive T.unequal state
forceAtlasState' <- R2.useLive' forceAtlasState
......@@ -61,7 +71,11 @@ sizeButtonCpt = here.component "sizeButton" cpt where
, min: show min
, max: show max
, defaultValue
, on: { input: onChange }
, on: { input: \e -> do
let v = DN.fromString $ R.unsafeEventValue e
case v of
Nothing -> pure unit
Just vv -> onChangeThrottled vv }
, className: "range-simple__input"
, disabled: status == Disabled
}
......@@ -92,12 +106,8 @@ labelSizeButtonCpt = here.component "labelSizeButton" cpt
, forceAtlasState
, min: minLabelSize
, max: maxLabelSize
, onChange: \e -> do
, onChange: \newValue -> do
let sigma = R.readRef sigmaRef
let newValue' = DN.fromString $ R.unsafeEventValue e
case newValue' of
Nothing -> pure unit
Just newValue ->
Sigmax.dependOnSigma sigma "[labelSizeButton] sigma: Nothing" $ \s -> do
let ratio = (newValue - minLabelSize) / (defaultLabelSize - minLabelSize)
let nodes = SigmaxTypes.graphNodes graph'
......@@ -116,6 +126,7 @@ labelSizeButtonCpt = here.component "labelSizeButton" cpt
--, labelSizeRatio: newValue / 2.5
}
T.write_ newValue state
, throttleInterval: Just defaultThrottleInterval
}
type LabelRenderedSizeThresholdButtonProps =
......@@ -135,17 +146,14 @@ labelRenderedSizeThresholdButtonCpt = here.component "labelRenderedSizeThreshold
, forceAtlasState
, min: 0.0
, max: 10.0
, onChange: \e -> do
, onChange: \newValue -> do
let sigma = R.readRef sigmaRef
let newValue' = DN.fromString $ R.unsafeEventValue e
case newValue' of
Nothing -> pure unit
Just newValue ->
Sigmax.dependOnSigma sigma "[labelRenderdSizeThresholdButton] sigma: Nothing" $ \s -> do
Sigma.setSettings s {
labelRenderedSizeThreshold: newValue
}
T.write_ newValue state
, throttleInterval: Just defaultThrottleInterval
}
type MouseSelectorSizeSliderProps =
......@@ -164,16 +172,13 @@ mouseSelectorSizeSliderCpt = here.component "mouseSelectorSizeSlider" cpt
, forceAtlasState
, min: 1.0
, max: 100.0
, onChange: \e -> do
, onChange: \newValue -> do
let sigma = R.readRef sigmaRef
let newValue' = DN.fromString $ R.unsafeEventValue e
case newValue' of
Nothing -> pure unit
Just newValue ->
Sigmax.dependOnSigma sigma "[mouseSelectorSizeButton] sigma: Nothing" $ \s -> do
Sigma.setSettings s {
mouseSelectorSize: newValue
}
T.write_ newValue state
, state
, throttleInterval: Just defaultThrottleInterval
}
......@@ -25,7 +25,6 @@ import Gargantext.Routes (AppRoute)
import Gargantext.Sessions (Session(..))
import Gargantext.Types (NodeType)
import Gargantext.Utils.Reactix as R2
import GraphQL.Client.Args (type (==>))
import GraphQL.Client.BaseClients.Urql (UrqlClient, createClient)
import GraphQL.Client.Query (decodeGqlRes) --, mutationJson)
import GraphQL.Client.SafeQueryName (safeQueryName)
......@@ -146,27 +145,27 @@ mutationGql session name q = do
-- Schema
type Schema
= { annuaire_contacts :: { contact_id :: Int } ==> Array AnnuaireContact
, context_ngrams :: { context_id :: Int, list_id :: Int } ==> Array String
, contexts :: { context_id :: Int, node_id :: Int } ==> Array GQLCTX.NodeContext
, contexts_for_ngrams :: { corpus_id :: Int, ngrams_terms :: Array String } ==> Array GQLCTX.Context
, imt_schools :: {} ==> Array GQLIMT.School
, languages :: {} ==> Array GQLNLP.Language
, node_children :: { node_id :: Int, child_type :: NodeType } ==> Array GQLNode.Node
, node_parent :: { node_id :: Int, parent_type :: NodeType } ==> Array GQLNode.Node
, nodes :: { node_id :: Int } ==> Array GQLNode.Node
, nodes_corpus :: { corpus_id :: Int } ==> Array GQLNode.Corpus
, user_infos :: { user_id :: Int } ==> Array UserInfo
, users :: { user_id :: Int } ==> Array User
, team :: { team_node_id :: Int } ==> Team
, tree :: { root_id :: Int } ==> TreeFirstLevel
, tree_branch :: { node_id :: Int } ==> BreadcrumbInfo
= { annuaire_contacts :: { contact_id :: Int } -> Array AnnuaireContact
, context_ngrams :: { context_id :: Int, list_id :: Int } -> Array String
, contexts :: { context_id :: Int, node_id :: Int } -> Array GQLCTX.NodeContext
, contexts_for_ngrams :: { corpus_id :: Int, ngrams_terms :: Array String } -> Array GQLCTX.Context
, imt_schools :: {} -> Array GQLIMT.School
, languages :: {} -> Array GQLNLP.Language
, node_children :: { node_id :: Int, child_type :: NodeType } -> Array GQLNode.Node
, node_parent :: { node_id :: Int, parent_type :: NodeType } -> Array GQLNode.Node
, nodes :: { node_id :: Int } -> Array GQLNode.Node
, nodes_corpus :: { corpus_id :: Int } -> Array GQLNode.Corpus
, user_infos :: { user_id :: Int } -> Array UserInfo
, users :: { user_id :: Int } -> Array User
, team :: { team_node_id :: Int } -> Team
, tree :: { root_id :: Int } -> TreeFirstLevel
, tree_branch :: { node_id :: Int } -> BreadcrumbInfo
}
type Mutation
= { update_user_info :: UserInfoM ==> Int
, update_user_pubmed_api_key :: UserPubmedAPIKeyM ==> Int
, update_user_epo_api_user :: UserEPOAPIUserM ==> Int
, update_user_epo_api_token :: UserEPOAPITokenM ==> Int
, delete_team_membership :: TeamDeleteM ==> Array Int
, update_node_context_category :: GQLCTX.NodeContextCategoryM ==> Array Int }
= { update_user_info :: UserInfoM -> Int
, update_user_pubmed_api_key :: UserPubmedAPIKeyM -> Int
, update_user_epo_api_user :: UserEPOAPIUserM -> Int
, update_user_epo_api_token :: UserEPOAPITokenM -> Int
, delete_team_membership :: TeamDeleteM -> Array Int
, update_node_context_category :: GQLCTX.NodeContextCategoryM -> Array Int }
......@@ -44,7 +44,7 @@ getNode session nodeId = do
case eRes of
Left err -> pure $ Left err
Right { nodes } -> do
liftEffect $ here.log2 "[getNode] node" nodes
-- liftEffect $ here.log2 "[getNode] node" nodes
pure $ case A.head nodes of
Nothing -> Left (CustomError $ "node with id" <> show nodeId <>" not found")
Just node -> Right node
......@@ -145,7 +145,7 @@ getTreeFirstLevel session id = do
case eRes of
Left err -> pure $ Left err
Right { tree } -> do
liftEffect $ here.log2 "[getTreeFirstLevel] tree first level" tree
-- liftEffect $ here.log2 "[getTreeFirstLevel] tree first level" tree
pure $ Right tree -- TODO: error handling
getTeam :: Session -> Int -> AffRESTError Team
......
......@@ -83,7 +83,6 @@ loginCpt = here.component "login" cpt where
-- | @link https://github.com/facebook/react/issues/12247
loginContainer :: R2.Leaf Props
loginContainer = R2.leaf loginContainerCpt
loginContainerCpt :: R.Component Props
loginContainerCpt = here.component "container" cpt where
cpt props@{ sessions, visible, loginRedirect } _ = do
......
......@@ -5,7 +5,6 @@ module Gargantext.Components.Nodes.Graph
import Gargantext.Prelude
import Data.Array as A
import Data.Int as I
import Data.Maybe (Maybe(..), isJust, maybe)
import Data.Sequence as Seq
import Data.Tuple (Tuple(..))
......@@ -165,6 +164,11 @@ hydrateStoreCpt = here.component "hydrateStore" cpt where
-- | Precompute some values
-- |
let edgesWeightSorted = A.sortWith (_.weight) $ Seq.toUnfoldable $ SigmaxT.graphEdges graph
let edgeWeightMin = maybe 0.0 _.weight $ A.head edgesWeightSorted
let edgeWeightMax = maybe 100.0 _.weight $ A.last edgesWeightSorted
let edgeWeightRange = Range.Closed { min: edgeWeightMin, max: edgeWeightMax }
let edgesConfluenceSorted = A.sortWith (_.confluence) $ Seq.toUnfoldable $ SigmaxT.graphEdges graph
let edgeConfluenceMin = maybe 0.0 _.confluence $ A.head edgesConfluenceSorted
let edgeConfluenceMax = maybe 100.0 _.confluence $ A.last edgesConfluenceSorted
......@@ -184,13 +188,17 @@ hydrateStoreCpt = here.component "hydrateStore" cpt where
let nodeSizeMax = maybe 100.0 _.size $ A.last nodesSorted
let nodeSizeRange = Range.Closed { min: nodeSizeMin, max: nodeSizeMax }
let edgeWeight = Range.Closed
{ min: 0.0
, max: I.toNumber $ Seq.length $ SigmaxT.graphEdges graph
}
-- let edgeWeight = Range.Closed
-- { min: 0.0
-- , max: I.toNumber $ Seq.length $ SigmaxT.graphEdges graph
-- }
-- let weightsSeq = Seq.map _.weight $ SigmaxT.graphEdges graph
-- let edgeWeight = Range.Closed
-- { min: fromMaybe 0.0 $ minimum weightsSeq
-- , max: fromMaybe 1.0 $ maximum weightsSeq } :: Range.Closed Number
let transformedGraph = transformGraph graph { edgeConfluence': GraphStore.options.edgeConfluence
, edgeWeight': edgeWeight
, edgeWeight': GraphStore.options.edgeWeight
, nodeSize': GraphStore.options.nodeSize
, removedNodeIds': GraphStore.options.removedNodeIds
, selectedNodeIds': GraphStore.options.selectedNodeIds
......@@ -208,7 +216,8 @@ hydrateStoreCpt = here.component "hydrateStore" cpt where
, startForceAtlas
, forceAtlasState
, noverlapState: SigmaxT.NoverlapPaused
, edgeWeight
-- , edgeWeight
, edgeWeightRange
, edgeConfluenceRange
, nodeSizeRange
-- (cache options)
......
......@@ -21,6 +21,7 @@ import DOM.Simple.Event as Event
import DOM.Simple.EventListener as EL
import DOM.Simple (DOMRect)
import Effect (Effect)
import Effect.Debouncing as Debounce
import Reactix as R
import Reactix.DOM.HTML as H
import Toestand as T
......@@ -51,6 +52,7 @@ type Props =
, width :: Number
, height :: Number
, onChange :: Range.NumberRange -> Effect Unit
, throttleInterval :: Maybe Int -- then Nothing, no throttling is done
, status :: ComponentStatus )
data Knob = MinKnob | MaxKnob
......@@ -65,6 +67,11 @@ rangeSlider props = R.createElement rangeSliderCpt props []
rangeSliderCpt :: R.Component Props
rangeSliderCpt = here.component "rangeSlider" cpt where
cpt props _ = do
let throttled = Debounce.throttleWithDebounceAtEnd props.onChange (fromMaybe 0 props.throttleInterval)
let onChangeThrottled = case props.throttleInterval of
Nothing -> props.onChange
Just ti -> \rng -> Debounce.call throttled rng
-- rounding precision (i.e. how many decimal digits are in epsilon)
let (Range.Closed { min: minR, max: maxR }) = props.initialValue
let decPrecision num =
......@@ -116,7 +123,8 @@ rangeSliderCpt = here.component "rangeSlider" cpt where
case reproject drag scalePos props.bounds props.epsilon (R2.domMousePosition event) of
Just val -> do
setKnob knob value value' val
props.onChange $ knobSetter knob value' val
-- props.onChange $ knobSetter knob value' val
onChangeThrottled $ knobSetter knob value' val
Nothing -> destroy unit
let onMouseUp = EL.callback $ \(_event :: Event.MouseEvent) -> do
--props.onChange $ knobSetter knob value val
......
......@@ -62,3 +62,12 @@ export function _scrollIntoView(el) {
});
}
export const isPendingTransitionImpl = (t) => () => {
return t[0]();
}
export const startTransitionImpl = (t) => (f) => () => {
console.log('starting transition', t, f);
return t[1](() => { f()() });
}
......@@ -648,3 +648,24 @@ setInputValue elNullableRef val = case toMaybe (R.readRef elNullableRef) of
_ <- pure $ (el .= "value") val
triggerEvent el "change"
triggerEvent el "input"
-- TODO useTransition?
foreign import data Transition :: Type
-- foreign import useTransitionImpl :: R.Hooks Transition
-- useTransition :: R.Hooks Transition
-- useTransition = useTransitionImpl
useTransition :: R.Hooks Transition
useTransition = hook $ \_ -> pure $ react ... "useTransition" $ []
foreign import isPendingTransitionImpl :: Transition -> R.Hooks Boolean
isPendingTransition :: Transition -> R.Hooks Boolean
isPendingTransition = isPendingTransitionImpl
foreign import startTransitionImpl :: Transition -> (Unit -> Effect Unit) -> Effect Unit
startTransition :: Transition -> (Unit -> Effect Unit) -> Effect Unit
startTransition = startTransitionImpl
......@@ -8,7 +8,7 @@ import Effect (Effect)
import FFI.Simple ((...))
import Gargantext.Components.App as App
import Gargantext.Utils.Reactix as R2
import Prelude (Unit, ($))
import Prelude (Unit, ($), bind)
import Reactix as R
......@@ -21,6 +21,8 @@ main = paint $ toMaybe (document ... "getElementById" $ [ "app" ])
paint :: Maybe Element -> Effect Unit
paint Nothing = here.error "[main] Container not found"
paint (Just c) = do
R.render app c
-- R.render app c
let r = R.createRoot c
R.renderRoot r app
where
app = App.app {}
let conf = ./spago.dhall
in conf
// { sources = conf.sources # [ "test/**/*.purs" ]
, dependencies =
conf.dependencies # [ "spec", "spec-discovery", "spec-quickcheck" ]
}
......@@ -148,15 +148,17 @@ spec = do
cache = computeCache table $ Set.fromFoldable $ fst <$> tnres
output = [ highlightNil " before "
, highlightSingleton " graph" ngramType CandidateTerm
-- TODO Should it double the space after comma?
, highlightNil ", after "
]
highlightNgrams cache CTabTerms table input `shouldEqualArray` output
it "works for #598" do
let input = "Passant d’une conception quasi solipsiste ou monadique de la sensation, présente dans l’Essai sur les données immédiates de la conscience, à l’idée d’une sensibilité universelle mais impersonnelle dans Matière et mémoire, Bergson se heurte à plusieurs difficultés, dont celle d’une dissolution de la notion de Sujet. Dans L’évolution créatrice puis dans Les deux sources de la morale et de la religion, son approche évolutionniste lui permet d’envisager la perspective d’une sensibilité indéfiniment extensible, inséparable désormais de celle d’un Vivant par définition métastable qui va de l’amibe jusqu’à Dieu."
let startInput = " Passant d’une "
let middleInput = " quasi solipsiste ou monadique de la sensation, présente dans l’Essai sur les données immédiates de la conscience, à l’idée d’une sensibilité universelle mais impersonnelle dans Matière et mémoire, Bergson se heurte à plusieurs difficultés, dont celle d’une dissolution de la "
let endInput = " de Sujet. Dans L’évolution créatrice puis dans Les deux sources de la morale et de la religion, son approche évolutionniste lui permet d’envisager la perspective d’une sensibilité indéfiniment extensible, inséparable désormais de celle d’un Vivant par définition métastable qui va de l’amibe jusqu’à Dieu. "
-- TODO Space is present after "’", also double space after comma or dot.
let startInput = " Passant d’ une "
let middleInput = " quasi solipsiste ou monadique de la sensation, présente dans l’ Essai sur les données immédiates de la conscience, à l’ idée d’ une sensibilité universelle mais impersonnelle dans Matière et mémoire, Bergson se heurte à plusieurs difficultés, dont celle d’ une dissolution de la "
let endInput = " de Sujet. Dans L’ évolution créatrice puis dans Les deux sources de la morale et de la religion, son approche évolutionniste lui permet d’ envisager la perspective d’ une sensibilité indéfiniment extensible, inséparable désormais de celle d’ un Vivant par définition métastable qui va de l’ amibe jusqu’ à Dieu. "
let ngramType = CTabSources
-- let termsS = ["arbre","article","automate","automates","calcul","cas","classe","concept","conception","construction","difficultés","données","décidabilité","effet","ensemble","extension","familles","fois","graphes","généralisons","intérêt","langage","langages","logique","longueur inférieure","monadique","mots","notion","opérations","pensée","perception","perspective","point","premier ordre","problème","produit","produits","rendre compte","second ordre","structure","structures","thèse","théorie","théorème","travail","travaux","travers","univers","variétés","vue","étude","évaluation"]
-- let contextNgramsS = ["concept","conception","difficultés","données","extension","monadique","Nothing"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment