aboutsummaryrefslogtreecommitdiff
path: root/src/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/Lib')
-rw-r--r--src/Lib/CSV.ml76
-rw-r--r--src/Lib/ContextMenu.ml40
-rw-r--r--src/Lib/Dom/Document.ml20
-rw-r--r--src/Lib/Dom/Element.ml51
-rw-r--r--src/Lib/Dom/Event.ml17
-rw-r--r--src/Lib/Dom/H.ml65
-rw-r--r--src/Lib/Dom/HA.ml43
-rw-r--r--src/Lib/Dom/HE.ml13
-rw-r--r--src/Lib/Dom/History.ml2
-rw-r--r--src/Lib/Dom/Location.ml7
-rw-r--r--src/Lib/Dom/Window.ml2
-rw-r--r--src/Lib/File.ml21
-rw-r--r--src/Lib/FontAwesome.ml788
-rw-r--r--src/Lib/Fun.ml2
-rw-r--r--src/Lib/Leaflet.ml89
-rw-r--r--src/Lib/Modal.ml25
-rw-r--r--src/Lib/Option.ml9
-rw-r--r--src/Lib/String.ml35
-rw-r--r--src/Lib/URI.ml2
19 files changed, 0 insertions, 1307 deletions
diff --git a/src/Lib/CSV.ml b/src/Lib/CSV.ml
deleted file mode 100644
index f0366f7..0000000
--- a/src/Lib/CSV.ml
+++ /dev/null
@@ -1,76 +0,0 @@
-let to_string lines =
- let
- cell_to_string cell =
- if Js.String.includes "\"" cell then
- "\"" ^ (Js.String.replaceByRe [%re "/\"/g"] "\"\"" cell) ^ "\""
- else
- cell
- in let
- line_to_string line =
- line
- |> Js.Array.map cell_to_string
- |> Js.Array.joinWith ","
- in lines
- |> Js.Array.map line_to_string
- |> Js.Array.joinWith "\n"
-
-let parse str =
- let lines = [| |] in
- let current_line = ref [| |] in
- let current_cell = ref "" in
- let in_quote = ref false in
- let i = ref 0 in
- let l = Js.String.length str in
- let () = while !i < l do
- let cc = Js.String.get str !i in
- let nc = Js.String.get str (!i + 1) in
- let () =
- if !in_quote && cc == "\"" && nc == "\"" then
- let () = current_cell := !current_cell ^ cc in
- i := !i + 1
- else if cc == "\"" then
- in_quote := not !in_quote
- else if not !in_quote && cc == "," then
- let _ = Js.Array.push !current_cell !current_line in
- current_cell := ""
- else if not !in_quote && ((cc == "\r" && nc == "\n") || cc == "\n" || cc == "\r") then
- let _ = Js.Array.push !current_cell !current_line in
- let _ = Js.Array.push !current_line lines in
- let _ = current_line := [| |] in
- current_cell := ""
- else
- current_cell := !current_cell ^ cc
- in
- i := !i + 1
- done
- in
- let _ =
- if Js.String.length !current_cell > 0 then
- let _ = Js.Array.push !current_cell !current_line in ()
- else
- ()
- in
- let _ =
- if Js.Array.length !current_line > 0 then
- let _ = Js.Array.push !current_line lines in ()
- else
- ()
- in
- lines
-
-let to_dicts lines =
- let res = [| |] in
- let () =
- if Js.Array.length lines > 0 then
- let header = Js.Array.unsafe_get lines 0 in
- for i = 1 to Js.Array.length lines - 1 do
- let line = Js.Array.unsafe_get lines i in
- let dict = Js.Dict.empty() in
- let () =
- Js.Array.forEachi
- (fun key j -> Js.Dict.set dict key (Js.Array.unsafe_get line j))
- header
- in
- ignore (Js.Array.push dict res)
- done
- in res
diff --git a/src/Lib/ContextMenu.ml b/src/Lib/ContextMenu.ml
deleted file mode 100644
index b9ed7d4..0000000
--- a/src/Lib/ContextMenu.ml
+++ /dev/null
@@ -1,40 +0,0 @@
-let px f =
- Js.Float.toString f ^ "px"
-
-type entry =
- { label: string
- ; action: unit -> unit
- }
-
-let show mouse_event actions =
- let menu =
- H.div
- [| HA.id "g-ContextMenu"
- ; HA.style ("left: " ^ (px (Event.page_x mouse_event)) ^ "; top: " ^ (px (Event.page_y mouse_event)))
- |]
- (Js.Array.map
- (fun entry ->
- H.div
- [| HA.class_ "g-ContextMenu__Entry"
- ; HE.on_click (fun _ -> entry.action ())
- |]
- [| H.text entry.label |])
- actions)
- in
- let () = Element.append_child Document.body menu in
-
- (* Remove on click or context menu *)
- let _ =
- Js.Global.setTimeout
- (fun _ ->
- let rec f = (fun _ ->
- let () = Element.remove_child Document.body menu in
- let () = Element.remove_event_listener Document.body "click" f in
- Element.remove_event_listener Document.body "contextmenu" f)
- in
- let () = Element.add_event_listener Document.body "click" f in
- Element.add_event_listener Document.body "contextmenu" f
- )
- 0
- in
- ()
diff --git a/src/Lib/Dom/Document.ml b/src/Lib/Dom/Document.ml
deleted file mode 100644
index 46f983a..0000000
--- a/src/Lib/Dom/Document.ml
+++ /dev/null
@@ -1,20 +0,0 @@
-external body : Dom.element = "body"
- [@@bs.val] [@@bs.scope "document"]
-
-external create_element : string -> Dom.element = "createElement"
- [@@bs.val] [@@bs.scope "document"]
-
-external create_element_ns : string -> string -> Dom.element = "createElementNS"
- [@@bs.val] [@@bs.scope "document"]
-
-external query_selector : string -> Dom.element Js.Nullable.t = "querySelector"
- [@@bs.val] [@@bs.scope "document"]
-
-let query_selector_unsafe id =
- query_selector id |> Js.Nullable.toOption |> Js.Option.getExn
-
-external create_text_node : string -> Dom.element = "createTextNode"
- [@@bs.val] [@@bs.scope "document"]
-
-external location : Location.location = "location"
- [@@bs.val] [@@bs.scope "document"]
diff --git a/src/Lib/Dom/Element.ml b/src/Lib/Dom/Element.ml
deleted file mode 100644
index feb6003..0000000
--- a/src/Lib/Dom/Element.ml
+++ /dev/null
@@ -1,51 +0,0 @@
-external set_value : Dom.element -> string -> unit = "value"
- [@@bs.set]
-
-external value : Dom.element -> string = "value"
- [@@bs.get]
-
-external set_attribute : Dom.element -> string -> string -> unit = "setAttribute"
- [@@bs.send]
-
-external set_class_name : Dom.element -> string -> unit = "className"
- [@@bs.set]
-
-external add_event_listener : Dom.element -> string -> (Dom.event -> unit) -> unit
- = "addEventListener"
- [@@bs.send]
-
-external remove_event_listener : Dom.element -> string -> (Dom.event -> unit) -> unit
- = "removeEventListener"
- [@@bs.send]
-
-external append_child : Dom.element -> Dom.element -> unit = "appendChild"
- [@@bs.send]
-
-external first_child : Dom.element -> Dom.element Js.Nullable.t = "firstChild"
- [@@bs.get]
-
-external remove_child : Dom.element -> Dom.element -> unit = "removeChild"
- [@@bs.send]
-
-external click : Dom.element -> unit = "click"
- [@@bs.send]
-
-let remove_first_child element =
- match Js.toOption (first_child element) with
- | Some child ->
- let () = remove_child element child in
- true
- | _ -> false
-
-let rec remove_children element =
- if remove_first_child element then remove_children element else ()
-
-let mount_on base element =
- let () = remove_children base in
- append_child base element
-
-external files : Dom.element -> string Js.Array.t = "files"
- [@@bs.get]
-
-external focus : Dom.element -> unit = "focus"
- [@@bs.send]
diff --git a/src/Lib/Dom/Event.ml b/src/Lib/Dom/Event.ml
deleted file mode 100644
index 5a9790f..0000000
--- a/src/Lib/Dom/Event.ml
+++ /dev/null
@@ -1,17 +0,0 @@
-external prevent_default : Dom.event -> unit = "preventDefault"
- [@@bs.send]
-
-external stop_propagation : Dom.event -> unit = "stopPropagation"
- [@@bs.send]
-
-external target : Dom.event -> Dom.element = "target"
- [@@bs.get]
-
-external related_target : Dom.event -> Dom.element Js.Nullable.t = "relatedTarget"
- [@@bs.get]
-
-external page_x : Dom.mouseEvent -> float = "pageX"
- [@@bs.get]
-
-external page_y : Dom.mouseEvent -> float = "pageY"
- [@@bs.get]
diff --git a/src/Lib/Dom/H.ml b/src/Lib/Dom/H.ml
deleted file mode 100644
index 7213daf..0000000
--- a/src/Lib/Dom/H.ml
+++ /dev/null
@@ -1,65 +0,0 @@
-(* Element creation *)
-
-type attribute =
- | TextAttr of string * string
- | EventAttr of string * (Dom.event -> unit)
-
-let h tag attributes children =
- let element =
- if tag == "svg" || tag == "path" then
- Document.create_element_ns "http://www.w3.org/2000/svg" tag
- else Document.create_element tag
- in
- let () =
- Js.Array.forEach
- (fun attr ->
- match attr with
- | TextAttr (name, value) ->
- Element.set_attribute element name value
-
- | EventAttr (name, eventListener) ->
- Element.add_event_listener element name eventListener)
- attributes
- in
- let () =
- Js.Array.forEach
- (fun child -> Element.append_child element child)
- children
- in
- element
-
-(* Node creation *)
-
-let text = Document.create_text_node
-
-let div = h "div"
-
-let span = h "span"
-
-let header = h "header"
-
-let button = h "button"
-
-let section = h "section"
-
-let svg = h "svg"
-
-let path = h "path"
-
-let form = h "form"
-
-let label = h "label"
-
-let input = h "input"
-
-let textarea = h "textarea"
-
-let i = h "i"
-
-let a = h "a"
-
-let h1 = h "h1"
-
-let h2 = h "h2"
-
-let h3 = h "h3"
diff --git a/src/Lib/Dom/HA.ml b/src/Lib/Dom/HA.ml
deleted file mode 100644
index ce02f2a..0000000
--- a/src/Lib/Dom/HA.ml
+++ /dev/null
@@ -1,43 +0,0 @@
-let concat xs ys =
- let partition_class =
- Js.Array.reduce
- (fun (class_acc, rest_acc) z ->
- match z with
- | H.TextAttr ("class", c) -> (class_acc ^ " " ^ c, rest_acc)
- | _ -> (class_acc, Js.Array.concat [| z |] rest_acc)
- )
- ("", [| |])
- in
- let (xs_class, xs_rest) = partition_class xs in
- let (ys_class, ys_rest) = partition_class ys in
- let rest = Js.Array.concat xs_rest ys_rest in
- if xs_class == "" && ys_class == "" then
- rest
- else
- Js.Array.concat [| H.TextAttr ("class", xs_class ^ " " ^ ys_class) |] rest
-
-(* Attribute creation *)
-
-let id v = H.TextAttr ("id", v)
-
-let class_ v = H.TextAttr ("class", v)
-
-let viewBox v = H.TextAttr ("viewBox", v)
-
-let d v = H.TextAttr ("d", v)
-
-let type_ v = H.TextAttr ("type", v)
-
-let min_ v = H.TextAttr ("min", v)
-
-let value v = H.TextAttr ("value", v)
-
-let for_ v = H.TextAttr ("for", v)
-
-let style v = H.TextAttr ("style", v)
-
-let href v = H.TextAttr ("href", v)
-
-let autocomplete v = H.TextAttr ("autocomplete", v)
-
-let download v = H.TextAttr ("download", v)
diff --git a/src/Lib/Dom/HE.ml b/src/Lib/Dom/HE.ml
deleted file mode 100644
index 03d2386..0000000
--- a/src/Lib/Dom/HE.ml
+++ /dev/null
@@ -1,13 +0,0 @@
-(* Event listeners *)
-
-let on_click f = H.EventAttr ("click", f)
-
-let on_input f = H.EventAttr ("input", f)
-
-let on_submit f = H.EventAttr ("submit", f)
-
-let on_blur f = H.EventAttr ("blur", f)
-
-let on_change f = H.EventAttr ("change", f)
-
-let on_focus f = H.EventAttr ("focus", f)
diff --git a/src/Lib/Dom/History.ml b/src/Lib/Dom/History.ml
deleted file mode 100644
index ce7a877..0000000
--- a/src/Lib/Dom/History.ml
+++ /dev/null
@@ -1,2 +0,0 @@
-external push_state : string -> string -> string -> unit -> unit = "pushState"
- [@@bs.val] [@@bs.scope "history"]
diff --git a/src/Lib/Dom/Location.ml b/src/Lib/Dom/Location.ml
deleted file mode 100644
index 2c58705..0000000
--- a/src/Lib/Dom/Location.ml
+++ /dev/null
@@ -1,7 +0,0 @@
-external set : Dom.element -> string -> unit = "location"
- [@@bs.set]
-
-type location
-
-external hash : location -> string = "hash"
- [@@bs.get]
diff --git a/src/Lib/Dom/Window.ml b/src/Lib/Dom/Window.ml
deleted file mode 100644
index 3abc921..0000000
--- a/src/Lib/Dom/Window.ml
+++ /dev/null
@@ -1,2 +0,0 @@
-external window : Dom.element = "window"
- [@@bs.val]
diff --git a/src/Lib/File.ml b/src/Lib/File.ml
deleted file mode 100644
index d3597e7..0000000
--- a/src/Lib/File.ml
+++ /dev/null
@@ -1,21 +0,0 @@
-let download filename content =
- let a =
- H.a
- [| HA.href ("data:text/plain;charset=utf-8," ^ URI.encode content)
- ; HA.download filename
- ; HA.style "display:none"
- |]
- [| |]
- in
- let () = Element.append_child Document.body a in
- let () = Element.click a in
- Element.remove_child Document.body a
-
-external reader : unit -> Dom.element = "FileReader"
- [@@bs.new]
-
-external read_as_text : Dom.element -> string -> unit = "readAsText"
- [@@bs.send]
-
-external result : Dom.element -> string = "result"
- [@@bs.get]
diff --git a/src/Lib/FontAwesome.ml b/src/Lib/FontAwesome.ml
deleted file mode 100644
index daaf954..0000000
--- a/src/Lib/FontAwesome.ml
+++ /dev/null
@@ -1,788 +0,0 @@
-let icons =
- [| "500px"
- ; "address-book"
- ; "address-book-o"
- ; "address-card"
- ; "address-card-o"
- ; "adjust"
- ; "adn"
- ; "align-center"
- ; "align-justify"
- ; "align-left"
- ; "align-right"
- ; "amazon"
- ; "ambulance"
- ; "american-sign-language-interpreting"
- ; "anchor"
- ; "android"
- ; "angellist"
- ; "angle-double-down"
- ; "angle-double-left"
- ; "angle-double-right"
- ; "angle-double-up"
- ; "angle-down"
- ; "angle-left"
- ; "angle-right"
- ; "angle-up"
- ; "apple"
- ; "archive"
- ; "area-chart"
- ; "arrow-circle-down"
- ; "arrow-circle-left"
- ; "arrow-circle-o-down"
- ; "arrow-circle-o-left"
- ; "arrow-circle-o-right"
- ; "arrow-circle-o-up"
- ; "arrow-circle-right"
- ; "arrow-circle-up"
- ; "arrow-down"
- ; "arrow-left"
- ; "arrow-right"
- ; "arrow-up"
- ; "arrows"
- ; "arrows-alt"
- ; "arrows-h"
- ; "arrows-v"
- ; "asl-interpreting"
- ; "assistive-listening-systems"
- ; "asterisk"
- ; "at"
- ; "audio-description"
- ; "automobile"
- ; "backward"
- ; "balance-scale"
- ; "ban"
- ; "bandcamp"
- ; "bank"
- ; "bar-chart"
- ; "bar-chart-o"
- ; "barcode"
- ; "bars"
- ; "bath"
- ; "bathtub"
- ; "battery"
- ; "battery-0"
- ; "battery-1"
- ; "battery-2"
- ; "battery-3"
- ; "battery-4"
- ; "battery-empty"
- ; "battery-full"
- ; "battery-half"
- ; "battery-quarter"
- ; "battery-three-quarters"
- ; "bed"
- ; "beer"
- ; "behance"
- ; "behance-square"
- ; "bell"
- ; "bell-o"
- ; "bell-slash"
- ; "bell-slash-o"
- ; "bicycle"
- ; "binoculars"
- ; "birthday-cake"
- ; "bitbucket"
- ; "bitbucket-square"
- ; "bitcoin"
- ; "black-tie"
- ; "blind"
- ; "bluetooth"
- ; "bluetooth-b"
- ; "bold"
- ; "bolt"
- ; "bomb"
- ; "book"
- ; "bookmark"
- ; "bookmark-o"
- ; "braille"
- ; "briefcase"
- ; "btc"
- ; "bug"
- ; "building"
- ; "building-o"
- ; "bullhorn"
- ; "bullseye"
- ; "bus"
- ; "buysellads"
- ; "cab"
- ; "calculator"
- ; "calendar"
- ; "calendar-check-o"
- ; "calendar-minus-o"
- ; "calendar-o"
- ; "calendar-plus-o"
- ; "calendar-times-o"
- ; "camera"
- ; "camera-retro"
- ; "car"
- ; "caret-down"
- ; "caret-left"
- ; "caret-right"
- ; "caret-square-o-down"
- ; "caret-square-o-left"
- ; "caret-square-o-right"
- ; "caret-square-o-up"
- ; "caret-up"
- ; "cart-arrow-down"
- ; "cart-plus"
- ; "cc"
- ; "cc-amex"
- ; "cc-diners-club"
- ; "cc-discover"
- ; "cc-jcb"
- ; "cc-mastercard"
- ; "cc-paypal"
- ; "cc-stripe"
- ; "cc-visa"
- ; "certificate"
- ; "chain"
- ; "chain-broken"
- ; "check"
- ; "check-circle"
- ; "check-circle-o"
- ; "check-square"
- ; "check-square-o"
- ; "chevron-circle-down"
- ; "chevron-circle-left"
- ; "chevron-circle-right"
- ; "chevron-circle-up"
- ; "chevron-down"
- ; "chevron-left"
- ; "chevron-right"
- ; "chevron-up"
- ; "child"
- ; "chrome"
- ; "circle"
- ; "circle-o"
- ; "circle-o-notch"
- ; "circle-thin"
- ; "clipboard"
- ; "clock-o"
- ; "clone"
- ; "close"
- ; "cloud"
- ; "cloud-download"
- ; "cloud-upload"
- ; "cny"
- ; "code"
- ; "code-fork"
- ; "codepen"
- ; "codiepie"
- ; "coffee"
- ; "cog"
- ; "cogs"
- ; "columns"
- ; "comment"
- ; "comment-o"
- ; "commenting"
- ; "commenting-o"
- ; "comments"
- ; "comments-o"
- ; "compass"
- ; "compress"
- ; "connectdevelop"
- ; "contao"
- ; "copy"
- ; "copyright"
- ; "creative-commons"
- ; "credit-card"
- ; "credit-card-alt"
- ; "crop"
- ; "crosshairs"
- ; "css3"
- ; "cube"
- ; "cubes"
- ; "cut"
- ; "cutlery"
- ; "dashboard"
- ; "dashcube"
- ; "database"
- ; "deaf"
- ; "deafness"
- ; "dedent"
- ; "delicious"
- ; "desktop"
- ; "deviantart"
- ; "diamond"
- ; "digg"
- ; "dollar"
- ; "dot-circle-o"
- ; "download"
- ; "dribbble"
- ; "drivers-license"
- ; "drivers-license-o"
- ; "dropbox"
- ; "drupal"
- ; "edge"
- ; "edit"
- ; "eercast"
- ; "eject"
- ; "ellipsis-h"
- ; "ellipsis-v"
- ; "empire"
- ; "envelope"
- ; "envelope-o"
- ; "envelope-open"
- ; "envelope-open-o"
- ; "envelope-square"
- ; "envira"
- ; "eraser"
- ; "etsy"
- ; "eur"
- ; "euro"
- ; "exchange"
- ; "exclamation"
- ; "exclamation-circle"
- ; "exclamation-triangle"
- ; "expand"
- ; "expeditedssl"
- ; "external-link"
- ; "external-link-square"
- ; "eye"
- ; "eye-slash"
- ; "eyedropper"
- ; "fa"
- ; "facebook"
- ; "facebook-f"
- ; "facebook-official"
- ; "facebook-square"
- ; "fast-backward"
- ; "fast-forward"
- ; "fax"
- ; "feed"
- ; "female"
- ; "fighter-jet"
- ; "file"
- ; "file-archive-o"
- ; "file-audio-o"
- ; "file-code-o"
- ; "file-excel-o"
- ; "file-image-o"
- ; "file-movie-o"
- ; "file-o"
- ; "file-pdf-o"
- ; "file-photo-o"
- ; "file-picture-o"
- ; "file-powerpoint-o"
- ; "file-sound-o"
- ; "file-text"
- ; "file-text-o"
- ; "file-video-o"
- ; "file-word-o"
- ; "file-zip-o"
- ; "files-o"
- ; "film"
- ; "filter"
- ; "fire"
- ; "fire-extinguisher"
- ; "firefox"
- ; "first-order"
- ; "flag"
- ; "flag-checkered"
- ; "flag-o"
- ; "flash"
- ; "flask"
- ; "flickr"
- ; "floppy-o"
- ; "folder"
- ; "folder-o"
- ; "folder-open"
- ; "folder-open-o"
- ; "font"
- ; "font-awesome"
- ; "fonticons"
- ; "fort-awesome"
- ; "forumbee"
- ; "forward"
- ; "foursquare"
- ; "free-code-camp"
- ; "frown-o"
- ; "futbol-o"
- ; "gamepad"
- ; "gavel"
- ; "gbp"
- ; "ge"
- ; "gear"
- ; "gears"
- ; "genderless"
- ; "get-pocket"
- ; "gg"
- ; "gg-circle"
- ; "gift"
- ; "git"
- ; "git-square"
- ; "github"
- ; "github-alt"
- ; "github-square"
- ; "gitlab"
- ; "gittip"
- ; "glass"
- ; "glide"
- ; "glide-g"
- ; "globe"
- ; "google"
- ; "google-plus"
- ; "google-plus-circle"
- ; "google-plus-official"
- ; "google-plus-square"
- ; "google-wallet"
- ; "graduation-cap"
- ; "gratipay"
- ; "grav"
- ; "group"
- ; "h-square"
- ; "hacker-news"
- ; "hand-grab-o"
- ; "hand-lizard-o"
- ; "hand-o-down"
- ; "hand-o-left"
- ; "hand-o-right"
- ; "hand-o-up"
- ; "hand-paper-o"
- ; "hand-peace-o"
- ; "hand-pointer-o"
- ; "hand-rock-o"
- ; "hand-scissors-o"
- ; "hand-spock-o"
- ; "hand-stop-o"
- ; "handshake-o"
- ; "hard-of-hearing"
- ; "hashtag"
- ; "hdd-o"
- ; "header"
- ; "headphones"
- ; "heart"
- ; "heart-o"
- ; "heartbeat"
- ; "history"
- ; "home"
- ; "hospital-o"
- ; "hotel"
- ; "hourglass"
- ; "hourglass-1"
- ; "hourglass-2"
- ; "hourglass-3"
- ; "hourglass-end"
- ; "hourglass-half"
- ; "hourglass-o"
- ; "hourglass-start"
- ; "houzz"
- ; "html5"
- ; "i-cursor"
- ; "id-badge"
- ; "id-card"
- ; "id-card-o"
- ; "ils"
- ; "image"
- ; "imdb"
- ; "inbox"
- ; "indent"
- ; "industry"
- ; "info"
- ; "info-circle"
- ; "inr"
- ; "instagram"
- ; "institution"
- ; "internet-explorer"
- ; "intersex"
- ; "ioxhost"
- ; "italic"
- ; "joomla"
- ; "jpy"
- ; "jsfiddle"
- ; "key"
- ; "keyboard-o"
- ; "krw"
- ; "language"
- ; "laptop"
- ; "lastfm"
- ; "lastfm-square"
- ; "leaf"
- ; "leanpub"
- ; "legal"
- ; "lemon-o"
- ; "level-down"
- ; "level-up"
- ; "life-bouy"
- ; "life-buoy"
- ; "life-ring"
- ; "life-saver"
- ; "lightbulb-o"
- ; "line-chart"
- ; "link"
- ; "linkedin"
- ; "linkedin-square"
- ; "linode"
- ; "linux"
- ; "list"
- ; "list-alt"
- ; "list-ol"
- ; "list-ul"
- ; "location-arrow"
- ; "lock"
- ; "long-arrow-down"
- ; "long-arrow-left"
- ; "long-arrow-right"
- ; "long-arrow-up"
- ; "low-vision"
- ; "magic"
- ; "magnet"
- ; "mail-forward"
- ; "mail-reply"
- ; "mail-reply-all"
- ; "male"
- ; "map"
- ; "map-marker"
- ; "map-o"
- ; "map-pin"
- ; "map-signs"
- ; "mars"
- ; "mars-double"
- ; "mars-stroke"
- ; "mars-stroke-h"
- ; "mars-stroke-v"
- ; "maxcdn"
- ; "meanpath"
- ; "medium"
- ; "medkit"
- ; "meetup"
- ; "meh-o"
- ; "mercury"
- ; "microchip"
- ; "microphone"
- ; "microphone-slash"
- ; "minus"
- ; "minus-circle"
- ; "minus-square"
- ; "minus-square-o"
- ; "mixcloud"
- ; "mobile"
- ; "mobile-phone"
- ; "modx"
- ; "money"
- ; "moon-o"
- ; "mortar-board"
- ; "motorcycle"
- ; "mouse-pointer"
- ; "music"
- ; "navicon"
- ; "neuter"
- ; "newspaper-o"
- ; "object-group"
- ; "object-ungroup"
- ; "odnoklassniki"
- ; "odnoklassniki-square"
- ; "opencart"
- ; "openid"
- ; "opera"
- ; "optin-monster"
- ; "outdent"
- ; "pagelines"
- ; "paint-brush"
- ; "paper-plane"
- ; "paper-plane-o"
- ; "paperclip"
- ; "paragraph"
- ; "paste"
- ; "pause"
- ; "pause-circle"
- ; "pause-circle-o"
- ; "paw"
- ; "paypal"
- ; "pencil"
- ; "pencil-square"
- ; "pencil-square-o"
- ; "percent"
- ; "phone"
- ; "phone-square"
- ; "photo"
- ; "picture-o"
- ; "pie-chart"
- ; "pied-piper"
- ; "pied-piper-alt"
- ; "pied-piper-pp"
- ; "pinterest"
- ; "pinterest-p"
- ; "pinterest-square"
- ; "plane"
- ; "play"
- ; "play-circle"
- ; "play-circle-o"
- ; "plug"
- ; "plus"
- ; "plus-circle"
- ; "plus-square"
- ; "plus-square-o"
- ; "podcast"
- ; "power-off"
- ; "print"
- ; "product-hunt"
- ; "puzzle-piece"
- ; "qq"
- ; "qrcode"
- ; "question"
- ; "question-circle"
- ; "question-circle-o"
- ; "quora"
- ; "quote-left"
- ; "quote-right"
- ; "ra"
- ; "random"
- ; "ravelry"
- ; "rebel"
- ; "recycle"
- ; "reddit"
- ; "reddit-alien"
- ; "reddit-square"
- ; "refresh"
- ; "registered"
- ; "remove"
- ; "renren"
- ; "reorder"
- ; "repeat"
- ; "reply"
- ; "reply-all"
- ; "resistance"
- ; "retweet"
- ; "rmb"
- ; "road"
- ; "rocket"
- ; "rotate-left"
- ; "rotate-right"
- ; "rouble"
- ; "rss"
- ; "rss-square"
- ; "rub"
- ; "ruble"
- ; "rupee"
- ; "s15"
- ; "safari"
- ; "save"
- ; "scissors"
- ; "scribd"
- ; "search"
- ; "search-minus"
- ; "search-plus"
- ; "sellsy"
- ; "send"
- ; "send-o"
- ; "server"
- ; "share"
- ; "share-alt"
- ; "share-alt-square"
- ; "share-square"
- ; "share-square-o"
- ; "shekel"
- ; "sheqel"
- ; "shield"
- ; "ship"
- ; "shirtsinbulk"
- ; "shopping-bag"
- ; "shopping-basket"
- ; "shopping-cart"
- ; "shower"
- ; "sign-in"
- ; "sign-language"
- ; "sign-out"
- ; "signal"
- ; "signing"
- ; "simplybuilt"
- ; "sitemap"
- ; "skyatlas"
- ; "skype"
- ; "slack"
- ; "sliders"
- ; "slideshare"
- ; "smile-o"
- ; "snapchat"
- ; "snapchat-ghost"
- ; "snapchat-square"
- ; "snowflake-o"
- ; "soccer-ball-o"
- ; "sort"
- ; "sort-alpha-asc"
- ; "sort-alpha-desc"
- ; "sort-amount-asc"
- ; "sort-amount-desc"
- ; "sort-asc"
- ; "sort-desc"
- ; "sort-down"
- ; "sort-numeric-asc"
- ; "sort-numeric-desc"
- ; "sort-up"
- ; "soundcloud"
- ; "space-shuttle"
- ; "spinner"
- ; "spoon"
- ; "spotify"
- ; "square"
- ; "square-o"
- ; "stack-exchange"
- ; "stack-overflow"
- ; "star"
- ; "star-half"
- ; "star-half-empty"
- ; "star-half-full"
- ; "star-half-o"
- ; "star-o"
- ; "steam"
- ; "steam-square"
- ; "step-backward"
- ; "step-forward"
- ; "stethoscope"
- ; "sticky-note"
- ; "sticky-note-o"
- ; "stop"
- ; "stop-circle"
- ; "stop-circle-o"
- ; "street-view"
- ; "strikethrough"
- ; "stumbleupon"
- ; "stumbleupon-circle"
- ; "subscript"
- ; "subway"
- ; "suitcase"
- ; "sun-o"
- ; "superpowers"
- ; "superscript"
- ; "support"
- ; "table"
- ; "tablet"
- ; "tachometer"
- ; "tag"
- ; "tags"
- ; "tasks"
- ; "taxi"
- ; "telegram"
- ; "television"
- ; "tencent-weibo"
- ; "terminal"
- ; "text-height"
- ; "text-width"
- ; "th"
- ; "th-large"
- ; "th-list"
- ; "themeisle"
- ; "thermometer"
- ; "thermometer-0"
- ; "thermometer-1"
- ; "thermometer-2"
- ; "thermometer-3"
- ; "thermometer-4"
- ; "thermometer-empty"
- ; "thermometer-full"
- ; "thermometer-half"
- ; "thermometer-quarter"
- ; "thermometer-three-quarters"
- ; "thumb-tack"
- ; "thumbs-down"
- ; "thumbs-o-down"
- ; "thumbs-o-up"
- ; "thumbs-up"
- ; "ticket"
- ; "times"
- ; "times-circle"
- ; "times-circle-o"
- ; "times-rectangle"
- ; "times-rectangle-o"
- ; "tint"
- ; "toggle-down"
- ; "toggle-left"
- ; "toggle-off"
- ; "toggle-on"
- ; "toggle-right"
- ; "toggle-up"
- ; "trademark"
- ; "train"
- ; "transgender"
- ; "transgender-alt"
- ; "trash"
- ; "trash-o"
- ; "tree"
- ; "trello"
- ; "tripadvisor"
- ; "trophy"
- ; "truck"
- ; "try"
- ; "tty"
- ; "tumblr"
- ; "tumblr-square"
- ; "turkish-lira"
- ; "tv"
- ; "twitch"
- ; "twitter"
- ; "twitter-square"
- ; "umbrella"
- ; "underline"
- ; "undo"
- ; "universal-access"
- ; "university"
- ; "unlink"
- ; "unlock"
- ; "unlock-alt"
- ; "unsorted"
- ; "upload"
- ; "usb"
- ; "usd"
- ; "user"
- ; "user-circle"
- ; "user-circle-o"
- ; "user-md"
- ; "user-o"
- ; "user-plus"
- ; "user-secret"
- ; "user-times"
- ; "users"
- ; "vcard"
- ; "vcard-o"
- ; "venus"
- ; "venus-double"
- ; "venus-mars"
- ; "viacoin"
- ; "viadeo"
- ; "viadeo-square"
- ; "video-camera"
- ; "vimeo"
- ; "vimeo-square"
- ; "vine"
- ; "vk"
- ; "volume-control-phone"
- ; "volume-down"
- ; "volume-off"
- ; "volume-up"
- ; "warning"
- ; "wechat"
- ; "weibo"
- ; "weixin"
- ; "whatsapp"
- ; "wheelchair"
- ; "wheelchair-alt"
- ; "wifi"
- ; "wikipedia-w"
- ; "window-close"
- ; "window-close-o"
- ; "window-maximize"
- ; "window-minimize"
- ; "window-restore"
- ; "windows"
- ; "won"
- ; "wordpress"
- ; "wpbeginner"
- ; "wpexplorer"
- ; "wpforms"
- ; "wrench"
- ; "xing"
- ; "xing-square"
- ; "y-combinator"
- ; "y-combinator-square"
- ; "yahoo"
- ; "yc"
- ; "yc-square"
- ; "yelp"
- ; "yen"
- ; "yoast"
- ; "youtube"
- ; "youtube-play"
- ; "youtube-square"
- |]
diff --git a/src/Lib/Fun.ml b/src/Lib/Fun.ml
deleted file mode 100644
index bf1eb38..0000000
--- a/src/Lib/Fun.ml
+++ /dev/null
@@ -1,2 +0,0 @@
-let flip f b a =
- f a b
diff --git a/src/Lib/Leaflet.ml b/src/Lib/Leaflet.ml
deleted file mode 100644
index 282b5b0..0000000
--- a/src/Lib/Leaflet.ml
+++ /dev/null
@@ -1,89 +0,0 @@
-type layer
-
-type map_options =
- { attributionControl : bool
- }
-
-external map : string -> map_options -> layer = "map"
- [@@bs.val] [@@bs.scope "L"]
-
-external setView : layer -> float array -> int -> unit = "setView"
- [@@bs.send]
-
-type event
-
-external on : layer -> string -> (event -> unit) -> unit = "on"
- [@@bs.send]
-
-type lat_lng =
- { lat : float;
- lng : float;
- }
-
-external original_event : event -> Dom.mouseEvent = "originalEvent"
- [@@bs.get]
-
-external lat_lng : event -> lat_lng = "latlng"
- [@@bs.get]
-
-external target : event -> layer = "target"
- [@@bs.get]
-
-external get_lat_lng : layer -> unit -> lat_lng = "getLatLng"
- [@@bs.send]
-
-external title_layer : string -> layer = "tileLayer"
- [@@bs.val] [@@bs.scope "L"]
-
-external add_layer : layer -> layer -> unit = "addLayer"
- [@@bs.send]
-
-external clear_layers : layer -> unit = "clearLayers"
- [@@bs.send]
-
-external remove : layer -> unit = "remove"
- [@@bs.send]
-
-external get_layers : layer -> unit -> layer array = "getLayers"
- [@@bs.send]
-
-(* Fit bounds *)
-
-external feature_group : layer array -> layer = "featureGroup"
- [@@bs.val] [@@bs.scope "L"]
-
-type bounds
-
-external get_bounds : layer -> unit -> bounds = "getBounds"
- [@@bs.send]
-
-type fit_bounds_options =
- { padding: float array
- }
-
-external fit_bounds : layer -> bounds -> fit_bounds_options -> unit = "fitBounds"
- [@@bs.send]
-
-(* Icon *)
-
-type icon
-
-type div_icon_input =
- { className : string
- ; popupAnchor : float array
- ; html : Dom.element
- }
-
-external div_icon : div_icon_input -> icon = "divIcon"
- [@@bs.val] [@@bs.scope "L"]
-
-(* Marker *)
-
-type markerInput =
- { title : string
- ; icon : icon
- ; draggable : bool
- }
-
-external marker : lat_lng -> markerInput -> layer = "marker"
- [@@bs.val] [@@bs.scope "L"]
diff --git a/src/Lib/Modal.ml b/src/Lib/Modal.ml
deleted file mode 100644
index 5db88cd..0000000
--- a/src/Lib/Modal.ml
+++ /dev/null
@@ -1,25 +0,0 @@
-let hide () =
- let modal = Document.query_selector_unsafe "#g-Modal" in
- Element.remove_child Document.body modal
-
-let show content =
- let view =
- H.div
- [| HA.id "g-Modal" |]
- [| H.div
- [| HA.class_ "g-Modal__Curtain"
- ; HE.on_click (fun _ -> hide ())
- |]
- [| |]
- ; H.div
- [| HA.class_ "g-Modal__Window" |]
- [| Button.raw
- [| HA.class_ "g-Modal__Close"
- ; HE.on_click (fun _ -> hide ())
- |]
- [| H.div [| HA.class_ "fa fa-close" |] [| |] |]
- ; content
- |]
- |]
- in
- Element.append_child Document.body view
diff --git a/src/Lib/Option.ml b/src/Lib/Option.ml
deleted file mode 100644
index 1158b96..0000000
--- a/src/Lib/Option.ml
+++ /dev/null
@@ -1,9 +0,0 @@
-let withDefault default opt =
- match opt with
- | Some v -> v
- | None -> default
-
-let map f opt =
- match opt with
- | Some v -> Some (f v)
- | None -> None
diff --git a/src/Lib/String.ml b/src/Lib/String.ml
deleted file mode 100644
index be16d0e..0000000
--- a/src/Lib/String.ml
+++ /dev/null
@@ -1,35 +0,0 @@
-let format_float precision f =
- let str = Js.Float.toString f in
- match Js.String.split "." str with
- | [| a ; b |] -> a ^ "." ^ (Js.String.substring ~from:0 ~to_:precision b)
- | _ -> str
-
-external btoa : string -> string = "btoa"
- [@@bs.val] [@@bs.scope "window"]
-
-external atob : string -> string = "atob"
- [@@bs.val] [@@bs.scope "window"]
-
-external unescape : string -> string = "unescape"
- [@@bs.val]
-
-external escape : string -> string = "escape"
- [@@bs.val]
-
-external encodeURIComponent : string -> string = "encodeURIComponent"
- [@@bs.val]
-
-external decodeURIComponent : string -> string = "decodeURIComponent"
- [@@bs.val]
-
-let encode str =
- str
- |> encodeURIComponent
- |> unescape
- |> btoa
-
-let decode str =
- str
- |> atob
- |> escape
- |> decodeURIComponent
diff --git a/src/Lib/URI.ml b/src/Lib/URI.ml
deleted file mode 100644
index 705bc7b..0000000
--- a/src/Lib/URI.ml
+++ /dev/null
@@ -1,2 +0,0 @@
-external encode : string -> string = "encodeURIComponent"
- [@@bs.val]