Commit c37cc12f authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

Merge branch 'dev' into dev-ngrams-table-cache-in-local-storage

parents 63b87cae 2d431463
......@@ -9,16 +9,17 @@
},
"ace": {
"dependencies": [
"effect",
"web-html",
"web-uievents",
"arrays",
"effect",
"foreign",
"nullable",
"prelude"
"prelude",
"refs",
"web-html",
"web-uievents"
],
"repo": "https://github.com/purescript-contrib/purescript-ace.git",
"version": "v7.0.0"
"version": "v7.1.0"
},
"aff": {
"dependencies": [
......@@ -79,6 +80,7 @@
"aff",
"argonaut-core",
"arraybuffer-types",
"effect",
"foreign",
"form-urlencoded",
"http-methods",
......@@ -91,7 +93,7 @@
"web-xhr"
],
"repo": "https://github.com/slamdata/purescript-affjax.git",
"version": "v10.1.0"
"version": "v11.0.0"
},
"ansi": {
"dependencies": [
......@@ -143,7 +145,7 @@
"tailrec"
],
"repo": "https://github.com/purescript-contrib/purescript-argonaut-core.git",
"version": "v5.0.2"
"version": "v5.1.0"
},
"argonaut-generic": {
"dependencies": [
......@@ -202,7 +204,7 @@
"arraybuffer"
],
"repo": "https://github.com/jamesdbrock/purescript-arraybuffer-builder.git",
"version": "v1.0.0"
"version": "v1.1.0"
},
"arraybuffer-class": {
"dependencies": [
......@@ -215,7 +217,7 @@
"unordered-collections"
],
"repo": "https://github.com/athanclark/purescript-arraybuffer-class.git",
"version": "v0.2.5"
"version": "v0.2.6"
},
"arraybuffer-types": {
"dependencies": [],
......@@ -242,10 +244,21 @@
},
"arrays-zipper": {
"dependencies": [
"arrays"
"arrays",
"control",
"quickcheck"
],
"repo": "https://github.com/JordanMartinez/purescript-arrays-zipper.git",
"version": "v1.0.0"
"version": "v1.1.1"
},
"assert": {
"dependencies": [
"console",
"effect",
"prelude"
],
"repo": "https://github.com/purescript/purescript-assert.git",
"version": "v4.1.0"
},
"avar": {
"dependencies": [
......@@ -259,6 +272,17 @@
"repo": "https://github.com/slamdata/purescript-avar.git",
"version": "v3.0.0"
},
"axios": {
"dependencies": [
"effect",
"console",
"foreign-generic",
"aff",
"prelude"
],
"repo": "https://github.com/iarthstar/purescript-axios.git",
"version": "v1.1.2"
},
"b64": {
"dependencies": [
"arraybuffer-types",
......@@ -297,6 +321,29 @@
"repo": "https://github.com/paf31/purescript-behaviors.git",
"version": "v8.0.0"
},
"benchotron": {
"dependencies": [
"arrays",
"console",
"datetime",
"effect",
"exceptions",
"exists",
"foldable-traversable",
"identity",
"lcg",
"node-buffer",
"node-fs",
"node-readline",
"now",
"profunctor",
"quickcheck",
"strings",
"transformers"
],
"repo": "https://github.com/hdgarrood/purescript-benchotron.git",
"version": "v7.0.1"
},
"bifunctors": {
"dependencies": [
"newtype",
......@@ -533,6 +580,33 @@
"repo": "https://github.com/purescript-web/purescript-canvas.git",
"version": "v4.0.0"
},
"canvas-action": {
"dependencies": [
"aff",
"canvas",
"colors",
"console",
"effect",
"exceptions",
"foldable-traversable",
"free",
"lists",
"math",
"maybe",
"newtype",
"partial",
"polymorphic-vectors",
"prelude",
"psci-support",
"run",
"transformers",
"tuples",
"typelevel-prelude",
"web-html"
],
"repo": "https://github.com/3ddyy/purescript-canvas-action.git",
"version": "v5.0.1"
},
"cartesian": {
"dependencies": [
"console",
......@@ -563,7 +637,7 @@
"variant"
],
"repo": "https://github.com/natefaubion/purescript-checked-exceptions.git",
"version": "v3.1.0"
"version": "v3.1.1"
},
"cheerio": {
"dependencies": [
......@@ -596,6 +670,14 @@
"repo": "https://github.com/justinwoo/purescript-chocopie.git",
"version": "v5.0.0"
},
"classnames": {
"dependencies": [
"record",
"strings"
],
"repo": "https://github.com/dewey92/purescript-classnames",
"version": "v0.1.1"
},
"clipboardy": {
"dependencies": [
"aff",
......@@ -611,7 +693,7 @@
"profunctor"
],
"repo": "https://github.com/garyb/purescript-codec.git",
"version": "v3.0.0"
"version": "v3.1.0"
},
"codec-argonaut": {
"dependencies": [
......@@ -721,7 +803,7 @@
"node-buffer"
],
"repo": "https://github.com/oreshinya/purescript-crypto.git",
"version": "v2.0.1"
"version": "v2.1.0"
},
"css": {
"dependencies": [
......@@ -794,7 +876,15 @@
"prelude"
],
"repo": "https://github.com/garyb/purescript-debug.git",
"version": "v4.0.0"
"version": "v4.0.1"
},
"debuggest": {
"dependencies": [
"prelude",
"unsafe-coerce"
],
"repo": "https://github.com/ursi/purescript-debuggest.git",
"version": "v0.3.1"
},
"decimals": {
"dependencies": [
......@@ -812,6 +902,18 @@
"repo": "https://github.com/purescript/purescript-distributive.git",
"version": "v4.0.0"
},
"dodo-printer": {
"dependencies": [
"ansi",
"foldable-traversable",
"lists",
"maybe",
"prelude",
"strings"
],
"repo": "https://github.com/natefaubion/purescript-dodo-printer/",
"version": "v1.0.8"
},
"dom-filereader": {
"dependencies": [
"aff",
......@@ -861,6 +963,18 @@
"repo": "https://github.com/nsaunders/purescript-dotenv.git",
"version": "v1.1.0"
},
"downloadjs": {
"dependencies": [
"arraybuffer-types",
"console",
"effect",
"foreign",
"psci-support",
"web-file"
],
"repo": "https://github.com/chekoopa/purescript-downloadjs.git",
"version": "v1.0.0"
},
"drawing": {
"dependencies": [
"canvas",
......@@ -873,6 +987,13 @@
"repo": "https://github.com/paf31/purescript-drawing.git",
"version": "v4.0.0"
},
"easy-ffi": {
"dependencies": [
"prelude"
],
"repo": "https://github.com/pelotom/purescript-easy-ffi",
"version": "v2.1.2"
},
"effect": {
"dependencies": [
"prelude"
......@@ -997,6 +1118,17 @@
"repo": "https://github.com/nkly/purescript-express.git",
"version": "v0.8.0"
},
"ffi-foreign": {
"dependencies": [
"console",
"effect",
"foreign",
"prelude",
"psci-support"
],
"repo": "https://github.com/markfarrell/purescript-ffi-foreign.git",
"version": "v0.0.2"
},
"ffi-simple": {
"dependencies": [
"prelude",
......@@ -1335,6 +1467,43 @@
"repo": "https://github.com/citizennet/purescript-fuzzy.git",
"version": "v0.3.0"
},
"game": {
"dependencies": [
"aff",
"canvas-action",
"console",
"control",
"datetime",
"effect",
"filterable",
"foldable-traversable",
"fork",
"free",
"functors",
"identity",
"js-timers",
"monad-loops",
"newtype",
"now",
"parallel",
"partial",
"polymorphic-vectors",
"prelude",
"psci-support",
"record",
"record-extra",
"refs",
"run",
"tailrec",
"typelevel-prelude",
"undefined",
"variant",
"web-html",
"web-uievents"
],
"repo": "https://github.com/3ddyy/purescript-game.git",
"version": "v2.0.0"
},
"gen": {
"dependencies": [
"either",
......@@ -1362,6 +1531,45 @@
"repo": "https://github.com/purescript/purescript-generics-rep.git",
"version": "v6.1.1"
},
"geometry-plane": {
"dependencies": [
"console",
"effect",
"psci-support",
"sparse-polynomials"
],
"repo": "https://github.com/Ebmtranceboy/purescript-geometry-plane.git",
"version": "v1.0.1"
},
"github-actions-toolkit": {
"dependencies": [
"aff",
"aff-promise",
"effect",
"foreign-object",
"node-buffer",
"node-path",
"node-streams",
"nullable",
"transformers"
],
"repo": "https://github.com/purescript-contrib/purescript-github-actions-toolkit",
"version": "v0.2.0"
},
"gl-matrix": {
"dependencies": [
"arrays",
"effect",
"foldable-traversable",
"functions",
"math",
"partial",
"prelude",
"psci-support"
],
"repo": "https://github.com/dirkz/purescript-gl-matrix",
"version": "v2.0.1"
},
"globals": {
"dependencies": [
"functions",
......@@ -1386,7 +1594,7 @@
"web-html"
],
"repo": "https://github.com/purescript-grain/purescript-grain.git",
"version": "v0.7.0"
"version": "v0.9.0"
},
"grain-router": {
"dependencies": [
......@@ -1394,14 +1602,14 @@
"profunctor"
],
"repo": "https://github.com/purescript-grain/purescript-grain-router.git",
"version": "v0.7.0"
"version": "v0.9.0"
},
"grain-virtualized": {
"dependencies": [
"grain"
],
"repo": "https://github.com/purescript-grain/purescript-grain-virtualized.git",
"version": "v0.7.0"
"version": "v0.9.0"
},
"group": {
"dependencies": [
......@@ -1418,6 +1626,7 @@
"const",
"coroutines",
"dom-indexed",
"effect",
"foreign",
"fork",
"free",
......@@ -1431,10 +1640,11 @@
"transformers",
"unsafe-coerce",
"unsafe-reference",
"web-file",
"web-uievents"
],
"repo": "https://github.com/slamdata/purescript-halogen.git",
"version": "v5.0.1"
"version": "v5.1.0"
},
"halogen-bootstrap": {
"dependencies": [
......@@ -1467,7 +1677,7 @@
"profunctor-lenses"
],
"repo": "https://github.com/thomashoneyman/purescript-halogen-formless.git",
"version": "v1.0.0-rc.2"
"version": "v1.0.0"
},
"halogen-hooks": {
"dependencies": [
......@@ -1475,7 +1685,7 @@
"indexed-monad"
],
"repo": "https://github.com/thomashoneyman/purescript-halogen-hooks.git",
"version": "v0.4.2"
"version": "v0.4.3"
},
"halogen-hooks-extra": {
"dependencies": [
......@@ -1511,7 +1721,7 @@
"web-uievents"
],
"repo": "https://github.com/JordanMartinez/purescript-halogen-svg-elems.git",
"version": "v2.0.1"
"version": "v2.0.2"
},
"halogen-vdom": {
"dependencies": [
......@@ -1529,6 +1739,18 @@
"repo": "https://github.com/slamdata/purescript-halogen-vdom.git",
"version": "v6.1.3"
},
"heckin": {
"dependencies": [
"arrays",
"console",
"effect",
"foldable-traversable",
"psci-support",
"unicode"
],
"repo": "https://github.com/maxdeviant/purescript-heckin.git",
"version": "v1.1.0"
},
"heterogeneous": {
"dependencies": [
"either",
......@@ -1645,6 +1867,7 @@
"http-methods",
"indexed-monad",
"media-types",
"node-buffer",
"node-fs-aff",
"node-http",
"ordered-collections",
......@@ -1657,7 +1880,7 @@
"typelevel-prelude"
],
"repo": "https://github.com/purescript-hyper/hyper.git",
"version": "v0.11.0"
"version": "v0.11.1"
},
"hypertrout": {
"dependencies": [
......@@ -1686,7 +1909,7 @@
"simple-json"
],
"repo": "https://github.com/oreshinya/purescript-identy.git",
"version": "v2.1.0"
"version": "v2.2.0"
},
"indexed-monad": {
"dependencies": [
......@@ -1935,6 +2158,20 @@
"repo": "https://github.com/paluh/purescript-logging-journald.git",
"version": "v0.3.2"
},
"longs": {
"dependencies": [
"effect",
"console",
"prelude",
"strings",
"foreign",
"nullable",
"functions",
"quickcheck"
],
"repo": "https://github.com/zapph/purescript-longs.git",
"version": "v0.1.1"
},
"machines": {
"dependencies": [
"arrays",
......@@ -1975,6 +2212,25 @@
"repo": "https://github.com/poorscript/purescript-markdown-smolder",
"version": "2020-03-04"
},
"mason-prelude": {
"dependencies": [
"arrays",
"debuggest",
"either",
"functions",
"generics-rep",
"integers",
"lists",
"math",
"parallel",
"point-free",
"prelude",
"tuples",
"unfoldable"
],
"repo": "https://github.com/ursi/purescript-mason-prelude.git",
"version": "v0.3.0"
},
"math": {
"dependencies": [],
"repo": "https://github.com/purescript/purescript-math.git",
......@@ -1988,6 +2244,17 @@
"repo": "https://github.com/kritzcreek/purescript-matrices.git",
"version": "v5.0.1"
},
"matryoshka": {
"dependencies": [
"free",
"fixed-points",
"profunctor",
"prelude",
"transformers"
],
"repo": "https://github.com/purescript-contrib/purescript-matryoshka.git",
"version": "v0.4.0"
},
"maybe": {
"dependencies": [
"control",
......@@ -2177,6 +2444,14 @@
"repo": "https://github.com/LiamGoodacre/purescript-naturals.git",
"version": "v3.0.0"
},
"nested-functor": {
"dependencies": [
"prelude",
"type-equality"
],
"repo": "https://github.com/acple/purescript-nested-functor.git",
"version": "v0.2.1"
},
"newtype": {
"dependencies": [
"prelude"
......@@ -2427,6 +2702,16 @@
"repo": "https://github.com/purescript-contrib/purescript-now.git",
"version": "v4.0.0"
},
"npm-package-json": {
"dependencies": [
"argonaut",
"console",
"effect",
"psci-support"
],
"repo": "https://github.com/maxdeviant/purescript-npm-package-json.git",
"version": "v1.2.0"
},
"nullable": {
"dependencies": [
"functions",
......@@ -2444,6 +2729,29 @@
"repo": "https://github.com/sharkdp/purescript-numbers.git",
"version": "v7.0.0"
},
"option": {
"dependencies": [
"argonaut-codecs",
"argonaut-core",
"codec",
"codec-argonaut",
"either",
"foreign",
"foreign-object",
"lists",
"maybe",
"profunctor",
"prelude",
"record",
"simple-json",
"transformers",
"tuples",
"type-equality",
"unsafe-coerce"
],
"repo": "https://github.com/joneshf/purescript-option.git",
"version": "v6.0.1"
},
"options": {
"dependencies": [
"contravariant",
......@@ -2579,7 +2887,7 @@
"unicode"
],
"repo": "https://github.com/purescript-contrib/purescript-parsing.git",
"version": "v5.0.3"
"version": "v5.1.0"
},
"parsing-dataview": {
"dependencies": [
......@@ -2590,6 +2898,81 @@
"repo": "https://github.com/jamesdbrock/purescript-parsing-dataview.git",
"version": "v1.1.1"
},
"parsing-expect": {
"dependencies": [
"console",
"effect",
"parsing",
"prelude",
"psci-support"
],
"repo": "https://github.com/markfarrell/purescript-parsing-expect.git",
"version": "v0.0.3"
},
"parsing-foreign": {
"dependencies": [
"console",
"effect",
"foreign",
"ffi-foreign",
"parsing",
"prelude",
"psci-support",
"parsing-expect",
"parsing-validation"
],
"repo": "https://github.com/markfarrell/purescript-parsing-foreign.git",
"version": "v0.0.2"
},
"parsing-hexadecimal": {
"dependencies": [
"console",
"effect",
"parsing",
"prelude",
"psci-support",
"parsing-expect"
],
"repo": "https://github.com/markfarrell/purescript-parsing-hexadecimal.git",
"version": "v0.0.2"
},
"parsing-repetition": {
"dependencies": [
"console",
"effect",
"parsing",
"prelude",
"psci-support",
"parsing-expect"
],
"repo": "https://github.com/markfarrell/purescript-parsing-repetition.git",
"version": "v0.0.6"
},
"parsing-uuid": {
"dependencies": [
"console",
"effect",
"parsing",
"prelude",
"psci-support",
"parsing-expect",
"parsing-repetition",
"parsing-hexadecimal"
],
"repo": "https://github.com/markfarrell/purescript-parsing-uuid.git",
"version": "v0.0.3"
},
"parsing-validation": {
"dependencies": [
"console",
"effect",
"parsing",
"prelude",
"psci-support"
],
"repo": "https://github.com/markfarrell/purescript-parsing-validation.git",
"version": "v0.1.2"
},
"partial": {
"dependencies": [],
"repo": "https://github.com/purescript/purescript-partial.git",
......@@ -2611,6 +2994,28 @@
"repo": "https://github.com/slamdata/purescript-pathy.git",
"version": "v7.0.1"
},
"payload": {
"dependencies": [
"aff",
"affjax",
"console",
"debug",
"effect",
"foreign-generic",
"node-fs",
"node-fs-aff",
"node-http",
"prelude",
"psci-support",
"record",
"simple-json",
"stringutils",
"test-unit",
"typelevel-prelude"
],
"repo": "https://github.com/hoodunit/purescript-payload",
"version": "v0.3.1"
},
"phoenix": {
"dependencies": [
"options"
......@@ -2631,6 +3036,24 @@
"repo": "https://github.com/felixSchl/purescript-pipes.git",
"version": "v6.0.0"
},
"point-free": {
"dependencies": [
"prelude"
],
"repo": "https://github.com/ursi/purescript-point-free.git",
"version": "v0.1.1"
},
"pointed": {
"dependencies": [
"bifunctors",
"foldable-traversable",
"generics-rep",
"lists",
"maybe"
],
"repo": "https://github.com/vladciobanu/purescript-pointed.git",
"version": "v0.1.1"
},
"pointed-list": {
"dependencies": [
"lists",
......@@ -2657,6 +3080,20 @@
"repo": "https://github.com/paluh/purescript-polyform.git",
"version": "v0.8.2"
},
"polymorphic-vectors": {
"dependencies": [
"canvas",
"console",
"distributive",
"effect",
"foldable-traversable",
"math",
"prelude",
"psci-support"
],
"repo": "https://github.com/3ddyy/purescript-polymorphic-vectors.git",
"version": "v2.0.0"
},
"posix-types": {
"dependencies": [
"maybe",
......@@ -2762,6 +3199,24 @@
"repo": "https://github.com/thimoteus/purescript-promises.git",
"version": "v3.1.1"
},
"protobuf": {
"dependencies": [
"parsing",
"arraybuffer-types",
"arraybuffer",
"uint",
"text-encoding",
"longs",
"node-streams",
"node-process",
"node-buffer",
"node-path",
"arraybuffer-builder",
"parsing-dataview"
],
"repo": "https://github.com/xc-jp/purescript-protobuf.git",
"version": "v1.4.0"
},
"proxy": {
"dependencies": [
"prelude"
......@@ -3043,7 +3498,7 @@
"web-html"
],
"repo": "https://github.com/lumihq/purescript-react-basic-dom.git",
"version": "v2.0.0"
"version": "v3.2.0"
},
"react-basic-emotion": {
"dependencies": [
......@@ -3057,7 +3512,7 @@
"web-html"
],
"repo": "https://github.com/lumihq/purescript-react-basic-emotion.git",
"version": "v4.2.2"
"version": "v5.0.0"
},
"react-basic-hooks": {
"dependencies": [
......@@ -3079,7 +3534,7 @@
"web-html"
],
"repo": "https://github.com/spicydonuts/purescript-react-basic-hooks.git",
"version": "v6.0.0"
"version": "v6.2.0"
},
"react-basic-native": {
"dependencies": [
......@@ -3497,7 +3952,7 @@
"affjax"
],
"repo": "https://github.com/dariooddenino/purescript-simple-ajax.git",
"version": "v2.0.0"
"version": "v3.0.0"
},
"simple-emitter": {
"dependencies": [
......@@ -3817,7 +4272,7 @@
"unicode"
],
"repo": "https://github.com/purescript-contrib/purescript-strings-extra.git",
"version": "v2.1.0"
"version": "v2.2.1"
},
"stringutils": {
"dependencies": [
......@@ -4271,9 +4726,30 @@
"version": "v4.0.0"
},
"unsafe-reference": {
"dependencies": [],
"dependencies": [
"effect",
"exceptions"
],
"repo": "https://github.com/purescript-contrib/purescript-unsafe-reference.git",
"version": "v3.0.1"
"version": "v3.1.0"
},
"untagged-union": {
"dependencies": [
"assert",
"console",
"effect",
"foreign",
"foreign-object",
"literals",
"maybe",
"newtype",
"proxy",
"psci-support",
"tuples",
"unsafe-coerce"
],
"repo": "https://github.com/jvliwanag/purescript-untagged-union.git",
"version": "v0.1.1"
},
"uri": {
"dependencies": [
......@@ -4298,7 +4774,7 @@
"spec"
],
"repo": "https://github.com/spicydonuts/purescript-uuid.git",
"version": "v6.1.0"
"version": "v7.0.0"
},
"validated-molecule": {
"dependencies": [
......@@ -4464,6 +4940,17 @@
"repo": "https://github.com/athanclark/purescript-websocket-moderate.git",
"version": "v7.0.2"
},
"which": {
"dependencies": [
"arrays",
"console",
"effect",
"nullable",
"psci-support"
],
"repo": "https://github.com/maxdeviant/purescript-which.git",
"version": "v0.1.0"
},
"xiaomian": {
"dependencies": [
"naporitan"
......
{
"name": "Gargantext",
"version": "0.0.1.91.3",
"version": "0.0.1.91.7",
"scripts": {
"rebase-set": "spago package-set-upgrade && spago psc-package-insdhall",
"rebuild-set": "spago psc-package-insdhall",
......
{ abides =
{ dependencies = [ "enums", "foldable-traversable" ]
, repo = "https://github.com/athanclark/purescript-abides.git"
, version = "v0.0.1"
}
, ace =
{ dependencies =
[ "effect"
, "web-html"
, "web-uievents"
, "arrays"
, "foreign"
, "nullable"
, "prelude"
]
, repo = "https://github.com/purescript-contrib/purescript-ace.git"
, version = "v7.0.0"
}
, aff =
{ dependencies =
[ "datetime"
, "effect"
, "exceptions"
, "functions"
, "parallel"
, "transformers"
, "unsafe-coerce"
]
, repo = "https://github.com/slamdata/purescript-aff.git"
, version = "v5.1.2"
}
, aff-bus =
{ dependencies = [ "avar", "prelude" ]
, repo = "https://github.com/slamdata/purescript-aff-bus.git"
, version = "v4.0.0"
}
, aff-coroutines =
{ dependencies = [ "aff", "avar", "console", "coroutines" ]
, repo = "https://github.com/purescript-contrib/purescript-aff-coroutines.git"
, version = "v7.0.0"
}
, aff-promise =
{ dependencies = [ "aff", "foreign" ]
, repo = "https://github.com/nwolverson/purescript-aff-promise.git"
, version = "v2.1.0"
}
, aff-retry =
{ dependencies =
[ "psci-support"
, "console"
, "aff"
, "datetime"
, "prelude"
, "random"
, "transformers"
, "exceptions"
, "test-unit"
]
, repo = "https://github.com/Unisay/purescript-aff-retry.git"
, version = "v1.2.1"
}
, affjax =
{ dependencies =
[ "aff"
, "argonaut-core"
, "arraybuffer-types"
, "foreign"
, "form-urlencoded"
, "http-methods"
, "integers"
, "math"
, "media-types"
, "nullable"
, "refs"
, "unsafe-coerce"
, "web-xhr"
]
, repo = "https://github.com/slamdata/purescript-affjax.git"
, version = "v10.1.0"
}
, ansi =
{ dependencies = [ "foldable-traversable", "lists", "strings" ]
, repo = "https://github.com/hdgarrood/purescript-ansi.git"
, version = "v5.0.0"
}
, argonaut =
{ dependencies = [ "argonaut-codecs", "argonaut-core", "argonaut-traversals" ]
, repo = "https://github.com/purescript-contrib/purescript-argonaut.git"
, version = "v7.0.0"
}
, argonaut-codecs =
{ dependencies =
[ "argonaut-core"
, "arrays"
, "effect"
, "foreign-object"
, "generics-rep"
, "identity"
, "integers"
, "maybe"
, "nonempty"
, "ordered-collections"
, "record"
]
, repo =
"https://github.com/purescript-contrib/purescript-argonaut-codecs.git"
, version = "v7.0.0"
}
, argonaut-core =
{ dependencies =
[ "arrays"
, "control"
, "either"
, "foreign-object"
, "functions"
, "gen"
, "maybe"
, "nonempty"
, "prelude"
, "strings"
, "tailrec"
]
, repo = "https://github.com/purescript-contrib/purescript-argonaut-core.git"
, version = "v5.0.2"
}
, argonaut-generic =
{ dependencies =
[ "argonaut-codecs", "argonaut-core", "generics-rep", "record" ]
, repo =
"https://github.com/purescript-contrib/purescript-argonaut-generic.git"
, version = "v6.0.0"
}
, argonaut-traversals =
{ dependencies = [ "argonaut-codecs", "argonaut-core", "profunctor-lenses" ]
, repo =
"https://github.com/purescript-contrib/purescript-argonaut-traversals.git"
, version = "v8.0.0"
}
, array-views =
{ dependencies =
[ "arrays"
, "control"
, "foldable-traversable"
, "generics-rep"
, "maybe"
, "nonempty"
, "prelude"
, "profunctor"
, "tuples"
, "unfoldable"
]
, repo = "https://github.com/klntsky/purescript-array-views.git"
, version = "v0.0.2"
}
, arraybuffer =
{ dependencies =
[ "arraybuffer-types"
, "effect"
, "float32"
, "functions"
, "maybe"
, "nullable"
, "partial"
, "sized-vectors"
, "typelevel"
, "uint"
]
, repo = "https://github.com/jacereda/purescript-arraybuffer.git"
, version = "v10.0.2"
}
, arraybuffer-builder =
{ dependencies = [ "arraybuffer-types", "arraybuffer" ]
, repo = "https://github.com/jamesdbrock/purescript-arraybuffer-builder.git"
, version = "v1.0.0"
}
, arraybuffer-class =
{ dependencies =
[ "arraybuffer"
, "exceptions"
, "foreign-object"
, "ordered-collections"
, "sized-vectors"
, "strings"
, "unordered-collections"
]
, repo = "https://github.com/athanclark/purescript-arraybuffer-class.git"
, version = "v0.2.5"
}
, arraybuffer-types =
{ dependencies = [] : List Text
, repo =
"https://github.com/purescript-contrib/purescript-arraybuffer-types.git"
, version = "v2.0.0"
}
, arrays =
{ dependencies =
[ "bifunctors"
, "control"
, "foldable-traversable"
, "maybe"
, "nonempty"
, "partial"
, "prelude"
, "st"
, "tailrec"
, "tuples"
, "unfoldable"
, "unsafe-coerce"
]
, repo = "https://github.com/purescript/purescript-arrays.git"
, version = "v5.3.1"
}
, arrays-zipper =
{ dependencies = [ "arrays" ]
, repo = "https://github.com/JordanMartinez/purescript-arrays-zipper.git"
, version = "v1.0.0"
}
--, assert =
-- { dependencies = [ "console", "effect", "prelude" ]
-- , repo = "https://github.com/purescript/purescript-assert.git"
-- , version = "v4.1.0"
-- }
, avar =
{ dependencies =
[ "aff", "effect", "either", "exceptions", "functions", "maybe" ]
, repo = "https://github.com/slamdata/purescript-avar.git"
, version = "v3.0.0"
}
, b64 =
{ dependencies =
[ "arraybuffer-types"
, "either"
, "encoding"
, "enums"
, "exceptions"
, "functions"
, "partial"
, "prelude"
, "strings"
]
, repo = "https://github.com/menelaos/purescript-b64.git"
, version = "v0.0.6"
}
, basic-auth =
{ dependencies = [ "crypto", "node-http" ]
, repo = "https://github.com/oreshinya/purescript-basic-auth.git"
, version = "v1.0.3"
}
, behaviors =
{ dependencies =
[ "effect"
, "event"
, "filterable"
, "nullable"
, "ordered-collections"
, "prelude"
, "web-events"
, "web-html"
, "web-uievents"
]
, repo = "https://github.com/paf31/purescript-behaviors.git"
, version = "v8.0.0"
}
, bifunctors =
{ dependencies = [ "newtype", "prelude" ]
, repo = "https://github.com/purescript/purescript-bifunctors.git"
, version = "v4.0.0"
}
, bigints =
{ dependencies = [ "integers", "maybe", "strings" ]
, repo = "https://github.com/sharkdp/purescript-bigints.git"
, version = "v4.0.0"
}
, bip39 =
{ dependencies = [ "arraybuffer-types", "nullable" ]
, repo = "https://github.com/athanclark/purescript-bip39.git"
, version = "v1.0.1"
}
, biscotti-cookie =
{ dependencies =
[ "datetime"
, "effect"
, "either"
, "foldable-traversable"
, "formatters"
, "gen"
, "newtype"
, "now"
, "prelude"
, "profunctor-lenses"
, "psci-support"
, "quickcheck"
, "record"
, "string-parsers"
, "strings"
, "test-unit"
]
, repo = "https://github.com/drewolson/purescript-biscotti-cookie.git"
, version = "v0.2.0"
}
, biscotti-session =
{ dependencies =
[ "aff"
, "argonaut"
, "biscotti-cookie"
, "effect"
, "newtype"
, "ordered-collections"
, "prelude"
, "profunctor-lenses"
, "psci-support"
, "refs"
, "test-unit"
, "uuid"
]
, repo = "https://github.com/drewolson/purescript-biscotti-session.git"
, version = "v0.1.2"
}
, bower-json =
{ dependencies =
[ "prelude"
, "generics-rep"
, "maybe"
, "arrays"
, "either"
, "newtype"
, "tuples"
, "foldable-traversable"
, "argonaut-codecs"
, "foreign-object"
]
, repo = "https://github.com/klntsky/purescript-bower-json.git"
, version = "v2.0.0"
}
, bucketchain =
{ dependencies =
[ "aff", "console", "node-http", "node-streams", "transformers" ]
, repo = "https://github.com/Bucketchain/purescript-bucketchain.git"
, version = "v0.3.0"
}
, bucketchain-basic-auth =
{ dependencies = [ "basic-auth", "bucketchain" ]
, repo =
"https://github.com/Bucketchain/purescript-bucketchain-basic-auth.git"
, version = "v0.2.0"
}
, bucketchain-conditional =
{ dependencies = [ "bucketchain", "js-date" ]
, repo =
"https://github.com/Bucketchain/purescript-bucketchain-conditional.git"
, version = "v0.2.0"
}
, bucketchain-cors =
{ dependencies = [ "bucketchain", "bucketchain-header-utils", "http-methods" ]
, repo = "https://github.com/Bucketchain/purescript-bucketchain-cors.git"
, version = "v0.3.0"
}
, bucketchain-csrf =
{ dependencies = [ "bucketchain" ]
, repo = "https://github.com/Bucketchain/purescript-bucketchain-csrf.git"
, version = "v0.1.0"
}
, bucketchain-header-utils =
{ dependencies = [ "bucketchain" ]
, repo =
"https://github.com/Bucketchain/purescript-bucketchain-header-utils.git"
, version = "v0.3.0"
}
, bucketchain-health =
{ dependencies = [ "bucketchain" ]
, repo = "https://github.com/Bucketchain/purescript-bucketchain-health.git"
, version = "v0.2.0"
}
, bucketchain-history-api-fallback =
{ dependencies = [ "bucketchain" ]
, repo =
"https://github.com/Bucketchain/purescript-bucketchain-history-api-fallback.git"
, version = "v0.3.0"
}
, bucketchain-logger =
{ dependencies = [ "bucketchain", "js-date", "node-process" ]
, repo = "https://github.com/Bucketchain/purescript-bucketchain-logger.git"
, version = "v0.3.0"
}
, bucketchain-secure =
{ dependencies = [ "bucketchain" ]
, repo = "https://github.com/Bucketchain/purescript-bucketchain-secure.git"
, version = "v0.1.0"
}
, bucketchain-simple-api =
{ dependencies = [ "bucketchain", "media-types", "simple-json", "freet" ]
, repo =
"https://github.com/Bucketchain/purescript-bucketchain-simple-api.git"
, version = "v3.0.0"
}
, bucketchain-sslify =
{ dependencies = [ "bucketchain" ]
, repo = "https://github.com/Bucketchain/purescript-bucketchain-sslify.git"
, version = "v0.2.0"
}
, bucketchain-static =
{ dependencies = [ "bucketchain", "node-fs-aff" ]
, repo = "https://github.com/Bucketchain/purescript-bucketchain-static.git"
, version = "v0.3.0"
}
, byte-codec =
{ dependencies = [ "generics-rep", "integers", "sized-vectors" ]
, repo = "https://github.com/athanclark/purescript-byte-codec.git"
, version = "v0.0.1"
}
, bytestrings =
{ dependencies =
[ "arrays"
, "effect"
, "exceptions"
, "foldable-traversable"
, "integers"
, "leibniz"
, "maybe"
, "newtype"
, "node-buffer"
, "prelude"
, "quickcheck"
, "quotient"
, "unsafe-coerce"
]
, repo = "https://github.com/rightfold/purescript-bytestrings.git"
, version = "v8.0.0"
}
, call-by-name =
{ dependencies = [ "unsafe-coerce", "lazy", "maybe", "either", "control" ]
, repo = "https://github.com/natefaubion/purescript-call-by-name.git"
, version = "v2.0.0"
}
, canvas =
{ dependencies =
[ "arraybuffer-types", "effect", "exceptions", "functions", "maybe" ]
, repo = "https://github.com/purescript-web/purescript-canvas.git"
, version = "v4.0.0"
}
, cartesian =
{ dependencies = [ "console", "effect", "integers", "psci-support" ]
, repo = "https://github.com/Ebmtranceboy/purescript-cartesian.git"
, version = "v1.0.4"
}
, catenable-lists =
{ dependencies =
[ "control"
, "foldable-traversable"
, "lists"
, "maybe"
, "prelude"
, "tuples"
, "unfoldable"
]
, repo = "https://github.com/purescript/purescript-catenable-lists.git"
, version = "v5.0.1"
}
, checked-exceptions =
{ dependencies = [ "prelude", "transformers", "variant" ]
, repo = "https://github.com/natefaubion/purescript-checked-exceptions.git"
, version = "v3.1.0"
}
, cheerio =
{ dependencies = [ "console", "effect", "functions", "prelude", "test-unit" ]
, repo = "https://github.com/icyrockcom/purescript-cheerio.git"
, version = "v0.2.3"
}
, chirashi =
{ dependencies = [ "exceptions", "prelude", "typelevel-prelude", "variant" ]
, repo = "https://github.com/justinwoo/purescript-chirashi.git"
, version = "v1.0.0"
}
, choco-pie =
{ dependencies = [ "event", "prelude", "record", "typelevel-prelude" ]
, repo = "https://github.com/justinwoo/purescript-chocopie.git"
, version = "v5.0.0"
}
, clipboardy =
{ dependencies = [ "aff", "aff-promise", "effect" ]
, repo = "https://github.com/hrajchert/purescript-clipboardy.git"
, version = "v1.0.3"
}
, codec =
{ dependencies = [ "transformers", "profunctor" ]
, repo = "https://github.com/garyb/purescript-codec.git"
, version = "v3.0.0"
}
, codec-argonaut =
{ dependencies =
[ "argonaut-core"
, "codec"
, "generics-rep"
, "ordered-collections"
, "type-equality"
, "variant"
]
, repo = "https://github.com/garyb/purescript-codec-argonaut.git"
, version = "v7.1.0"
}
, colors =
{ dependencies = [ "arrays", "integers", "lists", "partial", "strings" ]
, repo = "https://github.com/sharkdp/purescript-colors.git"
, version = "v5.0.0"
}
, concur-core =
{ dependencies =
[ "aff"
, "arrays"
, "avar"
, "console"
, "foldable-traversable"
, "free"
, "nonempty"
, "profunctor-lenses"
, "tailrec"
]
, repo = "https://github.com/purescript-concur/purescript-concur-core.git"
, version = "v0.4.2"
}
, concur-react =
{ dependencies =
[ "aff"
, "arrays"
, "avar"
, "concur-core"
, "console"
, "foldable-traversable"
, "free"
, "nonempty"
, "react"
, "react-dom"
, "tailrec"
, "web-dom"
, "web-html"
]
, repo = "https://github.com/purescript-concur/purescript-concur-react.git"
, version = "v0.4.2"
}
, console =
{ dependencies = [ "effect", "prelude" ]
, repo = "https://github.com/purescript/purescript-console.git"
, version = "v4.4.0"
}
, const =
{ dependencies =
[ "contravariant"
, "foldable-traversable"
, "invariant"
, "newtype"
, "prelude"
]
, repo = "https://github.com/purescript/purescript-const.git"
, version = "v4.1.0"
}
, contravariant =
{ dependencies = [ "either", "newtype", "prelude", "tuples" ]
, repo = "https://github.com/purescript/purescript-contravariant.git"
, version = "v4.0.1"
}
, control =
{ dependencies = [ "prelude", "newtype" ]
, repo = "https://github.com/purescript/purescript-control.git"
, version = "v4.2.0"
}
, coroutines =
{ dependencies = [ "freet", "parallel", "profunctor" ]
, repo = "https://github.com/purescript-contrib/purescript-coroutines.git"
, version = "v5.0.1"
}
, crypto =
{ dependencies = [ "node-buffer" ]
, repo = "https://github.com/oreshinya/purescript-crypto.git"
, version = "v2.0.1"
}
, css =
{ dependencies =
[ "colors"
, "console"
, "generics-rep"
, "nonempty"
, "profunctor"
, "strings"
, "these"
, "transformers"
]
, repo = "https://github.com/slamdata/purescript-css.git"
, version = "v4.0.0"
}
, cssom =
{ dependencies = [ "effect" ]
, repo = "https://github.com/danieljharvey/purescript-cssom.git"
, version = "v0.0.2"
}
, data-algebrae =
{ dependencies =
[ "arrays"
, "foreign-object"
, "generics-rep"
, "maybe"
, "ordered-collections"
, "prelude"
, "spec"
, "spec-quickcheck"
]
, repo = "https://github.com/i-am-tom/purescript-data-algebrae.git"
, version = "v4.0.0"
}
, data-default =
{ dependencies = [ "maybe", "record", "lists" ]
, repo = "https://github.com/thought2/purescript-data-default.git"
, version = "v0.3.2"
}
, datetime =
{ dependencies =
[ "bifunctors"
, "control"
, "either"
, "enums"
, "foldable-traversable"
, "functions"
, "gen"
, "integers"
, "lists"
, "math"
, "maybe"
, "newtype"
, "ordered-collections"
, "partial"
, "prelude"
, "tuples"
]
, repo = "https://github.com/purescript/purescript-datetime.git"
, version = "v4.1.1"
}
, debug =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/garyb/purescript-debug.git"
, version = "v4.0.0"
}
, decimals =
{ dependencies = [ "maybe" ]
, repo = "https://github.com/sharkdp/purescript-decimals.git"
, version = "v5.0.0"
}
, distributive =
{ dependencies = [ "identity", "newtype", "prelude" ]
, repo = "https://github.com/purescript/purescript-distributive.git"
, version = "v4.0.0"
}
, dom-filereader =
{ dependencies = [ "aff", "arraybuffer-types", "web-file", "web-html" ]
, repo = "https://github.com/nwolverson/purescript-dom-filereader.git"
, version = "v5.0.0"
}
, dom-indexed =
{ dependencies =
[ "media-types", "prelude", "web-clipboard", "web-touchevents" ]
, repo = "https://github.com/slamdata/purescript-dom-indexed.git"
, version = "v7.0.0"
}
, dotenv =
{ dependencies =
[ "console"
, "node-fs-aff"
, "node-process"
, "parsing"
, "prelude"
, "psci-support"
, "run"
, "spec"
, "sunde"
]
, repo = "https://github.com/nsaunders/purescript-dotenv.git"
, version = "v1.1.0"
}
, drawing =
{ dependencies =
[ "canvas", "colors", "integers", "lists", "math", "prelude" ]
, repo = "https://github.com/paf31/purescript-drawing.git"
, version = "v4.0.0"
}
, effect =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/purescript/purescript-effect.git"
, version = "v2.0.1"
}
, either =
{ dependencies =
[ "bifunctors"
, "control"
, "foldable-traversable"
, "invariant"
, "maybe"
, "prelude"
]
, repo = "https://github.com/purescript/purescript-either.git"
, version = "v4.1.1"
}
, email-validate =
{ dependencies = [ "aff", "generics-rep", "string-parsers", "transformers" ]
, repo = "https://github.com/cdepillabout/purescript-email-validate.git"
, version = "v5.0.0"
}
, encoding =
{ dependencies =
[ "arraybuffer-types", "either", "exceptions", "functions", "prelude" ]
, repo = "https://github.com/menelaos/purescript-encoding.git"
, version = "v0.0.6"
}
, enums =
{ dependencies =
[ "control"
, "either"
, "gen"
, "maybe"
, "newtype"
, "nonempty"
, "partial"
, "prelude"
, "tuples"
, "unfoldable"
]
, repo = "https://github.com/purescript/purescript-enums.git"
, version = "v4.0.1"
}
, errors =
{ dependencies = [ "control", "effect", "either", "maybe", "transformers" ]
, repo = "https://github.com/passy/purescript-errors.git"
, version = "v4.1.0"
}
, event =
{ dependencies =
[ "console"
, "effect"
, "filterable"
, "js-timers"
, "now"
, "nullable"
, "prelude"
, "unsafe-reference"
]
, repo = "https://github.com/paf31/purescript-event.git"
, version = "v1.3.0"
}
, exceptions =
{ dependencies = [ "effect", "either", "maybe", "prelude" ]
, repo = "https://github.com/purescript/purescript-exceptions.git"
, version = "v4.0.0"
}
, exists =
{ dependencies = [ "unsafe-coerce" ]
, repo = "https://github.com/purescript/purescript-exists.git"
, version = "v4.0.0"
}
, exitcodes =
{ dependencies = [ "enums" ]
, repo = "https://github.com/Risto-Stevcev/purescript-exitcodes.git"
, version = "v4.0.0"
}
, expect-inferred =
{ dependencies = [ "prelude", "typelevel-prelude" ]
, repo = "https://github.com/justinwoo/purescript-expect-inferred.git"
, version = "v2.0.0"
}
, express =
{ dependencies =
[ "aff", "foreign", "foreign-generic", "node-http", "test-unit" ]
, repo = "https://github.com/nkly/purescript-express.git"
, version = "v0.8.0"
}
, filterable =
{ dependencies =
[ "arrays"
, "either"
, "foldable-traversable"
, "identity"
, "lists"
, "ordered-collections"
]
, repo = "https://github.com/LiamGoodacre/purescript-filterable.git"
, version = "v3.0.2"
}
, fixed-points =
{ dependencies = [ "exists", "newtype", "prelude", "transformers" ]
, repo = "https://github.com/slamdata/purescript-fixed-points.git"
, version = "v5.1.0"
}
, fixed-precision =
{ dependencies = [ "integers", "maybe", "bigints", "strings", "math" ]
, repo = "https://github.com/lumihq/purescript-fixed-precision.git"
, version = "v4.3.1"
}
, flare =
{ dependencies =
[ "canvas"
, "datetime"
, "drawing"
, "foldable-traversable"
, "nonempty"
, "prelude"
, "signal"
, "smolder"
, "tuples"
, "web-dom"
]
, repo = "https://github.com/sharkdp/purescript-flare.git"
, version = "v6.0.0"
}
, float32 =
{ dependencies = [ "generics-rep", "prelude" ]
, repo = "https://github.com/athanclark/purescript-float32.git"
, version = "v0.2.0"
}
, flow-id =
{ dependencies = [ "prelude", "simple-json" ]
, repo = "https://github.com/i-am-the-slime/purescript-flow-id.git"
, version = "v1.0.0"
}
, foldable-traversable =
{ dependencies =
[ "bifunctors", "control", "maybe", "newtype", "orders", "prelude" ]
, repo = "https://github.com/purescript/purescript-foldable-traversable.git"
, version = "v4.1.1"
}
, folds =
{ dependencies = [ "control", "ordered-collections", "profunctor" ]
, repo = "https://github.com/paf31/purescript-folds.git"
, version = "v5.2.0"
}
, foreign =
{ dependencies =
[ "either"
, "functions"
, "identity"
, "integers"
, "lists"
, "maybe"
, "prelude"
, "strings"
, "transformers"
]
, repo = "https://github.com/purescript/purescript-foreign.git"
, version = "v5.0.0"
}
, foreign-generic =
{ dependencies =
[ "effect"
, "exceptions"
, "foreign"
, "foreign-object"
, "generics-rep"
, "identity"
, "ordered-collections"
, "proxy"
, "record"
]
, repo = "https://github.com/paf31/purescript-foreign-generic.git"
, version = "v10.0.0"
}
, foreign-object =
{ dependencies =
[ "arrays"
, "foldable-traversable"
, "functions"
, "gen"
, "lists"
, "maybe"
, "prelude"
, "st"
, "tailrec"
, "tuples"
, "typelevel-prelude"
, "unfoldable"
]
, repo = "https://github.com/purescript/purescript-foreign-object.git"
, version = "v2.0.3"
}
, fork =
{ dependencies = [ "aff" ]
, repo = "https://github.com/slamdata/purescript-fork.git"
, version = "v4.0.0"
}
, form-urlencoded =
{ dependencies =
[ "globals", "maybe", "newtype", "prelude", "strings", "tuples" ]
, repo =
"https://github.com/purescript-contrib/purescript-form-urlencoded.git"
, version = "v5.0.0"
}
, format =
{ dependencies =
[ "arrays"
, "effect"
, "integers"
, "math"
, "prelude"
, "strings"
, "unfoldable"
]
, repo = "https://github.com/sharkdp/purescript-format.git"
, version = "v4.0.0"
}
, format-nix =
{ dependencies = [ "generics-rep", "motsunabe", "prelude" ]
, repo = "https://github.com/justinwoo/format-nix.git"
, version = "v0.3.0"
}
, formatters =
{ dependencies =
[ "datetime"
, "fixed-points"
, "generics-rep"
, "lists"
, "parsing"
, "prelude"
, "transformers"
]
, repo = "https://github.com/slamdata/purescript-formatters.git"
, version = "v4.0.1"
}
, free =
{ dependencies =
[ "catenable-lists"
, "control"
, "distributive"
, "either"
, "exists"
, "foldable-traversable"
, "invariant"
, "lazy"
, "maybe"
, "prelude"
, "tailrec"
, "transformers"
, "tuples"
, "unsafe-coerce"
]
, repo = "https://github.com/purescript/purescript-free.git"
, version = "v5.2.0"
}
, freeap =
{ dependencies = [ "const", "exists", "gen", "lists" ]
, repo = "https://github.com/ethul/purescript-freeap.git"
, version = "v5.0.1"
}
, freedom =
{ dependencies =
[ "console", "foreign-object", "safely", "simple-emitter", "web-html" ]
, repo = "https://github.com/purescript-freedom/purescript-freedom.git"
, version = "v2.2.0"
}
, freedom-now =
{ dependencies = [ "freedom", "js-timers" ]
, repo = "https://github.com/purescript-freedom/purescript-freedom-now.git"
, version = "v3.0.0"
}
, freedom-portal =
{ dependencies = [ "freedom" ]
, repo = "https://github.com/purescript-freedom/purescript-freedom-portal.git"
, version = "v2.0.0"
}
, freedom-router =
{ dependencies = [ "freedom", "profunctor" ]
, repo = "https://github.com/purescript-freedom/purescript-freedom-router.git"
, version = "v2.0.0"
}
, freedom-transition =
{ dependencies = [ "freedom", "js-timers" ]
, repo =
"https://github.com/purescript-freedom/purescript-freedom-transition.git"
, version = "v2.0.0"
}
, freedom-virtualized =
{ dependencies = [ "freedom" ]
, repo =
"https://github.com/purescript-freedom/purescript-freedom-virtualized.git"
, version = "v3.0.1"
}
, freedom-window-resize =
{ dependencies = [ "freedom" ]
, repo =
"https://github.com/purescript-freedom/purescript-freedom-window-resize.git"
, version = "v2.0.0"
}
, freet =
{ dependencies =
[ "bifunctors"
, "effect"
, "either"
, "exists"
, "prelude"
, "tailrec"
, "transformers"
, "aff"
]
, repo = "https://github.com/purescript-contrib/purescript-freet.git"
, version = "v5.0.0"
}
, functions =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/purescript/purescript-functions.git"
, version = "v4.0.0"
}
, functors =
{ dependencies =
[ "bifunctors"
, "const"
, "control"
, "either"
, "foldable-traversable"
, "maybe"
, "newtype"
, "prelude"
, "tuples"
, "unsafe-coerce"
]
, repo = "https://github.com/purescript/purescript-functors.git"
, version = "v3.1.1"
}
, fuzzy =
{ dependencies =
[ "foldable-traversable"
, "foreign-object"
, "generics-rep"
, "newtype"
, "ordered-collections"
, "prelude"
, "rationals"
, "strings"
, "tuples"
]
, repo = "https://github.com/citizennet/purescript-fuzzy.git"
, version = "v0.3.0"
}
, gen =
{ dependencies =
[ "either"
, "foldable-traversable"
, "identity"
, "maybe"
, "newtype"
, "nonempty"
, "prelude"
, "tailrec"
, "tuples"
, "unfoldable"
]
, repo = "https://github.com/purescript/purescript-gen.git"
, version = "v2.1.1"
}
, generics-rep =
{ dependencies =
[ "enums", "foldable-traversable", "maybe", "newtype", "prelude" ]
, repo = "https://github.com/purescript/purescript-generics-rep.git"
, version = "v6.1.1"
}
, globals =
{ dependencies = [ "functions", "maybe" ]
, repo = "https://github.com/purescript/purescript-globals.git"
, version = "v4.1.0"
}
, gomtang-basic =
{ dependencies = [ "console", "effect", "prelude", "record", "web-html" ]
, repo = "https://github.com/justinwoo/purescript-gomtang-basic.git"
, version = "v0.2.0"
}
, grain =
{ dependencies = [ "web-html" ]
, repo = "https://github.com/purescript-grain/purescript-grain.git"
, version = "v0.7.0"
}
, grain-router =
{ dependencies = [ "grain", "profunctor" ]
, repo = "https://github.com/purescript-grain/purescript-grain-router.git"
, version = "v0.7.0"
}
, grain-virtualized =
{ dependencies = [ "grain" ]
, repo =
"https://github.com/purescript-grain/purescript-grain-virtualized.git"
, version = "v0.7.0"
}
, group =
{ dependencies = [ "lists" ]
, repo = "https://github.com/morganthomas/purescript-group.git"
, version = "v4.1.1"
}
, halogen =
{ dependencies =
[ "aff"
, "avar"
, "console"
, "const"
, "coroutines"
, "dom-indexed"
, "foreign"
, "fork"
, "free"
, "freeap"
, "halogen-vdom"
, "media-types"
, "nullable"
, "ordered-collections"
, "parallel"
, "profunctor"
, "transformers"
, "unsafe-coerce"
, "unsafe-reference"
, "web-uievents"
]
, repo = "https://github.com/slamdata/purescript-halogen.git"
, version = "v5.0.1"
}
, halogen-bootstrap =
{ dependencies = [ "halogen" ]
, repo = "https://github.com/slamdata/purescript-halogen-bootstrap.git"
, version = "v8.0.0"
}
, halogen-bootstrap4 =
{ dependencies = [ "halogen" ]
, repo = "https://github.com/mschristiansen/purescript-halogen-bootstrap4.git"
, version = "v0.1.4"
}
, halogen-css =
{ dependencies = [ "css", "halogen" ]
, repo = "https://github.com/slamdata/purescript-halogen-css.git"
, version = "v8.0.0"
}
, halogen-formless =
{ dependencies =
[ "halogen"
, "variant"
, "heterogeneous"
, "generics-rep"
, "profunctor-lenses"
]
, repo = "https://github.com/thomashoneyman/purescript-halogen-formless.git"
, version = "v1.0.0-rc.2"
}
, halogen-hooks =
{ dependencies = [ "halogen", "indexed-monad" ]
, repo = "https://github.com/thomashoneyman/purescript-halogen-hooks.git"
, version = "v0.4.2"
}
, halogen-hooks-extra =
{ dependencies = [ "halogen-hooks" ]
, repo =
"https://github.com/jordanmartinez/purescript-halogen-hooks-extra.git"
, version = "v0.7.1"
}
, halogen-select =
{ dependencies = [ "halogen", "record" ]
, repo = "https://github.com/citizennet/purescript-halogen-select.git"
, version = "v5.0.0"
}
, halogen-storybook =
{ dependencies = [ "halogen", "prelude", "routing", "foreign-object" ]
, repo = "https://github.com/rnons/purescript-halogen-storybook.git"
, version = "v1.0.0-rc.1"
}
, halogen-svg-elems =
{ dependencies = [ "effect", "halogen", "prelude", "strings", "web-uievents" ]
, repo = "https://github.com/JordanMartinez/purescript-halogen-svg-elems.git"
, version = "v2.0.1"
}
, halogen-vdom =
{ dependencies =
[ "bifunctors"
, "effect"
, "foreign"
, "foreign-object"
, "maybe"
, "prelude"
, "refs"
, "tuples"
, "unsafe-coerce"
, "web-html"
]
, repo = "https://github.com/slamdata/purescript-halogen-vdom.git"
, version = "v6.1.3"
}
, heterogeneous =
{ dependencies =
[ "either", "functors", "prelude", "record", "tuples", "variant" ]
, repo = "https://github.com/natefaubion/purescript-heterogeneous.git"
, version = "v0.4.1"
}
, higher-order =
{ dependencies =
[ "catenable-lists"
, "const"
, "effect"
, "errors"
, "generics-rep"
, "lists"
, "ordered-collections"
, "orders"
, "profunctor"
]
, repo = "https://github.com/matthew-hilty/purescript-higher-order.git"
, version = "v0.2.0"
}
, html-parser-halogen =
{ dependencies = [ "generics-rep", "halogen", "prelude", "string-parsers" ]
, repo = "https://github.com/rnons/purescript-html-parser-halogen.git"
, version = "v1.0.0-rc.2"
}
, http-methods =
{ dependencies = [ "either", "prelude", "strings" ]
, repo = "https://github.com/purescript-contrib/purescript-http-methods.git"
, version = "v4.0.2"
}
, httpure =
{ dependencies =
[ "aff"
, "arrays"
, "bifunctors"
, "console"
, "control"
, "effect"
, "either"
, "exceptions"
, "foldable-traversable"
, "foreign"
, "lists"
, "maybe"
, "newtype"
, "node-buffer"
, "node-child-process"
, "node-fs"
, "node-fs-aff"
, "node-http"
, "node-streams"
, "nullable"
, "options"
, "ordered-collections"
, "prelude"
, "psci-support"
, "refs"
, "spec"
, "strings"
, "tuples"
, "type-equality"
, "unsafe-coerce"
]
, repo = "https://github.com/cprussin/purescript-httpure.git"
, version = "v0.10.0"
}
, httpure-contrib-biscotti =
{ dependencies =
[ "aff"
, "argonaut"
, "biscotti-cookie"
, "biscotti-session"
, "effect"
, "either"
, "generics-rep"
, "httpure"
, "maybe"
, "profunctor-lenses"
, "psci-support"
, "test-unit"
, "tuples"
, "type-equality"
]
, repo =
"https://github.com/drewolson/purescript-httpure-contrib-biscotti.git"
, version = "v0.1.2"
}
, hyper =
{ dependencies =
[ "aff"
, "avar"
, "argonaut"
, "arrays"
, "console"
, "control"
, "effect"
, "foldable-traversable"
, "generics-rep"
, "http-methods"
, "indexed-monad"
, "media-types"
, "node-fs-aff"
, "node-http"
, "ordered-collections"
, "proxy"
, "random"
, "smolder"
, "strings"
, "transformers"
, "record-extra"
, "typelevel-prelude"
]
, repo = "https://github.com/purescript-hyper/hyper.git"
, version = "v0.11.0"
}
, hypertrout =
{ dependencies =
[ "argonaut-generic", "console", "hyper", "prelude", "trout" ]
, repo = "https://github.com/purescript-hyper/purescript-hypertrout.git"
, version = "v0.11.1"
}
, identity =
{ dependencies =
[ "control", "foldable-traversable", "invariant", "newtype", "prelude" ]
, repo = "https://github.com/purescript/purescript-identity.git"
, version = "v4.1.0"
}
, identy =
{ dependencies = [ "simple-json" ]
, repo = "https://github.com/oreshinya/purescript-identy.git"
, version = "v2.1.0"
}
, indexed-monad =
{ dependencies = [ "control", "newtype" ]
, repo = "https://github.com/garyb/purescript-indexed-monad.git"
, version = "v1.2.0"
}
, inflection =
{ dependencies = [ "functions" ]
, repo = "https://github.com/athanclark/purescript-inflection.git"
, version = "v1.0.1"
}
, int-53 =
{ dependencies = [ "integers", "math", "strings" ]
, repo = "https://github.com/rgrempel/purescript-int-53.git"
, version = "v4.0.0"
}
, integers =
{ dependencies = [ "globals", "math", "maybe", "prelude" ]
, repo = "https://github.com/purescript/purescript-integers.git"
, version = "v4.0.0"
}
, interpolate =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/jordanmartinez/purescript-interpolate.git"
, version = "v2.0.1"
}
, intmap =
{ dependencies = [ "arraybuffer-class", "parseint" ]
, repo = "https://github.com/openchronology/purescript-intmap.git"
, version = "v0.0.0"
}
, invariant =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/purescript/purescript-invariant.git"
, version = "v4.1.0"
}
, jajanmen =
{ dependencies = [ "node-sqlite3", "prelude", "typelevel-prelude" ]
, repo = "https://github.com/justinwoo/purescript-jajanmen.git"
, version = "v1.0.0"
}
, jquery =
{ dependencies = [ "console", "effect", "foreign", "web-dom" ]
, repo = "https://github.com/purescript-contrib/purescript-jquery.git"
, version = "v5.0.0"
}
, js-date =
{ dependencies = [ "datetime", "exceptions", "foreign", "integers", "now" ]
, repo = "https://github.com/purescript-contrib/purescript-js-date.git"
, version = "v6.0.0"
}
, js-timers =
{ dependencies = [ "effect" ]
, repo = "https://github.com/purescript-contrib/purescript-js-timers.git"
, version = "v4.0.1"
}
, json-pointer =
{ dependencies =
[ "console"
, "effect"
, "foreign"
, "generics-rep"
, "prelude"
, "psci-support"
, "spec-quickcheck"
, "strings"
]
, repo = "https://github.com/reactormonk/purescript-json-pointer.git"
, version = "v1.1.0"
}
, json-schema =
{ dependencies = [ "generics-rep", "prelude", "simple-json" ]
, repo = "https://github.com/felixmulder/purescript-json-schema.git"
, version = "v0.0.1"
}
, jwt =
{ dependencies =
[ "argonaut-core"
, "arrays"
, "b64"
, "either"
, "errors"
, "exceptions"
, "prelude"
, "profunctor-lenses"
, "strings"
]
, repo = "https://github.com/menelaos/purescript-jwt.git"
, version = "v0.0.7"
}
, kancho =
{ dependencies = [ "foreign", "newtype", "strings", "typelevel-prelude" ]
, repo = "https://github.com/justinwoo/purescript-kancho.git"
, version = "v2.0.0"
}
, kishimen =
{ dependencies = [ "generics-rep", "prelude", "typelevel-prelude", "variant" ]
, repo = "https://github.com/justinwoo/purescript-kishimen.git"
, version = "v1.0.1"
}
, lazy =
{ dependencies = [ "control", "foldable-traversable", "invariant", "prelude" ]
, repo = "https://github.com/purescript/purescript-lazy.git"
, version = "v4.0.0"
}
, lcg =
{ dependencies =
[ "effect", "integers", "math", "maybe", "partial", "prelude", "random" ]
, repo = "https://github.com/purescript/purescript-lcg.git"
, version = "v2.0.0"
}
, leibniz =
{ dependencies = [ "prelude", "unsafe-coerce" ]
, repo = "https://github.com/paf31/purescript-leibniz.git"
, version = "v5.0.0"
}
, lenient-html-parser =
{ dependencies = [ "console", "generics-rep", "prelude", "string-parsers" ]
, repo = "https://github.com/justinwoo/purescript-lenient-html-parser.git"
, version = "v4.0.0"
}
, lists =
{ dependencies =
[ "bifunctors"
, "control"
, "foldable-traversable"
, "lazy"
, "maybe"
, "newtype"
, "nonempty"
, "partial"
, "prelude"
, "tailrec"
, "tuples"
, "unfoldable"
]
, repo = "https://github.com/purescript/purescript-lists.git"
, version = "v5.4.1"
}
, literals =
{ dependencies =
[ "assert"
, "effect"
, "console"
, "integers"
, "numbers"
, "partial"
, "psci-support"
, "unsafe-coerce"
, "typelevel-prelude"
]
, repo = "https://github.com/jvliwanag/purescript-literals.git"
, version = "v0.1.1"
}
, logging =
{ dependencies =
[ "prelude"
, "contravariant"
, "console"
, "effect"
, "transformers"
, "tuples"
, "either"
]
, repo = "https://github.com/rightfold/purescript-logging.git"
, version = "v3.0.0"
}
, logging-journald =
{ dependencies = [ "generics-rep", "logging", "systemd-journald" ]
, repo = "https://github.com/paluh/purescript-logging-journald.git"
, version = "v0.3.2"
}
, machines =
{ dependencies =
[ "arrays"
, "control"
, "effect"
, "lists"
, "maybe"
, "prelude"
, "profunctor"
, "tuples"
, "unfoldable"
]
, repo = "https://github.com/purescript-contrib/purescript-machines.git"
, version = "v5.1.0"
}
, makkori =
{ dependencies = [ "functions", "node-http", "prelude", "record" ]
, repo = "https://github.com/justinwoo/purescript-makkori.git"
, version = "v1.0.0"
}
, math =
{ dependencies = [] : List Text
, repo = "https://github.com/purescript/purescript-math.git"
, version = "v2.1.1"
}
, matrices =
{ dependencies = [ "arrays", "strings" ]
, repo = "https://github.com/kritzcreek/purescript-matrices.git"
, version = "v5.0.1"
}
, maybe =
{ dependencies = [ "control", "invariant", "newtype", "prelude" ]
, repo = "https://github.com/purescript/purescript-maybe.git"
, version = "v4.0.1"
}
, media-types =
{ dependencies = [ "newtype", "prelude" ]
, repo = "https://github.com/purescript-contrib/purescript-media-types.git"
, version = "v4.0.1"
}
, memoize =
{ dependencies =
[ "either"
, "generics-rep"
, "integers"
, "lazy"
, "lists"
, "maybe"
, "strings"
, "tuples"
]
, repo = "https://github.com/paf31/purescript-memoize.git"
, version = "v5.0.0"
}
, metadata =
{ dependencies = [] : List Text
, repo = "https://github.com/spacchetti/purescript-metadata.git"
, version = "v0.13.8"
}
, milkis =
{ dependencies =
[ "aff-promise"
, "arraybuffer-types"
, "foreign-object"
, "prelude"
, "typelevel-prelude"
]
, repo = "https://github.com/justinwoo/purescript-milkis.git"
, version = "v7.4.0"
}
, minibench =
{ dependencies =
[ "console"
, "effect"
, "globals"
, "integers"
, "math"
, "partial"
, "prelude"
, "refs"
]
, repo = "https://github.com/purescript/purescript-minibench.git"
, version = "v2.0.0"
}
, mmorph =
{ dependencies = [ "free", "functors", "transformers" ]
, repo = "https://github.com/thimoteus/purescript-mmorph.git"
, version = "v5.1.0"
}
, mol-draw =
{ dependencies =
[ "arrays"
, "console"
, "effect"
, "either"
, "integers"
, "math"
, "numbers"
, "ordered-collections"
, "strings"
, "stringutils"
, "validated-molecule"
]
, repo = "https://github.com/lukasturcani/mol-draw.git"
, version = "v1.0.16"
}
, monad-control =
{ dependencies = [ "aff", "freet", "identity", "lists" ]
, repo = "https://github.com/athanclark/purescript-monad-control.git"
, version = "v5.0.0"
}
, monad-logger =
{ dependencies =
[ "aff"
, "ansi"
, "argonaut"
, "arrays"
, "console"
, "control"
, "effect"
, "foldable-traversable"
, "foreign-object"
, "integers"
, "js-date"
, "maybe"
, "newtype"
, "ordered-collections"
, "prelude"
, "strings"
, "transformers"
, "tuples"
]
, repo = "https://github.com/cprussin/purescript-monad-logger.git"
, version = "v1.3.1"
}
, monad-loops =
{ dependencies = [ "maybe", "tailrec", "prelude", "tuples", "lists" ]
, repo = "https://github.com/mlang/purescript-monad-loops.git"
, version = "v0.5.0"
}
, monad-unlift =
{ dependencies = [ "monad-control" ]
, repo = "https://github.com/athanclark/purescript-monad-unlift.git"
, version = "v1.0.1"
}
, money =
{ dependencies =
[ "foldable-traversable"
, "globals"
, "integers"
, "lists"
, "math"
, "prelude"
, "ring-modules"
, "newtype"
, "rationals"
]
, repo = "https://github.com/i-am-tom/purescript-money.git"
, version = "v8.0.0"
}
, motsunabe =
{ dependencies = [ "lists", "strings" ]
, repo = "https://github.com/justinwoo/purescript-motsunabe.git"
, version = "v2.0.0"
}
, mysql =
{ dependencies = [ "aff", "js-date", "simple-json" ]
, repo = "https://github.com/oreshinya/purescript-mysql.git"
, version = "v4.1.1"
}
, naporitan =
{ dependencies = [ "record", "typelevel-prelude" ]
, repo = "https://github.com/justinwoo/purescript-naporitan.git"
, version = "v1.0.0"
}
, naturals =
{ dependencies = [ "maybe", "prelude", "enums" ]
, repo = "https://github.com/LiamGoodacre/purescript-naturals.git"
, version = "v3.0.0"
}
, newtype =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/purescript/purescript-newtype.git"
, version = "v3.0.0"
}
, node-buffer =
{ dependencies =
[ "arraybuffer-types", "effect", "maybe", "st", "unsafe-coerce" ]
, repo = "https://github.com/purescript-node/purescript-node-buffer.git"
, version = "v6.0.0"
}
, node-child-process =
{ dependencies =
[ "exceptions"
, "foreign"
, "foreign-object"
, "functions"
, "node-fs"
, "node-streams"
, "nullable"
, "posix-types"
, "unsafe-coerce"
]
, repo =
"https://github.com/purescript-node/purescript-node-child-process.git"
, version = "v6.0.0"
}
, node-electron =
{ dependencies =
[ "effect"
, "foreign"
, "halogen"
, "maybe"
, "options"
, "prelude"
, "transformers"
, "unsafe-coerce"
, "web-dom"
, "web-events"
, "web-html"
]
, repo = "https://github.com/cprussin/purescript-node-electron.git"
, version = "v0.0.2"
}
, node-fs =
{ dependencies =
[ "datetime"
, "effect"
, "either"
, "enums"
, "exceptions"
, "functions"
, "globals"
, "integers"
, "js-date"
, "maybe"
, "node-buffer"
, "node-path"
, "node-streams"
, "nullable"
, "partial"
, "prelude"
, "strings"
, "unsafe-coerce"
]
, repo = "https://github.com/purescript-node/purescript-node-fs.git"
, version = "v5.0.1"
}
, node-fs-aff =
{ dependencies = [ "aff", "either", "node-fs", "node-path" ]
, repo = "https://github.com/purescript-node/purescript-node-fs-aff.git"
, version = "v6.0.0"
}
, node-he =
{ dependencies = [] : List Text
, repo = "https://github.com/justinwoo/purescript-node-he.git"
, version = "v0.2.0"
}
, node-http =
{ dependencies =
[ "arraybuffer-types"
, "contravariant"
, "effect"
, "foreign"
, "foreign-object"
, "maybe"
, "node-buffer"
, "node-streams"
, "node-url"
, "nullable"
, "options"
, "prelude"
, "unsafe-coerce"
]
, repo = "https://github.com/purescript-node/purescript-node-http.git"
, version = "v5.0.2"
}
, node-net =
{ dependencies =
[ "effect"
, "either"
, "exceptions"
, "foreign"
, "maybe"
, "node-buffer"
, "node-fs"
, "nullable"
, "options"
, "prelude"
, "transformers"
]
, repo = "https://github.com/purescript-node/purescript-node-net.git"
, version = "v1.0.0"
}
, node-path =
{ dependencies = [ "effect" ]
, repo = "https://github.com/purescript-node/purescript-node-path.git"
, version = "v3.0.0"
}
, node-postgres =
{ dependencies =
[ "aff"
, "arrays"
, "datetime"
, "either"
, "foldable-traversable"
, "foreign"
, "integers"
, "nullable"
, "prelude"
, "transformers"
, "unsafe-coerce"
]
, repo = "https://github.com/epost/purescript-node-postgres.git"
, version = "v5.0.0"
}
, node-process =
{ dependencies =
[ "effect"
, "foreign-object"
, "maybe"
, "node-streams"
, "posix-types"
, "prelude"
, "unsafe-coerce"
]
, repo = "https://github.com/purescript-node/purescript-node-process.git"
, version = "v7.0.0"
}
, node-readline =
{ dependencies =
[ "effect"
, "foreign"
, "node-process"
, "node-streams"
, "options"
, "prelude"
]
, repo = "https://github.com/purescript-node/purescript-node-readline.git"
, version = "v4.0.1"
}
, node-sqlite3 =
{ dependencies = [ "aff", "foreign" ]
, repo = "https://github.com/justinwoo/purescript-node-sqlite3.git"
, version = "v6.0.0"
}
, node-streams =
{ dependencies =
[ "effect", "either", "exceptions", "node-buffer", "prelude" ]
, repo = "https://github.com/purescript-node/purescript-node-streams.git"
, version = "v4.0.1"
}
, node-telegram-bot-api =
{ dependencies = [ "aff", "foreign", "simple-json", "strings" ]
, repo = "https://github.com/justinwoo/purescript-node-telegram-bot-api.git"
, version = "v4.0.0"
}
, node-url =
{ dependencies = [ "nullable" ]
, repo = "https://github.com/purescript-node/purescript-node-url.git"
, version = "v4.0.0"
}
, nodemailer =
{ dependencies = [ "aff", "node-streams", "simple-json" ]
, repo = "https://github.com/oreshinya/purescript-nodemailer.git"
, version = "v2.0.2"
}
, nodetrout =
{ dependencies =
[ "effect", "form-urlencoded", "http-methods", "node-http", "trout" ]
, repo = "https://github.com/nsaunders/purescript-nodetrout.git"
, version = "v0.0.1"
}
, nonempty =
{ dependencies =
[ "control"
, "foldable-traversable"
, "maybe"
, "prelude"
, "tuples"
, "unfoldable"
]
, repo = "https://github.com/purescript/purescript-nonempty.git"
, version = "v5.0.0"
}
, now =
{ dependencies = [ "datetime", "effect" ]
, repo = "https://github.com/purescript-contrib/purescript-now.git"
, version = "v4.0.0"
}
, nullable =
{ dependencies = [ "functions", "maybe" ]
, repo = "https://github.com/purescript-contrib/purescript-nullable.git"
, version = "v4.1.1"
}
, numbers =
{ dependencies = [ "globals", "math", "maybe" ]
, repo = "https://github.com/sharkdp/purescript-numbers.git"
, version = "v7.0.0"
}
, options =
{ dependencies =
[ "contravariant", "foreign", "foreign-object", "maybe", "tuples" ]
, repo = "https://github.com/purescript-contrib/purescript-options.git"
, version = "v5.0.0"
}
, optlicative =
{ dependencies =
[ "console", "foreign", "node-process", "record", "validation" ]
, repo = "https://github.com/thimoteus/purescript-optlicative.git"
, version = "v6.0.1"
}
, optparse =
{ dependencies =
[ "arrays"
, "console"
, "effect"
, "exists"
, "exitcodes"
, "free"
, "memoize"
, "node-process"
, "ordered-collections"
, "prelude"
, "strings"
, "transformers"
]
, repo = "https://github.com/f-o-a-m/purescript-optparse.git"
, version = "v3.0.1"
}
, ordered-collections =
{ dependencies =
[ "arrays"
, "foldable-traversable"
, "gen"
, "lists"
, "maybe"
, "partial"
, "prelude"
, "st"
, "tailrec"
, "tuples"
, "unfoldable"
, "unsafe-coerce"
]
, repo = "https://github.com/purescript/purescript-ordered-collections.git"
, version = "v1.6.1"
}
, ordered-set =
{ dependencies =
[ "argonaut-codecs", "arrays", "partial", "prelude", "unfoldable" ]
, repo = "https://github.com/flip111/purescript-ordered-set.git"
, version = "v0.4.0"
}
, orders =
{ dependencies = [ "newtype", "prelude" ]
, repo = "https://github.com/purescript/purescript-orders.git"
, version = "v4.0.0"
}
, pairing =
{ dependencies = [ "free", "functors", "transformers" ]
, repo = "https://github.com/paf31/purescript-pairing.git"
, version = "v5.1.0"
}
, pairs =
{ dependencies =
[ "console", "distributive", "foldable-traversable", "quickcheck" ]
, repo = "https://github.com/sharkdp/purescript-pairs.git"
, version = "v7.0.0"
}
, parallel =
{ dependencies =
[ "control"
, "effect"
, "either"
, "foldable-traversable"
, "functors"
, "maybe"
, "newtype"
, "prelude"
, "refs"
, "transformers"
]
, repo = "https://github.com/purescript/purescript-parallel.git"
, version = "v4.0.0"
}
, parseint =
{ dependencies = [ "functions", "globals", "integers" ]
, repo = "https://github.com/athanclark/purescript-parseint.git"
, version = "v1.1.1"
}
, parsing =
{ dependencies =
[ "arrays"
, "either"
, "foldable-traversable"
, "identity"
, "integers"
, "lists"
, "maybe"
, "strings"
, "transformers"
, "unicode"
]
, repo = "https://github.com/purescript-contrib/purescript-parsing.git"
, version = "v5.0.3"
}
, parsing-dataview =
{ dependencies = [ "parsing", "arraybuffer-types", "arraybuffer" ]
, repo = "https://github.com/jamesdbrock/purescript-parsing-dataview.git"
, version = "v1.1.1"
}
, partial =
{ dependencies = [] : List Text
, repo = "https://github.com/purescript/purescript-partial.git"
, version = "v2.0.1"
}
, pathy =
{ dependencies =
[ "console"
, "exceptions"
, "lists"
, "partial"
, "profunctor"
, "quickcheck"
, "strings"
, "transformers"
, "unsafe-coerce"
, "typelevel-prelude"
]
, repo = "https://github.com/slamdata/purescript-pathy.git"
, version = "v7.0.1"
}
, phoenix =
{ dependencies = [ "options" ]
, repo = "https://github.com/brandonhamilton/purescript-phoenix.git"
, version = "v4.0.0"
}
, pipes =
{ dependencies =
[ "aff", "lists", "mmorph", "prelude", "tailrec", "transformers", "tuples" ]
, repo = "https://github.com/felixSchl/purescript-pipes.git"
, version = "v6.0.0"
}
, pointed-list =
{ dependencies = [ "lists", "prelude" ]
, repo = "https://github.com/paluh/purescript-pointed-list.git"
, version = "v0.4.0"
}
, polyform =
{ dependencies =
[ "foreign"
, "foreign-object"
, "generics-rep"
, "invariant"
, "newtype"
, "ordered-collections"
, "profunctor"
, "quickcheck-laws"
, "run"
, "transformers"
, "validation"
, "variant"
]
, repo = "https://github.com/paluh/purescript-polyform.git"
, version = "v0.8.2"
}
, posix-types =
{ dependencies = [ "maybe", "prelude" ]
, repo = "https://github.com/purescript-node/purescript-posix-types.git"
, version = "v4.0.0"
}
, precise-datetime =
{ dependencies =
[ "arrays"
, "console"
, "datetime"
, "either"
, "enums"
, "foldable-traversable"
, "formatters"
, "integers"
, "js-date"
, "lists"
, "maybe"
, "newtype"
, "prelude"
, "strings"
, "tuples"
, "unicode"
, "numbers"
, "decimals"
]
, repo = "https://github.com/awakesecurity/purescript-precise-datetime.git"
, version = "v5.1.1"
}
, prelude =
{ dependencies = [] : List Text
, repo = "https://github.com/purescript/purescript-prelude.git"
, version = "v4.1.1"
}
, prettier =
{ dependencies = [ "maybe", "prelude" ]
, repo = "https://github.com/gcanti/purescript-prettier.git"
, version = "v0.3.0"
}
, profunctor =
{ dependencies =
[ "contravariant"
, "control"
, "distributive"
, "either"
, "exists"
, "invariant"
, "newtype"
, "prelude"
, "tuples"
]
, repo = "https://github.com/purescript/purescript-profunctor.git"
, version = "v4.1.0"
}
, profunctor-lenses =
{ dependencies =
[ "arrays"
, "bifunctors"
, "const"
, "control"
, "distributive"
, "either"
, "foldable-traversable"
, "foreign-object"
, "functors"
, "identity"
, "lists"
, "maybe"
, "newtype"
, "ordered-collections"
, "partial"
, "prelude"
, "profunctor"
, "record"
, "transformers"
, "tuples"
]
, repo =
"https://github.com/purescript-contrib/purescript-profunctor-lenses.git"
, version = "v6.3.0"
}
, promises =
{ dependencies =
[ "console"
, "datetime"
, "exceptions"
, "functions"
, "prelude"
, "transformers"
]
, repo = "https://github.com/thimoteus/purescript-promises.git"
, version = "v3.1.1"
}
, proxy =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/purescript/purescript-proxy.git"
, version = "v3.0.0"
}
, proxying =
{ dependencies = [ "effect", "generics-rep", "prelude", "typelevel-prelude" ]
, repo = "https://github.com/matthew-hilty/purescript-proxying.git"
, version = "v1.1.0"
}
, psa-utils =
{ dependencies =
[ "ansi"
, "argonaut-codecs"
, "argonaut-core"
, "arrays"
, "console"
, "control"
, "effect"
, "either"
, "foldable-traversable"
, "maybe"
, "node-path"
, "ordered-collections"
, "prelude"
, "strings"
, "tuples"
, "unsafe-coerce"
]
, repo = "https://github.com/natefaubion/purescript-psa-utils.git"
, version = "v7.0.0"
}
, psc-ide =
{ dependencies =
[ "aff"
, "argonaut"
, "arrays"
, "console"
, "maybe"
, "node-child-process"
, "node-fs"
, "parallel"
, "random"
]
, repo = "https://github.com/kRITZCREEK/purescript-psc-ide.git"
, version = "v16.0.0"
}
, psci-support =
{ dependencies = [ "console", "effect", "prelude" ]
, repo = "https://github.com/purescript/purescript-psci-support.git"
, version = "v4.0.0"
}
, quantities =
{ dependencies =
[ "lists", "foldable-traversable", "numbers", "pairs", "decimals" ]
, repo = "https://github.com/sharkdp/purescript-quantities.git"
, version = "v10.0.0"
}
, querydsl =
{ dependencies =
[ "prelude"
, "effect"
, "arrays"
, "lists"
, "record"
, "strings"
, "tuples"
, "typelevel-prelude"
, "either"
, "transformers"
, "node-sqlite3"
, "datetime"
, "formatters"
, "node-buffer"
, "nullable"
]
, repo = "https://github.com/Dretch/purescript-querydsl.git"
, version = "v0.10.1"
}
, queue =
{ dependencies = [ "refs", "aff", "foreign-object", "avar" ]
, repo = "https://github.com/athanclark/purescript-queue.git"
, version = "v8.0.2"
}
, quickcheck =
{ dependencies =
[ "arrays"
, "console"
, "control"
, "effect"
, "either"
, "enums"
, "exceptions"
, "foldable-traversable"
, "gen"
, "generics-rep"
, "identity"
, "integers"
, "lazy"
, "lcg"
, "lists"
, "math"
, "maybe"
, "newtype"
, "nonempty"
, "partial"
, "prelude"
, "record"
, "st"
, "strings"
, "tailrec"
, "transformers"
, "tuples"
, "unfoldable"
]
, repo = "https://github.com/purescript/purescript-quickcheck.git"
, version = "v6.1.0"
}
, quickcheck-combinators =
{ dependencies = [ "quickcheck", "typelevel" ]
, repo = "https://github.com/athanclark/purescript-quickcheck-combinators.git"
, version = "v0.1.3"
}
, quickcheck-laws =
{ dependencies = [ "enums", "proxy", "quickcheck" ]
, repo = "https://github.com/garyb/purescript-quickcheck-laws.git"
, version = "v5.1.0"
}
, quickcheck-utf8 =
{ dependencies = [ "quickcheck" ]
, repo = "https://github.com/openchronology/purescript-quickcheck-utf8.git"
, version = "v0.0.0"
}
, quotient =
{ dependencies = [ "prelude", "proxy", "quickcheck" ]
, repo = "https://github.com/rightfold/purescript-quotient.git"
, version = "v3.0.0"
}
, radox =
{ dependencies = [ "prelude", "effect", "variant", "refs", "aff" ]
, repo = "https://github.com/danieljharvey/purescript-radox.git"
, version = "v1.0.0"
}
, random =
{ dependencies = [ "effect", "integers", "math" ]
, repo = "https://github.com/purescript/purescript-random.git"
, version = "v4.0.0"
}
, rationals =
{ dependencies = [ "integers", "prelude" ]
, repo = "https://github.com/anttih/purescript-rationals.git"
, version = "v5.0.0"
}
, rave =
{ dependencies =
[ "aff"
, "checked-exceptions"
, "console"
, "effect"
, "exceptions"
, "prelude"
, "record"
, "variant"
]
, repo = "https://github.com/reactormonk/purescript-rave.git"
, version = "v0.1.1"
}
, react =
{ dependencies =
[ "effect"
, "exceptions"
, "maybe"
, "nullable"
, "prelude"
, "typelevel-prelude"
, "unsafe-coerce"
]
, repo = "https://github.com/purescript-contrib/purescript-react.git"
, version = "v8.0.0"
}
, react-basic =
{ dependencies = [ "prelude", "effect", "record" ]
, repo = "https://github.com/lumihq/purescript-react-basic.git"
, version = "v15.0.0"
}
, react-basic-classic =
{ dependencies =
[ "prelude"
, "aff"
, "effect"
, "functions"
, "maybe"
, "nullable"
, "react-basic"
]
, repo = "https://github.com/lumihq/purescript-react-basic-classic.git"
, version = "v1.0.1"
}
, react-basic-compat =
{ dependencies = [ "effect", "react-basic-classic" ]
, repo = "https://github.com/lumihq/purescript-react-basic-compat.git"
, version = "v1.0.1"
}
, react-basic-dnd =
{ dependencies =
[ "prelude", "react-basic-hooks", "nullable", "promises", "web-dom" ]
, repo = "https://github.com/lumihq/purescript-react-dnd-basic.git"
, version = "v7.0.0"
}
, react-basic-dom =
{ dependencies =
[ "prelude"
, "effect"
, "foreign-object"
, "react-basic"
, "unsafe-coerce"
, "web-dom"
, "web-events"
, "web-file"
, "web-html"
]
, repo = "https://github.com/lumihq/purescript-react-basic-dom.git"
, version = "v2.0.0"
}
, react-basic-emotion =
{ dependencies =
[ "prelude"
, "colors"
, "foreign"
, "numbers"
, "react-basic"
, "typelevel-prelude"
, "unsafe-reference"
, "web-html"
]
, repo = "https://github.com/lumihq/purescript-react-basic-emotion.git"
, version = "v4.2.2"
}
, react-basic-hooks =
{ dependencies =
[ "prelude"
, "aff-promise"
, "aff"
, "console"
, "datetime"
, "effect"
, "either"
, "indexed-monad"
, "maybe"
, "newtype"
, "numbers"
, "react-basic"
, "type-equality"
, "unsafe-coerce"
, "unsafe-reference"
, "web-html"
]
, repo = "https://github.com/spicydonuts/purescript-react-basic-hooks.git"
, version = "v6.0.0"
}
, react-basic-native =
{ dependencies =
[ "effect"
, "foreign-object"
, "js-date"
, "react-basic"
, "react-basic-dom"
, "undefinable"
]
, repo = "https://github.com/dwhitney/purescript-react-basic-native.git"
, version = "v0.1.3"
}
, react-dom =
{ dependencies = [ "effect", "react", "web-dom" ]
, repo = "https://github.com/purescript-contrib/purescript-react-dom.git"
, version = "v6.1.0"
}
, react-queue =
{ dependencies = [ "exceptions", "queue", "react", "zeta" ]
, repo = "https://github.com/athanclark/purescript-react-queue.git"
, version = "v1.3.2"
}
, react-radox =
{ dependencies = [ "prelude", "effect", "radox", "react" ]
, repo = "https://github.com/danieljharvey/purescript-react-radox.git"
, version = "v0.0.5"
}
, react-stylesheet =
{ dependencies = [ "effect", "react", "cssom", "stylesheet" ]
, repo = "https://github.com/danieljharvey/purescript-react-stylesheet.git"
, version = "v0.0.2"
}
, read =
{ dependencies = [ "maybe", "prelude", "strings" ]
, repo = "https://github.com/truqu/purescript-read.git"
, version = "v1.0.1"
}
, record =
{ dependencies = [ "functions", "prelude", "st", "unsafe-coerce" ]
, repo = "https://github.com/purescript/purescript-record.git"
, version = "v2.0.2"
}
, record-extra =
{ dependencies =
[ "arrays", "functions", "lists", "record", "typelevel-prelude" ]
, repo = "https://github.com/justinwoo/purescript-record-extra.git"
, version = "v3.0.1"
}
, record-format =
{ dependencies = [ "record", "strings", "typelevel-prelude" ]
, repo = "https://github.com/kcsongor/purescript-record-format.git"
, version = "v2.0.0"
}
, redis-client =
{ dependencies =
[ "aff"
, "arrays"
, "bytestrings"
, "console"
, "effect"
, "either"
, "int-53"
, "maybe"
, "nullable"
, "prelude"
, "psci-support"
, "test-unit"
, "transformers"
]
, repo = "https://github.com/paluh/purescript-redis-client.git"
, version = "v1.0.1"
}
, redis-hotqueue =
{ dependencies =
[ "console"
, "debug"
, "effect"
, "prelude"
, "psci-support"
, "redis-client"
, "simple-json"
, "sunde"
]
, repo = "https://github.com/paluh/purescript-redis-hotqueue.git"
, version = "v0.2.1"
}
, redux-devtools =
{ dependencies = [ "effect", "foreign", "nullable", "prelude" ]
, repo = "https://github.com/justinwoo/purescript-redux-devtools.git"
, version = "v0.1.0"
}
, refined =
{ dependencies =
[ "argonaut"
, "effect"
, "generics-rep"
, "prelude"
, "quickcheck"
, "typelevel"
]
, repo = "https://github.com/danieljharvey/purescript-refined.git"
, version = "v1.0.0"
}
, refs =
{ dependencies = [ "effect", "prelude" ]
, repo = "https://github.com/purescript/purescript-refs.git"
, version = "v4.1.0"
}
, remotedata =
{ dependencies =
[ "bifunctors", "either", "generics-rep", "profunctor-lenses" ]
, repo = "https://github.com/krisajenkins/purescript-remotedata.git"
, version = "v4.2.0"
}
, result =
{ dependencies = [ "either", "foldable-traversable", "prelude" ]
, repo = "https://github.com/ad-si/purescript-result.git"
, version = "v1.0.3"
}
, ring-modules =
{ dependencies = [ "prelude" ]
, repo = "https://github.com/f-o-a-m/purescript-ring-modules.git"
, version = "v5.0.1"
}
, routing =
{ dependencies =
[ "aff"
, "console"
, "control"
, "effect"
, "either"
, "foldable-traversable"
, "globals"
, "integers"
, "lists"
, "maybe"
, "prelude"
, "semirings"
, "tuples"
, "validation"
, "web-html"
]
, repo = "https://github.com/slamdata/purescript-routing.git"
, version = "v9.0.1"
}
, routing-duplex =
{ dependencies =
[ "arrays"
, "control"
, "either"
, "generics-rep"
, "globals"
, "lazy"
, "prelude"
, "profunctor"
, "record"
, "strings"
, "typelevel-prelude"
]
, repo = "https://github.com/natefaubion/purescript-routing-duplex.git"
, version = "v0.4.1"
}
, row-extra =
{ dependencies = [] : List Text
, repo = "https://github.com/athanclark/purescript-row-extra.git"
, version = "v0.0.1"
}
, run =
{ dependencies =
[ "aff"
, "effect"
, "either"
, "free"
, "maybe"
, "newtype"
, "prelude"
, "profunctor"
, "tailrec"
, "tuples"
, "type-equality"
, "unsafe-coerce"
, "variant"
]
, repo = "https://github.com/natefaubion/purescript-run.git"
, version = "v3.0.1"
}
, run-halogen =
{ dependencies = [ "effect", "console", "psci-support", "halogen", "run" ]
, repo = "https://github.com/sigilion/purescript-run-halogen.git"
, version = "v0.1.0"
}
, run-profunctor-lenses =
{ dependencies =
[ "effect", "console", "psci-support", "run", "profunctor-lenses" ]
, repo = "https://github.com/sigilion/purescript-run-profunctor-lenses.git"
, version = "v0.1.0"
}
, run-streaming =
{ dependencies = [ "prelude", "run" ]
, repo = "https://github.com/natefaubion/purescript-run-streaming.git"
, version = "v2.0.0"
}
, safely =
{ dependencies = [ "freet", "lists" ]
, repo = "https://github.com/paf31/purescript-safely.git"
, version = "v4.0.1"
}
, scrypt =
{ dependencies = [ "aff", "arraybuffer-types" ]
, repo = "https://github.com/athanclark/purescript-scrypt.git"
, version = "v1.0.1"
}
, search-trie =
{ dependencies =
[ "prelude"
, "arrays"
, "ordered-collections"
, "lists"
, "foldable-traversable"
, "bifunctors"
]
, repo = "https://github.com/klntsky/purescript-search-trie.git"
, version = "v1.0.0"
}
, selection-foldable =
{ dependencies = [ "filterable", "foldable-traversable", "maybe", "prelude" ]
, repo = "https://github.com/jamieyung/purescript-selection-foldable.git"
, version = "v0.2.0"
}
, selective =
{ dependencies =
[ "generics-rep"
, "validation"
, "psci-support"
, "effect"
, "either"
, "prelude"
]
, repo = "https://github.com/anttih/purescript-selective.git"
, version = "v0.1.1"
}
, semirings =
{ dependencies = [ "foldable-traversable", "lists", "newtype", "prelude" ]
, repo = "https://github.com/purescript/purescript-semirings.git"
, version = "v5.0.0"
}
, server-sent-events =
{ dependencies =
[ "effect", "functions", "generics-rep", "maybe", "prelude", "web-events" ]
, repo = "https://github.com/MichaelXavier/purescript-server-sent-events.git"
, version = "v0.2.0"
}
, setimmediate =
{ dependencies = [ "effect", "functions" ]
, repo = "https://github.com/athanclark/purescript-setimmediate.git"
, version = "v1.0.2"
}
, shoronpo =
{ dependencies = [ "prelude", "record-format" ]
, repo = "https://github.com/justinwoo/purescript-shoronpo.git"
, version = "v0.3.0"
}
, signal =
{ dependencies =
[ "aff", "foldable-traversable", "js-timers", "maybe", "prelude" ]
, repo = "https://github.com/bodil/purescript-signal.git"
, version = "v10.1.0"
}
, sijidou =
{ dependencies = [ "prelude", "record", "typelevel-prelude" ]
, repo = "https://github.com/justinwoo/purescript-sijidou.git"
, version = "v1.0.0"
}
, simple-ajax =
{ dependencies = [ "prelude", "simple-json", "affjax" ]
, repo = "https://github.com/dariooddenino/purescript-simple-ajax.git"
, version = "v2.0.0"
}
, simple-emitter =
{ dependencies = [ "ordered-collections", "refs" ]
, repo = "https://github.com/oreshinya/purescript-simple-emitter.git"
, version = "v1.0.0"
}
, simple-i18n =
{ dependencies = [ "record-extra", "foreign-object" ]
, repo = "https://github.com/oreshinya/purescript-simple-i18n.git"
, version = "v0.1.2"
}
, simple-json =
{ dependencies =
[ "arrays"
, "exceptions"
, "foreign"
, "foreign-object"
, "globals"
, "nullable"
, "prelude"
, "record"
, "typelevel-prelude"
, "variant"
]
, repo = "https://github.com/justinwoo/purescript-simple-json.git"
, version = "v7.0.0"
}
, simple-json-generics =
{ dependencies = [ "generics-rep", "simple-json" ]
, repo = "https://github.com/justinwoo/purescript-simple-json-generics.git"
, version = "v0.1.0"
}
, simple-json-utils =
{ dependencies = [ "motsunabe", "simple-json" ]
, repo = "https://github.com/justinwoo/purescript-simple-json-utils.git"
, version = "v0.1.0"
}
, simple-jwt =
{ dependencies = [ "crypto", "simple-json", "strings" ]
, repo = "https://github.com/oreshinya/purescript-simple-jwt.git"
, version = "v2.0.0"
}
, simple-timestamp =
{ dependencies =
[ "console"
, "datetime"
, "effect"
, "foreign"
, "formatters"
, "prelude"
, "psci-support"
, "simple-json"
, "spec"
]
, repo = "https://github.com/reactormonk/purescript-simple-timestamp.git"
, version = "v3.0.0"
}
, sized-matrices =
{ dependencies =
[ "sized-vectors"
, "prelude"
, "foldable-traversable"
, "maybe"
, "arrays"
, "unfoldable"
, "typelevel"
, "distributive"
, "vectorfield"
, "strings"
]
, repo = "https://github.com/csicar/purescript-sized-matrices"
, version = "v1.0.0"
}
, sized-vectors =
{ dependencies =
[ "argonaut"
, "arrays"
, "distributive"
, "foldable-traversable"
, "maybe"
, "prelude"
, "quickcheck"
, "typelevel"
, "unfoldable"
]
, repo = "https://github.com/bodil/purescript-sized-vectors.git"
, version = "v5.0.1"
}
, sjcl =
{ dependencies =
[ "arraybuffer-types"
, "exceptions"
, "nullable"
, "sized-vectors"
, "tuples-native"
]
, repo = "https://github.com/athanclark/purescript-sjcl.git"
, version = "v0.0.1"
}
, slug =
{ dependencies =
[ "prelude"
, "maybe"
, "strings"
, "unicode"
, "generics-rep"
, "argonaut-codecs"
]
, repo = "https://github.com/thomashoneyman/purescript-slug.git"
, version = "v2.0.0"
}
, smolder =
{ dependencies =
[ "bifunctors"
, "catenable-lists"
, "free"
, "globals"
, "ordered-collections"
, "strings"
, "transformers"
, "tuples"
]
, repo = "https://github.com/bodil/purescript-smolder.git"
, version = "v12.3.0"
}
, snabbdom =
{ dependencies = [ "ordered-collections", "prelude", "web-dom", "web-html" ]
, repo = "https://github.com/LukaJCB/purescript-snabbdom.git"
, version = "v1.0.1"
}
, sodium =
{ dependencies =
[ "aff", "nullable", "numbers", "quickcheck-laws", "test-unit" ]
, repo = "https://github.com/SodiumFRP/purescript-sodium.git"
, version = "v2.1.0"
}
, sparse-matrices =
{ dependencies = [ "prelude", "console", "effect", "sparse-polynomials" ]
, repo = "https://github.com/Ebmtranceboy/purescript-sparse-matrices.git"
, version = "v1.1.0"
}
, sparse-polynomials =
{ dependencies =
[ "prelude"
, "console"
, "effect"
, "ordered-collections"
, "tuples"
, "rationals"
, "cartesian"
]
, repo = "https://github.com/Ebmtranceboy/purescript-sparse-polynomials.git"
, version = "v1.0.3"
}
, spec =
{ dependencies =
[ "aff"
, "ansi"
, "avar"
, "console"
, "exceptions"
, "foldable-traversable"
, "fork"
, "generics-rep"
, "now"
, "pipes"
, "prelude"
, "strings"
, "transformers"
]
, repo = "https://github.com/purescript-spec/purescript-spec.git"
, version = "v4.0.1"
}
, spec-discovery =
{ dependencies = [ "arrays", "effect", "node-fs", "prelude", "spec" ]
, repo = "https://github.com/owickstrom/purescript-spec-discovery.git"
, version = "v4.0.0"
}
, spec-quickcheck =
{ dependencies = [ "aff", "prelude", "quickcheck", "random", "spec" ]
, repo = "https://github.com/owickstrom/purescript-spec-quickcheck.git"
, version = "v3.1.0"
}
, spork =
{ dependencies =
[ "prelude"
, "console"
, "tailrec"
, "arrays"
, "refs"
, "foldable-traversable"
, "maybe"
, "aff"
, "halogen-vdom"
, "dom-indexed"
, "unsafe-reference"
, "web-dom"
, "web-html"
, "web-events"
, "web-uievents"
, "effect"
, "foreign"
, "ordered-collections"
]
, repo = "https://github.com/natefaubion/purescript-spork.git"
, version = "v1.0.0"
}
, st =
{ dependencies = [ "partial", "prelude", "tailrec", "unsafe-coerce" ]
, repo = "https://github.com/purescript/purescript-st.git"
, version = "v4.1.1"
}
, string-parsers =
{ dependencies =
[ "arrays"
, "bifunctors"
, "control"
, "either"
, "foldable-traversable"
, "lists"
, "maybe"
, "prelude"
, "strings"
, "tailrec"
]
, repo = "https://github.com/paf31/purescript-string-parsers.git"
, version = "v5.0.1"
}
, strings =
{ dependencies =
[ "arrays"
, "control"
, "either"
, "enums"
, "foldable-traversable"
, "gen"
, "integers"
, "maybe"
, "newtype"
, "nonempty"
, "partial"
, "prelude"
, "tailrec"
, "tuples"
, "unfoldable"
, "unsafe-coerce"
]
, repo = "https://github.com/purescript/purescript-strings.git"
, version = "v4.0.2"
}
, strings-extra =
{ dependencies =
[ "arrays"
, "either"
, "foldable-traversable"
, "maybe"
, "partial"
, "prelude"
, "strings"
, "unicode"
]
, repo = "https://github.com/purescript-contrib/purescript-strings-extra.git"
, version = "v2.1.0"
}
, stringutils =
{ dependencies =
[ "arrays", "either", "integers", "maybe", "partial", "prelude", "strings" ]
, repo = "https://github.com/menelaos/purescript-stringutils.git"
, version = "v0.0.10"
}
, struct =
{ dependencies =
[ "argonaut"
, "argonaut-codecs"
, "effect"
, "proxying"
, "record"
, "record-extra"
, "subcategory"
, "variant"
]
, repo = "https://github.com/matthew-hilty/purescript-struct.git"
, version = "v1.1.0"
}
, stylesheet =
{ dependencies =
[ "effect"
, "foreign"
, "generics-rep"
, "ordered-collections"
, "prelude"
, "refs"
, "unordered-collections"
, "cssom"
]
, repo = "https://github.com/danieljharvey/purescript-stylesheet.git"
, version = "v0.0.3"
}
, subcategory =
{ dependencies =
[ "prelude", "profunctor", "record", "proxy", "typelevel-prelude" ]
, repo = "https://github.com/matthew-hilty/purescript-subcategory.git"
, version = "v0.2.0"
}
, subtlecrypto =
{ dependencies = [ "aff", "arraybuffer-types", "foreign", "promises" ]
, repo = "https://github.com/athanclark/purescript-subtlecrypto.git"
, version = "v0.0.1"
}
, suggest =
{ dependencies =
[ "console"
, "node-buffer"
, "node-fs"
, "node-process"
, "node-streams"
, "psa-utils"
, "refs"
]
, repo = "https://github.com/nwolverson/purescript-suggest.git"
, version = "v5.0.0"
}
, sunde =
{ dependencies = [ "aff", "effect", "node-child-process", "prelude" ]
, repo = "https://github.com/justinwoo/purescript-sunde.git"
, version = "v2.0.0"
}
, svg-parser =
{ dependencies = [ "generics-rep", "prelude", "string-parsers" ]
, repo = "https://github.com/rnons/purescript-svg-parser.git"
, version = "v1.0.0"
}
, svg-parser-halogen =
{ dependencies = [ "halogen", "prelude", "svg-parser" ]
, repo = "https://github.com/rnons/purescript-svg-parser-halogen.git"
, version = "v2.0.0-rc.1"
}
, systemd-journald =
{ dependencies = [ "console", "functions", "prelude" ]
, repo = "https://github.com/paluh/purescript-systemd-journald.git"
, version = "v0.2.1"
}
, tailrec =
{ dependencies =
[ "bifunctors"
, "effect"
, "either"
, "identity"
, "maybe"
, "partial"
, "prelude"
, "refs"
]
, repo = "https://github.com/purescript/purescript-tailrec.git"
, version = "v4.1.1"
}
, test-unit =
{ dependencies =
[ "aff"
, "avar"
, "effect"
, "either"
, "free"
, "js-timers"
, "lists"
, "prelude"
, "quickcheck"
, "strings"
]
, repo = "https://github.com/bodil/purescript-test-unit.git"
, version = "v15.0.0"
}
, text-encoding =
{ dependencies =
[ "arraybuffer-types", "either", "exceptions", "functions", "strings" ]
, repo = "https://github.com/AlexaDeWit/purescript-text-encoding.git"
, version = "v1.0.0"
}
, thermite =
{ dependencies =
[ "aff", "coroutines", "freet", "profunctor-lenses", "react" ]
, repo = "https://github.com/paf31/purescript-thermite.git"
, version = "v6.3.1"
}
, thermite-dom =
{ dependencies = [ "thermite", "react", "react-dom", "web-html" ]
, repo = "https://github.com/athanclark/purescript-thermite-dom.git"
, version = "v0.3.1"
}
, these =
{ dependencies = [ "gen", "tuples" ]
, repo = "https://github.com/purescript-contrib/purescript-these.git"
, version = "v4.0.0"
}
, tolerant-argonaut =
{ dependencies =
[ "argonaut-codecs"
, "argonaut-core"
, "arrays"
, "effect"
, "higher-order"
, "lists"
, "record"
, "struct"
, "typelevel-prelude"
]
, repo = "https://github.com/matthew-hilty/purescript-tolerant-argonaut.git"
, version = "v2.0.0"
}
, toppokki =
{ dependencies =
[ "aff-promise"
, "functions"
, "node-buffer"
, "node-http"
, "prelude"
, "record"
]
, repo = "https://github.com/justinwoo/purescript-toppokki.git"
, version = "v2.4.0"
}
, tortellini =
{ dependencies =
[ "foreign-object"
, "integers"
, "lists"
, "motsunabe"
, "numbers"
, "prelude"
, "record"
, "string-parsers"
, "strings"
, "transformers"
, "typelevel-prelude"
]
, repo = "https://github.com/justinwoo/purescript-tortellini.git"
, version = "v5.1.0"
}
, transformers =
{ dependencies =
[ "control"
, "distributive"
, "effect"
, "either"
, "exceptions"
, "foldable-traversable"
, "identity"
, "lazy"
, "maybe"
, "newtype"
, "prelude"
, "tailrec"
, "tuples"
, "unfoldable"
]
, repo = "https://github.com/purescript/purescript-transformers.git"
, version = "v4.2.0"
}
, tree-rose =
{ dependencies = [ "prelude", "lists", "free" ]
, repo = "https://github.com/jordanmartinez/purescript-tree-rose.git"
, version = "v2.0.0"
}
, trout =
{ dependencies = [ "argonaut", "media-types", "prelude", "smolder", "uri" ]
, repo = "https://github.com/purescript-hyper/purescript-trout.git"
, version = "v0.12.3"
}
, trout-client =
{ dependencies = [ "affjax", "argonaut-generic", "prelude", "trout" ]
, repo = "https://github.com/purescript-hyper/purescript-trout-client.git"
, version = "v0.13.0"
}
, tuples =
{ dependencies =
[ "bifunctors"
, "control"
, "distributive"
, "foldable-traversable"
, "invariant"
, "maybe"
, "newtype"
, "prelude"
, "type-equality"
]
, repo = "https://github.com/purescript/purescript-tuples.git"
, version = "v5.1.0"
}
, tuples-native =
{ dependencies = [ "generics-rep", "typelevel", "unsafe-coerce" ]
, repo = "https://github.com/athanclark/purescript-tuples-native.git"
, version = "v2.1.0"
}
, type-equality =
{ dependencies = [] : List Text
, repo = "https://github.com/purescript/purescript-type-equality.git"
, version = "v3.0.0"
}
, type-isequal =
{ dependencies = [ "typelevel-prelude" ]
, repo = "https://github.com/justinwoo/purescript-type-isequal.git"
, version = "v0.1.0"
}
, typedenv =
{ dependencies =
[ "foreign-object"
, "generics-rep"
, "integers"
, "numbers"
, "record"
, "strings"
, "typelevel-prelude"
]
, repo = "https://github.com/nsaunders/purescript-typedenv.git"
, version = "v0.0.1"
}
, typelevel =
{ dependencies =
[ "partial", "prelude", "tuples", "typelevel-prelude", "unsafe-coerce" ]
, repo = "https://github.com/bodil/purescript-typelevel.git"
, version = "v6.0.0"
}
, typelevel-peano =
{ dependencies =
[ "unsafe-coerce"
, "arrays"
, "console"
, "effect"
, "typelevel-prelude"
, "prelude"
, "psci-support"
]
, repo = "https://github.com/csicar/purescript-typelevel-peano.git"
, version = "v0.1.8"
}
, typelevel-prelude =
{ dependencies = [ "prelude", "proxy", "type-equality" ]
, repo = "https://github.com/purescript/purescript-typelevel-prelude.git"
, version = "v5.0.2"
}
, typelevel-rowlist-limits =
{ dependencies = [ "typelevel-peano" ]
, repo =
"https://github.com/mwalkerwells/purescript-typelevel-rowlist-limits.git"
, version = "v0.0.6"
}
, uint =
{ dependencies = [ "generics-rep", "math", "maybe", "quickcheck" ]
, repo = "https://github.com/zaquest/purescript-uint.git"
, version = "v5.1.4"
}
, uint-instances =
{ dependencies = [ "uint", "unordered-collections", "argonaut", "quickcheck" ]
, repo = "https://github.com/athanclark/purescript-uint-instances.git"
, version = "v0.0.2"
}
, undefinable =
{ dependencies = [ "functions", "maybe" ]
, repo = "https://github.com/ethul/purescript-undefinable.git"
, version = "v4.0.0"
}
, undefined =
{ dependencies = [] : List Text
, repo = "https://github.com/bklaric/purescript-undefined.git"
, version = "v1.0.2"
}
, undefined-or =
{ dependencies = [ "maybe" ]
, repo = "https://github.com/d86leader/purescript-undefined-or.git"
, version = "v1.0.1"
}
, unfoldable =
{ dependencies =
[ "foldable-traversable", "maybe", "partial", "prelude", "tuples" ]
, repo = "https://github.com/purescript/purescript-unfoldable.git"
, version = "v4.1.0"
}
, unicode =
{ dependencies = [ "foldable-traversable", "maybe", "strings" ]
, repo = "https://github.com/purescript-contrib/purescript-unicode.git"
, version = "v4.0.1"
}
, unordered-collections =
{ dependencies =
[ "enums"
, "functions"
, "integers"
, "lists"
, "prelude"
, "record"
, "tuples"
, "typelevel-prelude"
]
, repo = "https://github.com/fehrenbach/purescript-unordered-collections.git"
, version = "v1.8.3"
}
, unorm =
{ dependencies = [] : List Text
, repo = "https://github.com/athanclark/purescript-unorm.git"
, version = "v1.0.1"
}
, unsafe-coerce =
{ dependencies = [] : List Text
, repo = "https://github.com/purescript/purescript-unsafe-coerce.git"
, version = "v4.0.0"
}
, unsafe-reference =
{ dependencies = [] : List Text
, repo =
"https://github.com/purescript-contrib/purescript-unsafe-reference.git"
, version = "v3.0.1"
}
, uri =
{ dependencies =
[ "arrays"
, "generics-rep"
, "globals"
, "integers"
, "parsing"
, "profunctor-lenses"
, "quickcheck"
, "spec"
, "unfoldable"
, "these"
]
, repo = "https://github.com/slamdata/purescript-uri.git"
, version = "v7.0.0"
}
, uuid =
{ dependencies = [ "effect", "maybe", "foreign-generic", "console", "spec" ]
, repo = "https://github.com/spicydonuts/purescript-uuid.git"
, version = "v6.1.0"
}
, validated-molecule =
{ dependencies = [ "arrays", "console", "effect", "lists", "psci-support" ]
, repo = "https://github.com/lukasturcani/validated-molecule.git"
, version = "v1.0.5"
}
, validation =
{ dependencies =
[ "bifunctors"
, "control"
, "either"
, "foldable-traversable"
, "newtype"
, "prelude"
]
, repo = "https://github.com/purescript/purescript-validation.git"
, version = "v4.2.0"
}
, variant =
{ dependencies =
[ "enums"
, "lists"
, "maybe"
, "partial"
, "prelude"
, "proxy"
, "record"
, "tuples"
, "unsafe-coerce"
]
, repo = "https://github.com/natefaubion/purescript-variant.git"
, version = "v6.0.1"
}
, vectorfield =
{ dependencies = [ "console", "effect", "group", "prelude", "psci-support" ]
, repo = "https://github.com/csicar/purescript-vectorfield.git"
, version = "v1.0.1"
}
, web-clipboard =
{ dependencies = [ "web-html" ]
, repo = "https://github.com/purescript-web/purescript-web-clipboard.git"
, version = "v2.0.0"
}
, web-dom =
{ dependencies = [ "web-events" ]
, repo = "https://github.com/purescript-web/purescript-web-dom.git"
, version = "v4.1.0"
}
, web-events =
{ dependencies = [ "datetime", "enums", "nullable" ]
, repo = "https://github.com/purescript-web/purescript-web-events.git"
, version = "v2.0.1"
}
, web-file =
{ dependencies = [ "foreign", "media-types", "web-dom" ]
, repo = "https://github.com/purescript-web/purescript-web-file.git"
, version = "v2.3.0"
}
, web-html =
{ dependencies = [ "js-date", "web-dom", "web-file", "web-storage" ]
, repo = "https://github.com/purescript-web/purescript-web-html.git"
, version = "v2.3.0"
}
, web-socket =
{ dependencies = [ "arraybuffer-types", "web-file" ]
, repo = "https://github.com/purescript-web/purescript-web-socket.git"
, version = "v2.0.0"
}
, web-storage =
{ dependencies = [ "nullable", "web-events" ]
, repo = "https://github.com/purescript-web/purescript-web-storage.git"
, version = "v3.0.0"
}
, web-touchevents =
{ dependencies = [ "web-uievents" ]
, repo = "https://github.com/purescript-web/purescript-web-touchevents.git"
, version = "v2.0.0"
}
, web-uievents =
{ dependencies = [ "web-html" ]
, repo = "https://github.com/purescript-web/purescript-web-uievents.git"
, version = "v2.0.0"
}
, web-url =
{ dependencies =
[ "maybe", "partial", "prelude", "psci-support", "spec", "tuples" ]
, repo = "https://github.com/mjepronk/purescript-web-url.git"
, version = "v1.0.2"
}
, web-xhr =
{ dependencies =
[ "arraybuffer-types", "datetime", "http-methods", "web-dom", "web-file" ]
, repo = "https://github.com/purescript-web/purescript-web-xhr.git"
, version = "v3.0.2"
}
, websocket-moderate =
{ dependencies =
[ "argonaut"
, "arraybuffer"
, "exceptions"
, "monad-control"
, "nullable"
, "text-encoding"
, "web-file"
]
, repo = "https://github.com/athanclark/purescript-websocket-moderate.git"
, version = "v7.0.2"
}
, xiaomian =
{ dependencies = [ "naporitan" ]
, repo = "https://github.com/justinwoo/purescript-xiaomian.git"
, version = "v0.1.0"
}
, yargs =
{ dependencies =
[ "console", "either", "exceptions", "foreign", "unsafe-coerce" ]
, repo = "https://github.com/paf31/purescript-yargs.git"
, version = "v4.0.0"
}
, z85 =
{ dependencies = [ "arraybuffer", "sized-vectors", "numbers", "stringutils" ]
, repo = "https://github.com/athanclark/purescript-z85.git"
, version = "v0.0.2"
}
, zeta =
{ dependencies = [ "refs", "aff", "foreign-object", "arrays" ]
, repo = "https://github.com/athanclark/purescript-zeta.git"
, version = "v6.0.0"
}
, zeta-extra =
{ dependencies = [ "js-timers", "web-html", "zeta" ]
, repo = "https://github.com/athanclark/purescript-zeta-extra.git"
, version = "v0.0.1"
}
}
let upstream =
./packages-0.13.8-20200822.dhall
https://github.com/purescript/package-sets/releases/download/psc-0.13.8-20201021/packages.dhall
let overrides =
{ thermite =
......
......@@ -12,10 +12,10 @@
module Gargantext.Components.Annotation.AnnotatedField where
import Prelude
import Data.Maybe ( Maybe(..), maybe, isJust, isNothing )
import Data.Maybe ( Maybe(..), maybe )
import Data.Tuple ( Tuple(..) )
import Data.Tuple.Nested ( (/\) )
import DOM.Simple.Console (log, log2)
import DOM.Simple.Console (log2)
import DOM.Simple.Event as DE
import Effect ( Effect )
import Reactix as R
......@@ -27,7 +27,6 @@ import Gargantext.Components.Annotation.Utils ( termBootstrapClass )
import Gargantext.Components.NgramsTable.Core (NgramsTable, NgramsTerm, findNgramTermList, highlightNgrams, normNgram)
import Gargantext.Components.Annotation.Menu ( AnnotationMenu, annotationMenu, MenuType(..) )
import Gargantext.Utils.Selection as Sel
import Gargantext.Utils.Reactix as R2
thisModule :: String
thisModule = "Gargantext.Components.Annotation.AnnotatedField"
......@@ -58,11 +57,11 @@ annotatedFieldComponent = R.hooksComponentWithModule thisModule "annotatedField"
onSelect :: String -> Maybe TermList -> MouseEvent -> Effect Unit
onSelect text' Nothing event = do
log2 "[onSelect] text'" text'
--log2 "[onSelect] text'" text'
maybeShowMenu setMenu menuRef setTermList ngrams event
onSelect text' (Just list) event = do
log2 "[onSelect] text'" text'
log2 "[onSelect] list" list
--log2 "[onSelect] text'" text'
--log2 "[onSelect] list" (show list)
let x = E.clientX event
y = E.clientY event
setList t = do
......@@ -77,8 +76,8 @@ annotatedFieldComponent = R.hooksComponentWithModule thisModule "annotatedField"
, onClose: \_ -> R.setRef menuRef Nothing
, setList
}
--setMenu (const $ menu)
R.setRef menuRef menu
setMenu $ const menu
mapCompile (Tuple t l) = {text: t, list: l, onSelect}
compiled = map mapCompile $ compile ngrams text
......@@ -105,8 +104,8 @@ addMenuCpt = R.hooksComponentWithModule thisModule "addMenu" cpt
R.useEffect' $ do
let m = R.readRef menuRef
log2 "[addMenu] menuRef" m
log2 "[addMenu] mMenu" mMenu
--log2 "[addMenu] menuRef" m
--log2 "[addMenu] mMenu" mMenu
setmMenu $ const m
pure $ case mMenu of
......@@ -116,7 +115,7 @@ addMenuCpt = R.hooksComponentWithModule thisModule "addMenu" cpt
-- forall e. IsMouseEvent e => R.Setter (Maybe AnnotationMenu) -> R.Setter ? -> ? -> e -> Effect Unit
maybeShowMenu setMenu menuRef setTermList ngrams event = do
s <- Sel.getSelection
log2 "[maybeShowMenu] s" s
--log2 "[maybeShowMenu] s" s
case s of
Just sel -> do
case Sel.selectionToString sel of
......@@ -128,11 +127,11 @@ maybeShowMenu setMenu menuRef setTermList ngrams event = do
list = findNgramTermList ngrams n
setList t = do
setTermList n list t
--setMenu (const Nothing)
R.setRef menuRef Nothing
--setMenu (const Nothing)
E.preventDefault event
range <- Sel.getRange sel 0
log2 "[maybeShowMenu] selection range" $ Sel.rangeToTuple range
--log2 "[maybeShowMenu] selection range" $ Sel.rangeToTuple range
let menu = Just {
x
, y
......@@ -141,8 +140,8 @@ maybeShowMenu setMenu menuRef setTermList ngrams event = do
, onClose: \_ -> R.setRef menuRef Nothing
, setList
}
--setMenu (const $ menu)
R.setRef menuRef menu
setMenu $ const $ menu
Nothing -> pure unit
-- Nothing -> do
-- R.setRef menuRef Nothing
......
......@@ -121,8 +121,9 @@ appCpt = R.hooksComponentWithModule thisModule "app" cpt where
--, treeReload
}
RouteFile sid nodeId -> withSession sid $ \session -> forested $ fileLayout { nodeId, session }
RouteFrameCalc sid nodeId -> withSession sid $ \session -> forested $ frameLayout { nodeId, session }
RouteFrameWrite sid nodeId -> withSession sid $ \session -> forested $ frameLayout { nodeId, session }
RouteFrameCalc sid nodeId -> withSession sid $ \session -> forested $ frameLayout { nodeId, session, nodeType: GT.NodeFrameCalc }
RouteFrameCode sid nodeId -> withSession sid $ \session -> forested $ frameLayout { nodeId, session, nodeType: GT.NodeFrameCode }
RouteFrameWrite sid nodeId -> withSession sid $ \session -> forested $ frameLayout { nodeId, session, nodeType: GT.NodeFrameWrite}
Team sid nodeId -> withSession sid $ \session -> forested $ corpusLayout { nodeId, session }
Texts sid nodeId -> withSession sid $ \session -> forested $ textsLayout { frontends, nodeId, session, sessionUpdate }
UserPage sid nodeId -> withSession sid $ \session -> forested $ userLayout { asyncTasks, frontends, nodeId, session }
......
-- TODO: this module should be replaced by FacetsTable
module Gargantext.Components.DocsTable where
import Data.Argonaut (class DecodeJson, class EncodeJson, decodeJson, jsonEmptyObject, (.:), (:=), (~>), encodeJson)
import Data.Argonaut (class DecodeJson, class EncodeJson, decodeJson, jsonEmptyObject, (.:), (:=), (~>))
import Data.Array as A
import Data.Generic.Rep (class Generic)
import Data.Generic.Rep.Eq (genericEq)
import Data.Generic.Rep.Show (genericShow)
import Data.Lens ((^.))
import Data.Lens.At (at)
import Data.Lens.Record (prop)
import Data.Map (Map)
import Data.Map as Map
import Data.Maybe (Maybe(..), fromMaybe, isJust)
import Data.Ord.Down (Down(..))
import Data.Sequence as Seq
import Data.Set (Set)
import Data.Set as Set
import Data.String as Str
......@@ -22,53 +17,68 @@ import Data.Tuple (Tuple(..), fst)
import Data.Tuple.Nested ((/\))
import DOM.Simple.Event as DE
import Effect (Effect)
import Effect.Aff (Aff, launchAff)
import Effect.Class (liftEffect)
import Effect.Aff (Aff)
import Reactix as R
import Reactix.DOM.HTML as H
------------------------------------------------------------------------
import Gargantext.Prelude
import Gargantext.Components.Category
import Gargantext.Components.Category (Category(..), caroussel, decodeCategory)
import Gargantext.Components.Nodes.Lists.Types as NT
import Gargantext.Components.Table as T
import Gargantext.Ends (Frontends, url)
import Gargantext.Hooks.Loader (useLoaderWithCacheAPI, HashedResponse(..))
import Gargantext.Utils.Seq (sortWith) as Seq
import Gargantext.Utils.Reactix as R2
import Gargantext.Hooks.Loader (useLoader, useLoaderWithCacheAPI, HashedResponse(..))
import Gargantext.Routes as Routes
import Gargantext.Routes (SessionRoute(NodeAPI))
import Gargantext.Sessions (Session, sessionId, get, delete, put)
import Gargantext.Types (NodeType(..), OrderBy(..), TableResult, TabType, showTabType')
import Gargantext.Sessions (Session, sessionId, get, delete)
import Gargantext.Types (NodeType(..), OrderBy(..), TableResult, TabSubType, TabType, showTabType')
import Gargantext.Utils (sortWith)
import Gargantext.Utils.CacheAPI as GUC
import Gargantext.Utils.QueryString (joinQueryStrings, mQueryParamS, queryParam, queryParamS)
import Gargantext.Utils.Reactix as R2
thisModule :: String
thisModule = "Gargantext.Components.DocsTable"
------------------------------------------------------------------------
type TotalRecords = Int
type LayoutProps =
( nodeId :: Int
, totalRecords :: Int
, chart :: R.Element
, tabType :: TabType
type Path a = (
corpusId :: Int
, listId :: Int
, frontends :: Frontends
, session :: Session
, tabType :: TabSubType a
)
type LayoutProps = (
cacheState :: R.State NT.CacheState
, corpusId :: Maybe Int
, showSearch :: Boolean
, frontends :: Frontends
, session :: Session )
, chart :: R.Element
, listId :: Int
, nodeId :: Int
-- , path :: Record (Path a)
, session :: Session
, showSearch :: Boolean
, tabType :: TabType
-- ^ tabType is not ideal here since it is too much entangled with tabs and
-- ngramtable. Let's see how this evolves. )
type PageLayoutProps =
( nodeId :: Int
, totalRecords :: Int
, tabType :: TabType
, listId :: Int
)
type PageLayoutProps = (
cacheState :: R.State NT.CacheState
, corpusId :: Maybe Int
, frontends :: Frontends
, key :: String -- NOTE Necessary to clear the component when cache state changes
, listId :: Int
, nodeId :: Int
, params :: T.Params
, query :: Query
, session :: Session
, frontends :: Frontends
, params :: T.Params )
, tabType :: TabType
, totalRecords :: Int
)
type LocalCategories = Map Int Category
type Query = String
......@@ -150,14 +160,13 @@ instance decodeHyperdata :: DecodeJson Hyperdata where
instance decodeResponse :: DecodeJson Response where
decodeJson json = do
obj <- decodeJson json
cid <- obj .: "id"
category <- obj .: "category"
cid <- obj .: "id"
hyperdata <- obj .: "hyperdata"
ngramCount <- obj .: "id"
title <- obj .: "title"
hyperdata <- obj .: "hyperdata"
pure $ Response { cid, title, category: decodeCategory category, ngramCount, hyperdata }
docViewLayout :: Record LayoutProps -> R.Element
docViewLayout props = R.createElement docViewLayoutCpt props []
......@@ -167,7 +176,7 @@ docViewLayoutCpt = R.hooksComponentWithModule thisModule "docViewLayout" cpt
cpt layout _children = do
query <- R.useState' ""
let params = T.initialParams
pure $ docView {query, params, layout}
pure $ docView { layout, params, query }
type Props = (
layout :: Record LayoutProps
......@@ -180,16 +189,29 @@ docView props = R.createElement docViewCpt props []
docViewCpt :: R.Component Props
docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt where
cpt { query, params
, layout: { frontends, session, nodeId, tabType, listId
, corpusId, totalRecords, chart, showSearch } } _ = do
cpt { layout: { cacheState
, chart
, corpusId
, frontends
, listId
, nodeId
, session
, showSearch
, tabType
, totalRecords
}
, params
, query
} _ = do
pure $ H.div {className: "container1"}
[ R2.row
[ chart
, if showSearch then searchBar query else H.div {} []
, H.div {className: "col-md-12"}
[ pageLayout { corpusId
[ pageLayout { cacheState
, corpusId
, frontends
, key: "docView-" <> (show $ fst cacheState)
, listId
, nodeId
, params
......@@ -198,20 +220,6 @@ docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt where
, tabType
, totalRecords
} ] ] ]
-- onClickTrashAll nodeId _ = do
-- launchAff $ deleteAllDocuments p.session nodeId
{-, H.div {className: "col-md-1 col-md-offset-11"}
[ pageLayout p.session params {nodeId, totalRecords, tabType, listId, corpusId, query: fst query} ]
, H.div {className: "col-md-1 col-md-offset-11"}
[ H.button { className: "btn"
, style: {backgroundColor: "peru", color : "white", border : "white"}
, on: { click: onClickTrashAll nodeId } }
[ H.i {className: "glyphitem glyphicon glyphicon-trash"} []
, H.text "Trash all"
]
]
-}
searchBar :: R.State Query -> R.Element
searchBar (query /\ setQuery) = R.createElement el {} []
......@@ -270,7 +278,7 @@ getPageHash :: Session -> PageParams -> Aff String
getPageHash session { corpusId, listId, nodeId, query, tabType } = do
(get session $ tableHashRoute nodeId tabType) :: Aff String
convOrderBy :: Maybe (T.OrderByDirection T.ColumnName) -> Maybe OrderBy
convOrderBy (Just (T.ASC (T.ColumnName "Date"))) = Just DateAsc
convOrderBy (Just (T.DESC (T.ColumnName "Date"))) = Just DateDesc
convOrderBy (Just (T.ASC (T.ColumnName "Title"))) = Just TitleAsc
......@@ -302,21 +310,8 @@ pageLayout props = R.createElement pageLayoutCpt props []
pageLayoutCpt :: R.Component PageLayoutProps
pageLayoutCpt = R.hooksComponentWithModule thisModule "pageLayout" cpt where
cpt props@{ corpusId, frontends, listId, nodeId, params, query, session, tabType } _ =
useLoaderWithCacheAPI {
cacheEndpoint: getPageHash session
, handleResponse
, mkRequest
, path
, renderer: paint
}
where
path = { corpusId, listId, nodeId, params, query, tabType }
paint (Tuple count docs) = page params (props { totalRecords = count }) docs
mkRequest :: PageParams -> GUC.Request
mkRequest p@{ listId, nodeId, tabType } =
GUC.makeGetRequest session $ tableRoute nodeId tabType listId
cpt props@{ cacheState, corpusId, frontends, listId, nodeId, params, query, session, tabType } _ = do
let path = { corpusId, listId, nodeId, params, query, tabType }
handleResponse :: HashedResponse (TableResult Response) -> Tuple Int (Array DocumentsView)
handleResponse (HashedResponse { hash, value: res }) = ret
where
......@@ -325,7 +320,32 @@ pageLayoutCpt = R.hooksComponentWithModule thisModule "pageLayout" cpt where
--Tuple 0 (take limit $ drop offset sampleData)
Tuple 0 sampleData
else
Tuple (A.length docs) docs
Tuple res.count docs
case cacheState of
(NT.CacheOn /\ _) -> do
let paint (Tuple count docs) = page params (props { totalRecords = count }) docs
mkRequest :: PageParams -> GUC.Request
mkRequest p = GUC.makeGetRequest session $ tableRoute p
useLoaderWithCacheAPI {
cacheEndpoint: getPageHash session
, handleResponse
, mkRequest
, path
, renderer: paint
}
(NT.CacheOff /\ _) -> do
localCategories <- R.useState' (mempty :: LocalCategories)
paramsS <- R.useState' params
let loader p = do
res <- get session $ tableRouteWithPage (p { params = fst paramsS, query = query })
pure $ handleResponse res
render (Tuple count documents) = pagePaintRaw { documents
, layout: props { params = fst paramsS
, totalRecords = count }
, localCategories
, params: paramsS }
useLoader (path { params = fst paramsS }) loader render
type PageProps = (
documents :: Array DocumentsView
......@@ -353,8 +373,38 @@ pagePaint props = R.createElement pagePaintCpt props []
pagePaintCpt :: R.Component PagePaintProps
pagePaintCpt = R.hooksComponentWithModule thisModule "pagePaintCpt" cpt where
cpt { layout: { corpusId, frontends, listId, nodeId, session, totalRecords }, documents, params } _ = do
cpt { documents, layout, params } _ = do
localCategories <- R.useState' (mempty :: LocalCategories)
pure $ pagePaintRaw { documents: A.fromFoldable filteredRows, layout, localCategories, params }
where
orderWith =
case convOrderBy (fst params).orderBy of
Just DateAsc -> sortWith \(DocumentsView { date }) -> date
Just DateDesc -> sortWith \(DocumentsView { date }) -> Down date
Just SourceAsc -> sortWith \(DocumentsView { source }) -> Str.toLower source
Just SourceDesc -> sortWith \(DocumentsView { source }) -> Down $ Str.toLower source
Just TitleAsc -> sortWith \(DocumentsView { title }) -> Str.toLower title
Just TitleDesc -> sortWith \(DocumentsView { title }) -> Down $ Str.toLower title
_ -> identity -- the server ordering is enough here
filteredRows = T.filterRows { params: fst params } $ orderWith $ A.toUnfoldable documents
type PagePaintRawProps = (
documents :: Array DocumentsView
, layout :: Record PageLayoutProps
, localCategories :: R.State LocalCategories
, params :: R.State T.Params
)
pagePaintRaw :: Record PagePaintRawProps -> R.Element
pagePaintRaw props = R.createElement pagePaintRawCpt props []
pagePaintRawCpt :: R.Component PagePaintRawProps
pagePaintRawCpt = R.hooksComponentWithModule thisModule "pagePaintRawCpt" cpt where
cpt { documents
, layout: { corpusId, frontends, listId, nodeId, session, totalRecords }
, localCategories
, params } _ = do
pure $ T.table
{ colNames
, container: T.defaultContainer { title: "Documents" }
......@@ -375,17 +425,7 @@ pagePaintCpt = R.hooksComponentWithModule thisModule "pagePaintCpt" cpt where
colNames = T.ColumnName <$> [ "Tag", "Date", "Title", "Source"]
wrapColElts = const identity
getCategory (localCategories /\ _) {_id, category} = fromMaybe category (localCategories ^. at _id)
orderWith =
case convOrderBy (fst params).orderBy of
Just DateAsc -> Seq.sortWith \(DocumentsView { date }) -> date
Just DateDesc -> Seq.sortWith \(DocumentsView { date }) -> Down date
Just SourceAsc -> Seq.sortWith \(DocumentsView { source }) -> Str.toLower source
Just SourceDesc -> Seq.sortWith \(DocumentsView { source }) -> Down $ Str.toLower source
Just TitleAsc -> Seq.sortWith \(DocumentsView { title }) -> Str.toLower title
Just TitleDesc -> Seq.sortWith \(DocumentsView { title }) -> Down $ Str.toLower title
_ -> identity -- the server ordering is enough here
filteredRows = T.filterRows { params: fst params } $ orderWith $ A.toUnfoldable documents
rows localCategories = row <$> filteredRows
rows localCategories = row <$> A.toUnfoldable documents
where
row (DocumentsView r) =
{ row:
......@@ -445,12 +485,30 @@ instance encodeJsonSQuery :: EncodeJson SearchQuery where
documentsRoute :: Int -> SessionRoute
documentsRoute nodeId = NodeAPI Node (Just nodeId) "documents"
tableRoute :: Int -> TabType -> Int -> SessionRoute
tableRoute nodeId tabType listId = NodeAPI Node (Just nodeId) $ "table" <> "?tabType=" <> (showTabType' tabType) <> "&list=" <> (show listId)
tableRoute :: forall row. {nodeId :: Int, tabType :: TabType, listId :: Int | row} -> SessionRoute
tableRoute {nodeId, tabType, listId} = NodeAPI Node (Just nodeId) $ "table" <> "?tabType=" <> (showTabType' tabType) <> "&list=" <> (show listId)
tableHashRoute :: Int -> TabType -> SessionRoute
tableHashRoute nodeId tabType = NodeAPI Node (Just nodeId) $ "table/hash" <> "?tabType=" <> (showTabType' tabType)
tableRouteWithPage :: forall row.
{ listId :: Int
, nodeId :: Int
, params :: T.Params
, query :: Query
, tabType :: TabType
| row } -> SessionRoute
tableRouteWithPage { listId, nodeId, params: { limit, offset, orderBy, searchType }, query, tabType } =
NodeAPI Node (Just nodeId) $ "table" <> joinQueryStrings [tt, lst, lmt, odb, ofs, st, q]
where
lmt = queryParam "limit" limit
lst = queryParam "list" listId
ofs = queryParam "offset" offset
odb = mQueryParamS "orderBy" T.orderByToForm orderBy
st = queryParam "searchType" searchType
tt = queryParamS "tabType" (showTabType' tabType)
q = queryParamS "query" query
deleteAllDocuments :: Session -> Int -> Aff (Array Int)
deleteAllDocuments session = delete session <<< documentsRoute
......
......@@ -126,6 +126,7 @@ settingsBox Team =
, Annuaire
, NodeFrameWrite
, NodeFrameCalc
, NodeFrameCode
]
, Share
, Delete
......@@ -316,6 +317,22 @@ settingsBox NodeFrameCalc =
]
}
settingsBox NodeFrameCode =
SettingsBox { show : true
, edit : true
, doc : Documentation NodeFrameCode
, buttons : [ Add [ NodeFrameCalc
, NodeFrameWrite
, NodeFrameCode
]
, Move moveFrameParameters
, Delete
]
}
settingsBox NodeFile =
SettingsBox { show: true
......
......@@ -235,7 +235,7 @@ sigmaSettings =
, defaultHoverLabelBGColor: "#fff"
, defaultHoverLabelColor: "#000"
, defaultLabelColor: "#000" -- labels text color
, defaultLabelSize: 8.0 -- (old tina: showLabelsIfZoom)
, defaultLabelSize: 15.0 -- (old tina: showLabelsIfZoom)
, defaultNodeBorderColor : "#000" -- <- if nodeBorderColor = 'default'
, defaultNodeColor: "#FFF"
, doubleClickEnabled: false -- indicates whether or not the graph can be zoomed on double-click
......
......@@ -16,17 +16,16 @@ import Data.Map as Map
import Data.Maybe (Maybe(..), isNothing, maybe)
import Data.Monoid.Additive (Additive(..))
import Data.Ord.Down (Down(..))
import Data.Sequence as Seq
import Data.Sequence (Seq, length) as Seq
import Data.Set (Set)
import Data.Set as Set
import Data.Symbol (SProxy(..))
import Data.Tuple (Tuple(..), snd)
import Data.Tuple (Tuple(..), fst, snd)
import Data.Tuple.Nested ((/\))
import DOM.Simple.Console (log, log2)
import DOM.Simple.Console (log2)
import Effect (Effect)
import Effect.Aff (Aff, launchAff_)
import Effect.Class (liftEffect)
import FFI.Simple (delay)
import Reactix as R
import Reactix.DOM.HTML as H
import Record as Record
......@@ -44,11 +43,12 @@ import Gargantext.Prelude (class Show, Unit, bind, const, discard, identity, map
import Gargantext.Routes (SessionRoute(..)) as R
import Gargantext.Sessions (Session, get)
import Gargantext.Types (CTabNgramType, OrderBy(..), SearchQuery, TabType, TermList(..), TermSize, termLists, termSizes)
import Gargantext.Utils (queryMatchesLabel, toggleSet)
import Gargantext.Utils (queryMatchesLabel, toggleSet, sortWith)
import Gargantext.Utils.CacheAPI as GUC
import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Seq as Seq
import Gargantext.Utils.Seq (mapMaybe) as Seq
thisModule :: String
thisModule = "Gargantext.Components.NgramsTable"
type State' =
......@@ -105,7 +105,7 @@ initialState (Versioned {version}) = {
setTermListSetA :: NgramsTable -> Set NgramsTerm -> TermList -> Action
setTermListSetA ngramsTable ns new_list =
CommitPatch $ fromNgramsPatches $ PatchMap $ mapWithIndex f $ toMap ns
CoreAction $ CommitPatch $ fromNgramsPatches $ PatchMap $ mapWithIndex f $ toMap ns
where
f :: NgramsTerm -> Unit -> NgramsPatch
f n unit = NgramsPatch { patch_list, patch_children: mempty }
......@@ -118,9 +118,6 @@ setTermListSetA ngramsTable ns new_list =
-- https://github.com/purescript/purescript-ordered-collections/pull/31
-- toMap = Map.fromFoldable
addNewNgramA :: NgramsTerm -> Action
addNewNgramA ngram = CommitPatch $ addNewNgram ngram CandidateTerm
type PreConversionRows = Seq.Seq NgramsElement
type TableContainerProps =
......@@ -159,8 +156,10 @@ tableContainerCpt { dispatch
H.li { className: "list-group-item" } [
H.button { className: "btn btn-primary"
, on: { click: const $ dispatch
$ CoreAction
$ addNewNgramA
$ normNgram tabNgramType searchQuery
(normNgram tabNgramType searchQuery)
CandidateTerm
}
}
[ H.text ("Add " <> searchQuery) ]
......@@ -307,8 +306,13 @@ loadedNgramsTableCpt = R.hooksComponentWithModule thisModule "loadedNgramsTable"
, versioned: Versioned { data: initTable }
, withAutoUpdate } _ = do
let syncResetBtns = [syncResetButtons { afterSync: chartsAfterSync
, ngramsLocalPatch
, performAction: performAction <<< CoreAction
}]
pure $ R.fragment $
autoUpdate <> [syncResetButtons { afterSync, ngramsLocalPatch, performAction }] <> [
autoUpdate <> syncResetBtns <> [
H.h4 {style: {textAlign : "center"}} [
H.span {className: "glyphicon glyphicon-hand-down"} []
, H.text "Extracted Terms"
......@@ -331,13 +335,19 @@ loadedNgramsTableCpt = R.hooksComponentWithModule thisModule "loadedNgramsTable"
, ngramsSelection
}
}
] <> [syncResetButtons { afterSync, ngramsLocalPatch, performAction }]
] <> syncResetBtns
where
chartsAfterSync _ = do
task <- postNgramsChartsAsync path'
liftEffect $ do
log2 "[performAction] Synchronize task" task
snd asyncTasks $ GAT.Insert nodeId task
autoUpdate :: Array R.Element
autoUpdate = if withAutoUpdate then
[ R2.buff $ autoUpdateElt {
duration: 5000
, effect: performAction $ Synchronize { afterSync }
, effect: performAction $ CoreAction $ Synchronize { afterSync: chartsAfterSync }
} ]
else []
......@@ -361,17 +371,6 @@ loadedNgramsTableCpt = R.hooksComponentWithModule thisModule "loadedNgramsTable"
s { ngramsSelection = Set.empty :: Set NgramsTerm }
else
s { ngramsSelection = selectNgramsOnFirstPage filteredRows }
performAction (Synchronize { afterSync }) = do
syncPatches path' (state /\ setState) afterSync
launchAff_ $ do
task <- postNgramsChartsAsync path'
liftEffect $ do
log2 "[performAction] Synchronize task" task
snd asyncTasks $ GAT.Insert nodeId task
performAction (CommitPatch pt) =
commitPatch (Versioned {version: ngramsVersion, data: pt}) (state /\ setState)
performAction ResetPatches =
setState $ \s -> s { ngramsLocalPatch = { ngramsPatches: mempty } }
performAction AddTermChildren =
case ngramsParent of
Nothing ->
......@@ -383,6 +382,7 @@ loadedNgramsTableCpt = R.hooksComponentWithModule thisModule "loadedNgramsTable"
pt = singletonNgramsTablePatch parent pe
setState $ setParentResetChildren Nothing
commitPatch (Versioned {version: ngramsVersion, data: pt}) (state /\ setState)
performAction (CoreAction a) = coreDispatch path' (state /\ setState) a
totalRecords = Seq.length rows
filteredConvertedRows :: T.Rows
......@@ -433,10 +433,10 @@ loadedNgramsTableCpt = R.hooksComponentWithModule thisModule "loadedNgramsTable"
}
orderWith =
case convOrderBy <$> params.orderBy of
Just ScoreAsc -> Seq.sortWith \x -> x ^. _NgramsElement <<< _occurrences
Just ScoreDesc -> Seq.sortWith \x -> Down $ x ^. _NgramsElement <<< _occurrences
Just TermAsc -> Seq.sortWith \x -> x ^. _NgramsElement <<< _ngrams
Just TermDesc -> Seq.sortWith \x -> Down $ x ^. _NgramsElement <<< _ngrams
Just ScoreAsc -> sortWith \x -> x ^. _NgramsElement <<< _occurrences
Just ScoreDesc -> sortWith \x -> Down $ x ^. _NgramsElement <<< _occurrences
Just TermAsc -> sortWith \x -> x ^. _NgramsElement <<< _ngrams
Just TermDesc -> sortWith \x -> Down $ x ^. _NgramsElement <<< _ngrams
_ -> identity -- the server ordering is enough here
colNames = T.ColumnName <$> ["Select", "Map", "Stop", "Terms", "Score"] -- see convOrderBy
......@@ -454,41 +454,6 @@ loadedNgramsTableCpt = R.hooksComponentWithModule thisModule "loadedNgramsTable"
setSearchQuery x = setPath $ _ { searchQuery = x }
type SyncResetButtonsProps = (
afterSync :: Unit -> Aff Unit
, ngramsLocalPatch :: NgramsTablePatch
, performAction :: Action -> Effect Unit
)
syncResetButtons :: Record SyncResetButtonsProps -> R.Element
syncResetButtons p = R.createElement syncResetButtonsCpt p []
syncResetButtonsCpt :: R.Component SyncResetButtonsProps
syncResetButtonsCpt = R.hooksComponentWithModule thisModule "syncResetButtons" cpt
where
cpt { afterSync, ngramsLocalPatch, performAction } _ = do
synchronizing@(s /\ _) <- R.useState' false
let hasChanges = ngramsLocalPatch /= mempty
pure $ H.div {} [
H.button { className: "btn btn-danger " <> if hasChanges then "" else " disabled"
, on: { click: \_ -> performAction ResetPatches }
} [ H.text "Reset" ]
, H.button { className: "btn btn-primary " <> (if s || (not hasChanges) then "disabled" else "")
, on: { click: synchronize synchronizing }
} [ H.text "Sync" ]
]
where
synchronize (_ /\ setSynchronizing) _ = delay unit $ \_ -> do
setSynchronizing $ const true
performAction $ Synchronize { afterSync: newAfterSync }
where
newAfterSync x = do
afterSync x
liftEffect $ setSynchronizing $ const false
displayRow :: State -> SearchQuery -> NgramsTable -> Maybe NgramsTerm -> Maybe TermList -> Maybe TermSize -> NgramsElement -> Boolean
displayRow state@{ ngramsChildren
, ngramsLocalPatch
......@@ -557,7 +522,6 @@ mainNgramsTableCpt = R.hooksComponentWithModule thisModule "mainNgramsTable" cpt
, tabType
, withAutoUpdate } _ = do
let path = initialPageParams session nodeId [defaultListId] tabType
let render versioned = mainNgramsTablePaint { afterSync
, asyncTasks
, path
......@@ -566,7 +530,7 @@ mainNgramsTableCpt = R.hooksComponentWithModule thisModule "mainNgramsTable" cpt
, withAutoUpdate }
case cacheState of
(NT.CacheOn /\ _) ->
(NT.CacheOn /\ _) -> do
useLoaderWithCacheAPI {
cacheEndpoint: versionEndpoint props
, handleResponse
......@@ -574,16 +538,36 @@ mainNgramsTableCpt = R.hooksComponentWithModule thisModule "mainNgramsTable" cpt
, path
, renderer: render
}
(NT.CacheOff /\ _) ->
(NT.CacheOff /\ _) -> do
useLoader path loader render
versionEndpoint :: Record MainNgramsTableProps -> PageParams -> Aff Version
versionEndpoint { defaultListId, nodeId, session, tabType } _ = get session $ R.GetNgramsTableVersion { listId: defaultListId, tabType } (Just nodeId)
-- NOTE With cache off
loader :: PageParams -> Aff VersionedNgramsTable
loader path@{ listIds, nodeId, session, tabType } =
get session $ R.GetNgramsTableAll { listIds, tabType } (Just nodeId)
loader path@{ listIds
, nodeId
, params: { limit, offset, orderBy }
, searchQuery
, session
, tabType
, termListFilter
, termSizeFilter
} =
get session $ R.GetNgrams params (Just nodeId)
where
params = { limit
, listIds
, offset: Just offset
, orderBy: Nothing -- TODO
, searchQuery
, tabType
, termListFilter
, termSizeFilter
}
-- NOTE With cache on
mkRequest :: PageParams -> GUC.Request
mkRequest path@{ session } = GUC.makeGetRequest session $ url path
where
......@@ -601,10 +585,6 @@ mainNgramsTableCpt = R.hooksComponentWithModule thisModule "mainNgramsTable" cpt
handleResponse :: VersionedNgramsTable -> VersionedNgramsTable
handleResponse v = v
pathNoLimit :: PageParams -> PageParams
pathNoLimit path@{ params } = path { params = params { limit = 100000 }
, termListFilter = Nothing }
type MainNgramsTablePaintProps = (
afterSync :: Unit -> Aff Unit
, asyncTasks :: GAT.Reductor
......@@ -634,6 +614,34 @@ mainNgramsTablePaintCpt = R.hooksComponentWithModule thisModule "mainNgramsTable
, withAutoUpdate
}
type MainNgramsTablePaintWithStateProps = (
afterSync :: Unit -> Aff Unit
, asyncTasks :: GAT.Reductor
, path :: R.State PageParams
, tabNgramType :: CTabNgramType
, versioned :: VersionedNgramsTable
, withAutoUpdate :: Boolean
)
mainNgramsTablePaintWithState :: Record MainNgramsTablePaintWithStateProps -> R.Element
mainNgramsTablePaintWithState p = R.createElement mainNgramsTablePaintWithStateCpt p []
mainNgramsTablePaintWithStateCpt :: R.Component MainNgramsTablePaintWithStateProps
mainNgramsTablePaintWithStateCpt = R.hooksComponentWithModule thisModule "mainNgramsTablePaintWithState" cpt
where
cpt { afterSync, asyncTasks, path, tabNgramType, versioned, withAutoUpdate } _ = do
state <- R.useState' $ initialState versioned
pure $ loadedNgramsTable {
afterSync
, asyncTasks
, path
, state
, tabNgramType
, versioned
, withAutoUpdate
}
type NgramsOcc = { occurrences :: Additive Int, children :: Set NgramsTerm }
ngramsElementToNgramsOcc :: NgramsElement -> NgramsOcc
......
......@@ -17,7 +17,12 @@ import Reactix as R
import Reactix.DOM.HTML as H
import Gargantext.Prelude
import Gargantext.Components.NgramsTable.Core (Action(..), Dispatch, NgramsElement, NgramsPatch(..), NgramsTable, NgramsTablePatch, NgramsTerm, Replace, _NgramsElement, _NgramsRepoElement, _PatchMap, _children, _list, _ngrams, _occurrences, ngramsTermText, replace, singletonNgramsTablePatch)
import Gargantext.Components.NgramsTable.Core ( Action(..), Dispatch, NgramsElement, NgramsPatch(..)
, NgramsTable, NgramsTablePatch, NgramsTerm, Replace
, _NgramsElement, _NgramsRepoElement, _PatchMap, _children
, _list, _ngrams, _occurrences, ngramsTermText, replace
, singletonNgramsTablePatch, setTermListA
)
import Gargantext.Components.Table as Tbl
import Gargantext.Types as T
import Gargantext.Utils.Reactix as R2
......@@ -207,7 +212,7 @@ renderNgramsItemCpt = R.hooksComponentWithModule thisModule "renderNgramsItem" c
ngramsStyle = [termStyle termList ngramsOpacity]
ngramsEdit = Just <<< dispatch <<< SetParentResetChildren <<< Just <<< view _ngrams
ngramsClick
= Just <<< dispatch <<< cycleTermListItem <<< view _ngrams
= Just <<< dispatch <<< CoreAction <<< cycleTermListItem <<< view _ngrams
-- ^ This is the old behavior it is nicer to use since one can
-- rapidly change the ngram list without waiting for confirmation.
-- However this might expose bugs. One of them can be reproduced
......@@ -226,7 +231,7 @@ renderNgramsItemCpt = R.hooksComponentWithModule thisModule "renderNgramsItem" c
in
H.input { checked: chkd
, className: "checkbox"
, on: { change: const $ dispatch $
, on: { change: const $ dispatch $ CoreAction $
setTermListA ngrams (replace termList termList'') }
, readOnly: ngramsTransient
, type: "checkbox" }
......@@ -245,13 +250,6 @@ termStyle T.StopTerm opacity = DOM.style { color: "red", opacity
, textDecoration: "line-through" }
termStyle T.CandidateTerm opacity = DOM.style { color: "black", opacity }
setTermListA :: NgramsTerm -> Replace T.TermList -> Action
setTermListA n patch_list =
CommitPatch $
singletonNgramsTablePatch n $
NgramsPatch { patch_list, patch_children: mempty }
tablePatchHasNgrams :: NgramsTablePatch -> NgramsTerm -> Boolean
tablePatchHasNgrams ngramsTablePatch ngrams =
isJust $ ngramsTablePatch.ngramsPatches ^. _PatchMap <<< at ngrams
......
......@@ -15,6 +15,7 @@ module Gargantext.Components.NgramsTable.Core
, NgramsTerm
, normNgram
, ngramsTermText
, findNgramRoot
, findNgramTermList
, Version
, Versioned(..)
......@@ -34,7 +35,7 @@ module Gargantext.Components.NgramsTable.Core
, _PatchMap
, patchSetFromMap
, applyPatchSet
, applyNgramsTablePatch
--, applyNgramsTablePatch -- re-export only if we have a good reason not to use applyNgramsPatches
, applyNgramsPatches
, rootsOf
, singletonPatchMap
......@@ -53,12 +54,20 @@ module Gargantext.Components.NgramsTable.Core
, putNgramsPatches
, postNgramsChartsAsync
, syncPatches
-- , syncPatchesAsync
, addNewNgram
, addNewNgramP
, addNewNgramA
, setTermListP
, setTermListA
, CoreAction(..)
, CoreDispatch
, Action(..)
, Dispatch
, coreDispatch
, isSingleNgramsTerm
, filterTermSize
, SyncResetButtonsProps
, syncResetButtons
, syncResetButtonsCpt
)
where
......@@ -102,7 +111,7 @@ import Data.Symbol (SProxy(..))
import Data.These (These(..))
import Data.Traversable (for, traverse_)
import Data.TraversableWithIndex (traverseWithIndex)
import Data.Tuple (Tuple(..))
import Data.Tuple (Tuple(..), snd)
import Data.Tuple.Nested ((/\))
import DOM.Simple.Console (log2)
import Effect.Aff (Aff, launchAff_)
......@@ -110,17 +119,23 @@ import Effect (Effect)
import Effect.Class (liftEffect)
import Effect.Exception.Unsafe (unsafeThrow)
import Foreign.Object as FO
import Reactix (State) as R
import FFI.Simple.Functions (delay)
import Reactix as R
import Reactix.DOM.HTML as H
import Partial (crashWith)
import Partial.Unsafe (unsafePartial)
import Gargantext.Prelude
import Gargantext.AsyncTasks as GAT
import Gargantext.Components.Table as T
import Gargantext.Prelude
import Gargantext.Routes (SessionRoute(..))
import Gargantext.Sessions (Session, get, post, put)
import Gargantext.Types (AsyncTaskType(..), AsyncTaskWithType(..), CTabNgramType(..), ListId, OrderBy(..), ScoreType(..), TabSubType(..), TabType(..), TermList(..), TermSize(..))
import Gargantext.Utils.KarpRabin (indicesOfAny)
thisModule :: String
thisModule = "Gargantext.Components.NgramsTable.Core"
type Endo a = a -> a
type CoreParams s =
......@@ -504,7 +519,7 @@ derive instance eqReplace :: Eq a => Eq (Replace a)
instance semigroupReplace :: Eq a => Semigroup (Replace a) where
append Keep p = p
append p Keep = p
-- append (Replace { old }) (Replace { new }) | old /= new = unsafeThrow "old != new"
append (Replace { old }) (Replace { new }) | old /= new = unsafeThrow "old != new"
append (Replace { new }) (Replace { old }) = replace old new
instance semigroupMonoid :: Eq a => Monoid (Replace a) where
......@@ -600,7 +615,9 @@ invert :: forall a. a -> a
invert _ = unsafeThrow "invert: TODO"
instance semigroupNgramsPatch :: Semigroup NgramsPatch where
append (NgramsReplace p) (NgramsReplace q) = ngramsReplace q.patch_old p.patch_new
append (NgramsReplace p) (NgramsReplace q)
| p.patch_old /= q.patch_new = unsafeThrow "append/NgramsPatch: old != new"
| otherwise = ngramsReplace q.patch_old p.patch_new
append (NgramsPatch p) (NgramsPatch q) = NgramsPatch
{ patch_children: p.patch_children <> q.patch_children
, patch_list: p.patch_list <> q.patch_list
......@@ -756,8 +773,14 @@ isEmptyNgramsTablePatch {ngramsPatches} = isEmptyPatchMap ngramsPatches
fromNgramsPatches :: NgramsPatches -> NgramsTablePatch
fromNgramsPatches ngramsPatches = {ngramsPatches}
findNgramRoot :: NgramsTable -> NgramsTerm -> NgramsTerm
findNgramRoot (NgramsTable m) n =
fromMaybe n (m.ngrams_repo_elements ^? at n <<< _Just <<< _NgramsRepoElement <<< _root <<< _Just)
findNgramTermList :: NgramsTable -> NgramsTerm -> Maybe TermList
findNgramTermList (NgramsTable m) n = m.ngrams_repo_elements ^? at n <<< _Just <<< _NgramsRepoElement <<< _list
findNgramTermList (NgramsTable m) n = m.ngrams_repo_elements ^? at r <<< _Just <<< _NgramsRepoElement <<< _list
where
r = findNgramRoot (NgramsTable m) n
singletonNgramsTablePatch :: NgramsTerm -> NgramsPatch -> NgramsTablePatch
singletonNgramsTablePatch n p = fromNgramsPatches $ singletonPatchMap n p
......@@ -874,10 +897,21 @@ newNgramPatch list =
}
}
addNewNgram :: NgramsTerm -> TermList -> NgramsTablePatch
addNewNgram ngrams list =
addNewNgramP :: NgramsTerm -> TermList -> NgramsTablePatch
addNewNgramP ngrams list =
{ ngramsPatches: singletonPatchMap ngrams (newNgramPatch list) }
addNewNgramA :: NgramsTerm -> TermList -> CoreAction
addNewNgramA ngrams list = CommitPatch $ addNewNgramP ngrams list
setTermListP :: NgramsTerm -> Replace TermList -> NgramsTablePatch
setTermListP ngram patch_list = singletonNgramsTablePatch ngram pe
where
pe = NgramsPatch { patch_list, patch_children: mempty }
setTermListA :: NgramsTerm -> Replace TermList -> CoreAction
setTermListA ngram termList = CommitPatch $ setTermListP ngram termList
putNgramsPatches :: forall s. CoreParams s -> VersionedNgramsPatches -> Aff VersionedNgramsPatches
putNgramsPatches { listIds, nodeId, session, tabType } = put session putNgrams
where putNgrams = PutNgrams tabType (head listIds) Nothing (Just nodeId)
......@@ -996,9 +1030,13 @@ convOrderBy (T.DESC (T.ColumnName "Score")) = ScoreDesc
convOrderBy (T.ASC _) = TermAsc
convOrderBy (T.DESC _) = TermDesc
data CoreAction
= CommitPatch NgramsTablePatch
| Synchronize { afterSync :: Unit -> Aff Unit }
| ResetPatches
data Action
= CommitPatch NgramsTablePatch
= CoreAction CoreAction
| SetParentResetChildren (Maybe NgramsTerm)
-- ^ This sets `ngramsParent` and resets `ngramsChildren`.
| ToggleChild Boolean NgramsTerm
......@@ -1006,15 +1044,22 @@ data Action
-- If the `Boolean` is `true` it means we want to add it if it is not here,
-- if it is `false` it is meant to be removed if not here.
| AddTermChildren
| Synchronize { afterSync :: Unit -> Aff Unit }
| ToggleSelect NgramsTerm
-- ^ Toggles the NgramsTerm in the `Set` `ngramsSelection`.
| ToggleSelectAll
| ResetPatches
type CoreDispatch = CoreAction -> Effect Unit
type Dispatch = Action -> Effect Unit
coreDispatch :: forall p s. CoreParams p -> R.State (CoreState s) -> CoreDispatch
coreDispatch path state (Synchronize { afterSync }) =
syncPatches path state afterSync
coreDispatch _ state@({ngramsVersion} /\ _) (CommitPatch pt) =
commitPatch (Versioned {version: ngramsVersion, data: pt}) state
coreDispatch _ (_ /\ setState) ResetPatches =
setState $ \s -> s { ngramsLocalPatch = { ngramsPatches: mempty } }
isSingleNgramsTerm :: NgramsTerm -> Boolean
isSingleNgramsTerm nt = isSingleTerm $ ngramsTermText nt
where
......@@ -1027,3 +1072,38 @@ filterTermSize :: Maybe TermSize -> NgramsTerm -> Boolean
filterTermSize (Just MonoTerm) nt = isSingleNgramsTerm nt
filterTermSize (Just MultiTerm) nt = not $ isSingleNgramsTerm nt
filterTermSize _ _ = true
type SyncResetButtonsProps =
( afterSync :: Unit -> Aff Unit
, ngramsLocalPatch :: NgramsTablePatch
, performAction :: CoreDispatch
)
syncResetButtons :: Record SyncResetButtonsProps -> R.Element
syncResetButtons p = R.createElement syncResetButtonsCpt p []
syncResetButtonsCpt :: R.Component SyncResetButtonsProps
syncResetButtonsCpt = R.hooksComponentWithModule thisModule "syncResetButtons" cpt
where
cpt { afterSync, ngramsLocalPatch, performAction } _ = do
synchronizing@(s /\ setSynchronizing) <- R.useState' false
let
hasChanges = ngramsLocalPatch /= mempty
newAfterSync x = do
afterSync x
liftEffect $ setSynchronizing $ const false
synchronizeClick _ = delay unit $ \_ -> do
setSynchronizing $ const true
performAction $ Synchronize { afterSync: newAfterSync }
pure $ H.div {} [
H.button { className: "btn btn-danger " <> if hasChanges then "" else " disabled"
, on: { click: \_ -> performAction ResetPatches }
} [ H.text "Reset" ]
, H.button { className: "btn btn-primary " <> (if s || (not hasChanges) then "disabled" else "")
, on: { click: synchronizeClick }
} [ H.text "Sync" ]
]
......@@ -91,13 +91,14 @@ annuaireCpt = R.hooksComponentWithModule thisModule "annuaire" cpt
cpt {session, path, info: info@(AnnuaireInfo {name, date: date'}), frontends} _ = do
pagePath <- R.useState' $ initialPagePath (fst path)
cacheState <- R.useState' NT.CacheOn
cacheState <- R.useState' NT.CacheOff
pure $ R.fragment
[ T.tableHeaderLayout { afterCacheStateChange: \_ -> launchAff_ $ clearCache unit
, cacheState
, date
, desc: name
, key: "annuaire-" <> (show $ fst cacheState)
, query: ""
, title: name
, user: "" }
......
......@@ -26,7 +26,6 @@ import Gargantext.Prelude (Unit, bind, const, discard, pure, show, unit, ($), (+
import Gargantext.Routes as Routes
import Gargantext.Sessions (Session, get, put, sessionId)
import Gargantext.Types (NodeType(..))
import Gargantext.Utils.Reactix as R2
thisModule :: String
thisModule = "Gargantext.Components.Nodes.Annuaire.User.Contacts"
......
......@@ -18,7 +18,6 @@ import Gargantext.Components.Nodes.Lists.Types as NTypes
import Gargantext.Ends (Frontends)
import Gargantext.Sessions (Session)
import Gargantext.Types (TabType(..), TabSubType(..), CTabNgramType(..), PTabNgramType(..))
import Gargantext.Utils.Reactix as R2
thisModule :: String
thisModule = "Gargantext.Components.Nodes.Annuaire.User.Contacts.Tabs"
......@@ -78,11 +77,17 @@ tabsCpt = R.hooksComponentWithModule thisModule "tabs" cpt
chart = mempty
totalRecords = 4736 -- TODO
docs = DT.docViewLayout
{ frontends, session, nodeId, chart, totalRecords
, tabType: TabPairing TabDocs
, listId: defaultListId
{ cacheState
, chart
, corpusId: Nothing
, showSearch: true }
, frontends
, listId: defaultListId
, nodeId
, session
, showSearch: true
, tabType: TabPairing TabDocs
, totalRecords
}
type NgramsViewTabsProps = (
......
......@@ -427,7 +427,7 @@ loadCorpus {nodeId, session} = do
loadCorpusWithChild :: Record LoadProps -> Aff CorpusData
loadCorpusWithChild {nodeId:childId, session} = do
loadCorpusWithChild { nodeId: childId, session } = do
-- fetch corpus via lists parentId
(NodePoly {parentId: corpusId} :: NodePoly {}) <- get session $ listNodeRoute childId ""
corpusNode <- get session $ corpusNodeRoute corpusId ""
......@@ -435,7 +435,7 @@ loadCorpusWithChild {nodeId:childId, session} = do
:: forall a. DecodeJson a => AffTableResult (NodePoly a)
case (A.head defaultListIds.docs :: Maybe (NodePoly HyperdataList)) of
Just (NodePoly { id: defaultListId }) ->
pure {corpusId, corpusNode, defaultListId}
pure { corpusId, corpusNode, defaultListId }
Nothing ->
throwError $ error "Missing default list"
where
......
......@@ -88,8 +88,8 @@ dashboardLayoutLoadedCpt = R.hooksComponentWithModule thisModule "dashboardLayou
where
cpt props@{ charts, corpusId, defaultListId, onChange, session } _ = do
pure $
H.div {} ([
H.h1 {} [ H.text "DashBoard" ]
H.div {} ([ H.h1 {} [ H.text "Board" ]
, H.p {} [ H.text "Summary of all your charts here" ]
] <> chartsEls <> [addNew])
where
addNew = H.div { className: "row" } [
......
module Gargantext.Components.Nodes.Corpus.Document where
import Data.Argonaut (class DecodeJson, decodeJson, (.:), (.:?))
import Data.Generic.Rep (class Generic)
import Data.Generic.Rep.Show (genericShow)
--import Data.Argonaut (encodeJson) -- DEBUG
--import Data.Argonaut.Core (stringifyWithIndent) -- DEBUG
import Data.Maybe (Maybe(..), fromMaybe)
import Data.Tuple (fst)
import Data.Tuple.Nested ((/\))
import Effect (Effect)
import Effect.Aff (Aff)
import Reactix as R
import Reactix.DOM.HTML as H
import Gargantext.Prelude
import Gargantext.Prelude (bind, pure, show, unit, ($), (<>), (<<<))
import Gargantext.Components.AutoUpdate ( autoUpdate)
import Gargantext.Components.AutoUpdate (autoUpdate)
import Gargantext.Components.Search (SearchType(..))
import Gargantext.Components.Node (NodePoly(..))
import Gargantext.Components.Nodes.Corpus.Document.Types (DocPath, Document(..), LoadedData, NodeDocument, Props, State, initialState)
import Gargantext.Components.NgramsTable.Core
( CoreState, NgramsPatch(..), NgramsTerm, Replace, Versioned(..)
, VersionedNgramsTable, addNewNgram, applyNgramsTablePatch, commitPatch
, loadNgramsTable, replace, singletonNgramsTablePatch, syncPatches )
( CoreAction(..), Versioned(..), addNewNgramA, applyNgramsPatches, coreDispatch, loadNgramsTable
, replace, setTermListA, syncResetButtons, findNgramRoot )
import Gargantext.Components.Annotation.AnnotatedField as AnnotatedField
import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Routes (SessionRoute(..))
import Gargantext.Sessions (Session, get, sessionId)
import Gargantext.Types (CTabNgramType(..), NodeType(..), TabSubType(..), TabType(..), TermList, ScoreType(..))
import Gargantext.Types (CTabNgramType(..), NodeType(..), TabSubType(..), TabType(..), ScoreType(..))
import Gargantext.Utils as U
import Gargantext.Utils.Reactix as R2
thisModule :: String
thisModule = "Gargantext.Components.Nodes.Corpus.Document"
type DocPath =
{
corpusId :: Maybe Int
, listIds :: Array Int
, nodeId :: Int
, session :: Session
, tabType :: TabType
}
type NodeDocument = NodePoly Document
type LoadedData =
{ document :: NodeDocument
, ngramsTable :: VersionedNgramsTable
}
type Props = (
loaded :: LoadedData
, path :: DocPath
)
-- This is a subpart of NgramsTable.State.
type State = CoreState ()
initialState
:: forall props others
. { loaded :: { ngramsTable :: VersionedNgramsTable | others }
| props }
-> State
initialState {loaded: {ngramsTable: Versioned {version}}} =
{ ngramsLocalPatch: mempty
, ngramsStagePatch: mempty
, ngramsValidPatch: mempty
, ngramsVersion: version
}
-- This is a subset of NgramsTable.Action.
data Action
= SetTermListItem NgramsTerm (Replace TermList)
| AddNewNgram NgramsTerm TermList
| Synchronize
newtype Status = Status { failed :: Int
, succeeded :: Int
, remaining :: Int
}
newtype DocumentV3 =
DocumentV3 { abstract :: Maybe String
, authors :: Maybe String
--, error :: Maybe String
, language_iso2 :: Maybe String
, language_iso3 :: Maybe String
, language_name :: Maybe String
, publication_date :: Maybe String
, publication_day :: Maybe Int
, publication_hour :: Maybe Int
, publication_minute :: Maybe Int
, publication_month :: Maybe Int
, publication_second :: Maybe Int
, publication_year :: Maybe Int
, realdate_full_ :: Maybe String
, source :: Maybe String
, statuses :: Maybe (Array Status)
, title :: Maybe String
}
defaultNodeDocumentV3 :: NodePoly DocumentV3
defaultNodeDocumentV3 =
NodePoly { id : 0
, typename : 0
, userId : 0
, parentId : 0
, name : "Default name"
, date : "Default date"
, hyperdata : defaultDocumentV3
}
defaultDocumentV3 :: DocumentV3
defaultDocumentV3 =
DocumentV3 { abstract : Nothing
, authors : Nothing
--, error : Nothing
, language_iso2 : Nothing
, language_iso3 : Nothing
, language_name : Nothing
, publication_date : Nothing
, publication_day : Nothing
, publication_hour : Nothing
, publication_minute : Nothing
, publication_month : Nothing
, publication_second : Nothing
, publication_year : Nothing
, realdate_full_ : Nothing
, source : Nothing
, statuses : Nothing
, title : Nothing
}
data Document
= Document
{ abstract :: Maybe String
, authors :: Maybe String
, bdd :: Maybe String
, doi :: Maybe String
, language_iso2 :: Maybe String
-- , page :: Maybe Int
, publication_date :: Maybe String
--, publication_second :: Maybe Int
--, publication_minute :: Maybe Int
--, publication_hour :: Maybe Int
, publication_day :: Maybe Int
, publication_month :: Maybe Int
, publication_year :: Maybe Int
, source :: Maybe String
, institutes :: Maybe String
, title :: Maybe String
, uniqId :: Maybe String
--, url :: Maybe String
--, text :: Maybe String
}
publicationDate :: Document -> String
publicationDate (Document doc@{publication_year: Nothing}) = ""
publicationDate (Document doc@{publication_year: Just py, publication_month: Nothing}) = U.zeroPad 2 py
publicationDate (Document doc@{publication_year: Just py, publication_month: Just pm, publication_day: Nothing}) = (U.zeroPad 2 py) <> "-" <> (U.zeroPad 2 pm)
publicationDate (Document doc@{publication_year: Just py, publication_month: Just pm, publication_day: Just pd}) = (U.zeroPad 2 py) <> "-" <> (U.zeroPad 2 pm) <> "-" <> (U.zeroPad 2 pd)
defaultNodeDocument :: NodeDocument
defaultNodeDocument =
NodePoly { id : 0
, typename : 0
, userId : 0
, parentId : 0
, name : "Default name"
, date : "Default date"
, hyperdata : defaultDocument
}
-- TODO: BUG if DOI does not exist, page is not shown
defaultDocument :: Document
defaultDocument =
Document { abstract : Nothing
, authors : Nothing
, bdd : Nothing
, doi : Nothing
, language_iso2 : Nothing
--, page : Nothing
, publication_date : Nothing
--, publication_second : Nothing
--, publication_minute : Nothing
--, publication_hour : Nothing
, publication_day : Nothing
, publication_month : Nothing
, publication_year : Nothing
, source : Nothing
, institutes : Nothing
, title : Nothing
, uniqId : Nothing
--, url : Nothing
--, text : Nothing
}
derive instance genericDocument :: Generic Document _
derive instance genericDocumentV3 :: Generic DocumentV3 _
derive instance genericStatus :: Generic Status _
instance showDocument :: Show Document where
show = genericShow
instance showDocumentV3 :: Show DocumentV3 where
show = genericShow
instance showStatus :: Show Status where
show = genericShow
instance decodeStatus :: DecodeJson Status
where
decodeJson json = do
obj <- decodeJson json
failed <- obj .: "failed"
succeeded <- obj .: "succeeded"
remaining <- obj .: "remaining"
pure $ Status {failed, succeeded, remaining}
instance decodeDocumentV3 :: DecodeJson DocumentV3
where
decodeJson json = do
obj <- decodeJson json
abstract <- obj .:? "abstract"
authors <- obj .: "authors"
--error <- obj .: "error"
language_iso2 <- obj .: "language_iso2"
language_iso3 <- obj .: "language_iso3"
language_name <- obj .: "language_name"
publication_date <- obj .: "publication_date"
publication_day <- obj .: "publication_day"
publication_hour <- obj .: "publication_hour"
publication_minute <- obj .: "publication_minute"
publication_month <- obj .: "publication_month"
publication_second <- obj .: "publication_second"
publication_year <- obj .: "publication_year"
realdate_full_ <- obj .: "realdate_full_"
source <- obj .: "source"
statuses <- obj .: "statuses"
title <- obj .: "title"
pure $ DocumentV3 { abstract
, authors
--, error
, language_iso2
, language_iso3
, language_name
, publication_date
, publication_day
, publication_hour
, publication_minute
, publication_month
, publication_second
, publication_year
, realdate_full_
, source
, statuses
, title
}
instance decodeDocument :: DecodeJson Document
where
decodeJson json = do
obj <- decodeJson json
abstract <- obj .:? "abstract"
authors <- obj .:? "authors"
bdd <- obj .:? "bdd"
doi <- obj .:? "doi"
language_iso2 <- obj .:? "language_iso2"
-- page <- obj .:? "page"
publication_date <- obj .:? "publication_date"
--publication_second <- obj .:? "publication_second"
--publication_minute <- obj .:? "publication_minute"
--publication_hour <- obj .:? "publication_hour"
publication_day <- obj .:? "publication_day"
publication_month <- obj .:? "publication_month"
publication_year <- obj .:? "publication_year"
source <- obj .:? "sources"
institutes <- obj .:? "institutes"
title <- obj .:? "title"
uniqId <- obj .:? "uniqId"
--url <- obj .: "url"
--text <- obj .: "text"
pure $ Document { abstract
, authors
, bdd
, doi
, language_iso2
-- , page
, publication_date
--, publication_second
--, publication_minute
--, publication_hour
, publication_day
, publication_month
, publication_year
, source
, institutes
, title
, uniqId
--, url
--, text
}
docViewWrapper :: Record Props -> R.Element
docViewWrapper props = R.createElement docViewWrapperCpt props []
......@@ -321,15 +57,38 @@ docView props = R.createElement docViewCpt props []
docViewCpt :: R.Component DocViewProps
docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
where
cpt props@{ loaded: loaded@{ ngramsTable: Versioned { data: initTable }, document }, state } _ = do
pure $ H.div {} [
autoUpdate { duration: 3000, effect: dispatch Synchronize }
, H.div { className: "container1" }
cpt { path
, loaded: loaded@{ ngramsTable: Versioned { data: initTable }, document }
, state: state@({ ngramsVersion: version, ngramsLocalPatch } /\ _)
} _children = do
let
afterSync = \_ -> pure unit
syncResetBtns = [syncResetButtons { afterSync, ngramsLocalPatch
, performAction: dispatch
}]
withAutoUpdate = false
autoUpd :: Array R.Element
autoUpd = if withAutoUpdate then
[ autoUpdate { duration: 5000
, effect: dispatch $ Synchronize { afterSync }
}
]
else []
pure $ H.div {} $
autoUpd <> syncResetBtns <>
--DEBUG
--[ H.pre { rows: 30 } [
-- H.text (stringifyWithIndent 2 (encodeJson (fst state)))
-- ] ] <>
[
H.div { className: "container1" }
[
R2.row
[
R2.col 8
[ H.h4 {} [ annotate state doc.title ]
[ H.h4 {} [ annotate doc.title ]
, H.ul { className: "list-group" }
[ li' [ H.span {} [ text' doc.source ]
, badge "source"
......@@ -343,7 +102,7 @@ docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
]
]
, badge "abstract"
, annotate state doc.abstract
, annotate doc.abstract
, H.div { className: "jumbotron" }
[ H.p {} [ H.text "Empty Full Text" ]
]
......@@ -352,31 +111,19 @@ docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
]
]
where
dispatch :: Action -> Effect Unit
dispatch (AddNewNgram ngram termList) = do
commitPatch (Versioned {version, data: pt}) state
where
({ ngramsVersion: version } /\ _) = state
pt = addNewNgram ngram termList
dispatch (SetTermListItem ngram termList) = do
commitPatch (Versioned {version, data: pt}) state
where
({ ngramsVersion: version } /\ _) = state
pe = NgramsPatch { patch_list: termList, patch_children: mempty }
pt = singletonNgramsTablePatch ngram pe
dispatch Synchronize = do
syncPatches props.path props.state (\_ -> pure unit)
annotate state text = AnnotatedField.annotatedField { ngrams: ngramsTable state
, setTermList: setTermList state
dispatch = coreDispatch path state
ngrams = applyNgramsPatches (fst state) initTable
annotate text = AnnotatedField.annotatedField { ngrams
, setTermList
, text }
badge s = H.span { className: "badge badge-default badge-pill" } [ H.text s ]
li' = H.li { className: "list-group-item justify-content-between" }
ngramsTable ({ ngramsLocalPatch, ngramsValidPatch } /\ _) = applyNgramsTablePatch (ngramsLocalPatch <> ngramsValidPatch) initTable
setTermList state ngram Nothing newList = dispatch (AddNewNgram ngram newList)
setTermList state ngram (Just oldList) newList = dispatch (SetTermListItem ngram (replace oldList newList))
setTermListOrAddA ngram Nothing = addNewNgramA ngram
setTermListOrAddA ngram (Just oldList) = setTermListA ngram <<< replace oldList
setTermList ngram mOldList = dispatch <<< setTermListOrAddA (findNgramRoot ngrams ngram) mOldList
-- Here the use of findNgramRoot makes that we always target the root of an ngram group.
text' x = H.text $ fromMaybe "Nothing" x
NodePoly {hyperdata : Document doc} = document
NodePoly {hyperdata: Document doc} = document
type LayoutProps = (
corpusId :: Maybe Int
......
module Gargantext.Components.Nodes.Corpus.Document.Types where
import Data.Argonaut (class DecodeJson, decodeJson, (.:), (.:?))
import Data.Generic.Rep (class Generic)
import Data.Generic.Rep.Show (genericShow)
import Data.Maybe (Maybe(..))
import Gargantext.Prelude
import Gargantext.Components.Node (NodePoly(..))
import Gargantext.Components.NgramsTable.Core (CoreState, Versioned(..) , VersionedNgramsTable)
import Gargantext.Sessions (Session)
import Gargantext.Types (TabType)
type DocPath =
{ corpusId :: Maybe Int
, listIds :: Array Int
, nodeId :: Int
, session :: Session
, tabType :: TabType
}
type NodeDocument = NodePoly Document
type LoadedData =
{ document :: NodeDocument
, ngramsTable :: VersionedNgramsTable
}
type Props = (
loaded :: LoadedData
, path :: DocPath
)
-- This is a subpart of NgramsTable.State.
type State = CoreState ()
initialState
:: forall props others
. { loaded :: { ngramsTable :: VersionedNgramsTable | others }
| props }
-> State
initialState {loaded: {ngramsTable: Versioned {version}}} =
{ ngramsLocalPatch: mempty
, ngramsStagePatch: mempty
, ngramsValidPatch: mempty
, ngramsVersion: version
}
newtype Status = Status { failed :: Int
, succeeded :: Int
, remaining :: Int
}
newtype DocumentV3 =
DocumentV3 { abstract :: Maybe String
, authors :: Maybe String
--, error :: Maybe String
, language_iso2 :: Maybe String
, language_iso3 :: Maybe String
, language_name :: Maybe String
, publication_date :: Maybe String
, publication_day :: Maybe Int
, publication_hour :: Maybe Int
, publication_minute :: Maybe Int
, publication_month :: Maybe Int
, publication_second :: Maybe Int
, publication_year :: Maybe Int
, realdate_full_ :: Maybe String
, source :: Maybe String
, statuses :: Maybe (Array Status)
, title :: Maybe String
}
defaultNodeDocumentV3 :: NodePoly DocumentV3
defaultNodeDocumentV3 =
NodePoly { id : 0
, typename : 0
, userId : 0
, parentId : 0
, name : "Default name"
, date : "Default date"
, hyperdata : defaultDocumentV3
}
defaultDocumentV3 :: DocumentV3
defaultDocumentV3 =
DocumentV3 { abstract : Nothing
, authors : Nothing
--, error : Nothing
, language_iso2 : Nothing
, language_iso3 : Nothing
, language_name : Nothing
, publication_date : Nothing
, publication_day : Nothing
, publication_hour : Nothing
, publication_minute : Nothing
, publication_month : Nothing
, publication_second : Nothing
, publication_year : Nothing
, realdate_full_ : Nothing
, source : Nothing
, statuses : Nothing
, title : Nothing
}
data Document
= Document
{ abstract :: Maybe String
, authors :: Maybe String
, bdd :: Maybe String
, doi :: Maybe String
, language_iso2 :: Maybe String
-- , page :: Maybe Int
, publication_date :: Maybe String
--, publication_second :: Maybe Int
--, publication_minute :: Maybe Int
--, publication_hour :: Maybe Int
, publication_day :: Maybe Int
, publication_month :: Maybe Int
, publication_year :: Maybe Int
, source :: Maybe String
, institutes :: Maybe String
, title :: Maybe String
, uniqId :: Maybe String
--, url :: Maybe String
--, text :: Maybe String
}
defaultNodeDocument :: NodeDocument
defaultNodeDocument =
NodePoly { id : 0
, typename : 0
, userId : 0
, parentId : 0
, name : "Default name"
, date : "Default date"
, hyperdata : defaultDocument
}
-- TODO: BUG if DOI does not exist, page is not shown
defaultDocument :: Document
defaultDocument =
Document { abstract : Nothing
, authors : Nothing
, bdd : Nothing
, doi : Nothing
, language_iso2 : Nothing
--, page : Nothing
, publication_date : Nothing
--, publication_second : Nothing
--, publication_minute : Nothing
--, publication_hour : Nothing
, publication_day : Nothing
, publication_month : Nothing
, publication_year : Nothing
, source : Nothing
, institutes : Nothing
, title : Nothing
, uniqId : Nothing
--, url : Nothing
--, text : Nothing
}
derive instance genericDocument :: Generic Document _
derive instance genericDocumentV3 :: Generic DocumentV3 _
derive instance genericStatus :: Generic Status _
instance showDocument :: Show Document where
show = genericShow
instance showDocumentV3 :: Show DocumentV3 where
show = genericShow
instance showStatus :: Show Status where
show = genericShow
instance decodeStatus :: DecodeJson Status
where
decodeJson json = do
obj <- decodeJson json
failed <- obj .: "failed"
succeeded <- obj .: "succeeded"
remaining <- obj .: "remaining"
pure $ Status {failed, succeeded, remaining}
instance decodeDocumentV3 :: DecodeJson DocumentV3
where
decodeJson json = do
obj <- decodeJson json
abstract <- obj .:? "abstract"
authors <- obj .: "authors"
--error <- obj .: "error"
language_iso2 <- obj .: "language_iso2"
language_iso3 <- obj .: "language_iso3"
language_name <- obj .: "language_name"
publication_date <- obj .: "publication_date"
publication_day <- obj .: "publication_day"
publication_hour <- obj .: "publication_hour"
publication_minute <- obj .: "publication_minute"
publication_month <- obj .: "publication_month"
publication_second <- obj .: "publication_second"
publication_year <- obj .: "publication_year"
realdate_full_ <- obj .: "realdate_full_"
source <- obj .: "source"
statuses <- obj .: "statuses"
title <- obj .: "title"
pure $ DocumentV3 { abstract
, authors
--, error
, language_iso2
, language_iso3
, language_name
, publication_date
, publication_day
, publication_hour
, publication_minute
, publication_month
, publication_second
, publication_year
, realdate_full_
, source
, statuses
, title
}
instance decodeDocument :: DecodeJson Document
where
decodeJson json = do
obj <- decodeJson json
abstract <- obj .:? "abstract"
authors <- obj .:? "authors"
bdd <- obj .:? "bdd"
doi <- obj .:? "doi"
language_iso2 <- obj .:? "language_iso2"
-- page <- obj .:? "page"
publication_date <- obj .:? "publication_date"
--publication_second <- obj .:? "publication_second"
--publication_minute <- obj .:? "publication_minute"
--publication_hour <- obj .:? "publication_hour"
publication_day <- obj .:? "publication_day"
publication_month <- obj .:? "publication_month"
publication_year <- obj .:? "publication_year"
source <- obj .:? "sources"
institutes <- obj .:? "institutes"
title <- obj .:? "title"
uniqId <- obj .:? "uniqId"
--url <- obj .: "url"
--text <- obj .: "text"
pure $ Document { abstract
, authors
, bdd
, doi
, language_iso2
-- , page
, publication_date
--, publication_second
--, publication_minute
--, publication_hour
, publication_day
, publication_month
, publication_year
, source
, institutes
, title
, uniqId
--, url
--, text
}
......@@ -8,6 +8,7 @@ import Data.Generic.Rep (class Generic)
import Data.Generic.Rep.Eq (genericEq)
import Data.Generic.Rep.Show (genericShow)
import Data.Maybe (Maybe(..))
import Gargantext.Components.Node (NodePoly)
import Gargantext.Prelude
......
......@@ -51,6 +51,7 @@ instance encodeJsonHyperdata :: Argonaut.EncodeJson Hyperdata where
type Props =
( nodeId :: Int
, session :: Session
, nodeType :: NodeType
)
type Reload = R.State Int
......@@ -66,10 +67,10 @@ frameLayout props = R.createElement frameLayoutCpt props []
frameLayoutCpt :: R.Component Props
frameLayoutCpt = R.hooksComponentWithModule thisModule "frameLayout" cpt
where
cpt {nodeId, session} _ = do
cpt {nodeId, session, nodeType} _ = do
let sid = sessionId session
pure $ frameLayoutWithKey { key: show sid <> "-" <> show nodeId, nodeId, session }
pure $ frameLayoutWithKey { key: show sid <> "-" <> show nodeId, nodeId, session, nodeType}
frameLayoutWithKey :: Record KeyProps -> R.Element
frameLayoutWithKey props = R.createElement frameLayoutWithKeyCpt props []
......@@ -77,11 +78,11 @@ frameLayoutWithKey props = R.createElement frameLayoutWithKeyCpt props []
frameLayoutWithKeyCpt :: R.Component KeyProps
frameLayoutWithKeyCpt = R.hooksComponentWithModule thisModule "frameLayoutWithKey" cpt
where
cpt { nodeId, session } _ = do
cpt { nodeId, session, nodeType} _ = do
reload <- R.useState' 0
useLoader {nodeId, reload: fst reload, session} loadframeWithReload $
\frame -> frameLayoutView {frame, nodeId, reload, session}
\frame -> frameLayoutView {frame, nodeId, reload, session, nodeType}
type ViewProps =
( frame :: NodePoly Hyperdata
......@@ -90,12 +91,12 @@ type ViewProps =
)
data FrameType = Calc | Write
type Base = String
type FrameId = String
hframeUrl :: Base -> FrameId -> String
hframeUrl base frame_id = base <> "/" <> frame_id <> "?both"
hframeUrl :: NodeType -> Base -> FrameId -> String
hframeUrl NodeFrameCode _ frame_id = frame_id -- Temp fix : frame_id is currently the whole url created
hframeUrl _ base frame_id = base <> "/" <> frame_id <> "?both"
frameLayoutView :: Record ViewProps -> R.Element
frameLayoutView props = R.createElement frameLayoutViewCpt props []
......@@ -103,9 +104,9 @@ frameLayoutView props = R.createElement frameLayoutViewCpt props []
frameLayoutViewCpt :: R.Component ViewProps
frameLayoutViewCpt = R.hooksComponentWithModule thisModule "frameLayoutView" cpt
where
cpt {frame: (NodePoly {hyperdata: Hyperdata {base, frame_id}}), nodeId, reload, session} _ = do
cpt {frame: (NodePoly {hyperdata: Hyperdata {base, frame_id}}), nodeId, reload, session, nodeType} _ = do
pure $ H.div { className : "frame" }
[ H.iframe { src: hframeUrl base frame_id
[ H.iframe { src: hframeUrl nodeType base frame_id
, width: "100%"
, height: "100%"
} []
......
module Gargantext.Components.Nodes.Lists where
import Data.Tuple (fst)
import Effect (Effect)
import Effect.Aff (launchAff_)
import Reactix as R
......@@ -60,7 +61,7 @@ listsLayoutWithKeyCpt = R.hooksComponentWithModule thisModule "listsLayoutWithKe
useLoader path loadCorpusWithChild $
\corpusData@{ corpusId, corpusNode: NodePoly poly, defaultListId } ->
let { date, hyperdata : Hyperdata h, name } = poly
CorpusInfo {desc,query,authors} = getCorpusInfo h.fields
CorpusInfo { authors, desc, query } = getCorpusInfo h.fields
in
R.fragment [
Table.tableHeaderLayout {
......@@ -68,6 +69,7 @@ listsLayoutWithKeyCpt = R.hooksComponentWithModule thisModule "listsLayoutWithKe
, cacheState
, date
, desc
, key: "listsLayoutWithKey-header-" <> (show $ fst cacheState)
, query
, title: "Corpus " <> name
, user: authors }
......@@ -76,6 +78,7 @@ listsLayoutWithKeyCpt = R.hooksComponentWithModule thisModule "listsLayoutWithKe
, cacheState
, corpusData
, corpusId
, key: "listsLayoutWithKey-tabs-" <> (show $ fst cacheState)
, session }
]
where
......
module Gargantext.Components.Nodes.Lists.Tabs where
import Data.Maybe (Maybe(..), fromMaybe)
import Data.Tuple (fst)
import Data.Tuple.Nested ((/\))
import DOM.Simple.Console (log2)
import Effect.Aff (launchAff_)
import Effect.Class (liftEffect)
import Reactix as R
import Reactix.DOM.HTML as H
......@@ -36,10 +33,15 @@ type Props = (
, session :: Session
)
tabs :: Record Props -> R.Element
type PropsWithKey = (
key :: String
| Props
)
tabs :: Record PropsWithKey -> R.Element
tabs props = R.createElement tabsCpt props []
tabsCpt :: R.Component Props
tabsCpt :: R.Component PropsWithKey
tabsCpt = R.hooksComponentWithModule thisModule "tabs" cpt
where
cpt { asyncTasks, cacheState, corpusData: corpusData@{ defaultListId }, corpusId, session } _ = do
......
......@@ -5,6 +5,7 @@ import Data.Argonaut.Decode.Error (JsonDecodeError(..))
import Data.Either (Either(..))
import Data.Generic.Rep (class Generic)
import Data.Generic.Rep.Eq (genericEq)
import Data.Generic.Rep.Show (genericShow)
import Gargantext.Prelude
......@@ -26,3 +27,5 @@ instance decodeJsonCacheState :: DecodeJson CacheState where
instance encodeJsonCacheState :: EncodeJson CacheState where
encodeJson CacheOn = encodeJson "CacheOn"
encodeJson CacheOff = encodeJson "CacheOff"
instance showCacheState :: Show CacheState where
show = genericShow
......@@ -4,6 +4,7 @@ import Prelude
import Data.Generic.Rep (class Generic)
import Data.Generic.Rep.Show (genericShow)
import Data.Maybe (Maybe(..))
import Data.Tuple (fst)
import Data.Tuple.Nested ((/\))
import Effect (Effect)
import Effect.Aff (launchAff_)
......@@ -23,7 +24,6 @@ import Gargantext.Components.Table as Table
import Gargantext.Ends (Frontends)
import Gargantext.Sessions (Session, Sessions, sessionId, getCacheState, setCacheState)
import Gargantext.Types (CTabNgramType(..), TabSubType(..), TabType(..))
import Gargantext.Utils.Reactix as R2
thisModule :: String
thisModule = "Gargantext.Components.Nodes.Texts"
......@@ -63,13 +63,12 @@ textsLayoutWithKeyCpt :: R.Component KeyProps
textsLayoutWithKeyCpt = R.hooksComponentWithModule thisModule "textsLayoutWithKey" cpt
where
cpt { frontends, nodeId, session, sessionUpdate } _ = do
cacheState <- R.useState' $ getCacheState NT.CacheOn session nodeId
cacheState <- R.useState' $ getCacheState NT.CacheOff session nodeId
pure $ loader { nodeId, session } loadCorpusWithChild $
\corpusData@{ corpusId, corpusNode, defaultListId } -> do
let NodePoly { name, date, hyperdata: Hyperdata h } = corpusNode
let NodePoly { date, hyperdata: Hyperdata h, name } = corpusNode
CorpusInfo { authors, desc, query } = getCorpusInfo h.fields
tabs' = tabs { corpusData, corpusId, frontends, session }
title = "Corpus " <> name
R.fragment [
......@@ -77,10 +76,11 @@ textsLayoutWithKeyCpt = R.hooksComponentWithModule thisModule "textsLayoutWithKe
, cacheState
, date
, desc
, key: "textsLayoutWithKey-" <> (show $ fst cacheState)
, query
, title
, user: authors }
, tabs'
, tabs { cacheState, corpusData, corpusId, frontends, session }
]
where
afterCacheStateChange cacheState = do
......@@ -100,10 +100,13 @@ modeTabType :: Mode -> CTabNgramType
modeTabType MoreLikeFav = CTabAuthors -- TODO
modeTabType MoreLikeTrash = CTabSources -- TODO
type TabsProps = ( corpusData :: CorpusData
type TabsProps = (
cacheState :: R.State NT.CacheState
, corpusData :: CorpusData
, corpusId :: Int
, frontends :: Frontends
, session :: Session )
, session :: Session
)
tabs :: Record TabsProps -> R.Element
tabs props = R.createElement tabsCpt props []
......@@ -111,27 +114,43 @@ tabs props = R.createElement tabsCpt props []
tabsCpt :: R.Component TabsProps
tabsCpt = R.hooksComponentWithModule thisModule "tabs" cpt
where
cpt {frontends, session, corpusId, corpusData} _ = do
cpt { cacheState, corpusId, corpusData, frontends, session } _ = do
(selected /\ setSelected) <- R.useState' 0
pure $ Tab.tabs { tabs: tabs', selected }
where
tabs' = [ "Documents" /\ docs, "Trash" /\ trash
, "More like fav" /\ moreLikeFav, "More like trash" /\ moreLikeTrash ]
docView' tabType = docView { frontends, session, corpusId, corpusData, tabType }
docs = R.fragment [ docsHisto, docView' TabDocs ]
docsHisto = histo { path, session }
let path = initialPath
pure $ Tab.tabs {
selected
, tabs: [
"Documents" /\ R.fragment [
histo { path, session }
, docView' path TabDocs
]
, "Trash" /\ docView' path TabTrash
-- , "More like fav" /\ docView' path TabMoreLikeFav
-- , "More like trash" /\ docView' path TabMoreLikeTrash
]
}
where
path = { corpusId, listId: 0, limit: Nothing, tabType: TabCorpus TabDocs }
moreLikeFav = docView' TabMoreLikeFav
moreLikeTrash = docView' TabMoreLikeTrash
trash = docView' TabTrash
initialPath = { corpusId, listId: 0, limit: Nothing, tabType: TabCorpus TabDocs }
docView' path tabType = docView { cacheState
, corpusData
, corpusId
, frontends
-- , path
, session
, tabType }
type DocViewProps a =
( corpusData :: CorpusData
type DocViewProps a = (
cacheState :: R.State NT.CacheState
, corpusData :: CorpusData
, corpusId :: Int
, frontends :: Frontends
-- , path :: Record DT.Path
, session :: Session
, tabType :: TabSubType a )
, tabType :: TabSubType a
)
docView :: forall a. Record (DocViewProps a) -> R.Element
docView props = R.createElement docViewCpt props []
......@@ -139,13 +158,14 @@ docView props = R.createElement docViewCpt props []
docViewCpt :: forall a. R.Component (DocViewProps a)
docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
where
cpt {frontends, session, corpusId, corpusData: {defaultListId}, tabType} _children = do
pure $ DT.docViewLayout $ params tabType
where
params :: forall b. TabSubType b -> Record DT.LayoutProps
params TabDocs =
cpt props _children = do
pure $ DT.docViewLayout $ docViewLayoutRec props
-- docViewLayoutRec :: forall a. DocViewProps a -> Record DT.LayoutProps
docViewLayoutRec { cacheState, corpusData: { defaultListId }, corpusId, frontends, session, tabType: TabDocs } =
{ nodeId: corpusId
-- ^ TODO merge nodeId and corpusId in DT
, cacheState
, chart : H.div {} []
, tabType: TabCorpus TabDocs
, totalRecords: 4737
......@@ -153,9 +173,10 @@ docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
, corpusId: Just corpusId
, showSearch: true
, frontends, session }
params TabMoreLikeFav =
docViewLayoutRec { cacheState, corpusData: { defaultListId }, corpusId, frontends, session, tabType: TabMoreLikeFav } =
{ nodeId: corpusId
-- ^ TODO merge nodeId and corpusId in DT
, cacheState
, chart : H.div {} []
, tabType: TabCorpus TabMoreLikeFav
, totalRecords: 4737
......@@ -163,9 +184,10 @@ docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
, corpusId: Just corpusId
, showSearch: false
, frontends, session }
params TabMoreLikeTrash =
docViewLayoutRec { cacheState, corpusData: { defaultListId }, corpusId, frontends, session, tabType: TabMoreLikeTrash } =
{ nodeId: corpusId
-- ^ TODO merge nodeId and corpusId in DT
, cacheState
, chart : H.div {} []
, tabType: TabCorpus TabMoreLikeTrash
, totalRecords: 4737
......@@ -173,9 +195,10 @@ docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
, corpusId: Just corpusId
, showSearch: false
, frontends, session }
params TabTrash =
docViewLayoutRec { cacheState, corpusData: { defaultListId }, corpusId, frontends, session, tabType: TabTrash } =
{ nodeId: corpusId
-- ^ TODO merge nodeId and corpusId in DT
, cacheState
, chart : H.div {} []
, tabType: TabCorpus TabTrash
, totalRecords: 4737
......@@ -183,10 +206,11 @@ docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
, corpusId: Nothing
, showSearch: true
, frontends, session }
-- DUMMY
params _ =
-- DUMMY
docViewLayoutRec { cacheState, corpusData: { defaultListId }, corpusId, frontends, session, tabType } =
{ nodeId: corpusId
-- ^ TODO merge nodeId and corpusId in DT
, cacheState
, chart : H.div {} []
, tabType: TabCorpus TabTrash
, totalRecords: 4737
......
......@@ -9,9 +9,13 @@ import Reactix.DOM.HTML as H
import Gargantext.Utils.Reactix as R2
thisModule :: String
thisModule = "Gargantext.Components.Tab"
type TabsProps = ( tabs :: Array (Tuple String R.Element), selected :: Int )
type TabsProps = (
selected :: Int
, tabs :: Array (Tuple String R.Element)
)
tabs :: Record TabsProps -> R.Element
tabs props = R.createElement tabsCpt props []
......
......@@ -18,6 +18,7 @@ import Gargantext.Components.Search
import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Reactix (effectLink)
thisModule :: String
thisModule = "Gargantext.Components.Table"
type TableContainerProps =
......@@ -33,8 +34,8 @@ type Rows = Seq.Seq Row
type OrderBy = Maybe (OrderByDirection ColumnName)
type Params = { offset :: Int
, limit :: Int
type Params = { limit :: Int
, offset :: Int
, orderBy :: OrderBy
, searchType :: SearchType
}
......@@ -60,14 +61,18 @@ instance showOrderByDirection :: Show a => Show (OrderByDirection a) where
derive instance eqOrderByDirection :: Eq a => Eq (OrderByDirection a)
orderByToForm :: OrderByDirection ColumnName -> String
orderByToForm (ASC (ColumnName x)) = x <> "Asc"
orderByToForm (DESC (ColumnName x)) = x <> "Desc"
type Props =
( colNames :: Array ColumnName
, wrapColElts :: ColumnName -> Array R.Element -> Array R.Element
-- ^ Use `const identity` as a default behavior.
, totalRecords :: Int
, container :: Record TableContainerProps -> R.Element
, params :: R.State Params
, rows :: Rows
, container :: Record TableContainerProps -> R.Element
, totalRecords :: Int
, wrapColElts :: ColumnName -> Array R.Element -> Array R.Element
-- ^ Use `const identity` as a default behavior.
)
type State =
......@@ -94,6 +99,7 @@ type TableHeaderLayoutProps =
, cacheState :: R.State NT.CacheState
, date :: String
, desc :: String
, key :: String
, query :: String
, title :: String
, user :: String
......@@ -120,26 +126,26 @@ tableHeaderLayoutCpt = R.hooksComponentWithModule thisModule "tableHeaderLayout"
[ H.div {className: "jumbotron1", style: {padding: "12px 0px 20px 12px"}}
[ H.div {className: "col-md-8 content"}
[ H.p {}
[ H.i {className: "fa fa-globe"} []
[ H.span {className: "fa fa-globe"} []
, H.text $ " " <> desc
]
, H.p {}
[ H.i {className: "fa fa-search-plus"} []
[ H.span {className: "fa fa-search-plus"} []
, H.text $ " " <> query
]
, H.p { className: "cache-toggle"
, on: { click: cacheClick cacheState afterCacheStateChange } }
[ H.i {className: "fa " <> (cacheToggle cacheState)} []
[ H.span { className: "fa " <> (cacheToggle cacheState) } []
, H.text $ cacheText cacheState
]
]
, H.div {className: "col-md-4 content"}
[ H.p {}
[ H.i {className: "fa fa-calendar"} []
[ H.span {className: "fa fa-calendar"} []
, H.text $ " " <> date
]
, H.p {}
[ H.i {className: "fa fa-user"} []
[ H.span {className: "fa fa-user"} []
, H.text $ " " <> user
]
]
......
......@@ -33,6 +33,7 @@ router = oneOf
, RouteFrameWrite <$> (route "write" *> sid) <*> int
, RouteFrameCalc <$> (route "calc" *> sid) <*> int
, RouteFrameCode <$> (route "code" *> sid) <*> int
, RouteFile <$> (route "file" *> sid) <*> int
, Home <$ lit ""
]
......
......@@ -29,6 +29,7 @@ data AppRoute
| ContactPage SessionId Int Int
| RouteFrameWrite SessionId Int
| RouteFrameCalc SessionId Int
| RouteFrameCode SessionId Int
| RouteFile SessionId Int
......@@ -78,6 +79,7 @@ instance showAppRoute :: Show AppRoute where
show (ContactPage s a i) = "Contact" <> show a <> "::" <> show i <> " (" <> show s <> ")"
show (RouteFrameWrite s i) = "write" <> show i <> " (" <> show s <> ")"
show (RouteFrameCalc s i) = "calc" <> show i <> " (" <> show s <> ")"
show (RouteFrameCode s i) = "code" <> show i <> " (" <> show s <> ")"
show (RouteFile s i) = "file" <> show i <> " (" <> show s <> ")"
......@@ -101,6 +103,7 @@ appPath (UserPage s i) = "user/" <> show s <> "/" <> show i
appPath (ContactPage s a i) = "annuaire/" <> show s <> "/" <> show a <> "/contact/" <> show i
appPath (RouteFrameWrite s i) = "write/" <> show s <> "/" <> show i
appPath (RouteFrameCalc s i) = "calc/" <> show s <> "/" <> show i
appPath (RouteFrameCode s i) = "code/" <> show s <> "/" <> show i
appPath (RouteFile s i) = "file/" <> show s <> "/" <> show i
nodeTypeAppRoute :: NodeType -> SessionId -> Int -> Maybe AppRoute
......
......@@ -156,6 +156,7 @@ data NodeType = NodeUser
-- TODO Optional Nodes
| NodeFrameWrite
| NodeFrameCalc
| NodeFrameCode
| NodePublic NodeType
| NodeFile
......@@ -184,9 +185,10 @@ instance showNodeType :: Show NodeType where
show Tree = "NodeTree"
show Team = "NodeTeam"
show NodeList = "NodeList"
show Texts = "NodeTexts"
show Texts = "NodeDocs"
show NodeFrameWrite = "NodeFrameWrite"
show NodeFrameCalc = "NodeFrameCalc"
show NodeFrameCode = "NodeFrameCode"
show (NodePublic nt) = "NodePublic" <> show nt
show NodeFile = "NodeFile"
......@@ -214,6 +216,7 @@ instance readNodeType :: Read NodeType where
read "Annuaire" = Just Annuaire
read "NodeFrameWrite" = Just NodeFrameWrite
read "NodeFrameCalc" = Just NodeFrameCalc
read "NodeFrameCode" = Just NodeFrameCode
read "NodeFile" = Just NodeFile
-- TODO NodePublic read ?
read _ = Nothing
......@@ -261,6 +264,10 @@ fldr NodeFrameWrite false = "fa fa-file-text"
fldr NodeFrameCalc true = "fa fa-calculator"
fldr NodeFrameCalc false = "fa fa-calculator"
fldr NodeFrameCode true = "fa fa-terminal"
fldr NodeFrameCode false = "fa fa-terminal"
fldr (NodePublic nt) b = fldr nt b
fldr _ true = "fa fa-folder-open"
......@@ -316,6 +323,7 @@ nodeTypePath Texts = "texts"
nodeTypePath Team = "team"
nodeTypePath NodeFrameWrite = "write"
nodeTypePath NodeFrameCalc = "calc"
nodeTypePath NodeFrameCode = "code"
nodeTypePath (NodePublic nt) = nodeTypePath nt
nodeTypePath NodeFile = "file"
......
......@@ -2,13 +2,15 @@ module Gargantext.Utils where
import DOM.Simple.Window (window)
import Data.Either (Either(..))
import Data.Foldable (class Foldable, foldr)
import Data.Lens (Lens', lens)
import Data.Newtype (class Newtype, unwrap, wrap)
import Data.Set (Set)
import Data.Set as Set
import Data.Sequence.Ordered as OSeq
import Data.String as S
import Data.Unfoldable (class Unfoldable)
import Effect (Effect)
import Effect.Class (liftEffect)
import FFI.Simple ((..))
import FFI.Simple.Functions (delay)
import Prelude
......@@ -84,5 +86,19 @@ mapLeft _ (Right r) = Right r
location :: Effect String
location = delay unit $ \_ -> pure $ window .. "location"
data On a b = On a b
instance eqOn :: Eq a => Eq (On a b) where
eq (On x _) (On y _) = eq x y
instance ordOn :: Ord a => Ord (On a b) where
compare (On x _) (On y _) = compare x y
-- same as
-- https://github.com/purescript/purescript-arrays/blob/v5.3.1/src/Data/Array.purs#L715-L715
sortWith :: forall a b f. Functor f =>
Foldable f =>
Unfoldable f =>
Ord b =>
(a -> b) -> f a -> f a
sortWith f = map (\(On _ y) -> y) <<< OSeq.toUnfoldable <<< foldr (\x -> OSeq.insert (On (f x) x)) OSeq.empty
\ No newline at end of file
module Gargantext.Utils.QueryString where
import Data.Array
import Data.Maybe
import Data.String.Common (joinWith)
import Gargantext.Prelude
queryParam :: forall a. Show a => String -> a -> String
queryParam key value = key <> "=" <> show value
queryParamS :: String -> String -> String
queryParamS key value = key <> "=" <> value
mQueryParam :: forall a. Show a => String -> Maybe a -> String
mQueryParam _ Nothing = ""
mQueryParam key (Just v) = queryParam key v
mQueryParamS :: forall a. String -> (a -> String) -> Maybe a -> String
mQueryParamS _ _ Nothing = ""
mQueryParamS key mFunc (Just v) = queryParamS key $ mFunc v
joinQueryStrings :: Array String -> String
joinQueryStrings qs =
case uncons qs of
Nothing -> ""
Just { head, tail } -> "?" <> head <> (joinQS tail)
where
joinQS ys =
case uncons ys of
Nothing -> ""
Just { tail: ys } -> "&" <> (joinWith "&" ys)
module Gargantext.Utils.Seq where
module Gargantext.Utils.Seq (mapMaybe) where
import Data.Array as Array
import Data.Maybe
import Data.Sequence
import Data.Tuple
import Data.Maybe (Maybe, maybe)
import Data.Sequence (Seq, concatMap, empty, singleton)
import Gargantext.Prelude
import Gargantext.Prelude ((<<<))
mapMaybe :: forall a b. (a -> Maybe b) -> Seq a -> Seq b
mapMaybe f = go empty
where
go acc s =
case uncons s of
Nothing -> acc
Just (Tuple x xs) ->
case f x of
Nothing -> go acc xs
Just y -> go (cons y acc) xs
-- same as
-- https://github.com/purescript/purescript-arrays/blob/v5.3.1/src/Data/Array.purs#L715-L715
sortWith :: forall a b. Ord b => (a -> b) -> Seq a -> Seq a
sortWith f l = Array.toUnfoldable $ Array.sortBy (comparing f) $ Array.fromFoldable l
mapMaybe f = concatMap (maybe empty singleton <<< f)
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