Add agenda

pull/645/head
Tienson Qin 2020-04-03 16:09:45 +08:00
parent e2bf23ab0f
commit f3bf9232c5
14 changed files with 213 additions and 415 deletions

View File

@ -15,7 +15,7 @@
"browserfs": "^1.4.3",
"dev": "^0.1.3",
"isomorphic-git": "^1.1.2",
"mldoc_org": "^0.2.0",
"mldoc_org": "^0.2.3",
"purgecss": "^2.1.0",
"react": "^16.12.0",
"react-dom": "^16.12.0",

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta content="minimum-scale=1, initial-scale=1, width=device-width, shrink-to-fit=no" name="viewport">
<link href="/static/css/tailwind.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tailwindcss/ui@latest/dist/tailwind-ui.min.css">
<link href="/static/css/org.css" rel="stylesheet">
<link href="/static/css/style.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&amp;display=swap" rel="stylesheet">

View File

@ -30,8 +30,6 @@
font-size: medium;
font-weight: bold;
margin-top:0; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; margin-left: 6px; }
.timestamp-kwd { color: #5f9ea0; margin-left: 6px; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
@ -211,15 +209,15 @@ dt { font-weight: bold; }
/* scroll-bg */
.scroll-background {
height: 400%; width: 400%; top: -25%; left: -100%; background-size: 800px auto; background-image: url('/img/hero-pattern-lg.png');
height: 400%; width: 400%; top: -25%; left: -100%; background-size: 800px auto; background-image: url('/static/img/hero-pattern-lg.png');
}
.angled-background {
background-image: url('/img/angled-background.svg'); background-size: 100% auto; background-position: -5px -5px;
background-image: url('/static/img/angled-background.svg'); background-size: 100% auto; background-position: -5px -5px;
}
.scroll-background-2 {
height: 800%; width: 400%; top: -100%; left: -100%; background-size: 400px auto; background-image: url('/img/hero-pattern-lg.png');
height: 800%; width: 400%; top: -100%; left: -100%; background-size: 400px auto; background-image: url('/static/img/hero-pattern-lg.png');
}
@-webkit-keyframes scrollSmall {0%{transform:rotate(-13deg) translateY(0)}to{transform:rotate(-13deg) translateY(-639px)}}
@ -235,23 +233,6 @@ dt { font-weight: bold; }
.scroll-bg{-webkit-animation-name:scrollSmall;animation-name:scrollSmall;-webkit-animation-duration:15s;animation-duration:15s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}
@media (min-width:1024px){.scroll-bg{-webkit-animation-name:scrollLarge;animation-name:scrollLarge;-webkit-animation-duration:35s;animation-duration:35s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}}
.text-gray-700 {
color: #374151;
}
.form-input {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: #fff;
border-color: #d2d6dc;
border-width: 1px;
border-radius: .375rem;
padding: .5rem .75rem;
font-size: 1rem;
line-height: 1.5;
}
h1, h2, h3, h4, h5, h6 {
font-weight: bold;
}

View File

@ -6,11 +6,9 @@
[frontend.state :as state]
[clojure.string :as string]
[frontend.format.org-mode :as org]
[frontend.components.sidebar :as sidebar]))
(rum/defc agenda
[]
(sidebar/sidebar [:div "Agenda"]))
[frontend.components.sidebar :as sidebar]
[frontend.db :as db]
[frontend.ui :as ui]))
(rum/defc timestamps-cp
[timestamps]
@ -30,73 +28,94 @@
html (org/inline-list->html title-json)]
(util/raw-html html)))
(rum/defc children-cp
[children]
(let [children-json (js/JSON.stringify (clj->js children))
html (org/json->html children-json)]
(util/raw-html html)))
(rum/defc marker-cp
[marker]
[:span {:class (str "marker-" (string/lower-case marker))
:style {:margin-left 8}}
(if (contains? #{"DOING" "IN-PROGRESS"} marker)
(str " (" marker ")"))])
(if marker
[:span {:class (str "marker-" (string/lower-case marker))
:style {:margin-left 8}}
(if (contains? #{"DOING" "IN-PROGRESS"} marker)
(str " (" marker ")"))]))
(rum/defc tags-cp
[tags]
[:span
(for [tag tags]
[:span.tag {:key tag}
(for [{:keys [tag/name]} tags]
[:span.tag {:key name}
[:span
tag]])])
name]])])
;; (rum/defc agenda
;; [tasks]
;; [:span "TBD"]
;; ;; [:div#agenda
;; ;; (if (seq tasks)
;; ;; (for [[section-name tasks] tasks]
;; ;; [:div.section {:key (str "section-" section-name)}
;; ;; [:h3 section-name]
;; ;; (mui/list
;; ;; (for [[idx {:keys [marker title priority level tags children timestamps meta]}] (util/indexed (block/sort-tasks tasks))]
;; ;; (mui/list-item
;; ;; {:key (str "task-" section-name "-" idx)
;; ;; :style {:padding-left 8
;; ;; :padding-right 8}}
;; ;; [:div.column
;; ;; [:div.row {:style {:align-items "center"}}
;; ;; (let [marker (case marker
;; ;; (list "DOING" "IN-PROGRESS" "TODO")
;; ;; (mui/checkbox {:checked false
;; ;; :on-change (fn [_]
;; ;; ;; FIXME: Log timestamp
;; ;; (handler/check marker (:pos meta)))
;; ;; :color "primary"
;; ;; :style {:padding 0}})
(rum/defq agenda <
{:q (fn [state] (db/sub-agenda))}
[state tasks]
(let [tasks-ids (db/seq-flatten tasks)
tasks (db/pull-many tasks-ids)]
(sidebar/sidebar
[:div#agenda
[:h2.mb-3 "Agenda"]
(if (seq tasks)
[:div.ml-1
(let [parent-tasks (block/group-by-parent (block/sort-tasks tasks))]
(for [[parent tasks] parent-tasks]
(let [parent (cond
(string? parent)
parent
;; ;; "WAIT"
;; ;; [:span {:style {:font-weight "bold"}}
;; ;; "WAIT"]
(and (map? parent)
(:label parent))
(title-cp (:label parent))
;; ;; "DONE"
;; ;; (mui/checkbox {:checked true
;; ;; :on-change (fn [_]
;; ;; ;; FIXME: rollback to the last state if exists.
;; ;; ;; it must not be `TODO`
;; ;; (handler/uncheck (:pos meta)))
;; ;; :color "primary"
;; ;; :style {:padding 0}})
:else
"uncategorized")]
[:div.mt-10
[:h4.mb-3.text-gray-500 parent]
(for [{:heading/keys [uuid marker title priority level tags children timestamps meta] :as task} tasks]
[:div.mb-2
{:key (str "task-" uuid)
:style {:padding-left 8
:padding-right 8}}
[:div.column
[:div.row {:style {:align-items "center"}}
(case marker
(list "DOING" "IN-PROGRESS" "TODO")
(ui/checkbox {:on-change (fn [_]
;; FIXME: Log timestamp
;; (handler/check marker (:pos meta))
)})
;; ;; nil)]
;; ;; (if priority
;; ;; (mui/badge {:badge-content (string/lower-case priority)
;; ;; :overlay "circle"}
;; ;; marker)
;; ;; marker))
"WAIT"
[:span {:style {:font-weight "bold"}}
"WAIT"]
;; ;; [:div.row {:style {:margin-left 8}}
;; ;; (title-cp title)
;; ;; (marker-cp marker)
;; ;; (when (seq tags)
;; ;; (tags-cp tags))]]
;; ;; (when (seq timestamps)
;; ;; (timestamps-cp timestamps))
;; ;; ])))])
;; ;; "Empty")]
;; )
"DONE"
(do
(prn marker)
(ui/checkbox {:checked true
:on-change (fn [_]
;; FIXME: Log timestamp
;; (handler/uncheck marker (:pos meta))
)}))
nil)
[:div.row.ml-2
(if priority
[:span.priority.mr-1
(str "#[" priority "]")])
(title-cp title)
(marker-cp marker)
(when (seq tags)
(tags-cp tags))]]
(when (seq timestamps)
(timestamps-cp timestamps))
;; FIXME: parse error
;; (when (seq children)
;; (children-cp children))
]])])))]
"Empty")])))

