about summary refs log tree commit diff
path: root/gn/packages/javascript.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gn/packages/javascript.scm')
-rw-r--r--gn/packages/javascript.scm952
1 files changed, 637 insertions, 315 deletions
diff --git a/gn/packages/javascript.scm b/gn/packages/javascript.scm
index 7f9f35d..6ba75ca 100644
--- a/gn/packages/javascript.scm
+++ b/gn/packages/javascript.scm
@@ -8,8 +8,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system minify)
-  #:use-module (guix build-system trivial)
-  #:use-module ((srfi srfi-1) #:hide (zip)))
+  #:use-module (guix build-system trivial))
 
 ;; see color-make package for great example - also install-file and invoke
 
@@ -85,38 +84,6 @@ for programmers and scientists to use graph theory in their apps, whether it's
 for server-side analysis in a Node.js app or for a rich user interface.")
     (license license:expat)))
 
-(define-public javascript-cytoscape-3.17
-  (package
-    (inherit javascript-cytoscape)
-    (name "javascript-cytoscape")
-    (version "3.17.1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/cytoscape/cytoscape.js")
-              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0fp4bv3gq9vj0517h61jvg7bxk8fyrhrq0jr1v4d0lzp164sgxln"))))))
-
-(define-public javascript-cytoscape-2
-  (package
-    (inherit javascript-cytoscape)
-    (name "javascript-cytoscape")
-    (version "2.7.29")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/cytoscape/cytoscape.js")
-              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "00y0h6kdkw2x6lyf9c16fxmg8iagfl77dz8nqb337v3ljifkb4z8"))))))
-
 (define-public javascript-cytoscape-panzoom
   (package
     (name "javascript-cytoscape-panzoom")
@@ -278,37 +245,6 @@ positioned on or around Cytoscape elements.  It is useful for tooltips and
 overlays, for example.")
     (license license:expat)))
 
