{"id":19573936,"url":"https://github.com/hexresearch/reflex-material-bootstrap","last_synced_at":"2025-04-27T05:33:30.729Z","repository":{"id":99626881,"uuid":"97126151","full_name":"hexresearch/reflex-material-bootstrap","owner":"hexresearch","description":"GHCJS widgets for reflex-dom and material bootstrap ","archived":false,"fork":false,"pushed_at":"2018-01-11T13:30:33.000Z","size":416,"stargazers_count":10,"open_issues_count":2,"forks_count":3,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-04T21:39:47.560Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hexresearch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-13T13:34:02.000Z","updated_at":"2022-07-25T07:40:50.000Z","dependencies_parsed_at":"2023-04-15T19:32:49.909Z","dependency_job_id":null,"html_url":"https://github.com/hexresearch/reflex-material-bootstrap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexresearch%2Freflex-material-bootstrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexresearch%2Freflex-material-bootstrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexresearch%2Freflex-material-bootstrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexresearch%2Freflex-material-bootstrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hexresearch","download_url":"https://codeload.github.com/hexresearch/reflex-material-bootstrap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251094583,"owners_count":21535324,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T06:37:04.756Z","updated_at":"2025-04-27T05:33:30.723Z","avatar_url":"https://github.com/hexresearch.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"reflex-material-bootstrap\n=========================\n\nThis is factored out library of generic frontend widgets that are used in HexResearch projects. The library is built around\n[reflex-dom](https://github.com/reflex-frp/reflex-dom) and [Bootstrap Material](http://fezvrasta.github.io/bootstrap-material-design/bootstrap-elements.html).\n\nGHCJS configuration\n===================\n\nChecked configuration for stack:\n``` yaml\nresolver: lts-8.11\ncompiler: ghcjs-0.2.1.9008011_ghc-8.0.2\ncompiler-check: match-exact\nsetup-info:\n  ghcjs:\n    source:\n      ghcjs-0.2.1.9008011_ghc-8.0.2:\n        url: https://github.com/hexresearch/ghcjs-stack-dist/raw/master/ghcjs-0.2.1.9008011.tar.gz\n        sha1: a72a5181124baf64bcd0e68a8726e65914473b3b\n\npackages:\n- '.'\n- '../../reflex-material-bootstrap'\n- '../reports-manager-api'\n- location:\n    git: https://github.com/NCrashed/ghcjs-base\n    commit: 89c2d2fd9683fe31efac585c58d1cd909a65ba88\n  extra-dep: true\n- location:\n    git: git@github.com:reflex-frp/reflex.git\n    commit: 50305c797c41a27660b74f543e204e902c086bbf\n  extra-dep: true\n- location:\n    git: git@github.com:reflex-frp/reflex-dom.git\n    commit: 2bc47782128a9c71222816afca407997d47f043a\n  extra-dep: true\n  subdirs:\n    - reflex-dom\n    - reflex-dom-core\n- location:\n    git: git@github.com:ghcjs/ghcjs-ffiqq.git\n    commit: b52338c2dcd3b0707bc8aff2e171411614d4aedb\n  extra-dep: true\n\nextra-deps:\n- aeson-1.2.1.0\n- cabal-doctest-1.0.2\n- dependent-sum-template-0.0.0.6\n- ghcjs-dom-0.8.0.0\n- ghcjs-dom-jsffi-0.8.0.0\n- jsaddle-0.8.3.2\n- prim-uniq-0.1.0.1\n- ref-tf-0.4.0.1\n- zenc-0.1.1\n```\n\n* Tip: use `ghc-options: -dedupe -O2` to reduce size of resulted JS blob.\n* Tip: for production use Google Closure compiler with settings:\n``` bash\n# Copy application JS blob\ncp $(stack path --local-install-root)/bin/\u003cpackagename\u003e.jsexe/{all.js,all.js.externs} .\n# Copy all raw JS dependencies to not let optimizer to break your code\ncp ../\u003cpackagename\u003e-server/static/jquery-1.9.1.js .\ncp ../\u003cpackagename\u003e-server/static/bootstrap/js/bootstrap.min.js .\ncp ../\u003cpackagename\u003e-server/static/bootstrap/js/material.min.js .\ncp ../\u003cpackagename\u003e-server/static/bootstrap/js/ripples.min.js .\n# Compile with aggressive optimizations and turned off duplicate/undefined errors\nccjs all.js --compilation_level=ADVANCED_OPTIMIZATIONS \\\n  --externs=node \\\n  --externs=all.js.externs \\\n  --externs=bootstrap.min.js \\\n  --externs=material.min.js \\\n  --externs=ripples.min.js \\\n  --jscomp_off=duplicate \\\n  --jscomp_off=undefinedVars \\\n  \u003e all.min.js\n```\nThis tears down 12 MB JS bundle to 1 MB and then you can transfer it with enabled gzip on server.\nThat leads to 600 KB transferred to customer instead of original 12 MB.\n\nIndex page that is checked to be operational:\n``` HTML\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n  \u003chead\u003e\n    \u003cmeta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\"\u003e\n    \u003cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\"\u003e\n    \u003c!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --\u003e\n    \u003ctitle\u003eMy page\u003c/title\u003e\n\n    \u003c!-- Bootstrap --\u003e\n    \u003clink href=\"bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\"\u003e\n    \u003clink href=\"bootstrap/css/bootstrap-material-design.min.css\" rel=\"stylesheet\"\u003e\n    \u003clink href=\"bootstrap/css/ripples.min.css\" rel=\"stylesheet\"\u003e\n    \u003clink href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\"\u003e\n    \u003clink href=\"style.css\" rel=\"stylesheet\"\u003e\n\n    \u003c!-- Compiled app --\u003e\n    \u003cscript language=\"javascript\" src=\"all.js\"\u003e\u003c/script\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n  \u003c/body\u003e\n  \u003cscript language=\"javascript\" src=\"jquery-1.9.1.js\"\u003e\u003c/script\u003e\n  \u003cscript language=\"javascript\" src=\"bootstrap/js/bootstrap.min.js\"\u003e\u003c/script\u003e\n  \u003cscript language=\"javascript\" src=\"bootstrap/js/material.min.js\"\u003e\u003c/script\u003e\n  \u003cscript language=\"javascript\" src=\"bootstrap/js/ripples.min.js\"\u003e\u003c/script\u003e\n  \u003cscript language=\"javascript\" src=\"runmain.js\" defer\u003e\u003c/script\u003e\n  \u003cscript\u003e\n    $(document).ready(function(){\n        $.material.init();\n    });\n  \u003c/script\u003e\n\u003c/html\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhexresearch%2Freflex-material-bootstrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhexresearch%2Freflex-material-bootstrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhexresearch%2Freflex-material-bootstrap/lists"}