View File

@ -30,14 +30,12 @@
suffix (last (string/split path #"\."))]
(sidebar/sidebar
(if (and suffix (contains? #{"md" "markdown" "org"} suffix))
[:div#content.flex.justify-center
[:div.m-6.flex-1 {:style {:position "relative"
:max-width 800}}
[:a {:href (str "/file/" encoded-path "/edit")}
"edit"]
(if content
(util/raw-html (format/to-html content suffix))
"Loading ...")]]
[:div#content
[:a {:href (str "/file/" encoded-path "/edit")}
"edit"]
(if content
(util/raw-html (format/to-html content suffix))
"Loading ...")]
[:div "File " suffix " is not supported."]))))
(defn- count-newlines
@ -54,25 +52,24 @@
commit-message (get state ::commit-message)
[_encoded-path path] (get-path state)]
(sidebar/sidebar
[:div#content.flex.justify-center
[:div.m-6.flex-1 {:style {:max-width 800}}
[:h3.mb-2 (str "Update " path)]
[:textarea
{:rows (+ 3 (count-newlines @content))
:style {:min-height 300}
:default-value initial-content
:on-change #(reset! content (.. % -target -value))
:auto-focus true}]
[:div.mt-1.mb-1.relative.rounded-md.shadow-sm
[:input.form-input.block.w-full.sm:text-sm.sm:leading-5
{:placeholder "Commit message"
:on-change (fn [e]
(reset! commit-message (util/evalue e)))}]]
(ui/button "Save" (fn []
(when (and (not (string/blank? @content))
(not (= initial-content
@content)))
(let [commit-message (if (string/blank? @commit-message)
(str "Update " path)
@commit-message)]
(handler/alter-file path commit-message @content)))))]])))
[:div#content
[:h3.mb-2 (str "Update " path)]
[:textarea
{:rows (+ 3 (count-newlines @content))
:style {:min-height 300}
:default-value initial-content
:on-change #(reset! content (.. % -target -value))
:auto-focus true}]
[:div.mt-1.mb-1.relative.rounded-md.shadow-sm
[:input.form-input.block.w-full.sm:text-sm.sm:leading-5
{:placeholder "Commit message"
:on-change (fn [e]
(reset! commit-message (util/evalue e)))}]]
(ui/button "Save" (fn []
(when (and (not (string/blank? @content))
(not (= initial-content
@content)))
(let [commit-message (if (string/blank? @commit-message)
(str "Update " path)
@commit-message)]
(handler/alter-file path commit-message @content)))))])))