-(define-public js-cytoscape-svg-vendor-0.3.1
-  (package
-    (name "js-cytoscape-svg-vendor")
-    (version "0.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://unpkg.com/cytoscape-svg@" version
-                            "/cytoscape-svg.js"))
-        (sha256
-         (base32
-          "0ic0m91a4a4517c6f8nwf649yyq6xma57rxp8cyk4261qhk70494"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out  (assoc-ref %outputs "out"))
-                (dest (string-append out "//share/javascript")))
-           (mkdir-p dest)
-           (copy-file (assoc-ref %build-inputs "source")
-                      (string-append dest "/cytoscape-svg.js"))
-           #t))))
-    (home-page "https://kinimesi.github.io/cytoscape-svg")
-    (synopsis "Cytoscape.js extension to export the current graph view as an SVG")
-    (description
-     "A Cytoscape.js extension to export the current graph view as an SVG.")
-    (license license:gpl3)
-    (properties `((hidden? . #t)))))
-
 (define-public javascript-qtip2
   (package
     (name "javascript-qtip2")
@@ -373,6 +309,71 @@ Javascript library, adding sorting, paging and filtering abilities to plain HTML
 tables with minimal effort.")
     (license license:expat)))
 
+(define-public javascript-datatables-bootstrap5
+  (package
+    (name "javascript-datatables-bootstrap5")
+    (version "2.2.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/DataTables/Dist-DataTables-Bootstrap5.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0hx4m0fs0qkb73f1h3z4436dq8agrm67nib2lzac7pn8hfl09lll"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (targetdir (string-append out "/share/genenetwork2/javascript/DataTables"))
+                (source (assoc-ref %build-inputs "source")))
+           (copy-recursively source targetdir)))))
+    (propagated-inputs (list javascript-jquery-1))
+    (home-page "https://www.datatables.net/")
+    (synopsis "Tables plug-in for jQuery")
+    (description "DataTables is a table enhancing plug-in for the jQuery
+Javascript library, adding sorting, paging and filtering abilities to plain HTML
+tables with minimal effort.  This package comes with Bootstrap5 integration
+ files for styling.")
+    (license license:expat)))
+
+(define-public javascript-datatables-select
+  (package
+    (name "javascript-datatables-select")
+    (version "3.0.0") ; November 12, 2024
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DataTables/Dist-DataTables-Select.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "15czp4fhvijwc9jl961nmn8ad6ms30p3c8dgpda7l542aadca45x"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (targetdir (string-append out "/share/genenetwork2/javascript/DataTablesExtensions/select/"))
+                (source (assoc-ref %build-inputs "source")))
+           (copy-recursively source targetdir)))))
+    (propagated-inputs (list javascript-datatables-2))
+    (home-page "https://datatables.net/extensions/select/")
+    (synopsis "Select adds item selection capabilities to a DataTable.")
+    (description "Select adds item selection capabilities to a DataTable.  Items
+ can be rows, columns or cells, which can be selected independently, or together.
+  Item selection can be particularly useful in interactive tables where users
+ can perform some action on the table, such as editing rows or marking items to
+ perform an action on.")
+    (license license:expat)))
+
 (define-public javascript-datatables-scroller-style
   (package
     (name "javascript-datatables-scroller-style")
@@ -433,35 +434,40 @@ tables with minimal effort.")
     (description "Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on screen very quickly. Virtual rendering means is that only the visible portion of the table is drawn, while the scrolling container gives the visual impression that the whole table is visible, allowing excellent browser performance.")
     (license license:expat)))
 
-
 (define-public javascript-xterm
   (package
     (name "javascript-xterm")
-    (version "4.9.0") ; Jan 08 2021
+    (version "5.3.0") ; Feb 18 2024
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://cdn.jsdelivr.net/npm/xterm@" version
-                           "/lib/xterm.min.js"))
-       (file-name (string-append "xterm.min" version ".js"))
+       (uri
+        (string-append "https://registry.npmjs.org/xterm/-/xterm-"
+                       version
+                       ".tgz"))
        (sha256
-        (base32
-         "1ipk8l837pinl9151qcb39hfrjy5d7zzyf19nsfhv4wgavy8fcar"))))
-    (build-system trivial-build-system)
+        (base32 "11db21afvny4m8ar40jpbc5wb5kgx4wqcbha0w2ixbr8p1l82lhz"))))
+    (build-system minify-build-system)
     (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out (assoc-ref %outputs "out"))
-                (targetdir
-                 (string-append out "/share/genenetwork2/javascript/xterm"))
-                (source (assoc-ref %build-inputs "source")))
-           (mkdir-p targetdir)
-           (copy-file source (string-append targetdir "/xterm.min.js"))))))
-    (propagated-inputs `(("source" ,source)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'build) ; xterm.js is already minified
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; copy the minified files
+             (let* ((source (getcwd))
+                    (out (assoc-ref outputs "out"))
+                    (js (string-append out "/share/genenetwork2/javascript/xterm")))
+               (mkdir-p js)
+               (for-each
+                (lambda (filename)
+                  (install-file filename js))
+                (append
+                 (find-files (string-append source "/lib"))))))))))
+    (native-inputs `(("source" ,source)))
     (home-page "https://xtermjs.org/")
-    (synopsis "Javascript library that allows apps to bring fully-featured terminals in browsers.")
+    (synopsis
+     "Javascript library that allows apps to bring fully-featured terminals in browsers.")
     (description
      "Xterm.js is a front-end component written in TypeScript that lets applications bring fully-featured terminals to their users in the browser. It's used by popular projects such as VS Code, Hyper and Theia.")
     (license license:expat)))
@@ -470,37 +476,51 @@ tables with minimal effort.")
   (package
     (inherit javascript-xterm)
     (name "javascript-xterm-style")
-    (version "4.9.0") ; Jan 08 2021
+    (version "5.3.0") ; Feb 18 2024
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://cdn.jsdelivr.net/npm/xterm@" version
-                           "/css/xterm.min.css"))
-       (file-name (string-append "xterm.min" version ".css"))
+       (uri
+        (string-append "https://registry.npmjs.org/xterm/-/xterm-"
+                       version
+                       ".tgz"))
        (sha256
-        (base32
-         "0nc7ysmfngzy1q1x4sasgnd5x91pqc00lgkajynz2gdan1rwsfk3"))))
+        (base32 "11db21afvny4m8ar40jpbc5wb5kgx4wqcbha0w2ixbr8p1l82lhz"))))
+    (build-system minify-build-system)
     (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out (assoc-ref %outputs "out"))
-                (targetdir
-                 (string-append out "/share/genenetwork2/javascript/xterm"))
-                (source (assoc-ref %build-inputs "source")))
-           (mkdir-p targetdir)
-           (copy-file source (string-append targetdir "/xterm.min.css"))))))
+     `(#:javascript-files (list "css/xterm.css")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'rename-minified-css
+           (lambda* _
+             (for-each
+              (lambda (file)
+                (let* ((path-length (string-length file))
+                       (ext-length (string-length ".css.min.js")))
+                  (copy-recursively file
+                                    (string-replace file ".min.css" (- path-length ext-length)))))
+              (find-files (string-append (getcwd) "/guix/build")
+                          "\\.css\\.min\\.js$"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (js (string-append out "/share/genenetwork2/javascript/xterm")))
+               (mkdir-p js)
+               (for-each
+                (lambda (file)
+                  (install-file file js))
+                (find-files (string-append (getcwd) "/guix/build")
+                            "\\.min\\.css$"))))))))
     (native-inputs `(("source" ,source)))
     (synopsis "Style sheets for xtermjs")
     (description "Style sheets for xtermjs")
     (license license:expat)))
 
-
 (define-public javascript-xterm-addon-fit
   (package
     (inherit javascript-xterm)
     (name "javascript-xterm-addon-fit")
+    (build-system trivial-build-system)
     (version "0.5.0") ; Nov 16 2021
     (source
      (origin
@@ -509,7 +529,7 @@ tables with minimal effort.")
                    "/lib/xterm-addon-fit.min.js"))
        (sha256
         (base32
-         "0x47zj8wknisjjjqz6sasjn94nm803h5br8frypsbwhmdw6v9nak"))))
+         "0sx5cqbyww1n6n408z6hwirr9lifnl1lmdis9n07rg58bx70y6b3"))))
     (arguments
      `(#:modules ((guix build utils))
        #:builder
@@ -867,33 +887,6 @@ visualization components and a data-driven approach to DOM manipulation.")
                (dist (string-append source "/dist")))
           (copy-recursively dist targetdir)))))))
 
