@p4ulcristian/iris-layout 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/dist/cljs-runtime/cljs.core.js +38746 -0
  2. package/dist/cljs-runtime/cljs.core.js.map +1 -0
  3. package/dist/cljs-runtime/cljs.pprint.js +8400 -0
  4. package/dist/cljs-runtime/cljs.pprint.js.map +1 -0
  5. package/dist/cljs-runtime/cljs.stacktrace.js +561 -0
  6. package/dist/cljs-runtime/cljs.stacktrace.js.map +1 -0
  7. package/dist/cljs-runtime/cljs_env.js +1286 -0
  8. package/dist/cljs-runtime/clojure.data.js +295 -0
  9. package/dist/cljs-runtime/clojure.data.js.map +1 -0
  10. package/dist/cljs-runtime/clojure.set.js +382 -0
  11. package/dist/cljs-runtime/clojure.set.js.map +1 -0
  12. package/dist/cljs-runtime/clojure.string.js +480 -0
  13. package/dist/cljs-runtime/clojure.string.js.map +1 -0
  14. package/dist/cljs-runtime/clojure.walk.js +132 -0
  15. package/dist/cljs-runtime/clojure.walk.js.map +1 -0
  16. package/dist/cljs-runtime/devtools.async.js +90 -0
  17. package/dist/cljs-runtime/devtools.async.js.map +1 -0
  18. package/dist/cljs-runtime/devtools.context.js +11 -0
  19. package/dist/cljs-runtime/devtools.context.js.map +1 -0
  20. package/dist/cljs-runtime/devtools.core.js +175 -0
  21. package/dist/cljs-runtime/devtools.core.js.map +1 -0
  22. package/dist/cljs-runtime/devtools.defaults.js +20 -0
  23. package/dist/cljs-runtime/devtools.defaults.js.map +1 -0
  24. package/dist/cljs-runtime/devtools.format.js +631 -0
  25. package/dist/cljs-runtime/devtools.format.js.map +1 -0
  26. package/dist/cljs-runtime/devtools.formatters.budgeting.js +182 -0
  27. package/dist/cljs-runtime/devtools.formatters.budgeting.js.map +1 -0
  28. package/dist/cljs-runtime/devtools.formatters.core.js +220 -0
  29. package/dist/cljs-runtime/devtools.formatters.core.js.map +1 -0
  30. package/dist/cljs-runtime/devtools.formatters.helpers.js +228 -0
  31. package/dist/cljs-runtime/devtools.formatters.helpers.js.map +1 -0
  32. package/dist/cljs-runtime/devtools.formatters.js +261 -0
  33. package/dist/cljs-runtime/devtools.formatters.js.map +1 -0
  34. package/dist/cljs-runtime/devtools.formatters.markup.js +1174 -0
  35. package/dist/cljs-runtime/devtools.formatters.markup.js.map +1 -0
  36. package/dist/cljs-runtime/devtools.formatters.printing.js +313 -0
  37. package/dist/cljs-runtime/devtools.formatters.printing.js.map +1 -0
  38. package/dist/cljs-runtime/devtools.formatters.state.js +325 -0
  39. package/dist/cljs-runtime/devtools.formatters.state.js.map +1 -0
  40. package/dist/cljs-runtime/devtools.formatters.templating.js +666 -0
  41. package/dist/cljs-runtime/devtools.formatters.templating.js.map +1 -0
  42. package/dist/cljs-runtime/devtools.hints.js +193 -0
  43. package/dist/cljs-runtime/devtools.hints.js.map +1 -0
  44. package/dist/cljs-runtime/devtools.munging.js +1058 -0
  45. package/dist/cljs-runtime/devtools.munging.js.map +1 -0
  46. package/dist/cljs-runtime/devtools.prefs.js +87 -0
  47. package/dist/cljs-runtime/devtools.prefs.js.map +1 -0
  48. package/dist/cljs-runtime/devtools.preload.js +11 -0
  49. package/dist/cljs-runtime/devtools.preload.js.map +1 -0
  50. package/dist/cljs-runtime/devtools.protocols.js +98 -0
  51. package/dist/cljs-runtime/devtools.protocols.js.map +1 -0
  52. package/dist/cljs-runtime/devtools.reporter.js +81 -0
  53. package/dist/cljs-runtime/devtools.reporter.js.map +1 -0
  54. package/dist/cljs-runtime/devtools.toolbox.js +141 -0
  55. package/dist/cljs-runtime/devtools.toolbox.js.map +1 -0
  56. package/dist/cljs-runtime/devtools.util.js +517 -0
  57. package/dist/cljs-runtime/devtools.util.js.map +1 -0
  58. package/dist/cljs-runtime/devtools.version.js +9 -0
  59. package/dist/cljs-runtime/devtools.version.js.map +1 -0
  60. package/dist/cljs-runtime/goog.array.array.js +659 -0
  61. package/dist/cljs-runtime/goog.array.array.js.map +9 -0
  62. package/dist/cljs-runtime/goog.asserts.asserts.js +133 -0
  63. package/dist/cljs-runtime/goog.asserts.asserts.js.map +9 -0
  64. package/dist/cljs-runtime/goog.asserts.dom.js +90 -0
  65. package/dist/cljs-runtime/goog.asserts.dom.js.map +9 -0
  66. package/dist/cljs-runtime/goog.async.nexttick.js +93 -0
  67. package/dist/cljs-runtime/goog.async.nexttick.js.map +9 -0
  68. package/dist/cljs-runtime/goog.base.js +1261 -0
  69. package/dist/cljs-runtime/goog.base.js.map +9 -0
  70. package/dist/cljs-runtime/goog.collections.maps.js +82 -0
  71. package/dist/cljs-runtime/goog.collections.maps.js.map +9 -0
  72. package/dist/cljs-runtime/goog.debug.entrypointregistry.js +44 -0
  73. package/dist/cljs-runtime/goog.debug.entrypointregistry.js.map +9 -0
  74. package/dist/cljs-runtime/goog.debug.error.js +30 -0
  75. package/dist/cljs-runtime/goog.debug.error.js.map +9 -0
  76. package/dist/cljs-runtime/goog.dom.asserts.js +40 -0
  77. package/dist/cljs-runtime/goog.dom.asserts.js.map +9 -0
  78. package/dist/cljs-runtime/goog.dom.browserfeature.js +21 -0
  79. package/dist/cljs-runtime/goog.dom.browserfeature.js.map +9 -0
  80. package/dist/cljs-runtime/goog.dom.dom.js +1087 -0
  81. package/dist/cljs-runtime/goog.dom.dom.js.map +9 -0
  82. package/dist/cljs-runtime/goog.dom.element.js +69 -0
  83. package/dist/cljs-runtime/goog.dom.element.js.map +9 -0
  84. package/dist/cljs-runtime/goog.dom.htmlelement.js +7 -0
  85. package/dist/cljs-runtime/goog.dom.htmlelement.js.map +9 -0
  86. package/dist/cljs-runtime/goog.dom.nodetype.js +6 -0
  87. package/dist/cljs-runtime/goog.dom.nodetype.js.map +9 -0
  88. package/dist/cljs-runtime/goog.dom.safe.js +277 -0
  89. package/dist/cljs-runtime/goog.dom.safe.js.map +9 -0
  90. package/dist/cljs-runtime/goog.dom.tagname.js +147 -0
  91. package/dist/cljs-runtime/goog.dom.tagname.js.map +9 -0
  92. package/dist/cljs-runtime/goog.dom.tags.js +10 -0
  93. package/dist/cljs-runtime/goog.dom.tags.js.map +9 -0
  94. package/dist/cljs-runtime/goog.flags.flags.js +12 -0
  95. package/dist/cljs-runtime/goog.flags.flags.js.map +9 -0
  96. package/dist/cljs-runtime/goog.fs.blob.js +38 -0
  97. package/dist/cljs-runtime/goog.fs.blob.js.map +9 -0
  98. package/dist/cljs-runtime/goog.fs.url.js +37 -0
  99. package/dist/cljs-runtime/goog.fs.url.js.map +9 -0
  100. package/dist/cljs-runtime/goog.functions.functions.js +211 -0
  101. package/dist/cljs-runtime/goog.functions.functions.js.map +9 -0
  102. package/dist/cljs-runtime/goog.html.safehtml.js +321 -0
  103. package/dist/cljs-runtime/goog.html.safehtml.js.map +9 -0
  104. package/dist/cljs-runtime/goog.html.safescript.js +65 -0
  105. package/dist/cljs-runtime/goog.html.safescript.js.map +9 -0
  106. package/dist/cljs-runtime/goog.html.safestyle.js +175 -0
  107. package/dist/cljs-runtime/goog.html.safestyle.js.map +9 -0
  108. package/dist/cljs-runtime/goog.html.safestylesheet.js +99 -0
  109. package/dist/cljs-runtime/goog.html.safestylesheet.js.map +9 -0
  110. package/dist/cljs-runtime/goog.html.safeurl.js +231 -0
  111. package/dist/cljs-runtime/goog.html.safeurl.js.map +9 -0
  112. package/dist/cljs-runtime/goog.html.trustedresourceurl.js +123 -0
  113. package/dist/cljs-runtime/goog.html.trustedresourceurl.js.map +9 -0
  114. package/dist/cljs-runtime/goog.html.trustedtypes.js +16 -0
  115. package/dist/cljs-runtime/goog.html.trustedtypes.js.map +9 -0
  116. package/dist/cljs-runtime/goog.html.uncheckedconversions.js +52 -0
  117. package/dist/cljs-runtime/goog.html.uncheckedconversions.js.map +9 -0
  118. package/dist/cljs-runtime/goog.labs.useragent.browser.js +352 -0
  119. package/dist/cljs-runtime/goog.labs.useragent.browser.js.map +9 -0
  120. package/dist/cljs-runtime/goog.labs.useragent.engine.js +73 -0
  121. package/dist/cljs-runtime/goog.labs.useragent.engine.js.map +9 -0
  122. package/dist/cljs-runtime/goog.labs.useragent.highentropy.highentropydata.js +14 -0
  123. package/dist/cljs-runtime/goog.labs.useragent.highentropy.highentropydata.js.map +9 -0
  124. package/dist/cljs-runtime/goog.labs.useragent.highentropy.highentropyvalue.js +74 -0
  125. package/dist/cljs-runtime/goog.labs.useragent.highentropy.highentropyvalue.js.map +9 -0
  126. package/dist/cljs-runtime/goog.labs.useragent.platform.js +147 -0
  127. package/dist/cljs-runtime/goog.labs.useragent.platform.js.map +9 -0
  128. package/dist/cljs-runtime/goog.labs.useragent.useragent.js +21 -0
  129. package/dist/cljs-runtime/goog.labs.useragent.useragent.js.map +9 -0
  130. package/dist/cljs-runtime/goog.labs.useragent.util.js +81 -0
  131. package/dist/cljs-runtime/goog.labs.useragent.util.js.map +9 -0
  132. package/dist/cljs-runtime/goog.math.coordinate.js +97 -0
  133. package/dist/cljs-runtime/goog.math.coordinate.js.map +9 -0
  134. package/dist/cljs-runtime/goog.math.integer.js +445 -0
  135. package/dist/cljs-runtime/goog.math.integer.js.map +9 -0
  136. package/dist/cljs-runtime/goog.math.long.js +437 -0
  137. package/dist/cljs-runtime/goog.math.long.js.map +9 -0
  138. package/dist/cljs-runtime/goog.math.math.js +158 -0
  139. package/dist/cljs-runtime/goog.math.math.js.map +9 -0
  140. package/dist/cljs-runtime/goog.math.size.js +76 -0
  141. package/dist/cljs-runtime/goog.math.size.js.map +9 -0
  142. package/dist/cljs-runtime/goog.object.object.js +284 -0
  143. package/dist/cljs-runtime/goog.object.object.js.map +9 -0
  144. package/dist/cljs-runtime/goog.reflect.reflect.js +32 -0
  145. package/dist/cljs-runtime/goog.reflect.reflect.js.map +9 -0
  146. package/dist/cljs-runtime/goog.string.const.js +35 -0
  147. package/dist/cljs-runtime/goog.string.const.js.map +9 -0
  148. package/dist/cljs-runtime/goog.string.internal.js +119 -0
  149. package/dist/cljs-runtime/goog.string.internal.js.map +9 -0
  150. package/dist/cljs-runtime/goog.string.string.js +462 -0
  151. package/dist/cljs-runtime/goog.string.string.js.map +9 -0
  152. package/dist/cljs-runtime/goog.string.stringbuffer.js +32 -0
  153. package/dist/cljs-runtime/goog.string.stringbuffer.js.map +9 -0
  154. package/dist/cljs-runtime/goog.string.typedstring.js +9 -0
  155. package/dist/cljs-runtime/goog.string.typedstring.js.map +9 -0
  156. package/dist/cljs-runtime/goog.structs.structs.js +199 -0
  157. package/dist/cljs-runtime/goog.structs.structs.js.map +9 -0
  158. package/dist/cljs-runtime/goog.uri.uri.js +628 -0
  159. package/dist/cljs-runtime/goog.uri.uri.js.map +9 -0
  160. package/dist/cljs-runtime/goog.uri.utils.js +326 -0
  161. package/dist/cljs-runtime/goog.uri.utils.js.map +9 -0
  162. package/dist/cljs-runtime/goog.useragent.useragent.js +139 -0
  163. package/dist/cljs-runtime/goog.useragent.useragent.js.map +9 -0
  164. package/dist/cljs-runtime/iris_layout.components.entity_card_group.js +202 -0
  165. package/dist/cljs-runtime/iris_layout.components.entity_card_group.js.map +1 -0
  166. package/dist/cljs-runtime/iris_layout.components.entity_tile.js +295 -0
  167. package/dist/cljs-runtime/iris_layout.components.entity_tile.js.map +1 -0
  168. package/dist/cljs-runtime/iris_layout.components.entity_tile_group.js +33 -0
  169. package/dist/cljs-runtime/iris_layout.components.entity_tile_group.js.map +1 -0
  170. package/dist/cljs-runtime/iris_layout.components.resizer.js +91 -0
  171. package/dist/cljs-runtime/iris_layout.components.resizer.js.map +1 -0
  172. package/dist/cljs-runtime/iris_layout.components.touch_drag.js +399 -0
  173. package/dist/cljs-runtime/iris_layout.components.touch_drag.js.map +1 -0
  174. package/dist/cljs-runtime/iris_layout.core.js +1372 -0
  175. package/dist/cljs-runtime/iris_layout.core.js.map +1 -0
  176. package/dist/cljs-runtime/iris_layout.layout.js +328 -0
  177. package/dist/cljs-runtime/iris_layout.layout.js.map +1 -0
  178. package/dist/cljs-runtime/reagent.core.js +993 -0
  179. package/dist/cljs-runtime/reagent.core.js.map +1 -0
  180. package/dist/cljs-runtime/reagent.debug.js +75 -0
  181. package/dist/cljs-runtime/reagent.debug.js.map +1 -0
  182. package/dist/cljs-runtime/reagent.impl.batching.js +270 -0
  183. package/dist/cljs-runtime/reagent.impl.batching.js.map +1 -0
  184. package/dist/cljs-runtime/reagent.impl.component.js +758 -0
  185. package/dist/cljs-runtime/reagent.impl.component.js.map +1 -0
  186. package/dist/cljs-runtime/reagent.impl.input.js +175 -0
  187. package/dist/cljs-runtime/reagent.impl.input.js.map +1 -0
  188. package/dist/cljs-runtime/reagent.impl.protocols.js +99 -0
  189. package/dist/cljs-runtime/reagent.impl.protocols.js.map +1 -0
  190. package/dist/cljs-runtime/reagent.impl.template.js +660 -0
  191. package/dist/cljs-runtime/reagent.impl.template.js.map +1 -0
  192. package/dist/cljs-runtime/reagent.impl.util.js +748 -0
  193. package/dist/cljs-runtime/reagent.impl.util.js.map +1 -0
  194. package/dist/cljs-runtime/reagent.ratom.js +1668 -0
  195. package/dist/cljs-runtime/reagent.ratom.js.map +1 -0
  196. package/dist/cljs-runtime/shadow.esm.esm_import$react.js +5 -0
  197. package/dist/cljs-runtime/shadow.module.iris-layout.append.js +2 -0
  198. package/dist/cljs-runtime/shadow.module.iris-layout.prepend.js +2 -0
  199. package/dist/iris-layout.js +375 -355
  200. package/dist/styles.css +287 -9
  201. package/package.json +1 -1