View File

@ -23,7 +23,7 @@
[:div
[:img.h-6.lg:h-8.xl:h-9
{:alt "Gitnotes",
:src "/img/tailwindui-logo-on-dark.svg"}]]
:src "/static/img/tailwindui-logo-on-dark.svg"}]]
[:div
[:a.text-sm.font-semibold.text-white.focus:outline-none.focus:underline
{:href (str config/api "login/github")}
@ -55,7 +55,7 @@
{:href "https://twitter.com/adamwathan"}]
[:div.flex-shrink-0
[:img.h-12.w-12.rounded-full.border-2.border-white
{:alt "", :src "/img/adam.jpg"}]]
{:alt "", :src "/static/img/adam.jpg"}]]
[:div.ml-3
[:p.font-semibold.text-white.leading-tight "Adam Wathan"]
[:p.text-sm.text-gray-500.leading-tight
@ -64,7 +64,7 @@
{:href "https://twitter.com/steveschoger"}]
[:div.flex-shrink-0
[:img.h-12.w-12.rounded-full.border-2.border-white
{:alt "", :src "/img/steve.jpg"}]]
{:alt "", :src "/static/img/steve.jpg"}]]
[:div.ml-3
[:p.font-semibold.text-white.leading-tight "Steve Schoger"]
[:p.text-sm.text-gray-500.leading-tight

View File

@ -20,21 +20,24 @@
(rum/defcs add-repo < (rum/local "https://github.com/" ::repo-url)
[state]
(let [repo-url (get state ::repo-url)]
(let [prefix "https://github.com/"
repo-url (get state ::repo-url)]
[:div.p-8.flex.items-center.justify-center.bg-white
[:div.w-full.max-w-xs.mx-auto
[:div
[:label.block.text-sm.font-medium.leading-5.text-gray-700
{:for "Repo"}
"Specify your repo: "]
[:div.mt-2.mb-2.relative.rounded-md.shadow-sm
[:input.form-input.block.w-full.sm:text-sm.sm:leading-5
{:auto-focus true
:placeholder "https://github.com/yourname/repo"
:value @repo-url
:on-change (fn [e]
(reset! repo-url (util/evalue e)))}]]]
[:div
[:h2 "Specify your repo:"]
[:div.mt-2.mb-2.relative.rounded-md.shadow-sm
[:div.absolute.inset-y-0.left-0.pl-3.flex.items-center.pointer-events-none
[:span.text-gray-500.sm:text-sm.sm:leading-5
prefix]]
[:input#repo.form-input.block.w-full.pl-16.sm:pl-14.sm:text-sm.sm:leading-5
{:autoFocus true
:placeholder "username/repo"
:on-change (fn [e]
(reset! repo-url (util/evalue e)))
:style {:padding-left "9.1em"}}]]]]
(ui/button
"Clone"
(fn []
(handler/clone-and-pull @repo-url)))]]))
(handler/clone-and-pull (str prefix @repo-url))))]]))