-(define-public javascript-d3js-4
-  (package
-    (inherit javascript-d3js)
-    (version "4.13.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/d3/d3/releases/download/v"
-                            version "/d3.zip"))
-        (sha256
-         (base32 "06yqgyvkpvh0lg7rsh4hjzq72fylkd8ziqcf7yhgy510x0mqla19"))))
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out (assoc-ref %outputs "out"))
-                (name "d3js")
-                (unzip (string-append (assoc-ref %build-inputs "unzip")
-                                      "/bin/unzip"))
-                (targetdir (string-append out "/share/genenetwork/javascript/" name))
-                (source (assoc-ref %build-inputs "source")))
-           (invoke unzip source)
-           (install-file "d3.js" targetdir)
-           (install-file "d3.min.js" targetdir)
-           (install-file "LICENSE" (string-append out "/share/doc/d3js-" ,version))))))))
-
 (define-public javascript-d3js-7
   (package
     (name "javascript-d3js-7")
@@ -1040,31 +1033,6 @@ not natively support it.")
 client-side, and is perfect for web apps that generates files on the client.")
     (license license:expat)))
 
-(define-public js-filesaver-1.3.2
-  (package
-    (inherit js-filesaver)
-    (name "js-filesaver")
-    (version "1.3.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/eligrey/FileSaver.js")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "02f34yr56i5fyppna52bhn6i9wj0zhvj4vp9vkg9v74yls1hdczz"))))
-    (arguments
-     `(#:javascript-files '("FileSaver.js")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-unminified-version
-           (lambda* (#:key outputs #:allow-other-keys)
-             (install-file "FileSaver.js"
-                           (string-append (assoc-ref outputs "out")
-                                          "/share/javascript"))
-             #t)))))))
-
 (define-public javascript-underscore
   (package
     (name "javascript-underscore")
@@ -1395,52 +1363,7 @@ a sample function, allowing for more complex calculations.")
     (arguments `(#:javascript-files '("dist/jstat.js")))
     (build-system minify-build-system)))
 