@@ -0,0 +1,1058 @@
1
+ import "./cljs_env.js";
2
+ import "./cljs.core.js";
3
+ import "./clojure.string.js";
4
+ import "./devtools.context.js";
5
+ import "./goog.object.object.js";
6
+ import "./goog.string.stringbuffer.js";
7
+ goog.provide('devtools.munging');
8
+ goog.scope(function(){
9
+ devtools.munging.goog$module$goog$object = goog.module.get('goog.object');
10
+ });
11
+ devtools.munging.dollar_replacement = "~\uFE69~";
12
+ devtools.munging.max_fixed_arity_to_scan = (64);
13
+ devtools.munging.get_global_scope = (function devtools$munging$get_global_scope(){
14
+ return devtools.context.get_root.call(null);
15
+ });
16
+ devtools.munging.js_reserved_QMARK_ = (function devtools$munging$js_reserved_QMARK_(x){
17
+ var temp__5802__auto__ = (function (){var temp__5802__auto__ = (devtools.munging.get_global_scope.call(null)["cljs"]);
18
+ if(cljs.core.truth_(temp__5802__auto__)){
19
+ var o8770 = temp__5802__auto__;
20
+ var temp__5802__auto____$1 = (o8770["core"]);
21
+ if(cljs.core.truth_(temp__5802__auto____$1)){
22
+ var o8771 = temp__5802__auto____$1;
23
+ return (o8771["js_reserved_QMARK_"]);
24
+ } else {
25
+ return null;
26
+ }
27
+ } else {
28
+ return null;
29
+ }
30
+ })();
31
+ if(cljs.core.truth_(temp__5802__auto__)){
32
+ var js_reserved_fn = temp__5802__auto__;
33
+ return (js_reserved_fn.cljs$core$IFn$_invoke$arity$1 ? js_reserved_fn.cljs$core$IFn$_invoke$arity$1(x) : js_reserved_fn.call(null,x));
34
+ } else {
35
+ return null;
36
+ }
37
+ });
38
+ devtools.munging.get_fn_source_safely = (function devtools$munging$get_fn_source_safely(f){
39
+ try{if(cljs.core.truth_("toString" in f)){
40
+ var o__8244__auto__ = f;
41
+ return (o__8244__auto__["toString"]).call(o__8244__auto__);
42
+ } else {
43
+ return "";
44
+ }
45
+ }catch (e8784){var _ = e8784;
46
+ return "";
47
+ }});
48
+ devtools.munging.get_fn_fixed_arity = (function devtools$munging$get_fn_fixed_arity(f,n){
49
+ return (f[["cljs$core$IFn$_invoke$arity$",cljs.core.str.cljs$core$IFn$_invoke$arity$1(n)].join('')]);
50
+ });
51
+ devtools.munging.get_fn_variadic_arity = (function devtools$munging$get_fn_variadic_arity(f){
52
+ return (f["cljs$core$IFn$_invoke$arity$variadic"]);
53
+ });
54
+ devtools.munging.get_fn_max_fixed_arity = (function devtools$munging$get_fn_max_fixed_arity(f){
55
+ return (f["cljs$lang$maxFixedArity"]);
56
+ });
57
+ devtools.munging.get_type_name = (function devtools$munging$get_type_name(t){
58
+ var sb = (new goog.string.StringBuffer());
59
+ var writer = (new cljs.core.StringBufferWriter(sb));
60
+ try{var o__8244__auto___9189 = t;
61
+ (o__8244__auto___9189["cljs$lang$ctorPrWriter"]).call(o__8244__auto___9189,t,writer);
62
+ }catch (e8813){var __9190 = e8813;
63
+ }
64
+ writer.cljs$core$IWriter$_flush$arity$1(null);
65
+
66
+ return cljs.core.str.cljs$core$IFn$_invoke$arity$1(sb);
67
+ });
68
+ /**
69
+ * Given a character with a single digit converts it into a subscript character.
70
+ * Zero character maps to unicode 'SUBSCRIPT ZERO' (U+2080).
71
+ */
72
+ devtools.munging.char_to_subscript = (function devtools$munging$char_to_subscript(char$){
73
+ if(typeof char$ === 'string'){
74
+ } else {
75
+ throw (new Error("Assert failed: (string? char)"));
76
+ }
77
+
78
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(char$),(1))){
79
+ } else {
80
+ throw (new Error("Assert failed: (= (count char) 1)"));
81
+ }
82
+
83
+ var char_code = (function (){var o__8244__auto__ = (new String(char$));
84
+ return (o__8244__auto__["charCodeAt"]).call(o__8244__auto__,(0));
85
+ })();
86
+ var num_code = (char_code - (48));
87
+ var subscript_code = ((8320) + num_code);
88
+ var o__8244__auto__ = String;
89
+ return (o__8244__auto__["fromCharCode"]).call(o__8244__auto__,subscript_code);
90
+ });
91
+ /**
92
+ * Given a subscript number converts it into a string representation consisting of unicode subscript characters (digits).
93
+ */
94
+ devtools.munging.make_subscript = (function devtools$munging$make_subscript(subscript){
95
+ if(typeof subscript === 'number'){
96
+ } else {
97
+ throw (new Error("Assert failed: (number? subscript)"));
98
+ }
99
+
100
+ return clojure.string.join.cljs$core$IFn$_invoke$arity$1(cljs.core.map.cljs$core$IFn$_invoke$arity$2(devtools.munging.char_to_subscript,cljs.core.str.cljs$core$IFn$_invoke$arity$1(subscript)));
101
+ });
102
+ /**
103
+ * Given a character with a single digit converts it into a superscript character.
104
+ * Zero character maps to unicode 'SUPERSCRIPT ZERO' (U+2070).
105
+ */
106
+ devtools.munging.char_to_superscript = (function devtools$munging$char_to_superscript(char$){
107
+ if(typeof char$ === 'string'){
108
+ } else {
109
+ throw (new Error("Assert failed: (string? char)"));
110
+ }
111
+
112
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(char$),(1))){
113
+ } else {
114
+ throw (new Error("Assert failed: (= (count char) 1)"));
115
+ }
116
+
117
+ var char_code = (function (){var o__8244__auto__ = (new String(char$));
118
+ return (o__8244__auto__["charCodeAt"]).call(o__8244__auto__,(0));
119
+ })();
120
+ var num_code = (char_code - (48));
121
+ var superscript_code = (function (){var G__8859 = num_code;
122
+ switch (G__8859) {
123
+ case (1):
124
+ return (185);
125
+
126
+ break;
127
+ case (2):
128
+ return (178);
129
+
130
+ break;
131
+ case (3):
132
+ return (179);
133
+
134
+ break;
135
+ default:
136
+ return ((8304) + num_code);
137
+
138
+ }
139
+ })();
140
+ var o__8244__auto__ = String;
141
+ return (o__8244__auto__["fromCharCode"]).call(o__8244__auto__,superscript_code);
142
+ });
143
+ /**
144
+ * Given a superscript number converts it into a string representation consisting of unicode superscript characters (digits).
145
+ */
146
+ devtools.munging.make_superscript = (function devtools$munging$make_superscript(superscript){
147
+ if(typeof superscript === 'number'){
148
+ } else {
149
+ throw (new Error("Assert failed: (number? superscript)"));
150
+ }
151
+
152
+ return clojure.string.join.cljs$core$IFn$_invoke$arity$1(cljs.core.map.cljs$core$IFn$_invoke$arity$2(devtools.munging.char_to_superscript,cljs.core.str.cljs$core$IFn$_invoke$arity$1(superscript)));
153
+ });
154
+ /**
155
+ * Given a Javascript name answers if the name was likely generated by ClojureScript.
156
+ * We use a simple heuristic here:
157
+ * The name must contain at least two separate dollars because we assume two-segment namespaces.
158
+ */
159
+ devtools.munging.cljs_fn_name_QMARK_ = (function devtools$munging$cljs_fn_name_QMARK_(munged_name){
160
+ if(typeof munged_name === 'string'){
161
+ return (!((cljs.core.re_matches(/^[^$]*\$[^$]+\$.*$/,munged_name) == null)));
162
+ } else {
163
+ return null;
164
+ }
165
+ });
166
+ /**
167
+ * Given a function source code parses out [name args]. Note that both strings are still munged.
168
+ * Suitable for further processing.
169
+ *
170
+ * For example for input below the function will return ["devtools_sample$core$hello" "name, unused_param"]:
171
+ *
172
+ * function devtools_sample$core$hello(name, unused_param){
173
+ * return [cljs.core.str("hello, "),cljs.core.str(name),cljs.core.str("!")].join('');
174
+ * }
175
+ *
176
+ */
177
+ devtools.munging.parse_fn_source = (function devtools$munging$parse_fn_source(fn_source){
178
+ var temp__5802__auto__ = cljs.core.second(cljs.core.re_find(/function\s(.*?)\{/,fn_source));
179
+ if(cljs.core.truth_(temp__5802__auto__)){
180
+ var meat = temp__5802__auto__;
181
+ var temp__5802__auto____$1 = cljs.core.re_find(/(.*?)\((.*)\)/,meat);
182
+ if(cljs.core.truth_(temp__5802__auto____$1)){
183
+ var match = temp__5802__auto____$1;
184
+ return cljs.core.rest(match);
185
+ } else {
186
+ return null;
187
+ }
188
+ } else {
189
+ return null;
190
+ }
191
+ });
192
+ devtools.munging.trivial_fn_source_QMARK_ = (function devtools$munging$trivial_fn_source_QMARK_(fn_source){
193
+ if(typeof fn_source === 'string'){
194
+ } else {
195
+ throw (new Error("Assert failed: (string? fn-source)"));
196
+ }
197
+
198
+ return (((!((cljs.core.re_matches(/function\s*\(\s*\)\s*\{\s*\}\s*/,fn_source) == null)))) || ((((!((cljs.core.re_matches(/function.*\(\)\s*\{\s*\[native code\]\s*\}\s*/,fn_source) == null)))) || ((!((cljs.core.re_matches(/function anonymous\(\s*\)\s*\{\s*\}/,fn_source) == null)))))));
199
+ });
200
+ /**
201
+ * Given a Javascript function object returns true if the function looks like a ClojureScript function.
202
+ *
203
+ * Uses various heuristics:
204
+ * 1. must be fn? (is javascript function or satisfies Fn and IFn protocols)
205
+ * 2. and name must be cljs-fn-name? (name can come from f.name or parsed out of function source)
206
+ * 3. or if anonymous function, must be non-trivial
207
+ */
208
+ devtools.munging.cljs_fn_QMARK_ = (function devtools$munging$cljs_fn_QMARK_(f){
209
+ if(cljs.core.truth_((function (){try{return cljs.core.fn_QMARK_(f);
210
+ }catch (e8914){var _e__8267__auto__ = e8914;
211
+ return false;
212
+ }})())){
213
+ var name = (f[cljs.core.name]);
214
+ if((!(cljs.core.empty_QMARK_(name)))){
215
+ return devtools.munging.cljs_fn_name_QMARK_(name);
216
+ } else {
217
+ var fn_source = devtools.munging.get_fn_source_safely(f);
218
+ var vec__8919 = devtools.munging.parse_fn_source(fn_source);
219
+ var name__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__8919,(0),null);
220
+ if((!(cljs.core.empty_QMARK_(name__$1)))){
221
+ return devtools.munging.cljs_fn_name_QMARK_(name__$1);
222
+ } else {
223
+ return (!(devtools.munging.trivial_fn_source_QMARK_(fn_source)));
224
+ }
225
+ }
226
+ } else {
227
+ return null;
228
+ }
229
+ });
230
+ /**
231
+ * Standard cljs.core/demunge is too aggressive in replacing dollars.
232
+ * This wrapper function works around it by leaving dollars intact.
233
+ */
234
+ devtools.munging.dollar_preserving_demunge = (function devtools$munging$dollar_preserving_demunge(munged_name){
235
+ return clojure.string.replace(cljs.core.demunge(clojure.string.replace(munged_name,"$",devtools.munging.dollar_replacement)),devtools.munging.dollar_replacement,"$");
236
+ });
237
+ devtools.munging.revert_reserved = (function devtools$munging$revert_reserved(s){
238
+ var or__5002__auto__ = (function (){var temp__5802__auto__ = cljs.core.re_matches(/(.*)\$/,s);
239
+ if(cljs.core.truth_(temp__5802__auto__)){
240
+ var m = temp__5802__auto__;
241
+ if(cljs.core.truth_(devtools.munging.js_reserved_QMARK_(cljs.core.second(m)))){
242
+ return cljs.core.second(m);
243
+ } else {
244
+ return null;
245
+ }
246
+ } else {
247
+ return null;
248
+ }
249
+ })();
250
+ if(cljs.core.truth_(or__5002__auto__)){
251
+ return or__5002__auto__;
252
+ } else {
253
+ return s;
254
+ }
255
+ });
256
+ devtools.munging.reserved_aware_demunge = (function devtools$munging$reserved_aware_demunge(munged_name){
257
+ return devtools.munging.revert_reserved(devtools.munging.dollar_preserving_demunge(munged_name));
258
+ });
259
+ devtools.munging.proper_demunge = (function devtools$munging$proper_demunge(munged_name){
260
+ return devtools.munging.reserved_aware_demunge(munged_name);
261
+ });
262
+ devtools.munging.proper_arg_demunge = (function devtools$munging$proper_arg_demunge(munged_arg_name){
263
+ return clojure.string.replace(devtools.munging.proper_demunge(munged_arg_name),/^-(.*)$/,"_$1");
264
+ });
265
+ devtools.munging.proper_ns_demunge = (function devtools$munging$proper_ns_demunge(munged_ns_name){
266
+ return clojure.string.replace(devtools.munging.proper_demunge(munged_ns_name),"$",".");
267
+ });
268
+ devtools.munging.ns_exists_QMARK_ = (function devtools$munging$ns_exists_QMARK_(ns_module_name){
269
+ if(typeof ns_module_name === 'string'){
270
+ } else {
271
+ throw (new Error("Assert failed: (string? ns-module-name)"));
272
+ }
273
+
274
+ var temp__5806__auto__ = devtools.munging.goog$module$goog$object.getValueByKeys(devtools.munging.get_global_scope.call(null),ns_module_name.split("."));
275
+ if((temp__5806__auto__ == null)){
276
+ return null;
277
+ } else {
278
+ var ns_obj = temp__5806__auto__;
279
+ return cljs.core.object_QMARK_(ns_obj);
280
+ }
281
+ });
282
+ /**
283
+ * Given a name broken into namespace parts returns [detected-ns remaining-parts],
284
+ * where detected-ns is a string representing longest detected existing namespace and
285
+ * remaining-parts is a vector of remaining input parts not included in the detected-ns concatenation.
286
+ *
287
+ * For given input ["cljs" "core" "first"] returns ["cljs.core" ["first"]] (assuming cljs.core exists)
288
+ */
289
+ devtools.munging.detect_namespace_prefix = (function devtools$munging$detect_namespace_prefix(var_args){
290
+ var args__5732__auto__ = [];
291
+ var len__5726__auto___9210 = arguments.length;
292
+ var i__5727__auto___9211 = (0);
293
+ while(true){
294
+ if((i__5727__auto___9211 < len__5726__auto___9210)){
295
+ args__5732__auto__.push((arguments[i__5727__auto___9211]));
296
+
297
+ var G__9212 = (i__5727__auto___9211 + (1));
298
+ i__5727__auto___9211 = G__9212;
299
+ continue;
300
+ } else {
301
+ }
302
+ break;
303
+ }
304
+
305
+ var argseq__5733__auto__ = ((((1) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((1)),(0),null)):null);
306
+ return devtools.munging.detect_namespace_prefix.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__5733__auto__);
307
+ });
308
+
309
+ (devtools.munging.detect_namespace_prefix.cljs$core$IFn$_invoke$arity$variadic = (function (tokens,p__8976){
310
+ var vec__8977 = p__8976;
311
+ var ns_detector = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__8977,(0),null);
312
+ var effective_detector = (function (){var or__5002__auto__ = ns_detector;
313
+ if(cljs.core.truth_(or__5002__auto__)){
314
+ return or__5002__auto__;
315
+ } else {
316
+ return devtools.munging.ns_exists_QMARK_;
317
+ }
318
+ })();
319
+ var name_tokens = cljs.core.PersistentVector.EMPTY;
320
+ var remaining_tokens = tokens;
321
+ while(true){
322
+ if(cljs.core.empty_QMARK_(remaining_tokens)){
323
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, ["",name_tokens], null);
324
+ } else {
325
+ var ns_name = clojure.string.join.cljs$core$IFn$_invoke$arity$2(".",remaining_tokens);
326
+ if(cljs.core.truth_((effective_detector.cljs$core$IFn$_invoke$arity$1 ? effective_detector.cljs$core$IFn$_invoke$arity$1(ns_name) : effective_detector.call(null,ns_name)))){
327
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [ns_name,name_tokens], null);
328
+ } else {
329
+ var G__9216 = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.last(remaining_tokens)], null),name_tokens);
330
+ var G__9218 = cljs.core.butlast(remaining_tokens);
331
+ name_tokens = G__9216;
332
+ remaining_tokens = G__9218;
333
+ continue;
334
+ }
335
+ }
336
+ break;
337
+ }
338
+ }));
339
+
340
+ (devtools.munging.detect_namespace_prefix.cljs$lang$maxFixedArity = (1));
341
+
342
+ /** @this {Function} */
343
+ (devtools.munging.detect_namespace_prefix.cljs$lang$applyTo = (function (seq8953){
344
+ var G__8954 = cljs.core.first(seq8953);
345
+ var seq8953__$1 = cljs.core.next(seq8953);
346
+ var self__5711__auto__ = this;
347
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__8954,seq8953__$1);
348
+ }));
349
+
350
+ devtools.munging.normalize_arity = (function devtools$munging$normalize_arity(arity_tokens){
351
+ if((!(cljs.core.empty_QMARK_(arity_tokens)))){
352
+ var arity = cljs.core.first(arity_tokens);
353
+ var G__8989 = arity;
354
+ switch (G__8989) {
355
+ case "variadic":
356
+ return arity;
357
+
358
+ break;
359
+ default:
360
+ return parseInt(arity,(10));
361
+
362
+ }
363
+ } else {
364
+ return null;
365
+ }
366
+ });
367
+ devtools.munging.strip_arity = (function devtools$munging$strip_arity(tokens){
368
+ var vec__8998 = cljs.core.split_with((function (p1__8997_SHARP_){
369
+ return cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(p1__8997_SHARP_,"arity");
370
+ }),tokens);
371
+ var prefix_tokens = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__8998,(0),null);
372
+ var arity_tokens = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__8998,(1),null);
373
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [prefix_tokens,devtools.munging.normalize_arity(cljs.core.rest(arity_tokens))], null);
374
+ });
375
+ devtools.munging.parse_protocol = (function devtools$munging$parse_protocol(tokens,detector){
376
+ var remaining_tokens = tokens;
377
+ var name_tokens = cljs.core.PersistentVector.EMPTY;
378
+ while(true){
379
+ if(cljs.core.empty_QMARK_(remaining_tokens)){
380
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [name_tokens], null);
381
+ } else {
382
+ var vec__9018 = devtools.munging.detect_namespace_prefix.cljs$core$IFn$_invoke$arity$variadic(remaining_tokens,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([detector], 0));
383
+ var protocol_ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9018,(0),null);
384
+ var name_and_method_tokens = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9018,(1),null);
385
+ if(cljs.core.empty_QMARK_(protocol_ns)){
386
+ var G__9230 = cljs.core.rest(remaining_tokens);
387
+ var G__9231 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(name_tokens,cljs.core.first(remaining_tokens));
388
+ remaining_tokens = G__9230;
389
+ name_tokens = G__9231;
390
+ continue;
391
+ } else {
392
+ return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [name_tokens,protocol_ns,cljs.core.first(name_and_method_tokens),cljs.core.rest(name_and_method_tokens)], null);
393
+ }
394
+ }
395
+ break;
396
+ }
397
+ });
398
+ /**
399
+ * Given a munged-name from Javascript lands attempts to break it into:
400
+ * [fn-ns fn-name protocol-ns protocol-name protocol-method arity].
401
+ *
402
+ * Protocol and arity elements are optional. Function elements are always present or "".
403
+ *
404
+ * examples for input:
405
+ * cljs$core$rest => ['cljs.core', 'rest']
406
+ * cljs.core.reduce$cljs$core$IFn$_invoke$arity$3 => ['cljs.core' 'reduce' 'cljs.core' 'IFn' '_invoke' 3]
407
+ */
408
+ devtools.munging.break_munged_name = (function devtools$munging$break_munged_name(var_args){
409
+ var G__9037 = arguments.length;
410
+ switch (G__9037) {
411
+ case 1:
412
+ return devtools.munging.break_munged_name.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
413
+
414
+ break;
415
+ case 2:
416
+ return devtools.munging.break_munged_name.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
417
+
418
+ break;
419
+ default:
420
+ throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
421
+
422
+ }
423
+ });
424
+
425
+ (devtools.munging.break_munged_name.cljs$core$IFn$_invoke$arity$1 = (function (munged_name){
426
+ return devtools.munging.break_munged_name.cljs$core$IFn$_invoke$arity$2(munged_name,null);
427
+ }));
428
+
429
+ (devtools.munging.break_munged_name.cljs$core$IFn$_invoke$arity$2 = (function (munged_name,ns_detector){
430
+ if(cljs.core.empty_QMARK_(munged_name)){
431
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, ["",""], null);
432
+ } else {
433
+ var effective_detector = (function (){var or__5002__auto__ = ns_detector;
434
+ if(cljs.core.truth_(or__5002__auto__)){
435
+ return or__5002__auto__;
436
+ } else {
437
+ return devtools.munging.ns_exists_QMARK_;
438
+ }
439
+ })();
440
+ var tokens = cljs.core.vec(munged_name.split(/[$.]/));
441
+ var vec__9071 = devtools.munging.strip_arity(tokens);
442
+ var tokens__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9071,(0),null);
443
+ var arity = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9071,(1),null);
444
+ var vec__9074 = devtools.munging.detect_namespace_prefix.cljs$core$IFn$_invoke$arity$variadic(tokens__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([effective_detector], 0));
445
+ var fn_ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9074,(0),null);
446
+ var tokens__$2 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9074,(1),null);
447
+ var vec__9077 = devtools.munging.parse_protocol(tokens__$2,effective_detector);
448
+ var fn_name_tokens = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9077,(0),null);
449
+ var protocol_ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9077,(1),null);
450
+ var protocol_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9077,(2),null);
451
+ var protocol_method_tokens = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9077,(3),null);
452
+ var fn_name = clojure.string.join.cljs$core$IFn$_invoke$arity$2("$",fn_name_tokens);
453
+ var protocol_method = (cljs.core.truth_(protocol_method_tokens)?clojure.string.join.cljs$core$IFn$_invoke$arity$2("$",protocol_method_tokens):null);
454
+ return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [fn_ns,fn_name,protocol_ns,protocol_name,protocol_method,arity], null);
455
+ }
456
+ }));
457
+
458
+ (devtools.munging.break_munged_name.cljs$lang$maxFixedArity = 2);
459
+
460
+ /**
461
+ * Given a munged-name from Javascript lands attempts to break it into a namespace part and remaining short name.
462
+ * Then applies appropriate demunging on them and returns ClojureScript versions of the names.
463
+ */
464
+ devtools.munging.break_and_demunge_name = (function devtools$munging$break_and_demunge_name(var_args){
465
+ var G__9090 = arguments.length;
466
+ switch (G__9090) {
467
+ case 1:
468
+ return devtools.munging.break_and_demunge_name.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
469
+
470
+ break;
471
+ case 2:
472
+ return devtools.munging.break_and_demunge_name.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
473
+
474
+ break;
475
+ default:
476
+ throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
477
+
478
+ }
479
+ });
480
+
481
+ (devtools.munging.break_and_demunge_name.cljs$core$IFn$_invoke$arity$1 = (function (munged_name){
482
+ return devtools.munging.break_and_demunge_name.cljs$core$IFn$_invoke$arity$2(munged_name,null);
483
+ }));
484
+
485
+ (devtools.munging.break_and_demunge_name.cljs$core$IFn$_invoke$arity$2 = (function (munged_name,ns_detector){
486
+ var result = devtools.munging.break_munged_name.cljs$core$IFn$_invoke$arity$2(munged_name,ns_detector);
487
+ var vec__9092 = result;
488
+ var munged_ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9092,(0),null);
489
+ var munged_name__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9092,(1),null);
490
+ var munged_protocol_ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9092,(2),null);
491
+ var munged_protocol_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9092,(3),null);
492
+ var munged_protocol_method = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9092,(4),null);
493
+ var arity = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9092,(5),null);
494
+ return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [devtools.munging.proper_ns_demunge(munged_ns),devtools.munging.proper_demunge(munged_name__$1),(cljs.core.truth_(munged_protocol_ns)?devtools.munging.proper_ns_demunge(munged_protocol_ns):null),(cljs.core.truth_(munged_protocol_name)?devtools.munging.proper_demunge(munged_protocol_name):null),(cljs.core.truth_(munged_protocol_method)?devtools.munging.proper_demunge(munged_protocol_method):null),arity], null);
495
+ }));
496
+
497
+ (devtools.munging.break_and_demunge_name.cljs$lang$maxFixedArity = 2);
498
+
499
+ /**
500
+ * Given function source code tries to retrieve [ns name & args] on best effort basis, where
501
+ * ns is demunged namespace part of the function name (or "" if namespace cannot be detected)
502
+ * name is demunged short name (or "" if function is anonymous or name cannot be retrieved)
503
+ * args is optional number of demunged argument names.
504
+ *
505
+ * Please note that this function always returns a vector with something. In worst cases ["" ""].
506
+ *
507
+ */
508
+ devtools.munging.parse_fn_source_info = (function devtools$munging$parse_fn_source_info(fn_source){
509
+ var temp__5802__auto__ = devtools.munging.parse_fn_source(fn_source);
510
+ if(cljs.core.truth_(temp__5802__auto__)){
511
+ var vec__9098 = temp__5802__auto__;
512
+ var munged_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9098,(0),null);
513
+ var args = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9098,(1),null);
514
+ var vec__9105 = devtools.munging.break_and_demunge_name.cljs$core$IFn$_invoke$arity$1(munged_name);
515
+ var ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9105,(0),null);
516
+ var name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9105,(1),null);
517
+ var demunged_args = cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.comp.cljs$core$IFn$_invoke$arity$2(devtools.munging.proper_arg_demunge,clojure.string.trim),clojure.string.split.cljs$core$IFn$_invoke$arity$2(args,/,/));
518
+ return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [ns,name], null),demunged_args);
519
+ } else {
520
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, ["",""], null);
521
+ }
522
+ });
523
+ /**
524
+ * Given Javascript function object tries to retrieve [ns name & args] as in parse-fn-source-info (on best effort basis).
525
+ */
526
+ devtools.munging.parse_fn_info = (function devtools$munging$parse_fn_info(f){
527
+ var fn_source = devtools.munging.get_fn_source_safely(f);
528
+ return devtools.munging.parse_fn_source_info(fn_source);
529
+ });
530
+ /**
531
+ * Given a Javascript function object tries to retrieve [ns name & args] as in parse-fn-info (on best effort basis).
532
+ *
533
+ * The difference from parse-fn-info is that this function prefers to read args from arities if available.
534
+ * It recurse arbitrary deep following IFn protocol leads.
535
+ *
536
+ * If we hit multi-arity situation in leaf, we don't attempt to list arguments and return ::multi-arity placeholder instead.
537
+ *
538
+ * The reason for reading arities is that it gives more accurate parameter names in some cases.
539
+ * We observed that variadic functions don't always contain original parameter names, but individual IFn arity functions do.
540
+ */
541
+ devtools.munging.parse_fn_info_deep = (function devtools$munging$parse_fn_info_deep(f){
542
+ var fn_info = devtools.munging.parse_fn_info(f);
543
+ var arities = (devtools.munging.collect_fn_arities.cljs$core$IFn$_invoke$arity$1 ? devtools.munging.collect_fn_arities.cljs$core$IFn$_invoke$arity$1(f) : devtools.munging.collect_fn_arities.call(null,f));
544
+ if((!((arities == null)))){
545
+ if((cljs.core.count(arities) > (1))){
546
+ return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(cljs.core.take.cljs$core$IFn$_invoke$arity$2((2),fn_info),new cljs.core.Keyword("devtools.munging","multi-arity","devtools.munging/multi-arity",-2011705837));
547
+ } else {
548
+ return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(cljs.core.take.cljs$core$IFn$_invoke$arity$2((2),fn_info),cljs.core.drop.cljs$core$IFn$_invoke$arity$2((2),(function (){var G__9112 = cljs.core.second(cljs.core.first(arities));
549
+ return (devtools.munging.parse_fn_info_deep.cljs$core$IFn$_invoke$arity$1 ? devtools.munging.parse_fn_info_deep.cljs$core$IFn$_invoke$arity$1(G__9112) : devtools.munging.parse_fn_info_deep.call(null,G__9112));
550
+ })()));
551
+ }
552
+ } else {
553
+ return fn_info;
554
+ }
555
+ });
556
+ /**
557
+ * Given a demunged ClojureScript parameter name. Tries to detect human readable part and returns the index where it ends.
558
+ * Returns nil if no prefix can be detected.
559
+ *
560
+ * The idea is to convert macro-generated parameters and other generated names to more friendly names.
561
+ * We observed that param names generated by gensym have prefix followed by big numbers.
562
+ * Other generated names contain two dashes after prefix (originally probably using underscores).
563
+ */
564
+ devtools.munging.find_index_of_human_prefix = (function devtools$munging$find_index_of_human_prefix(name){
565
+ var sep_start = name.indexOf("--");
566
+ var num_prefix = cljs.core.count(cljs.core.second(cljs.core.re_find(/(.*?)\d{2,}/,name)));
567
+ var finds = cljs.core.filter.cljs$core$IFn$_invoke$arity$2(cljs.core.pos_QMARK_,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [sep_start,num_prefix], null));
568
+ if((!(cljs.core.empty_QMARK_(finds)))){
569
+ return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.min,finds);
570
+ } else {
571
+ return null;
572
+ }
573
+ });
574
+ /**
575
+ * Given a name and intermediate state. Convert name to a human readable version by keeping human readable prefix with
576
+ * optional subscript postfix and store it in ::result. Subscript number is picked based on state. State keeps track of
577
+ * previously assigned subscripts. Returns a new state.
578
+ */
579
+ devtools.munging.humanize_name = (function devtools$munging$humanize_name(state,name){
580
+ var index = devtools.munging.find_index_of_human_prefix(name);
581
+ var prefix = (((index > (0)))?name.substring((0),index):name);
582
+ var temp__5802__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(state,prefix);
583
+ if(cljs.core.truth_(temp__5802__auto__)){
584
+ var subscript = temp__5802__auto__;
585
+ return cljs.core.update.cljs$core$IFn$_invoke$arity$3(cljs.core.update.cljs$core$IFn$_invoke$arity$4(state,new cljs.core.Keyword("devtools.munging","result","devtools.munging/result",1642759166),cljs.core.conj,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(prefix),devtools.munging.make_subscript(subscript)].join('')),prefix,cljs.core.inc);
586
+ } else {
587
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.update.cljs$core$IFn$_invoke$arity$4(state,new cljs.core.Keyword("devtools.munging","result","devtools.munging/result",1642759166),cljs.core.conj,prefix),prefix,(2));
588
+ }
589
+ });
590
+ /**
591
+ * Given a list of names, returns a list of human-readable versions of those names.
592
+ * It detects human-readable prefix using a simple heuristics. When names repeat it assigns simple subscripts starting with 2.
593
+ * Subscripts are assigned left-to-right.
594
+ *
595
+ * Given ["p--a" "p--b" "x" "p--c"] returns ["p" "p₂" "x" "p₃"]
596
+ */
597
+ devtools.munging.humanize_names = (function devtools$munging$humanize_names(names){
598
+ return cljs.core.with_meta(new cljs.core.Keyword("devtools.munging","result","devtools.munging/result",1642759166).cljs$core$IFn$_invoke$arity$1(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(devtools.munging.humanize_name,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("devtools.munging","result","devtools.munging/result",1642759166),cljs.core.PersistentVector.EMPTY], null),names)),cljs.core.meta(names));
599
+ });
600
+ devtools.munging.collect_fn_fixed_arities = (function devtools$munging$collect_fn_fixed_arities(f,max_arity){
601
+ var arity = (0);
602
+ var collection = cljs.core.PersistentArrayMap.EMPTY;
603
+ while(true){
604
+ if((arity > max_arity)){
605
+ return collection;
606
+ } else {
607
+ var G__9249 = (arity + (1));
608
+ var G__9250 = (function (){var temp__5802__auto__ = devtools.munging.get_fn_fixed_arity(f,arity);
609
+ if(cljs.core.truth_(temp__5802__auto__)){
610
+ var arity_fn = temp__5802__auto__;
611
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(collection,arity,arity_fn);
612
+ } else {
613
+ return collection;
614
+ }
615
+ })();
616
+ arity = G__9249;
617
+ collection = G__9250;
618
+ continue;
619
+ }
620
+ break;
621
+ }
622
+ });
623
+ devtools.munging.collect_fn_variadic_arities = (function devtools$munging$collect_fn_variadic_arities(f){
624
+ var temp__5802__auto__ = devtools.munging.get_fn_variadic_arity(f);
625
+ if(cljs.core.truth_(temp__5802__auto__)){
626
+ var variadic_arity = temp__5802__auto__;
627
+ return new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("devtools.munging","variadic","devtools.munging/variadic",1596047908),variadic_arity], null);
628
+ } else {
629
+ return null;
630
+ }
631
+ });
632
+ devtools.munging.review_arity = (function devtools$munging$review_arity(p__9119){
633
+ var vec__9120 = p__9119;
634
+ var arity = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9120,(0),null);
635
+ var arity_fn = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9120,(1),null);
636
+ var sub_arities = (devtools.munging.collect_fn_arities.cljs$core$IFn$_invoke$arity$1 ? devtools.munging.collect_fn_arities.cljs$core$IFn$_invoke$arity$1(arity_fn) : devtools.munging.collect_fn_arities.call(null,arity_fn));
637
+ if(cljs.core.truth_(new cljs.core.Keyword("devtools.munging","variadic","devtools.munging/variadic",1596047908).cljs$core$IFn$_invoke$arity$1(sub_arities))){
638
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("devtools.munging","variadic","devtools.munging/variadic",1596047908),arity_fn], null);
639
+ } else {
640
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [arity,arity_fn], null);
641
+ }
642
+ });
643
+ /**
644
+ * Some arities can be marked as fixed arity but in fact point to a variadic-arity function. We want to detect this case
645
+ * and turn such improperly categorized arities to ::variadic.
646
+ */
647
+ devtools.munging.review_arities = (function devtools$munging$review_arities(arities){
648
+ if(cljs.core.truth_(new cljs.core.Keyword("devtools.munging","variadic","devtools.munging/variadic",1596047908).cljs$core$IFn$_invoke$arity$1(arities))){
649
+ return arities;
650
+ } else {
651
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$2(devtools.munging.review_arity,arities));
652
+ }
653
+ });
654
+ /**
655
+ * Given a Javascript function object, tries to inspect known arity properties generated by ClojureScript compiler and
656
+ * collects all available arity functions into a map. Arities are keyed by arity count and variadic arity gets ::variadic key.
657
+ */
658
+ devtools.munging.collect_fn_arities = (function devtools$munging$collect_fn_arities(f){
659
+ var max_fixed_arity = devtools.munging.get_fn_max_fixed_arity(f);
660
+ var fixed_arities = devtools.munging.collect_fn_fixed_arities(f,(function (){var or__5002__auto__ = max_fixed_arity;
661
+ if(cljs.core.truth_(or__5002__auto__)){
662
+ return or__5002__auto__;
663
+ } else {
664
+ return devtools.munging.max_fixed_arity_to_scan;
665
+ }
666
+ })());
667
+ var variadic_arities = devtools.munging.collect_fn_variadic_arities(f);
668
+ var arities = devtools.munging.review_arities(cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([fixed_arities,variadic_arities], 0)));
669
+ if((!(cljs.core.empty_QMARK_(arities)))){
670
+ return arities;
671
+ } else {
672
+ return null;
673
+ }
674
+ });
675
+ /**
676
+ * ::variadic goes last, other keywords compare by name.
677
+ */
678
+ devtools.munging.arity_keywords_comparator = (function devtools$munging$arity_keywords_comparator(x,y){
679
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword("devtools.munging","variadic","devtools.munging/variadic",1596047908),x)){
680
+ return (1);
681
+ } else {
682
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword("devtools.munging","variadic","devtools.munging/variadic",1596047908),y)){
683
+ return (-1);
684
+ } else {
685
+ return cljs.core.compare(cljs.core.name(x),cljs.core.name(y));
686
+
687
+ }
688
+ }
689
+ });
690
+ /**
691
+ * numbers go first (ordered), then keywords (ordered by name), and then ::variadic sticks last
692
+ */
693
+ devtools.munging.arities_key_comparator = (function devtools$munging$arities_key_comparator(x,y){
694
+ var kx_QMARK_ = (x instanceof cljs.core.Keyword);
695
+ var ky_QMARK_ = (y instanceof cljs.core.Keyword);
696
+ if(((kx_QMARK_) && (ky_QMARK_))){
697
+ return devtools.munging.arity_keywords_comparator(x,y);
698
+ } else {
699
+ if(kx_QMARK_){
700
+ return (1);
701
+ } else {
702
+ if(ky_QMARK_){
703
+ return (-1);
704
+ } else {
705
+ return cljs.core.compare(x,y);
706
+
707
+ }
708
+ }
709
+ }
710
+ });
711
+ devtools.munging.arities_to_args_lists_STAR_ = (function devtools$munging$arities_to_args_lists_STAR_(arities){
712
+ var sorted_keys = cljs.core.sort.cljs$core$IFn$_invoke$arity$2(devtools.munging.arities_key_comparator,cljs.core.keys(arities));
713
+ var sorted_fns = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__9131_SHARP_){
714
+ return cljs.core.get.cljs$core$IFn$_invoke$arity$2(arities,p1__9131_SHARP_);
715
+ }),sorted_keys);
716
+ var sorted_infos = cljs.core.map.cljs$core$IFn$_invoke$arity$2(devtools.munging.parse_fn_info_deep,sorted_fns);
717
+ var sorted_args_lists = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__9132_SHARP_){
718
+ return cljs.core.drop.cljs$core$IFn$_invoke$arity$2((2),p1__9132_SHARP_);
719
+ }),sorted_infos);
720
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.last(sorted_keys),new cljs.core.Keyword("devtools.munging","variadic","devtools.munging/variadic",1596047908))){
721
+ return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(cljs.core.butlast(sorted_args_lists),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$4(cljs.core.last(sorted_args_lists),cljs.core.assoc,new cljs.core.Keyword("devtools.munging","variadic","devtools.munging/variadic",1596047908),true)], null));
722
+ } else {
723
+ return sorted_args_lists;
724
+ }
725
+ });
726
+ /**
727
+ * Given a map of arity functions. Tries to parse individual functions and prepare an arguments list for each arity.
728
+ * Returned list of arguments list is sorted by arity count, variadic arity goes last if available.
729
+ *
730
+ * The function also optionally humanizes argument names in each arguments list if requested.
731
+ */
732
+ devtools.munging.arities_to_args_lists = (function devtools$munging$arities_to_args_lists(var_args){
733
+ var args__5732__auto__ = [];
734
+ var len__5726__auto___9261 = arguments.length;
735
+ var i__5727__auto___9262 = (0);
736
+ while(true){
737
+ if((i__5727__auto___9262 < len__5726__auto___9261)){
738
+ args__5732__auto__.push((arguments[i__5727__auto___9262]));
739
+
740
+ var G__9264 = (i__5727__auto___9262 + (1));
741
+ i__5727__auto___9262 = G__9264;
742
+ continue;
743
+ } else {
744
+ }
745
+ break;
746
+ }
747
+
748
+ var argseq__5733__auto__ = ((((1) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((1)),(0),null)):null);
749
+ return devtools.munging.arities_to_args_lists.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__5733__auto__);
750
+ });
751
+
752
+ (devtools.munging.arities_to_args_lists.cljs$core$IFn$_invoke$arity$variadic = (function (arities,p__9138){
753
+ var vec__9139 = p__9138;
754
+ var humanize_QMARK_ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9139,(0),null);
755
+ var args_lists = devtools.munging.arities_to_args_lists_STAR_(arities);
756
+ if(cljs.core.truth_(humanize_QMARK_)){
757
+ return cljs.core.map.cljs$core$IFn$_invoke$arity$2(devtools.munging.humanize_names,args_lists);
758
+ } else {
759
+ return args_lists;
760
+ }
761
+ }));
762
+
763
+ (devtools.munging.arities_to_args_lists.cljs$lang$maxFixedArity = (1));
764
+
765
+ /** @this {Function} */
766
+ (devtools.munging.arities_to_args_lists.cljs$lang$applyTo = (function (seq9135){
767
+ var G__9136 = cljs.core.first(seq9135);
768
+ var seq9135__$1 = cljs.core.next(seq9135);
769
+ var self__5711__auto__ = this;
770
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__9136,seq9135__$1);
771
+ }));
772
+
773
+ /**
774
+ * Converts a list of arguments lists into a list of strings suitable for UI presentation.
775
+ */
776
+ devtools.munging.args_lists_to_strings = (function devtools$munging$args_lists_to_strings(args_lists,spacer_symbol,multi_arity_symbol,rest_symbol){
777
+ var string_mapper = (function (arg){
778
+ var G__9147 = arg;
779
+ var G__9147__$1 = (((G__9147 instanceof cljs.core.Keyword))?G__9147.fqn:null);
780
+ switch (G__9147__$1) {
781
+ case "devtools.munging/multi-arity":
782
+ return multi_arity_symbol;
783
+
784
+ break;
785
+ default:
786
+ return arg;
787
+
788
+ }
789
+ });
790
+ var printer = (function (args_list){
791
+ var variadic_QMARK_ = new cljs.core.Keyword("devtools.munging","variadic","devtools.munging/variadic",1596047908).cljs$core$IFn$_invoke$arity$1(cljs.core.meta(args_list));
792
+ var args_strings = cljs.core.map.cljs$core$IFn$_invoke$arity$2(string_mapper,args_list);
793
+ return [clojure.string.join.cljs$core$IFn$_invoke$arity$2(spacer_symbol,cljs.core.butlast(args_strings)),cljs.core.str.cljs$core$IFn$_invoke$arity$1((cljs.core.truth_(variadic_QMARK_)?rest_symbol:spacer_symbol)),cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.last(args_strings))].join('');
794
+ });
795
+ return cljs.core.map.cljs$core$IFn$_invoke$arity$2(clojure.string.trim,cljs.core.map.cljs$core$IFn$_invoke$arity$2(printer,args_lists));
796
+ });
797
+ devtools.munging.extract_arities = (function devtools$munging$extract_arities(f,humanize_QMARK_,spacer_symbol,multi_arity_symbol,rest_symbol){
798
+ return devtools.munging.args_lists_to_strings(devtools.munging.arities_to_args_lists.cljs$core$IFn$_invoke$arity$variadic((function (){var or__5002__auto__ = devtools.munging.collect_fn_arities(f);
799
+ if(cljs.core.truth_(or__5002__auto__)){
800
+ return or__5002__auto__;
801
+ } else {
802
+ return new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"naked","naked",373474222),f], null);
803
+ }
804
+ })(),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([humanize_QMARK_], 0)),spacer_symbol,multi_arity_symbol,rest_symbol);
805
+ });
806
+ devtools.munging.common_protocol_QMARK_ = (function devtools$munging$common_protocol_QMARK_(protocol_ns,protocol_name){
807
+ return ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(protocol_ns,"cljs.core")) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(protocol_name,"IFn")));
808
+ });
809
+ devtools.munging.present_fn_part = (function devtools$munging$present_fn_part(fn_ns,fn_name,include_ns_QMARK_){
810
+ return [(cljs.core.truth_((function (){var and__5000__auto__ = include_ns_QMARK_;
811
+ if(cljs.core.truth_(and__5000__auto__)){
812
+ return (!(cljs.core.empty_QMARK_(fn_ns)));
813
+ } else {
814
+ return and__5000__auto__;
815
+ }
816
+ })())?[cljs.core.str.cljs$core$IFn$_invoke$arity$1(fn_ns),"/"].join(''):null),cljs.core.str.cljs$core$IFn$_invoke$arity$1(fn_name)].join('');
817
+ });
818
+ devtools.munging.present_protocol_part = (function devtools$munging$present_protocol_part(protocol_ns,protocol_name,protocol_method,include_protocol_ns_QMARK_){
819
+ return [cljs.core.str.cljs$core$IFn$_invoke$arity$1((cljs.core.truth_(include_protocol_ns_QMARK_)?protocol_ns:null)),(((!(cljs.core.empty_QMARK_(protocol_name))))?[(cljs.core.truth_(include_protocol_ns_QMARK_)?".":null),cljs.core.str.cljs$core$IFn$_invoke$arity$1(protocol_name)].join(''):null),(((!(cljs.core.empty_QMARK_(protocol_method))))?[(cljs.core.truth_((function (){var or__5002__auto__ = include_protocol_ns_QMARK_;
820
+ if(cljs.core.truth_(or__5002__auto__)){
821
+ return or__5002__auto__;
822
+ } else {
823
+ return (!(cljs.core.empty_QMARK_(protocol_name)));
824
+ }
825
+ })())?":":null),cljs.core.str.cljs$core$IFn$_invoke$arity$1(protocol_method)].join(''):null)].join('');
826
+ });
827
+ /**
828
+ * Given javascript function name tries to present it as plain string for display in UI on best effort basis.
829
+ */
830
+ devtools.munging.present_function_name = (function devtools$munging$present_function_name(munged_name,options){
831
+ var map__9156 = options;
832
+ var map__9156__$1 = cljs.core.__destructure_map(map__9156);
833
+ var include_ns_QMARK_ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9156__$1,new cljs.core.Keyword(null,"include-ns?","include-ns?",-341372810));
834
+ var include_protocol_ns_QMARK_ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9156__$1,new cljs.core.Keyword(null,"include-protocol-ns?","include-protocol-ns?",989250951));
835
+ var silence_common_protocols_QMARK_ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9156__$1,new cljs.core.Keyword(null,"silence-common-protocols?","silence-common-protocols?",2012431893));
836
+ var ns_detector = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9156__$1,new cljs.core.Keyword(null,"ns-detector","ns-detector",-2041592760));
837
+ var vec__9157 = devtools.munging.break_and_demunge_name.cljs$core$IFn$_invoke$arity$2(munged_name,ns_detector);
838
+ var fn_ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9157,(0),null);
839
+ var fn_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9157,(1),null);
840
+ var protocol_ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9157,(2),null);
841
+ var protocol_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9157,(3),null);
842
+ var protocol_method = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9157,(4),null);
843
+ var arity = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9157,(5),null);
844
+ var arity_str = (((!((arity == null))))?((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(arity,"variadic"))?"\u207F":devtools.munging.make_superscript(arity)):null);
845
+ if(cljs.core.empty_QMARK_(fn_name)){
846
+ return munged_name;
847
+ } else {
848
+ var fn_part = devtools.munging.present_fn_part(fn_ns,fn_name,include_ns_QMARK_);
849
+ var protocol_part = (cljs.core.truth_((function (){var and__5000__auto__ = protocol_ns;
850
+ if(cljs.core.truth_(and__5000__auto__)){
851
+ return cljs.core.not((function (){var and__5000__auto____$1 = silence_common_protocols_QMARK_;
852
+ if(cljs.core.truth_(and__5000__auto____$1)){
853
+ return devtools.munging.common_protocol_QMARK_(protocol_ns,protocol_name);
854
+ } else {
855
+ return and__5000__auto____$1;
856
+ }
857
+ })());
858
+ } else {
859
+ return and__5000__auto__;
860
+ }
861
+ })())?devtools.munging.present_protocol_part(protocol_ns,protocol_name,protocol_method,include_protocol_ns_QMARK_):null);
862
+ return [(function (){var or__5002__auto__ = protocol_part;
863
+ if(cljs.core.truth_(or__5002__auto__)){
864
+ return or__5002__auto__;
865
+ } else {
866
+ return fn_part;
867
+ }
868
+ })(),arity_str,(cljs.core.truth_(protocol_part)?[" (",fn_part,")"].join(''):null)].join('');
869
+ }
870
+ });
871
+ devtools.munging.get_basis = (function devtools$munging$get_basis(f){
872
+ var o__8244__auto__ = f;
873
+ return (o__8244__auto__["getBasis"]).call(o__8244__auto__);
874
+ });
875
+ /**
876
+ * Given a Javascript constructor function tries to retrieve [ns name basis]. Returns nil if not a cljs type.
877
+ */
878
+ devtools.munging.parse_constructor_info = (function devtools$munging$parse_constructor_info(f){
879
+ if(cljs.core.truth_((function (){var and__5000__auto__ = goog.isObject(f);
880
+ if(cljs.core.truth_(and__5000__auto__)){
881
+ return f.cljs$lang$type;
882
+ } else {
883
+ return and__5000__auto__;
884
+ }
885
+ })())){
886
+ var type_name = devtools.munging.get_type_name(f);
887
+ var parts = type_name.split(/\//);
888
+ var basis = (function (){try{return devtools.munging.get_basis(f);
889
+ }catch (e9164){var _e__8267__auto__ = e9164;
890
+ return cljs.core.PersistentVector.EMPTY;
891
+ }})();
892
+ if((cljs.core.count(parts) <= (2))){
893
+ } else {
894
+ throw (new Error("Assert failed: (<= (count parts) 2)"));
895
+ }
896
+
897
+ while(true){
898
+ if((cljs.core.count(parts) < (2))){
899
+ parts.unshift(null);
900
+
901
+ continue;
902
+ } else {
903
+ }
904
+ break;
905
+ }
906
+
907
+ return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.vec(parts),basis);
908
+ } else {
909
+ return null;
910
+ }
911
+ });
912
+ devtools.munging.protocol_path = (function devtools$munging$protocol_path(protocol_selector){
913
+ return clojure.string.split.cljs$core$IFn$_invoke$arity$2(protocol_selector,/\./);
914
+ });
915
+ devtools.munging.get_protocol_object = (function devtools$munging$get_protocol_object(protocol_selector){
916
+ var obj = devtools.munging.get_global_scope.call(null);
917
+ var path = devtools.munging.protocol_path(protocol_selector);
918
+ while(true){
919
+ if(cljs.core.empty_QMARK_(path)){
920
+ return obj;
921
+ } else {
922
+ if(cljs.core.truth_(goog.isObject(obj))){
923
+ var G__9283 = (obj[cljs.core.first(path)]);
924
+ var G__9284 = cljs.core.rest(path);
925
+ obj = G__9283;
926
+ path = G__9284;
927
+ continue;
928
+ } else {
929
+ return null;
930
+ }
931
+ }
932
+ break;
933
+ }
934
+ });
935
+ devtools.munging.protocol_exists_QMARK_ = (function devtools$munging$protocol_exists_QMARK_(protocol_selector){
936
+ return (!((devtools.munging.get_protocol_object(protocol_selector) == null)));
937
+ });
938
+ devtools.munging.get_protocol_selector = (function devtools$munging$get_protocol_selector(key){
939
+ var temp__5802__auto__ = cljs.core.re_matches(/(.*)\$$/,key);
940
+ if(cljs.core.truth_(temp__5802__auto__)){
941
+ var m = temp__5802__auto__;
942
+ if((!(clojure.string.includes_QMARK_(key,"cljs$lang$protocol_mask$partition")))){
943
+ var protocol_selector = clojure.string.replace(cljs.core.second(m),"$",".");
944
+ if(devtools.munging.protocol_exists_QMARK_(protocol_selector)){
945
+ return protocol_selector;
946
+ } else {
947
+ return null;
948
+ }
949
+ } else {
950
+ return null;
951
+ }
952
+ } else {
953
+ return null;
954
+ }
955
+ });
956
+ devtools.munging.demunge_protocol_selector = (function devtools$munging$demunge_protocol_selector(protocol_selector){
957
+ var parts = cljs.core.map.cljs$core$IFn$_invoke$arity$2(devtools.munging.proper_demunge,devtools.munging.protocol_path(protocol_selector));
958
+ var _ = (((cljs.core.count(parts) >= (2)))?null:(function(){throw (new Error(["Assert failed: ",["expected protocol selector to contain at least one dot: '",cljs.core.str.cljs$core$IFn$_invoke$arity$1(protocol_selector),"'"].join(''),"\n","(>= (count parts) 2)"].join('')))})());
959
+ var ns = clojure.string.join.cljs$core$IFn$_invoke$arity$2(".",cljs.core.butlast(parts));
960
+ var name = cljs.core.last(parts);
961
+ return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [ns,name,protocol_selector], null);
962
+ });
963
+ devtools.munging.fast_path_protocols_lookup_table = (new cljs.core.Delay((function (){
964
+ return new cljs.core.PersistentArrayMap(null, 2, [(0),cljs.core.PersistentHashMap.fromArrays([(8192),(4096),(524288),(128),(1048576),(1),(32768),(4),(268435456),(512),(33554432),(32),(256),(1024),(134217728),(16777216),(64),(262144),(2),(4194304),(131072),(67108864),(8388608),(16),(2097152),(1073741824),(2147483648),(2048),(8),(65536),(16384)],[new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IStack","cljs.core.IStack"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ISet","cljs.core.ISet"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IReduce","cljs.core.IReduce"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","INext","cljs.core.INext"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IKVReduce","cljs.core.IKVReduce"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IFn","cljs.core.IFn"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IDeref","cljs.core.IDeref"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IEmptyableCollection","cljs.core.IEmptyableCollection"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ISorted","cljs.core.ISorted"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IAssociative","cljs.core.IAssociative"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IList","cljs.core.IList"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ASeq","cljs.core.ASeq"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ILookup","cljs.core.ILookup"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IMap","cljs.core.IMap"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IReversible","cljs.core.IReversible"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ISequential","cljs.core.ISequential"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ISeq","cljs.core.ISeq"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IWithMeta","cljs.core.IWithMeta"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ICounted","cljs.core.ICounted"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IHash","cljs.core.IHash"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IMeta","cljs.core.IMeta"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IRecord","cljs.core.IRecord"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ISeqable","cljs.core.ISeqable"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IIndexed","cljs.core.IIndexed"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IEquiv","cljs.core.IEquiv"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IWriter","cljs.core.IWriter"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IPrintWithWriter","cljs.core.IPrintWithWriter"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IMapEntry","cljs.core.IMapEntry"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ICollection","cljs.core.ICollection"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IDerefWithTimeout","cljs.core.IDerefWithTimeout"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IVector","cljs.core.IVector"], null)]),(1),cljs.core.PersistentHashMap.fromArrays([(8192),(4096),(128),(1),(32768),(4),(512),(32),(256),(1024),(64),(262144),(2),(131072),(16),(2048),(8),(65536),(16384)],[new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ICloneable","cljs.core.ICloneable"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","INamed","cljs.core.INamed"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ITransientSet","cljs.core.ITransientSet"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IPending","cljs.core.IPending"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IReset","cljs.core.IReset"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IEditableCollection","cljs.core.IEditableCollection"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IChunkedSeq","cljs.core.IChunkedSeq"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ITransientMap","cljs.core.ITransientMap"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IMultiFn","cljs.core.IMultiFn"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IChunkedNext","cljs.core.IChunkedNext"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ITransientVector","cljs.core.ITransientVector"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IDrop","cljs.core.IDrop"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IWatchable","cljs.core.IWatchable"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IIterable","cljs.core.IIterable"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ITransientAssociative","cljs.core.ITransientAssociative"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IComparable","cljs.core.IComparable"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ITransientCollection","cljs.core.ITransientCollection"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","ISwap","cljs.core.ISwap"], null),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["cljs.core","IAtom","cljs.core.IAtom"], null)])], null);
965
+ }),null));
966
+ devtools.munging.key_for_protocol_partition = (function devtools$munging$key_for_protocol_partition(partition){
967
+ return ["cljs$lang$protocol_mask$partition",cljs.core.str.cljs$core$IFn$_invoke$arity$1(partition),"$"].join('');
968
+ });
969
+ devtools.munging.scan_fast_path_protocols_partition = (function devtools$munging$scan_fast_path_protocols_partition(obj,partition){
970
+ if(typeof partition === 'number'){
971
+ } else {
972
+ throw (new Error("Assert failed: (number? partition)"));
973
+ }
974
+
975
+ var partition_key = devtools.munging.key_for_protocol_partition(partition);
976
+ var partition_bits = (function (){var or__5002__auto__ = (obj[partition_key]);
977
+ if(cljs.core.truth_(or__5002__auto__)){
978
+ return or__5002__auto__;
979
+ } else {
980
+ return (0);
981
+ }
982
+ })();
983
+ if((partition_bits > (0))){
984
+ var lookup_table = cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(devtools.munging.fast_path_protocols_lookup_table),partition);
985
+ var _ = ((cljs.core.map_QMARK_(lookup_table))?null:(function(){throw (new Error(["Assert failed: ",["fast-path-protocols-lookup-table does not contain lookup table for partition ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(partition)].join(''),"\n","(map? lookup-table)"].join('')))})());
986
+ var _STAR_ = (function (accum,p__9170){
987
+ var vec__9171 = p__9170;
988
+ var bit = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9171,(0),null);
989
+ var protocol = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9171,(1),null);
990
+ if(((partition_bits & bit) === (0))){
991
+ return accum;
992
+ } else {
993
+ return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(accum,protocol);
994
+ }
995
+ });
996
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(_STAR_,cljs.core.PersistentVector.EMPTY,lookup_table);
997
+ } else {
998
+ return null;
999
+ }
1000
+ });
1001
+ devtools.munging.scan_fast_path_protocols = (function devtools$munging$scan_fast_path_protocols(obj){
1002
+ return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.concat,cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.partial.cljs$core$IFn$_invoke$arity$2(devtools.munging.scan_fast_path_protocols_partition,obj),cljs.core.range.cljs$core$IFn$_invoke$arity$1((2))));
1003
+ });
1004
+ devtools.munging.scan_slow_path_protocols = (function devtools$munging$scan_slow_path_protocols(obj){
1005
+ var keys = devtools.munging.goog$module$goog$object.getKeys(obj);
1006
+ var selectors = cljs.core.keep.cljs$core$IFn$_invoke$arity$2(devtools.munging.get_protocol_selector,keys);
1007
+ return cljs.core.map.cljs$core$IFn$_invoke$arity$2(devtools.munging.demunge_protocol_selector,selectors);
1008
+ });
1009
+ devtools.munging.make_protocol_descriptor = (function devtools$munging$make_protocol_descriptor(ns,name,selector,fast_QMARK_){
1010
+ return new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"ns","ns",441598760),ns,new cljs.core.Keyword(null,"name","name",1843675177),name,new cljs.core.Keyword(null,"selector","selector",762528866),selector,new cljs.core.Keyword(null,"fast?","fast?",-1813307150),fast_QMARK_], null);
1011
+ });
1012
+ devtools.munging.convert_to_protocol_descriptor = (function devtools$munging$convert_to_protocol_descriptor(fast_QMARK_,p__9180){
1013
+ var vec__9181 = p__9180;
1014
+ var ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9181,(0),null);
1015
+ var name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9181,(1),null);
1016
+ var selector = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9181,(2),null);
1017
+ return devtools.munging.make_protocol_descriptor(ns,name,selector,fast_QMARK_);
1018
+ });
1019
+ devtools.munging.protocol_descriptors_comparator = (function devtools$munging$protocol_descriptors_comparator(a,b){
1020
+ return cljs.core.compare(new cljs.core.Keyword(null,"name","name",1843675177).cljs$core$IFn$_invoke$arity$1(a),new cljs.core.Keyword(null,"name","name",1843675177).cljs$core$IFn$_invoke$arity$1(b));
1021
+ });
1022
+ devtools.munging.scan_protocols = (function devtools$munging$scan_protocols(obj){
1023
+ var fast_path_protocols = cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.partial.cljs$core$IFn$_invoke$arity$2(devtools.munging.convert_to_protocol_descriptor,true),devtools.munging.scan_fast_path_protocols(obj));
1024
+ var slow_path_protocols = cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.partial.cljs$core$IFn$_invoke$arity$2(devtools.munging.convert_to_protocol_descriptor,false),devtools.munging.scan_slow_path_protocols(obj));
1025
+ var all_protocols = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(fast_path_protocols,slow_path_protocols);
1026
+ return cljs.core.sort.cljs$core$IFn$_invoke$arity$2(devtools.munging.protocol_descriptors_comparator,all_protocols);
1027
+ });
1028
+ devtools.munging.collect_protocol_methods = (function devtools$munging$collect_protocol_methods(obj,protocol_selector){
1029
+ var key_prefix = clojure.string.replace(protocol_selector,/\./,"\\$");
1030
+ var pattern = cljs.core.re_pattern(["^",key_prefix,"\\$(.*)\\$arity\\$(\\d+)$"].join(''));
1031
+ var all_keys = devtools.munging.goog$module$goog$object.getKeys(obj);
1032
+ var matches = cljs.core.keep.cljs$core$IFn$_invoke$arity$2(cljs.core.partial.cljs$core$IFn$_invoke$arity$2(cljs.core.re_matches,pattern),all_keys);
1033
+ var methods$ = cljs.core.group_by(cljs.core.second,matches);
1034
+ var match_to_arity = (function (match){
1035
+ var arity = cljs.core.nth.cljs$core$IFn$_invoke$arity$2(match,(2));
1036
+ return parseInt(arity,(10));
1037
+ });
1038
+ var match_arity_comparator = (function (a,b){
1039
+ return cljs.core.compare(match_to_arity(a),match_to_arity(b));
1040
+ });
1041
+ var post_process = (function (p__9185){
1042
+ var vec__9186 = p__9185;
1043
+ var munged_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9186,(0),null);
1044
+ var matches__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9186,(1),null);
1045
+ var name = devtools.munging.proper_demunge(munged_name);
1046
+ var sorted_matches = cljs.core.sort.cljs$core$IFn$_invoke$arity$2(match_arity_comparator,matches__$1);
1047
+ var sorted_fns = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__9184_SHARP_){
1048
+ return (obj[cljs.core.first(p1__9184_SHARP_)]);
1049
+ }),sorted_matches);
1050
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [name,sorted_fns], null);
1051
+ });
1052
+ var by_name_comparator = (function (a,b){
1053
+ return cljs.core.compare(cljs.core.first(a),cljs.core.first(b));
1054
+ });
1055
+ return cljs.core.sort.cljs$core$IFn$_invoke$arity$2(by_name_comparator,cljs.core.map.cljs$core$IFn$_invoke$arity$2(post_process,methods$));
1056
+ });
1057
+
1058
+ //# sourceMappingURL=devtools.munging.js.map