@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 @@
1
+ {"version":3,"sources":["iris_layout/core.cljs"],"mappings":"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","names":["iris-layout.core/generate-id","cljs.core/random-uuid","iris-layout.core/js->layout","js-obj","obj","cljs.core.js__GT_clj","G__6894","cljs.core.keyword","cljs.core.get","cljs.core.assoc","cljs.core.mapv","or__5002__auto__","iris-layout.core/layout->js","layout","cljs.core/clj->js","G__6895","cljs.core/name","iris-layout.core/js->entities","cljs.core.into","cljs.core.map","p__6896","vec__6897","cljs.core.nth","k","v","cljs.core/map?","p__6900","vec__6901","k2","v2","iris-layout.core/js->stages","js-arr","s","iris-layout.core/stages->js","stages","iris-layout.core/body-stage-component","_","props-ref","cljs.core.atom","handle-split","tile-id","entity-id","split-direction","source-type","half","map__6904","cljs.core/deref","cljs.core/--destructure-map","on-layout-change","before?","cljs.core._EQ_","base-layout","iris-layout.layout/remove-entity-from-layout","target-after","iris-layout.layout/find-tile","new-tile-id","split-id","new-layout","iris_layout.layout.split_tile","and__5000__auto__","handle-close","map__6905","on-entity-close","handle-ratio","new-ratio","map__6906","iris-layout.layout/update-split-ratio","p__6907","map__6908","entities","render-entity-tile","active-entity","props","cljs.core/reset!","iris-layout.components.entity-tile-group/entity-tile-group","iris-layout.core/stage-index","id","cljs.core/first","cljs.core.keep_indexed","i","iris-layout.core/restart-animation!","el","anim-name","iris-layout.core/body-component","prev-stage-id","slide-dir","layer-refs","p__6909","map__6910","active-stage","on-stages-change","on-active-stage-change","on-active-entity-change","prev-idx","curr-idx","changed?","cljs.core.not_EQ_","dir","target-id","reagent.core/after-render","temp__5804__auto__","iter__5480__auto__","s__6912","cljs.core/LazySeq","cljs.core/seq","cljs.core/chunked-seq?","c__5478__auto__","size__5479__auto__","cljs.core/count","b__6914","cljs.core/chunk-buffer","i__6913","cljs.core/-nth","cljs.core/chunk-append","cljs.core/chunk-cons","cljs.core/chunk","iter__6911","cljs.core/chunk-rest","cljs.core/cons","cljs.core/rest","stage","cljs.core.swap_BANG_","cljs.core/assoc","updated","p__6915","vec__6916","iris-layout.core/pos-key","x","y","iris-layout.core/direction->delta","G__6919","cljs.core/Keyword","js/Error","iris-layout.core/grid-dimensions","workspaces","cljs.core/empty?","positions","parts","js/parseInt","cljs.core/keys","max-x","cljs.core.apply","cljs.core/max","max-y","cljs.core/second","iris-layout.core/can-navigate?","active-position","vec__6920","vec__6923","dx","dy","new-x","new-y","new-key","active-key","current-empty?","target-exists?","cljs.core/contains?","target-has-layout?","cljs.core/not","iris-layout.core/handle-grid-nav","map__6926","on-workspaces-change","on-active-position-change","vec__6927","vec__6930","new-pos","G__6933","iris-layout.core/nav-edge-hiccup","css-class","arrow","visible?","on-click","direction","nav-drag-edge","e","iris-layout.core/update-workspaces-with-cleanup","target-key","dragged-entity","iris-layout.components.entity-tile/drag-source-entity","cljs.core/reduce-kv","acc","ws-key","ws-data","cleaned","iris-layout.core/handle-empty-workspace-drop","raw","e6934","data","js/JSON.parse","iris-layout.core/grid-cell","workspace","active?","zoomed?","map__6935","vec__6936","G__6939","G__6940","iris-layout.core/grid-canvas","cols","rows","s__6942","b__6944","i__6943","iter__6941","cljs.core.range","s__6946","b__6948","i__6947","iter__6945","s__6950","b__6952","i__6951","iter__6949","iris-layout.core/grid-gap","iris-layout.core/camera-style","vec__6953","ax","ay","scale","x__5087__auto__","y__5088__auto__","tx","ty","iris-layout.core/grid-component","zoomed-out?","reagent.core.atom","handle-nav","keydown-handler","G__6956","keyup-handler","js/document","cljs.core/add-watch","iris-layout.components.touch-drag/nav-edge-target","old-dir","new-dir","p__6957","map__6958","vec__6959","dragging?","iris-layout.components.entity-tile/drag-source-tile","iris-layout.components.touch-drag/touch-state","vis?","iris-layout.core/js->workspaces","p__6962","vec__6963","iris-layout.core/workspaces->js","p__6966","vec__6967","p__6970","map__6971","iris-layout.core/grid-wrapper","activePosition","activeEntity","renderEntityTile","onWorkspacesChange","onActivePositionChange","onActiveEntityChange","onEntityClose","new-workspaces","G__6972","G__6973","iris-layout.core/remove-entity-from-stages","source-stage-id","source-stage","p1__6974#","cljs.core.filter","empty?","cljs.core/vec","p1__6975#","cljs.core.remove","iris-layout.core/sidebar-component","drag-over","p__6977","map__6978","render-entity-card","e6979","vec__6980","new-stage-id","new-stage","G__6983","cljs.core.conj","s__6985","b__6987","i__6986","p1__6976#","iter__6984","iris-layout.components.entity-card-group/entity-card-group-component","G__6992","G__7003","vec__6993","vec__7004","G__6996","G__7007","G__6997","G__6998","G__7008","G__7009","vec__6988","vec__6999","source-empty?","iris-layout.layout/append-entity","G__6991","G__7002","p__7010","map__7011","iris-layout.core/body-wrapper","activeStage","onStagesChange","onActiveStageChange","new-stages","G__7012","p__7013","map__7014","iris-layout.core/sidebar-wrapper","renderEntityCard","G__7015","iris-layout.core/Sidebar","reagent.core.reactify_component","iris-layout.core/Body","iris-layout.core/Grid","cljs.core/chunk-first"],"sourcesContent":["(ns iris-layout.core\n \"iris-layout \u2014 a tiling layout library for React.\n\n Exports two React components:\n - `Sidebar` : Renders stage cards with draggable entity cards\n - `Body` : Renders the layout surface with resizable, rearrangeable entity tiles\n\n Both components accept the same props object:\n ```js\n {\n stages: [{id, label, layout}], // Array of stage definitions\n activeStage: 'stage-id', // Currently active stage ID\n activeEntity: 'entity-id', // Currently focused entity ID\n entities: {id: {id, name, ...}}, // Entity data map\n renderEntityCard: ReactComponent, // Compact card for sidebar\n renderEntityTile: ReactComponent, // Full content for body tiles\n onStagesChange: fn(stages), // Layout mutations callback\n onActiveStageChange: fn(stageId), // Stage switch callback\n onActiveEntityChange: fn(entityId), // Entity focus callback\n }\n ```\n\n Layout tree structure (nested):\n - Tile: {type: 'tile', id: str, entityId: str}\n - Split: {type: 'split', id: str, direction: 'horizontal'|'vertical',\n ratio: 0.0-1.0, children: [node, node]}\"\n (:require [reagent.core :as r]\n [iris-layout.layout :as layout]\n [iris-layout.components.entity-tile-group :as entity-tile-group]\n [iris-layout.components.entity-card-group :as entity-card-group]\n [iris-layout.components.entity-tile :as entity-tile]\n [iris-layout.components.touch-drag :as touch-drag]))\n\n;; ============================================================\n;; JS <-> CLJS boundary conversion\n;; ============================================================\n\n(defn- generate-id []\n (str \"iris-\" (random-uuid)))\n\n(defn js->layout\n \"Convert a JS layout object to a CLJS layout map.\n Handles recursive conversion of the tree structure.\n JS keys: type, id, direction, ratio, children, entityId\n CLJS keys: :type, :id, :direction, :ratio, :children, :entity-id\"\n [js-obj]\n (when js-obj\n (let [obj (js->clj js-obj)]\n (cond-> {:type (keyword (get obj \"type\"))\n :id (get obj \"id\")}\n (get obj \"direction\") (assoc :direction (keyword (get obj \"direction\")))\n (get obj \"ratio\") (assoc :ratio (get obj \"ratio\"))\n (get obj \"children\") (assoc :children (mapv js->layout (get obj \"children\")))\n (or (get obj \"entityId\")\n (get obj \"entity-id\")) (assoc :entity-id (or (get obj \"entityId\")\n (get obj \"entity-id\")))))))\n\n(defn layout->js\n \"Convert a CLJS layout map to a JS object.\n Inverse of js->layout.\"\n [layout]\n (when layout\n (clj->js\n (cond-> {\"type\" (name (:type layout))\n \"id\" (:id layout)}\n (:direction layout) (assoc \"direction\" (name (:direction layout)))\n (:ratio layout) (assoc \"ratio\" (:ratio layout))\n (:children layout) (assoc \"children\" (mapv layout->js (:children layout)))\n (:entity-id layout) (assoc \"entityId\" (:entity-id layout))))))\n\n(defn js->entities\n \"Convert a JS entities object to a CLJS map.\n Top-level keys stay as strings (entity IDs), nested keys are keywordized.\"\n [js-obj]\n (when js-obj\n (let [obj (js->clj js-obj)]\n (into {}\n (map (fn [[k v]]\n [k (if (map? v)\n (into {} (map (fn [[k2 v2]] [(keyword k2) v2]) v))\n v)]))\n obj))))\n\n(defn js->stages\n \"Convert a JS stages array to CLJS vector of stage maps.\"\n [js-arr]\n (when js-arr\n (mapv (fn [s]\n (let [obj (js->clj s)]\n {:id (get obj \"id\")\n :label (get obj \"label\")\n :layout (js->layout (get obj \"layout\"))}))\n js-arr)))\n\n(defn stages->js\n \"Convert CLJS stages vector to JS array.\"\n [stages]\n (clj->js\n (mapv (fn [s]\n {\"id\" (:id s)\n \"label\" (:label s)\n \"layout\" (layout->js (:layout s))})\n stages)))\n\n;; ============================================================\n;; Body \u2014 layout surface with stage stack\n;; ============================================================\n\n(defn- body-stage-component\n \"A single layout stage within the Body.\n\n Manages drag-drop split operations:\n - Sidebar drags: adds entity to layout via split\n - Tile rearranges: removes entity from source, splits at target\n\n Props:\n :layout - layout tree (CLJS map)\n :entities - entity data map\n :render-entity-tile - React component for tile content\n :active-entity - focused entity ID\n :on-layout-change - fn(new-layout) for layout mutations\n :on-active-entity-change - fn(entity-id) for focus changes\"\n [_]\n (let [props-ref (atom nil)\n handle-split (fn [tile-id entity-id split-direction source-type half]\n (let [{:keys [layout on-layout-change]} @props-ref\n before? (or (= half :left) (= half :top))\n base-layout (if (= source-type :tile)\n (or (layout/remove-entity-from-layout layout entity-id)\n layout)\n layout)\n target-after (layout/find-tile base-layout tile-id)\n new-tile-id (generate-id)\n split-id (generate-id)\n new-layout (when target-after\n (layout/split-tile\n base-layout tile-id split-direction\n entity-id new-tile-id split-id before?))]\n (when (and new-layout on-layout-change)\n (on-layout-change new-layout))))\n handle-close (fn [entity-id]\n (let [{:keys [layout on-layout-change on-entity-close]} @props-ref\n new-layout (layout/remove-entity-from-layout layout entity-id)]\n (when on-layout-change\n (on-layout-change new-layout))\n (when on-entity-close\n (on-entity-close entity-id))))\n handle-ratio (fn [split-id new-ratio]\n (let [{:keys [layout on-layout-change]} @props-ref\n new-layout (layout/update-split-ratio layout split-id new-ratio)]\n (when on-layout-change\n (on-layout-change new-layout))))]\n (fn [{:keys [layout entities render-entity-tile active-entity on-layout-change] :as props}]\n (reset! props-ref props)\n [:div.iris-body-stage\n [entity-tile-group/entity-tile-group\n layout handle-split handle-close handle-ratio active-entity entities render-entity-tile]])))\n\n(defn- stage-index\n \"Find the index of a stage by ID.\"\n [stages id]\n (first (keep-indexed (fn [i s] (when (= (:id s) id) i)) stages)))\n\n(defn- restart-animation!\n \"Force restart a CSS animation on an element.\n Uses offsetHeight read to force reflow before re-applying animation.\"\n [^js el anim-name]\n (when el\n (set! (.-animation (.-style el)) \"none\")\n (.-offsetHeight el)\n (set! (.-animation (.-style el)) (str anim-name \" 400ms cubic-bezier(0.22, 1, 0.36, 1) forwards\"))))\n\n(defn body-component\n \"Body \u2014 the main layout area.\n\n Renders all stages stacked on top of each other. The active stage\n is visible and interactive; others are hidden but stay mounted.\n\n Stage transitions use vertical slide animations:\n - Moving to a higher-indexed stage slides from bottom\n - Moving to a lower-indexed stage slides from top\n\n Props (received as CLJS map after wrapper conversion):\n :stages - vector of stage maps\n :active-stage - active stage ID\n :active-entity - focused entity ID\n :entities - entity data map\n :render-entity-tile - React component for tile content\n :on-stages-change - fn(stages) for layout mutations\n :on-active-stage-change - fn(stage-id) for stage switches\n :on-active-entity-change - fn(entity-id) for entity focus\"\n [_]\n (let [prev-stage-id (atom nil)\n slide-dir (atom \"right\")\n layer-refs (atom {})]\n (fn [{:keys [stages active-stage active-entity entities render-entity-tile\n on-stages-change on-active-stage-change on-active-entity-change on-entity-close]}]\n (let [prev-idx (stage-index stages @prev-stage-id)\n curr-idx (stage-index stages active-stage)\n changed? (and @prev-stage-id (not= @prev-stage-id active-stage))]\n ;; Determine slide direction based on stage order\n (when changed?\n (reset! slide-dir (if (and prev-idx curr-idx (> curr-idx prev-idx))\n \"down\" \"up\")))\n ;; Trigger slide animation after Reagent renders the DOM\n (when changed?\n (let [dir @slide-dir\n target-id active-stage]\n (r/after-render\n (fn []\n (when-let [el (get @layer-refs target-id)]\n (restart-animation! el (if (= dir \"down\")\n \"iris-slide-from-bottom\"\n \"iris-slide-from-top\")))))))\n (reset! prev-stage-id active-stage)\n [:div.iris-body\n ;; All stages stacked \u2014 each is always rendered\n [:div.iris-body-stack\n (for [stage stages]\n ^{:key (:id stage)}\n [:div {:class (str \"iris-body-layer\"\n (when (= (:id stage) active-stage) \" iris-body-layer-active\"))\n :ref (fn [el] (when el (swap! layer-refs assoc (:id stage) el)))}\n [body-stage-component\n {:layout (:layout stage)\n :entities entities\n :render-entity-tile render-entity-tile\n :active-entity active-entity\n :on-layout-change\n (fn [new-layout]\n (when on-stages-change\n (let [updated (mapv (fn [s]\n (if (= (:id s) (:id stage))\n (assoc s :layout new-layout)\n s))\n stages)]\n (on-stages-change updated))))\n :on-entity-close on-entity-close}]])]]))))\n\n;; ============================================================\n;; Grid \u2014 2D workspace grid with camera-based navigation\n;; ============================================================\n\n(defn- pos-key\n \"Convert [x y] to string key 'x,y'.\"\n [[x y]]\n (str x \",\" y))\n\n(defn- direction->delta\n \"Map a direction keyword to [dx dy].\"\n [dir]\n (case dir\n :left [-1 0]\n :right [1 0]\n :up [0 -1]\n :down [0 1]))\n\n(defn- grid-dimensions\n \"Compute grid bounds from workspace keys. Returns [cols rows].\"\n [workspaces]\n (if (empty? workspaces)\n [1 1]\n (let [positions (map (fn [k]\n (let [parts (.split k \",\")]\n [(js/parseInt (aget parts 0))\n (js/parseInt (aget parts 1))]))\n (keys workspaces))\n max-x (apply max (map first positions))\n max-y (apply max (map second positions))]\n [(inc max-x) (inc max-y)])))\n\n(defn- can-navigate?\n \"Check if navigation in a direction is allowed.\"\n [dir workspaces active-position]\n (let [[dx dy] (direction->delta dir)\n [x y] active-position\n new-x (+ x dx)\n new-y (+ y dy)\n new-key (pos-key [new-x new-y])\n active-key (pos-key active-position)\n current-empty? (nil? (:layout (get workspaces active-key)))\n target-exists? (contains? workspaces new-key)\n target-has-layout? (and target-exists?\n (:layout (get workspaces new-key)))]\n (and (>= new-x 0) (>= new-y 0)\n (not (and current-empty? (not target-has-layout?))))))\n\n(defn- handle-grid-nav\n \"Handle navigation in a direction. Creates empty workspace if needed.\"\n [dir props-ref]\n (let [{:keys [workspaces active-position\n on-workspaces-change on-active-position-change]} @props-ref]\n (when (can-navigate? dir workspaces active-position)\n (let [[dx dy] (direction->delta dir)\n [x y] active-position\n new-pos [(+ x dx) (+ y dy)]\n new-key (pos-key new-pos)\n target-exists? (contains? workspaces new-key)]\n (when (and (not target-exists?) on-workspaces-change)\n (on-workspaces-change (assoc workspaces new-key {:layout nil})))\n (when on-active-position-change\n (on-active-position-change new-pos))))))\n\n(defn- nav-edge-hiccup\n \"Return hiccup for a navigation edge button.\n During drag, hovering navigates to adjacent workspace (user keeps dragging to drop there).\"\n [css-class arrow visible? on-click direction props-ref nav-drag-edge]\n [:div {:class (str \"iris-nav-edge \" css-class\n (when-not visible? \" iris-nav-hidden\")\n (when (= @nav-drag-edge direction) \" iris-nav-drag-over\"))\n :on-click on-click\n :on-drag-over (fn [e] (.preventDefault e))\n :on-drag-enter (fn [e]\n (.preventDefault e)\n (reset! nav-drag-edge direction)\n ;; Navigate to adjacent workspace while dragging\n (handle-grid-nav direction props-ref))\n :on-drag-leave (fn [e]\n (when-not (.contains (.-currentTarget e) (.-relatedTarget e))\n (reset! nav-drag-edge nil)))\n :on-drop (fn [e]\n (.preventDefault e)\n (.stopPropagation e)\n (reset! nav-drag-edge nil))}\n [:span.iris-nav-arrow arrow]])\n\n(defn- update-workspaces-with-cleanup\n \"Update a workspace's layout and remove dragged entity from all other workspaces.\"\n [workspaces target-key new-layout]\n (let [dragged-entity @entity-tile/drag-source-entity]\n (if dragged-entity\n (reduce-kv\n (fn [acc ws-key ws-data]\n (if (= ws-key target-key)\n (assoc acc ws-key {:layout new-layout})\n (let [cleaned (layout/remove-entity-from-layout\n (:layout ws-data) dragged-entity)]\n (assoc acc ws-key {:layout cleaned}))))\n {} workspaces)\n (assoc workspaces target-key {:layout new-layout}))))\n\n(defn- handle-empty-workspace-drop\n \"Handle drop on an empty workspace \u2014 create a tile for the dropped entity.\"\n [e k workspaces on-workspaces-change]\n (.preventDefault e)\n (let [raw (.getData (.-dataTransfer e) \"text/plain\")]\n (try\n (let [data (js/JSON.parse raw)\n entity-id (.-entityId data)]\n (when entity-id\n (let [new-layout {:type :tile :id (generate-id) :entity-id entity-id}\n updated (update-workspaces-with-cleanup workspaces k new-layout)]\n (on-workspaces-change updated))))\n (catch :default _ nil))))\n\n(defn- grid-cell\n \"Render a single grid cell (workspace or empty placeholder).\"\n [k workspace active? zoomed? props]\n (let [{:keys [entities render-entity-tile active-entity\n on-workspaces-change on-active-position-change on-entity-close\n workspaces]} props\n [x y] (mapv js/parseInt (.split k \",\"))]\n [:div {:class (str \"iris-grid-cell\"\n (when active? \" iris-grid-cell-active\"))\n :data-position k\n :on-click (when (and zoomed? (not active?))\n (fn [_]\n (when on-active-position-change\n (on-active-position-change [x y]))))}\n (if (:layout workspace)\n [body-stage-component\n {:layout (:layout workspace)\n :entities entities\n :render-entity-tile render-entity-tile\n :active-entity (when active? active-entity)\n :on-layout-change\n (fn [new-layout]\n (when on-workspaces-change\n (on-workspaces-change\n (update-workspaces-with-cleanup workspaces k new-layout))))\n :on-entity-close on-entity-close}]\n [:div.iris-empty-workspace\n {:on-drag-over (fn [e] (.preventDefault e))\n :on-drop (fn [e]\n (when on-workspaces-change\n (handle-empty-workspace-drop e k workspaces on-workspaces-change)))}])]))\n\n(defn- grid-canvas\n \"Render the CSS grid canvas with all workspace cells.\"\n [cols rows workspaces active-position zoomed? props]\n (let [active-key (pos-key active-position)]\n (for [y (range rows)]\n (for [x (range cols)]\n (let [k (pos-key [x y])\n workspace (get workspaces k)]\n ^{:key k}\n [grid-cell k workspace (= k active-key) zoomed? props])))))\n\n(def ^:private grid-gap 32)\n\n(defn- camera-style\n \"Compute the CSS transform style for the grid canvas camera.\n Uses calc() to account for the gap between grid cells.\"\n [cols rows active-position zoomed?]\n (let [[ax ay] active-position\n scale (if zoomed? (/ 1 (max cols rows)) 1)\n ;; Each cell is (100% - (n-1)*gap) / n wide, plus gap between cells.\n ;; Offset for position p = p * (100% / n) but we also shift by p * gap / n\n ;; to center each cell. Simplest: calc(-ax * (100% + gap) / cols)\n tx (if zoomed?\n \"0px\"\n (str \"calc(\" ax \" * ((-100% - \" grid-gap \"px) / \" cols \"))\"))\n ty (if zoomed?\n \"0px\"\n (str \"calc(\" ay \" * ((-100% - \" grid-gap \"px) / \" rows \"))\"))]\n {:width (str \"calc(\" cols \" * 100% + \" (* (dec cols) grid-gap) \"px)\")\n :height (str \"calc(\" rows \" * 100% + \" (* (dec rows) grid-gap) \"px)\")\n :grid-template-columns (str \"repeat(\" cols \", 1fr)\")\n :grid-template-rows (str \"repeat(\" rows \", 1fr)\")\n :transform (str \"translate(\" tx \", \" ty \") scale(\" scale \")\")\n :transform-origin \"0 0\"}))\n\n(defn grid-component\n \"Grid \u2014 a 2D grid of workspaces with camera-based navigation.\n\n Workspaces are laid out in a real CSS grid. Navigation moves a camera\n (CSS translate) to show the active workspace. Holding Alt zooms out\n to show all workspaces at once.\"\n [_]\n (let [zoomed-out? (r/atom false)\n props-ref (atom nil)\n nav-drag-edge (r/atom nil)\n handle-nav (fn [dir] (handle-grid-nav dir props-ref))\n keydown-handler (fn [e]\n (when (and (= (.-key e) \"Alt\") (not (.-repeat e)))\n (reset! zoomed-out? true))\n (when (.-altKey e)\n (let [dir (case (.-key e)\n \"ArrowLeft\" :left\n \"ArrowRight\" :right\n \"ArrowUp\" :up\n \"ArrowDown\" :down\n nil)]\n (when dir\n (.preventDefault e)\n ;; Exit zoom-out first, then navigate (so slide is visible)\n (reset! zoomed-out? false)\n (handle-nav dir)))))\n keyup-handler (fn [e]\n (when (= (.-key e) \"Alt\")\n (reset! zoomed-out? false)))]\n (.addEventListener js/document \"keydown\" keydown-handler)\n (.addEventListener js/document \"keyup\" keyup-handler)\n ;; Watch touch-drag nav-edge-target for highlight + navigation\n (add-watch touch-drag/nav-edge-target ::grid-nav-highlight\n (fn [_ _ old-dir new-dir]\n (reset! nav-drag-edge new-dir)\n ;; Navigate when touch enters a nav edge\n (when (and new-dir (not= old-dir new-dir))\n (handle-grid-nav new-dir props-ref))))\n (fn [{:keys [workspaces active-position] :as props}]\n (reset! props-ref props)\n (let [[cols rows] (grid-dimensions workspaces)\n zoomed? @zoomed-out?\n dragging? (or @entity-tile/drag-source-tile @touch-drag/touch-state)\n vis? (fn [dir] (or dragging? (can-navigate? dir workspaces active-position)))]\n [:div {:class (str \"iris-grid-viewport\"\n (when zoomed? \" iris-grid-zoomed\"))}\n (nav-edge-hiccup \"iris-nav-left\" \"\\u2039\" (vis? :left) #(handle-nav :left) :left props-ref nav-drag-edge)\n (nav-edge-hiccup \"iris-nav-right\" \"\\u203A\" (vis? :right) #(handle-nav :right) :right props-ref nav-drag-edge)\n (nav-edge-hiccup \"iris-nav-top\" \"\\u2039\" (vis? :up) #(handle-nav :up) :up props-ref nav-drag-edge)\n (nav-edge-hiccup \"iris-nav-bottom\" \"\\u203A\" (vis? :down) #(handle-nav :down) :down props-ref nav-drag-edge)\n [:div.iris-grid-center\n [:div.iris-grid-canvas\n {:style (camera-style cols rows active-position zoomed?)}\n (grid-canvas cols rows workspaces active-position zoomed? props)]]]))))\n\n;; ============================================================\n;; JS <-> CLJS: Grid conversions\n;; ============================================================\n\n(defn js->workspaces\n \"Convert a JS workspaces object {\\\"x,y\\\": {layout: ...}} to CLJS map.\"\n [js-obj]\n (when js-obj\n (let [obj (js->clj js-obj)]\n (into {}\n (map (fn [[k v]]\n [k {:layout (js->layout (get v \"layout\"))}]))\n obj))))\n\n(defn workspaces->js\n \"Convert CLJS workspaces map to JS object.\"\n [workspaces]\n (clj->js\n (into {}\n (map (fn [[k v]]\n [k {\"layout\" (layout->js (:layout v))}]))\n workspaces)))\n\n(defn- grid-wrapper\n \"Wrapper that converts JS props to CLJS for grid-component.\"\n [{:keys [workspaces activePosition activeEntity entities renderEntityTile\n onWorkspacesChange onActivePositionChange onActiveEntityChange onEntityClose]}]\n [grid-component\n {:workspaces (js->workspaces workspaces)\n :active-position (js->clj activePosition)\n :active-entity activeEntity\n :entities (js->entities entities)\n :render-entity-tile renderEntityTile\n :on-workspaces-change (when onWorkspacesChange\n (fn [new-workspaces]\n (onWorkspacesChange (workspaces->js new-workspaces))))\n :on-active-position-change (when onActivePositionChange\n (fn [new-pos]\n (onActivePositionChange (clj->js new-pos))))\n :on-active-entity-change onActiveEntityChange\n :on-entity-close onEntityClose}])\n\n;; ============================================================\n;; Sidebar \u2014 stage cards with entity cards\n;; ============================================================\n\n(defn- remove-entity-from-stages\n \"Remove an entity from a specific stage. If the stage becomes empty, remove it.\n Returns [updated-stages removed-stage-empty?].\"\n [stages source-stage-id entity-id]\n (let [source-stage (first (filter #(= (:id %) source-stage-id) stages))\n new-layout (when source-stage\n (layout/remove-entity-from-layout (:layout source-stage) entity-id))\n empty? (nil? new-layout)]\n [(if empty?\n (vec (remove #(= (:id %) source-stage-id) stages))\n (mapv (fn [s]\n (if (= (:id s) source-stage-id)\n (assoc s :layout new-layout)\n s))\n stages))\n empty?]))\n\n(defn sidebar-component\n \"Sidebar \u2014 renders a list of stage cards with drag-drop support.\n\n Features:\n - Click a card to switch active stage\n - Click an entity card to focus it\n - Close button removes entity from stage (empty stage is removed)\n - Drag entity cards between groups to move them\n - Drag entity cards to empty sidebar area to create a new group\n\n Props (received as CLJS map after wrapper conversion):\n :stages - vector of stage maps\n :active-stage - active stage ID\n :active-entity - focused entity ID\n :entities - entity data map\n :render-entity-card - React component for entity card content\n :on-stages-change - fn(stages) for layout mutations\n :on-active-stage-change - fn(stage-id) for stage switches\n :on-active-entity-change - fn(entity-id) for entity focus\n :on-entity-close - (optional) fn(stage-id, entity-id) side-effect hook called on close\"\n [_]\n (let [drag-over (r/atom false)]\n (fn [{:keys [stages active-stage active-entity entities render-entity-card\n on-stages-change on-active-stage-change on-active-entity-change\n on-entity-close]}]\n [:div.iris-sidebar\n {:class (when @drag-over \"iris-sidebar-drag-over\")\n :on-drag-over (fn [e] (.preventDefault e) (reset! drag-over true))\n :on-drag-enter (fn [e] (.preventDefault e))\n :on-drag-leave (fn [e]\n (when (not (.contains (.-currentTarget e) (.-relatedTarget e)))\n (reset! drag-over false)))\n :on-drop\n (fn [e]\n (.preventDefault e)\n (reset! drag-over false)\n ;; Only handle if not caught by a group (stopPropagation)\n (let [raw (.getData (.-dataTransfer e) \"text/plain\")]\n (try\n (let [data (js/JSON.parse raw)]\n (when (and (= (.-source data) \"sidebar\")\n (.-entityId data)\n (.-stageId data)\n on-stages-change)\n (let [entity-id (.-entityId data)\n source-stage-id (.-stageId data)\n [updated _] (remove-entity-from-stages stages source-stage-id entity-id)\n new-stage-id (generate-id)\n new-stage {:id new-stage-id\n :label (or (:name (get entities entity-id)) \"New Stage\")\n :layout {:type :tile\n :id (generate-id)\n :entity-id entity-id}}]\n (on-stages-change (conj updated new-stage))\n (when on-active-stage-change\n (on-active-stage-change new-stage-id)))))\n (catch :default _ nil))))}\n (for [stage stages]\n ^{:key (:id stage)}\n [entity-card-group/entity-card-group-component\n {:stage stage\n :active? (= (:id stage) active-stage)\n :entities entities\n :active-entity active-entity\n :render-entity-card render-entity-card\n :on-click #(when on-active-stage-change\n (on-active-stage-change (:id stage)))\n :on-entity-click #(when on-active-entity-change\n (on-active-entity-change %))\n :on-entity-close\n (fn [entity-id]\n (when on-stages-change\n (let [[updated empty?] (remove-entity-from-stages stages (:id stage) entity-id)]\n (on-stages-change updated)\n (when (and empty?\n (= active-stage (:id stage))\n on-active-stage-change\n (seq updated))\n (on-active-stage-change (:id (first updated))))))\n (when on-entity-close\n (on-entity-close (:id stage) entity-id)))\n :on-entity-drop\n (fn [entity-id source-stage-id]\n ;; Move entity from source stage to this stage\n (when on-stages-change\n (let [[updated source-empty?] (remove-entity-from-stages stages source-stage-id entity-id)\n ;; Add entity to target stage's layout\n updated (mapv (fn [s]\n (if (= (:id s) (:id stage))\n (assoc s :layout\n (layout/append-entity\n (:layout s) entity-id\n (generate-id) (generate-id)))\n s))\n updated)]\n (on-stages-change updated)\n ;; If source was active and got removed, switch to target\n (when (and source-empty?\n (= active-stage source-stage-id)\n on-active-stage-change)\n (on-active-stage-change (:id stage))))))}])])))\n\n;; ============================================================\n;; React-facing wrappers (JS consumers)\n;; ============================================================\n;; reactify-component auto-converts JS props to CLJS map with keyword keys.\n;; Nested objects (layout, entities, stages) remain as JS and need manual conversion.\n\n(defn- body-wrapper\n \"Wrapper that converts JS props to CLJS for body-component.\"\n [{:keys [stages activeStage activeEntity entities renderEntityTile\n onStagesChange onActiveStageChange onActiveEntityChange onEntityClose]}]\n [body-component\n {:stages (js->stages stages)\n :active-stage activeStage\n :active-entity activeEntity\n :entities (js->entities entities)\n :render-entity-tile renderEntityTile\n :on-stages-change (when onStagesChange\n (fn [new-stages]\n (onStagesChange (stages->js new-stages))))\n :on-active-stage-change onActiveStageChange\n :on-active-entity-change onActiveEntityChange\n :on-entity-close onEntityClose}])\n\n(defn- sidebar-wrapper\n \"Wrapper that converts JS props to CLJS for sidebar-component.\"\n [{:keys [stages activeStage activeEntity entities renderEntityCard\n onStagesChange onActiveStageChange onActiveEntityChange onEntityClose]}]\n [sidebar-component\n {:stages (js->stages stages)\n :active-stage activeStage\n :active-entity activeEntity\n :entities (js->entities entities)\n :render-entity-card renderEntityCard\n :on-stages-change (when onStagesChange\n (fn [new-stages]\n (onStagesChange (stages->js new-stages))))\n :on-active-stage-change onActiveStageChange\n :on-active-entity-change onActiveEntityChange\n :on-entity-close onEntityClose}])\n\n;; ============================================================\n;; Exported React components\n;; ============================================================\n\n(def Sidebar\n \"React component \u2014 stage list with draggable entity cards.\n See namespace docstring for full props specification.\"\n (r/reactify-component sidebar-wrapper))\n\n(def Body\n \"React component \u2014 layout surface with resizable, rearrangeable entity tiles.\n See namespace docstring for full props specification.\"\n (r/reactify-component body-wrapper))\n\n(def Grid\n \"React component \u2014 2D workspace grid with Alt+Arrow navigation.\n Workspaces are addressed by [x,y] coordinates in an infinite grid.\"\n (r/reactify-component grid-wrapper))\n"]}
@@ -0,0 +1,328 @@
1
+ import "./cljs_env.js";
2
+ import "./cljs.core.js";
3
+ goog.provide('iris_layout.layout');
4
+ /**
5
+ * Get node type as keyword (handles both keyword and string values)
6
+ */
7
+ iris_layout.layout.node_type = (function iris_layout$layout$node_type(node){
8
+ return cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"type","type",1174270348).cljs$core$IFn$_invoke$arity$1(node));
9
+ });
10
+ /**
11
+ * Create a new tile node
12
+ */
13
+ iris_layout.layout.create_tile = (function iris_layout$layout$create_tile(id,entity_id){
14
+ return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"type","type",1174270348),new cljs.core.Keyword(null,"tile","tile",758132866),new cljs.core.Keyword(null,"id","id",-1388402092),id,new cljs.core.Keyword(null,"entity-id","entity-id",1485898093),entity_id], null);
15
+ });
16
+ /**
17
+ * Create a new split node with direction, children, and ratio
18
+ */
19
+ iris_layout.layout.create_split = (function iris_layout$layout$create_split(id,direction,child1,child2,ratio){
20
+ return new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"type","type",1174270348),new cljs.core.Keyword(null,"split","split",-599435118),new cljs.core.Keyword(null,"id","id",-1388402092),id,new cljs.core.Keyword(null,"direction","direction",-633359395),direction,new cljs.core.Keyword(null,"ratio","ratio",-926560044),(function (){var x__5090__auto__ = 0.9;
21
+ var y__5091__auto__ = (function (){var x__5087__auto__ = 0.1;
22
+ var y__5088__auto__ = ratio;
23
+ return ((x__5087__auto__ > y__5088__auto__) ? x__5087__auto__ : y__5088__auto__);
24
+ })();
25
+ return ((x__5090__auto__ < y__5091__auto__) ? x__5090__auto__ : y__5091__auto__);
26
+ })(),new cljs.core.Keyword(null,"children","children",-940561982),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [child1,child2], null)], null);
27
+ });
28
+ /**
29
+ * Walk tree to find tile by ID
30
+ */
31
+ iris_layout.layout.find_tile = (function iris_layout$layout$find_tile(tree,tile_id){
32
+ if((tree == null)){
33
+ return null;
34
+ } else {
35
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(tree),new cljs.core.Keyword(null,"tile","tile",758132866))){
36
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(tree),tile_id)){
37
+ return tree;
38
+ } else {
39
+ return null;
40
+ }
41
+ } else {
42
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(tree),new cljs.core.Keyword(null,"split","split",-599435118))){
43
+ var or__5002__auto__ = (function (){var G__12195 = cljs.core.first(new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(tree));
44
+ var G__12196 = tile_id;
45
+ return (iris_layout.layout.find_tile.cljs$core$IFn$_invoke$arity$2 ? iris_layout.layout.find_tile.cljs$core$IFn$_invoke$arity$2(G__12195,G__12196) : iris_layout.layout.find_tile.call(null,G__12195,G__12196));
46
+ })();
47
+ if(cljs.core.truth_(or__5002__auto__)){
48
+ return or__5002__auto__;
49
+ } else {
50
+ var G__12197 = cljs.core.second(new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(tree));
51
+ var G__12198 = tile_id;
52
+ return (iris_layout.layout.find_tile.cljs$core$IFn$_invoke$arity$2 ? iris_layout.layout.find_tile.cljs$core$IFn$_invoke$arity$2(G__12197,G__12198) : iris_layout.layout.find_tile.call(null,G__12197,G__12198));
53
+ }
54
+ } else {
55
+ return null;
56
+ }
57
+ }
58
+ }
59
+ });
60
+ /**
61
+ * Replace a node in the tree by ID with a new node
62
+ */
63
+ iris_layout.layout.replace_node = (function iris_layout$layout$replace_node(tree,node_id,new_node){
64
+ if((tree == null)){
65
+ return null;
66
+ } else {
67
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(tree),node_id)){
68
+ return new_node;
69
+ } else {
70
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(tree),new cljs.core.Keyword(null,"split","split",-599435118))){
71
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(tree,new cljs.core.Keyword(null,"children","children",-940561982),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(function (){var G__12199 = cljs.core.first(new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(tree));
72
+ var G__12200 = node_id;
73
+ var G__12201 = new_node;
74
+ return (iris_layout.layout.replace_node.cljs$core$IFn$_invoke$arity$3 ? iris_layout.layout.replace_node.cljs$core$IFn$_invoke$arity$3(G__12199,G__12200,G__12201) : iris_layout.layout.replace_node.call(null,G__12199,G__12200,G__12201));
75
+ })(),(function (){var G__12205 = cljs.core.second(new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(tree));
76
+ var G__12206 = node_id;
77
+ var G__12207 = new_node;
78
+ return (iris_layout.layout.replace_node.cljs$core$IFn$_invoke$arity$3 ? iris_layout.layout.replace_node.cljs$core$IFn$_invoke$arity$3(G__12205,G__12206,G__12207) : iris_layout.layout.replace_node.call(null,G__12205,G__12206,G__12207));
79
+ })()], null));
80
+ } else {
81
+ return tree;
82
+
83
+ }
84
+ }
85
+ }
86
+ });
87
+ /**
88
+ * Insert a split at tile position with new entity.
89
+ * When before? is true, new tile goes first (left/top).
90
+ */
91
+ iris_layout.layout.split_tile = (function iris_layout$layout$split_tile(var_args){
92
+ var args__5732__auto__ = [];
93
+ var len__5726__auto___12270 = arguments.length;
94
+ var i__5727__auto___12271 = (0);
95
+ while(true){
96
+ if((i__5727__auto___12271 < len__5726__auto___12270)){
97
+ args__5732__auto__.push((arguments[i__5727__auto___12271]));
98
+
99
+ var G__12272 = (i__5727__auto___12271 + (1));
100
+ i__5727__auto___12271 = G__12272;
101
+ continue;
102
+ } else {
103
+ }
104
+ break;
105
+ }
106
+
107
+ var argseq__5733__auto__ = ((((6) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((6)),(0),null)):null);
108
+ return iris_layout.layout.split_tile.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),argseq__5733__auto__);
109
+ });
110
+
111
+ (iris_layout.layout.split_tile.cljs$core$IFn$_invoke$arity$variadic = (function (tree,tile_id,direction,new_entity_id,new_tile_id,split_id,p__12224){
112
+ var vec__12225 = p__12224;
113
+ var before_QMARK_ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12225,(0),null);
114
+ var existing_tile = iris_layout.layout.find_tile(tree,tile_id);
115
+ if(cljs.core.truth_(existing_tile)){
116
+ var new_tile = iris_layout.layout.create_tile(new_tile_id,new_entity_id);
117
+ var vec__12228 = (cljs.core.truth_(before_QMARK_)?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new_tile,existing_tile], null):new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [existing_tile,new_tile], null));
118
+ var child1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12228,(0),null);
119
+ var child2 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12228,(1),null);
120
+ var new_split = iris_layout.layout.create_split(split_id,direction,child1,child2,0.5);
121
+ return iris_layout.layout.replace_node(tree,tile_id,new_split);
122
+ } else {
123
+ return null;
124
+ }
125
+ }));
126
+
127
+ (iris_layout.layout.split_tile.cljs$lang$maxFixedArity = (6));
128
+
129
+ /** @this {Function} */
130
+ (iris_layout.layout.split_tile.cljs$lang$applyTo = (function (seq12213){
131
+ var G__12214 = cljs.core.first(seq12213);
132
+ var seq12213__$1 = cljs.core.next(seq12213);
133
+ var G__12215 = cljs.core.first(seq12213__$1);
134
+ var seq12213__$2 = cljs.core.next(seq12213__$1);
135
+ var G__12216 = cljs.core.first(seq12213__$2);
136
+ var seq12213__$3 = cljs.core.next(seq12213__$2);
137
+ var G__12217 = cljs.core.first(seq12213__$3);
138
+ var seq12213__$4 = cljs.core.next(seq12213__$3);
139
+ var G__12218 = cljs.core.first(seq12213__$4);
140
+ var seq12213__$5 = cljs.core.next(seq12213__$4);
141
+ var G__12219 = cljs.core.first(seq12213__$5);
142
+ var seq12213__$6 = cljs.core.next(seq12213__$5);
143
+ var self__5711__auto__ = this;
144
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12214,G__12215,G__12216,G__12217,G__12218,G__12219,seq12213__$6);
145
+ }));
146
+
147
+ /**
148
+ * Find the parent split of a given node
149
+ */
150
+ iris_layout.layout.get_parent_split = (function iris_layout$layout$get_parent_split(tree,node_id){
151
+ var find_parent = (function iris_layout$layout$get_parent_split_$_find_parent(node,parent){
152
+ if((node == null)){
153
+ return null;
154
+ } else {
155
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(node),node_id)){
156
+ return parent;
157
+ } else {
158
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(node),new cljs.core.Keyword(null,"split","split",-599435118))){
159
+ var or__5002__auto__ = iris_layout$layout$get_parent_split_$_find_parent(cljs.core.first(new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(node)),node);
160
+ if(cljs.core.truth_(or__5002__auto__)){
161
+ return or__5002__auto__;
162
+ } else {
163
+ return iris_layout$layout$get_parent_split_$_find_parent(cljs.core.second(new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(node)),node);
164
+ }
165
+ } else {
166
+ return null;
167
+ }
168
+ }
169
+ }
170
+ });
171
+ return find_parent(tree,null);
172
+ });
173
+ /**
174
+ * Remove a tile and collapse its parent split
175
+ */
176
+ iris_layout.layout.merge_tile = (function iris_layout$layout$merge_tile(tree,tile_id){
177
+ var parent = iris_layout.layout.get_parent_split(tree,tile_id);
178
+ if(cljs.core.truth_(parent)){
179
+ var vec__12236 = new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(parent);
180
+ var child1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12236,(0),null);
181
+ var child2 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12236,(1),null);
182
+ var sibling = ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(child1),tile_id))?child2:child1);
183
+ return iris_layout.layout.replace_node(tree,new cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(parent),sibling);
184
+ } else {
185
+ return tree;
186
+ }
187
+ });
188
+ /**
189
+ * Find the tile node that contains a given entity-id
190
+ */
191
+ iris_layout.layout.find_tile_by_entity = (function iris_layout$layout$find_tile_by_entity(tree,entity_id){
192
+ if((tree == null)){
193
+ return null;
194
+ } else {
195
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(tree),new cljs.core.Keyword(null,"tile","tile",758132866))){
196
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"entity-id","entity-id",1485898093).cljs$core$IFn$_invoke$arity$1(tree),entity_id)){
197
+ return tree;
198
+ } else {
199
+ return null;
200
+ }
201
+ } else {
202
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(tree),new cljs.core.Keyword(null,"split","split",-599435118))){
203
+ var or__5002__auto__ = (function (){var G__12243 = cljs.core.first(new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(tree));
204
+ var G__12244 = entity_id;
205
+ return (iris_layout.layout.find_tile_by_entity.cljs$core$IFn$_invoke$arity$2 ? iris_layout.layout.find_tile_by_entity.cljs$core$IFn$_invoke$arity$2(G__12243,G__12244) : iris_layout.layout.find_tile_by_entity.call(null,G__12243,G__12244));
206
+ })();
207
+ if(cljs.core.truth_(or__5002__auto__)){
208
+ return or__5002__auto__;
209
+ } else {
210
+ var G__12246 = cljs.core.second(new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(tree));
211
+ var G__12247 = entity_id;
212
+ return (iris_layout.layout.find_tile_by_entity.cljs$core$IFn$_invoke$arity$2 ? iris_layout.layout.find_tile_by_entity.cljs$core$IFn$_invoke$arity$2(G__12246,G__12247) : iris_layout.layout.find_tile_by_entity.call(null,G__12246,G__12247));
213
+ }
214
+ } else {
215
+ return null;
216
+ }
217
+ }
218
+ }
219
+ });
220
+ /**
221
+ * Remove an entity from the layout tree and collapse empty splits.
222
+ * Returns nil if the entire tree becomes empty.
223
+ */
224
+ iris_layout.layout.remove_entity_from_layout = (function iris_layout$layout$remove_entity_from_layout(tree,entity_id){
225
+ var remove_and_collapse = (function iris_layout$layout$remove_entity_from_layout_$_remove_and_collapse(node){
226
+ if((node == null)){
227
+ return null;
228
+ } else {
229
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(node),new cljs.core.Keyword(null,"tile","tile",758132866))){
230
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"entity-id","entity-id",1485898093).cljs$core$IFn$_invoke$arity$1(node),entity_id)){
231
+ return null;
232
+ } else {
233
+ return node;
234
+ }
235
+ } else {
236
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(node),new cljs.core.Keyword(null,"split","split",-599435118))){
237
+ var vec__12254 = new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(node);
238
+ var c1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12254,(0),null);
239
+ var c2 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12254,(1),null);
240
+ var new_c1 = iris_layout$layout$remove_entity_from_layout_$_remove_and_collapse(c1);
241
+ var new_c2 = iris_layout$layout$remove_entity_from_layout_$_remove_and_collapse(c2);
242
+ if((new_c1 == null)){
243
+ return new_c2;
244
+ } else {
245
+ if((new_c2 == null)){
246
+ return new_c1;
247
+ } else {
248
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(node,new cljs.core.Keyword(null,"children","children",-940561982),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new_c1,new_c2], null));
249
+
250
+ }
251
+ }
252
+ } else {
253
+ return node;
254
+
255
+ }
256
+ }
257
+ }
258
+ });
259
+ return remove_and_collapse(tree);
260
+ });
261
+ /**
262
+ * Walk layout tree and return a vector of entity IDs (in order)
263
+ */
264
+ iris_layout.layout.collect_entity_ids = (function iris_layout$layout$collect_entity_ids(node){
265
+ if((node == null)){
266
+ return cljs.core.PersistentVector.EMPTY;
267
+ } else {
268
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(node),new cljs.core.Keyword(null,"tile","tile",758132866))){
269
+ if(cljs.core.truth_(new cljs.core.Keyword(null,"entity-id","entity-id",1485898093).cljs$core$IFn$_invoke$arity$1(node))){
270
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"entity-id","entity-id",1485898093).cljs$core$IFn$_invoke$arity$1(node)], null);
271
+ } else {
272
+ return cljs.core.PersistentVector.EMPTY;
273
+ }
274
+ } else {
275
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(node),new cljs.core.Keyword(null,"split","split",-599435118))){
276
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentVector.EMPTY,cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic(iris_layout.layout.collect_entity_ids,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(node)], 0)));
277
+ } else {
278
+ return cljs.core.PersistentVector.EMPTY;
279
+
280
+ }
281
+ }
282
+ }
283
+ });
284
+ /**
285
+ * Update the ratio of a split (clamped 0.1-0.9)
286
+ */
287
+ iris_layout.layout.update_split_ratio = (function iris_layout$layout$update_split_ratio(tree,split_id,new_ratio){
288
+ var update_node = (function iris_layout$layout$update_split_ratio_$_update_node(node){
289
+ if((node == null)){
290
+ return null;
291
+ } else {
292
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(node),new cljs.core.Keyword(null,"tile","tile",758132866))){
293
+ return node;
294
+ } else {
295
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(iris_layout.layout.node_type(node),new cljs.core.Keyword(null,"split","split",-599435118))){
296
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(node),split_id)){
297
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(node,new cljs.core.Keyword(null,"ratio","ratio",-926560044),(function (){var x__5090__auto__ = 0.9;
298
+ var y__5091__auto__ = (function (){var x__5087__auto__ = 0.1;
299
+ var y__5088__auto__ = new_ratio;
300
+ return ((x__5087__auto__ > y__5088__auto__) ? x__5087__auto__ : y__5088__auto__);
301
+ })();
302
+ return ((x__5090__auto__ < y__5091__auto__) ? x__5090__auto__ : y__5091__auto__);
303
+ })());
304
+ } else {
305
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(node,new cljs.core.Keyword(null,"children","children",-940561982),cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(iris_layout$layout$update_split_ratio_$_update_node,new cljs.core.Keyword(null,"children","children",-940561982).cljs$core$IFn$_invoke$arity$1(node)));
306
+ }
307
+ } else {
308
+ return null;
309
+ }
310
+ }
311
+ }
312
+ });
313
+ return update_node(tree);
314
+ });
315
+ /**
316
+ * Append an entity to an existing layout by wrapping in a horizontal split.
317
+ * If layout is nil, creates a single tile.
318
+ */
319
+ iris_layout.layout.append_entity = (function iris_layout$layout$append_entity(layout,entity_id,tile_id,split_id){
320
+ var new_tile = iris_layout.layout.create_tile(tile_id,entity_id);
321
+ if((layout == null)){
322
+ return new_tile;
323
+ } else {
324
+ return iris_layout.layout.create_split(split_id,new cljs.core.Keyword(null,"horizontal","horizontal",2062109475),layout,new_tile,0.5);
325
+ }
326
+ });
327
+
328
+ //# sourceMappingURL=iris_layout.layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["iris_layout/layout.cljs"],"mappings":"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","names":["iris-layout.layout/node-type","node","cljs.core.keyword","iris-layout.layout/create-tile","id","entity-id","iris-layout.layout/create-split","direction","child1","child2","ratio","x__5090__auto__","y__5091__auto__","x__5087__auto__","y__5088__auto__","iris-layout.layout/find-tile","tree","tile-id","cljs.core._EQ_","or__5002__auto__","G__12195","G__12196","cljs.core/first","G__12197","G__12198","cljs.core/second","iris-layout.layout/replace-node","node-id","new-node","cljs.core.assoc","G__12199","G__12200","G__12201","G__12205","G__12206","G__12207","var_args","args__5732__auto__","len__5726__auto__","i__5727__auto__","argseq__5733__auto__","cljs.core/IndexedSeq","iris-layout.layout/split-tile","p__12224","vec__12225","cljs.core.nth","seq12213","G__12214","cljs.core/next","G__12215","G__12216","G__12217","G__12218","G__12219","self__5711__auto__","new-entity-id","new-tile-id","split-id","before?","existing-tile","vec__12228","new-tile","new-split","iris-layout.layout/get-parent-split","parent","find-parent","iris-layout.layout/merge-tile","vec__12236","sibling","iris-layout.layout/find-tile-by-entity","G__12243","G__12244","G__12246","G__12247","iris-layout.layout/remove-entity-from-layout","vec__12254","c1","c2","new-c1","remove-and-collapse","new-c2","iris-layout.layout/collect-entity-ids","cljs.core.into","cljs.core.mapcat","iris-layout.layout/update-split-ratio","new-ratio","cljs.core.mapv","update-node","iris-layout.layout/append-entity","layout"],"sourcesContent":["(ns iris-layout.layout)\n\n(defn node-type\n \"Get node type as keyword (handles both keyword and string values)\"\n [node]\n (keyword (:type node)))\n\n(defn create-tile\n \"Create a new tile node\"\n [id entity-id]\n {:type :tile\n :id id\n :entity-id entity-id})\n\n(defn create-split\n \"Create a new split node with direction, children, and ratio\"\n [id direction child1 child2 ratio]\n {:type :split\n :id id\n :direction direction\n :ratio (min 0.9 (max 0.1 ratio))\n :children [child1 child2]})\n\n(defn find-tile\n \"Walk tree to find tile by ID\"\n [tree tile-id]\n (cond\n (nil? tree) nil\n (= (node-type tree) :tile)\n (when (= (:id tree) tile-id) tree)\n\n (= (node-type tree) :split)\n (or (find-tile (first (:children tree)) tile-id)\n (find-tile (second (:children tree)) tile-id))))\n\n(defn replace-node\n \"Replace a node in the tree by ID with a new node\"\n [tree node-id new-node]\n (cond\n (nil? tree) nil\n\n (= (:id tree) node-id)\n new-node\n\n (= (node-type tree) :split)\n (assoc tree :children\n [(replace-node (first (:children tree)) node-id new-node)\n (replace-node (second (:children tree)) node-id new-node)])\n\n :else tree))\n\n(defn split-tile\n \"Insert a split at tile position with new entity.\n When before? is true, new tile goes first (left/top).\"\n [tree tile-id direction new-entity-id new-tile-id split-id & [before?]]\n (let [existing-tile (find-tile tree tile-id)]\n (when existing-tile\n (let [new-tile (create-tile new-tile-id new-entity-id)\n [child1 child2] (if before?\n [new-tile existing-tile]\n [existing-tile new-tile])\n new-split (create-split split-id direction child1 child2 0.5)]\n (replace-node tree tile-id new-split)))))\n\n(defn get-parent-split\n \"Find the parent split of a given node\"\n [tree node-id]\n (letfn [(find-parent [node parent]\n (cond\n (nil? node) nil\n\n (= (:id node) node-id) parent\n\n (= (node-type node) :split)\n (or (find-parent (first (:children node)) node)\n (find-parent (second (:children node)) node))))]\n (find-parent tree nil)))\n\n(defn merge-tile\n \"Remove a tile and collapse its parent split\"\n [tree tile-id]\n (let [parent (get-parent-split tree tile-id)]\n (if parent\n (let [[child1 child2] (:children parent)\n sibling (if (= (:id child1) tile-id) child2 child1)]\n (replace-node tree (:id parent) sibling))\n tree)))\n\n(defn find-tile-by-entity\n \"Find the tile node that contains a given entity-id\"\n [tree entity-id]\n (cond\n (nil? tree) nil\n (= (node-type tree) :tile)\n (when (= (:entity-id tree) entity-id) tree)\n\n (= (node-type tree) :split)\n (or (find-tile-by-entity (first (:children tree)) entity-id)\n (find-tile-by-entity (second (:children tree)) entity-id))))\n\n(defn remove-entity-from-layout\n \"Remove an entity from the layout tree and collapse empty splits.\n Returns nil if the entire tree becomes empty.\"\n [tree entity-id]\n (letfn [(remove-and-collapse [node]\n (cond\n (nil? node) nil\n\n (= (node-type node) :tile)\n (if (= (:entity-id node) entity-id)\n nil ;; Remove this tile\n node)\n\n (= (node-type node) :split)\n (let [[c1 c2] (:children node)\n new-c1 (remove-and-collapse c1)\n new-c2 (remove-and-collapse c2)]\n (cond\n (nil? new-c1) new-c2 ;; Collapse: return sibling\n (nil? new-c2) new-c1 ;; Collapse: return sibling\n :else (assoc node :children [new-c1 new-c2])))\n\n :else node))]\n (remove-and-collapse tree)))\n\n(defn collect-entity-ids\n \"Walk layout tree and return a vector of entity IDs (in order)\"\n [node]\n (cond\n (nil? node) []\n (= (node-type node) :tile) (if (:entity-id node) [(:entity-id node)] [])\n (= (node-type node) :split) (into [] (mapcat collect-entity-ids (:children node)))\n :else []))\n\n(defn update-split-ratio\n \"Update the ratio of a split (clamped 0.1-0.9)\"\n [tree split-id new-ratio]\n (letfn [(update-node [node]\n (cond\n (nil? node) nil\n\n (= (node-type node) :tile) node\n\n (= (node-type node) :split)\n (if (= (:id node) split-id)\n (assoc node :ratio (min 0.9 (max 0.1 new-ratio)))\n (assoc node :children\n (mapv update-node (:children node))))))]\n (update-node tree)))\n\n(defn append-entity\n \"Append an entity to an existing layout by wrapping in a horizontal split.\n If layout is nil, creates a single tile.\"\n [layout entity-id tile-id split-id]\n (let [new-tile (create-tile tile-id entity-id)]\n (if (nil? layout)\n new-tile\n (create-split split-id :horizontal layout new-tile 0.5))))\n"]}