-(define-public javascript-ckeditor	; version 4
-  (package
-    (name "javascript-ckeditor")
-    (version "4.13.0")			; Sept. 26, 2019
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://download.cksource.com/CKEditor/CKEditor/CKEditor%20" version
-			   "/ckeditor_4.13.0_standard.zip"))
-       (sha256
-	(base32
-	 "1n2xynmbr2v4wm2g2vqcqd16n93phsbq4sqrnljzb7wzjq9svl36"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-	 (use-modules (guix build utils))
-	 (let* ((out (assoc-ref %outputs "out"))
-		(name "ckeditor")
-		(unzip (string-append (assoc-ref %build-inputs "unzip")
-				      "/bin/unzip"))
-		(targetdir
-		 (string-append (string-append out "/share/genenetwork2/javascript/" name)))
-		(source (assoc-ref %build-inputs "source")))
-	   (mkdir-p targetdir)
-	   (invoke unzip source)
-	   (copy-recursively "ckeditor" targetdir)))))
-    (native-inputs
-     `(("source" ,source)
-       ("unzip" ,unzip)))
-    (home-page "https://ckeditor.com/")
-    (synopsis "Smart WYSIWYG HTML editor")
-    (description
-     "CKEditor is a proven, enterprise-grade WYSIWYG HTML editor with wide
-browser compatibility, including legacy browsers.
-@enumerate
-@item Paste from Word and Excel, spell check, accessibility checker, tables.
-@item Autocomplete, mentions, widgets, code snippets, emoji plugins.
-@item Full control over content: HTML filtering, view source mode.
-@item Great accessibility: WCAG 2.0 AA and Section 508 compliant.
-@item Long-term support (LTS) until 2023.
-@end enumerate")
-    (license (list license:gpl2+
-		   license:lgpl2.1+
-		   license:mpl1.1)))) ; Any of these three
+ ; Any of these three
 
 (define-public javascript-parsley
   (package
@@ -1749,7 +1672,7 @@ experience.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/BonfaceKilz/Dist-Purestript-Genome-Browser")
+             (url "https://github.com/genenetwork/purescript-genetics-browser")
              (commit "93d45a55ca5053bb87b6d4627ae5c7d973c046ea")))
        (file-name (git-file-name name version))
        (sha256
@@ -1766,7 +1689,7 @@ experience.")
                 (source (assoc-ref %build-inputs "source")))
            (copy-recursively source targetdir)))))
     (native-inputs `(("source" ,source)))
-    (home-page "https://github.com/chfi/purescript-genetics-browser")
+    (home-page "https://github.com/genenetwork/purescript-genetics-browser")
     (synopsis "Dist files for the purescript genetics browser")
     (description
      "Dist files for the purescript genetics browser")
@@ -1806,61 +1729,6 @@ experience.")
 widgets, and themes built on top of the jQuery JavaScript Library.")
     (license license:expat)))
 