View File

@ -150,9 +150,9 @@
[:main.flex-1.relative.z-0.overflow-y-auto.py-6.focus:outline-none
;; {:x-init "$el.focus()", :x-data "x-data", :tabindex "0"}
{:tabIndex "0"}
main-content
[:div.max-w-7xl.mx-auto.px-4.sm:px-6.md:px-8
[:div.py-4
[:div.border-4.border-dashed.border-gray-200.rounded-lg.h-96]]]]
[:div.flex.justify-center
[:div.flex-1.m-6 {:style {:position "relative"
:max-width 800}}
main-content]]]
(ui/notification)]]))

View File

@ -71,7 +71,9 @@
;; FIXME do not notify if tx-data is empty
(prn "db changed.")
(when-let [db (:db-after tx-report)]
(js/setTimeout #(persist db) 0))))
(js/setTimeout #(do
(persist db)
(posh/posh! conn)) 0))))
;; (new TextEncoder().encode('foo')).length
(defn db-size
@ -82,9 +84,9 @@
(defn restore! []
(when-let [stored (js/localStorage.getItem datascript-db)]
(let [stored-db (string->db stored)]
(when (= (:schema stored-db) schema) ;; check for code update
(reset-conn! stored-db)))))
(let [stored-db (string->db stored)]
(when (= (:schema stored-db) schema) ;; check for code update
(reset-conn! stored-db)))))
;; TODO: added_at, started_at, schedule, deadline
(def qualified-map
@ -161,10 +163,10 @@
(defn get-repo-headings
[repo-url]
(-> (d/q '[:find ?heading
:in $ ?repo-url
:where
[?repo :repo/url ?repo-url]
[?heading :heading/repo ?repo]]
:in $ ?repo-url
:where
[?repo :repo/url ?repo-url]
[?heading :heading/repo ?repo]]
@conn repo-url)
seq-flatten))
@ -189,21 +191,6 @@
[?h :heading/title]]
@conn)))
;; marker should be one of: TODO, DOING, IN-PROGRESS
;; time duration
(defn get-agenda
[time]
(let [duration (case time
:today []
:week []
:month [])]
(d/q '[:find (pull ?h [*])
:where
(or [?h :heading/marker "TODO"]
[?h :heading/marker "DOING"]
[?h :heading/marker "IN-PROGRESS"])]
@conn)))
(defn search-headings-by-title
[title])
@ -227,8 +214,10 @@
(posh/pull conn selector eid))
(defn pull-many
[selector eids]
(posh/pull-many conn selector eids))
([eids]
(pull-many '[*] eids))
([selector eids]
(d/pull-many (d/db conn) selector eids)))
(defn q
[query & inputs]
@ -369,10 +358,27 @@
[?repo :repo/url ?repo-url]
[?file :file/repo ?repo]
[?file :file/content ?content]
[?file :file/path ?path]
]
[?file :file/path ?path]]
@conn repo-url))
;; marker should be one of: TODO, DOING, IN-PROGRESS
;; time duration
(defn sub-agenda
([]
(sub-agenda :week))
([time]
(let [duration (case time
:today []
:week []
:month [])]
(q '[:find ?h
:where
(or [?h :heading/marker "TODO"]
[?h :heading/marker "DOING"]
[?h :heading/marker "IN-PROGRESS"]
[?h :heading/marker "DONE"])]
conn))))
(comment
(d/transact! conn [{:db/id -1
:repo/url "https://github.com/tiensonqin/notes"

View File

@ -82,18 +82,6 @@
(recur child-level children children-headings result (rest rblocks) timestamps)))))
(reverse result)))))
(defn get-sections
[section-headings]
(map first section-headings))
(defn get-section-headings
[section-name section-headings]
(-> (util/find-first
(fn [[name headings]]
(= name section-name))
section-headings)
second))
;; marker: DOING | IN-PROGRESS > TODO > WAITING | WAIT > DONE > CANCELED | CANCELLED
;; priority: A > B > C
(defn sort-tasks
@ -103,11 +91,15 @@
priorities ["A" "B" "C" "D" "E" "F" "G"]
priorities (zipmap priorities (reverse (range 1 (count priorities))))]
(sort (fn [t1 t2]
(let [m1 (get markers (:marker t1) 0)
m2 (get markers (:marker t2) 0)
p1 (get priorities (:priority t1) 0)
p2 (get priorities (:priority t2) 0)]
(let [m1 (get markers (:heading/marker t1) 0)
m2 (get markers (:heading/marker t2) 0)
p1 (get priorities (:heading/priority t1) 0)
p2 (get priorities (:heading/priority t2) 0)]
(if (= m1 m2)
(> p1 p2)
(> m1 m2))))
headings)))
(defn group-by-parent
[headings]
(group-by :heading/parent-title headings))

