;; Analyzed by ClojureScript 1.8.51
{:use-macros {go cljs.core.async.macros}, :excludes #{}, :name sinusoides.views.soundcloud, :imports nil, :requires {string clojure.string, clojure.string clojure.string, http cljs-http.client, cljs-http.client cljs-http.client, async cljs.core.async, cljs.core.async cljs.core.async}, :uses {<! cljs.core.async}, :defs {parse-tags {:protocol-inline nil, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 116, :column 8, :end-line 116, :end-column 18, :private true, :arglists (quote ([tag-list])), :doc "SoundCloud packs tags into one string, quoting the ones that have\n   spaces in them: `techno \"spoken word\" live`."}, :private true, :name sinusoides.views.soundcloud/parse-tags, :variadic false, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :end-column 18, :method-params ([tag-list]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 116, :end-line 116, :max-fixed-arity 1, :fn-var true, :arglists (quote ([tag-list])), :doc "SoundCloud packs tags into one string, quoting the ones that have\n   spaces in them: `techno \"spoken word\" live`."}, sound {:protocol-inline nil, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 130, :column 7, :end-line 130, :end-column 12, :arglists (quote ([track])), :doc "Channel yielding {:title :description :tags :permalink} for `track`,\n   or nil if SoundCloud does not answer.\n\n   oEmbed carries none of this, so we boot a throwaway player off-screen\n   and ask it: `getCurrentSound` is the only way back to the old v1\n   track fields that does not need a key."}, :name sinusoides.views.soundcloud/sound, :variadic false, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :end-column 12, :method-params ([track]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 130, :end-line 130, :max-fixed-arity 1, :fn-var true, :arglists (quote ([track])), :doc "Channel yielding {:title :description :tags :permalink} for `track`,\n   or nil if SoundCloud does not answer.\n\n   oEmbed carries none of this, so we boot a throwaway player off-screen\n   and ask it: `getCurrentSound` is the only way back to the old v1\n   track fields that does not need a key."}, api-script {:name sinusoides.views.soundcloud/api-script, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 45, :column 1, :end-line 45, :end-column 26, :private true, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 45, :column 16, :end-line 45, :end-column 26, :private true}}, detach! {:protocol-inline nil, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 126, :column 8, :end-line 126, :end-column 15, :private true, :arglists (quote ([frame]))}, :private true, :name sinusoides.views.soundcloud/detach!, :variadic false, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :end-column 15, :method-params ([frame]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 126, :end-line 126, :max-fixed-arity 1, :fn-var true, :arglists (quote ([frame]))}, events {:protocol-inline nil, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 67, :column 7, :end-line 67, :end-column 13, :arglists (quote ([])), :doc "SC.Widget.Events.  Only valid once `api-ready` has produced a value."}, :name sinusoides.views.soundcloud/events, :variadic false, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :end-column 13, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 67, :end-line 67, :max-fixed-arity 0, :fn-var true, :arglists (quote ([])), :doc "SC.Widget.Events.  Only valid once `api-ready` has produced a value."}, api-url {:name sinusoides.views.soundcloud/api-url, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 41, :column 1, :end-line 41, :end-column 23, :private true, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 41, :column 16, :end-line 41, :end-column 23, :private true}}, player-url {:protocol-inline nil, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 75, :column 7, :end-line 75, :end-column 17, :arglists (quote ([url & [{:keys [auto-play]}]])), :doc "Wraps a track URL into the address of a player page, which is what an\n   iframe's src wants.  Note the two are not interchangeable: once a\n   frame holds a player, SC.Widget/load takes the bare track URL and\n   builds its own player address from it.\n\n   The player's own chrome is turned off -- ours is in\n   _audio-player.scss -- and `auto-play` has to be part of the URL on\n   the very first load, since by the time the iframe has booted the\n   click that asked for it is long over.", :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(url [{:keys [auto-play]}])], :arglists ([url & [{:keys [auto-play]}]]), :arglists-meta (nil)}}, :name sinusoides.views.soundcloud/player-url, :variadic true, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :end-column 17, :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(url [{:keys [auto-play]}])], :arglists ([url & [{:keys [auto-play]}]]), :arglists-meta (nil)}, :method-params [(url [{:keys [auto-play]}])], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 75, :end-line 75, :max-fixed-arity 1, :fn-var true, :arglists ([url & [{:keys [auto-play]}]]), :doc "Wraps a track URL into the address of a player page, which is what an\n   iframe's src wants.  Note the two are not interchangeable: once a\n   frame holds a player, SC.Widget/load takes the bare track URL and\n   builds its own player address from it.\n\n   The player's own chrome is turned off -- ours is in\n   _audio-player.scss -- and `auto-play` has to be part of the URL on\n   the very first load, since by the time the iframe has booted the\n   click that asked for it is long over."}, strip-author {:protocol-inline nil, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 92, :column 8, :end-line 92, :end-column 20, :private true, :arglists (quote ([title author])), :doc "oEmbed titles arrive as \"Title by Author\"."}, :private true, :name sinusoides.views.soundcloud/strip-author, :variadic false, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :end-column 20, :method-params ([title author]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 92, :end-line 92, :max-fixed-arity 2, :fn-var true, :arglists (quote ([title author])), :doc "oEmbed titles arrive as \"Title by Author\"."}, resolve-timeout-ms {:name sinusoides.views.soundcloud/resolve-timeout-ms, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 43, :column 1, :end-line 43, :end-column 34, :private true, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 43, :column 16, :end-line 43, :end-column 34, :private true}}, info {:protocol-inline nil, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 101, :column 7, :end-line 101, :end-column 11, :arglists (quote ([track])), :doc "Channel yielding {:title :artwork} for `track`, or nil.\n\n   oEmbed is the one metadata endpoint left that needs no key, and it\n   is CORS-open, so the whole grid can ask at once."}, :name sinusoides.views.soundcloud/info, :variadic false, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :end-column 11, :method-params ([track]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 101, :end-line 101, :max-fixed-arity 1, :fn-var true, :arglists (quote ([track])), :doc "Channel yielding {:title :artwork} for `track`, or nil.\n\n   oEmbed is the one metadata endpoint left that needs no key, and it\n   is CORS-open, so the whole grid can ask at once."}, api-ready {:protocol-inline nil, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 61, :column 7, :end-line 61, :end-column 16, :arglists (quote ([])), :doc "Channel yielding js/SC once the widget API is usable, or nil if it\n   could not be loaded at all."}, :name sinusoides.views.soundcloud/api-ready, :variadic false, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :end-column 16, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 61, :end-line 61, :max-fixed-arity 0, :fn-var true, :arglists (quote ([])), :doc "Channel yielding js/SC once the widget API is usable, or nil if it\n   could not be loaded at all."}, track-url {:protocol-inline nil, :meta {:file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :line 72, :column 7, :end-line 72, :end-column 16, :arglists (quote ([track]))}, :name sinusoides.views.soundcloud/track-url, :variadic false, :file "/home/raskolnikov/dev/sinusoides/src/sinusoides/views/soundcloud.cljs", :end-column 16, :method-params ([track]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 72, :end-line 72, :max-fixed-arity 1, :fn-var true, :arglists (quote ([track]))}}, :require-macros {cljs.core.async.macros cljs.core.async.macros}, :cljs.analyzer/constants {:seen #{:description :tags :else :thumbnail_url :artwork :permalink :recur :title :with-credentials? :auto-play :tag_list :status :permalink_url :author_name :body :keywordize-keys}, :order [:auto-play :status :title :with-credentials? :body :recur :artwork :author_name :thumbnail_url :else :keywordize-keys :description :tags :permalink :tag_list :permalink_url]}, :doc nil}