-(define-public js-jquery-ui
-  (package
-    (inherit javascript-jquery-ui)
-    (name "js-jquery-ui")
-    (arguments `(#:javascript-files '("ui/jquery-ui.js")))
-    (build-system minify-build-system)))
-
-(define-public js-popper
-  (package
-    (name "js-popper")
-    (version "2.0.6")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/popperjs/popper-core")
-              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0lzy981p9nja2l3xa2zvals6q31v3bzpxxa85yn9pm7wkj3vglf2"))))
-    (build-system minify-build-system)
-    (arguments
-     `(#:javascript-files '("src/popper.js")))
-    (home-page "https://popper.js.org/")
-    (synopsis "Tooltip and popover positioning engine")
-    (description
-     "Given an element, such as a button, and a tooltip element describing it,
-Popper will automatically put the tooltip in the right place near the button.")
-    (license license:expat)))
-
-(define-public js-popper-1.12.9
-  (package
-    (name "js-popper")
-    (version "1.12.9")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/popperjs/popper-core")
-              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0j7gfb7agvvzxv09vq8yr5h04pls5a8md2qw62qyn20112p0hdzs"))))
-    (build-system minify-build-system)
-    (arguments
-     `(#:javascript-files '("dist/umd/popper.js")))
-    (home-page "https://popper.js.org/")
-    (synopsis "Tooltip and popover positioning engine")
-    (description
-     "Given an element, such as a button, and a tooltip element describing it,
-Popper will automatically put the tooltip in the right place near the button.")
-    (license license:expat)))
-
 (define-public javascript-zxcvbn
   (package
    (name "javascript-zxcvbn")
@@ -1924,7 +1792,6 @@ Popper will automatically put the tooltip in the right place near the button.")
    (description "A simple, lightweight jQuery plugin for reading, writing and deleting cookies. No longer maintained, superseded by JS Cookie: https://github.com/js-cookie/js-cookie")
    (license license:expat)))
 
-
 ;; See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32916 on why font-awesome
 ;; cannot be upstreamed
 (define-public javascript-font-awesome
@@ -1961,7 +1828,6 @@ Popper will automatically put the tooltip in the right place near the button.")
 vector graphics.")
     (license license:silofl1.1)))
 
-
 (define-public javascript-htmx
   (package
     (name "javascript-htmx")
@@ -2028,64 +1894,79 @@ vector graphics.")
 
 (define-public javascript-marked-highlight
   (package
-   (name "javascript-marked-highlight")
-   (version "2.0.6")
-   (source
-    (origin
-     (method url-fetch)
-     (uri (string-append "https://cdn.jsdelivr.net/npm/marked-highlight@" version "/lib/index.umd.min.js"))
-     (sha256
-      (base32
-       "087qcy77fm3r7dl6w0mxsqygmdpimrmksw78r4wkkkjdx9x9dshf"))))
-   (build-system trivial-build-system)
-   (arguments
-    `(#:modules ((guix build utils))
-      #:builder
-      (begin
-	(use-modules (guix build utils))
-	(let* ((out (assoc-ref %outputs "out"))
-	       (targetdir
-		(string-append out "/share/genenetwork2/javascript/marked"))
-	       (source (assoc-ref %build-inputs "source")))
-	  (mkdir-p targetdir)
-	  (copy-file source (string-append targetdir "/marked-highlight.js"))))))
-   (native-inputs `(("source" ,source)))
-   (home-page "https://github.com/markedjs/marked-highlight")
-   (synopsis "Highlight code blocks.")
-   (description
-    "Add code highlighting to marked.")
-   (license license:expat)))
+    (name "javascript-marked-highlight")
+    (version "2.0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/markedjs/marked-highlight/archive/refs/tags/v"
+             version ".tar.gz"))
+       (sha256
+        (base32 "14pvaknic0pwh1ll7i0z66mi2gviww35palmk03xidyywlbvwklr"))))
+    (build-system minify-build-system)
+    (arguments
+     `(#:javascript-files (list "src/index.js")
+       #:phases (modify-phases %standard-phases
+                  (add-before 'install 'rename-minified-js
+                    (lambda* _
+                      (for-each (lambda (file)
+                                  ;; rename to "marked-highlight.js"
+                                  (copy-recursively file
+                                                    (string-append (dirname
+                                                                    file)
+                                                     "/marked-highlight.js")))
+                                (find-files (string-append (getcwd)
+                                                           "/guix/build")
+                                            "\\.min\\.js$"))))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (use-modules (guix build utils))
+                      (let* ((out (assoc-ref outputs "out"))
+                             (targetdir (string-append out
+                                         "/share/genenetwork2/javascript/marked")))
+                        (mkdir-p targetdir)
+                        (for-each (lambda (file)
+                                    (install-file file targetdir))
+                                  (find-files (string-append (getcwd)
+                                                             "/guix/build")
+                                              "marked-highlight\\.js$"))))))))
+    (home-page "https://github.com/markedjs/marked-highlight")
+    (synopsis "Code highlighting extension for Marked")
+    (description
+     "This package provides a plugin for the Marked Markdown parser that adds
+syntax highlighting support for fenced code blocks.")
+    (license license:expat)))
 
 (define-public javascript-ace
   (package
-   (name "javascript-ace")
-   (version "1.31.1")
-   (source
-    (origin
-     (method git-fetch)
-     (uri (git-reference
-	   (url "https://github.com/ajaxorg/ace-builds.git")
-	   (commit (string-append "v" version))))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "08rfyrjfjjgb42x4if5qqfyvv8ag2qmf6vsbs7qrcnzgrac66m35"))))
-   (build-system trivial-build-system)
-   (arguments
-    `(#:modules ((guix build utils))
-      #:builder
-      (begin
-	(use-modules (guix build utils))
-	(let* ((out (assoc-ref %outputs "out"))
-	       (targetdir (string-append out "/share/genenetwork2/javascript/ace"))
-	       (source (assoc-ref %build-inputs "source"))
-	       (dist (string-append source "/src-min-noconflict")))
-	  (copy-recursively dist targetdir)))))
-   (native-inputs `(("source" ,source)))
-   (home-page "https://github.com/ajaxorg/ace-builds")
-   (synopsis "Ace is a code editor written in JavaScript.")
-   (description
-    "Ace is a code editor written in JavaScript. ")
-   (license license:expat)))
+    (name "javascript-ace")
+    (version "1.31.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ajaxorg/ace-builds.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "08rfyrjfjjgb42x4if5qqfyvv8ag2qmf6vsbs7qrcnzgrac66m35"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let* ((out (assoc-ref %outputs "out"))
+                          (targetdir (string-append out
+                                      "/share/genenetwork2/javascript/ace"))
+                          (source (assoc-ref %build-inputs "source"))
+                          (dist (string-append source "/src-min-noconflict")))
+                     (copy-recursively dist targetdir)))))
+    (native-inputs `(("source" ,source)))
+    (home-page "https://github.com/ajaxorg/ace-builds")
+    (synopsis "Ace is a code editor written in JavaScript.")
+    (description "Ace is a code editor written in JavaScript. ")
+    (license license:bsd-3)))
 
 (define-public javascript-uikit
   (package
@@ -2178,3 +2059,444 @@ for developing fast and powerful web interfaces.")
    (description
     "JavaScript plugin for finding links in plain-text and highlightinging links within strings that contain HTML markup.")
    (license license:expat)))
+
+(define-public javascript-diff2html
+  (package
+    (name "javascript-diff2html")
+    (version "3.4.48")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://cdn.jsdelivr.net/npm/diff2html@" version
+                           "/bundles/js/diff2html.min.js"))
+       (sha256
+        (base32 "02sqk3i5l1viw2dq2c2z4ja9mgsn9cks9l4ln1fsw4y91fw1m6n5"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let* ((source (assoc-ref %build-inputs "source"))
+                          (out (assoc-ref %outputs "out"))
+                          (targetdir (string-append out
+                                      "/share/genenetwork2/javascript/diff2html")))
+                     (mkdir-p targetdir)
+                     (copy-file source
+                                (string-append targetdir "/diff2html.min.js"))))))
+    (native-inputs `(("source" ,source)))
+    (home-page "https://diff2html.xyz/")
+    (synopsis "Diff parser and pretty html generator.")
+    (description
+     "diff2html generates pretty HTML diffs from git diff or unified diff output.")
+    (license license:expat)))
+
+(define-public javascript-diff2html-ui
+  (package
+    (inherit javascript-diff2html)
+    (name "javascript-diff2html-ui")
+    (version "3.4.48")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://cdn.jsdelivr.net/npm/diff2html@" version
+                           "/bundles/css/diff2html.min.css"))
+       (sha256
+        (base32 "0y05qm8si1nd5l9q67il36p6q1xkbffrzlp7q6pli9sraghlmh10"))))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let* ((out (assoc-ref %outputs "out"))
+                          (targetdir (string-append out
+                                      "/share/genenetwork2/javascript/diff2html"))
+                          (source (assoc-ref %build-inputs "source")))
+                     (mkdir-p targetdir)
+                     (copy-file source
+                                (string-append targetdir "/diff2html.min.css"))))))
+    (native-inputs `(("source" ,source)))))
+
+(define-public javascript-diff
+  (package
+    (name "javascript-diff")
+    (version "5.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://cdn.jsdelivr.net/npm/diff@" version
+                           "/dist/diff.min.js"))
+       (sha256
+        (base32 "0zvbllgfyq8x3hjkygc9fd0gqqkbvz6qa02mcilvs6djfj9vsa9s"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let* ((source (assoc-ref %build-inputs "source"))
+                          (out (assoc-ref %outputs "out"))
+                          (targetdir (string-append out
+                                      "/share/genenetwork2/javascript/jsdiff")))
+                     (mkdir-p targetdir)
+                     (copy-file source
+                                (string-append targetdir "/diff.min.js"))))))
+    (native-inputs `(("source" ,source)))
+    (home-page "https://github.com/kpdecker/jsdiff#readme")
+    (synopsis "A JavaScript text differencing implementation. ")
+    (description "A JavaScript text differencing implementation.")
+    (license license:bsd-3)))
+
+(define-public javascript-highlight
+  (package
+    (name "javascript-highlight")
+    (version "11.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/" version
+             "/highlight.min.js"))
+       (sha256
+        (base32 "0cpdabxn5hbij3ci5gb769mi0qmmxvgqxi6d1x2ay1y4j2pgj7j7"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let* ((out (assoc-ref %outputs "out"))
+                          (targetdir (string-append out
+                                      "/share/genenetwork2/javascript/highlight"))
+                          (source (assoc-ref %build-inputs "source")))
+                     (mkdir-p targetdir)
+                     (copy-file source
+                                (string-append targetdir "/highlight.min.js"))))))
+    (native-inputs `(("source" ,source)))
+    (home-page "https://highlightjs.org/")
+    (synopsis "Highlight.js is a syntax highlighter written in JavaScript.")
+    (description
+     "JavaScript syntax highlighter with language auto-detection and zero dependencies.")
+    (license license:bsd-3)))
+
+(define-public javascript-highlight-ui
+  (package
+    (inherit javascript-highlight)
+    (name "javascript-highlight-ui")
+    (version "11.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/" version
+             "/styles/default.min.css"))
+       (sha256
+        (base32 "1ky70fgj8ixlr9h01w4g3fyj6yl8khqyfchmqibc71hxjb00mppv"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let* ((out (assoc-ref %outputs "out"))
+                          (targetdir (string-append out
+                                      "/share/genenetwork2/javascript/highlight"))
+                          (source (assoc-ref %build-inputs "source")))
+                     (mkdir-p targetdir)
+                     (copy-file source
+                                (string-append targetdir "/default.min.css"))))))
+    (native-inputs `(("source" ,source)))))
+
+(define-public javascript-ckeditor	; version 4
+  (package
+    (name "javascript-ckeditor")
+    (version "4.13.0")			; Sept. 26, 2019
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://download.cksource.com/CKEditor/CKEditor/CKEditor%20" version
+			   "/ckeditor_4.13.0_standard.zip"))
+       (sha256
+	(base32
+	 "1n2xynmbr2v4wm2g2vqcqd16n93phsbq4sqrnljzb7wzjq9svl36"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+	 (use-modules (guix build utils))
+	 (let* ((out (assoc-ref %outputs "out"))
+		(name "ckeditor")
+		(unzip (string-append (assoc-ref %build-inputs "unzip")
+				      "/bin/unzip"))
+		(targetdir
+		 (string-append (string-append out "/share/genenetwork2/javascript/" name)))
+		(source (assoc-ref %build-inputs "source")))
+	   (mkdir-p targetdir)
+	   (invoke unzip source)
+	   (copy-recursively "ckeditor" targetdir)))))
+    (native-inputs
+     `(("source" ,source)
+       ("unzip" ,unzip)))
+    (home-page "https://ckeditor.com/")
+    (synopsis "Smart WYSIWYG HTML editor")
+    (description
+     "CKEditor is a proven, enterprise-grade WYSIWYG HTML editor with wide
+browser compatibility, including legacy browsers.
+@enumerate
+@item Paste from Word and Excel, spell check, accessibility checker, tables.
+@item Autocomplete, mentions, widgets, code snippets, emoji plugins.
+@item Full control over content: HTML filtering, view source mode.
+@item Great accessibility: WCAG 2.0 AA and Section 508 compliant.
+@item Long-term support (LTS) until 2023.
+@end enumerate")
+    (license (list license:gpl2+
+		   license:lgpl2.1+
+		   license:mpl1.1))))
+
+(define-public javascript-cytoscape-3.17
+  (package
+    (inherit javascript-cytoscape)
+    (name "javascript-cytoscape")
+    (version "3.17.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/cytoscape/cytoscape.js")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0fp4bv3gq9vj0517h61jvg7bxk8fyrhrq0jr1v4d0lzp164sgxln"))))))
+
+(define-public js-cytoscape-svg-vendor-0.3.1
+  (package
+    (name "js-cytoscape-svg-vendor")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://unpkg.com/cytoscape-svg@" version
+                            "/cytoscape-svg.js"))
+        (sha256
+         (base32
+          "0ic0m91a4a4517c6f8nwf649yyq6xma57rxp8cyk4261qhk70494"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out  (assoc-ref %outputs "out"))
+                (dest (string-append out "//share/javascript")))
+           (mkdir-p dest)
+           (copy-file (assoc-ref %build-inputs "source")
+                      (string-append dest "/cytoscape-svg.js"))
+           #t))))
+    (home-page "https://kinimesi.github.io/cytoscape-svg")
+    (synopsis "Cytoscape.js extension to export the current graph view as an SVG")
+    (description
+     "A Cytoscape.js extension to export the current graph view as an SVG.")
+    (license license:gpl3)
+    (properties `((hidden? . #t)))))
+
+(define-public javascript-datatables-scroller-style-2.4.3
+  (package
+    (inherit javascript-datatables-scroller-style)
+    (name "javascript-datatables-scroller-style-2.4.3")
+    (version "2.4.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/DataTables/Dist-DataTables-Scroller-DataTables.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1b7m8xwbr05hglfy00kzv1vmqvvp9y8n1kyb3ka95gf7sllihhf9"))))
+    (propagated-inputs
+     (modify-inputs
+      (package-propagated-inputs javascript-datatables-scroller-style)
+      (delete "javascript-datatables")))))
+
+(define-public javascript-datatables-scroller-style-2.4
+  javascript-datatables-scroller-style-2.4.3)
+
+(define-public javascript-datatables-scroller-style-2
+  javascript-datatables-scroller-style-2.4)
+
+(define-public javascript-datatables-scroller-2.4.3
+  (package
+    (inherit javascript-datatables-scroller)
+    (name "javascript-datatables-scroller-2.4.3")
+    (version "2.4.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/DataTables/Dist-DataTables-Scroller.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0ziwnwc0xbf8rsm6ibikc3a49hyq18l8ya0wmrwyba24pixhajxn"))))
+    (propagated-inputs
+     (modify-inputs
+      (package-propagated-inputs javascript-datatables-scroller-style)
+      (delete "javascript-datatables")
+      (delete "javascript-datatables-scroller-style")))))
+
+(define-public javascript-datatables-scroller-2.4
+  javascript-datatables-scroller-2.4.3)
+
+(define-public javascript-datatables-scroller-2
+  javascript-datatables-scroller-2.4)
+
+(define-public javascript-datatables-buttons-3.2.2
+  (package
+    (inherit javascript-datatables-buttons)
+    (name "javascript-datatables-buttons-3.2.2")
+    (version "3.2.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/DataTables/Dist-DataTables-Buttons.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1186xxj6yhjqh0p13nczj25pc3c15n1f5nirl6fy649rhp4q26xc"))))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs javascript-datatables-buttons)
+       (delete "javascript-datatables")))))
+
+(define-public javascript-datatables-buttons-3.2
+  javascript-datatables-buttons-3.2.2)
+
+(define-public javascript-datatables-buttons-3
+  javascript-datatables-buttons-3.2)
+
+(define-public javascript-jquery-1.12.4
+  (package
+    (inherit javascript-jquery)
+    (name "javascript-jquery-1.12.4")
+    (version "1.12.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jquery/jquery.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "02qgvwsyvvr6liijj1xyypq02svbwjlk8m9yr9dgd4hzfs50rlhq"))))))
+
+(define-public javascript-jquery-1.12 javascript-jquery-1.12.4)
+
+(define-public javascript-jquery-1 javascript-jquery-1.12)
+
+(define-public javascript-d3js-4
+  (package
+    (inherit javascript-d3js)
+    (version "4.13.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/d3/d3/releases/download/v"
+                            version "/d3.zip"))
+        (sha256
+         (base32 "06yqgyvkpvh0lg7rsh4hjzq72fylkd8ziqcf7yhgy510x0mqla19"))))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (name "d3js")
+                (unzip (string-append (assoc-ref %build-inputs "unzip")
+                                      "/bin/unzip"))
+                (targetdir (string-append out "/share/genenetwork/javascript/" name))
+                (source (assoc-ref %build-inputs "source")))
+           (invoke unzip source)
+           (install-file "d3.js" targetdir)
+           (install-file "d3.min.js" targetdir)
+           (install-file "LICENSE" (string-append out "/share/doc/d3js-" ,version))))))))
+
+(define-public js-filesaver-1.3.2
+  (package
+    (inherit js-filesaver)
+    (name "js-filesaver")
+    (version "1.3.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/eligrey/FileSaver.js")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "02f34yr56i5fyppna52bhn6i9wj0zhvj4vp9vkg9v74yls1hdczz"))))
+    (arguments
+     `(#:javascript-files '("FileSaver.js")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-unminified-version
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "FileSaver.js"
+                           (string-append (assoc-ref outputs "out")
+                                          "/share/javascript"))
+             #t)))))))
+
+(define-public js-popper-1.12.9
+  (package
+    (name "js-popper")
+    (version "1.12.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/popperjs/popper-core")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0j7gfb7agvvzxv09vq8yr5h04pls5a8md2qw62qyn20112p0hdzs"))))
+    (build-system minify-build-system)
+    (arguments
+     `(#:javascript-files '("dist/umd/popper.js")))
+    (home-page "https://popper.js.org/")
+    (synopsis "Tooltip and popover positioning engine")
+    (description
+     "Given an element, such as a button, and a tooltip element describing it,
+Popper will automatically put the tooltip in the right place near the button.")
+    (license license:expat)))
+
+(define-public javascript-datatables-2.2.2
+  (package
+    (name "javascript-datatables-2.2.2")
+    (version "2.2.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/DataTables/Dist-DataTables.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1pzpkpybcf9p81j8afyhrmq11l9lskzxhikdv7h7sb55vx98xn9s"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (targetdir (string-append out "/share/genenetwork2/javascript/DataTables"))
+                (source (assoc-ref %build-inputs "source")))
+           (copy-recursively source targetdir)))))
+    (propagated-inputs (list javascript-jquery-1))
+    (home-page "https://www.datatables.net/")
+    (synopsis "Tables plug-in for jQuery")
+    (description "DataTables is a table enhancing plug-in for the jQuery
+Javascript library, adding sorting, paging and filtering abilities to plain HTML
+tables with minimal effort.")
+    (license license:expat)))
+
+(define-public javascript-datatables-2.2 javascript-datatables-2.2.2)
+
+(define-public javascript-datatables-2 javascript-datatables-2.2)