View File

@ -2,19 +2,26 @@
(:require ["mldoc_org" :as org]
[frontend.format.protocol :as protocol]))
(def config
(js/JSON.stringify
#js {:toc false
:heading_number false}))
(def Org (.-MldocOrg org))
(defrecord OrgMode [content]
protocol/Format
(toHtml [this]
(.parseHtml (.-MldocOrg org)
content
(js/JSON.stringify
#js {:toc false
:heading_number false}))))
(.parseHtml Org content config)))
(defn parse-json
[content]
(.parseJson (.-MldocOrg org) content))
(.parseJson Org content))
(defn inline-list->html
[json]
(.inlineListToHtmlStr (.-MldocOrg org) json))
(.inlineListToHtmlStr Org json))
(defn json->html
[json]
(.jsonToHtmlStr Org json config))

View File

@ -3,7 +3,6 @@
;; TODO: replace this with datascript
(def state (atom
{:route-match nil
:tasks {}
:notification/show? false
:notification/text nil
}))
:tasks-transactions nil}))

View File

@ -65,7 +65,7 @@
[:div.flex.items-start
[:div.flex-shrink-0
[:svg.h-6.w-6.text-green-400
{:stroke "currentColor", :viewbox "0 0 24 24", :fill "none"}
{:stroke "currentColor", :viewBox "0 0 24 24", :fill "none"}
[:path
{:d "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z",
:stroke-width "2",
@ -79,7 +79,7 @@
{:on-click (fn []
(swap! state/state assoc :notification/show? false))}
[:svg.h-5.w-5
{:fill "currentColor", :viewbox "0 0 20 20"}
{:fill "currentColor", :viewBox "0 0 20 20"}
[:path
{:clip-rule "evenodd",
:d
@ -93,3 +93,14 @@
{:in show? :timeout 100}
(fn [state]
(notification-content state text)))))
(rum/defc checkbox
[option]
[:input.form-checkbox.h-4.w-4.text-indigo-600.transition.duration-150.ease-in-out
(merge {:type "checkbox"} option)])
(rum/defc badge
[text option]
[:span.inline-flex.items-center.px-2.5.py-0.5.rounded-full.text-xs.font-medium.leading-4.bg-purple-100.text-purple-800
option
text])

View File

@ -2,117 +2,18 @@
# yarn lockfile v1
"@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3":
"@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3":
version "7.7.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.6.tgz#d18c511121aff1b4f2cd1d452f1bac9601dd830f"
integrity sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw==
dependencies:
regenerator-runtime "^0.13.2"
"@emotion/hash@^0.7.1":
version "0.7.3"
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.3.tgz#a166882c81c0c6040975dd30df24fae8549bd96f"
integrity sha512-14ZVlsB9akwvydAdaEnVnvqu6J2P6ySv39hYyl/aoB6w/V+bXX0tay8cF6paqbgZsN2n5Xh15uF4pE+GvE+itw==
"@material-ui/core@^4.7.2":
version "4.7.2"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.7.2.tgz#b4396eded7c85214c43c17a18bad66e94742f92c"
integrity sha512-ZbeO6xshTEHcMU2jMNjBY26u9p5ILQFj0y7HvOPZ9WT6POaN6qNKYX2PdXnnRDE1MpN8W2K1cxM4KKkiYWNkCQ==
dependencies:
"@babel/runtime" "^7.4.4"
"@material-ui/styles" "^4.7.1"
"@material-ui/system" "^4.7.1"
"@material-ui/types" "^4.1.1"
"@material-ui/utils" "^4.7.1"
"@types/react-transition-group" "^4.2.0"
clsx "^1.0.2"
convert-css-length "^2.0.1"
hoist-non-react-statics "^3.2.1"
normalize-scroll-left "^0.2.0"
popper.js "^1.14.1"
prop-types "^15.7.2"
react-is "^16.8.0"
react-transition-group "^4.3.0"
"@material-ui/icons@^4.5.1":
version "4.5.1"
resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-4.5.1.tgz#6963bad139e938702ece85ca43067688018f04f8"
integrity sha512-YZ/BgJbXX4a0gOuKWb30mBaHaoXRqPanlePam83JQPZ/y4kl+3aW0Wv9tlR70hB5EGAkEJGW5m4ktJwMgxQAeA==
dependencies:
"@babel/runtime" "^7.4.4"
"@material-ui/styles@^4.7.1":
version "4.7.1"
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.7.1.tgz#48fa70f06441c35e301a9c4b6c825526a97b7a29"
integrity sha512-BBfxVThaPrglqHmKtSdrZJxnbFGJqKdZ5ZvDarj3HsmkteGCXsP1ohrDi5TWoa5JEJFo9S6q6NywqsENZn9rZA==
dependencies:
"@babel/runtime" "^7.4.4"
"@emotion/hash" "^0.7.1"
"@material-ui/types" "^4.1.1"
"@material-ui/utils" "^4.7.1"
clsx "^1.0.2"
csstype "^2.5.2"
hoist-non-react-statics "^3.2.1"
jss "^10.0.0"
jss-plugin-camel-case "^10.0.0"
jss-plugin-default-unit "^10.0.0"
jss-plugin-global "^10.0.0"
jss-plugin-nested "^10.0.0"
jss-plugin-props-sort "^10.0.0"
jss-plugin-rule-value-function "^10.0.0"
jss-plugin-vendor-prefixer "^10.0.0"
prop-types "^15.7.2"
"@material-ui/system@^4.7.1":
version "4.7.1"
resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.7.1.tgz#d928dacc0eeae6bea569ff3ee079f409efb3517d"
integrity sha512-zH02p+FOimXLSKOW/OT2laYkl9bB3dD1AvnZqsHYoseUaq0aVrpbl2BGjQi+vJ5lg8w73uYlt9zOWzb3+1UdMQ==
dependencies:
"@babel/runtime" "^7.4.4"
"@material-ui/utils" "^4.7.1"
prop-types "^15.7.2"
"@material-ui/types@^4.1.1":
version "4.1.1"
resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-4.1.1.tgz#b65e002d926089970a3271213a3ad7a21b17f02b"
integrity sha512-AN+GZNXytX9yxGi0JOfxHrRTbhFybjUJ05rnsBVjcB+16e466Z0Xe5IxawuOayVZgTBNDxmPKo5j4V6OnMtaSQ==
dependencies:
"@types/react" "*"
"@material-ui/utils@^4.7.1":
version "4.7.1"
resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.7.1.tgz#dc16c7f0d2cd02fbcdd5cfe601fd6863ae3cc652"
integrity sha512-+ux0SlLdlehvzCk2zdQ3KiS3/ylWvuo/JwAGhvb8dFVvwR21K28z0PU9OQW2PGogrMEdvX3miEI5tGxTwwWiwQ==
dependencies:
"@babel/runtime" "^7.4.4"
prop-types "^15.7.2"
react-is "^16.8.0"
"@types/color-name@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
"@types/prop-types@*":
version "15.7.3"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
"@types/react-transition-group@^4.2.0":
version "4.2.3"
resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.2.3.tgz#4924133f7268694058e415bf7aea2d4c21131470"
integrity sha512-Hk8jiuT7iLOHrcjKP/ZVSyCNXK73wJAUz60xm0mVhiRujrdiI++j4duLiL282VGxwAgxetHQFfqA29LgEeSkFA==
dependencies:
"@types/react" "*"
"@types/react@*":
version "16.9.16"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.16.tgz#4f12515707148b1f53a8eaa4341dae5dfefb066d"
integrity sha512-dQ3wlehuBbYlfvRXfF5G+5TbZF3xqgkikK7DWAsQXe2KnzV+kjD4W2ea+ThCrKASZn9h98bjjPzoTYzfRqyBkw==
dependencies:
"@types/prop-types" "*"
csstype "^2.2.0"
acorn-node@^1.6.1:
version "1.8.2"
resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
@ -420,11 +321,6 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
clsx@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.0.4.tgz#0c0171f6d5cb2fe83848463c15fcc26b4df8c2ec"
integrity sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==
code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
@ -474,11 +370,6 @@ constants-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
convert-css-length@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/convert-css-length/-/convert-css-length-2.0.1.tgz#90a76bde5bfd24d72881a5b45d02249b2c1d257c"
integrity sha512-iGpbcvhLPRKUbBc0Quxx7w/bV14AC3ItuBEGMahA5WTYqB8lq9jH0kTXFheCBASsYnqeMFZhiTruNxr1N59Axg==
core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@ -556,20 +447,12 @@ css-unit-converter@^1.1.1:
resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=
css-vendor@^2.0.6:
version "2.0.7"
resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.7.tgz#4e6d53d953c187981576d6a542acc9fb57174bda"
integrity sha512-VS9Rjt79+p7M0WkPqcAza4Yq1ZHrsHrwf7hPL/bjQB+c1lwmAI+1FXxYTYt818D/50fFVflw0XKleiBN5RITkg==
dependencies:
"@babel/runtime" "^7.6.2"
is-in-browser "^1.0.2"
cssesc@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
csstype@^2.2.0, csstype@^2.5.2, csstype@^2.6.5, csstype@^2.6.7:
csstype@^2.6.7:
version "2.6.7"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5"
integrity sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==
@ -811,23 +694,11 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
hoist-non-react-statics@^3.2.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#101685d3aff3b23ea213163f6e8e12f4f111e19f"
integrity sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==
dependencies:
react-is "^16.7.0"
https-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
hyphenate-style-name@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48"
integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==
ieee754@^1.1.4:
version "1.1.13"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
@ -891,11 +762,6 @@ is-fullwidth-code-point@^2.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
is-in-browser@^1.0.2, is-in-browser@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835"
integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@ -941,75 +807,6 @@ jsonfile@^4.0.0:
optionalDependencies:
graceful-fs "^4.1.6"
jss-plugin-camel-case@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0.tgz#d601bae2e8e2041cc526add289dcd7062db0a248"
integrity sha512-yALDL00+pPR4FJh+k07A8FeDvfoPPuXU48HLy63enAubcVd3DnS+2rgqPXglHDGixIDVkCSXecl/l5GAMjzIbA==
dependencies:
"@babel/runtime" "^7.3.1"
hyphenate-style-name "^1.0.3"
jss "10.0.0"
jss-plugin-default-unit@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0.tgz#601caf5f576fc0c66986fbe8a9aa37307a3a3ea3"
integrity sha512-sURozIOdCtGg9ap18erQ+ijndAfEGtTaetxfU3H4qwC18Bi+fdvjlY/ahKbuu0ASs7R/+WKCP7UaRZOjUDMcdQ==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
jss-plugin-global@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.0.0.tgz#0fed1b6461e0d57d6e394f877529009bc1cb3cb6"
integrity sha512-80ofWKSQUo62bxLtRoTNe0kFPtHgUbAJeOeR36WEGgWIBEsXLyXOnD5KNnjPqG4heuEkz9eSLccjYST50JnI7Q==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
jss-plugin-nested@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.0.0.tgz#d37ecc013c3b0d0e4acc2b48f6b62da6ae53948b"
integrity sha512-waxxwl/po1hN3azTyixKnr8ReEqUv5WK7WsO+5AWB0bFndML5Yqnt8ARZ90HEg8/P6WlqE/AB2413TkCRZE8bA==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
tiny-warning "^1.0.2"
jss-plugin-props-sort@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0.tgz#38a13407384c2a4a7c026659488350669b953b18"
integrity sha512-41mf22CImjwNdtOG3r+cdC8+RhwNm616sjHx5YlqTwtSJLyLFinbQC/a4PIFk8xqf1qpFH1kEAIw+yx9HaqZ3g==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
jss-plugin-rule-value-function@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0.tgz#3ec1b781b7c86080136dbef6c36e91f20244b72e"
integrity sha512-Jw+BZ8JIw1f12V0SERqGlBT1JEPWax3vuZpMym54NAXpPb7R1LYHiCTIlaJUyqvIfEy3kiHMtgI+r2whGgRIxQ==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.0.0"
jss-plugin-vendor-prefixer@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0.tgz#400280535b0f483a9c78105afe4eee61b70018eb"
integrity sha512-qslqvL0MUbWuzXJWdUxpj6mdNUX8jr4FFTo3aZnAT65nmzWL7g8oTr9ZxmTXXgdp7ANhS1QWE7036/Q2isFBpw==
dependencies:
"@babel/runtime" "^7.3.1"
css-vendor "^2.0.6"
jss "10.0.0"
jss@10.0.0, jss@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/jss/-/jss-10.0.0.tgz#998d5026c02accae15708de83bd6ba57bac977d2"
integrity sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==
dependencies:
"@babel/runtime" "^7.3.1"
csstype "^2.6.5"
is-in-browser "^1.1.3"
tiny-warning "^1.0.2"
lcid@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
@ -1126,10 +923,10 @@ mkdirp@^0.5.1:
dependencies:
minimist "0.0.8"
mldoc_org@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/mldoc_org/-/mldoc_org-0.2.0.tgz#b9643333939dbddf6b38e76ec130c4b2cc72d6ab"
integrity sha512-s5QuzNWRX8XuAV6ymrBB43qwqvxjsCfUZX6/3AuCJ/dka3+jPxcQVjjOfueTFdzbQdPOBMxAhutV+AX9oQnv1A==
mldoc_org@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/mldoc_org/-/mldoc_org-0.2.3.tgz#585a866925a0952bb9175cd67604b137c3f6969b"
integrity sha512-v+4Un+DxuLm9NurW7KJWbgTIjeG4Q6AWmOQ4raWa2WozlefDiA9/xcs+RtgQiQ45Jf7Exj+6sC9Eyf9s0GrKQg==
dependencies:
yargs "^12.0.2"
@ -1191,11 +988,6 @@ normalize-range@^0.1.2:
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
normalize-scroll-left@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/normalize-scroll-left/-/normalize-scroll-left-0.2.0.tgz#9445d74275f303cc661e113329aefa492f58114c"
integrity sha512-t5oCENZJl8TGusJKoCJm7+asaSsPuNmK6+iEjrZ5TyBj2f02brCRsd4c83hwtu+e5d4LCSBZ0uoDlMjBo+A8yA==
normalize.css@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"
@ -1336,11 +1128,6 @@ pify@^4.0.1:
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
popper.js@^1.14.1:
version "1.16.0"
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.0.tgz#2e1816bcbbaa518ea6c2e15a466f4cb9c6e2fbb3"
integrity sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==
postcss-functions@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e"
@ -1424,7 +1211,7 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
prop-types@^15.6.2, prop-types@^15.7.2:
prop-types@^15.6.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@ -1508,7 +1295,7 @@ react-dom@^16.12.0:
prop-types "^15.6.2"
scheduler "^0.18.0"
react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.1:
react-is@^16.8.1:
version "16.12.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
@ -1856,11 +1643,6 @@ timers-browserify@^2.0.4:
dependencies:
setimmediate "^1.0.4"
tiny-warning@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"