@lotte-innovate/ui-component-test 0.0.115 → 0.0.117

Sign up to get free protection for your applications and to get access to all the features.
Files changed (559) hide show
  1. package/dist/globals.css +3 -3
  2. package/dist/lib/color/alpha.mjs.map +1 -0
  3. package/dist/lib/color/constants.mjs.map +1 -0
  4. package/dist/lib/color/light.mjs.map +1 -0
  5. package/dist/lib/components/AlertDialog/index.mjs.map +1 -0
  6. package/dist/lib/components/BarChart/index.mjs.map +1 -0
  7. package/dist/lib/components/Breadcrumb/BreadcrumbEllipsis.mjs.map +1 -0
  8. package/dist/lib/components/Breadcrumb/BreadcrumbItem.mjs.map +1 -0
  9. package/dist/lib/components/Breadcrumb/BreadcrumbLink.mjs.map +1 -0
  10. package/dist/lib/components/Breadcrumb/BreadcrumbList.mjs.map +1 -0
  11. package/dist/lib/components/Breadcrumb/BreadcrumbPage.mjs.map +1 -0
  12. package/dist/lib/components/Breadcrumb/BreadcrumbSeparator.mjs.map +1 -0
  13. package/dist/lib/components/Breadcrumb/index.mjs.map +1 -0
  14. package/dist/lib/components/BubbleChart/index.mjs.map +1 -0
  15. package/dist/lib/components/Callout/index.mjs.map +1 -0
  16. package/dist/lib/components/CheckboxGroup/index.mjs.map +1 -0
  17. package/dist/lib/components/ContextMenu/ContextMenuGroup.mjs.map +1 -0
  18. package/dist/lib/components/ContextMenu/ContextMenuSeparator.mjs.map +1 -0
  19. package/dist/lib/components/ContextMenu/ContextMenuTrigger.mjs.map +1 -0
  20. package/dist/lib/components/ContextMenu/index.mjs.map +1 -0
  21. package/dist/lib/components/DataList/index.mjs.map +1 -0
  22. package/dist/lib/components/Dialog/DialogTrigger.mjs.map +1 -0
  23. package/dist/lib/components/Dialog/index.mjs.map +1 -0
  24. package/dist/lib/components/DoughnutChart/index.mjs.map +1 -0
  25. package/dist/lib/components/DropdownMenu/DropdonMenuRadioGroup.mjs.map +1 -0
  26. package/dist/lib/components/DropdownMenu/DropdownMenuSeparator.mjs.map +1 -0
  27. package/dist/lib/components/DropdownMenu/DropdownMenuSub.mjs.map +1 -0
  28. package/dist/lib/components/DropdownMenu/index.mjs.map +1 -0
  29. package/dist/lib/components/Editor/index.d.ts +15 -14
  30. package/dist/lib/components/Editor/index.js +50 -34
  31. package/dist/lib/components/Editor/index.mjs +3 -0
  32. package/dist/lib/components/Gnb/GnbLogo.mjs.map +1 -0
  33. package/dist/lib/components/Gnb/index.mjs.map +1 -0
  34. package/dist/lib/components/Grid/Pagination.mjs.map +1 -0
  35. package/dist/lib/components/HoverCard/HoverCardTrigger.mjs.map +1 -0
  36. package/dist/lib/components/HoverCard/index.mjs.map +1 -0
  37. package/dist/lib/components/LineChart/index.mjs.map +1 -0
  38. package/dist/lib/components/Menubar/MenubarMenu.mjs.map +1 -0
  39. package/dist/lib/components/Menubar/MenubarSeparator.mjs.map +1 -0
  40. package/dist/lib/components/Menubar/MenubarSub.mjs.map +1 -0
  41. package/dist/lib/components/Menubar/index.mjs.map +1 -0
  42. package/dist/lib/components/NavigationMenu/NavigationMenuIndicator.mjs.map +1 -0
  43. package/dist/lib/components/NavigationMenu/NavigationMenuItem.mjs.map +1 -0
  44. package/dist/lib/components/NavigationMenu/index.mjs.map +1 -0
  45. package/dist/lib/components/PieChart/index.mjs.map +1 -0
  46. package/dist/lib/components/Popover/PopoverTrigger.mjs.map +1 -0
  47. package/dist/lib/components/Popover/index.mjs.map +1 -0
  48. package/dist/lib/components/RadarChart/index.mjs.map +1 -0
  49. package/dist/lib/components/RadioCards/index.mjs.map +1 -0
  50. package/dist/lib/components/RadioGroup/index.mjs.map +1 -0
  51. package/dist/lib/components/SegmentedControl/SegmentedControlItem.mjs.map +1 -0
  52. package/dist/lib/components/SegmentedControl/index.mjs.map +1 -0
  53. package/dist/lib/components/Select/index.d.ts +1 -1
  54. package/dist/lib/components/Select/index.js +2 -2
  55. package/dist/lib/components/Select/index.mjs +3 -0
  56. package/dist/lib/components/Toast/index.mjs.map +1 -0
  57. package/dist/lib/components/ToggleGroup/index.mjs.map +1 -0
  58. package/dist/lib/constants.mjs.map +1 -0
  59. package/dist/lib/utils/utils.mjs.map +1 -0
  60. package/dist/public/tinymce/icons/default/index.js +2 -1
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +3 -1
  63. package/public/tinymce/CHANGELOG.md +3453 -0
  64. package/public/tinymce/README.md +73 -0
  65. package/public/tinymce/bower.json +27 -0
  66. package/public/tinymce/composer.json +52 -0
  67. package/public/tinymce/icons/default/icons.js +194 -0
  68. package/{dist/lib/public/tinymce/icons/default/icons.mjs → public/tinymce/icons/default/icons.min.js} +1 -3
  69. package/public/tinymce/icons/default/index.js +7 -0
  70. package/public/tinymce/license.txt +21 -0
  71. package/public/tinymce/models/dom/index.js +7 -0
  72. package/public/tinymce/models/dom/model.js +8040 -0
  73. package/public/tinymce/models/dom/model.min.js +4 -0
  74. package/public/tinymce/package.json +32 -0
  75. package/public/tinymce/plugins/advlist/index.js +7 -0
  76. package/public/tinymce/plugins/advlist/plugin.js +259 -0
  77. package/public/tinymce/plugins/advlist/plugin.min.js +4 -0
  78. package/{dist/public → public}/tinymce/plugins/autolink/index.js +1 -2
  79. package/public/tinymce/plugins/autolink/plugin.js +228 -0
  80. package/public/tinymce/plugins/autolink/plugin.min.js +4 -0
  81. package/public/tinymce/plugins/code/index.js +7 -0
  82. package/public/tinymce/plugins/code/plugin.js +85 -0
  83. package/public/tinymce/plugins/code/plugin.min.js +4 -0
  84. package/public/tinymce/plugins/codesample/index.js +7 -0
  85. package/public/tinymce/plugins/codesample/plugin.js +2463 -0
  86. package/public/tinymce/plugins/codesample/plugin.min.js +4 -0
  87. package/public/tinymce/plugins/image/index.js +7 -0
  88. package/public/tinymce/plugins/image/plugin.js +1505 -0
  89. package/public/tinymce/plugins/image/plugin.min.js +4 -0
  90. package/public/tinymce/plugins/link/index.js +7 -0
  91. package/public/tinymce/plugins/link/plugin.js +1242 -0
  92. package/public/tinymce/plugins/link/plugin.min.js +4 -0
  93. package/public/tinymce/plugins/lists/index.js +7 -0
  94. package/public/tinymce/plugins/lists/plugin.js +2172 -0
  95. package/public/tinymce/plugins/lists/plugin.min.js +4 -0
  96. package/public/tinymce/plugins/table/index.js +7 -0
  97. package/public/tinymce/plugins/table/plugin.js +3462 -0
  98. package/public/tinymce/plugins/table/plugin.min.js +4 -0
  99. package/public/tinymce/skins/content/default/content.css +61 -0
  100. package/public/tinymce/skins/content/default/content.js +2 -0
  101. package/public/tinymce/skins/content/default/content.min.css +1 -0
  102. package/public/tinymce/skins/ui/oxide/content.css +785 -0
  103. package/public/tinymce/skins/ui/oxide/content.inline.css +779 -0
  104. package/{dist/public → public}/tinymce/skins/ui/oxide/content.inline.js +1 -2
  105. package/public/tinymce/skins/ui/oxide/content.inline.min.css +1 -0
  106. package/public/tinymce/skins/ui/oxide/content.js +2 -0
  107. package/public/tinymce/skins/ui/oxide/content.min.css +1 -0
  108. package/public/tinymce/skins/ui/oxide/skin.css +3763 -0
  109. package/public/tinymce/skins/ui/oxide/skin.js +2 -0
  110. package/public/tinymce/skins/ui/oxide/skin.min.css +1 -0
  111. package/public/tinymce/skins/ui/oxide/skin.shadowdom.css +30 -0
  112. package/{dist/public → public}/tinymce/skins/ui/oxide/skin.shadowdom.js +1 -2
  113. package/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css +1 -0
  114. package/public/tinymce/skins/ui/oxide-dark/content.css +766 -0
  115. package/public/tinymce/skins/ui/oxide-dark/content.inline.css +779 -0
  116. package/{dist/public → public}/tinymce/skins/ui/oxide-dark/content.inline.js +1 -2
  117. package/public/tinymce/skins/ui/oxide-dark/content.inline.min.css +1 -0
  118. package/{dist/public → public}/tinymce/skins/ui/oxide-dark/content.js +1 -2
  119. package/public/tinymce/skins/ui/oxide-dark/content.min.css +1 -0
  120. package/public/tinymce/skins/ui/oxide-dark/skin.css +3766 -0
  121. package/{dist/public → public}/tinymce/skins/ui/oxide-dark/skin.js +1 -2
  122. package/public/tinymce/skins/ui/oxide-dark/skin.min.css +1 -0
  123. package/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css +30 -0
  124. package/{dist/public → public}/tinymce/skins/ui/oxide-dark/skin.shadowdom.js +1 -2
  125. package/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css +1 -0
  126. package/public/tinymce/themes/silver/index.js +7 -0
  127. package/public/tinymce/themes/silver/theme.js +30775 -0
  128. package/public/tinymce/themes/silver/theme.min.js +384 -0
  129. package/public/tinymce/tinymce.d.ts +3238 -0
  130. package/public/tinymce/tinymce.js +31779 -0
  131. package/public/tinymce/tinymce.min.js +384 -0
  132. package/dist/lib/_virtual/index.mjs +0 -2
  133. package/dist/lib/_virtual/index10.mjs +0 -2
  134. package/dist/lib/_virtual/index10.mjs.map +0 -1
  135. package/dist/lib/_virtual/index11.mjs +0 -2
  136. package/dist/lib/_virtual/index11.mjs.map +0 -1
  137. package/dist/lib/_virtual/index12.mjs +0 -2
  138. package/dist/lib/_virtual/index12.mjs.map +0 -1
  139. package/dist/lib/_virtual/index13.mjs +0 -2
  140. package/dist/lib/_virtual/index13.mjs.map +0 -1
  141. package/dist/lib/_virtual/index14.mjs +0 -2
  142. package/dist/lib/_virtual/index14.mjs.map +0 -1
  143. package/dist/lib/_virtual/index2.mjs +0 -2
  144. package/dist/lib/_virtual/index2.mjs.map +0 -1
  145. package/dist/lib/_virtual/index3.mjs +0 -2
  146. package/dist/lib/_virtual/index3.mjs.map +0 -1
  147. package/dist/lib/_virtual/index4.mjs +0 -2
  148. package/dist/lib/_virtual/index4.mjs.map +0 -1
  149. package/dist/lib/_virtual/index5.mjs +0 -2
  150. package/dist/lib/_virtual/index5.mjs.map +0 -1
  151. package/dist/lib/_virtual/index6.mjs +0 -2
  152. package/dist/lib/_virtual/index6.mjs.map +0 -1
  153. package/dist/lib/_virtual/index7.mjs +0 -2
  154. package/dist/lib/_virtual/index7.mjs.map +0 -1
  155. package/dist/lib/_virtual/index8.mjs +0 -2
  156. package/dist/lib/_virtual/index8.mjs.map +0 -1
  157. package/dist/lib/_virtual/index9.mjs +0 -2
  158. package/dist/lib/_virtual/index9.mjs.map +0 -1
  159. package/dist/lib/_virtual/model.mjs +0 -2
  160. package/dist/lib/_virtual/model.mjs.map +0 -1
  161. package/dist/lib/_virtual/plugin.mjs +0 -2
  162. package/dist/lib/_virtual/plugin.mjs.map +0 -1
  163. package/dist/lib/_virtual/plugin2.mjs +0 -2
  164. package/dist/lib/_virtual/plugin2.mjs.map +0 -1
  165. package/dist/lib/_virtual/plugin3.mjs +0 -2
  166. package/dist/lib/_virtual/plugin3.mjs.map +0 -1
  167. package/dist/lib/_virtual/plugin4.mjs +0 -2
  168. package/dist/lib/_virtual/plugin4.mjs.map +0 -1
  169. package/dist/lib/_virtual/plugin5.mjs +0 -2
  170. package/dist/lib/_virtual/plugin5.mjs.map +0 -1
  171. package/dist/lib/_virtual/theme.mjs +0 -2
  172. package/dist/lib/_virtual/theme.mjs.map +0 -1
  173. package/dist/lib/lib/color/alpha.mjs.map +0 -1
  174. package/dist/lib/lib/color/constants.mjs.map +0 -1
  175. package/dist/lib/lib/color/light.mjs.map +0 -1
  176. package/dist/lib/lib/components/AlertDialog/index.mjs.map +0 -1
  177. package/dist/lib/lib/components/BarChart/index.mjs.map +0 -1
  178. package/dist/lib/lib/components/Breadcrumb/BreadcrumbEllipsis.mjs.map +0 -1
  179. package/dist/lib/lib/components/Breadcrumb/BreadcrumbItem.mjs.map +0 -1
  180. package/dist/lib/lib/components/Breadcrumb/BreadcrumbLink.mjs.map +0 -1
  181. package/dist/lib/lib/components/Breadcrumb/BreadcrumbList.mjs.map +0 -1
  182. package/dist/lib/lib/components/Breadcrumb/BreadcrumbPage.mjs.map +0 -1
  183. package/dist/lib/lib/components/Breadcrumb/BreadcrumbSeparator.mjs.map +0 -1
  184. package/dist/lib/lib/components/Breadcrumb/index.mjs.map +0 -1
  185. package/dist/lib/lib/components/BubbleChart/index.mjs.map +0 -1
  186. package/dist/lib/lib/components/Callout/index.mjs.map +0 -1
  187. package/dist/lib/lib/components/CheckboxGroup/index.mjs.map +0 -1
  188. package/dist/lib/lib/components/ContextMenu/ContextMenuGroup.mjs.map +0 -1
  189. package/dist/lib/lib/components/ContextMenu/ContextMenuSeparator.mjs.map +0 -1
  190. package/dist/lib/lib/components/ContextMenu/ContextMenuTrigger.mjs.map +0 -1
  191. package/dist/lib/lib/components/ContextMenu/index.mjs.map +0 -1
  192. package/dist/lib/lib/components/DataList/index.mjs.map +0 -1
  193. package/dist/lib/lib/components/Dialog/DialogTrigger.mjs.map +0 -1
  194. package/dist/lib/lib/components/Dialog/index.mjs.map +0 -1
  195. package/dist/lib/lib/components/DoughnutChart/index.mjs.map +0 -1
  196. package/dist/lib/lib/components/DropdownMenu/DropdonMenuRadioGroup.mjs.map +0 -1
  197. package/dist/lib/lib/components/DropdownMenu/DropdownMenuSeparator.mjs.map +0 -1
  198. package/dist/lib/lib/components/DropdownMenu/DropdownMenuSub.mjs.map +0 -1
  199. package/dist/lib/lib/components/DropdownMenu/index.mjs.map +0 -1
  200. package/dist/lib/lib/components/Editor/index.mjs +0 -3
  201. package/dist/lib/lib/components/Gnb/GnbLogo.mjs.map +0 -1
  202. package/dist/lib/lib/components/Gnb/index.mjs.map +0 -1
  203. package/dist/lib/lib/components/Grid/Pagination.mjs.map +0 -1
  204. package/dist/lib/lib/components/HoverCard/HoverCardTrigger.mjs.map +0 -1
  205. package/dist/lib/lib/components/HoverCard/index.mjs.map +0 -1
  206. package/dist/lib/lib/components/LineChart/index.mjs.map +0 -1
  207. package/dist/lib/lib/components/Menubar/MenubarMenu.mjs.map +0 -1
  208. package/dist/lib/lib/components/Menubar/MenubarSeparator.mjs.map +0 -1
  209. package/dist/lib/lib/components/Menubar/MenubarSub.mjs.map +0 -1
  210. package/dist/lib/lib/components/Menubar/index.mjs.map +0 -1
  211. package/dist/lib/lib/components/NavigationMenu/NavigationMenuIndicator.mjs.map +0 -1
  212. package/dist/lib/lib/components/NavigationMenu/NavigationMenuItem.mjs.map +0 -1
  213. package/dist/lib/lib/components/NavigationMenu/index.mjs.map +0 -1
  214. package/dist/lib/lib/components/PieChart/index.mjs.map +0 -1
  215. package/dist/lib/lib/components/Popover/PopoverTrigger.mjs.map +0 -1
  216. package/dist/lib/lib/components/Popover/index.mjs.map +0 -1
  217. package/dist/lib/lib/components/RadarChart/index.mjs.map +0 -1
  218. package/dist/lib/lib/components/RadioCards/index.mjs.map +0 -1
  219. package/dist/lib/lib/components/RadioGroup/index.mjs.map +0 -1
  220. package/dist/lib/lib/components/SegmentedControl/SegmentedControlItem.mjs.map +0 -1
  221. package/dist/lib/lib/components/SegmentedControl/index.mjs.map +0 -1
  222. package/dist/lib/lib/components/Select/index.mjs +0 -3
  223. package/dist/lib/lib/components/Toast/index.mjs.map +0 -1
  224. package/dist/lib/lib/components/ToggleGroup/index.mjs.map +0 -1
  225. package/dist/lib/lib/constants.mjs.map +0 -1
  226. package/dist/lib/lib/index.mjs.map +0 -1
  227. package/dist/lib/lib/utils/utils.mjs.map +0 -1
  228. package/dist/lib/public/tinymce/icons/default/icons.mjs.map +0 -1
  229. package/dist/lib/public/tinymce/models/dom/index.mjs +0 -2
  230. package/dist/lib/public/tinymce/models/dom/index.mjs.map +0 -1
  231. package/dist/lib/public/tinymce/models/dom/model.mjs +0 -2
  232. package/dist/lib/public/tinymce/models/dom/model.mjs.map +0 -1
  233. package/dist/lib/public/tinymce/plugins/advlist/index.mjs +0 -2
  234. package/dist/lib/public/tinymce/plugins/advlist/index.mjs.map +0 -1
  235. package/dist/lib/public/tinymce/plugins/advlist/plugin.mjs +0 -2
  236. package/dist/lib/public/tinymce/plugins/advlist/plugin.mjs.map +0 -1
  237. package/dist/lib/public/tinymce/plugins/code/index.mjs +0 -2
  238. package/dist/lib/public/tinymce/plugins/code/index.mjs.map +0 -1
  239. package/dist/lib/public/tinymce/plugins/code/plugin.mjs +0 -2
  240. package/dist/lib/public/tinymce/plugins/code/plugin.mjs.map +0 -1
  241. package/dist/lib/public/tinymce/plugins/link/index.mjs +0 -2
  242. package/dist/lib/public/tinymce/plugins/link/index.mjs.map +0 -1
  243. package/dist/lib/public/tinymce/plugins/link/plugin.mjs +0 -2
  244. package/dist/lib/public/tinymce/plugins/link/plugin.mjs.map +0 -1
  245. package/dist/lib/public/tinymce/plugins/lists/index.mjs +0 -2
  246. package/dist/lib/public/tinymce/plugins/lists/index.mjs.map +0 -1
  247. package/dist/lib/public/tinymce/plugins/lists/plugin.mjs +0 -2
  248. package/dist/lib/public/tinymce/plugins/lists/plugin.mjs.map +0 -1
  249. package/dist/lib/public/tinymce/plugins/table/index.mjs +0 -2
  250. package/dist/lib/public/tinymce/plugins/table/index.mjs.map +0 -1
  251. package/dist/lib/public/tinymce/plugins/table/plugin.mjs +0 -2
  252. package/dist/lib/public/tinymce/plugins/table/plugin.mjs.map +0 -1
  253. package/dist/lib/public/tinymce/skins/content/default/content.mjs +0 -3
  254. package/dist/lib/public/tinymce/skins/content/default/content.mjs.map +0 -1
  255. package/dist/lib/public/tinymce/skins/ui/oxide/content.mjs +0 -3
  256. package/dist/lib/public/tinymce/skins/ui/oxide/content.mjs.map +0 -1
  257. package/dist/lib/public/tinymce/skins/ui/oxide/skin.mjs +0 -3
  258. package/dist/lib/public/tinymce/skins/ui/oxide/skin.mjs.map +0 -1
  259. package/dist/lib/public/tinymce/themes/silver/index.mjs +0 -2
  260. package/dist/lib/public/tinymce/themes/silver/index.mjs.map +0 -1
  261. package/dist/lib/public/tinymce/themes/silver/theme.mjs +0 -2
  262. package/dist/lib/public/tinymce/themes/silver/theme.mjs.map +0 -1
  263. package/dist/lib/tailwind.config.d.ts +0 -3
  264. package/dist/lib/tsconfig.tsbuildinfo +0 -1
  265. package/dist/public/tinymce/plugins/autolink/index.d.ts +0 -1
  266. package/dist/public/tinymce/plugins/autolink/plugin.d.ts +0 -0
  267. package/dist/public/tinymce/plugins/autolink/plugin.js +0 -221
  268. package/dist/public/tinymce/skins/ui/oxide/content.inline.d.ts +0 -0
  269. package/dist/public/tinymce/skins/ui/oxide/skin.shadowdom.d.ts +0 -0
  270. package/dist/public/tinymce/skins/ui/oxide-dark/content.d.ts +0 -0
  271. package/dist/public/tinymce/skins/ui/oxide-dark/content.inline.d.ts +0 -0
  272. package/dist/public/tinymce/skins/ui/oxide-dark/skin.d.ts +0 -0
  273. package/dist/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.d.ts +0 -0
  274. package/dist/public/tinymce/tinymce.d.ts +0 -1
  275. package/dist/public/tinymce/tinymce.js +0 -31974
  276. /package/dist/lib/{lib/Typography → Typography}/Header/index.mjs +0 -0
  277. /package/dist/lib/{lib/Typography → Typography}/Header/index.mjs.map +0 -0
  278. /package/dist/lib/{lib/Typography → Typography}/Text/index.mjs +0 -0
  279. /package/dist/lib/{lib/Typography → Typography}/Text/index.mjs.map +0 -0
  280. /package/dist/lib/{lib/color → color}/alpha.mjs +0 -0
  281. /package/dist/lib/{lib/color → color}/constants.mjs +0 -0
  282. /package/dist/lib/{lib/color → color}/light.mjs +0 -0
  283. /package/dist/lib/{lib/components → components}/Accordion/index.mjs +0 -0
  284. /package/dist/lib/{lib/components → components}/Accordion/index.mjs.map +0 -0
  285. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogAction.mjs +0 -0
  286. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogAction.mjs.map +0 -0
  287. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogCancel.mjs +0 -0
  288. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogCancel.mjs.map +0 -0
  289. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogContent.mjs +0 -0
  290. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogContent.mjs.map +0 -0
  291. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogDescription.mjs +0 -0
  292. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogDescription.mjs.map +0 -0
  293. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogRoot.mjs +0 -0
  294. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogRoot.mjs.map +0 -0
  295. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogTitle.mjs +0 -0
  296. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogTitle.mjs.map +0 -0
  297. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogTrigger.mjs +0 -0
  298. /package/dist/lib/{lib/components → components}/AlertDialog/AlertDialogTrigger.mjs.map +0 -0
  299. /package/dist/lib/{lib/components → components}/AlertDialog/index.mjs +0 -0
  300. /package/dist/lib/{lib/components → components}/AspectRatio/index.mjs +0 -0
  301. /package/dist/lib/{lib/components → components}/AspectRatio/index.mjs.map +0 -0
  302. /package/dist/lib/{lib/components → components}/Avatar/index.mjs +0 -0
  303. /package/dist/lib/{lib/components → components}/Avatar/index.mjs.map +0 -0
  304. /package/dist/lib/{lib/components → components}/Badge/index.mjs +0 -0
  305. /package/dist/lib/{lib/components → components}/Badge/index.mjs.map +0 -0
  306. /package/dist/lib/{lib/components → components}/BarChart/index.mjs +0 -0
  307. /package/dist/lib/{lib/components → components}/Breadcrumb/BreadcrumbEllipsis.mjs +0 -0
  308. /package/dist/lib/{lib/components → components}/Breadcrumb/BreadcrumbItem.mjs +0 -0
  309. /package/dist/lib/{lib/components → components}/Breadcrumb/BreadcrumbLink.mjs +0 -0
  310. /package/dist/lib/{lib/components → components}/Breadcrumb/BreadcrumbList.mjs +0 -0
  311. /package/dist/lib/{lib/components → components}/Breadcrumb/BreadcrumbPage.mjs +0 -0
  312. /package/dist/lib/{lib/components → components}/Breadcrumb/BreadcrumbRoot.mjs +0 -0
  313. /package/dist/lib/{lib/components → components}/Breadcrumb/BreadcrumbRoot.mjs.map +0 -0
  314. /package/dist/lib/{lib/components → components}/Breadcrumb/BreadcrumbSeparator.mjs +0 -0
  315. /package/dist/lib/{lib/components → components}/Breadcrumb/index.mjs +0 -0
  316. /package/dist/lib/{lib/components → components}/BubbleChart/index.mjs +0 -0
  317. /package/dist/lib/{lib/components → components}/Button/index.mjs +0 -0
  318. /package/dist/lib/{lib/components → components}/Button/index.mjs.map +0 -0
  319. /package/dist/lib/{lib/components → components}/Callout/CalloutIcon.mjs +0 -0
  320. /package/dist/lib/{lib/components → components}/Callout/CalloutIcon.mjs.map +0 -0
  321. /package/dist/lib/{lib/components → components}/Callout/CalloutRoot.mjs +0 -0
  322. /package/dist/lib/{lib/components → components}/Callout/CalloutRoot.mjs.map +0 -0
  323. /package/dist/lib/{lib/components → components}/Callout/CalloutText.mjs +0 -0
  324. /package/dist/lib/{lib/components → components}/Callout/CalloutText.mjs.map +0 -0
  325. /package/dist/lib/{lib/components → components}/Callout/index.mjs +0 -0
  326. /package/dist/lib/{lib/components → components}/Card/index.mjs +0 -0
  327. /package/dist/lib/{lib/components → components}/Card/index.mjs.map +0 -0
  328. /package/dist/lib/{lib/components → components}/Checkbox/index.mjs +0 -0
  329. /package/dist/lib/{lib/components → components}/Checkbox/index.mjs.map +0 -0
  330. /package/dist/lib/{lib/components → components}/CheckboxCard/index.mjs +0 -0
  331. /package/dist/lib/{lib/components → components}/CheckboxCard/index.mjs.map +0 -0
  332. /package/dist/lib/{lib/components → components}/CheckboxGroup/CheckboxGroupItem.mjs +0 -0
  333. /package/dist/lib/{lib/components → components}/CheckboxGroup/CheckboxGroupItem.mjs.map +0 -0
  334. /package/dist/lib/{lib/components → components}/CheckboxGroup/CheckboxGroupRoot.mjs +0 -0
  335. /package/dist/lib/{lib/components → components}/CheckboxGroup/CheckboxGroupRoot.mjs.map +0 -0
  336. /package/dist/lib/{lib/components → components}/CheckboxGroup/index.mjs +0 -0
  337. /package/dist/lib/{lib/components → components}/Collapsible/index.mjs +0 -0
  338. /package/dist/lib/{lib/components → components}/Collapsible/index.mjs.map +0 -0
  339. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuCheckboxItem.mjs +0 -0
  340. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuCheckboxItem.mjs.map +0 -0
  341. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuContent.mjs +0 -0
  342. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuContent.mjs.map +0 -0
  343. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuGroup.mjs +0 -0
  344. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuItem.mjs +0 -0
  345. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuItem.mjs.map +0 -0
  346. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuItemIndicator.mjs +0 -0
  347. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuItemIndicator.mjs.map +0 -0
  348. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuLabel.mjs +0 -0
  349. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuLabel.mjs.map +0 -0
  350. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuRadioGroup.mjs +0 -0
  351. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuRadioGroup.mjs.map +0 -0
  352. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuRadioItem.mjs +0 -0
  353. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuRadioItem.mjs.map +0 -0
  354. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuRoot.mjs +0 -0
  355. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuRoot.mjs.map +0 -0
  356. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuSeparator.mjs +0 -0
  357. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuSubContent.mjs +0 -0
  358. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuSubContent.mjs.map +0 -0
  359. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuSubTrigger.mjs +0 -0
  360. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuSubTrigger.mjs.map +0 -0
  361. /package/dist/lib/{lib/components → components}/ContextMenu/ContextMenuTrigger.mjs +0 -0
  362. /package/dist/lib/{lib/components → components}/ContextMenu/index.mjs +0 -0
  363. /package/dist/lib/{lib/components → components}/DataList/DataListItem.mjs +0 -0
  364. /package/dist/lib/{lib/components → components}/DataList/DataListItem.mjs.map +0 -0
  365. /package/dist/lib/{lib/components → components}/DataList/DataListLabel.mjs +0 -0
  366. /package/dist/lib/{lib/components → components}/DataList/DataListLabel.mjs.map +0 -0
  367. /package/dist/lib/{lib/components → components}/DataList/DataListRoot.mjs +0 -0
  368. /package/dist/lib/{lib/components → components}/DataList/DataListRoot.mjs.map +0 -0
  369. /package/dist/lib/{lib/components → components}/DataList/DataListValue.mjs +0 -0
  370. /package/dist/lib/{lib/components → components}/DataList/DataListValue.mjs.map +0 -0
  371. /package/dist/lib/{lib/components → components}/DataList/index.mjs +0 -0
  372. /package/dist/lib/{lib/components → components}/Dialog/DialogAction.mjs +0 -0
  373. /package/dist/lib/{lib/components → components}/Dialog/DialogAction.mjs.map +0 -0
  374. /package/dist/lib/{lib/components → components}/Dialog/DialogCancel.mjs +0 -0
  375. /package/dist/lib/{lib/components → components}/Dialog/DialogCancel.mjs.map +0 -0
  376. /package/dist/lib/{lib/components → components}/Dialog/DialogContent.mjs +0 -0
  377. /package/dist/lib/{lib/components → components}/Dialog/DialogContent.mjs.map +0 -0
  378. /package/dist/lib/{lib/components → components}/Dialog/DialogDescription.mjs +0 -0
  379. /package/dist/lib/{lib/components → components}/Dialog/DialogDescription.mjs.map +0 -0
  380. /package/dist/lib/{lib/components → components}/Dialog/DialogRoot.mjs +0 -0
  381. /package/dist/lib/{lib/components → components}/Dialog/DialogRoot.mjs.map +0 -0
  382. /package/dist/lib/{lib/components → components}/Dialog/DialogSlot.mjs +0 -0
  383. /package/dist/lib/{lib/components → components}/Dialog/DialogSlot.mjs.map +0 -0
  384. /package/dist/lib/{lib/components → components}/Dialog/DialogTitle.mjs +0 -0
  385. /package/dist/lib/{lib/components → components}/Dialog/DialogTitle.mjs.map +0 -0
  386. /package/dist/lib/{lib/components → components}/Dialog/DialogTrigger.mjs +0 -0
  387. /package/dist/lib/{lib/components → components}/Dialog/index.mjs +0 -0
  388. /package/dist/lib/{lib/components → components}/DoughnutChart/index.mjs +0 -0
  389. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdonMenuRadioGroup.mjs +0 -0
  390. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdonMenuSubContent.mjs +0 -0
  391. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdonMenuSubContent.mjs.map +0 -0
  392. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuCheckboxItem.mjs +0 -0
  393. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuCheckboxItem.mjs.map +0 -0
  394. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuContent.mjs +0 -0
  395. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuContent.mjs.map +0 -0
  396. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuItem.mjs +0 -0
  397. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuItem.mjs.map +0 -0
  398. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuItemIndicator.mjs +0 -0
  399. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuItemIndicator.mjs.map +0 -0
  400. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuLable.mjs +0 -0
  401. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuLable.mjs.map +0 -0
  402. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuRadioItem.mjs +0 -0
  403. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuRadioItem.mjs.map +0 -0
  404. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuRoot.mjs +0 -0
  405. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuRoot.mjs.map +0 -0
  406. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuSeparator.mjs +0 -0
  407. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuSub.mjs +0 -0
  408. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuSubTrigger.mjs +0 -0
  409. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuSubTrigger.mjs.map +0 -0
  410. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuTrigger.mjs +0 -0
  411. /package/dist/lib/{lib/components → components}/DropdownMenu/DropdownMenuTrigger.mjs.map +0 -0
  412. /package/dist/lib/{lib/components → components}/DropdownMenu/index.mjs +0 -0
  413. /package/dist/lib/{lib/components → components}/Editor/index.mjs.map +0 -0
  414. /package/dist/lib/{lib/components → components}/Footer/index.mjs +0 -0
  415. /package/dist/lib/{lib/components → components}/Footer/index.mjs.map +0 -0
  416. /package/dist/lib/{lib/components → components}/Gnb/GnbInfo.mjs +0 -0
  417. /package/dist/lib/{lib/components → components}/Gnb/GnbInfo.mjs.map +0 -0
  418. /package/dist/lib/{lib/components → components}/Gnb/GnbLogo.mjs +0 -0
  419. /package/dist/lib/{lib/components → components}/Gnb/GnbMenu.mjs +0 -0
  420. /package/dist/lib/{lib/components → components}/Gnb/GnbMenu.mjs.map +0 -0
  421. /package/dist/lib/{lib/components → components}/Gnb/GnbRoot.mjs +0 -0
  422. /package/dist/lib/{lib/components → components}/Gnb/GnbRoot.mjs.map +0 -0
  423. /package/dist/lib/{lib/components → components}/Gnb/index.mjs +0 -0
  424. /package/dist/lib/{lib/components → components}/Grid/Pagination.mjs +0 -0
  425. /package/dist/lib/{lib/components → components}/Grid/index.mjs +0 -0
  426. /package/dist/lib/{lib/components → components}/Grid/index.mjs.map +0 -0
  427. /package/dist/lib/{lib/components → components}/Grid/useGrid.mjs +0 -0
  428. /package/dist/lib/{lib/components → components}/Grid/useGrid.mjs.map +0 -0
  429. /package/dist/lib/{lib/components → components}/HoverCard/HoverCardContent.mjs +0 -0
  430. /package/dist/lib/{lib/components → components}/HoverCard/HoverCardContent.mjs.map +0 -0
  431. /package/dist/lib/{lib/components → components}/HoverCard/HoverCardRoot.mjs +0 -0
  432. /package/dist/lib/{lib/components → components}/HoverCard/HoverCardRoot.mjs.map +0 -0
  433. /package/dist/lib/{lib/components → components}/HoverCard/HoverCardTrigger.mjs +0 -0
  434. /package/dist/lib/{lib/components → components}/HoverCard/index.mjs +0 -0
  435. /package/dist/lib/{lib/components → components}/IconButton/index.mjs +0 -0
  436. /package/dist/lib/{lib/components → components}/IconButton/index.mjs.map +0 -0
  437. /package/dist/lib/{lib/components → components}/Inset/index.mjs +0 -0
  438. /package/dist/lib/{lib/components → components}/Inset/index.mjs.map +0 -0
  439. /package/dist/lib/{lib/components → components}/Label/index.mjs +0 -0
  440. /package/dist/lib/{lib/components → components}/Label/index.mjs.map +0 -0
  441. /package/dist/lib/{lib/components → components}/LineChart/index.mjs +0 -0
  442. /package/dist/lib/{lib/components → components}/Menubar/MenubarCheckboxItem.mjs +0 -0
  443. /package/dist/lib/{lib/components → components}/Menubar/MenubarCheckboxItem.mjs.map +0 -0
  444. /package/dist/lib/{lib/components → components}/Menubar/MenubarContent.mjs +0 -0
  445. /package/dist/lib/{lib/components → components}/Menubar/MenubarContent.mjs.map +0 -0
  446. /package/dist/lib/{lib/components → components}/Menubar/MenubarItem.mjs +0 -0
  447. /package/dist/lib/{lib/components → components}/Menubar/MenubarItem.mjs.map +0 -0
  448. /package/dist/lib/{lib/components → components}/Menubar/MenubarItemIndicator.mjs +0 -0
  449. /package/dist/lib/{lib/components → components}/Menubar/MenubarItemIndicator.mjs.map +0 -0
  450. /package/dist/lib/{lib/components → components}/Menubar/MenubarMenu.mjs +0 -0
  451. /package/dist/lib/{lib/components → components}/Menubar/MenubarRadioGroup.mjs +0 -0
  452. /package/dist/lib/{lib/components → components}/Menubar/MenubarRadioGroup.mjs.map +0 -0
  453. /package/dist/lib/{lib/components → components}/Menubar/MenubarRadioItem.mjs +0 -0
  454. /package/dist/lib/{lib/components → components}/Menubar/MenubarRadioItem.mjs.map +0 -0
  455. /package/dist/lib/{lib/components → components}/Menubar/MenubarRoot.mjs +0 -0
  456. /package/dist/lib/{lib/components → components}/Menubar/MenubarRoot.mjs.map +0 -0
  457. /package/dist/lib/{lib/components → components}/Menubar/MenubarSeparator.mjs +0 -0
  458. /package/dist/lib/{lib/components → components}/Menubar/MenubarSub.mjs +0 -0
  459. /package/dist/lib/{lib/components → components}/Menubar/MenubarSubContent.mjs +0 -0
  460. /package/dist/lib/{lib/components → components}/Menubar/MenubarSubContent.mjs.map +0 -0
  461. /package/dist/lib/{lib/components → components}/Menubar/MenubarSubTrigger.mjs +0 -0
  462. /package/dist/lib/{lib/components → components}/Menubar/MenubarSubTrigger.mjs.map +0 -0
  463. /package/dist/lib/{lib/components → components}/Menubar/MenubarTrigger.mjs +0 -0
  464. /package/dist/lib/{lib/components → components}/Menubar/MenubarTrigger.mjs.map +0 -0
  465. /package/dist/lib/{lib/components → components}/Menubar/index.mjs +0 -0
  466. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuContent.mjs +0 -0
  467. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuContent.mjs.map +0 -0
  468. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuIndicator.mjs +0 -0
  469. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuItem.mjs +0 -0
  470. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuLink.mjs +0 -0
  471. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuLink.mjs.map +0 -0
  472. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuList.mjs +0 -0
  473. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuList.mjs.map +0 -0
  474. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuRoot.mjs +0 -0
  475. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuRoot.mjs.map +0 -0
  476. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuTrigger.mjs +0 -0
  477. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuTrigger.mjs.map +0 -0
  478. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuViewport.mjs +0 -0
  479. /package/dist/lib/{lib/components → components}/NavigationMenu/NavigationMenuViewport.mjs.map +0 -0
  480. /package/dist/lib/{lib/components → components}/NavigationMenu/index.mjs +0 -0
  481. /package/dist/lib/{lib/components → components}/PieChart/index.mjs +0 -0
  482. /package/dist/lib/{lib/components → components}/Popover/PopoverClose.mjs +0 -0
  483. /package/dist/lib/{lib/components → components}/Popover/PopoverClose.mjs.map +0 -0
  484. /package/dist/lib/{lib/components → components}/Popover/PopoverContent.mjs +0 -0
  485. /package/dist/lib/{lib/components → components}/Popover/PopoverContent.mjs.map +0 -0
  486. /package/dist/lib/{lib/components → components}/Popover/PopoverRoot.mjs +0 -0
  487. /package/dist/lib/{lib/components → components}/Popover/PopoverRoot.mjs.map +0 -0
  488. /package/dist/lib/{lib/components → components}/Popover/PopoverTrigger.mjs +0 -0
  489. /package/dist/lib/{lib/components → components}/Popover/index.mjs +0 -0
  490. /package/dist/lib/{lib/components → components}/Progress/index.mjs +0 -0
  491. /package/dist/lib/{lib/components → components}/Progress/index.mjs.map +0 -0
  492. /package/dist/lib/{lib/components → components}/RadarChart/index.mjs +0 -0
  493. /package/dist/lib/{lib/components → components}/Radio/index.mjs +0 -0
  494. /package/dist/lib/{lib/components → components}/Radio/index.mjs.map +0 -0
  495. /package/dist/lib/{lib/components → components}/RadioCards/RadioCardsItem.mjs +0 -0
  496. /package/dist/lib/{lib/components → components}/RadioCards/RadioCardsItem.mjs.map +0 -0
  497. /package/dist/lib/{lib/components → components}/RadioCards/RadioCardsRoot.mjs +0 -0
  498. /package/dist/lib/{lib/components → components}/RadioCards/RadioCardsRoot.mjs.map +0 -0
  499. /package/dist/lib/{lib/components → components}/RadioCards/index.mjs +0 -0
  500. /package/dist/lib/{lib/components → components}/RadioGroup/RadioGroupItem.mjs +0 -0
  501. /package/dist/lib/{lib/components → components}/RadioGroup/RadioGroupItem.mjs.map +0 -0
  502. /package/dist/lib/{lib/components → components}/RadioGroup/RadioGroupRoot.mjs +0 -0
  503. /package/dist/lib/{lib/components → components}/RadioGroup/RadioGroupRoot.mjs.map +0 -0
  504. /package/dist/lib/{lib/components → components}/RadioGroup/index.mjs +0 -0
  505. /package/dist/lib/{lib/components → components}/ScrollArea/index.mjs +0 -0
  506. /package/dist/lib/{lib/components → components}/ScrollArea/index.mjs.map +0 -0
  507. /package/dist/lib/{lib/components → components}/SegmentedControl/SegmentedControlItem.mjs +0 -0
  508. /package/dist/lib/{lib/components → components}/SegmentedControl/SegmentedControlRoot.mjs +0 -0
  509. /package/dist/lib/{lib/components → components}/SegmentedControl/SegmentedControlRoot.mjs.map +0 -0
  510. /package/dist/lib/{lib/components → components}/SegmentedControl/index.mjs +0 -0
  511. /package/dist/lib/{lib/components → components}/Select/index.mjs.map +0 -0
  512. /package/dist/lib/{lib/components → components}/Separator/index.mjs +0 -0
  513. /package/dist/lib/{lib/components → components}/Separator/index.mjs.map +0 -0
  514. /package/dist/lib/{lib/components → components}/Skeleton/index.mjs +0 -0
  515. /package/dist/lib/{lib/components → components}/Skeleton/index.mjs.map +0 -0
  516. /package/dist/lib/{lib/components → components}/Slider/index.mjs +0 -0
  517. /package/dist/lib/{lib/components → components}/Slider/index.mjs.map +0 -0
  518. /package/dist/lib/{lib/components → components}/Spinner/index.mjs +0 -0
  519. /package/dist/lib/{lib/components → components}/Spinner/index.mjs.map +0 -0
  520. /package/dist/lib/{lib/components → components}/TabNav/index.mjs +0 -0
  521. /package/dist/lib/{lib/components → components}/TabNav/index.mjs.map +0 -0
  522. /package/dist/lib/{lib/components → components}/Table/index.mjs +0 -0
  523. /package/dist/lib/{lib/components → components}/Table/index.mjs.map +0 -0
  524. /package/dist/lib/{lib/components → components}/Tabs/index.mjs +0 -0
  525. /package/dist/lib/{lib/components → components}/Tabs/index.mjs.map +0 -0
  526. /package/dist/lib/{lib/components → components}/TextArea/index.mjs +0 -0
  527. /package/dist/lib/{lib/components → components}/TextArea/index.mjs.map +0 -0
  528. /package/dist/lib/{lib/components → components}/TextField/index.mjs +0 -0
  529. /package/dist/lib/{lib/components → components}/TextField/index.mjs.map +0 -0
  530. /package/dist/lib/{lib/components → components}/Toast/ToastActionButton.mjs +0 -0
  531. /package/dist/lib/{lib/components → components}/Toast/ToastActionButton.mjs.map +0 -0
  532. /package/dist/lib/{lib/components → components}/Toast/ToastDescription.mjs +0 -0
  533. /package/dist/lib/{lib/components → components}/Toast/ToastDescription.mjs.map +0 -0
  534. /package/dist/lib/{lib/components → components}/Toast/ToastRoot.mjs +0 -0
  535. /package/dist/lib/{lib/components → components}/Toast/ToastRoot.mjs.map +0 -0
  536. /package/dist/lib/{lib/components → components}/Toast/ToastTitle.mjs +0 -0
  537. /package/dist/lib/{lib/components → components}/Toast/ToastTitle.mjs.map +0 -0
  538. /package/dist/lib/{lib/components → components}/Toast/index.mjs +0 -0
  539. /package/dist/lib/{lib/components → components}/Toggle/ToggleWithText.mjs +0 -0
  540. /package/dist/lib/{lib/components → components}/Toggle/ToggleWithText.mjs.map +0 -0
  541. /package/dist/lib/{lib/components → components}/Toggle/index.mjs +0 -0
  542. /package/dist/lib/{lib/components → components}/Toggle/index.mjs.map +0 -0
  543. /package/dist/lib/{lib/components → components}/ToggleGroup/ToggleGroupItem.mjs +0 -0
  544. /package/dist/lib/{lib/components → components}/ToggleGroup/ToggleGroupItem.mjs.map +0 -0
  545. /package/dist/lib/{lib/components → components}/ToggleGroup/ToggleGroupRoot.mjs +0 -0
  546. /package/dist/lib/{lib/components → components}/ToggleGroup/ToggleGroupRoot.mjs.map +0 -0
  547. /package/dist/lib/{lib/components → components}/ToggleGroup/index.mjs +0 -0
  548. /package/dist/lib/{lib/components → components}/ToggleSwitch/index.mjs +0 -0
  549. /package/dist/lib/{lib/components → components}/ToggleSwitch/index.mjs.map +0 -0
  550. /package/dist/lib/{lib/components → components}/Tooltip/index.mjs +0 -0
  551. /package/dist/lib/{lib/components → components}/Tooltip/index.mjs.map +0 -0
  552. /package/dist/lib/{lib/constants.mjs → constants.mjs} +0 -0
  553. /package/dist/lib/{lib/index.mjs → index.mjs} +0 -0
  554. /package/dist/lib/{_virtual/index.mjs.map → index.mjs.map} +0 -0
  555. /package/dist/lib/{lib/theme → theme}/ThemeProvider.mjs +0 -0
  556. /package/dist/lib/{lib/theme → theme}/ThemeProvider.mjs.map +0 -0
  557. /package/dist/lib/{lib/utils → utils}/useDarkMode.mjs +0 -0
  558. /package/dist/lib/{lib/utils → utils}/useDarkMode.mjs.map +0 -0
  559. /package/dist/lib/{lib/utils → utils}/utils.mjs +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.mjs","sources":["../../../../../public/tinymce/models/dom/model.js"],"sourcesContent":["\"use strict\";\n/**\n * TinyMCE version 6.8.5 (TBD)\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n(function () {\n 'use strict';\n var global$1 = tinymce.util.Tools.resolve('tinymce.ModelManager');\n var hasProto = function (v, constructor, predicate) {\n var _a;\n if (predicate(v, constructor.prototype)) {\n return true;\n }\n else {\n return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n }\n };\n var typeOf = function (x) {\n var t = typeof x;\n if (x === null) {\n return 'null';\n }\n else if (t === 'object' && Array.isArray(x)) {\n return 'array';\n }\n else if (t === 'object' && hasProto(x, String, function (o, proto) { return proto.isPrototypeOf(o); })) {\n return 'string';\n }\n else {\n return t;\n }\n };\n var isType$1 = function (type) { return function (value) { return typeOf(value) === type; }; };\n var isSimpleType = function (type) { return function (value) { return typeof value === type; }; };\n var eq$2 = function (t) { return function (a) { return t === a; }; };\n var isString = isType$1('string');\n var isObject = isType$1('object');\n var isArray = isType$1('array');\n var isNull = eq$2(null);\n var isBoolean = isSimpleType('boolean');\n var isUndefined = eq$2(undefined);\n var isNullable = function (a) { return a === null || a === undefined; };\n var isNonNullable = function (a) { return !isNullable(a); };\n var isFunction = isSimpleType('function');\n var isNumber = isSimpleType('number');\n var noop = function () {\n };\n var compose = function (fa, fb) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return fa(fb.apply(null, args));\n };\n };\n var compose1 = function (fbc, fab) { return function (a) { return fbc(fab(a)); }; };\n var constant = function (value) {\n return function () {\n return value;\n };\n };\n var identity = function (x) {\n return x;\n };\n var tripleEquals = function (a, b) {\n return a === b;\n };\n function curry(fn) {\n var initialArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n initialArgs[_i - 1] = arguments[_i];\n }\n return function () {\n var restArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n restArgs[_i] = arguments[_i];\n }\n var all = initialArgs.concat(restArgs);\n return fn.apply(null, all);\n };\n }\n var not = function (f) { return function (t) { return !f(t); }; };\n var die = function (msg) {\n return function () {\n throw new Error(msg);\n };\n };\n var apply = function (f) {\n return f();\n };\n var never = constant(false);\n var always = constant(true);\n var Optional = /** @class */ (function () {\n function Optional(tag, value) {\n this.tag = tag;\n this.value = value;\n }\n Optional.some = function (value) {\n return new Optional(true, value);\n };\n Optional.none = function () {\n return Optional.singletonNone;\n };\n Optional.prototype.fold = function (onNone, onSome) {\n if (this.tag) {\n return onSome(this.value);\n }\n else {\n return onNone();\n }\n };\n Optional.prototype.isSome = function () {\n return this.tag;\n };\n Optional.prototype.isNone = function () {\n return !this.tag;\n };\n Optional.prototype.map = function (mapper) {\n if (this.tag) {\n return Optional.some(mapper(this.value));\n }\n else {\n return Optional.none();\n }\n };\n Optional.prototype.bind = function (binder) {\n if (this.tag) {\n return binder(this.value);\n }\n else {\n return Optional.none();\n }\n };\n Optional.prototype.exists = function (predicate) {\n return this.tag && predicate(this.value);\n };\n Optional.prototype.forall = function (predicate) {\n return !this.tag || predicate(this.value);\n };\n Optional.prototype.filter = function (predicate) {\n if (!this.tag || predicate(this.value)) {\n return this;\n }\n else {\n return Optional.none();\n }\n };\n Optional.prototype.getOr = function (replacement) {\n return this.tag ? this.value : replacement;\n };\n Optional.prototype.or = function (replacement) {\n return this.tag ? this : replacement;\n };\n Optional.prototype.getOrThunk = function (thunk) {\n return this.tag ? this.value : thunk();\n };\n Optional.prototype.orThunk = function (thunk) {\n return this.tag ? this : thunk();\n };\n Optional.prototype.getOrDie = function (message) {\n if (!this.tag) {\n throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n }\n else {\n return this.value;\n }\n };\n Optional.from = function (value) {\n return isNonNullable(value) ? Optional.some(value) : Optional.none();\n };\n Optional.prototype.getOrNull = function () {\n return this.tag ? this.value : null;\n };\n Optional.prototype.getOrUndefined = function () {\n return this.value;\n };\n Optional.prototype.each = function (worker) {\n if (this.tag) {\n worker(this.value);\n }\n };\n Optional.prototype.toArray = function () {\n return this.tag ? [this.value] : [];\n };\n Optional.prototype.toString = function () {\n return this.tag ? \"some(\".concat(this.value, \")\") : 'none()';\n };\n return Optional;\n }());\n Optional.singletonNone = new Optional(false);\n var nativeSlice = Array.prototype.slice;\n var nativeIndexOf = Array.prototype.indexOf;\n var nativePush = Array.prototype.push;\n var rawIndexOf = function (ts, t) { return nativeIndexOf.call(ts, t); };\n var contains$2 = function (xs, x) { return rawIndexOf(xs, x) > -1; };\n var exists = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i)) {\n return true;\n }\n }\n return false;\n };\n var range$1 = function (num, f) {\n var r = [];\n for (var i = 0; i < num; i++) {\n r.push(f(i));\n }\n return r;\n };\n var map$1 = function (xs, f) {\n var len = xs.length;\n var r = new Array(len);\n for (var i = 0; i < len; i++) {\n var x = xs[i];\n r[i] = f(x, i);\n }\n return r;\n };\n var each$2 = function (xs, f) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n f(x, i);\n }\n };\n var eachr = function (xs, f) {\n for (var i = xs.length - 1; i >= 0; i--) {\n var x = xs[i];\n f(x, i);\n }\n };\n var partition = function (xs, pred) {\n var pass = [];\n var fail = [];\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n var arr = pred(x, i) ? pass : fail;\n arr.push(x);\n }\n return {\n pass: pass,\n fail: fail\n };\n };\n var filter$2 = function (xs, pred) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i)) {\n r.push(x);\n }\n }\n return r;\n };\n var foldr = function (xs, f, acc) {\n eachr(xs, function (x, i) {\n acc = f(acc, x, i);\n });\n return acc;\n };\n var foldl = function (xs, f, acc) {\n each$2(xs, function (x, i) {\n acc = f(acc, x, i);\n });\n return acc;\n };\n var findUntil = function (xs, pred, until) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i)) {\n return Optional.some(x);\n }\n else if (until(x, i)) {\n break;\n }\n }\n return Optional.none();\n };\n var find$1 = function (xs, pred) {\n return findUntil(xs, pred, never);\n };\n var findIndex = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i)) {\n return Optional.some(i);\n }\n }\n return Optional.none();\n };\n var flatten = function (xs) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (!isArray(xs[i])) {\n throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n }\n nativePush.apply(r, xs[i]);\n }\n return r;\n };\n var bind$2 = function (xs, f) { return flatten(map$1(xs, f)); };\n var forall = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; ++i) {\n var x = xs[i];\n if (pred(x, i) !== true) {\n return false;\n }\n }\n return true;\n };\n var reverse = function (xs) {\n var r = nativeSlice.call(xs, 0);\n r.reverse();\n return r;\n };\n var mapToObject = function (xs, f) {\n var r = {};\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n r[String(x)] = f(x, i);\n }\n return r;\n };\n var sort$1 = function (xs, comparator) {\n var copy = nativeSlice.call(xs, 0);\n copy.sort(comparator);\n return copy;\n };\n var get$d = function (xs, i) { return i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none(); };\n var head = function (xs) { return get$d(xs, 0); };\n var last$2 = function (xs) { return get$d(xs, xs.length - 1); };\n var findMap = function (arr, f) {\n for (var i = 0; i < arr.length; i++) {\n var r_1 = f(arr[i], i);\n if (r_1.isSome()) {\n return r_1;\n }\n }\n return Optional.none();\n };\n var keys = Object.keys;\n var hasOwnProperty = Object.hasOwnProperty;\n var each$1 = function (obj, f) {\n var props = keys(obj);\n for (var k = 0, len = props.length; k < len; k++) {\n var i = props[k];\n var x = obj[i];\n f(x, i);\n }\n };\n var map = function (obj, f) {\n return tupleMap(obj, function (x, i) { return ({\n k: i,\n v: f(x, i)\n }); });\n };\n var tupleMap = function (obj, f) {\n var r = {};\n each$1(obj, function (x, i) {\n var tuple = f(x, i);\n r[tuple.k] = tuple.v;\n });\n return r;\n };\n var objAcc = function (r) { return function (x, i) {\n r[i] = x;\n }; };\n var internalFilter = function (obj, pred, onTrue, onFalse) {\n each$1(obj, function (x, i) {\n (pred(x, i) ? onTrue : onFalse)(x, i);\n });\n };\n var filter$1 = function (obj, pred) {\n var t = {};\n internalFilter(obj, pred, objAcc(t), noop);\n return t;\n };\n var mapToArray = function (obj, f) {\n var r = [];\n each$1(obj, function (value, name) {\n r.push(f(value, name));\n });\n return r;\n };\n var values = function (obj) {\n return mapToArray(obj, identity);\n };\n var get$c = function (obj, key) {\n return has$1(obj, key) ? Optional.from(obj[key]) : Optional.none();\n };\n var has$1 = function (obj, key) { return hasOwnProperty.call(obj, key); };\n var hasNonNullableKey = function (obj, key) { return has$1(obj, key) && obj[key] !== undefined && obj[key] !== null; };\n var isEmpty = function (r) {\n for (var x in r) {\n if (hasOwnProperty.call(r, x)) {\n return false;\n }\n }\n return true;\n };\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n var path = function (parts, scope) {\n var o = scope !== undefined && scope !== null ? scope : Global;\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n o = o[parts[i]];\n }\n return o;\n };\n var resolve$2 = function (p, scope) {\n var parts = p.split('.');\n return path(parts, scope);\n };\n var unsafe = function (name, scope) {\n return resolve$2(name, scope);\n };\n var getOrDie = function (name, scope) {\n var actual = unsafe(name, scope);\n if (actual === undefined || actual === null) {\n throw new Error(name + ' not available on this browser');\n }\n return actual;\n };\n var getPrototypeOf = Object.getPrototypeOf;\n var sandHTMLElement = function (scope) {\n return getOrDie('HTMLElement', scope);\n };\n var isPrototypeOf = function (x) {\n var scope = resolve$2('ownerDocument.defaultView', x);\n return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf(x).constructor.name));\n };\n var COMMENT = 8;\n var DOCUMENT = 9;\n var DOCUMENT_FRAGMENT = 11;\n var ELEMENT = 1;\n var TEXT = 3;\n var name = function (element) {\n var r = element.dom.nodeName;\n return r.toLowerCase();\n };\n var type = function (element) { return element.dom.nodeType; };\n var isType = function (t) { return function (element) { return type(element) === t; }; };\n var isComment = function (element) { return type(element) === COMMENT || name(element) === '#comment'; };\n var isHTMLElement = function (element) { return isElement(element) && isPrototypeOf(element.dom); };\n var isElement = isType(ELEMENT);\n var isText = isType(TEXT);\n var isDocument = isType(DOCUMENT);\n var isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n var isTag = function (tag) { return function (e) { return isElement(e) && name(e) === tag; }; };\n var rawSet = function (dom, key, value) {\n if (isString(value) || isBoolean(value) || isNumber(value)) {\n dom.setAttribute(key, value + '');\n }\n else {\n console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n throw new Error('Attribute value was not simple');\n }\n };\n var set$2 = function (element, key, value) {\n rawSet(element.dom, key, value);\n };\n var setAll$1 = function (element, attrs) {\n var dom = element.dom;\n each$1(attrs, function (v, k) {\n rawSet(dom, k, v);\n });\n };\n var setOptions = function (element, attrs) {\n each$1(attrs, function (v, k) {\n v.fold(function () {\n remove$7(element, k);\n }, function (value) {\n rawSet(element.dom, k, value);\n });\n });\n };\n var get$b = function (element, key) {\n var v = element.dom.getAttribute(key);\n return v === null ? undefined : v;\n };\n var getOpt = function (element, key) { return Optional.from(get$b(element, key)); };\n var remove$7 = function (element, key) {\n element.dom.removeAttribute(key);\n };\n var clone$2 = function (element) { return foldl(element.dom.attributes, function (acc, attr) {\n acc[attr.name] = attr.value;\n return acc;\n }, {}); };\n var fromHtml$1 = function (html, scope) {\n var doc = scope || document;\n var div = doc.createElement('div');\n div.innerHTML = html;\n if (!div.hasChildNodes() || div.childNodes.length > 1) {\n var message = 'HTML does not have a single root node';\n console.error(message, html);\n throw new Error(message);\n }\n return fromDom$1(div.childNodes[0]);\n };\n var fromTag = function (tag, scope) {\n var doc = scope || document;\n var node = doc.createElement(tag);\n return fromDom$1(node);\n };\n var fromText = function (text, scope) {\n var doc = scope || document;\n var node = doc.createTextNode(text);\n return fromDom$1(node);\n };\n var fromDom$1 = function (node) {\n if (node === null || node === undefined) {\n throw new Error('Node cannot be null or undefined');\n }\n return { dom: node };\n };\n var fromPoint$1 = function (docElm, x, y) { return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$1); };\n var SugarElement = {\n fromHtml: fromHtml$1,\n fromTag: fromTag,\n fromText: fromText,\n fromDom: fromDom$1,\n fromPoint: fromPoint$1\n };\n var is$2 = function (element, selector) {\n var dom = element.dom;\n if (dom.nodeType !== ELEMENT) {\n return false;\n }\n else {\n var elem = dom;\n if (elem.matches !== undefined) {\n return elem.matches(selector);\n }\n else if (elem.msMatchesSelector !== undefined) {\n return elem.msMatchesSelector(selector);\n }\n else if (elem.webkitMatchesSelector !== undefined) {\n return elem.webkitMatchesSelector(selector);\n }\n else if (elem.mozMatchesSelector !== undefined) {\n return elem.mozMatchesSelector(selector);\n }\n else {\n throw new Error('Browser lacks native selectors');\n }\n }\n };\n var bypassSelector = function (dom) { return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0; };\n var all$1 = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom;\n return bypassSelector(base) ? [] : map$1(base.querySelectorAll(selector), SugarElement.fromDom);\n };\n var one = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom;\n return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n };\n var eq$1 = function (e1, e2) { return e1.dom === e2.dom; };\n var contains$1 = function (e1, e2) {\n var d1 = e1.dom;\n var d2 = e2.dom;\n return d1 === d2 ? false : d1.contains(d2);\n };\n var is$1 = is$2;\n var owner = function (element) { return SugarElement.fromDom(element.dom.ownerDocument); };\n var documentOrOwner = function (dos) { return isDocument(dos) ? dos : owner(dos); };\n var documentElement = function (element) { return SugarElement.fromDom(documentOrOwner(element).dom.documentElement); };\n var defaultView = function (element) { return SugarElement.fromDom(documentOrOwner(element).dom.defaultView); };\n var parent = function (element) { return Optional.from(element.dom.parentNode).map(SugarElement.fromDom); };\n var parentElement = function (element) { return Optional.from(element.dom.parentElement).map(SugarElement.fromDom); };\n var parents = function (element, isRoot) {\n var stop = isFunction(isRoot) ? isRoot : never;\n var dom = element.dom;\n var ret = [];\n while (dom.parentNode !== null && dom.parentNode !== undefined) {\n var rawParent = dom.parentNode;\n var p = SugarElement.fromDom(rawParent);\n ret.push(p);\n if (stop(p) === true) {\n break;\n }\n else {\n dom = rawParent;\n }\n }\n return ret;\n };\n var prevSibling = function (element) { return Optional.from(element.dom.previousSibling).map(SugarElement.fromDom); };\n var nextSibling = function (element) { return Optional.from(element.dom.nextSibling).map(SugarElement.fromDom); };\n var children$2 = function (element) { return map$1(element.dom.childNodes, SugarElement.fromDom); };\n var child$2 = function (element, index) {\n var cs = element.dom.childNodes;\n return Optional.from(cs[index]).map(SugarElement.fromDom);\n };\n var firstChild = function (element) { return child$2(element, 0); };\n var before$3 = function (marker, element) {\n var parent$1 = parent(marker);\n parent$1.each(function (v) {\n v.dom.insertBefore(element.dom, marker.dom);\n });\n };\n var after$5 = function (marker, element) {\n var sibling = nextSibling(marker);\n sibling.fold(function () {\n var parent$1 = parent(marker);\n parent$1.each(function (v) {\n append$1(v, element);\n });\n }, function (v) {\n before$3(v, element);\n });\n };\n var prepend = function (parent, element) {\n var firstChild$1 = firstChild(parent);\n firstChild$1.fold(function () {\n append$1(parent, element);\n }, function (v) {\n parent.dom.insertBefore(element.dom, v.dom);\n });\n };\n var append$1 = function (parent, element) {\n parent.dom.appendChild(element.dom);\n };\n var appendAt = function (parent, element, index) {\n child$2(parent, index).fold(function () {\n append$1(parent, element);\n }, function (v) {\n before$3(v, element);\n });\n };\n var wrap = function (element, wrapper) {\n before$3(element, wrapper);\n append$1(wrapper, element);\n };\n var after$4 = function (marker, elements) {\n each$2(elements, function (x, i) {\n var e = i === 0 ? marker : elements[i - 1];\n after$5(e, x);\n });\n };\n var append = function (parent, elements) {\n each$2(elements, function (x) {\n append$1(parent, x);\n });\n };\n var empty = function (element) {\n element.dom.textContent = '';\n each$2(children$2(element), function (rogue) {\n remove$6(rogue);\n });\n };\n var remove$6 = function (element) {\n var dom = element.dom;\n if (dom.parentNode !== null) {\n dom.parentNode.removeChild(dom);\n }\n };\n var unwrap = function (wrapper) {\n var children = children$2(wrapper);\n if (children.length > 0) {\n after$4(wrapper, children);\n }\n remove$6(wrapper);\n };\n var clone$1 = function (original, isDeep) { return SugarElement.fromDom(original.dom.cloneNode(isDeep)); };\n var shallow = function (original) { return clone$1(original, false); };\n var deep = function (original) { return clone$1(original, true); };\n var shallowAs = function (original, tag) {\n var nu = SugarElement.fromTag(tag);\n var attributes = clone$2(original);\n setAll$1(nu, attributes);\n return nu;\n };\n var copy$2 = function (original, tag) {\n var nu = shallowAs(original, tag);\n var cloneChildren = children$2(deep(original));\n append(nu, cloneChildren);\n return nu;\n };\n var mutate$1 = function (original, tag) {\n var nu = shallowAs(original, tag);\n after$5(original, nu);\n var children = children$2(original);\n append(nu, children);\n remove$6(original);\n return nu;\n };\n var validSectionList = [\n 'tfoot',\n 'thead',\n 'tbody',\n 'colgroup'\n ];\n var isValidSection = function (parentName) { return contains$2(validSectionList, parentName); };\n var grid = function (rows, columns) { return ({\n rows: rows,\n columns: columns\n }); };\n var address = function (row, column) { return ({\n row: row,\n column: column\n }); };\n var detail = function (element, rowspan, colspan) { return ({\n element: element,\n rowspan: rowspan,\n colspan: colspan\n }); };\n var detailnew = function (element, rowspan, colspan, isNew) { return ({\n element: element,\n rowspan: rowspan,\n colspan: colspan,\n isNew: isNew\n }); };\n var extended = function (element, rowspan, colspan, row, column, isLocked) { return ({\n element: element,\n rowspan: rowspan,\n colspan: colspan,\n row: row,\n column: column,\n isLocked: isLocked\n }); };\n var rowdetail = function (element, cells, section) { return ({\n element: element,\n cells: cells,\n section: section\n }); };\n var rowdetailnew = function (element, cells, section, isNew) { return ({\n element: element,\n cells: cells,\n section: section,\n isNew: isNew\n }); };\n var elementnew = function (element, isNew, isLocked) { return ({\n element: element,\n isNew: isNew,\n isLocked: isLocked\n }); };\n var rowcells = function (element, cells, section, isNew) { return ({\n element: element,\n cells: cells,\n section: section,\n isNew: isNew\n }); };\n var bounds = function (startRow, startCol, finishRow, finishCol) { return ({\n startRow: startRow,\n startCol: startCol,\n finishRow: finishRow,\n finishCol: finishCol\n }); };\n var columnext = function (element, colspan, column) { return ({\n element: element,\n colspan: colspan,\n column: column\n }); };\n var colgroup = function (element, columns) { return ({\n element: element,\n columns: columns\n }); };\n var isShadowRoot = function (dos) { return isDocumentFragment(dos) && isNonNullable(dos.dom.host); };\n var supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n var isSupported$1 = constant(supported);\n var getRootNode = supported ? function (e) { return SugarElement.fromDom(e.dom.getRootNode()); } : documentOrOwner;\n var getShadowRoot = function (e) {\n var r = getRootNode(e);\n return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n };\n var getShadowHost = function (e) { return SugarElement.fromDom(e.dom.host); };\n var getOriginalEventTarget = function (event) {\n if (isSupported$1() && isNonNullable(event.target)) {\n var el = SugarElement.fromDom(event.target);\n if (isElement(el) && isOpenShadowHost(el)) {\n if (event.composed && event.composedPath) {\n var composedPath = event.composedPath();\n if (composedPath) {\n return head(composedPath);\n }\n }\n }\n }\n return Optional.from(event.target);\n };\n var isOpenShadowHost = function (element) { return isNonNullable(element.dom.shadowRoot); };\n var inBody = function (element) {\n var dom = isText(element) ? element.dom.parentNode : element.dom;\n if (dom === undefined || dom === null || dom.ownerDocument === null) {\n return false;\n }\n var doc = dom.ownerDocument;\n return getShadowRoot(SugarElement.fromDom(dom)).fold(function () { return doc.body.contains(dom); }, compose1(inBody, getShadowHost));\n };\n var body$1 = function () { return getBody$1(SugarElement.fromDom(document)); };\n var getBody$1 = function (doc) {\n var b = doc.dom.body;\n if (b === null || b === undefined) {\n throw new Error('Body is not available yet');\n }\n return SugarElement.fromDom(b);\n };\n var ancestors$4 = function (scope, predicate, isRoot) { return filter$2(parents(scope, isRoot), predicate); };\n var children$1 = function (scope, predicate) { return filter$2(children$2(scope), predicate); };\n var descendants$1 = function (scope, predicate) {\n var result = [];\n each$2(children$2(scope), function (x) {\n if (predicate(x)) {\n result = result.concat([x]);\n }\n result = result.concat(descendants$1(x, predicate));\n });\n return result;\n };\n var ancestors$3 = function (scope, selector, isRoot) { return ancestors$4(scope, function (e) { return is$2(e, selector); }, isRoot); };\n var children = function (scope, selector) { return children$1(scope, function (e) { return is$2(e, selector); }); };\n var descendants = function (scope, selector) { return all$1(selector, scope); };\n var ClosestOrAncestor = function (is, ancestor, scope, a, isRoot) {\n if (is(scope, a)) {\n return Optional.some(scope);\n }\n else if (isFunction(isRoot) && isRoot(scope)) {\n return Optional.none();\n }\n else {\n return ancestor(scope, a, isRoot);\n }\n };\n var ancestor$2 = function (scope, predicate, isRoot) {\n var element = scope.dom;\n var stop = isFunction(isRoot) ? isRoot : never;\n while (element.parentNode) {\n element = element.parentNode;\n var el = SugarElement.fromDom(element);\n if (predicate(el)) {\n return Optional.some(el);\n }\n else if (stop(el)) {\n break;\n }\n }\n return Optional.none();\n };\n var closest$2 = function (scope, predicate, isRoot) {\n var is = function (s, test) { return test(s); };\n return ClosestOrAncestor(is, ancestor$2, scope, predicate, isRoot);\n };\n var child$1 = function (scope, predicate) {\n var pred = function (node) { return predicate(SugarElement.fromDom(node)); };\n var result = find$1(scope.dom.childNodes, pred);\n return result.map(SugarElement.fromDom);\n };\n var descendant$1 = function (scope, predicate) {\n var descend = function (node) {\n for (var i = 0; i < node.childNodes.length; i++) {\n var child_1 = SugarElement.fromDom(node.childNodes[i]);\n if (predicate(child_1)) {\n return Optional.some(child_1);\n }\n var res = descend(node.childNodes[i]);\n if (res.isSome()) {\n return res;\n }\n }\n return Optional.none();\n };\n return descend(scope.dom);\n };\n var ancestor$1 = function (scope, selector, isRoot) { return ancestor$2(scope, function (e) { return is$2(e, selector); }, isRoot); };\n var child = function (scope, selector) { return child$1(scope, function (e) { return is$2(e, selector); }); };\n var descendant = function (scope, selector) { return one(selector, scope); };\n var closest$1 = function (scope, selector, isRoot) {\n var is = function (element, selector) { return is$2(element, selector); };\n return ClosestOrAncestor(is, ancestor$1, scope, selector, isRoot);\n };\n var is = function (lhs, rhs, comparator) {\n if (comparator === void 0) { comparator = tripleEquals; }\n return lhs.exists(function (left) { return comparator(left, rhs); });\n };\n var cat = function (arr) {\n var r = [];\n var push = function (x) {\n r.push(x);\n };\n for (var i = 0; i < arr.length; i++) {\n arr[i].each(push);\n }\n return r;\n };\n var bindFrom = function (a, f) { return a !== undefined && a !== null ? f(a) : Optional.none(); };\n var someIf = function (b, a) { return b ? Optional.some(a) : Optional.none(); };\n var checkRange = function (str, substr, start) { return substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr; };\n var contains = function (str, substr, start, end) {\n if (start === void 0) { start = 0; }\n var idx = str.indexOf(substr, start);\n if (idx !== -1) {\n return isUndefined(end) ? true : idx + substr.length <= end;\n }\n else {\n return false;\n }\n };\n var startsWith = function (str, prefix) {\n return checkRange(str, prefix, 0);\n };\n var endsWith = function (str, suffix) {\n return checkRange(str, suffix, str.length - suffix.length);\n };\n var blank = function (r) { return function (s) { return s.replace(r, ''); }; };\n var trim = blank(/^\\s+|\\s+$/g);\n var isNotEmpty = function (s) { return s.length > 0; };\n var toFloat = function (value) {\n var num = parseFloat(value);\n return isNaN(num) ? Optional.none() : Optional.some(num);\n };\n var isSupported = function (dom) { return dom.style !== undefined && isFunction(dom.style.getPropertyValue); };\n var internalSet = function (dom, property, value) {\n if (!isString(value)) {\n console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n throw new Error('CSS value must be a string: ' + value);\n }\n if (isSupported(dom)) {\n dom.style.setProperty(property, value);\n }\n };\n var internalRemove = function (dom, property) {\n if (isSupported(dom)) {\n dom.style.removeProperty(property);\n }\n };\n var set$1 = function (element, property, value) {\n var dom = element.dom;\n internalSet(dom, property, value);\n };\n var setAll = function (element, css) {\n var dom = element.dom;\n each$1(css, function (v, k) {\n internalSet(dom, k, v);\n });\n };\n var get$a = function (element, property) {\n var dom = element.dom;\n var styles = window.getComputedStyle(dom);\n var r = styles.getPropertyValue(property);\n return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n };\n var getUnsafeProperty = function (dom, property) { return isSupported(dom) ? dom.style.getPropertyValue(property) : ''; };\n var getRaw$2 = function (element, property) {\n var dom = element.dom;\n var raw = getUnsafeProperty(dom, property);\n return Optional.from(raw).filter(function (r) { return r.length > 0; });\n };\n var remove$5 = function (element, property) {\n var dom = element.dom;\n internalRemove(dom, property);\n if (is(getOpt(element, 'style').map(trim), '')) {\n remove$7(element, 'style');\n }\n };\n var copy$1 = function (source, target) {\n var sourceDom = source.dom;\n var targetDom = target.dom;\n if (isSupported(sourceDom) && isSupported(targetDom)) {\n targetDom.style.cssText = sourceDom.style.cssText;\n }\n };\n var getAttrValue = function (cell, name, fallback) {\n if (fallback === void 0) { fallback = 0; }\n return getOpt(cell, name).map(function (value) { return parseInt(value, 10); }).getOr(fallback);\n };\n var getSpan = function (cell, type) { return getAttrValue(cell, type, 1); };\n var hasColspan = function (cellOrCol) {\n if (isTag('col')(cellOrCol)) {\n return getAttrValue(cellOrCol, 'span', 1) > 1;\n }\n else {\n return getSpan(cellOrCol, 'colspan') > 1;\n }\n };\n var hasRowspan = function (cell) { return getSpan(cell, 'rowspan') > 1; };\n var getCssValue = function (element, property) { return parseInt(get$a(element, property), 10); };\n var minWidth = constant(10);\n var minHeight = constant(10);\n var firstLayer = function (scope, selector) {\n return filterFirstLayer(scope, selector, always);\n };\n var filterFirstLayer = function (scope, selector, predicate) {\n return bind$2(children$2(scope), function (x) {\n if (is$2(x, selector)) {\n return predicate(x) ? [x] : [];\n }\n else {\n return filterFirstLayer(x, selector, predicate);\n }\n });\n };\n var lookup = function (tags, element, isRoot) {\n if (isRoot === void 0) { isRoot = never; }\n if (isRoot(element)) {\n return Optional.none();\n }\n if (contains$2(tags, name(element))) {\n return Optional.some(element);\n }\n var isRootOrUpperTable = function (elm) { return is$2(elm, 'table') || isRoot(elm); };\n return ancestor$1(element, tags.join(','), isRootOrUpperTable);\n };\n var cell = function (element, isRoot) { return lookup([\n 'td',\n 'th'\n ], element, isRoot); };\n var cells$1 = function (ancestor) { return firstLayer(ancestor, 'th,td'); };\n var columns$1 = function (ancestor) {\n if (is$2(ancestor, 'colgroup')) {\n return children(ancestor, 'col');\n }\n else {\n return bind$2(columnGroups(ancestor), function (columnGroup) { return children(columnGroup, 'col'); });\n }\n };\n var table = function (element, isRoot) { return closest$1(element, 'table', isRoot); };\n var rows$1 = function (ancestor) { return firstLayer(ancestor, 'tr'); };\n var columnGroups = function (ancestor) { return table(ancestor).fold(constant([]), function (table) { return children(table, 'colgroup'); }); };\n var fromRowsOrColGroups = function (elems, getSection) { return map$1(elems, function (row) {\n if (name(row) === 'colgroup') {\n var cells_1 = map$1(columns$1(row), function (column) {\n var colspan = getAttrValue(column, 'span', 1);\n return detail(column, 1, colspan);\n });\n return rowdetail(row, cells_1, 'colgroup');\n }\n else {\n var cells_2 = map$1(cells$1(row), function (cell) {\n var rowspan = getAttrValue(cell, 'rowspan', 1);\n var colspan = getAttrValue(cell, 'colspan', 1);\n return detail(cell, rowspan, colspan);\n });\n return rowdetail(row, cells_2, getSection(row));\n }\n }); };\n var getParentSection = function (group) { return parent(group).map(function (parent) {\n var parentName = name(parent);\n return isValidSection(parentName) ? parentName : 'tbody';\n }).getOr('tbody'); };\n var fromTable$1 = function (table) {\n var rows = rows$1(table);\n var columnGroups$1 = columnGroups(table);\n var elems = __spreadArray(__spreadArray([], columnGroups$1, true), rows, true);\n return fromRowsOrColGroups(elems, getParentSection);\n };\n var fromPastedRows = function (elems, section) { return fromRowsOrColGroups(elems, function () { return section; }); };\n var cached = function (f) {\n var called = false;\n var r;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n r = f.apply(null, args);\n }\n return r;\n };\n };\n var DeviceType = function (os, browser, userAgent, mediaMatch) {\n var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n var isiPhone = os.isiOS() && !isiPad;\n var isMobile = os.isiOS() || os.isAndroid();\n var isTouch = isMobile || mediaMatch('(pointer:coarse)');\n var isTablet = isiPad || !isiPhone && isMobile && mediaMatch('(min-device-width:768px)');\n var isPhone = isiPhone || isMobile && !isTablet;\n var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n var isDesktop = !isPhone && !isTablet && !iOSwebview;\n return {\n isiPad: constant(isiPad),\n isiPhone: constant(isiPhone),\n isTablet: constant(isTablet),\n isPhone: constant(isPhone),\n isTouch: constant(isTouch),\n isAndroid: os.isAndroid,\n isiOS: os.isiOS,\n isWebView: constant(iOSwebview),\n isDesktop: constant(isDesktop)\n };\n };\n var firstMatch = function (regexes, s) {\n for (var i = 0; i < regexes.length; i++) {\n var x = regexes[i];\n if (x.test(s)) {\n return x;\n }\n }\n return undefined;\n };\n var find = function (regexes, agent) {\n var r = firstMatch(regexes, agent);\n if (!r) {\n return {\n major: 0,\n minor: 0\n };\n }\n var group = function (i) {\n return Number(agent.replace(r, '$' + i));\n };\n return nu$2(group(1), group(2));\n };\n var detect$5 = function (versionRegexes, agent) {\n var cleanedAgent = String(agent).toLowerCase();\n if (versionRegexes.length === 0) {\n return unknown$2();\n }\n return find(versionRegexes, cleanedAgent);\n };\n var unknown$2 = function () {\n return nu$2(0, 0);\n };\n var nu$2 = function (major, minor) {\n return {\n major: major,\n minor: minor\n };\n };\n var Version = {\n nu: nu$2,\n detect: detect$5,\n unknown: unknown$2\n };\n var detectBrowser$1 = function (browsers, userAgentData) {\n return findMap(userAgentData.brands, function (uaBrand) {\n var lcBrand = uaBrand.brand.toLowerCase();\n return find$1(browsers, function (browser) {\n var _a;\n return lcBrand === ((_a = browser.brand) === null || _a === void 0 ? void 0 : _a.toLowerCase());\n }).map(function (info) { return ({\n current: info.name,\n version: Version.nu(parseInt(uaBrand.version, 10), 0)\n }); });\n });\n };\n var detect$4 = function (candidates, userAgent) {\n var agent = String(userAgent).toLowerCase();\n return find$1(candidates, function (candidate) {\n return candidate.search(agent);\n });\n };\n var detectBrowser = function (browsers, userAgent) {\n return detect$4(browsers, userAgent).map(function (browser) {\n var version = Version.detect(browser.versionRegexes, userAgent);\n return {\n current: browser.name,\n version: version\n };\n });\n };\n var detectOs = function (oses, userAgent) {\n return detect$4(oses, userAgent).map(function (os) {\n var version = Version.detect(os.versionRegexes, userAgent);\n return {\n current: os.name,\n version: version\n };\n });\n };\n var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n var checkContains = function (target) {\n return function (uastring) {\n return contains(uastring, target);\n };\n };\n var browsers = [\n {\n name: 'Edge',\n versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n search: function (uastring) {\n return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');\n }\n },\n {\n name: 'Chromium',\n brand: 'Chromium',\n versionRegexes: [\n /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n normalVersionRegex\n ],\n search: function (uastring) {\n return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');\n }\n },\n {\n name: 'IE',\n versionRegexes: [\n /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*?rv:([0-9]+)\\.([0-9]+).*/\n ],\n search: function (uastring) {\n return contains(uastring, 'msie') || contains(uastring, 'trident');\n }\n },\n {\n name: 'Opera',\n versionRegexes: [\n normalVersionRegex,\n /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n ],\n search: checkContains('opera')\n },\n {\n name: 'Firefox',\n versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n search: checkContains('firefox')\n },\n {\n name: 'Safari',\n versionRegexes: [\n normalVersionRegex,\n /.*?cpu os ([0-9]+)_([0-9]+).*/\n ],\n search: function (uastring) {\n return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');\n }\n }\n ];\n var oses = [\n {\n name: 'Windows',\n search: checkContains('win'),\n versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'iOS',\n search: function (uastring) {\n return contains(uastring, 'iphone') || contains(uastring, 'ipad');\n },\n versionRegexes: [\n /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*cpu os ([0-9]+)_([0-9]+).*/,\n /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n ]\n },\n {\n name: 'Android',\n search: checkContains('android'),\n versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'macOS',\n search: checkContains('mac os x'),\n versionRegexes: [/.*?mac\\ os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n },\n {\n name: 'Linux',\n search: checkContains('linux'),\n versionRegexes: []\n },\n {\n name: 'Solaris',\n search: checkContains('sunos'),\n versionRegexes: []\n },\n {\n name: 'FreeBSD',\n search: checkContains('freebsd'),\n versionRegexes: []\n },\n {\n name: 'ChromeOS',\n search: checkContains('cros'),\n versionRegexes: [/.*?chrome\\/([0-9]+)\\.([0-9]+).*/]\n }\n ];\n var PlatformInfo = {\n browsers: constant(browsers),\n oses: constant(oses)\n };\n var edge = 'Edge';\n var chromium = 'Chromium';\n var ie = 'IE';\n var opera = 'Opera';\n var firefox = 'Firefox';\n var safari = 'Safari';\n var unknown$1 = function () {\n return nu$1({\n current: undefined,\n version: Version.unknown()\n });\n };\n var nu$1 = function (info) {\n var current = info.current;\n var version = info.version;\n var isBrowser = function (name) { return function () { return current === name; }; };\n return {\n current: current,\n version: version,\n isEdge: isBrowser(edge),\n isChromium: isBrowser(chromium),\n isIE: isBrowser(ie),\n isOpera: isBrowser(opera),\n isFirefox: isBrowser(firefox),\n isSafari: isBrowser(safari)\n };\n };\n var Browser = {\n unknown: unknown$1,\n nu: nu$1,\n edge: constant(edge),\n chromium: constant(chromium),\n ie: constant(ie),\n opera: constant(opera),\n firefox: constant(firefox),\n safari: constant(safari)\n };\n var windows = 'Windows';\n var ios = 'iOS';\n var android = 'Android';\n var linux = 'Linux';\n var macos = 'macOS';\n var solaris = 'Solaris';\n var freebsd = 'FreeBSD';\n var chromeos = 'ChromeOS';\n var unknown = function () {\n return nu({\n current: undefined,\n version: Version.unknown()\n });\n };\n var nu = function (info) {\n var current = info.current;\n var version = info.version;\n var isOS = function (name) { return function () { return current === name; }; };\n return {\n current: current,\n version: version,\n isWindows: isOS(windows),\n isiOS: isOS(ios),\n isAndroid: isOS(android),\n isMacOS: isOS(macos),\n isLinux: isOS(linux),\n isSolaris: isOS(solaris),\n isFreeBSD: isOS(freebsd),\n isChromeOS: isOS(chromeos)\n };\n };\n var OperatingSystem = {\n unknown: unknown,\n nu: nu,\n windows: constant(windows),\n ios: constant(ios),\n android: constant(android),\n linux: constant(linux),\n macos: constant(macos),\n solaris: constant(solaris),\n freebsd: constant(freebsd),\n chromeos: constant(chromeos)\n };\n var detect$3 = function (userAgent, userAgentDataOpt, mediaMatch) {\n var browsers = PlatformInfo.browsers();\n var oses = PlatformInfo.oses();\n var browser = userAgentDataOpt.bind(function (userAgentData) { return detectBrowser$1(browsers, userAgentData); }).orThunk(function () { return detectBrowser(browsers, userAgent); }).fold(Browser.unknown, Browser.nu);\n var os = detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n var deviceType = DeviceType(os, browser, userAgent, mediaMatch);\n return {\n browser: browser,\n os: os,\n deviceType: deviceType\n };\n };\n var PlatformDetection = { detect: detect$3 };\n var mediaMatch = function (query) { return window.matchMedia(query).matches; };\n var platform = cached(function () { return PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch); });\n var detect$2 = function () { return platform(); };\n var Dimension = function (name, getOffset) {\n var set = function (element, h) {\n if (!isNumber(h) && !h.match(/^[0-9]+$/)) {\n throw new Error(name + '.set accepts only positive integer values. Value was ' + h);\n }\n var dom = element.dom;\n if (isSupported(dom)) {\n dom.style[name] = h + 'px';\n }\n };\n var get = function (element) {\n var r = getOffset(element);\n if (r <= 0 || r === null) {\n var css_1 = get$a(element, name);\n return parseFloat(css_1) || 0;\n }\n return r;\n };\n var getOuter = get;\n var aggregate = function (element, properties) { return foldl(properties, function (acc, property) {\n var val = get$a(element, property);\n var value = val === undefined ? 0 : parseInt(val, 10);\n return isNaN(value) ? acc : acc + value;\n }, 0); };\n var max = function (element, value, properties) {\n var cumulativeInclusions = aggregate(element, properties);\n var absoluteMax = value > cumulativeInclusions ? value - cumulativeInclusions : 0;\n return absoluteMax;\n };\n return {\n set: set,\n get: get,\n getOuter: getOuter,\n aggregate: aggregate,\n max: max\n };\n };\n var toNumber = function (px, fallback) { return toFloat(px).getOr(fallback); };\n var getProp = function (element, name, fallback) { return toNumber(get$a(element, name), fallback); };\n var calcContentBoxSize = function (element, size, upper, lower) {\n var paddingUpper = getProp(element, \"padding-\".concat(upper), 0);\n var paddingLower = getProp(element, \"padding-\".concat(lower), 0);\n var borderUpper = getProp(element, \"border-\".concat(upper, \"-width\"), 0);\n var borderLower = getProp(element, \"border-\".concat(lower, \"-width\"), 0);\n return size - paddingUpper - paddingLower - borderUpper - borderLower;\n };\n var getCalculatedWidth = function (element, boxSizing) {\n var dom = element.dom;\n var width = dom.getBoundingClientRect().width || dom.offsetWidth;\n return boxSizing === 'border-box' ? width : calcContentBoxSize(element, width, 'left', 'right');\n };\n var getHeight$1 = function (element) { return getProp(element, 'height', element.dom.offsetHeight); };\n var getWidth = function (element) { return getProp(element, 'width', element.dom.offsetWidth); };\n var getInnerWidth = function (element) { return getCalculatedWidth(element, 'content-box'); };\n var api$2 = Dimension('width', function (element) { return element.dom.offsetWidth; });\n var get$9 = function (element) { return api$2.get(element); };\n var getOuter$2 = function (element) { return api$2.getOuter(element); };\n var getInner = getInnerWidth;\n var getRuntime$1 = getWidth;\n var addCells = function (gridRow, index, cells) {\n var existingCells = gridRow.cells;\n var before = existingCells.slice(0, index);\n var after = existingCells.slice(index);\n var newCells = before.concat(cells).concat(after);\n return setCells(gridRow, newCells);\n };\n var addCell = function (gridRow, index, cell) { return addCells(gridRow, index, [cell]); };\n var mutateCell = function (gridRow, index, cell) {\n var cells = gridRow.cells;\n cells[index] = cell;\n };\n var setCells = function (gridRow, cells) { return rowcells(gridRow.element, cells, gridRow.section, gridRow.isNew); };\n var mapCells = function (gridRow, f) {\n var cells = gridRow.cells;\n var r = map$1(cells, f);\n return rowcells(gridRow.element, r, gridRow.section, gridRow.isNew);\n };\n var getCell = function (gridRow, index) { return gridRow.cells[index]; };\n var getCellElement = function (gridRow, index) { return getCell(gridRow, index).element; };\n var cellLength = function (gridRow) { return gridRow.cells.length; };\n var extractGridDetails = function (grid) {\n var result = partition(grid, function (row) { return row.section === 'colgroup'; });\n return {\n rows: result.fail,\n cols: result.pass\n };\n };\n var clone = function (gridRow, cloneRow, cloneCell) {\n var newCells = map$1(gridRow.cells, cloneCell);\n return rowcells(cloneRow(gridRow.element), newCells, gridRow.section, true);\n };\n var LOCKED_COL_ATTR = 'data-snooker-locked-cols';\n var getLockedColumnsFromTable = function (table) { return getOpt(table, LOCKED_COL_ATTR).bind(function (lockedColStr) { return Optional.from(lockedColStr.match(/\\d+/g)); }).map(function (lockedCols) { return mapToObject(lockedCols, always); }); };\n var getLockedColumnsFromGrid = function (grid) {\n var locked = foldl(extractGridDetails(grid).rows, function (acc, row) {\n each$2(row.cells, function (cell, idx) {\n if (cell.isLocked) {\n acc[idx] = true;\n }\n });\n return acc;\n }, {});\n var lockedArr = mapToArray(locked, function (_val, key) { return parseInt(key, 10); });\n return sort$1(lockedArr);\n };\n var key = function (row, column) {\n return row + ',' + column;\n };\n var getAt = function (warehouse, row, column) { return Optional.from(warehouse.access[key(row, column)]); };\n var findItem = function (warehouse, item, comparator) {\n var filtered = filterItems(warehouse, function (detail) {\n return comparator(item, detail.element);\n });\n return filtered.length > 0 ? Optional.some(filtered[0]) : Optional.none();\n };\n var filterItems = function (warehouse, predicate) {\n var all = bind$2(warehouse.all, function (r) {\n return r.cells;\n });\n return filter$2(all, predicate);\n };\n var generateColumns = function (rowData) {\n var columnsGroup = {};\n var index = 0;\n each$2(rowData.cells, function (column) {\n var colspan = column.colspan;\n range$1(colspan, function (columnIndex) {\n var colIndex = index + columnIndex;\n columnsGroup[colIndex] = columnext(column.element, colspan, colIndex);\n });\n index += colspan;\n });\n return columnsGroup;\n };\n var generate$1 = function (list) {\n var access = {};\n var cells = [];\n var tableOpt = head(list).map(function (rowData) { return rowData.element; }).bind(table);\n var lockedColumns = tableOpt.bind(getLockedColumnsFromTable).getOr({});\n var maxRows = 0;\n var maxColumns = 0;\n var rowCount = 0;\n var _c = partition(list, function (rowData) { return rowData.section === 'colgroup'; }), colgroupRows = _c.pass, rows = _c.fail;\n each$2(rows, function (rowData) {\n var currentRow = [];\n each$2(rowData.cells, function (rowCell) {\n var start = 0;\n while (access[key(rowCount, start)] !== undefined) {\n start++;\n }\n var isLocked = hasNonNullableKey(lockedColumns, start.toString());\n var current = extended(rowCell.element, rowCell.rowspan, rowCell.colspan, rowCount, start, isLocked);\n for (var occupiedColumnPosition = 0; occupiedColumnPosition < rowCell.colspan; occupiedColumnPosition++) {\n for (var occupiedRowPosition = 0; occupiedRowPosition < rowCell.rowspan; occupiedRowPosition++) {\n var rowPosition = rowCount + occupiedRowPosition;\n var columnPosition = start + occupiedColumnPosition;\n var newpos = key(rowPosition, columnPosition);\n access[newpos] = current;\n maxColumns = Math.max(maxColumns, columnPosition + 1);\n }\n }\n currentRow.push(current);\n });\n maxRows++;\n cells.push(rowdetail(rowData.element, currentRow, rowData.section));\n rowCount++;\n });\n var _d = last$2(colgroupRows).map(function (rowData) {\n var columns = generateColumns(rowData);\n var colgroup$1 = colgroup(rowData.element, values(columns));\n return {\n colgroups: [colgroup$1],\n columns: columns\n };\n }).getOrThunk(function () { return ({\n colgroups: [],\n columns: {}\n }); }), columns = _d.columns, colgroups = _d.colgroups;\n var grid$1 = grid(maxRows, maxColumns);\n return {\n grid: grid$1,\n access: access,\n all: cells,\n columns: columns,\n colgroups: colgroups\n };\n };\n var fromTable = function (table) {\n var list = fromTable$1(table);\n return generate$1(list);\n };\n var justCells = function (warehouse) { return bind$2(warehouse.all, function (w) { return w.cells; }); };\n var justColumns = function (warehouse) { return values(warehouse.columns); };\n var hasColumns = function (warehouse) { return keys(warehouse.columns).length > 0; };\n var getColumnAt = function (warehouse, columnIndex) { return Optional.from(warehouse.columns[columnIndex]); };\n var Warehouse = {\n fromTable: fromTable,\n generate: generate$1,\n getAt: getAt,\n findItem: findItem,\n filterItems: filterItems,\n justCells: justCells,\n justColumns: justColumns,\n hasColumns: hasColumns,\n getColumnAt: getColumnAt\n };\n var columns = function (warehouse, isValidCell) {\n if (isValidCell === void 0) { isValidCell = always; }\n var grid = warehouse.grid;\n var cols = range$1(grid.columns, identity);\n var rowsArr = range$1(grid.rows, identity);\n return map$1(cols, function (col) {\n var getBlock = function () { return bind$2(rowsArr, function (r) { return Warehouse.getAt(warehouse, r, col).filter(function (detail) { return detail.column === col; }).toArray(); }); };\n var isValid = function (detail) { return detail.colspan === 1 && isValidCell(detail.element); };\n var getFallback = function () { return Warehouse.getAt(warehouse, 0, col); };\n return decide(getBlock, isValid, getFallback);\n });\n };\n var decide = function (getBlock, isValid, getFallback) {\n var inBlock = getBlock();\n var validInBlock = find$1(inBlock, isValid);\n var detailOption = validInBlock.orThunk(function () { return Optional.from(inBlock[0]).orThunk(getFallback); });\n return detailOption.map(function (detail) { return detail.element; });\n };\n var rows = function (warehouse) {\n var grid = warehouse.grid;\n var rowsArr = range$1(grid.rows, identity);\n var cols = range$1(grid.columns, identity);\n return map$1(rowsArr, function (row) {\n var getBlock = function () { return bind$2(cols, function (c) { return Warehouse.getAt(warehouse, row, c).filter(function (detail) { return detail.row === row; }).fold(constant([]), function (detail) { return [detail]; }); }); };\n var isSingle = function (detail) { return detail.rowspan === 1; };\n var getFallback = function () { return Warehouse.getAt(warehouse, row, 0); };\n return decide(getBlock, isSingle, getFallback);\n });\n };\n var deduce = function (xs, index) {\n if (index < 0 || index >= xs.length - 1) {\n return Optional.none();\n }\n var current = xs[index].fold(function () {\n var rest = reverse(xs.slice(0, index));\n return findMap(rest, function (a, i) { return a.map(function (aa) { return ({\n value: aa,\n delta: i + 1\n }); }); });\n }, function (c) { return Optional.some({\n value: c,\n delta: 0\n }); });\n var next = xs[index + 1].fold(function () {\n var rest = xs.slice(index + 1);\n return findMap(rest, function (a, i) { return a.map(function (aa) { return ({\n value: aa,\n delta: i + 1\n }); }); });\n }, function (n) { return Optional.some({\n value: n,\n delta: 1\n }); });\n return current.bind(function (c) { return next.map(function (n) {\n var extras = n.delta + c.delta;\n return Math.abs(n.value - c.value) / extras;\n }); });\n };\n var onDirection = function (isLtr, isRtl) { return function (element) { return getDirection(element) === 'rtl' ? isRtl : isLtr; }; };\n var getDirection = function (element) { return get$a(element, 'direction') === 'rtl' ? 'rtl' : 'ltr'; };\n var api$1 = Dimension('height', function (element) {\n var dom = element.dom;\n return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight;\n });\n var get$8 = function (element) { return api$1.get(element); };\n var getOuter$1 = function (element) { return api$1.getOuter(element); };\n var getRuntime = getHeight$1;\n var r = function (left, top) {\n var translate = function (x, y) { return r(left + x, top + y); };\n return {\n left: left,\n top: top,\n translate: translate\n };\n };\n var SugarPosition = r;\n var boxPosition = function (dom) {\n var box = dom.getBoundingClientRect();\n return SugarPosition(box.left, box.top);\n };\n var firstDefinedOrZero = function (a, b) {\n if (a !== undefined) {\n return a;\n }\n else {\n return b !== undefined ? b : 0;\n }\n };\n var absolute = function (element) {\n var doc = element.dom.ownerDocument;\n var body = doc.body;\n var win = doc.defaultView;\n var html = doc.documentElement;\n if (body === element.dom) {\n return SugarPosition(body.offsetLeft, body.offsetTop);\n }\n var scrollTop = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageYOffset, html.scrollTop);\n var scrollLeft = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageXOffset, html.scrollLeft);\n var clientTop = firstDefinedOrZero(html.clientTop, body.clientTop);\n var clientLeft = firstDefinedOrZero(html.clientLeft, body.clientLeft);\n return viewport(element).translate(scrollLeft - clientLeft, scrollTop - clientTop);\n };\n var viewport = function (element) {\n var dom = element.dom;\n var doc = dom.ownerDocument;\n var body = doc.body;\n if (body === dom) {\n return SugarPosition(body.offsetLeft, body.offsetTop);\n }\n if (!inBody(element)) {\n return SugarPosition(0, 0);\n }\n return boxPosition(dom);\n };\n var rowInfo = function (row, y) { return ({\n row: row,\n y: y\n }); };\n var colInfo = function (col, x) { return ({\n col: col,\n x: x\n }); };\n var rtlEdge = function (cell) {\n var pos = absolute(cell);\n return pos.left + getOuter$2(cell);\n };\n var ltrEdge = function (cell) {\n return absolute(cell).left;\n };\n var getLeftEdge = function (index, cell) {\n return colInfo(index, ltrEdge(cell));\n };\n var getRightEdge = function (index, cell) {\n return colInfo(index, rtlEdge(cell));\n };\n var getTop$1 = function (cell) {\n return absolute(cell).top;\n };\n var getTopEdge = function (index, cell) {\n return rowInfo(index, getTop$1(cell));\n };\n var getBottomEdge = function (index, cell) {\n return rowInfo(index, getTop$1(cell) + getOuter$1(cell));\n };\n var findPositions = function (getInnerEdge, getOuterEdge, array) {\n if (array.length === 0) {\n return [];\n }\n var lines = map$1(array.slice(1), function (cellOption, index) {\n return cellOption.map(function (cell) {\n return getInnerEdge(index, cell);\n });\n });\n var lastLine = array[array.length - 1].map(function (cell) {\n return getOuterEdge(array.length - 1, cell);\n });\n return lines.concat([lastLine]);\n };\n var negate = function (step) {\n return -step;\n };\n var height = {\n delta: identity,\n positions: function (optElements) { return findPositions(getTopEdge, getBottomEdge, optElements); },\n edge: getTop$1\n };\n var ltr$1 = {\n delta: identity,\n edge: ltrEdge,\n positions: function (optElements) { return findPositions(getLeftEdge, getRightEdge, optElements); }\n };\n var rtl$1 = {\n delta: negate,\n edge: rtlEdge,\n positions: function (optElements) { return findPositions(getRightEdge, getLeftEdge, optElements); }\n };\n var detect$1 = onDirection(ltr$1, rtl$1);\n var width = {\n delta: function (amount, table) { return detect$1(table).delta(amount, table); },\n positions: function (cols, table) { return detect$1(table).positions(cols, table); },\n edge: function (cell) { return detect$1(cell).edge(cell); }\n };\n var units = {\n unsupportedLength: [\n 'em',\n 'ex',\n 'cap',\n 'ch',\n 'ic',\n 'rem',\n 'lh',\n 'rlh',\n 'vw',\n 'vh',\n 'vi',\n 'vb',\n 'vmin',\n 'vmax',\n 'cm',\n 'mm',\n 'Q',\n 'in',\n 'pc',\n 'pt',\n 'px'\n ],\n fixed: [\n 'px',\n 'pt'\n ],\n relative: ['%'],\n empty: ['']\n };\n var pattern = (function () {\n var decimalDigits = '[0-9]+';\n var signedInteger = '[+-]?' + decimalDigits;\n var exponentPart = '[eE]' + signedInteger;\n var dot = '\\\\.';\n var opt = function (input) { return \"(?:\".concat(input, \")?\"); };\n var unsignedDecimalLiteral = [\n 'Infinity',\n decimalDigits + dot + opt(decimalDigits) + opt(exponentPart),\n dot + decimalDigits + opt(exponentPart),\n decimalDigits + opt(exponentPart)\n ].join('|');\n var float = \"[+-]?(?:\".concat(unsignedDecimalLiteral, \")\");\n return new RegExp(\"^(\".concat(float, \")(.*)$\"));\n })();\n var isUnit = function (unit, accepted) { return exists(accepted, function (acc) { return exists(units[acc], function (check) { return unit === check; }); }); };\n var parse = function (input, accepted) {\n var match = Optional.from(pattern.exec(input));\n return match.bind(function (array) {\n var value = Number(array[1]);\n var unitRaw = array[2];\n if (isUnit(unitRaw, accepted)) {\n return Optional.some({\n value: value,\n unit: unitRaw\n });\n }\n else {\n return Optional.none();\n }\n });\n };\n var rPercentageBasedSizeRegex = /(\\d+(\\.\\d+)?)%/;\n var rPixelBasedSizeRegex = /(\\d+(\\.\\d+)?)px|em/;\n var isCol$2 = isTag('col');\n var getPercentSize = function (elm, outerGetter, innerGetter) {\n var relativeParent = parentElement(elm).getOrThunk(function () { return getBody$1(owner(elm)); });\n return outerGetter(elm) / innerGetter(relativeParent) * 100;\n };\n var setPixelWidth = function (cell, amount) {\n set$1(cell, 'width', amount + 'px');\n };\n var setPercentageWidth = function (cell, amount) {\n set$1(cell, 'width', amount + '%');\n };\n var setHeight = function (cell, amount) {\n set$1(cell, 'height', amount + 'px');\n };\n var getHeightValue = function (cell) { return getRuntime(cell) + 'px'; };\n var convert = function (cell, number, getter, setter) {\n var newSize = table(cell).map(function (table) {\n var total = getter(table);\n return Math.floor(number / 100 * total);\n }).getOr(number);\n setter(cell, newSize);\n return newSize;\n };\n var normalizePixelSize = function (value, cell, getter, setter) {\n var number = parseFloat(value);\n return endsWith(value, '%') && name(cell) !== 'table' ? convert(cell, number, getter, setter) : number;\n };\n var getTotalHeight = function (cell) {\n var value = getHeightValue(cell);\n if (!value) {\n return get$8(cell);\n }\n return normalizePixelSize(value, cell, get$8, setHeight);\n };\n var get$7 = function (cell, type, f) {\n var v = f(cell);\n var span = getSpan(cell, type);\n return v / span;\n };\n var getRaw$1 = function (element, prop) {\n return getRaw$2(element, prop).orThunk(function () {\n return getOpt(element, prop).map(function (val) { return val + 'px'; });\n });\n };\n var getRawWidth$1 = function (element) { return getRaw$1(element, 'width'); };\n var getRawHeight = function (element) { return getRaw$1(element, 'height'); };\n var getPercentageWidth = function (cell) { return getPercentSize(cell, get$9, getInner); };\n var getPixelWidth$1 = function (cell) { return isCol$2(cell) ? get$9(cell) : getRuntime$1(cell); };\n var getHeight = function (cell) {\n return get$7(cell, 'rowspan', getTotalHeight);\n };\n var getGenericWidth = function (cell) {\n var width = getRawWidth$1(cell);\n return width.bind(function (w) { return parse(w, [\n 'fixed',\n 'relative',\n 'empty'\n ]); });\n };\n var setGenericWidth = function (cell, amount, unit) {\n set$1(cell, 'width', amount + unit);\n };\n var getPixelTableWidth = function (table) { return get$9(table) + 'px'; };\n var getPercentTableWidth = function (table) { return getPercentSize(table, get$9, getInner) + '%'; };\n var isPercentSizing$1 = function (table) { return getRawWidth$1(table).exists(function (size) { return rPercentageBasedSizeRegex.test(size); }); };\n var isPixelSizing$1 = function (table) { return getRawWidth$1(table).exists(function (size) { return rPixelBasedSizeRegex.test(size); }); };\n var isNoneSizing$1 = function (table) { return getRawWidth$1(table).isNone(); };\n var percentageBasedSizeRegex = constant(rPercentageBasedSizeRegex);\n var isCol$1 = isTag('col');\n var getRawW = function (cell) {\n return getRawWidth$1(cell).getOrThunk(function () { return getPixelWidth$1(cell) + 'px'; });\n };\n var getRawH = function (cell) {\n return getRawHeight(cell).getOrThunk(function () { return getHeight(cell) + 'px'; });\n };\n var justCols = function (warehouse) { return map$1(Warehouse.justColumns(warehouse), function (column) { return Optional.from(column.element); }); };\n var isValidColumn = function (cell) {\n var browser = detect$2().browser;\n var supportsColWidths = browser.isChromium() || browser.isFirefox();\n return isCol$1(cell) ? supportsColWidths : true;\n };\n var getDimension = function (cellOpt, index, backups, filter, getter, fallback) { return cellOpt.filter(filter).fold(function () { return fallback(deduce(backups, index)); }, function (cell) { return getter(cell); }); };\n var getWidthFrom = function (warehouse, table, getWidth, fallback) {\n var columnCells = columns(warehouse);\n var columns$1 = Warehouse.hasColumns(warehouse) ? justCols(warehouse) : columnCells;\n var backups = [Optional.some(width.edge(table))].concat(map$1(width.positions(columnCells, table), function (pos) { return pos.map(function (p) { return p.x; }); }));\n var colFilter = not(hasColspan);\n return map$1(columns$1, function (cellOption, c) {\n return getDimension(cellOption, c, backups, colFilter, function (column) {\n if (isValidColumn(column)) {\n return getWidth(column);\n }\n else {\n var cell_1 = bindFrom(columnCells[c], identity);\n return getDimension(cell_1, c, backups, colFilter, function (cell) { return fallback(Optional.some(get$9(cell))); }, fallback);\n }\n }, fallback);\n });\n };\n var getDeduced = function (deduced) {\n return deduced.map(function (d) {\n return d + 'px';\n }).getOr('');\n };\n var getRawWidths = function (warehouse, table) {\n return getWidthFrom(warehouse, table, getRawW, getDeduced);\n };\n var getPercentageWidths = function (warehouse, table, tableSize) {\n return getWidthFrom(warehouse, table, getPercentageWidth, function (deduced) {\n return deduced.fold(function () {\n return tableSize.minCellWidth();\n }, function (cellWidth) {\n return cellWidth / tableSize.pixelWidth() * 100;\n });\n });\n };\n var getPixelWidths = function (warehouse, table, tableSize) {\n return getWidthFrom(warehouse, table, getPixelWidth$1, function (deduced) {\n return deduced.getOrThunk(tableSize.minCellWidth);\n });\n };\n var getHeightFrom = function (warehouse, table, direction, getHeight, fallback) {\n var rows$1 = rows(warehouse);\n var backups = [Optional.some(direction.edge(table))].concat(map$1(direction.positions(rows$1, table), function (pos) { return pos.map(function (p) { return p.y; }); }));\n return map$1(rows$1, function (cellOption, c) {\n return getDimension(cellOption, c, backups, not(hasRowspan), getHeight, fallback);\n });\n };\n var getPixelHeights = function (warehouse, table, direction) {\n return getHeightFrom(warehouse, table, direction, getHeight, function (deduced) {\n return deduced.getOrThunk(minHeight);\n });\n };\n var getRawHeights = function (warehouse, table, direction) {\n return getHeightFrom(warehouse, table, direction, getRawH, getDeduced);\n };\n var widthLookup = function (table, getter) { return function () {\n if (inBody(table)) {\n return getter(table);\n }\n else {\n return parseFloat(getRaw$2(table, 'width').getOr('0'));\n }\n }; };\n var noneSize = function (table) {\n var getWidth = widthLookup(table, get$9);\n var zero = constant(0);\n var getWidths = function (warehouse, tableSize) { return getPixelWidths(warehouse, table, tableSize); };\n return {\n width: getWidth,\n pixelWidth: getWidth,\n getWidths: getWidths,\n getCellDelta: zero,\n singleColumnWidth: constant([0]),\n minCellWidth: zero,\n setElementWidth: noop,\n adjustTableWidth: noop,\n isRelative: true,\n label: 'none'\n };\n };\n var percentageSize = function (table) {\n var getFloatWidth = widthLookup(table, function (elem) { return parseFloat(getPercentTableWidth(elem)); });\n var getWidth = widthLookup(table, get$9);\n var getCellDelta = function (delta) { return delta / getWidth() * 100; };\n var singleColumnWidth = function (w, _delta) { return [100 - w]; };\n var minCellWidth = function () { return minWidth() / getWidth() * 100; };\n var adjustTableWidth = function (delta) {\n var currentWidth = getFloatWidth();\n var change = delta / 100 * currentWidth;\n var newWidth = currentWidth + change;\n setPercentageWidth(table, newWidth);\n };\n var getWidths = function (warehouse, tableSize) { return getPercentageWidths(warehouse, table, tableSize); };\n return {\n width: getFloatWidth,\n pixelWidth: getWidth,\n getWidths: getWidths,\n getCellDelta: getCellDelta,\n singleColumnWidth: singleColumnWidth,\n minCellWidth: minCellWidth,\n setElementWidth: setPercentageWidth,\n adjustTableWidth: adjustTableWidth,\n isRelative: true,\n label: 'percent'\n };\n };\n var pixelSize = function (table) {\n var getWidth = widthLookup(table, get$9);\n var getCellDelta = identity;\n var singleColumnWidth = function (w, delta) {\n var newNext = Math.max(minWidth(), w + delta);\n return [newNext - w];\n };\n var adjustTableWidth = function (delta) {\n var newWidth = getWidth() + delta;\n setPixelWidth(table, newWidth);\n };\n var getWidths = function (warehouse, tableSize) { return getPixelWidths(warehouse, table, tableSize); };\n return {\n width: getWidth,\n pixelWidth: getWidth,\n getWidths: getWidths,\n getCellDelta: getCellDelta,\n singleColumnWidth: singleColumnWidth,\n minCellWidth: minWidth,\n setElementWidth: setPixelWidth,\n adjustTableWidth: adjustTableWidth,\n isRelative: false,\n label: 'pixel'\n };\n };\n var chooseSize = function (element, width) {\n var percentMatch = percentageBasedSizeRegex().exec(width);\n if (percentMatch !== null) {\n return percentageSize(element);\n }\n else {\n return pixelSize(element);\n }\n };\n var getTableSize = function (table) {\n var width = getRawWidth$1(table);\n return width.fold(function () { return noneSize(table); }, function (w) { return chooseSize(table, w); });\n };\n var TableSize = {\n getTableSize: getTableSize,\n pixelSize: pixelSize,\n percentageSize: percentageSize,\n noneSize: noneSize\n };\n var statsStruct = function (minRow, minCol, maxRow, maxCol, allCells, selectedCells) { return ({\n minRow: minRow,\n minCol: minCol,\n maxRow: maxRow,\n maxCol: maxCol,\n allCells: allCells,\n selectedCells: selectedCells\n }); };\n var findSelectedStats = function (house, isSelected) {\n var totalColumns = house.grid.columns;\n var totalRows = house.grid.rows;\n var minRow = totalRows;\n var minCol = totalColumns;\n var maxRow = 0;\n var maxCol = 0;\n var allCells = [];\n var selectedCells = [];\n each$1(house.access, function (detail) {\n allCells.push(detail);\n if (isSelected(detail)) {\n selectedCells.push(detail);\n var startRow = detail.row;\n var endRow = startRow + detail.rowspan - 1;\n var startCol = detail.column;\n var endCol = startCol + detail.colspan - 1;\n if (startRow < minRow) {\n minRow = startRow;\n }\n else if (endRow > maxRow) {\n maxRow = endRow;\n }\n if (startCol < minCol) {\n minCol = startCol;\n }\n else if (endCol > maxCol) {\n maxCol = endCol;\n }\n }\n });\n return statsStruct(minRow, minCol, maxRow, maxCol, allCells, selectedCells);\n };\n var makeCell = function (list, seenSelected, rowIndex) {\n var row = list[rowIndex].element;\n var td = SugarElement.fromTag('td');\n append$1(td, SugarElement.fromTag('br'));\n var f = seenSelected ? append$1 : prepend;\n f(row, td);\n };\n var fillInGaps = function (list, house, stats, isSelected) {\n var rows = filter$2(list, function (row) { return row.section !== 'colgroup'; });\n var totalColumns = house.grid.columns;\n var totalRows = house.grid.rows;\n for (var i = 0; i < totalRows; i++) {\n var seenSelected = false;\n for (var j = 0; j < totalColumns; j++) {\n if (!(i < stats.minRow || i > stats.maxRow || j < stats.minCol || j > stats.maxCol)) {\n var needCell = Warehouse.getAt(house, i, j).filter(isSelected).isNone();\n if (needCell) {\n makeCell(rows, seenSelected, i);\n }\n else {\n seenSelected = true;\n }\n }\n }\n }\n };\n var clean = function (replica, stats, house, widthDelta) {\n each$1(house.columns, function (col) {\n if (col.column < stats.minCol || col.column > stats.maxCol) {\n remove$6(col.element);\n }\n });\n var emptyRows = filter$2(firstLayer(replica, 'tr'), function (row) { return row.dom.childElementCount === 0; });\n each$2(emptyRows, remove$6);\n if (stats.minCol === stats.maxCol || stats.minRow === stats.maxRow) {\n each$2(firstLayer(replica, 'th,td'), function (cell) {\n remove$7(cell, 'rowspan');\n remove$7(cell, 'colspan');\n });\n }\n remove$7(replica, LOCKED_COL_ATTR);\n remove$7(replica, 'data-snooker-col-series');\n var tableSize = TableSize.getTableSize(replica);\n tableSize.adjustTableWidth(widthDelta);\n };\n var getTableWidthDelta = function (table, warehouse, tableSize, stats) {\n if (stats.minCol === 0 && warehouse.grid.columns === stats.maxCol + 1) {\n return 0;\n }\n var colWidths = getPixelWidths(warehouse, table, tableSize);\n var allColsWidth = foldl(colWidths, function (acc, width) { return acc + width; }, 0);\n var selectedColsWidth = foldl(colWidths.slice(stats.minCol, stats.maxCol + 1), function (acc, width) { return acc + width; }, 0);\n var newWidth = selectedColsWidth / allColsWidth * tableSize.pixelWidth();\n var delta = newWidth - tableSize.pixelWidth();\n return tableSize.getCellDelta(delta);\n };\n var extract$1 = function (table, selectedSelector) {\n var isSelected = function (detail) { return is$2(detail.element, selectedSelector); };\n var replica = deep(table);\n var list = fromTable$1(replica);\n var tableSize = TableSize.getTableSize(table);\n var replicaHouse = Warehouse.generate(list);\n var replicaStats = findSelectedStats(replicaHouse, isSelected);\n var selector = 'th:not(' + selectedSelector + ')' + ',td:not(' + selectedSelector + ')';\n var unselectedCells = filterFirstLayer(replica, 'th,td', function (cell) { return is$2(cell, selector); });\n each$2(unselectedCells, remove$6);\n fillInGaps(list, replicaHouse, replicaStats, isSelected);\n var house = Warehouse.fromTable(table);\n var widthDelta = getTableWidthDelta(table, house, tableSize, replicaStats);\n clean(replica, replicaStats, replicaHouse, widthDelta);\n return replica;\n };\n var nbsp = '\\xA0';\n var NodeValue = function (is, name) {\n var get = function (element) {\n if (!is(element)) {\n throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n }\n return getOption(element).getOr('');\n };\n var getOption = function (element) { return is(element) ? Optional.from(element.dom.nodeValue) : Optional.none(); };\n var set = function (element, value) {\n if (!is(element)) {\n throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n }\n element.dom.nodeValue = value;\n };\n return {\n get: get,\n getOption: getOption,\n set: set\n };\n };\n var api = NodeValue(isText, 'text');\n var get$6 = function (element) { return api.get(element); };\n var getOption = function (element) { return api.getOption(element); };\n var set = function (element, value) { return api.set(element, value); };\n var getEnd = function (element) { return name(element) === 'img' ? 1 : getOption(element).fold(function () { return children$2(element).length; }, function (v) { return v.length; }); };\n var isTextNodeWithCursorPosition = function (el) { return getOption(el).filter(function (text) { return text.trim().length !== 0 || text.indexOf(nbsp) > -1; }).isSome(); };\n var isContentEditableFalse = function (elem) { return isHTMLElement(elem) && get$b(elem, 'contenteditable') === 'false'; };\n var elementsWithCursorPosition = [\n 'img',\n 'br'\n ];\n var isCursorPosition = function (elem) {\n var hasCursorPosition = isTextNodeWithCursorPosition(elem);\n return hasCursorPosition || contains$2(elementsWithCursorPosition, name(elem)) || isContentEditableFalse(elem);\n };\n var first = function (element) { return descendant$1(element, isCursorPosition); };\n var last$1 = function (element) { return descendantRtl(element, isCursorPosition); };\n var descendantRtl = function (scope, predicate) {\n var descend = function (element) {\n var children = children$2(element);\n for (var i = children.length - 1; i >= 0; i--) {\n var child_2 = children[i];\n if (predicate(child_2)) {\n return Optional.some(child_2);\n }\n var res = descend(child_2);\n if (res.isSome()) {\n return res;\n }\n }\n return Optional.none();\n };\n return descend(scope);\n };\n var transferableAttributes = {\n scope: [\n 'row',\n 'col'\n ]\n };\n var createCell = function (doc) { return function () {\n var td = SugarElement.fromTag('td', doc.dom);\n append$1(td, SugarElement.fromTag('br', doc.dom));\n return td;\n }; };\n var createCol = function (doc) { return function () {\n return SugarElement.fromTag('col', doc.dom);\n }; };\n var createColgroup = function (doc) { return function () {\n return SugarElement.fromTag('colgroup', doc.dom);\n }; };\n var createRow$1 = function (doc) { return function () {\n return SugarElement.fromTag('tr', doc.dom);\n }; };\n var replace$1 = function (cell, tag, attrs) {\n var replica = copy$2(cell, tag);\n each$1(attrs, function (v, k) {\n if (v === null) {\n remove$7(replica, k);\n }\n else {\n set$2(replica, k, v);\n }\n });\n return replica;\n };\n var pasteReplace = function (cell) {\n return cell;\n };\n var cloneFormats = function (oldCell, newCell, formats) {\n var first$1 = first(oldCell);\n return first$1.map(function (firstText) {\n var formatSelector = formats.join(',');\n var parents = ancestors$3(firstText, formatSelector, function (element) {\n return eq$1(element, oldCell);\n });\n return foldr(parents, function (last, parent) {\n var clonedFormat = shallow(parent);\n append$1(last, clonedFormat);\n return clonedFormat;\n }, newCell);\n }).getOr(newCell);\n };\n var cloneAppropriateAttributes = function (original, clone) {\n each$1(transferableAttributes, function (validAttributes, attributeName) { return getOpt(original, attributeName).filter(function (attribute) { return contains$2(validAttributes, attribute); }).each(function (attribute) { return set$2(clone, attributeName, attribute); }); });\n };\n var cellOperations = function (mutate, doc, formatsToClone) {\n var cloneCss = function (prev, clone) {\n copy$1(prev.element, clone);\n remove$5(clone, 'height');\n if (prev.colspan !== 1) {\n remove$5(clone, 'width');\n }\n };\n var newCell = function (prev) {\n var td = SugarElement.fromTag(name(prev.element), doc.dom);\n var formats = formatsToClone.getOr([\n 'strong',\n 'em',\n 'b',\n 'i',\n 'span',\n 'font',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n 'div'\n ]);\n var lastNode = formats.length > 0 ? cloneFormats(prev.element, td, formats) : td;\n append$1(lastNode, SugarElement.fromTag('br'));\n cloneCss(prev, td);\n cloneAppropriateAttributes(prev.element, td);\n mutate(prev.element, td);\n return td;\n };\n var newCol = function (prev) {\n var col = SugarElement.fromTag(name(prev.element), doc.dom);\n cloneCss(prev, col);\n mutate(prev.element, col);\n return col;\n };\n return {\n col: newCol,\n colgroup: createColgroup(doc),\n row: createRow$1(doc),\n cell: newCell,\n replace: replace$1,\n colGap: createCol(doc),\n gap: createCell(doc)\n };\n };\n var paste$1 = function (doc) {\n return {\n col: createCol(doc),\n colgroup: createColgroup(doc),\n row: createRow$1(doc),\n cell: createCell(doc),\n replace: pasteReplace,\n colGap: createCol(doc),\n gap: createCell(doc)\n };\n };\n var fromHtml = function (html, scope) {\n var doc = scope || document;\n var div = doc.createElement('div');\n div.innerHTML = html;\n return children$2(SugarElement.fromDom(div));\n };\n var fromDom = function (nodes) { return map$1(nodes, SugarElement.fromDom); };\n var option = function (name) { return function (editor) { return editor.options.get(name); }; };\n var defaultWidth = '100%';\n var getPixelForcedWidth = function (editor) {\n var _a;\n var dom = editor.dom;\n var parentBlock = (_a = dom.getParent(editor.selection.getStart(), dom.isBlock)) !== null && _a !== void 0 ? _a : editor.getBody();\n return getInner(SugarElement.fromDom(parentBlock)) + 'px';\n };\n var determineDefaultTableStyles = function (editor, defaultStyles) {\n if (isTableResponsiveForced(editor) || !shouldStyleWithCss(editor)) {\n return defaultStyles;\n }\n else if (isTablePixelsForced(editor)) {\n return __assign(__assign({}, defaultStyles), { width: getPixelForcedWidth(editor) });\n }\n else {\n return __assign(__assign({}, defaultStyles), { width: defaultWidth });\n }\n };\n var determineDefaultTableAttributes = function (editor, defaultAttributes) {\n if (isTableResponsiveForced(editor) || shouldStyleWithCss(editor)) {\n return defaultAttributes;\n }\n else if (isTablePixelsForced(editor)) {\n return __assign(__assign({}, defaultAttributes), { width: getPixelForcedWidth(editor) });\n }\n else {\n return __assign(__assign({}, defaultAttributes), { width: defaultWidth });\n }\n };\n var register = function (editor) {\n var registerOption = editor.options.register;\n registerOption('table_clone_elements', { processor: 'string[]' });\n registerOption('table_use_colgroups', {\n processor: 'boolean',\n default: true\n });\n registerOption('table_header_type', {\n processor: function (value) {\n var valid = contains$2([\n 'section',\n 'cells',\n 'sectionCells',\n 'auto'\n ], value);\n return valid ? {\n value: value,\n valid: valid\n } : {\n valid: false,\n message: 'Must be one of: section, cells, sectionCells or auto.'\n };\n },\n default: 'section'\n });\n registerOption('table_sizing_mode', {\n processor: 'string',\n default: 'auto'\n });\n registerOption('table_default_attributes', {\n processor: 'object',\n default: { border: '1' }\n });\n registerOption('table_default_styles', {\n processor: 'object',\n default: { 'border-collapse': 'collapse' }\n });\n registerOption('table_column_resizing', {\n processor: function (value) {\n var valid = contains$2([\n 'preservetable',\n 'resizetable'\n ], value);\n return valid ? {\n value: value,\n valid: valid\n } : {\n valid: false,\n message: 'Must be preservetable, or resizetable.'\n };\n },\n default: 'preservetable'\n });\n registerOption('table_resize_bars', {\n processor: 'boolean',\n default: true\n });\n registerOption('table_style_by_css', {\n processor: 'boolean',\n default: true\n });\n registerOption('table_merge_content_on_paste', {\n processor: 'boolean',\n default: true\n });\n };\n var getTableCloneElements = function (editor) {\n return Optional.from(editor.options.get('table_clone_elements'));\n };\n var hasTableObjectResizing = function (editor) {\n var objectResizing = editor.options.get('object_resizing');\n return contains$2(objectResizing.split(','), 'table');\n };\n var getTableHeaderType = option('table_header_type');\n var getTableColumnResizingBehaviour = option('table_column_resizing');\n var isPreserveTableColumnResizing = function (editor) { return getTableColumnResizingBehaviour(editor) === 'preservetable'; };\n var isResizeTableColumnResizing = function (editor) { return getTableColumnResizingBehaviour(editor) === 'resizetable'; };\n var getTableSizingMode = option('table_sizing_mode');\n var isTablePercentagesForced = function (editor) { return getTableSizingMode(editor) === 'relative'; };\n var isTablePixelsForced = function (editor) { return getTableSizingMode(editor) === 'fixed'; };\n var isTableResponsiveForced = function (editor) { return getTableSizingMode(editor) === 'responsive'; };\n var hasTableResizeBars = option('table_resize_bars');\n var shouldStyleWithCss = option('table_style_by_css');\n var shouldMergeContentOnPaste = option('table_merge_content_on_paste');\n var getTableDefaultAttributes = function (editor) {\n var options = editor.options;\n var defaultAttributes = options.get('table_default_attributes');\n return options.isSet('table_default_attributes') ? defaultAttributes : determineDefaultTableAttributes(editor, defaultAttributes);\n };\n var getTableDefaultStyles = function (editor) {\n var options = editor.options;\n var defaultStyles = options.get('table_default_styles');\n return options.isSet('table_default_styles') ? defaultStyles : determineDefaultTableStyles(editor, defaultStyles);\n };\n var tableUseColumnGroup = option('table_use_colgroups');\n var closest = function (target) { return closest$1(target, '[contenteditable]'); };\n var isEditable$1 = function (element, assumeEditable) {\n if (assumeEditable === void 0) { assumeEditable = false; }\n if (inBody(element)) {\n return element.dom.isContentEditable;\n }\n else {\n return closest(element).fold(constant(assumeEditable), function (editable) { return getRaw(editable) === 'true'; });\n }\n };\n var getRaw = function (element) { return element.dom.contentEditable; };\n var getBody = function (editor) { return SugarElement.fromDom(editor.getBody()); };\n var getIsRoot = function (editor) { return function (element) { return eq$1(element, getBody(editor)); }; };\n var removeDataStyle = function (table) {\n remove$7(table, 'data-mce-style');\n var removeStyleAttribute = function (element) { return remove$7(element, 'data-mce-style'); };\n each$2(cells$1(table), removeStyleAttribute);\n each$2(columns$1(table), removeStyleAttribute);\n each$2(rows$1(table), removeStyleAttribute);\n };\n var getSelectionStart = function (editor) { return SugarElement.fromDom(editor.selection.getStart()); };\n var getPixelWidth = function (elm) { return elm.getBoundingClientRect().width; };\n var getPixelHeight = function (elm) { return elm.getBoundingClientRect().height; };\n var getRawWidth = function (editor, elm) {\n var raw = editor.dom.getStyle(elm, 'width') || editor.dom.getAttrib(elm, 'width');\n return Optional.from(raw).filter(isNotEmpty);\n };\n var isPercentage$1 = function (value) { return /^(\\d+(\\.\\d+)?)%$/.test(value); };\n var isPixel = function (value) { return /^(\\d+(\\.\\d+)?)px$/.test(value); };\n var isInEditableContext$1 = function (cell) { return closest$2(cell, isTag('table')).exists(isEditable$1); };\n var inSelection = function (bounds, detail) {\n var leftEdge = detail.column;\n var rightEdge = detail.column + detail.colspan - 1;\n var topEdge = detail.row;\n var bottomEdge = detail.row + detail.rowspan - 1;\n return leftEdge <= bounds.finishCol && rightEdge >= bounds.startCol && (topEdge <= bounds.finishRow && bottomEdge >= bounds.startRow);\n };\n var isWithin = function (bounds, detail) {\n return detail.column >= bounds.startCol && detail.column + detail.colspan - 1 <= bounds.finishCol && detail.row >= bounds.startRow && detail.row + detail.rowspan - 1 <= bounds.finishRow;\n };\n var isRectangular = function (warehouse, bounds) {\n var isRect = true;\n var detailIsWithin = curry(isWithin, bounds);\n for (var i = bounds.startRow; i <= bounds.finishRow; i++) {\n for (var j = bounds.startCol; j <= bounds.finishCol; j++) {\n isRect = isRect && Warehouse.getAt(warehouse, i, j).exists(detailIsWithin);\n }\n }\n return isRect ? Optional.some(bounds) : Optional.none();\n };\n var getBounds = function (detailA, detailB) {\n return bounds(Math.min(detailA.row, detailB.row), Math.min(detailA.column, detailB.column), Math.max(detailA.row + detailA.rowspan - 1, detailB.row + detailB.rowspan - 1), Math.max(detailA.column + detailA.colspan - 1, detailB.column + detailB.colspan - 1));\n };\n var getAnyBox = function (warehouse, startCell, finishCell) {\n var startCoords = Warehouse.findItem(warehouse, startCell, eq$1);\n var finishCoords = Warehouse.findItem(warehouse, finishCell, eq$1);\n return startCoords.bind(function (sc) {\n return finishCoords.map(function (fc) {\n return getBounds(sc, fc);\n });\n });\n };\n var getBox$1 = function (warehouse, startCell, finishCell) {\n return getAnyBox(warehouse, startCell, finishCell).bind(function (bounds) {\n return isRectangular(warehouse, bounds);\n });\n };\n var moveBy$1 = function (warehouse, cell, row, column) {\n return Warehouse.findItem(warehouse, cell, eq$1).bind(function (detail) {\n var startRow = row > 0 ? detail.row + detail.rowspan - 1 : detail.row;\n var startCol = column > 0 ? detail.column + detail.colspan - 1 : detail.column;\n var dest = Warehouse.getAt(warehouse, startRow + row, startCol + column);\n return dest.map(function (d) {\n return d.element;\n });\n });\n };\n var intercepts$1 = function (warehouse, start, finish) {\n return getAnyBox(warehouse, start, finish).map(function (bounds) {\n var inside = Warehouse.filterItems(warehouse, curry(inSelection, bounds));\n return map$1(inside, function (detail) {\n return detail.element;\n });\n });\n };\n var parentCell = function (warehouse, innerCell) {\n var isContainedBy = function (c1, c2) {\n return contains$1(c2, c1);\n };\n return Warehouse.findItem(warehouse, innerCell, isContainedBy).map(function (detail) {\n return detail.element;\n });\n };\n var moveBy = function (cell, deltaRow, deltaColumn) {\n return table(cell).bind(function (table) {\n var warehouse = getWarehouse(table);\n return moveBy$1(warehouse, cell, deltaRow, deltaColumn);\n });\n };\n var intercepts = function (table, first, last) {\n var warehouse = getWarehouse(table);\n return intercepts$1(warehouse, first, last);\n };\n var nestedIntercepts = function (table, first, firstTable, last, lastTable) {\n var warehouse = getWarehouse(table);\n var optStartCell = eq$1(table, firstTable) ? Optional.some(first) : parentCell(warehouse, first);\n var optLastCell = eq$1(table, lastTable) ? Optional.some(last) : parentCell(warehouse, last);\n return optStartCell.bind(function (startCell) { return optLastCell.bind(function (lastCell) { return intercepts$1(warehouse, startCell, lastCell); }); });\n };\n var getBox = function (table, first, last) {\n var warehouse = getWarehouse(table);\n return getBox$1(warehouse, first, last);\n };\n var getWarehouse = Warehouse.fromTable;\n var TagBoundaries = [\n 'body',\n 'p',\n 'div',\n 'article',\n 'aside',\n 'figcaption',\n 'figure',\n 'footer',\n 'header',\n 'nav',\n 'section',\n 'ol',\n 'ul',\n 'li',\n 'table',\n 'thead',\n 'tbody',\n 'tfoot',\n 'caption',\n 'tr',\n 'td',\n 'th',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'pre',\n 'address'\n ];\n var DomUniverse = function () {\n var clone = function (element) {\n return SugarElement.fromDom(element.dom.cloneNode(false));\n };\n var document = function (element) { return documentOrOwner(element).dom; };\n var isBoundary = function (element) {\n if (!isElement(element)) {\n return false;\n }\n if (name(element) === 'body') {\n return true;\n }\n return contains$2(TagBoundaries, name(element));\n };\n var isEmptyTag = function (element) {\n if (!isElement(element)) {\n return false;\n }\n return contains$2([\n 'br',\n 'img',\n 'hr',\n 'input'\n ], name(element));\n };\n var isNonEditable = function (element) { return isElement(element) && get$b(element, 'contenteditable') === 'false'; };\n var comparePosition = function (element, other) {\n return element.dom.compareDocumentPosition(other.dom);\n };\n var copyAttributesTo = function (source, destination) {\n var as = clone$2(source);\n setAll$1(destination, as);\n };\n var isSpecial = function (element) {\n var tag = name(element);\n return contains$2([\n 'script',\n 'noscript',\n 'iframe',\n 'noframes',\n 'noembed',\n 'title',\n 'style',\n 'textarea',\n 'xmp'\n ], tag);\n };\n var getLanguage = function (element) { return isElement(element) ? getOpt(element, 'lang') : Optional.none(); };\n return {\n up: constant({\n selector: ancestor$1,\n closest: closest$1,\n predicate: ancestor$2,\n all: parents\n }),\n down: constant({\n selector: descendants,\n predicate: descendants$1\n }),\n styles: constant({\n get: get$a,\n getRaw: getRaw$2,\n set: set$1,\n remove: remove$5\n }),\n attrs: constant({\n get: get$b,\n set: set$2,\n remove: remove$7,\n copyTo: copyAttributesTo\n }),\n insert: constant({\n before: before$3,\n after: after$5,\n afterAll: after$4,\n append: append$1,\n appendAll: append,\n prepend: prepend,\n wrap: wrap\n }),\n remove: constant({\n unwrap: unwrap,\n remove: remove$6\n }),\n create: constant({\n nu: SugarElement.fromTag,\n clone: clone,\n text: SugarElement.fromText\n }),\n query: constant({\n comparePosition: comparePosition,\n prevSibling: prevSibling,\n nextSibling: nextSibling\n }),\n property: constant({\n children: children$2,\n name: name,\n parent: parent,\n document: document,\n isText: isText,\n isComment: isComment,\n isElement: isElement,\n isSpecial: isSpecial,\n getLanguage: getLanguage,\n getText: get$6,\n setText: set,\n isBoundary: isBoundary,\n isEmptyTag: isEmptyTag,\n isNonEditable: isNonEditable\n }),\n eq: eq$1,\n is: is$1\n };\n };\n var all = function (universe, look, elements, f) {\n var head = elements[0];\n var tail = elements.slice(1);\n return f(universe, look, head, tail);\n };\n var oneAll = function (universe, look, elements) {\n return elements.length > 0 ? all(universe, look, elements, unsafeOne) : Optional.none();\n };\n var unsafeOne = function (universe, look, head, tail) {\n var start = look(universe, head);\n return foldr(tail, function (b, a) {\n var current = look(universe, a);\n return commonElement(universe, b, current);\n }, start);\n };\n var commonElement = function (universe, start, end) {\n return start.bind(function (s) {\n return end.filter(curry(universe.eq, s));\n });\n };\n var eq = function (universe, item) {\n return curry(universe.eq, item);\n };\n var ancestors$2 = function (universe, start, end, isRoot) {\n if (isRoot === void 0) { isRoot = never; }\n var ps1 = [start].concat(universe.up().all(start));\n var ps2 = [end].concat(universe.up().all(end));\n var prune = function (path) {\n var index = findIndex(path, isRoot);\n return index.fold(function () {\n return path;\n }, function (ind) {\n return path.slice(0, ind + 1);\n });\n };\n var pruned1 = prune(ps1);\n var pruned2 = prune(ps2);\n var shared = find$1(pruned1, function (x) {\n return exists(pruned2, eq(universe, x));\n });\n return {\n firstpath: pruned1,\n secondpath: pruned2,\n shared: shared\n };\n };\n var sharedOne$1 = oneAll;\n var ancestors$1 = ancestors$2;\n var universe$3 = DomUniverse();\n var sharedOne = function (look, elements) {\n return sharedOne$1(universe$3, function (_universe, element) {\n return look(element);\n }, elements);\n };\n var ancestors = function (start, finish, isRoot) {\n return ancestors$1(universe$3, start, finish, isRoot);\n };\n var lookupTable = function (container) {\n return ancestor$1(container, 'table');\n };\n var identify = function (start, finish, isRoot) {\n var getIsRoot = function (rootTable) {\n return function (element) {\n return isRoot !== undefined && isRoot(element) || eq$1(element, rootTable);\n };\n };\n if (eq$1(start, finish)) {\n return Optional.some({\n boxes: Optional.some([start]),\n start: start,\n finish: finish\n });\n }\n else {\n return lookupTable(start).bind(function (startTable) {\n return lookupTable(finish).bind(function (finishTable) {\n if (eq$1(startTable, finishTable)) {\n return Optional.some({\n boxes: intercepts(startTable, start, finish),\n start: start,\n finish: finish\n });\n }\n else if (contains$1(startTable, finishTable)) {\n var ancestorCells = ancestors$3(finish, 'td,th', getIsRoot(startTable));\n var finishCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : finish;\n return Optional.some({\n boxes: nestedIntercepts(startTable, start, startTable, finish, finishTable),\n start: start,\n finish: finishCell\n });\n }\n else if (contains$1(finishTable, startTable)) {\n var ancestorCells = ancestors$3(start, 'td,th', getIsRoot(finishTable));\n var startCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : start;\n return Optional.some({\n boxes: nestedIntercepts(finishTable, start, startTable, finish, finishTable),\n start: start,\n finish: startCell\n });\n }\n else {\n return ancestors(start, finish).shared.bind(function (lca) {\n return closest$1(lca, 'table', isRoot).bind(function (lcaTable) {\n var finishAncestorCells = ancestors$3(finish, 'td,th', getIsRoot(lcaTable));\n var finishCell = finishAncestorCells.length > 0 ? finishAncestorCells[finishAncestorCells.length - 1] : finish;\n var startAncestorCells = ancestors$3(start, 'td,th', getIsRoot(lcaTable));\n var startCell = startAncestorCells.length > 0 ? startAncestorCells[startAncestorCells.length - 1] : start;\n return Optional.some({\n boxes: nestedIntercepts(lcaTable, start, startTable, finish, finishTable),\n start: startCell,\n finish: finishCell\n });\n });\n });\n }\n });\n });\n }\n };\n var retrieve$1 = function (container, selector) {\n var sels = descendants(container, selector);\n return sels.length > 0 ? Optional.some(sels) : Optional.none();\n };\n var getLast = function (boxes, lastSelectedSelector) {\n return find$1(boxes, function (box) {\n return is$2(box, lastSelectedSelector);\n });\n };\n var getEdges = function (container, firstSelectedSelector, lastSelectedSelector) {\n return descendant(container, firstSelectedSelector).bind(function (first) {\n return descendant(container, lastSelectedSelector).bind(function (last) {\n return sharedOne(lookupTable, [\n first,\n last\n ]).map(function (table) {\n return {\n first: first,\n last: last,\n table: table\n };\n });\n });\n });\n };\n var expandTo = function (finish, firstSelectedSelector) {\n return ancestor$1(finish, 'table').bind(function (table) {\n return descendant(table, firstSelectedSelector).bind(function (start) {\n return identify(start, finish).bind(function (identified) {\n return identified.boxes.map(function (boxes) {\n return {\n boxes: boxes,\n start: identified.start,\n finish: identified.finish\n };\n });\n });\n });\n });\n };\n var shiftSelection = function (boxes, deltaRow, deltaColumn, firstSelectedSelector, lastSelectedSelector) {\n return getLast(boxes, lastSelectedSelector).bind(function (last) {\n return moveBy(last, deltaRow, deltaColumn).bind(function (finish) {\n return expandTo(finish, firstSelectedSelector);\n });\n });\n };\n var retrieve = function (container, selector) {\n return retrieve$1(container, selector);\n };\n var retrieveBox = function (container, firstSelectedSelector, lastSelectedSelector) {\n return getEdges(container, firstSelectedSelector, lastSelectedSelector).bind(function (edges) {\n var isRoot = function (ancestor) {\n return eq$1(container, ancestor);\n };\n var sectionSelector = 'thead,tfoot,tbody,table';\n var firstAncestor = ancestor$1(edges.first, sectionSelector, isRoot);\n var lastAncestor = ancestor$1(edges.last, sectionSelector, isRoot);\n return firstAncestor.bind(function (fA) {\n return lastAncestor.bind(function (lA) {\n return eq$1(fA, lA) ? getBox(edges.table, edges.first, edges.last) : Optional.none();\n });\n });\n });\n };\n var selection = identity;\n var unmergable = function (selectedCells) {\n var hasSpan = function (elem, type) { return getOpt(elem, type).exists(function (span) { return parseInt(span, 10) > 1; }); };\n var hasRowOrColSpan = function (elem) { return hasSpan(elem, 'rowspan') || hasSpan(elem, 'colspan'); };\n return selectedCells.length > 0 && forall(selectedCells, hasRowOrColSpan) ? Optional.some(selectedCells) : Optional.none();\n };\n var mergable = function (table, selectedCells, ephemera) {\n if (selectedCells.length <= 1) {\n return Optional.none();\n }\n else {\n return retrieveBox(table, ephemera.firstSelectedSelector, ephemera.lastSelectedSelector).map(function (bounds) { return ({\n bounds: bounds,\n cells: selectedCells\n }); });\n }\n };\n var strSelected = 'data-mce-selected';\n var strSelectedSelector = 'td[' + strSelected + '],th[' + strSelected + ']';\n var strAttributeSelector = '[' + strSelected + ']';\n var strFirstSelected = 'data-mce-first-selected';\n var strFirstSelectedSelector = 'td[' + strFirstSelected + '],th[' + strFirstSelected + ']';\n var strLastSelected = 'data-mce-last-selected';\n var strLastSelectedSelector = 'td[' + strLastSelected + '],th[' + strLastSelected + ']';\n var attributeSelector = strAttributeSelector;\n var ephemera = {\n selected: strSelected,\n selectedSelector: strSelectedSelector,\n firstSelected: strFirstSelected,\n firstSelectedSelector: strFirstSelectedSelector,\n lastSelected: strLastSelected,\n lastSelectedSelector: strLastSelectedSelector\n };\n var forMenu = function (selectedCells, table, cell) { return ({\n element: cell,\n mergable: mergable(table, selectedCells, ephemera),\n unmergable: unmergable(selectedCells),\n selection: selection(selectedCells)\n }); };\n var paste = function (element, clipboard, generators) { return ({\n element: element,\n clipboard: clipboard,\n generators: generators\n }); };\n var pasteRows = function (selectedCells, _cell, clipboard, generators) { return ({\n selection: selection(selectedCells),\n clipboard: clipboard,\n generators: generators\n }); };\n var getSelectionCellFallback = function (element) { return table(element).bind(function (table) { return retrieve(table, ephemera.firstSelectedSelector); }).fold(constant(element), function (cells) { return cells[0]; }); };\n var getSelectionFromSelector = function (selector) { return function (initCell, isRoot) {\n var cellName = name(initCell);\n var cell = cellName === 'col' || cellName === 'colgroup' ? getSelectionCellFallback(initCell) : initCell;\n return closest$1(cell, selector, isRoot);\n }; };\n var getSelectionCellOrCaption = getSelectionFromSelector('th,td,caption');\n var getSelectionCell = getSelectionFromSelector('th,td');\n var getCellsFromSelection = function (editor) { return fromDom(editor.model.table.getSelectedCells()); };\n var getCellsFromFakeSelection = function (editor) { return filter$2(getCellsFromSelection(editor), function (cell) { return is$2(cell, ephemera.selectedSelector); }); };\n var extractSelected = function (cells) {\n return table(cells[0]).map(function (table) {\n var replica = extract$1(table, attributeSelector);\n removeDataStyle(replica);\n return [replica];\n });\n };\n var serializeElements = function (editor, elements) { return map$1(elements, function (elm) { return editor.selection.serializer.serialize(elm.dom, {}); }).join(''); };\n var getTextContent = function (elements) { return map$1(elements, function (element) { return element.dom.innerText; }).join(''); };\n var registerEvents = function (editor, actions) {\n editor.on('BeforeGetContent', function (e) {\n var multiCellContext = function (cells) {\n e.preventDefault();\n extractSelected(cells).each(function (elements) {\n e.content = e.format === 'text' ? getTextContent(elements) : serializeElements(editor, elements);\n });\n };\n if (e.selection === true) {\n var cells_3 = getCellsFromFakeSelection(editor);\n if (cells_3.length >= 1) {\n multiCellContext(cells_3);\n }\n }\n });\n editor.on('BeforeSetContent', function (e) {\n if (e.selection === true && e.paste === true) {\n var selectedCells = getCellsFromSelection(editor);\n head(selectedCells).each(function (cell) {\n table(cell).each(function (table) {\n var elements = filter$2(fromHtml(e.content), function (content) {\n return name(content) !== 'meta';\n });\n var isTable = isTag('table');\n if (shouldMergeContentOnPaste(editor) && elements.length === 1 && isTable(elements[0])) {\n e.preventDefault();\n var doc = SugarElement.fromDom(editor.getDoc());\n var generators = paste$1(doc);\n var targets = paste(cell, elements[0], generators);\n actions.pasteCells(table, targets).each(function () {\n editor.focus();\n });\n }\n });\n });\n }\n });\n };\n var point = function (element, offset) { return ({\n element: element,\n offset: offset\n }); };\n var scan$1 = function (universe, element, direction) {\n if (universe.property().isText(element) && universe.property().getText(element).trim().length === 0 || universe.property().isComment(element)) {\n return direction(element).bind(function (elem) {\n return scan$1(universe, elem, direction).orThunk(function () {\n return Optional.some(elem);\n });\n });\n }\n else {\n return Optional.none();\n }\n };\n var toEnd = function (universe, element) {\n if (universe.property().isText(element)) {\n return universe.property().getText(element).length;\n }\n var children = universe.property().children(element);\n return children.length;\n };\n var freefallRtl$2 = function (universe, element) {\n var candidate = scan$1(universe, element, universe.query().prevSibling).getOr(element);\n if (universe.property().isText(candidate)) {\n return point(candidate, toEnd(universe, candidate));\n }\n var children = universe.property().children(candidate);\n return children.length > 0 ? freefallRtl$2(universe, children[children.length - 1]) : point(candidate, toEnd(universe, candidate));\n };\n var freefallRtl$1 = freefallRtl$2;\n var universe$2 = DomUniverse();\n var freefallRtl = function (element) {\n return freefallRtl$1(universe$2, element);\n };\n var halve = function (main, other) {\n if (!hasColspan(main)) {\n var width_1 = getGenericWidth(main);\n width_1.each(function (w) {\n var newWidth = w.value / 2;\n setGenericWidth(main, newWidth, w.unit);\n setGenericWidth(other, newWidth, w.unit);\n });\n }\n };\n var zero = function (array) { return map$1(array, constant(0)); };\n var surround = function (sizes, startIndex, endIndex, results, f) { return f(sizes.slice(0, startIndex)).concat(results).concat(f(sizes.slice(endIndex))); };\n var clampDeltaHelper = function (predicate) { return function (sizes, index, delta, minCellSize) {\n if (!predicate(delta)) {\n return delta;\n }\n else {\n var newSize = Math.max(minCellSize, sizes[index] - Math.abs(delta));\n var diff = Math.abs(newSize - sizes[index]);\n return delta >= 0 ? diff : -diff;\n }\n }; };\n var clampNegativeDelta = clampDeltaHelper(function (delta) { return delta < 0; });\n var clampDelta = clampDeltaHelper(always);\n var resizeTable = function () {\n var calcFixedDeltas = function (sizes, index, next, delta, minCellSize) {\n var clampedDelta = clampNegativeDelta(sizes, index, delta, minCellSize);\n return surround(sizes, index, next + 1, [\n clampedDelta,\n 0\n ], zero);\n };\n var calcRelativeDeltas = function (sizes, index, delta, minCellSize) {\n var ratio = (100 + delta) / 100;\n var newThis = Math.max(minCellSize, (sizes[index] + delta) / ratio);\n return map$1(sizes, function (size, idx) {\n var newSize = idx === index ? newThis : size / ratio;\n return newSize - size;\n });\n };\n var calcLeftEdgeDeltas = function (sizes, index, next, delta, minCellSize, isRelative) {\n if (isRelative) {\n return calcRelativeDeltas(sizes, index, delta, minCellSize);\n }\n else {\n return calcFixedDeltas(sizes, index, next, delta, minCellSize);\n }\n };\n var calcMiddleDeltas = function (sizes, _prev, index, next, delta, minCellSize, isRelative) { return calcLeftEdgeDeltas(sizes, index, next, delta, minCellSize, isRelative); };\n var resizeTable = function (resizer, delta) { return resizer(delta); };\n var calcRightEdgeDeltas = function (sizes, _prev, index, delta, minCellSize, isRelative) {\n if (isRelative) {\n return calcRelativeDeltas(sizes, index, delta, minCellSize);\n }\n else {\n var clampedDelta = clampNegativeDelta(sizes, index, delta, minCellSize);\n return zero(sizes.slice(0, index)).concat([clampedDelta]);\n }\n };\n var calcRedestributedWidths = function (sizes, totalWidth, pixelDelta, isRelative) {\n if (isRelative) {\n var tableWidth = totalWidth + pixelDelta;\n var ratio_1 = tableWidth / totalWidth;\n var newSizes = map$1(sizes, function (size) { return size / ratio_1; });\n return {\n delta: ratio_1 * 100 - 100,\n newSizes: newSizes\n };\n }\n else {\n return {\n delta: pixelDelta,\n newSizes: sizes\n };\n }\n };\n return {\n resizeTable: resizeTable,\n clampTableDelta: clampNegativeDelta,\n calcLeftEdgeDeltas: calcLeftEdgeDeltas,\n calcMiddleDeltas: calcMiddleDeltas,\n calcRightEdgeDeltas: calcRightEdgeDeltas,\n calcRedestributedWidths: calcRedestributedWidths\n };\n };\n var preserveTable = function () {\n var calcLeftEdgeDeltas = function (sizes, index, next, delta, minCellSize) {\n var idx = delta >= 0 ? next : index;\n var clampedDelta = clampDelta(sizes, idx, delta, minCellSize);\n return surround(sizes, index, next + 1, [\n clampedDelta,\n -clampedDelta\n ], zero);\n };\n var calcMiddleDeltas = function (sizes, _prev, index, next, delta, minCellSize) { return calcLeftEdgeDeltas(sizes, index, next, delta, minCellSize); };\n var resizeTable = function (resizer, delta, isLastColumn) {\n if (isLastColumn) {\n resizer(delta);\n }\n };\n var calcRightEdgeDeltas = function (sizes, _prev, _index, delta, _minCellSize, isRelative) {\n if (isRelative) {\n return zero(sizes);\n }\n else {\n var diff = delta / sizes.length;\n return map$1(sizes, constant(diff));\n }\n };\n var clampTableDelta = function (sizes, index, delta, minCellSize, isLastColumn) {\n if (isLastColumn) {\n if (delta >= 0) {\n return delta;\n }\n else {\n var maxDelta = foldl(sizes, function (a, b) { return a + b - minCellSize; }, 0);\n return Math.max(-maxDelta, delta);\n }\n }\n else {\n return clampNegativeDelta(sizes, index, delta, minCellSize);\n }\n };\n var calcRedestributedWidths = function (sizes, _totalWidth, _pixelDelta, _isRelative) { return ({\n delta: 0,\n newSizes: sizes\n }); };\n return {\n resizeTable: resizeTable,\n clampTableDelta: clampTableDelta,\n calcLeftEdgeDeltas: calcLeftEdgeDeltas,\n calcMiddleDeltas: calcMiddleDeltas,\n calcRightEdgeDeltas: calcRightEdgeDeltas,\n calcRedestributedWidths: calcRedestributedWidths\n };\n };\n var getGridSize = function (table) {\n var warehouse = Warehouse.fromTable(table);\n return warehouse.grid;\n };\n var isHeaderCell = isTag('th');\n var isHeaderCells = function (cells) { return forall(cells, function (cell) { return isHeaderCell(cell.element); }); };\n var getRowHeaderType = function (isHeaderRow, isHeaderCells) {\n if (isHeaderRow && isHeaderCells) {\n return 'sectionCells';\n }\n else if (isHeaderRow) {\n return 'section';\n }\n else {\n return 'cells';\n }\n };\n var getRowType = function (row) {\n var isHeaderRow = row.section === 'thead';\n var isHeaderCells = is(findCommonCellType(row.cells), 'th');\n if (row.section === 'tfoot') {\n return { type: 'footer' };\n }\n else if (isHeaderRow || isHeaderCells) {\n return {\n type: 'header',\n subType: getRowHeaderType(isHeaderRow, isHeaderCells)\n };\n }\n else {\n return { type: 'body' };\n }\n };\n var findCommonCellType = function (cells) {\n var headerCells = filter$2(cells, function (cell) { return isHeaderCell(cell.element); });\n if (headerCells.length === 0) {\n return Optional.some('td');\n }\n else if (headerCells.length === cells.length) {\n return Optional.some('th');\n }\n else {\n return Optional.none();\n }\n };\n var findCommonRowType = function (rows) {\n var rowTypes = map$1(rows, function (row) { return getRowType(row).type; });\n var hasHeader = contains$2(rowTypes, 'header');\n var hasFooter = contains$2(rowTypes, 'footer');\n if (!hasHeader && !hasFooter) {\n return Optional.some('body');\n }\n else {\n var hasBody = contains$2(rowTypes, 'body');\n if (hasHeader && !hasBody && !hasFooter) {\n return Optional.some('header');\n }\n else if (!hasHeader && !hasBody && hasFooter) {\n return Optional.some('footer');\n }\n else {\n return Optional.none();\n }\n }\n };\n var findTableRowHeaderType = function (warehouse) { return findMap(warehouse.all, function (row) {\n var rowType = getRowType(row);\n return rowType.type === 'header' ? Optional.from(rowType.subType) : Optional.none();\n }); };\n var transformCell = function (cell, comparator, substitution) { return elementnew(substitution(cell.element, comparator), true, cell.isLocked); };\n var transformRow = function (row, section) { return row.section !== section ? rowcells(row.element, row.cells, section, row.isNew) : row; };\n var section = function () { return ({\n transformRow: transformRow,\n transformCell: function (cell, comparator, substitution) {\n var newCell = substitution(cell.element, comparator);\n var fixedCell = name(newCell) !== 'td' ? mutate$1(newCell, 'td') : newCell;\n return elementnew(fixedCell, cell.isNew, cell.isLocked);\n }\n }); };\n var sectionCells = function () { return ({\n transformRow: transformRow,\n transformCell: transformCell\n }); };\n var cells = function () { return ({\n transformRow: function (row, section) {\n var newSection = section === 'thead' ? 'tbody' : section;\n return transformRow(row, newSection);\n },\n transformCell: transformCell\n }); };\n var fallback = function () { return ({\n transformRow: identity,\n transformCell: transformCell\n }); };\n var getTableSectionType = function (table, fallback) {\n var warehouse = Warehouse.fromTable(table);\n var type = findTableRowHeaderType(warehouse).getOr(fallback);\n switch (type) {\n case 'section':\n return section();\n case 'sectionCells':\n return sectionCells();\n case 'cells':\n return cells();\n }\n };\n var TableSection = {\n getTableSectionType: getTableSectionType,\n section: section,\n sectionCells: sectionCells,\n cells: cells,\n fallback: fallback\n };\n var setIfNot = function (element, property, value, ignore) {\n if (value === ignore) {\n remove$7(element, property);\n }\n else {\n set$2(element, property, value);\n }\n };\n var insert$1 = function (table, selector, element) {\n last$2(children(table, selector)).fold(function () { return prepend(table, element); }, function (child) { return after$5(child, element); });\n };\n var generateSection = function (table, sectionName) {\n var section = child(table, sectionName).getOrThunk(function () {\n var newSection = SugarElement.fromTag(sectionName, owner(table).dom);\n if (sectionName === 'thead') {\n insert$1(table, 'caption,colgroup', newSection);\n }\n else if (sectionName === 'colgroup') {\n insert$1(table, 'caption', newSection);\n }\n else {\n append$1(table, newSection);\n }\n return newSection;\n });\n empty(section);\n return section;\n };\n var render$1 = function (table, grid) {\n var newRows = [];\n var newCells = [];\n var syncRows = function (gridSection) { return map$1(gridSection, function (row) {\n if (row.isNew) {\n newRows.push(row.element);\n }\n var tr = row.element;\n empty(tr);\n each$2(row.cells, function (cell) {\n if (cell.isNew) {\n newCells.push(cell.element);\n }\n setIfNot(cell.element, 'colspan', cell.colspan, 1);\n setIfNot(cell.element, 'rowspan', cell.rowspan, 1);\n append$1(tr, cell.element);\n });\n return tr;\n }); };\n var syncColGroup = function (gridSection) { return bind$2(gridSection, function (colGroup) { return map$1(colGroup.cells, function (col) {\n setIfNot(col.element, 'span', col.colspan, 1);\n return col.element;\n }); }); };\n var renderSection = function (gridSection, sectionName) {\n var section = generateSection(table, sectionName);\n var sync = sectionName === 'colgroup' ? syncColGroup : syncRows;\n var sectionElems = sync(gridSection);\n append(section, sectionElems);\n };\n var removeSection = function (sectionName) {\n child(table, sectionName).each(remove$6);\n };\n var renderOrRemoveSection = function (gridSection, sectionName) {\n if (gridSection.length > 0) {\n renderSection(gridSection, sectionName);\n }\n else {\n removeSection(sectionName);\n }\n };\n var headSection = [];\n var bodySection = [];\n var footSection = [];\n var columnGroupsSection = [];\n each$2(grid, function (row) {\n switch (row.section) {\n case 'thead':\n headSection.push(row);\n break;\n case 'tbody':\n bodySection.push(row);\n break;\n case 'tfoot':\n footSection.push(row);\n break;\n case 'colgroup':\n columnGroupsSection.push(row);\n break;\n }\n });\n renderOrRemoveSection(columnGroupsSection, 'colgroup');\n renderOrRemoveSection(headSection, 'thead');\n renderOrRemoveSection(bodySection, 'tbody');\n renderOrRemoveSection(footSection, 'tfoot');\n return {\n newRows: newRows,\n newCells: newCells\n };\n };\n var copy = function (grid) { return map$1(grid, function (row) {\n var tr = shallow(row.element);\n each$2(row.cells, function (cell) {\n var clonedCell = deep(cell.element);\n setIfNot(clonedCell, 'colspan', cell.colspan, 1);\n setIfNot(clonedCell, 'rowspan', cell.rowspan, 1);\n append$1(tr, clonedCell);\n });\n return tr;\n }); };\n var getColumn = function (grid, index) {\n return map$1(grid, function (row) {\n return getCell(row, index);\n });\n };\n var getRow = function (grid, index) {\n return grid[index];\n };\n var findDiff = function (xs, comp) {\n if (xs.length === 0) {\n return 0;\n }\n var first = xs[0];\n var index = findIndex(xs, function (x) {\n return !comp(first.element, x.element);\n });\n return index.getOr(xs.length);\n };\n var subgrid = function (grid, row, column, comparator) {\n var gridRow = getRow(grid, row);\n var isColRow = gridRow.section === 'colgroup';\n var colspan = findDiff(gridRow.cells.slice(column), comparator);\n var rowspan = isColRow ? 1 : findDiff(getColumn(grid.slice(row), column), comparator);\n return {\n colspan: colspan,\n rowspan: rowspan\n };\n };\n var toDetails = function (grid, comparator) {\n var seen = map$1(grid, function (row) { return map$1(row.cells, never); });\n var updateSeen = function (rowIndex, columnIndex, rowspan, colspan) {\n for (var row_1 = rowIndex; row_1 < rowIndex + rowspan; row_1++) {\n for (var column = columnIndex; column < columnIndex + colspan; column++) {\n seen[row_1][column] = true;\n }\n }\n };\n return map$1(grid, function (row, rowIndex) {\n var details = bind$2(row.cells, function (cell, columnIndex) {\n if (seen[rowIndex][columnIndex] === false) {\n var result = subgrid(grid, rowIndex, columnIndex, comparator);\n updateSeen(rowIndex, columnIndex, result.rowspan, result.colspan);\n return [detailnew(cell.element, result.rowspan, result.colspan, cell.isNew)];\n }\n else {\n return [];\n }\n });\n return rowdetailnew(row.element, details, row.section, row.isNew);\n });\n };\n var toGrid = function (warehouse, generators, isNew) {\n var grid = [];\n each$2(warehouse.colgroups, function (colgroup) {\n var colgroupCols = [];\n for (var columnIndex = 0; columnIndex < warehouse.grid.columns; columnIndex++) {\n var element = Warehouse.getColumnAt(warehouse, columnIndex).map(function (column) { return elementnew(column.element, isNew, false); }).getOrThunk(function () { return elementnew(generators.colGap(), true, false); });\n colgroupCols.push(element);\n }\n grid.push(rowcells(colgroup.element, colgroupCols, 'colgroup', isNew));\n });\n for (var rowIndex = 0; rowIndex < warehouse.grid.rows; rowIndex++) {\n var rowCells = [];\n for (var columnIndex = 0; columnIndex < warehouse.grid.columns; columnIndex++) {\n var element = Warehouse.getAt(warehouse, rowIndex, columnIndex).map(function (item) { return elementnew(item.element, isNew, item.isLocked); }).getOrThunk(function () { return elementnew(generators.gap(), true, false); });\n rowCells.push(element);\n }\n var rowDetail = warehouse.all[rowIndex];\n var row_2 = rowcells(rowDetail.element, rowCells, rowDetail.section, isNew);\n grid.push(row_2);\n }\n return grid;\n };\n var fromWarehouse = function (warehouse, generators) { return toGrid(warehouse, generators, false); };\n var toDetailList = function (grid) { return toDetails(grid, eq$1); };\n var findInWarehouse = function (warehouse, element) { return findMap(warehouse.all, function (r) { return find$1(r.cells, function (e) { return eq$1(element, e.element); }); }); };\n var extractCells = function (warehouse, target, predicate) {\n var details = map$1(target.selection, function (cell$1) {\n return cell(cell$1).bind(function (lc) { return findInWarehouse(warehouse, lc); }).filter(predicate);\n });\n var cells = cat(details);\n return someIf(cells.length > 0, cells);\n };\n var run = function (operation, extract, adjustment, postAction, genWrappers) { return function (table, target, generators, behaviours) {\n var warehouse = Warehouse.fromTable(table);\n var tableSection = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.section).getOrThunk(TableSection.fallback);\n var output = extract(warehouse, target).map(function (info) {\n var model = fromWarehouse(warehouse, generators);\n var result = operation(model, info, eq$1, genWrappers(generators), tableSection);\n var lockedColumns = getLockedColumnsFromGrid(result.grid);\n var grid = toDetailList(result.grid);\n return {\n info: info,\n grid: grid,\n cursor: result.cursor,\n lockedColumns: lockedColumns\n };\n });\n return output.bind(function (out) {\n var newElements = render$1(table, out.grid);\n var tableSizing = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.sizing).getOrThunk(function () { return TableSize.getTableSize(table); });\n var resizing = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.resize).getOrThunk(preserveTable);\n adjustment(table, out.grid, out.info, {\n sizing: tableSizing,\n resize: resizing,\n section: tableSection\n });\n postAction(table);\n remove$7(table, LOCKED_COL_ATTR);\n if (out.lockedColumns.length > 0) {\n set$2(table, LOCKED_COL_ATTR, out.lockedColumns.join(','));\n }\n return Optional.some({\n cursor: out.cursor,\n newRows: newElements.newRows,\n newCells: newElements.newCells\n });\n });\n }; };\n var onPaste = function (warehouse, target) { return cell(target.element).bind(function (cell) { return findInWarehouse(warehouse, cell).map(function (details) {\n var value = __assign(__assign({}, details), { generators: target.generators, clipboard: target.clipboard });\n return value;\n }); }); };\n var onPasteByEditor = function (warehouse, target) { return extractCells(warehouse, target, always).map(function (cells) { return ({\n cells: cells,\n generators: target.generators,\n clipboard: target.clipboard\n }); }); };\n var onMergable = function (_warehouse, target) { return target.mergable; };\n var onUnmergable = function (_warehouse, target) { return target.unmergable; };\n var onCells = function (warehouse, target) { return extractCells(warehouse, target, always); };\n var onUnlockedCells = function (warehouse, target) { return extractCells(warehouse, target, function (detail) { return !detail.isLocked; }); };\n var isUnlockedTableCell = function (warehouse, cell) { return findInWarehouse(warehouse, cell).exists(function (detail) { return !detail.isLocked; }); };\n var allUnlocked = function (warehouse, cells) { return forall(cells, function (cell) { return isUnlockedTableCell(warehouse, cell); }); };\n var onUnlockedMergable = function (warehouse, target) { return onMergable(warehouse, target).filter(function (mergeable) { return allUnlocked(warehouse, mergeable.cells); }); };\n var onUnlockedUnmergable = function (warehouse, target) { return onUnmergable(warehouse, target).filter(function (cells) { return allUnlocked(warehouse, cells); }); };\n var merge$2 = function (grid, bounds, comparator, substitution) {\n var rows = extractGridDetails(grid).rows;\n if (rows.length === 0) {\n return grid;\n }\n for (var i = bounds.startRow; i <= bounds.finishRow; i++) {\n for (var j = bounds.startCol; j <= bounds.finishCol; j++) {\n var row_3 = rows[i];\n var isLocked = getCell(row_3, j).isLocked;\n mutateCell(row_3, j, elementnew(substitution(), false, isLocked));\n }\n }\n return grid;\n };\n var unmerge = function (grid, target, comparator, substitution) {\n var rows = extractGridDetails(grid).rows;\n var first = true;\n for (var i = 0; i < rows.length; i++) {\n for (var j = 0; j < cellLength(rows[0]); j++) {\n var row_4 = rows[i];\n var currentCell = getCell(row_4, j);\n var currentCellElm = currentCell.element;\n var isToReplace = comparator(currentCellElm, target);\n if (isToReplace && !first) {\n mutateCell(row_4, j, elementnew(substitution(), true, currentCell.isLocked));\n }\n else if (isToReplace) {\n first = false;\n }\n }\n }\n return grid;\n };\n var uniqueCells = function (row, comparator) {\n return foldl(row, function (rest, cell) {\n return exists(rest, function (currentCell) {\n return comparator(currentCell.element, cell.element);\n }) ? rest : rest.concat([cell]);\n }, []);\n };\n var splitCols = function (grid, index, comparator, substitution) {\n if (index > 0 && index < grid[0].cells.length) {\n each$2(grid, function (row) {\n var prevCell = row.cells[index - 1];\n var offset = 0;\n var substitute = substitution();\n while (row.cells.length > index + offset && comparator(prevCell.element, row.cells[index + offset].element)) {\n mutateCell(row, index + offset, elementnew(substitute, true, row.cells[index + offset].isLocked));\n offset++;\n }\n });\n }\n return grid;\n };\n var splitRows = function (grid, index, comparator, substitution) {\n var rows = extractGridDetails(grid).rows;\n if (index > 0 && index < rows.length) {\n var rowPrevCells = rows[index - 1].cells;\n var cells_4 = uniqueCells(rowPrevCells, comparator);\n each$2(cells_4, function (cell) {\n var replacement = Optional.none();\n for (var i = index; i < rows.length; i++) {\n var _loop_1 = function (j) {\n var row_5 = rows[i];\n var current = getCell(row_5, j);\n var isToReplace = comparator(current.element, cell.element);\n if (isToReplace) {\n if (replacement.isNone()) {\n replacement = Optional.some(substitution());\n }\n replacement.each(function (sub) {\n mutateCell(row_5, j, elementnew(sub, true, current.isLocked));\n });\n }\n };\n for (var j = 0; j < cellLength(rows[0]); j++) {\n _loop_1(j);\n }\n }\n });\n }\n return grid;\n };\n var value$1 = function (value) {\n var applyHelper = function (fn) { return fn(value); };\n var constHelper = constant(value);\n var outputHelper = function () { return output; };\n var output = {\n tag: true,\n inner: value,\n fold: function (_onError, onValue) { return onValue(value); },\n isValue: always,\n isError: never,\n map: function (mapper) { return Result.value(mapper(value)); },\n mapError: outputHelper,\n bind: applyHelper,\n exists: applyHelper,\n forall: applyHelper,\n getOr: constHelper,\n or: outputHelper,\n getOrThunk: constHelper,\n orThunk: outputHelper,\n getOrDie: constHelper,\n each: function (fn) {\n fn(value);\n },\n toOptional: function () { return Optional.some(value); }\n };\n return output;\n };\n var error = function (error) {\n var outputHelper = function () { return output; };\n var output = {\n tag: false,\n inner: error,\n fold: function (onError, _onValue) { return onError(error); },\n isValue: never,\n isError: always,\n map: outputHelper,\n mapError: function (mapper) { return Result.error(mapper(error)); },\n bind: outputHelper,\n exists: never,\n forall: always,\n getOr: identity,\n or: identity,\n getOrThunk: apply,\n orThunk: apply,\n getOrDie: die(String(error)),\n each: noop,\n toOptional: Optional.none\n };\n return output;\n };\n var fromOption = function (optional, err) { return optional.fold(function () { return error(err); }, value$1); };\n var Result = {\n value: value$1,\n error: error,\n fromOption: fromOption\n };\n var measure = function (startAddress, gridA, gridB) {\n if (startAddress.row >= gridA.length || startAddress.column > cellLength(gridA[0])) {\n return Result.error('invalid start address out of table bounds, row: ' + startAddress.row + ', column: ' + startAddress.column);\n }\n var rowRemainder = gridA.slice(startAddress.row);\n var colRemainder = rowRemainder[0].cells.slice(startAddress.column);\n var colRequired = cellLength(gridB[0]);\n var rowRequired = gridB.length;\n return Result.value({\n rowDelta: rowRemainder.length - rowRequired,\n colDelta: colRemainder.length - colRequired\n });\n };\n var measureWidth = function (gridA, gridB) {\n var colLengthA = cellLength(gridA[0]);\n var colLengthB = cellLength(gridB[0]);\n return {\n rowDelta: 0,\n colDelta: colLengthA - colLengthB\n };\n };\n var measureHeight = function (gridA, gridB) {\n var rowLengthA = gridA.length;\n var rowLengthB = gridB.length;\n return {\n rowDelta: rowLengthA - rowLengthB,\n colDelta: 0\n };\n };\n var generateElements = function (amount, row, generators, isLocked) {\n var generator = row.section === 'colgroup' ? generators.col : generators.cell;\n return range$1(amount, function (idx) { return elementnew(generator(), true, isLocked(idx)); });\n };\n var rowFill = function (grid, amount, generators, lockedColumns) {\n var exampleRow = grid[grid.length - 1];\n return grid.concat(range$1(amount, function () {\n var generator = exampleRow.section === 'colgroup' ? generators.colgroup : generators.row;\n var row = clone(exampleRow, generator, identity);\n var elements = generateElements(row.cells.length, row, generators, function (idx) { return has$1(lockedColumns, idx.toString()); });\n return setCells(row, elements);\n }));\n };\n var colFill = function (grid, amount, generators, startIndex) { return map$1(grid, function (row) {\n var newChildren = generateElements(amount, row, generators, never);\n return addCells(row, startIndex, newChildren);\n }); };\n var lockedColFill = function (grid, generators, lockedColumns) { return map$1(grid, function (row) {\n return foldl(lockedColumns, function (acc, colNum) {\n var newChild = generateElements(1, row, generators, always)[0];\n return addCell(acc, colNum, newChild);\n }, row);\n }); };\n var tailor = function (gridA, delta, generators) {\n var fillCols = delta.colDelta < 0 ? colFill : identity;\n var fillRows = delta.rowDelta < 0 ? rowFill : identity;\n var lockedColumns = getLockedColumnsFromGrid(gridA);\n var gridWidth = cellLength(gridA[0]);\n var isLastColLocked = exists(lockedColumns, function (locked) { return locked === gridWidth - 1; });\n var modifiedCols = fillCols(gridA, Math.abs(delta.colDelta), generators, isLastColLocked ? gridWidth - 1 : gridWidth);\n var newLockedColumns = getLockedColumnsFromGrid(modifiedCols);\n return fillRows(modifiedCols, Math.abs(delta.rowDelta), generators, mapToObject(newLockedColumns, always));\n };\n var isSpanning = function (grid, row, col, comparator) {\n var candidate = getCell(grid[row], col);\n var matching = curry(comparator, candidate.element);\n var currentRow = grid[row];\n return grid.length > 1 && cellLength(currentRow) > 1 && (col > 0 && matching(getCellElement(currentRow, col - 1)) || col < currentRow.cells.length - 1 && matching(getCellElement(currentRow, col + 1)) || row > 0 && matching(getCellElement(grid[row - 1], col)) || row < grid.length - 1 && matching(getCellElement(grid[row + 1], col)));\n };\n var mergeTables = function (startAddress, gridA, gridBRows, generator, comparator, lockedColumns) {\n var startRow = startAddress.row;\n var startCol = startAddress.column;\n var mergeHeight = gridBRows.length;\n var mergeWidth = cellLength(gridBRows[0]);\n var endRow = startRow + mergeHeight;\n var endCol = startCol + mergeWidth + lockedColumns.length;\n var lockedColumnObj = mapToObject(lockedColumns, always);\n for (var r_2 = startRow; r_2 < endRow; r_2++) {\n var skippedCol = 0;\n for (var c = startCol; c < endCol; c++) {\n if (lockedColumnObj[c]) {\n skippedCol++;\n continue;\n }\n if (isSpanning(gridA, r_2, c, comparator)) {\n unmerge(gridA, getCellElement(gridA[r_2], c), comparator, generator.cell);\n }\n var gridBColIndex = c - startCol - skippedCol;\n var newCell = getCell(gridBRows[r_2 - startRow], gridBColIndex);\n var newCellElm = newCell.element;\n var replacement = generator.replace(newCellElm);\n mutateCell(gridA[r_2], c, elementnew(replacement, true, newCell.isLocked));\n }\n }\n return gridA;\n };\n var getValidStartAddress = function (currentStartAddress, grid, lockedColumns) {\n var gridColLength = cellLength(grid[0]);\n var adjustedRowAddress = extractGridDetails(grid).cols.length + currentStartAddress.row;\n var possibleColAddresses = range$1(gridColLength - currentStartAddress.column, function (num) { return num + currentStartAddress.column; });\n var validColAddress = find$1(possibleColAddresses, function (num) { return forall(lockedColumns, function (col) { return col !== num; }); }).getOr(gridColLength - 1);\n return {\n row: adjustedRowAddress,\n column: validColAddress\n };\n };\n var getLockedColumnsWithinBounds = function (startAddress, rows, lockedColumns) { return filter$2(lockedColumns, function (colNum) { return colNum >= startAddress.column && colNum <= cellLength(rows[0]) + startAddress.column; }); };\n var merge$1 = function (startAddress, gridA, gridB, generator, comparator) {\n var lockedColumns = getLockedColumnsFromGrid(gridA);\n var validStartAddress = getValidStartAddress(startAddress, gridA, lockedColumns);\n var gridBRows = extractGridDetails(gridB).rows;\n var lockedColumnsWithinBounds = getLockedColumnsWithinBounds(validStartAddress, gridBRows, lockedColumns);\n var result = measure(validStartAddress, gridA, gridBRows);\n return result.map(function (diff) {\n var delta = __assign(__assign({}, diff), { colDelta: diff.colDelta - lockedColumnsWithinBounds.length });\n var fittedGrid = tailor(gridA, delta, generator);\n var newLockedColumns = getLockedColumnsFromGrid(fittedGrid);\n var newLockedColumnsWithinBounds = getLockedColumnsWithinBounds(validStartAddress, gridBRows, newLockedColumns);\n return mergeTables(validStartAddress, fittedGrid, gridBRows, generator, comparator, newLockedColumnsWithinBounds);\n });\n };\n var insertCols = function (index, gridA, gridB, generator, comparator) {\n splitCols(gridA, index, comparator, generator.cell);\n var delta = measureHeight(gridB, gridA);\n var fittedNewGrid = tailor(gridB, delta, generator);\n var secondDelta = measureHeight(gridA, fittedNewGrid);\n var fittedOldGrid = tailor(gridA, secondDelta, generator);\n return map$1(fittedOldGrid, function (gridRow, i) {\n return addCells(gridRow, index, fittedNewGrid[i].cells);\n });\n };\n var insertRows = function (index, gridA, gridB, generator, comparator) {\n splitRows(gridA, index, comparator, generator.cell);\n var locked = getLockedColumnsFromGrid(gridA);\n var diff = measureWidth(gridA, gridB);\n var delta = __assign(__assign({}, diff), { colDelta: diff.colDelta - locked.length });\n var fittedOldGrid = tailor(gridA, delta, generator);\n var _c = extractGridDetails(fittedOldGrid), oldCols = _c.cols, oldRows = _c.rows;\n var newLocked = getLockedColumnsFromGrid(fittedOldGrid);\n var secondDiff = measureWidth(gridB, gridA);\n var secondDelta = __assign(__assign({}, secondDiff), { colDelta: secondDiff.colDelta + newLocked.length });\n var fittedGridB = lockedColFill(gridB, generator, newLocked);\n var fittedNewGrid = tailor(fittedGridB, secondDelta, generator);\n return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], oldCols, true), oldRows.slice(0, index), true), fittedNewGrid, true), oldRows.slice(index, oldRows.length), true);\n };\n var cloneRow = function (row, cloneCell, comparator, substitution) { return clone(row, function (elem) { return substitution(elem, comparator); }, cloneCell); };\n var insertRowAt = function (grid, index, example, comparator, substitution) {\n var _c = extractGridDetails(grid), rows = _c.rows, cols = _c.cols;\n var before = rows.slice(0, index);\n var after = rows.slice(index);\n var newRow = cloneRow(rows[example], function (ex, c) {\n var withinSpan = index > 0 && index < rows.length && comparator(getCellElement(rows[index - 1], c), getCellElement(rows[index], c));\n var ret = withinSpan ? getCell(rows[index], c) : elementnew(substitution(ex.element, comparator), true, ex.isLocked);\n return ret;\n }, comparator, substitution);\n return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], cols, true), before, true), [\n newRow\n ], false), after, true);\n };\n var getElementFor = function (row, column, section, withinSpan, example, comparator, substitution) {\n if (section === 'colgroup' || !withinSpan) {\n var cell_2 = getCell(row, example);\n return elementnew(substitution(cell_2.element, comparator), true, false);\n }\n else {\n return getCell(row, column);\n }\n };\n var insertColumnAt = function (grid, index, example, comparator, substitution) { return map$1(grid, function (row) {\n var withinSpan = index > 0 && index < cellLength(row) && comparator(getCellElement(row, index - 1), getCellElement(row, index));\n var sub = getElementFor(row, index, row.section, withinSpan, example, comparator, substitution);\n return addCell(row, index, sub);\n }); };\n var deleteColumnsAt = function (grid, columns) { return bind$2(grid, function (row) {\n var existingCells = row.cells;\n var cells = foldr(columns, function (acc, column) { return column >= 0 && column < acc.length ? acc.slice(0, column).concat(acc.slice(column + 1)) : acc; }, existingCells);\n return cells.length > 0 ? [rowcells(row.element, cells, row.section, row.isNew)] : [];\n }); };\n var deleteRowsAt = function (grid, start, finish) {\n var _c = extractGridDetails(grid), rows = _c.rows, cols = _c.cols;\n return __spreadArray(__spreadArray(__spreadArray([], cols, true), rows.slice(0, start), true), rows.slice(finish + 1), true);\n };\n var notInStartRow = function (grid, rowIndex, colIndex, comparator) { return getCellElement(grid[rowIndex], colIndex) !== undefined && (rowIndex > 0 && comparator(getCellElement(grid[rowIndex - 1], colIndex), getCellElement(grid[rowIndex], colIndex))); };\n var notInStartColumn = function (row, index, comparator) { return index > 0 && comparator(getCellElement(row, index - 1), getCellElement(row, index)); };\n var isDuplicatedCell = function (grid, rowIndex, colIndex, comparator) { return notInStartRow(grid, rowIndex, colIndex, comparator) || notInStartColumn(grid[rowIndex], colIndex, comparator); };\n var rowReplacerPredicate = function (targetRow, columnHeaders) {\n var entireTableIsHeader = forall(columnHeaders, identity) && isHeaderCells(targetRow.cells);\n return entireTableIsHeader ? always : function (cell, _rowIndex, colIndex) {\n var type = name(cell.element);\n return !(type === 'th' && columnHeaders[colIndex]);\n };\n };\n var columnReplacePredicate = function (targetColumn, rowHeaders) {\n var entireTableIsHeader = forall(rowHeaders, identity) && isHeaderCells(targetColumn);\n return entireTableIsHeader ? always : function (cell, rowIndex, _colIndex) {\n var type = name(cell.element);\n return !(type === 'th' && rowHeaders[rowIndex]);\n };\n };\n var determineScope = function (applyScope, cell, newScope, isInHeader) {\n var hasSpan = function (scope) { return scope === 'row' ? hasRowspan(cell) : hasColspan(cell); };\n var getScope = function (scope) { return hasSpan(scope) ? \"\".concat(scope, \"group\") : scope; };\n if (applyScope) {\n return isHeaderCell(cell) ? getScope(newScope) : null;\n }\n else if (isInHeader && isHeaderCell(cell)) {\n var oppositeScope = newScope === 'row' ? 'col' : 'row';\n return getScope(oppositeScope);\n }\n else {\n return null;\n }\n };\n var rowScopeGenerator = function (applyScope, columnHeaders) { return function (cell, rowIndex, columnIndex) { return Optional.some(determineScope(applyScope, cell.element, 'col', columnHeaders[columnIndex])); }; };\n var columnScopeGenerator = function (applyScope, rowHeaders) { return function (cell, rowIndex) { return Optional.some(determineScope(applyScope, cell.element, 'row', rowHeaders[rowIndex])); }; };\n var replace = function (cell, comparator, substitute) { return elementnew(substitute(cell.element, comparator), true, cell.isLocked); };\n var replaceIn = function (grid, targets, comparator, substitute, replacer, genScope, shouldReplace) {\n var isTarget = function (cell) {\n return exists(targets, function (target) {\n return comparator(cell.element, target.element);\n });\n };\n return map$1(grid, function (row, rowIndex) {\n return mapCells(row, function (cell, colIndex) {\n if (isTarget(cell)) {\n var newCell_1 = shouldReplace(cell, rowIndex, colIndex) ? replacer(cell, comparator, substitute) : cell;\n genScope(newCell_1, rowIndex, colIndex).each(function (scope) {\n setOptions(newCell_1.element, { scope: Optional.from(scope) });\n });\n return newCell_1;\n }\n else {\n return cell;\n }\n });\n });\n };\n var getColumnCells = function (rows, columnIndex, comparator) { return bind$2(rows, function (row, i) {\n return isDuplicatedCell(rows, i, columnIndex, comparator) ? [] : [getCell(row, columnIndex)];\n }); };\n var getRowCells = function (rows, rowIndex, comparator) {\n var targetRow = rows[rowIndex];\n return bind$2(targetRow.cells, function (item, i) {\n return isDuplicatedCell(rows, rowIndex, i, comparator) ? [] : [item];\n });\n };\n var replaceColumns = function (grid, indexes, applyScope, comparator, substitution) {\n var rows = extractGridDetails(grid).rows;\n var targets = bind$2(indexes, function (index) { return getColumnCells(rows, index, comparator); });\n var rowHeaders = map$1(rows, function (row) { return isHeaderCells(row.cells); });\n var shouldReplaceCell = columnReplacePredicate(targets, rowHeaders);\n var scopeGenerator = columnScopeGenerator(applyScope, rowHeaders);\n return replaceIn(grid, targets, comparator, substitution, replace, scopeGenerator, shouldReplaceCell);\n };\n var replaceRows = function (grid, indexes, section, applyScope, comparator, substitution, tableSection) {\n var _c = extractGridDetails(grid), cols = _c.cols, rows = _c.rows;\n var targetRow = rows[indexes[0]];\n var targets = bind$2(indexes, function (index) { return getRowCells(rows, index, comparator); });\n var columnHeaders = map$1(targetRow.cells, function (_cell, index) { return isHeaderCells(getColumnCells(rows, index, comparator)); });\n var newRows = __spreadArray([], rows, true);\n each$2(indexes, function (index) {\n newRows[index] = tableSection.transformRow(rows[index], section);\n });\n var newGrid = __spreadArray(__spreadArray([], cols, true), newRows, true);\n var shouldReplaceCell = rowReplacerPredicate(targetRow, columnHeaders);\n var scopeGenerator = rowScopeGenerator(applyScope, columnHeaders);\n return replaceIn(newGrid, targets, comparator, substitution, tableSection.transformCell, scopeGenerator, shouldReplaceCell);\n };\n var replaceCells = function (grid, details, comparator, substitution) {\n var rows = extractGridDetails(grid).rows;\n var targetCells = map$1(details, function (detail) { return getCell(rows[detail.row], detail.column); });\n return replaceIn(grid, targetCells, comparator, substitution, replace, Optional.none, always);\n };\n var generate = function (cases) {\n if (!isArray(cases)) {\n throw new Error('cases must be an array');\n }\n if (cases.length === 0) {\n throw new Error('there must be at least one case');\n }\n var constructors = [];\n var adt = {};\n each$2(cases, function (acase, count) {\n var keys$1 = keys(acase);\n if (keys$1.length !== 1) {\n throw new Error('one and only one name per case');\n }\n var key = keys$1[0];\n var value = acase[key];\n if (adt[key] !== undefined) {\n throw new Error('duplicate key detected:' + key);\n }\n else if (key === 'cata') {\n throw new Error('cannot have a case named cata (sorry)');\n }\n else if (!isArray(value)) {\n throw new Error('case arguments must be an array');\n }\n constructors.push(key);\n adt[key] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var argLength = args.length;\n if (argLength !== value.length) {\n throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n }\n var match = function (branches) {\n var branchKeys = keys(branches);\n if (constructors.length !== branchKeys.length) {\n throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n }\n var allReqd = forall(constructors, function (reqKey) {\n return contains$2(branchKeys, reqKey);\n });\n if (!allReqd) {\n throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n }\n return branches[key].apply(null, args);\n };\n return {\n fold: function () {\n var foldArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n foldArgs[_i] = arguments[_i];\n }\n if (foldArgs.length !== cases.length) {\n throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length);\n }\n var target = foldArgs[count];\n return target.apply(null, args);\n },\n match: match,\n log: function (label) {\n console.log(label, {\n constructors: constructors,\n constructor: key,\n params: args\n });\n }\n };\n };\n });\n return adt;\n };\n var Adt = { generate: generate };\n var adt$6 = Adt.generate([\n { none: [] },\n { only: ['index'] },\n {\n left: [\n 'index',\n 'next'\n ]\n },\n {\n middle: [\n 'prev',\n 'index',\n 'next'\n ]\n },\n {\n right: [\n 'prev',\n 'index'\n ]\n }\n ]);\n var ColumnContext = __assign({}, adt$6);\n var neighbours = function (input, index) {\n if (input.length === 0) {\n return ColumnContext.none();\n }\n if (input.length === 1) {\n return ColumnContext.only(0);\n }\n if (index === 0) {\n return ColumnContext.left(0, 1);\n }\n if (index === input.length - 1) {\n return ColumnContext.right(index - 1, index);\n }\n if (index > 0 && index < input.length - 1) {\n return ColumnContext.middle(index - 1, index, index + 1);\n }\n return ColumnContext.none();\n };\n var determine = function (input, column, step, tableSize, resize) {\n var result = input.slice(0);\n var context = neighbours(input, column);\n var onNone = constant(map$1(result, constant(0)));\n var onOnly = function (index) { return tableSize.singleColumnWidth(result[index], step); };\n var onLeft = function (index, next) { return resize.calcLeftEdgeDeltas(result, index, next, step, tableSize.minCellWidth(), tableSize.isRelative); };\n var onMiddle = function (prev, index, next) { return resize.calcMiddleDeltas(result, prev, index, next, step, tableSize.minCellWidth(), tableSize.isRelative); };\n var onRight = function (prev, index) { return resize.calcRightEdgeDeltas(result, prev, index, step, tableSize.minCellWidth(), tableSize.isRelative); };\n return context.fold(onNone, onOnly, onLeft, onMiddle, onRight);\n };\n var total = function (start, end, measures) {\n var r = 0;\n for (var i = start; i < end; i++) {\n r += measures[i] !== undefined ? measures[i] : 0;\n }\n return r;\n };\n var recalculateWidthForCells = function (warehouse, widths) {\n var all = Warehouse.justCells(warehouse);\n return map$1(all, function (cell) {\n var width = total(cell.column, cell.column + cell.colspan, widths);\n return {\n element: cell.element,\n width: width,\n colspan: cell.colspan\n };\n });\n };\n var recalculateWidthForColumns = function (warehouse, widths) {\n var groups = Warehouse.justColumns(warehouse);\n return map$1(groups, function (column, index) { return ({\n element: column.element,\n width: widths[index],\n colspan: column.colspan\n }); });\n };\n var recalculateHeightForCells = function (warehouse, heights) {\n var all = Warehouse.justCells(warehouse);\n return map$1(all, function (cell) {\n var height = total(cell.row, cell.row + cell.rowspan, heights);\n return {\n element: cell.element,\n height: height,\n rowspan: cell.rowspan\n };\n });\n };\n var matchRowHeight = function (warehouse, heights) {\n return map$1(warehouse.all, function (row, i) {\n return {\n element: row.element,\n height: heights[i]\n };\n });\n };\n var sumUp = function (newSize) { return foldr(newSize, function (b, a) { return b + a; }, 0); };\n var recalculate = function (warehouse, widths) {\n if (Warehouse.hasColumns(warehouse)) {\n return recalculateWidthForColumns(warehouse, widths);\n }\n else {\n return recalculateWidthForCells(warehouse, widths);\n }\n };\n var recalculateAndApply = function (warehouse, widths, tableSize) {\n var newSizes = recalculate(warehouse, widths);\n each$2(newSizes, function (cell) {\n tableSize.setElementWidth(cell.element, cell.width);\n });\n };\n var adjustWidth = function (table, delta, index, resizing, tableSize) {\n var warehouse = Warehouse.fromTable(table);\n var step = tableSize.getCellDelta(delta);\n var widths = tableSize.getWidths(warehouse, tableSize);\n var isLastColumn = index === warehouse.grid.columns - 1;\n var clampedStep = resizing.clampTableDelta(widths, index, step, tableSize.minCellWidth(), isLastColumn);\n var deltas = determine(widths, index, clampedStep, tableSize, resizing);\n var newWidths = map$1(deltas, function (dx, i) { return dx + widths[i]; });\n recalculateAndApply(warehouse, newWidths, tableSize);\n resizing.resizeTable(tableSize.adjustTableWidth, clampedStep, isLastColumn);\n };\n var adjustHeight = function (table, delta, index, direction) {\n var warehouse = Warehouse.fromTable(table);\n var heights = getPixelHeights(warehouse, table, direction);\n var newHeights = map$1(heights, function (dy, i) { return index === i ? Math.max(delta + dy, minHeight()) : dy; });\n var newCellSizes = recalculateHeightForCells(warehouse, newHeights);\n var newRowSizes = matchRowHeight(warehouse, newHeights);\n each$2(newRowSizes, function (row) {\n setHeight(row.element, row.height);\n });\n each$2(newCellSizes, function (cell) {\n setHeight(cell.element, cell.height);\n });\n var total = sumUp(newHeights);\n setHeight(table, total);\n };\n var adjustAndRedistributeWidths$1 = function (_table, list, details, tableSize, resizeBehaviour) {\n var warehouse = Warehouse.generate(list);\n var sizes = tableSize.getWidths(warehouse, tableSize);\n var tablePixelWidth = tableSize.pixelWidth();\n var _c = resizeBehaviour.calcRedestributedWidths(sizes, tablePixelWidth, details.pixelDelta, tableSize.isRelative), newSizes = _c.newSizes, delta = _c.delta;\n recalculateAndApply(warehouse, newSizes, tableSize);\n tableSize.adjustTableWidth(delta);\n };\n var adjustWidthTo = function (_table, list, _info, tableSize) {\n var warehouse = Warehouse.generate(list);\n var widths = tableSize.getWidths(warehouse, tableSize);\n recalculateAndApply(warehouse, widths, tableSize);\n };\n var uniqueColumns = function (details) {\n var uniqueCheck = function (rest, detail) {\n var columnExists = exists(rest, function (currentDetail) { return currentDetail.column === detail.column; });\n return columnExists ? rest : rest.concat([detail]);\n };\n return foldl(details, uniqueCheck, []).sort(function (detailA, detailB) { return detailA.column - detailB.column; });\n };\n var isCol = isTag('col');\n var isColgroup = isTag('colgroup');\n var isRow$1 = function (element) { return name(element) === 'tr' || isColgroup(element); };\n var elementToData = function (element) {\n var colspan = getAttrValue(element, 'colspan', 1);\n var rowspan = getAttrValue(element, 'rowspan', 1);\n return {\n element: element,\n colspan: colspan,\n rowspan: rowspan\n };\n };\n var modification = function (generators, toData) {\n if (toData === void 0) { toData = elementToData; }\n var nuCell = function (data) { return isCol(data.element) ? generators.col(data) : generators.cell(data); };\n var nuRow = function (data) { return isColgroup(data.element) ? generators.colgroup(data) : generators.row(data); };\n var add = function (element) {\n if (isRow$1(element)) {\n return nuRow({ element: element });\n }\n else {\n var cell_3 = element;\n var replacement = nuCell(toData(cell_3));\n recent = Optional.some({\n item: cell_3,\n replacement: replacement\n });\n return replacement;\n }\n };\n var recent = Optional.none();\n var getOrInit = function (element, comparator) {\n return recent.fold(function () {\n return add(element);\n }, function (p) {\n return comparator(element, p.item) ? p.replacement : add(element);\n });\n };\n return { getOrInit: getOrInit };\n };\n var transform$1 = function (tag) {\n return function (generators) {\n var list = [];\n var find = function (element, comparator) {\n return find$1(list, function (x) {\n return comparator(x.item, element);\n });\n };\n var makeNew = function (element) {\n var attrs = tag === 'td' ? { scope: null } : {};\n var cell = generators.replace(element, tag, attrs);\n list.push({\n item: element,\n sub: cell\n });\n return cell;\n };\n var replaceOrInit = function (element, comparator) {\n if (isRow$1(element) || isCol(element)) {\n return element;\n }\n else {\n var cell_4 = element;\n return find(cell_4, comparator).fold(function () {\n return makeNew(cell_4);\n }, function (p) {\n return comparator(element, p.item) ? p.sub : makeNew(cell_4);\n });\n }\n };\n return { replaceOrInit: replaceOrInit };\n };\n };\n var getScopeAttribute = function (cell) { return getOpt(cell, 'scope').map(function (attribute) { return attribute.substr(0, 3); }); };\n var merging = function (generators) {\n var unmerge = function (cell) {\n var scope = getScopeAttribute(cell);\n scope.each(function (attribute) { return set$2(cell, 'scope', attribute); });\n return function () {\n var raw = generators.cell({\n element: cell,\n colspan: 1,\n rowspan: 1\n });\n remove$5(raw, 'width');\n remove$5(cell, 'width');\n scope.each(function (attribute) { return set$2(raw, 'scope', attribute); });\n return raw;\n };\n };\n var merge = function (cells) {\n var getScopeProperty = function () {\n var stringAttributes = cat(map$1(cells, getScopeAttribute));\n if (stringAttributes.length === 0) {\n return Optional.none();\n }\n else {\n var baseScope_1 = stringAttributes[0];\n var scopes_1 = [\n 'row',\n 'col'\n ];\n var isMixed = exists(stringAttributes, function (attribute) {\n return attribute !== baseScope_1 && contains$2(scopes_1, attribute);\n });\n return isMixed ? Optional.none() : Optional.from(baseScope_1);\n }\n };\n remove$5(cells[0], 'width');\n getScopeProperty().fold(function () { return remove$7(cells[0], 'scope'); }, function (attribute) { return set$2(cells[0], 'scope', attribute + 'group'); });\n return constant(cells[0]);\n };\n return {\n unmerge: unmerge,\n merge: merge\n };\n };\n var Generators = {\n modification: modification,\n transform: transform$1,\n merging: merging\n };\n var blockList = [\n 'body',\n 'p',\n 'div',\n 'article',\n 'aside',\n 'figcaption',\n 'figure',\n 'footer',\n 'header',\n 'nav',\n 'section',\n 'ol',\n 'ul',\n 'table',\n 'thead',\n 'tfoot',\n 'tbody',\n 'caption',\n 'tr',\n 'td',\n 'th',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'pre',\n 'address'\n ];\n var isList$1 = function (universe, item) {\n var tagName = universe.property().name(item);\n return contains$2([\n 'ol',\n 'ul'\n ], tagName);\n };\n var isBlock$1 = function (universe, item) {\n var tagName = universe.property().name(item);\n return contains$2(blockList, tagName);\n };\n var isEmptyTag$1 = function (universe, item) {\n return contains$2([\n 'br',\n 'img',\n 'hr',\n 'input'\n ], universe.property().name(item));\n };\n var universe$1 = DomUniverse();\n var isBlock = function (element) {\n return isBlock$1(universe$1, element);\n };\n var isList = function (element) {\n return isList$1(universe$1, element);\n };\n var isEmptyTag = function (element) {\n return isEmptyTag$1(universe$1, element);\n };\n var merge = function (cells) {\n var isBr = isTag('br');\n var advancedBr = function (children) {\n return forall(children, function (c) {\n return isBr(c) || isText(c) && get$6(c).trim().length === 0;\n });\n };\n var isListItem = function (el) {\n return name(el) === 'li' || ancestor$2(el, isList).isSome();\n };\n var siblingIsBlock = function (el) {\n return nextSibling(el).map(function (rightSibling) {\n if (isBlock(rightSibling)) {\n return true;\n }\n if (isEmptyTag(rightSibling)) {\n return name(rightSibling) === 'img' ? false : true;\n }\n return false;\n }).getOr(false);\n };\n var markCell = function (cell) {\n return last$1(cell).bind(function (rightEdge) {\n var rightSiblingIsBlock = siblingIsBlock(rightEdge);\n return parent(rightEdge).map(function (parent) {\n return rightSiblingIsBlock === true || isListItem(parent) || isBr(rightEdge) || isBlock(parent) && !eq$1(cell, parent) ? [] : [SugarElement.fromTag('br')];\n });\n }).getOr([]);\n };\n var markContent = function () {\n var content = bind$2(cells, function (cell) {\n var children = children$2(cell);\n return advancedBr(children) ? [] : children.concat(markCell(cell));\n });\n return content.length === 0 ? [SugarElement.fromTag('br')] : content;\n };\n var contents = markContent();\n empty(cells[0]);\n append(cells[0], contents);\n };\n var isEditable = function (elem) { return isEditable$1(elem, true); };\n var prune = function (table) {\n var cells = cells$1(table);\n if (cells.length === 0) {\n remove$6(table);\n }\n };\n var outcome = function (grid, cursor) { return ({\n grid: grid,\n cursor: cursor\n }); };\n var findEditableCursorPosition = function (rows) { return findMap(rows, function (row) { return findMap(row.cells, function (cell) {\n var elem = cell.element;\n return someIf(isEditable(elem), elem);\n }); }); };\n var elementFromGrid = function (grid, row, column) {\n var _a, _b;\n var rows = extractGridDetails(grid).rows;\n return Optional.from((_b = (_a = rows[row]) === null || _a === void 0 ? void 0 : _a.cells[column]) === null || _b === void 0 ? void 0 : _b.element).filter(isEditable).orThunk(function () { return findEditableCursorPosition(rows); });\n };\n var bundle = function (grid, row, column) {\n var cursorElement = elementFromGrid(grid, row, column);\n return outcome(grid, cursorElement);\n };\n var uniqueRows = function (details) {\n var rowCompilation = function (rest, detail) {\n var rowExists = exists(rest, function (currentDetail) { return currentDetail.row === detail.row; });\n return rowExists ? rest : rest.concat([detail]);\n };\n return foldl(details, rowCompilation, []).sort(function (detailA, detailB) { return detailA.row - detailB.row; });\n };\n var opInsertRowsBefore = function (grid, details, comparator, genWrappers) {\n var targetIndex = details[0].row;\n var rows = uniqueRows(details);\n var newGrid = foldr(rows, function (acc, row) {\n var newG = insertRowAt(acc.grid, targetIndex, row.row + acc.delta, comparator, genWrappers.getOrInit);\n return {\n grid: newG,\n delta: acc.delta + 1\n };\n }, {\n grid: grid,\n delta: 0\n }).grid;\n return bundle(newGrid, targetIndex, details[0].column);\n };\n var opInsertRowsAfter = function (grid, details, comparator, genWrappers) {\n var rows = uniqueRows(details);\n var target = rows[rows.length - 1];\n var targetIndex = target.row + target.rowspan;\n var newGrid = foldr(rows, function (newG, row) {\n return insertRowAt(newG, targetIndex, row.row, comparator, genWrappers.getOrInit);\n }, grid);\n return bundle(newGrid, targetIndex, details[0].column);\n };\n var opInsertColumnsBefore = function (grid, extractDetail, comparator, genWrappers) {\n var details = extractDetail.details;\n var columns = uniqueColumns(details);\n var targetIndex = columns[0].column;\n var newGrid = foldr(columns, function (acc, col) {\n var newG = insertColumnAt(acc.grid, targetIndex, col.column + acc.delta, comparator, genWrappers.getOrInit);\n return {\n grid: newG,\n delta: acc.delta + 1\n };\n }, {\n grid: grid,\n delta: 0\n }).grid;\n return bundle(newGrid, details[0].row, targetIndex);\n };\n var opInsertColumnsAfter = function (grid, extractDetail, comparator, genWrappers) {\n var details = extractDetail.details;\n var target = details[details.length - 1];\n var targetIndex = target.column + target.colspan;\n var columns = uniqueColumns(details);\n var newGrid = foldr(columns, function (newG, col) {\n return insertColumnAt(newG, targetIndex, col.column, comparator, genWrappers.getOrInit);\n }, grid);\n return bundle(newGrid, details[0].row, targetIndex);\n };\n var opMakeColumnsHeader = function (initialGrid, details, comparator, genWrappers) {\n var columns = uniqueColumns(details);\n var columnIndexes = map$1(columns, function (detail) { return detail.column; });\n var newGrid = replaceColumns(initialGrid, columnIndexes, true, comparator, genWrappers.replaceOrInit);\n return bundle(newGrid, details[0].row, details[0].column);\n };\n var opMakeCellsHeader = function (initialGrid, details, comparator, genWrappers) {\n var newGrid = replaceCells(initialGrid, details, comparator, genWrappers.replaceOrInit);\n return bundle(newGrid, details[0].row, details[0].column);\n };\n var opUnmakeColumnsHeader = function (initialGrid, details, comparator, genWrappers) {\n var columns = uniqueColumns(details);\n var columnIndexes = map$1(columns, function (detail) { return detail.column; });\n var newGrid = replaceColumns(initialGrid, columnIndexes, false, comparator, genWrappers.replaceOrInit);\n return bundle(newGrid, details[0].row, details[0].column);\n };\n var opUnmakeCellsHeader = function (initialGrid, details, comparator, genWrappers) {\n var newGrid = replaceCells(initialGrid, details, comparator, genWrappers.replaceOrInit);\n return bundle(newGrid, details[0].row, details[0].column);\n };\n var makeRowsSection = function (section, applyScope) { return function (initialGrid, details, comparator, genWrappers, tableSection) {\n var rows = uniqueRows(details);\n var rowIndexes = map$1(rows, function (detail) { return detail.row; });\n var newGrid = replaceRows(initialGrid, rowIndexes, section, applyScope, comparator, genWrappers.replaceOrInit, tableSection);\n return bundle(newGrid, details[0].row, details[0].column);\n }; };\n var opMakeRowsHeader = makeRowsSection('thead', true);\n var opMakeRowsBody = makeRowsSection('tbody', false);\n var opMakeRowsFooter = makeRowsSection('tfoot', false);\n var opEraseColumns = function (grid, extractDetail, _comparator, _genWrappers) {\n var columns = uniqueColumns(extractDetail.details);\n var newGrid = deleteColumnsAt(grid, map$1(columns, function (column) { return column.column; }));\n var maxColIndex = newGrid.length > 0 ? newGrid[0].cells.length - 1 : 0;\n return bundle(newGrid, columns[0].row, Math.min(columns[0].column, maxColIndex));\n };\n var opEraseRows = function (grid, details, _comparator, _genWrappers) {\n var rows = uniqueRows(details);\n var newGrid = deleteRowsAt(grid, rows[0].row, rows[rows.length - 1].row);\n var maxRowIndex = newGrid.length > 0 ? newGrid.length - 1 : 0;\n return bundle(newGrid, Math.min(details[0].row, maxRowIndex), details[0].column);\n };\n var opMergeCells = function (grid, mergable, comparator, genWrappers) {\n var cells = mergable.cells;\n merge(cells);\n var newGrid = merge$2(grid, mergable.bounds, comparator, genWrappers.merge(cells));\n return outcome(newGrid, Optional.from(cells[0]));\n };\n var opUnmergeCells = function (grid, unmergable, comparator, genWrappers) {\n var unmerge$1 = function (b, cell) { return unmerge(b, cell, comparator, genWrappers.unmerge(cell)); };\n var newGrid = foldr(unmergable, unmerge$1, grid);\n return outcome(newGrid, Optional.from(unmergable[0]));\n };\n var opPasteCells = function (grid, pasteDetails, comparator, _genWrappers) {\n var gridify = function (table, generators) {\n var wh = Warehouse.fromTable(table);\n return toGrid(wh, generators, true);\n };\n var gridB = gridify(pasteDetails.clipboard, pasteDetails.generators);\n var startAddress = address(pasteDetails.row, pasteDetails.column);\n var mergedGrid = merge$1(startAddress, grid, gridB, pasteDetails.generators, comparator);\n return mergedGrid.fold(function () { return outcome(grid, Optional.some(pasteDetails.element)); }, function (newGrid) {\n return bundle(newGrid, pasteDetails.row, pasteDetails.column);\n });\n };\n var gridifyRows = function (rows, generators, context) {\n var pasteDetails = fromPastedRows(rows, context.section);\n var wh = Warehouse.generate(pasteDetails);\n return toGrid(wh, generators, true);\n };\n var opPasteColsBefore = function (grid, pasteDetails, comparator, _genWrappers) {\n var rows = extractGridDetails(grid).rows;\n var index = pasteDetails.cells[0].column;\n var context = rows[pasteDetails.cells[0].row];\n var gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n var mergedGrid = insertCols(index, grid, gridB, pasteDetails.generators, comparator);\n return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n };\n var opPasteColsAfter = function (grid, pasteDetails, comparator, _genWrappers) {\n var rows = extractGridDetails(grid).rows;\n var index = pasteDetails.cells[pasteDetails.cells.length - 1].column + pasteDetails.cells[pasteDetails.cells.length - 1].colspan;\n var context = rows[pasteDetails.cells[0].row];\n var gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n var mergedGrid = insertCols(index, grid, gridB, pasteDetails.generators, comparator);\n return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n };\n var opPasteRowsBefore = function (grid, pasteDetails, comparator, _genWrappers) {\n var rows = extractGridDetails(grid).rows;\n var index = pasteDetails.cells[0].row;\n var context = rows[index];\n var gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n var mergedGrid = insertRows(index, grid, gridB, pasteDetails.generators, comparator);\n return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n };\n var opPasteRowsAfter = function (grid, pasteDetails, comparator, _genWrappers) {\n var rows = extractGridDetails(grid).rows;\n var index = pasteDetails.cells[pasteDetails.cells.length - 1].row + pasteDetails.cells[pasteDetails.cells.length - 1].rowspan;\n var context = rows[pasteDetails.cells[0].row];\n var gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n var mergedGrid = insertRows(index, grid, gridB, pasteDetails.generators, comparator);\n return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n };\n var opGetColumnsType = function (table, target) {\n var house = Warehouse.fromTable(table);\n var details = onCells(house, target);\n return details.bind(function (selectedCells) {\n var lastSelectedCell = selectedCells[selectedCells.length - 1];\n var minColRange = selectedCells[0].column;\n var maxColRange = lastSelectedCell.column + lastSelectedCell.colspan;\n var selectedColumnCells = flatten(map$1(house.all, function (row) { return filter$2(row.cells, function (cell) { return cell.column >= minColRange && cell.column < maxColRange; }); }));\n return findCommonCellType(selectedColumnCells);\n }).getOr('');\n };\n var opGetCellsType = function (table, target) {\n var house = Warehouse.fromTable(table);\n var details = onCells(house, target);\n return details.bind(findCommonCellType).getOr('');\n };\n var opGetRowsType = function (table, target) {\n var house = Warehouse.fromTable(table);\n var details = onCells(house, target);\n return details.bind(function (selectedCells) {\n var lastSelectedCell = selectedCells[selectedCells.length - 1];\n var minRowRange = selectedCells[0].row;\n var maxRowRange = lastSelectedCell.row + lastSelectedCell.rowspan;\n var selectedRows = house.all.slice(minRowRange, maxRowRange);\n return findCommonRowType(selectedRows);\n }).getOr('');\n };\n var resize = function (table, list, details, behaviours) { return adjustWidthTo(table, list, details, behaviours.sizing); };\n var adjustAndRedistributeWidths = function (table, list, details, behaviours) { return adjustAndRedistributeWidths$1(table, list, details, behaviours.sizing, behaviours.resize); };\n var firstColumnIsLocked = function (_warehouse, details) { return exists(details, function (detail) { return detail.column === 0 && detail.isLocked; }); };\n var lastColumnIsLocked = function (warehouse, details) { return exists(details, function (detail) { return detail.column + detail.colspan >= warehouse.grid.columns && detail.isLocked; }); };\n var getColumnsWidth = function (warehouse, details) {\n var columns$1 = columns(warehouse);\n var uniqueCols = uniqueColumns(details);\n return foldl(uniqueCols, function (acc, detail) {\n var column = columns$1[detail.column];\n var colWidth = column.map(getOuter$2).getOr(0);\n return acc + colWidth;\n }, 0);\n };\n var insertColumnsExtractor = function (before) { return function (warehouse, target) { return onCells(warehouse, target).filter(function (details) {\n var checkLocked = before ? firstColumnIsLocked : lastColumnIsLocked;\n return !checkLocked(warehouse, details);\n }).map(function (details) { return ({\n details: details,\n pixelDelta: getColumnsWidth(warehouse, details)\n }); }); }; };\n var eraseColumnsExtractor = function (warehouse, target) { return onUnlockedCells(warehouse, target).map(function (details) { return ({\n details: details,\n pixelDelta: -getColumnsWidth(warehouse, details)\n }); }); };\n var pasteColumnsExtractor = function (before) { return function (warehouse, target) { return onPasteByEditor(warehouse, target).filter(function (details) {\n var checkLocked = before ? firstColumnIsLocked : lastColumnIsLocked;\n return !checkLocked(warehouse, details.cells);\n }); }; };\n var headerCellGenerator = Generators.transform('th');\n var bodyCellGenerator = Generators.transform('td');\n var insertRowsBefore = run(opInsertRowsBefore, onCells, noop, noop, Generators.modification);\n var insertRowsAfter = run(opInsertRowsAfter, onCells, noop, noop, Generators.modification);\n var insertColumnsBefore = run(opInsertColumnsBefore, insertColumnsExtractor(true), adjustAndRedistributeWidths, noop, Generators.modification);\n var insertColumnsAfter = run(opInsertColumnsAfter, insertColumnsExtractor(false), adjustAndRedistributeWidths, noop, Generators.modification);\n var eraseColumns = run(opEraseColumns, eraseColumnsExtractor, adjustAndRedistributeWidths, prune, Generators.modification);\n var eraseRows = run(opEraseRows, onCells, noop, prune, Generators.modification);\n var makeColumnsHeader = run(opMakeColumnsHeader, onUnlockedCells, noop, noop, headerCellGenerator);\n var unmakeColumnsHeader = run(opUnmakeColumnsHeader, onUnlockedCells, noop, noop, bodyCellGenerator);\n var makeRowsHeader = run(opMakeRowsHeader, onUnlockedCells, noop, noop, headerCellGenerator);\n var makeRowsBody = run(opMakeRowsBody, onUnlockedCells, noop, noop, bodyCellGenerator);\n var makeRowsFooter = run(opMakeRowsFooter, onUnlockedCells, noop, noop, bodyCellGenerator);\n var makeCellsHeader = run(opMakeCellsHeader, onUnlockedCells, noop, noop, headerCellGenerator);\n var unmakeCellsHeader = run(opUnmakeCellsHeader, onUnlockedCells, noop, noop, bodyCellGenerator);\n var mergeCells = run(opMergeCells, onUnlockedMergable, resize, noop, Generators.merging);\n var unmergeCells = run(opUnmergeCells, onUnlockedUnmergable, resize, noop, Generators.merging);\n var pasteCells = run(opPasteCells, onPaste, resize, noop, Generators.modification);\n var pasteColsBefore = run(opPasteColsBefore, pasteColumnsExtractor(true), noop, noop, Generators.modification);\n var pasteColsAfter = run(opPasteColsAfter, pasteColumnsExtractor(false), noop, noop, Generators.modification);\n var pasteRowsBefore = run(opPasteRowsBefore, onPasteByEditor, noop, noop, Generators.modification);\n var pasteRowsAfter = run(opPasteRowsAfter, onPasteByEditor, noop, noop, Generators.modification);\n var getColumnsType = opGetColumnsType;\n var getCellsType = opGetCellsType;\n var getRowsType = opGetRowsType;\n var fireNewRow = function (editor, row) { return editor.dispatch('NewRow', { node: row }); };\n var fireNewCell = function (editor, cell) { return editor.dispatch('NewCell', { node: cell }); };\n var fireTableModified = function (editor, table, data) {\n editor.dispatch('TableModified', __assign(__assign({}, data), { table: table }));\n };\n var fireTableSelectionChange = function (editor, cells, start, finish, otherCells) {\n editor.dispatch('TableSelectionChange', {\n cells: cells,\n start: start,\n finish: finish,\n otherCells: otherCells\n });\n };\n var fireTableSelectionClear = function (editor) {\n editor.dispatch('TableSelectionClear');\n };\n var fireObjectResizeStart = function (editor, target, width, height, origin) {\n editor.dispatch('ObjectResizeStart', {\n target: target,\n width: width,\n height: height,\n origin: origin\n });\n };\n var fireObjectResized = function (editor, target, width, height, origin) {\n editor.dispatch('ObjectResized', {\n target: target,\n width: width,\n height: height,\n origin: origin\n });\n };\n var styleModified = {\n structure: false,\n style: true\n };\n var structureModified = {\n structure: true,\n style: false\n };\n var styleAndStructureModified = {\n structure: true,\n style: true\n };\n var get$5 = function (editor, table) {\n if (isTablePercentagesForced(editor)) {\n return TableSize.percentageSize(table);\n }\n else if (isTablePixelsForced(editor)) {\n return TableSize.pixelSize(table);\n }\n else {\n return TableSize.getTableSize(table);\n }\n };\n var TableActions = function (editor, resizeHandler, cellSelectionHandler) {\n var isTableBody = function (editor) { return name(getBody(editor)) === 'table'; };\n var lastRowGuard = function (table) { return !isTableBody(editor) || getGridSize(table).rows > 1; };\n var lastColumnGuard = function (table) { return !isTableBody(editor) || getGridSize(table).columns > 1; };\n var cloneFormats = getTableCloneElements(editor);\n var colMutationOp = isResizeTableColumnResizing(editor) ? noop : halve;\n var getTableSectionType = function (table) {\n switch (getTableHeaderType(editor)) {\n case 'section':\n return TableSection.section();\n case 'sectionCells':\n return TableSection.sectionCells();\n case 'cells':\n return TableSection.cells();\n default:\n return TableSection.getTableSectionType(table, 'section');\n }\n };\n var setSelectionFromAction = function (table, result) { return result.cursor.fold(function () {\n var cells = cells$1(table);\n return head(cells).filter(inBody).map(function (firstCell) {\n cellSelectionHandler.clearSelectedCells(table.dom);\n var rng = editor.dom.createRng();\n rng.selectNode(firstCell.dom);\n editor.selection.setRng(rng);\n set$2(firstCell, 'data-mce-selected', '1');\n return rng;\n });\n }, function (cell) {\n var des = freefallRtl(cell);\n var rng = editor.dom.createRng();\n rng.setStart(des.element.dom, des.offset);\n rng.setEnd(des.element.dom, des.offset);\n editor.selection.setRng(rng);\n cellSelectionHandler.clearSelectedCells(table.dom);\n return Optional.some(rng);\n }); };\n var execute = function (operation, guard, mutate, effect) { return function (table, target, noEvents) {\n if (noEvents === void 0) { noEvents = false; }\n removeDataStyle(table);\n var doc = SugarElement.fromDom(editor.getDoc());\n var generators = cellOperations(mutate, doc, cloneFormats);\n var behaviours = {\n sizing: get$5(editor, table),\n resize: isResizeTableColumnResizing(editor) ? resizeTable() : preserveTable(),\n section: getTableSectionType(table)\n };\n return guard(table) ? operation(table, target, generators, behaviours).bind(function (result) {\n resizeHandler.refresh(table.dom);\n each$2(result.newRows, function (row) {\n fireNewRow(editor, row.dom);\n });\n each$2(result.newCells, function (cell) {\n fireNewCell(editor, cell.dom);\n });\n var range = setSelectionFromAction(table, result);\n if (inBody(table)) {\n removeDataStyle(table);\n if (!noEvents) {\n fireTableModified(editor, table.dom, effect);\n }\n }\n return range.map(function (rng) { return ({\n rng: rng,\n effect: effect\n }); });\n }) : Optional.none();\n }; };\n var deleteRow = execute(eraseRows, lastRowGuard, noop, structureModified);\n var deleteColumn = execute(eraseColumns, lastColumnGuard, noop, structureModified);\n var insertRowsBefore$1 = execute(insertRowsBefore, always, noop, structureModified);\n var insertRowsAfter$1 = execute(insertRowsAfter, always, noop, structureModified);\n var insertColumnsBefore$1 = execute(insertColumnsBefore, always, colMutationOp, structureModified);\n var insertColumnsAfter$1 = execute(insertColumnsAfter, always, colMutationOp, structureModified);\n var mergeCells$1 = execute(mergeCells, always, noop, structureModified);\n var unmergeCells$1 = execute(unmergeCells, always, noop, structureModified);\n var pasteColsBefore$1 = execute(pasteColsBefore, always, noop, structureModified);\n var pasteColsAfter$1 = execute(pasteColsAfter, always, noop, structureModified);\n var pasteRowsBefore$1 = execute(pasteRowsBefore, always, noop, structureModified);\n var pasteRowsAfter$1 = execute(pasteRowsAfter, always, noop, structureModified);\n var pasteCells$1 = execute(pasteCells, always, noop, styleAndStructureModified);\n var makeCellsHeader$1 = execute(makeCellsHeader, always, noop, structureModified);\n var unmakeCellsHeader$1 = execute(unmakeCellsHeader, always, noop, structureModified);\n var makeColumnsHeader$1 = execute(makeColumnsHeader, always, noop, structureModified);\n var unmakeColumnsHeader$1 = execute(unmakeColumnsHeader, always, noop, structureModified);\n var makeRowsHeader$1 = execute(makeRowsHeader, always, noop, structureModified);\n var makeRowsBody$1 = execute(makeRowsBody, always, noop, structureModified);\n var makeRowsFooter$1 = execute(makeRowsFooter, always, noop, structureModified);\n var getTableCellType = getCellsType;\n var getTableColType = getColumnsType;\n var getTableRowType = getRowsType;\n return {\n deleteRow: deleteRow,\n deleteColumn: deleteColumn,\n insertRowsBefore: insertRowsBefore$1,\n insertRowsAfter: insertRowsAfter$1,\n insertColumnsBefore: insertColumnsBefore$1,\n insertColumnsAfter: insertColumnsAfter$1,\n mergeCells: mergeCells$1,\n unmergeCells: unmergeCells$1,\n pasteColsBefore: pasteColsBefore$1,\n pasteColsAfter: pasteColsAfter$1,\n pasteRowsBefore: pasteRowsBefore$1,\n pasteRowsAfter: pasteRowsAfter$1,\n pasteCells: pasteCells$1,\n makeCellsHeader: makeCellsHeader$1,\n unmakeCellsHeader: unmakeCellsHeader$1,\n makeColumnsHeader: makeColumnsHeader$1,\n unmakeColumnsHeader: unmakeColumnsHeader$1,\n makeRowsHeader: makeRowsHeader$1,\n makeRowsBody: makeRowsBody$1,\n makeRowsFooter: makeRowsFooter$1,\n getTableRowType: getTableRowType,\n getTableCellType: getTableCellType,\n getTableColType: getTableColType\n };\n };\n var constrainSpan = function (element, property, value) {\n var currentColspan = getAttrValue(element, property, 1);\n if (value === 1 || currentColspan <= 1) {\n remove$7(element, property);\n }\n else {\n set$2(element, property, Math.min(value, currentColspan));\n }\n };\n var isColInRange = function (minColRange, maxColRange) { return function (cell) {\n var endCol = cell.column + cell.colspan - 1;\n var startCol = cell.column;\n return endCol >= minColRange && startCol < maxColRange;\n }; };\n var generateColGroup = function (house, minColRange, maxColRange) {\n if (Warehouse.hasColumns(house)) {\n var colsToCopy = filter$2(Warehouse.justColumns(house), isColInRange(minColRange, maxColRange));\n var copiedCols = map$1(colsToCopy, function (c) {\n var clonedCol = deep(c.element);\n constrainSpan(clonedCol, 'span', maxColRange - minColRange);\n return clonedCol;\n });\n var fakeColgroup = SugarElement.fromTag('colgroup');\n append(fakeColgroup, copiedCols);\n return [fakeColgroup];\n }\n else {\n return [];\n }\n };\n var generateRows = function (house, minColRange, maxColRange) { return map$1(house.all, function (row) {\n var cellsToCopy = filter$2(row.cells, isColInRange(minColRange, maxColRange));\n var copiedCells = map$1(cellsToCopy, function (cell) {\n var clonedCell = deep(cell.element);\n constrainSpan(clonedCell, 'colspan', maxColRange - minColRange);\n return clonedCell;\n });\n var fakeTR = SugarElement.fromTag('tr');\n append(fakeTR, copiedCells);\n return fakeTR;\n }); };\n var copyCols = function (table, target) {\n var house = Warehouse.fromTable(table);\n var details = onUnlockedCells(house, target);\n return details.map(function (selectedCells) {\n var lastSelectedCell = selectedCells[selectedCells.length - 1];\n var minColRange = selectedCells[0].column;\n var maxColRange = lastSelectedCell.column + lastSelectedCell.colspan;\n var fakeColGroups = generateColGroup(house, minColRange, maxColRange);\n var fakeRows = generateRows(house, minColRange, maxColRange);\n return __spreadArray(__spreadArray([], fakeColGroups, true), fakeRows, true);\n });\n };\n var copyRows = function (table, target, generators) {\n var warehouse = Warehouse.fromTable(table);\n var details = onCells(warehouse, target);\n return details.bind(function (selectedCells) {\n var grid = toGrid(warehouse, generators, false);\n var rows = extractGridDetails(grid).rows;\n var slicedGrid = rows.slice(selectedCells[0].row, selectedCells[selectedCells.length - 1].row + selectedCells[selectedCells.length - 1].rowspan);\n var filteredGrid = bind$2(slicedGrid, function (row) {\n var newCells = filter$2(row.cells, function (cell) { return !cell.isLocked; });\n return newCells.length > 0 ? [__assign(__assign({}, row), { cells: newCells })] : [];\n });\n var slicedDetails = toDetailList(filteredGrid);\n return someIf(slicedDetails.length > 0, slicedDetails);\n }).map(function (slicedDetails) { return copy(slicedDetails); });\n };\n var adt$5 = Adt.generate([\n { invalid: ['raw'] },\n { pixels: ['value'] },\n { percent: ['value'] }\n ]);\n var validateFor = function (suffix, type, value) {\n var rawAmount = value.substring(0, value.length - suffix.length);\n var amount = parseFloat(rawAmount);\n return rawAmount === amount.toString() ? type(amount) : adt$5.invalid(value);\n };\n var from = function (value) {\n if (endsWith(value, '%')) {\n return validateFor('%', adt$5.percent, value);\n }\n if (endsWith(value, 'px')) {\n return validateFor('px', adt$5.pixels, value);\n }\n return adt$5.invalid(value);\n };\n var Size = __assign(__assign({}, adt$5), { from: from });\n var redistributeToPercent = function (widths, totalWidth) {\n return map$1(widths, function (w) {\n var colType = Size.from(w);\n return colType.fold(function () {\n return w;\n }, function (px) {\n var ratio = px / totalWidth * 100;\n return ratio + '%';\n }, function (pc) {\n return pc + '%';\n });\n });\n };\n var redistributeToPx = function (widths, totalWidth, newTotalWidth) {\n var scale = newTotalWidth / totalWidth;\n return map$1(widths, function (w) {\n var colType = Size.from(w);\n return colType.fold(function () {\n return w;\n }, function (px) {\n return px * scale + 'px';\n }, function (pc) {\n return pc / 100 * newTotalWidth + 'px';\n });\n });\n };\n var redistributeEmpty = function (newWidthType, columns) {\n var f = newWidthType.fold(function () { return constant(''); }, function (pixels) {\n var num = pixels / columns;\n return constant(num + 'px');\n }, function () {\n var num = 100 / columns;\n return constant(num + '%');\n });\n return range$1(columns, f);\n };\n var redistributeValues = function (newWidthType, widths, totalWidth) {\n return newWidthType.fold(function () {\n return widths;\n }, function (px) {\n return redistributeToPx(widths, totalWidth, px);\n }, function (_pc) {\n return redistributeToPercent(widths, totalWidth);\n });\n };\n var redistribute$1 = function (widths, totalWidth, newWidth) {\n var newType = Size.from(newWidth);\n var floats = forall(widths, function (s) {\n return s === '0px';\n }) ? redistributeEmpty(newType, widths.length) : redistributeValues(newType, widths, totalWidth);\n return normalize(floats);\n };\n var sum = function (values, fallback) {\n if (values.length === 0) {\n return fallback;\n }\n return foldr(values, function (rest, v) {\n return Size.from(v).fold(constant(0), identity, identity) + rest;\n }, 0);\n };\n var roundDown = function (num, unit) {\n var floored = Math.floor(num);\n return {\n value: floored + unit,\n remainder: num - floored\n };\n };\n var add$3 = function (value, amount) {\n return Size.from(value).fold(constant(value), function (px) {\n return px + amount + 'px';\n }, function (pc) {\n return pc + amount + '%';\n });\n };\n var normalize = function (values) {\n if (values.length === 0) {\n return values;\n }\n var scan = foldr(values, function (rest, value) {\n var info = Size.from(value).fold(function () { return ({\n value: value,\n remainder: 0\n }); }, function (num) { return roundDown(num, 'px'); }, function (num) { return ({\n value: num + '%',\n remainder: 0\n }); });\n return {\n output: [info.value].concat(rest.output),\n remainder: rest.remainder + info.remainder\n };\n }, {\n output: [],\n remainder: 0\n });\n var r = scan.output;\n return r.slice(0, r.length - 1).concat([add$3(r[r.length - 1], Math.round(scan.remainder))]);\n };\n var validate = Size.from;\n var redistributeToW = function (newWidths, cells, unit) {\n each$2(cells, function (cell) {\n var widths = newWidths.slice(cell.column, cell.colspan + cell.column);\n var w = sum(widths, minWidth());\n set$1(cell.element, 'width', w + unit);\n });\n };\n var redistributeToColumns = function (newWidths, columns, unit) {\n each$2(columns, function (column, index) {\n var width = sum([newWidths[index]], minWidth());\n set$1(column.element, 'width', width + unit);\n });\n };\n var redistributeToH = function (newHeights, rows, cells, unit) {\n each$2(cells, function (cell) {\n var heights = newHeights.slice(cell.row, cell.rowspan + cell.row);\n var h = sum(heights, minHeight());\n set$1(cell.element, 'height', h + unit);\n });\n each$2(rows, function (row, i) {\n set$1(row.element, 'height', newHeights[i]);\n });\n };\n var getUnit = function (newSize) {\n return validate(newSize).fold(constant('px'), constant('px'), constant('%'));\n };\n var redistribute = function (table, optWidth, optHeight) {\n var warehouse = Warehouse.fromTable(table);\n var rows = warehouse.all;\n var cells = Warehouse.justCells(warehouse);\n var columns = Warehouse.justColumns(warehouse);\n optWidth.each(function (newWidth) {\n var widthUnit = getUnit(newWidth);\n var totalWidth = get$9(table);\n var oldWidths = getRawWidths(warehouse, table);\n var nuWidths = redistribute$1(oldWidths, totalWidth, newWidth);\n if (Warehouse.hasColumns(warehouse)) {\n redistributeToColumns(nuWidths, columns, widthUnit);\n }\n else {\n redistributeToW(nuWidths, cells, widthUnit);\n }\n set$1(table, 'width', newWidth);\n });\n optHeight.each(function (newHeight) {\n var hUnit = getUnit(newHeight);\n var totalHeight = get$8(table);\n var oldHeights = getRawHeights(warehouse, table, height);\n var nuHeights = redistribute$1(oldHeights, totalHeight, newHeight);\n redistributeToH(nuHeights, rows, cells, hUnit);\n set$1(table, 'height', newHeight);\n });\n };\n var isPercentSizing = isPercentSizing$1;\n var isPixelSizing = isPixelSizing$1;\n var isNoneSizing = isNoneSizing$1;\n var cleanupLegacyAttributes = function (element) {\n remove$7(element, 'width');\n };\n var convertToPercentSize = function (table) {\n var newWidth = getPercentTableWidth(table);\n redistribute(table, Optional.some(newWidth), Optional.none());\n cleanupLegacyAttributes(table);\n };\n var convertToPixelSize = function (table) {\n var newWidth = getPixelTableWidth(table);\n redistribute(table, Optional.some(newWidth), Optional.none());\n cleanupLegacyAttributes(table);\n };\n var convertToNoneSize = function (table) {\n remove$5(table, 'width');\n var columns = columns$1(table);\n var rowElements = columns.length > 0 ? columns : cells$1(table);\n each$2(rowElements, function (cell) {\n remove$5(cell, 'width');\n cleanupLegacyAttributes(cell);\n });\n cleanupLegacyAttributes(table);\n };\n var DefaultRenderOptions = {\n styles: {\n 'border-collapse': 'collapse',\n 'width': '100%'\n },\n attributes: { border: '1' },\n colGroups: false\n };\n var tableHeaderCell = function () { return SugarElement.fromTag('th'); };\n var tableCell = function () { return SugarElement.fromTag('td'); };\n var tableColumn = function () { return SugarElement.fromTag('col'); };\n var createRow = function (columns, rowHeaders, columnHeaders, rowIndex) {\n var tr = SugarElement.fromTag('tr');\n for (var j = 0; j < columns; j++) {\n var td = rowIndex < rowHeaders || j < columnHeaders ? tableHeaderCell() : tableCell();\n if (j < columnHeaders) {\n set$2(td, 'scope', 'row');\n }\n if (rowIndex < rowHeaders) {\n set$2(td, 'scope', 'col');\n }\n append$1(td, SugarElement.fromTag('br'));\n append$1(tr, td);\n }\n return tr;\n };\n var createGroupRow = function (columns) {\n var columnGroup = SugarElement.fromTag('colgroup');\n range$1(columns, function () { return append$1(columnGroup, tableColumn()); });\n return columnGroup;\n };\n var createRows = function (rows, columns, rowHeaders, columnHeaders) { return range$1(rows, function (r) { return createRow(columns, rowHeaders, columnHeaders, r); }); };\n var render = function (rows, columns, rowHeaders, columnHeaders, headerType, renderOpts) {\n if (renderOpts === void 0) { renderOpts = DefaultRenderOptions; }\n var table = SugarElement.fromTag('table');\n var rowHeadersGoInThead = headerType !== 'cells';\n setAll(table, renderOpts.styles);\n setAll$1(table, renderOpts.attributes);\n if (renderOpts.colGroups) {\n append$1(table, createGroupRow(columns));\n }\n var actualRowHeaders = Math.min(rows, rowHeaders);\n if (rowHeadersGoInThead && rowHeaders > 0) {\n var thead = SugarElement.fromTag('thead');\n append$1(table, thead);\n var theadRowHeaders = headerType === 'sectionCells' ? actualRowHeaders : 0;\n var theadRows = createRows(rowHeaders, columns, theadRowHeaders, columnHeaders);\n append(thead, theadRows);\n }\n var tbody = SugarElement.fromTag('tbody');\n append$1(table, tbody);\n var numRows = rowHeadersGoInThead ? rows - actualRowHeaders : rows;\n var numRowHeaders = rowHeadersGoInThead ? 0 : rowHeaders;\n var tbodyRows = createRows(numRows, columns, numRowHeaders, columnHeaders);\n append(tbody, tbodyRows);\n return table;\n };\n var get$4 = function (element) { return element.dom.innerHTML; };\n var getOuter = function (element) {\n var container = SugarElement.fromTag('div');\n var clone = SugarElement.fromDom(element.dom.cloneNode(true));\n append$1(container, clone);\n return get$4(container);\n };\n var placeCaretInCell = function (editor, cell) {\n editor.selection.select(cell.dom, true);\n editor.selection.collapse(true);\n };\n var selectFirstCellInTable = function (editor, tableElm) {\n descendant(tableElm, 'td,th').each(curry(placeCaretInCell, editor));\n };\n var fireEvents = function (editor, table) {\n each$2(descendants(table, 'tr'), function (row) {\n fireNewRow(editor, row.dom);\n each$2(descendants(row, 'th,td'), function (cell) {\n fireNewCell(editor, cell.dom);\n });\n });\n };\n var isPercentage = function (width) { return isString(width) && width.indexOf('%') !== -1; };\n var insert = function (editor, columns, rows, colHeaders, rowHeaders) {\n var defaultStyles = getTableDefaultStyles(editor);\n var options = {\n styles: defaultStyles,\n attributes: getTableDefaultAttributes(editor),\n colGroups: tableUseColumnGroup(editor)\n };\n editor.undoManager.ignore(function () {\n var table = render(rows, columns, rowHeaders, colHeaders, getTableHeaderType(editor), options);\n set$2(table, 'data-mce-id', '__mce');\n var html = getOuter(table);\n editor.insertContent(html);\n editor.addVisual();\n });\n return descendant(getBody(editor), 'table[data-mce-id=\"__mce\"]').map(function (table) {\n if (isTablePixelsForced(editor)) {\n convertToPixelSize(table);\n }\n else if (isTableResponsiveForced(editor)) {\n convertToNoneSize(table);\n }\n else if (isTablePercentagesForced(editor) || isPercentage(defaultStyles.width)) {\n convertToPercentSize(table);\n }\n removeDataStyle(table);\n remove$7(table, 'data-mce-id');\n fireEvents(editor, table);\n selectFirstCellInTable(editor, table);\n return table.dom;\n }).getOrNull();\n };\n var insertTable = function (editor, rows, columns, options) {\n if (options === void 0) { options = {}; }\n var checkInput = function (val) { return isNumber(val) && val > 0; };\n if (checkInput(rows) && checkInput(columns)) {\n var headerRows = options.headerRows || 0;\n var headerColumns = options.headerColumns || 0;\n return insert(editor, columns, rows, headerColumns, headerRows);\n }\n else {\n console.error('Invalid values for mceInsertTable - rows and columns values are required to insert a table.');\n return null;\n }\n };\n var global = tinymce.util.Tools.resolve('tinymce.FakeClipboard');\n var tableTypeBase = 'x-tinymce/dom-table-';\n var tableTypeRow = tableTypeBase + 'rows';\n var tableTypeColumn = tableTypeBase + 'columns';\n var setData = function (items) {\n var fakeClipboardItem = global.FakeClipboardItem(items);\n global.write([fakeClipboardItem]);\n };\n var getData = function (type) {\n var _a;\n var items = (_a = global.read()) !== null && _a !== void 0 ? _a : [];\n return findMap(items, function (item) { return Optional.from(item.getType(type)); });\n };\n var clearData = function (type) {\n if (getData(type).isSome()) {\n global.clear();\n }\n };\n var setRows = function (rowsOpt) {\n rowsOpt.fold(clearRows, function (rows) {\n var _c;\n return setData((_c = {}, _c[tableTypeRow] = rows, _c));\n });\n };\n var getRows = function () { return getData(tableTypeRow); };\n var clearRows = function () { return clearData(tableTypeRow); };\n var setColumns = function (columnsOpt) {\n columnsOpt.fold(clearColumns, function (columns) {\n var _c;\n return setData((_c = {}, _c[tableTypeColumn] = columns, _c));\n });\n };\n var getColumns = function () { return getData(tableTypeColumn); };\n var clearColumns = function () { return clearData(tableTypeColumn); };\n var getSelectionStartCellOrCaption = function (editor) { return getSelectionCellOrCaption(getSelectionStart(editor), getIsRoot(editor)).filter(isInEditableContext$1); };\n var getSelectionStartCell = function (editor) { return getSelectionCell(getSelectionStart(editor), getIsRoot(editor)).filter(isInEditableContext$1); };\n var registerCommands = function (editor, actions) {\n var isRoot = getIsRoot(editor);\n var eraseTable = function () { return getSelectionStartCellOrCaption(editor).each(function (cellOrCaption) {\n table(cellOrCaption, isRoot).filter(not(isRoot)).each(function (table) {\n var cursor = SugarElement.fromText('');\n after$5(table, cursor);\n remove$6(table);\n if (editor.dom.isEmpty(editor.getBody())) {\n editor.setContent('');\n editor.selection.setCursorLocation();\n }\n else {\n var rng = editor.dom.createRng();\n rng.setStart(cursor.dom, 0);\n rng.setEnd(cursor.dom, 0);\n editor.selection.setRng(rng);\n editor.nodeChanged();\n }\n });\n }); };\n var setSizingMode = function (sizing) { return getSelectionStartCellOrCaption(editor).each(function (cellOrCaption) {\n var isForcedSizing = isTableResponsiveForced(editor) || isTablePixelsForced(editor) || isTablePercentagesForced(editor);\n if (!isForcedSizing) {\n table(cellOrCaption, isRoot).each(function (table) {\n if (sizing === 'relative' && !isPercentSizing(table)) {\n convertToPercentSize(table);\n }\n else if (sizing === 'fixed' && !isPixelSizing(table)) {\n convertToPixelSize(table);\n }\n else if (sizing === 'responsive' && !isNoneSizing(table)) {\n convertToNoneSize(table);\n }\n removeDataStyle(table);\n fireTableModified(editor, table.dom, structureModified);\n });\n }\n }); };\n var getTableFromCell = function (cell) { return table(cell, isRoot); };\n var performActionOnSelection = function (action) { return getSelectionStartCell(editor).bind(function (cell) { return getTableFromCell(cell).map(function (table) { return action(table, cell); }); }); };\n var toggleTableClass = function (_ui, clazz) {\n performActionOnSelection(function (table) {\n editor.formatter.toggle('tableclass', { value: clazz }, table.dom);\n fireTableModified(editor, table.dom, styleModified);\n });\n };\n var toggleTableCellClass = function (_ui, clazz) {\n performActionOnSelection(function (table) {\n var selectedCells = getCellsFromSelection(editor);\n var allHaveClass = forall(selectedCells, function (cell) { return editor.formatter.match('tablecellclass', { value: clazz }, cell.dom); });\n var formatterAction = allHaveClass ? editor.formatter.remove : editor.formatter.apply;\n each$2(selectedCells, function (cell) { return formatterAction('tablecellclass', { value: clazz }, cell.dom); });\n fireTableModified(editor, table.dom, styleModified);\n });\n };\n var toggleCaption = function () {\n getSelectionStartCellOrCaption(editor).each(function (cellOrCaption) {\n table(cellOrCaption, isRoot).each(function (table) {\n child(table, 'caption').fold(function () {\n var caption = SugarElement.fromTag('caption');\n append$1(caption, SugarElement.fromText('Caption'));\n appendAt(table, caption, 0);\n editor.selection.setCursorLocation(caption.dom, 0);\n }, function (caption) {\n if (isTag('caption')(cellOrCaption)) {\n one('td', table).each(function (td) { return editor.selection.setCursorLocation(td.dom, 0); });\n }\n remove$6(caption);\n });\n fireTableModified(editor, table.dom, structureModified);\n });\n });\n };\n var postExecute = function (_data) {\n editor.focus();\n };\n var actOnSelection = function (execute, noEvents) {\n if (noEvents === void 0) { noEvents = false; }\n return performActionOnSelection(function (table, startCell) {\n var targets = forMenu(getCellsFromSelection(editor), table, startCell);\n execute(table, targets, noEvents).each(postExecute);\n });\n };\n var copyRowSelection = function () { return performActionOnSelection(function (table, startCell) {\n var targets = forMenu(getCellsFromSelection(editor), table, startCell);\n var generators = cellOperations(noop, SugarElement.fromDom(editor.getDoc()), Optional.none());\n return copyRows(table, targets, generators);\n }); };\n var copyColSelection = function () { return performActionOnSelection(function (table, startCell) {\n var targets = forMenu(getCellsFromSelection(editor), table, startCell);\n return copyCols(table, targets);\n }); };\n var pasteOnSelection = function (execute, getRows) { return getRows().each(function (rows) {\n var clonedRows = map$1(rows, function (row) { return deep(row); });\n performActionOnSelection(function (table, startCell) {\n var generators = paste$1(SugarElement.fromDom(editor.getDoc()));\n var targets = pasteRows(getCellsFromSelection(editor), startCell, clonedRows, generators);\n execute(table, targets).each(postExecute);\n });\n }); };\n var actOnType = function (getAction) { return function (_ui, args) { return get$c(args, 'type').each(function (type) {\n actOnSelection(getAction(type), args.no_events);\n }); }; };\n each$1({\n mceTableSplitCells: function () { return actOnSelection(actions.unmergeCells); },\n mceTableMergeCells: function () { return actOnSelection(actions.mergeCells); },\n mceTableInsertRowBefore: function () { return actOnSelection(actions.insertRowsBefore); },\n mceTableInsertRowAfter: function () { return actOnSelection(actions.insertRowsAfter); },\n mceTableInsertColBefore: function () { return actOnSelection(actions.insertColumnsBefore); },\n mceTableInsertColAfter: function () { return actOnSelection(actions.insertColumnsAfter); },\n mceTableDeleteCol: function () { return actOnSelection(actions.deleteColumn); },\n mceTableDeleteRow: function () { return actOnSelection(actions.deleteRow); },\n mceTableCutCol: function () { return copyColSelection().each(function (selection) {\n setColumns(selection);\n actOnSelection(actions.deleteColumn);\n }); },\n mceTableCutRow: function () { return copyRowSelection().each(function (selection) {\n setRows(selection);\n actOnSelection(actions.deleteRow);\n }); },\n mceTableCopyCol: function () { return copyColSelection().each(function (selection) { return setColumns(selection); }); },\n mceTableCopyRow: function () { return copyRowSelection().each(function (selection) { return setRows(selection); }); },\n mceTablePasteColBefore: function () { return pasteOnSelection(actions.pasteColsBefore, getColumns); },\n mceTablePasteColAfter: function () { return pasteOnSelection(actions.pasteColsAfter, getColumns); },\n mceTablePasteRowBefore: function () { return pasteOnSelection(actions.pasteRowsBefore, getRows); },\n mceTablePasteRowAfter: function () { return pasteOnSelection(actions.pasteRowsAfter, getRows); },\n mceTableDelete: eraseTable,\n mceTableCellToggleClass: toggleTableCellClass,\n mceTableToggleClass: toggleTableClass,\n mceTableToggleCaption: toggleCaption,\n mceTableSizingMode: function (_ui, sizing) { return setSizingMode(sizing); },\n mceTableCellType: actOnType(function (type) { return type === 'th' ? actions.makeCellsHeader : actions.unmakeCellsHeader; }),\n mceTableColType: actOnType(function (type) { return type === 'th' ? actions.makeColumnsHeader : actions.unmakeColumnsHeader; }),\n mceTableRowType: actOnType(function (type) {\n switch (type) {\n case 'header':\n return actions.makeRowsHeader;\n case 'footer':\n return actions.makeRowsFooter;\n default:\n return actions.makeRowsBody;\n }\n })\n }, function (func, name) { return editor.addCommand(name, func); });\n editor.addCommand('mceInsertTable', function (_ui, args) {\n insertTable(editor, args.rows, args.columns, args.options);\n });\n editor.addCommand('mceTableApplyCellStyle', function (_ui, args) {\n var getFormatName = function (style) { return 'tablecell' + style.toLowerCase().replace('-', ''); };\n if (!isObject(args)) {\n return;\n }\n var cells = filter$2(getCellsFromSelection(editor), isInEditableContext$1);\n if (cells.length === 0) {\n return;\n }\n var validArgs = filter$1(args, function (value, style) { return editor.formatter.has(getFormatName(style)) && isString(value); });\n if (isEmpty(validArgs)) {\n return;\n }\n each$1(validArgs, function (value, style) {\n var formatName = getFormatName(style);\n each$2(cells, function (cell) {\n if (value === '') {\n editor.formatter.remove(formatName, { value: null }, cell.dom, true);\n }\n else {\n editor.formatter.apply(formatName, { value: value }, cell.dom);\n }\n });\n });\n getTableFromCell(cells[0]).each(function (table) { return fireTableModified(editor, table.dom, styleModified); });\n });\n };\n var registerQueryCommands = function (editor, actions) {\n var isRoot = getIsRoot(editor);\n var lookupOnSelection = function (action) { return getSelectionCell(getSelectionStart(editor)).bind(function (cell) { return table(cell, isRoot).map(function (table) {\n var targets = forMenu(getCellsFromSelection(editor), table, cell);\n return action(table, targets);\n }); }).getOr(''); };\n each$1({\n mceTableRowType: function () { return lookupOnSelection(actions.getTableRowType); },\n mceTableCellType: function () { return lookupOnSelection(actions.getTableCellType); },\n mceTableColType: function () { return lookupOnSelection(actions.getTableColType); }\n }, function (func, name) { return editor.addQueryValueHandler(name, func); });\n };\n var adt$4 = Adt.generate([\n { before: ['element'] },\n {\n on: [\n 'element',\n 'offset'\n ]\n },\n { after: ['element'] }\n ]);\n var cata$1 = function (subject, onBefore, onOn, onAfter) { return subject.fold(onBefore, onOn, onAfter); };\n var getStart$1 = function (situ) { return situ.fold(identity, identity, identity); };\n var before$2 = adt$4.before;\n var on = adt$4.on;\n var after$3 = adt$4.after;\n var Situ = {\n before: before$2,\n on: on,\n after: after$3,\n cata: cata$1,\n getStart: getStart$1\n };\n var create$4 = function (selection, kill) { return ({\n selection: selection,\n kill: kill\n }); };\n var Response = { create: create$4 };\n var selectNode = function (win, element) {\n var rng = win.document.createRange();\n rng.selectNode(element.dom);\n return rng;\n };\n var selectNodeContents = function (win, element) {\n var rng = win.document.createRange();\n selectNodeContentsUsing(rng, element);\n return rng;\n };\n var selectNodeContentsUsing = function (rng, element) { return rng.selectNodeContents(element.dom); };\n var setStart = function (rng, situ) {\n situ.fold(function (e) {\n rng.setStartBefore(e.dom);\n }, function (e, o) {\n rng.setStart(e.dom, o);\n }, function (e) {\n rng.setStartAfter(e.dom);\n });\n };\n var setFinish = function (rng, situ) {\n situ.fold(function (e) {\n rng.setEndBefore(e.dom);\n }, function (e, o) {\n rng.setEnd(e.dom, o);\n }, function (e) {\n rng.setEndAfter(e.dom);\n });\n };\n var relativeToNative = function (win, startSitu, finishSitu) {\n var range = win.document.createRange();\n setStart(range, startSitu);\n setFinish(range, finishSitu);\n return range;\n };\n var exactToNative = function (win, start, soffset, finish, foffset) {\n var rng = win.document.createRange();\n rng.setStart(start.dom, soffset);\n rng.setEnd(finish.dom, foffset);\n return rng;\n };\n var toRect = function (rect) { return ({\n left: rect.left,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n width: rect.width,\n height: rect.height\n }); };\n var getFirstRect$1 = function (rng) {\n var rects = rng.getClientRects();\n var rect = rects.length > 0 ? rects[0] : rng.getBoundingClientRect();\n return rect.width > 0 || rect.height > 0 ? Optional.some(rect).map(toRect) : Optional.none();\n };\n var adt$3 = Adt.generate([\n {\n ltr: [\n 'start',\n 'soffset',\n 'finish',\n 'foffset'\n ]\n },\n {\n rtl: [\n 'start',\n 'soffset',\n 'finish',\n 'foffset'\n ]\n }\n ]);\n var fromRange = function (win, type, range) { return type(SugarElement.fromDom(range.startContainer), range.startOffset, SugarElement.fromDom(range.endContainer), range.endOffset); };\n var getRanges = function (win, selection) { return selection.match({\n domRange: function (rng) {\n return {\n ltr: constant(rng),\n rtl: Optional.none\n };\n },\n relative: function (startSitu, finishSitu) {\n return {\n ltr: cached(function () { return relativeToNative(win, startSitu, finishSitu); }),\n rtl: cached(function () { return Optional.some(relativeToNative(win, finishSitu, startSitu)); })\n };\n },\n exact: function (start, soffset, finish, foffset) {\n return {\n ltr: cached(function () { return exactToNative(win, start, soffset, finish, foffset); }),\n rtl: cached(function () { return Optional.some(exactToNative(win, finish, foffset, start, soffset)); })\n };\n }\n }); };\n var doDiagnose = function (win, ranges) {\n var rng = ranges.ltr();\n if (rng.collapsed) {\n var reversed = ranges.rtl().filter(function (rev) { return rev.collapsed === false; });\n return reversed.map(function (rev) { return adt$3.rtl(SugarElement.fromDom(rev.endContainer), rev.endOffset, SugarElement.fromDom(rev.startContainer), rev.startOffset); }).getOrThunk(function () { return fromRange(win, adt$3.ltr, rng); });\n }\n else {\n return fromRange(win, adt$3.ltr, rng);\n }\n };\n var diagnose = function (win, selection) {\n var ranges = getRanges(win, selection);\n return doDiagnose(win, ranges);\n };\n var asLtrRange = function (win, selection) {\n var diagnosis = diagnose(win, selection);\n return diagnosis.match({\n ltr: function (start, soffset, finish, foffset) {\n var rng = win.document.createRange();\n rng.setStart(start.dom, soffset);\n rng.setEnd(finish.dom, foffset);\n return rng;\n },\n rtl: function (start, soffset, finish, foffset) {\n var rng = win.document.createRange();\n rng.setStart(finish.dom, foffset);\n rng.setEnd(start.dom, soffset);\n return rng;\n }\n });\n };\n adt$3.ltr;\n adt$3.rtl;\n var create$3 = function (start, soffset, finish, foffset) { return ({\n start: start,\n soffset: soffset,\n finish: finish,\n foffset: foffset\n }); };\n var SimRange = { create: create$3 };\n var create$2 = function (start, soffset, finish, foffset) {\n return {\n start: Situ.on(start, soffset),\n finish: Situ.on(finish, foffset)\n };\n };\n var Situs = { create: create$2 };\n var convertToRange = function (win, selection) {\n var rng = asLtrRange(win, selection);\n return SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset);\n };\n var makeSitus = Situs.create;\n var sync = function (container, isRoot, start, soffset, finish, foffset, selectRange) {\n if (!(eq$1(start, finish) && soffset === foffset)) {\n return closest$1(start, 'td,th', isRoot).bind(function (s) {\n return closest$1(finish, 'td,th', isRoot).bind(function (f) {\n return detect(container, isRoot, s, f, selectRange);\n });\n });\n }\n else {\n return Optional.none();\n }\n };\n var detect = function (container, isRoot, start, finish, selectRange) {\n if (!eq$1(start, finish)) {\n return identify(start, finish, isRoot).bind(function (cellSel) {\n var boxes = cellSel.boxes.getOr([]);\n if (boxes.length > 1) {\n selectRange(container, boxes, cellSel.start, cellSel.finish);\n return Optional.some(Response.create(Optional.some(makeSitus(start, 0, start, getEnd(start))), true));\n }\n else {\n return Optional.none();\n }\n });\n }\n else {\n return Optional.none();\n }\n };\n var update = function (rows, columns, container, selected, annotations) {\n var updateSelection = function (newSels) {\n annotations.clearBeforeUpdate(container);\n annotations.selectRange(container, newSels.boxes, newSels.start, newSels.finish);\n return newSels.boxes;\n };\n return shiftSelection(selected, rows, columns, annotations.firstSelectedSelector, annotations.lastSelectedSelector).map(updateSelection);\n };\n var traverse = function (item, mode) { return ({\n item: item,\n mode: mode\n }); };\n var backtrack = function (universe, item, _direction, transition) {\n if (transition === void 0) { transition = sidestep; }\n return universe.property().parent(item).map(function (p) {\n return traverse(p, transition);\n });\n };\n var sidestep = function (universe, item, direction, transition) {\n if (transition === void 0) { transition = advance; }\n return direction.sibling(universe, item).map(function (p) {\n return traverse(p, transition);\n });\n };\n var advance = function (universe, item, direction, transition) {\n if (transition === void 0) { transition = advance; }\n var children = universe.property().children(item);\n var result = direction.first(children);\n return result.map(function (r) {\n return traverse(r, transition);\n });\n };\n var successors = [\n {\n current: backtrack,\n next: sidestep,\n fallback: Optional.none()\n },\n {\n current: sidestep,\n next: advance,\n fallback: Optional.some(backtrack)\n },\n {\n current: advance,\n next: advance,\n fallback: Optional.some(sidestep)\n }\n ];\n var go = function (universe, item, mode, direction, rules) {\n if (rules === void 0) { rules = successors; }\n var ruleOpt = find$1(rules, function (succ) {\n return succ.current === mode;\n });\n return ruleOpt.bind(function (rule) {\n return rule.current(universe, item, direction, rule.next).orThunk(function () {\n return rule.fallback.bind(function (fb) {\n return go(universe, item, fb, direction);\n });\n });\n });\n };\n var left$1 = function () {\n var sibling = function (universe, item) {\n return universe.query().prevSibling(item);\n };\n var first = function (children) {\n return children.length > 0 ? Optional.some(children[children.length - 1]) : Optional.none();\n };\n return {\n sibling: sibling,\n first: first\n };\n };\n var right$1 = function () {\n var sibling = function (universe, item) {\n return universe.query().nextSibling(item);\n };\n var first = function (children) {\n return children.length > 0 ? Optional.some(children[0]) : Optional.none();\n };\n return {\n sibling: sibling,\n first: first\n };\n };\n var Walkers = {\n left: left$1,\n right: right$1\n };\n var hone = function (universe, item, predicate, mode, direction, isRoot) {\n var next = go(universe, item, mode, direction);\n return next.bind(function (n) {\n if (isRoot(n.item)) {\n return Optional.none();\n }\n else {\n return predicate(n.item) ? Optional.some(n.item) : hone(universe, n.item, predicate, n.mode, direction, isRoot);\n }\n });\n };\n var left = function (universe, item, predicate, isRoot) {\n return hone(universe, item, predicate, sidestep, Walkers.left(), isRoot);\n };\n var right = function (universe, item, predicate, isRoot) {\n return hone(universe, item, predicate, sidestep, Walkers.right(), isRoot);\n };\n var isLeaf = function (universe) { return function (element) { return universe.property().children(element).length === 0; }; };\n var before$1 = function (universe, item, isRoot) {\n return seekLeft$1(universe, item, isLeaf(universe), isRoot);\n };\n var after$2 = function (universe, item, isRoot) {\n return seekRight$1(universe, item, isLeaf(universe), isRoot);\n };\n var seekLeft$1 = left;\n var seekRight$1 = right;\n var universe = DomUniverse();\n var before = function (element, isRoot) {\n return before$1(universe, element, isRoot);\n };\n var after$1 = function (element, isRoot) {\n return after$2(universe, element, isRoot);\n };\n var seekLeft = function (element, predicate, isRoot) {\n return seekLeft$1(universe, element, predicate, isRoot);\n };\n var seekRight = function (element, predicate, isRoot) {\n return seekRight$1(universe, element, predicate, isRoot);\n };\n var ancestor = function (scope, predicate, isRoot) { return ancestor$2(scope, predicate, isRoot).isSome(); };\n var adt$2 = Adt.generate([\n { none: ['message'] },\n { success: [] },\n { failedUp: ['cell'] },\n { failedDown: ['cell'] }\n ]);\n var isOverlapping = function (bridge, before, after) {\n var beforeBounds = bridge.getRect(before);\n var afterBounds = bridge.getRect(after);\n return afterBounds.right > beforeBounds.left && afterBounds.left < beforeBounds.right;\n };\n var isRow = function (elem) {\n return closest$1(elem, 'tr');\n };\n var verify = function (bridge, before, beforeOffset, after, afterOffset, failure, isRoot) {\n return closest$1(after, 'td,th', isRoot).bind(function (afterCell) {\n return closest$1(before, 'td,th', isRoot).map(function (beforeCell) {\n if (!eq$1(afterCell, beforeCell)) {\n return sharedOne(isRow, [\n afterCell,\n beforeCell\n ]).fold(function () {\n return isOverlapping(bridge, beforeCell, afterCell) ? adt$2.success() : failure(beforeCell);\n }, function (_sharedRow) {\n return failure(beforeCell);\n });\n }\n else {\n return eq$1(after, afterCell) && getEnd(afterCell) === afterOffset ? failure(beforeCell) : adt$2.none('in same cell');\n }\n });\n }).getOr(adt$2.none('default'));\n };\n var cata = function (subject, onNone, onSuccess, onFailedUp, onFailedDown) {\n return subject.fold(onNone, onSuccess, onFailedUp, onFailedDown);\n };\n var BeforeAfter = __assign(__assign({}, adt$2), { verify: verify, cata: cata });\n var inParent = function (parent, children, element, index) { return ({\n parent: parent,\n children: children,\n element: element,\n index: index\n }); };\n var indexInParent = function (element) { return parent(element).bind(function (parent) {\n var children = children$2(parent);\n return indexOf(children, element).map(function (index) { return inParent(parent, children, element, index); });\n }); };\n var indexOf = function (elements, element) { return findIndex(elements, curry(eq$1, element)); };\n var isBr = isTag('br');\n var gatherer = function (cand, gather, isRoot) {\n return gather(cand, isRoot).bind(function (target) {\n return isText(target) && get$6(target).trim().length === 0 ? gatherer(target, gather, isRoot) : Optional.some(target);\n });\n };\n var handleBr = function (isRoot, element, direction) {\n return direction.traverse(element).orThunk(function () {\n return gatherer(element, direction.gather, isRoot);\n }).map(direction.relative);\n };\n var findBr = function (element, offset) {\n return child$2(element, offset).filter(isBr).orThunk(function () {\n return child$2(element, offset - 1).filter(isBr);\n });\n };\n var handleParent = function (isRoot, element, offset, direction) {\n return findBr(element, offset).bind(function (br) {\n return direction.traverse(br).fold(function () {\n return gatherer(br, direction.gather, isRoot).map(direction.relative);\n }, function (adjacent) {\n return indexInParent(adjacent).map(function (info) {\n return Situ.on(info.parent, info.index);\n });\n });\n });\n };\n var tryBr = function (isRoot, element, offset, direction) {\n var target = isBr(element) ? handleBr(isRoot, element, direction) : handleParent(isRoot, element, offset, direction);\n return target.map(function (tgt) {\n return {\n start: tgt,\n finish: tgt\n };\n });\n };\n var process = function (analysis) {\n return BeforeAfter.cata(analysis, function (_message) {\n return Optional.none();\n }, function () {\n return Optional.none();\n }, function (cell) {\n return Optional.some(point(cell, 0));\n }, function (cell) {\n return Optional.some(point(cell, getEnd(cell)));\n });\n };\n var moveDown = function (caret, amount) {\n return {\n left: caret.left,\n top: caret.top + amount,\n right: caret.right,\n bottom: caret.bottom + amount\n };\n };\n var moveUp = function (caret, amount) {\n return {\n left: caret.left,\n top: caret.top - amount,\n right: caret.right,\n bottom: caret.bottom - amount\n };\n };\n var translate = function (caret, xDelta, yDelta) {\n return {\n left: caret.left + xDelta,\n top: caret.top + yDelta,\n right: caret.right + xDelta,\n bottom: caret.bottom + yDelta\n };\n };\n var getTop = function (caret) {\n return caret.top;\n };\n var getBottom = function (caret) {\n return caret.bottom;\n };\n var getPartialBox = function (bridge, element, offset) {\n if (offset >= 0 && offset < getEnd(element)) {\n return bridge.getRangedRect(element, offset, element, offset + 1);\n }\n else if (offset > 0) {\n return bridge.getRangedRect(element, offset - 1, element, offset);\n }\n return Optional.none();\n };\n var toCaret = function (rect) { return ({\n left: rect.left,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom\n }); };\n var getElemBox = function (bridge, element) {\n return Optional.some(bridge.getRect(element));\n };\n var getBoxAt = function (bridge, element, offset) {\n if (isElement(element)) {\n return getElemBox(bridge, element).map(toCaret);\n }\n else if (isText(element)) {\n return getPartialBox(bridge, element, offset).map(toCaret);\n }\n else {\n return Optional.none();\n }\n };\n var getEntireBox = function (bridge, element) {\n if (isElement(element)) {\n return getElemBox(bridge, element).map(toCaret);\n }\n else if (isText(element)) {\n return bridge.getRangedRect(element, 0, element, getEnd(element)).map(toCaret);\n }\n else {\n return Optional.none();\n }\n };\n var JUMP_SIZE = 5;\n var NUM_RETRIES = 100;\n var adt$1 = Adt.generate([\n { none: [] },\n { retry: ['caret'] }\n ]);\n var isOutside = function (caret, box) {\n return caret.left < box.left || Math.abs(box.right - caret.left) < 1 || caret.left > box.right;\n };\n var inOutsideBlock = function (bridge, element, caret) {\n return closest$2(element, isBlock).fold(never, function (cell) {\n return getEntireBox(bridge, cell).exists(function (box) {\n return isOutside(caret, box);\n });\n });\n };\n var adjustDown = function (bridge, element, guessBox, original, caret) {\n var lowerCaret = moveDown(caret, JUMP_SIZE);\n if (Math.abs(guessBox.bottom - original.bottom) < 1) {\n return adt$1.retry(lowerCaret);\n }\n else if (guessBox.top > caret.bottom) {\n return adt$1.retry(lowerCaret);\n }\n else if (guessBox.top === caret.bottom) {\n return adt$1.retry(moveDown(caret, 1));\n }\n else {\n return inOutsideBlock(bridge, element, caret) ? adt$1.retry(translate(lowerCaret, JUMP_SIZE, 0)) : adt$1.none();\n }\n };\n var adjustUp = function (bridge, element, guessBox, original, caret) {\n var higherCaret = moveUp(caret, JUMP_SIZE);\n if (Math.abs(guessBox.top - original.top) < 1) {\n return adt$1.retry(higherCaret);\n }\n else if (guessBox.bottom < caret.top) {\n return adt$1.retry(higherCaret);\n }\n else if (guessBox.bottom === caret.top) {\n return adt$1.retry(moveUp(caret, 1));\n }\n else {\n return inOutsideBlock(bridge, element, caret) ? adt$1.retry(translate(higherCaret, JUMP_SIZE, 0)) : adt$1.none();\n }\n };\n var upMovement = {\n point: getTop,\n adjuster: adjustUp,\n move: moveUp,\n gather: before\n };\n var downMovement = {\n point: getBottom,\n adjuster: adjustDown,\n move: moveDown,\n gather: after$1\n };\n var isAtTable = function (bridge, x, y) {\n return bridge.elementFromPoint(x, y).filter(function (elm) {\n return name(elm) === 'table';\n }).isSome();\n };\n var adjustForTable = function (bridge, movement, original, caret, numRetries) {\n return adjustTil(bridge, movement, original, movement.move(caret, JUMP_SIZE), numRetries);\n };\n var adjustTil = function (bridge, movement, original, caret, numRetries) {\n if (numRetries === 0) {\n return Optional.some(caret);\n }\n if (isAtTable(bridge, caret.left, movement.point(caret))) {\n return adjustForTable(bridge, movement, original, caret, numRetries - 1);\n }\n return bridge.situsFromPoint(caret.left, movement.point(caret)).bind(function (guess) {\n return guess.start.fold(Optional.none, function (element) {\n return getEntireBox(bridge, element).bind(function (guessBox) {\n return movement.adjuster(bridge, element, guessBox, original, caret).fold(Optional.none, function (newCaret) {\n return adjustTil(bridge, movement, original, newCaret, numRetries - 1);\n });\n }).orThunk(function () {\n return Optional.some(caret);\n });\n }, Optional.none);\n });\n };\n var checkScroll = function (movement, adjusted, bridge) {\n if (movement.point(adjusted) > bridge.getInnerHeight()) {\n return Optional.some(movement.point(adjusted) - bridge.getInnerHeight());\n }\n else if (movement.point(adjusted) < 0) {\n return Optional.some(-movement.point(adjusted));\n }\n else {\n return Optional.none();\n }\n };\n var retry = function (movement, bridge, caret) {\n var moved = movement.move(caret, JUMP_SIZE);\n var adjusted = adjustTil(bridge, movement, caret, moved, NUM_RETRIES).getOr(moved);\n return checkScroll(movement, adjusted, bridge).fold(function () {\n return bridge.situsFromPoint(adjusted.left, movement.point(adjusted));\n }, function (delta) {\n bridge.scrollBy(0, delta);\n return bridge.situsFromPoint(adjusted.left, movement.point(adjusted) - delta);\n });\n };\n var Retries = {\n tryUp: curry(retry, upMovement),\n tryDown: curry(retry, downMovement),\n getJumpSize: constant(JUMP_SIZE)\n };\n var MAX_RETRIES = 20;\n var findSpot = function (bridge, isRoot, direction) {\n return bridge.getSelection().bind(function (sel) {\n return tryBr(isRoot, sel.finish, sel.foffset, direction).fold(function () {\n return Optional.some(point(sel.finish, sel.foffset));\n }, function (brNeighbour) {\n var range = bridge.fromSitus(brNeighbour);\n var analysis = BeforeAfter.verify(bridge, sel.finish, sel.foffset, range.finish, range.foffset, direction.failure, isRoot);\n return process(analysis);\n });\n });\n };\n var scan = function (bridge, isRoot, element, offset, direction, numRetries) {\n if (numRetries === 0) {\n return Optional.none();\n }\n return tryCursor(bridge, isRoot, element, offset, direction).bind(function (situs) {\n var range = bridge.fromSitus(situs);\n var analysis = BeforeAfter.verify(bridge, element, offset, range.finish, range.foffset, direction.failure, isRoot);\n return BeforeAfter.cata(analysis, function () {\n return Optional.none();\n }, function () {\n return Optional.some(situs);\n }, function (cell) {\n if (eq$1(element, cell) && offset === 0) {\n return tryAgain(bridge, element, offset, moveUp, direction);\n }\n else {\n return scan(bridge, isRoot, cell, 0, direction, numRetries - 1);\n }\n }, function (cell) {\n if (eq$1(element, cell) && offset === getEnd(cell)) {\n return tryAgain(bridge, element, offset, moveDown, direction);\n }\n else {\n return scan(bridge, isRoot, cell, getEnd(cell), direction, numRetries - 1);\n }\n });\n });\n };\n var tryAgain = function (bridge, element, offset, move, direction) {\n return getBoxAt(bridge, element, offset).bind(function (box) {\n return tryAt(bridge, direction, move(box, Retries.getJumpSize()));\n });\n };\n var tryAt = function (bridge, direction, box) {\n var browser = detect$2().browser;\n if (browser.isChromium() || browser.isSafari() || browser.isFirefox()) {\n return direction.retry(bridge, box);\n }\n else {\n return Optional.none();\n }\n };\n var tryCursor = function (bridge, isRoot, element, offset, direction) {\n return getBoxAt(bridge, element, offset).bind(function (box) {\n return tryAt(bridge, direction, box);\n });\n };\n var handle$1 = function (bridge, isRoot, direction) {\n return findSpot(bridge, isRoot, direction).bind(function (spot) {\n return scan(bridge, isRoot, spot.element, spot.offset, direction, MAX_RETRIES).map(bridge.fromSitus);\n });\n };\n var inSameTable = function (elem, table) {\n return ancestor(elem, function (e) {\n return parent(e).exists(function (p) {\n return eq$1(p, table);\n });\n });\n };\n var simulate = function (bridge, isRoot, direction, initial, anchor) {\n return closest$1(initial, 'td,th', isRoot).bind(function (start) {\n return closest$1(start, 'table', isRoot).bind(function (table) {\n if (!inSameTable(anchor, table)) {\n return Optional.none();\n }\n return handle$1(bridge, isRoot, direction).bind(function (range) {\n return closest$1(range.finish, 'td,th', isRoot).map(function (finish) {\n return {\n start: start,\n finish: finish,\n range: range\n };\n });\n });\n });\n });\n };\n var navigate = function (bridge, isRoot, direction, initial, anchor, precheck) {\n return precheck(initial, isRoot).orThunk(function () {\n return simulate(bridge, isRoot, direction, initial, anchor).map(function (info) {\n var range = info.range;\n return Response.create(Optional.some(makeSitus(range.start, range.soffset, range.finish, range.foffset)), true);\n });\n });\n };\n var firstUpCheck = function (initial, isRoot) {\n return closest$1(initial, 'tr', isRoot).bind(function (startRow) {\n return closest$1(startRow, 'table', isRoot).bind(function (table) {\n var rows = descendants(table, 'tr');\n if (eq$1(startRow, rows[0])) {\n return seekLeft(table, function (element) {\n return last$1(element).isSome();\n }, isRoot).map(function (last) {\n var lastOffset = getEnd(last);\n return Response.create(Optional.some(makeSitus(last, lastOffset, last, lastOffset)), true);\n });\n }\n else {\n return Optional.none();\n }\n });\n });\n };\n var lastDownCheck = function (initial, isRoot) {\n return closest$1(initial, 'tr', isRoot).bind(function (startRow) {\n return closest$1(startRow, 'table', isRoot).bind(function (table) {\n var rows = descendants(table, 'tr');\n if (eq$1(startRow, rows[rows.length - 1])) {\n return seekRight(table, function (element) {\n return first(element).isSome();\n }, isRoot).map(function (first) {\n return Response.create(Optional.some(makeSitus(first, 0, first, 0)), true);\n });\n }\n else {\n return Optional.none();\n }\n });\n });\n };\n var select = function (bridge, container, isRoot, direction, initial, anchor, selectRange) {\n return simulate(bridge, isRoot, direction, initial, anchor).bind(function (info) {\n return detect(container, isRoot, info.start, info.finish, selectRange);\n });\n };\n var Cell = function (initial) {\n var value = initial;\n var get = function () {\n return value;\n };\n var set = function (v) {\n value = v;\n };\n return {\n get: get,\n set: set\n };\n };\n var singleton = function (doRevoke) {\n var subject = Cell(Optional.none());\n var revoke = function () { return subject.get().each(doRevoke); };\n var clear = function () {\n revoke();\n subject.set(Optional.none());\n };\n var isSet = function () { return subject.get().isSome(); };\n var get = function () { return subject.get(); };\n var set = function (s) {\n revoke();\n subject.set(Optional.some(s));\n };\n return {\n clear: clear,\n isSet: isSet,\n get: get,\n set: set\n };\n };\n var value = function () {\n var subject = singleton(noop);\n var on = function (f) { return subject.get().each(f); };\n return __assign(__assign({}, subject), { on: on });\n };\n var findCell = function (target, isRoot) { return closest$1(target, 'td,th', isRoot); };\n var isInEditableContext = function (cell) { return parentElement(cell).exists(isEditable$1); };\n var MouseSelection = function (bridge, container, isRoot, annotations) {\n var cursor = value();\n var clearstate = cursor.clear;\n var applySelection = function (event) {\n cursor.on(function (start) {\n annotations.clearBeforeUpdate(container);\n findCell(event.target, isRoot).each(function (finish) {\n identify(start, finish, isRoot).each(function (cellSel) {\n var boxes = cellSel.boxes.getOr([]);\n if (boxes.length === 1) {\n var singleCell = boxes[0];\n var isNonEditableCell = getRaw(singleCell) === 'false';\n var isCellClosestContentEditable = is(closest(event.target), singleCell, eq$1);\n if (isNonEditableCell && isCellClosestContentEditable) {\n annotations.selectRange(container, boxes, singleCell, singleCell);\n bridge.selectContents(singleCell);\n }\n }\n else if (boxes.length > 1) {\n annotations.selectRange(container, boxes, cellSel.start, cellSel.finish);\n bridge.selectContents(finish);\n }\n });\n });\n });\n };\n var mousedown = function (event) {\n annotations.clear(container);\n findCell(event.target, isRoot).filter(isInEditableContext).each(cursor.set);\n };\n var mouseover = function (event) {\n applySelection(event);\n };\n var mouseup = function (event) {\n applySelection(event);\n clearstate();\n };\n return {\n clearstate: clearstate,\n mousedown: mousedown,\n mouseover: mouseover,\n mouseup: mouseup\n };\n };\n var down = {\n traverse: nextSibling,\n gather: after$1,\n relative: Situ.before,\n retry: Retries.tryDown,\n failure: BeforeAfter.failedDown\n };\n var up = {\n traverse: prevSibling,\n gather: before,\n relative: Situ.before,\n retry: Retries.tryUp,\n failure: BeforeAfter.failedUp\n };\n var isKey = function (key) {\n return function (keycode) {\n return keycode === key;\n };\n };\n var isUp = isKey(38);\n var isDown = isKey(40);\n var isNavigation = function (keycode) {\n return keycode >= 37 && keycode <= 40;\n };\n var ltr = {\n isBackward: isKey(37),\n isForward: isKey(39)\n };\n var rtl = {\n isBackward: isKey(39),\n isForward: isKey(37)\n };\n var get$3 = function (_DOC) {\n var doc = _DOC !== undefined ? _DOC.dom : document;\n var x = doc.body.scrollLeft || doc.documentElement.scrollLeft;\n var y = doc.body.scrollTop || doc.documentElement.scrollTop;\n return SugarPosition(x, y);\n };\n var by = function (x, y, _DOC) {\n var doc = _DOC !== undefined ? _DOC.dom : document;\n var win = doc.defaultView;\n if (win) {\n win.scrollBy(x, y);\n }\n };\n var adt = Adt.generate([\n { domRange: ['rng'] },\n {\n relative: [\n 'startSitu',\n 'finishSitu'\n ]\n },\n {\n exact: [\n 'start',\n 'soffset',\n 'finish',\n 'foffset'\n ]\n }\n ]);\n var exactFromRange = function (simRange) { return adt.exact(simRange.start, simRange.soffset, simRange.finish, simRange.foffset); };\n var getStart = function (selection) { return selection.match({\n domRange: function (rng) { return SugarElement.fromDom(rng.startContainer); },\n relative: function (startSitu, _finishSitu) { return Situ.getStart(startSitu); },\n exact: function (start, _soffset, _finish, _foffset) { return start; }\n }); };\n var domRange = adt.domRange;\n var relative = adt.relative;\n var exact = adt.exact;\n var getWin = function (selection) {\n var start = getStart(selection);\n return defaultView(start);\n };\n var range = SimRange.create;\n var SimSelection = {\n domRange: domRange,\n relative: relative,\n exact: exact,\n exactFromRange: exactFromRange,\n getWin: getWin,\n range: range\n };\n var caretPositionFromPoint = function (doc, x, y) {\n var _a, _b;\n return Optional.from((_b = (_a = doc.dom).caretPositionFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y)).bind(function (pos) {\n if (pos.offsetNode === null) {\n return Optional.none();\n }\n var r = doc.dom.createRange();\n r.setStart(pos.offsetNode, pos.offset);\n r.collapse();\n return Optional.some(r);\n });\n };\n var caretRangeFromPoint = function (doc, x, y) {\n var _a, _b;\n return Optional.from((_b = (_a = doc.dom).caretRangeFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y));\n };\n var availableSearch = (function () {\n if (document.caretPositionFromPoint) {\n return caretPositionFromPoint;\n }\n else if (document.caretRangeFromPoint) {\n return caretRangeFromPoint;\n }\n else {\n return Optional.none;\n }\n })();\n var fromPoint = function (win, x, y) {\n var doc = SugarElement.fromDom(win.document);\n return availableSearch(doc, x, y).map(function (rng) { return SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset); });\n };\n var beforeSpecial = function (element, offset) {\n var name$1 = name(element);\n if ('input' === name$1) {\n return Situ.after(element);\n }\n else if (!contains$2([\n 'br',\n 'img'\n ], name$1)) {\n return Situ.on(element, offset);\n }\n else {\n return offset === 0 ? Situ.before(element) : Situ.after(element);\n }\n };\n var preprocessRelative = function (startSitu, finishSitu) {\n var start = startSitu.fold(Situ.before, beforeSpecial, Situ.after);\n var finish = finishSitu.fold(Situ.before, beforeSpecial, Situ.after);\n return SimSelection.relative(start, finish);\n };\n var preprocessExact = function (start, soffset, finish, foffset) {\n var startSitu = beforeSpecial(start, soffset);\n var finishSitu = beforeSpecial(finish, foffset);\n return SimSelection.relative(startSitu, finishSitu);\n };\n var makeRange = function (start, soffset, finish, foffset) {\n var doc = owner(start);\n var rng = doc.dom.createRange();\n rng.setStart(start.dom, soffset);\n rng.setEnd(finish.dom, foffset);\n return rng;\n };\n var after = function (start, soffset, finish, foffset) {\n var r = makeRange(start, soffset, finish, foffset);\n var same = eq$1(start, finish) && soffset === foffset;\n return r.collapsed && !same;\n };\n var getNativeSelection = function (win) { return Optional.from(win.getSelection()); };\n var doSetNativeRange = function (win, rng) {\n getNativeSelection(win).each(function (selection) {\n selection.removeAllRanges();\n selection.addRange(rng);\n });\n };\n var doSetRange = function (win, start, soffset, finish, foffset) {\n var rng = exactToNative(win, start, soffset, finish, foffset);\n doSetNativeRange(win, rng);\n };\n var setLegacyRtlRange = function (win, selection, start, soffset, finish, foffset) {\n selection.collapse(start.dom, soffset);\n selection.extend(finish.dom, foffset);\n };\n var setRangeFromRelative = function (win, relative) { return diagnose(win, relative).match({\n ltr: function (start, soffset, finish, foffset) {\n doSetRange(win, start, soffset, finish, foffset);\n },\n rtl: function (start, soffset, finish, foffset) {\n getNativeSelection(win).each(function (selection) {\n if (selection.setBaseAndExtent) {\n selection.setBaseAndExtent(start.dom, soffset, finish.dom, foffset);\n }\n else if (selection.extend) {\n try {\n setLegacyRtlRange(win, selection, start, soffset, finish, foffset);\n }\n catch (e) {\n doSetRange(win, finish, foffset, start, soffset);\n }\n }\n else {\n doSetRange(win, finish, foffset, start, soffset);\n }\n });\n }\n }); };\n var setExact = function (win, start, soffset, finish, foffset) {\n var relative = preprocessExact(start, soffset, finish, foffset);\n setRangeFromRelative(win, relative);\n };\n var setRelative = function (win, startSitu, finishSitu) {\n var relative = preprocessRelative(startSitu, finishSitu);\n setRangeFromRelative(win, relative);\n };\n var readRange = function (selection) {\n if (selection.rangeCount > 0) {\n var firstRng = selection.getRangeAt(0);\n var lastRng = selection.getRangeAt(selection.rangeCount - 1);\n return Optional.some(SimRange.create(SugarElement.fromDom(firstRng.startContainer), firstRng.startOffset, SugarElement.fromDom(lastRng.endContainer), lastRng.endOffset));\n }\n else {\n return Optional.none();\n }\n };\n var doGetExact = function (selection) {\n if (selection.anchorNode === null || selection.focusNode === null) {\n return readRange(selection);\n }\n else {\n var anchor = SugarElement.fromDom(selection.anchorNode);\n var focus_1 = SugarElement.fromDom(selection.focusNode);\n return after(anchor, selection.anchorOffset, focus_1, selection.focusOffset) ? Optional.some(SimRange.create(anchor, selection.anchorOffset, focus_1, selection.focusOffset)) : readRange(selection);\n }\n };\n var setToElement = function (win, element, selectNodeContents$1) {\n if (selectNodeContents$1 === void 0) { selectNodeContents$1 = true; }\n var rngGetter = selectNodeContents$1 ? selectNodeContents : selectNode;\n var rng = rngGetter(win, element);\n doSetNativeRange(win, rng);\n };\n var getExact = function (win) { return getNativeSelection(win).filter(function (sel) { return sel.rangeCount > 0; }).bind(doGetExact); };\n var get$2 = function (win) { return getExact(win).map(function (range) { return SimSelection.exact(range.start, range.soffset, range.finish, range.foffset); }); };\n var getFirstRect = function (win, selection) {\n var rng = asLtrRange(win, selection);\n return getFirstRect$1(rng);\n };\n var getAtPoint = function (win, x, y) { return fromPoint(win, x, y); };\n var clear = function (win) {\n getNativeSelection(win).each(function (selection) { return selection.removeAllRanges(); });\n };\n var WindowBridge = function (win) {\n var elementFromPoint = function (x, y) {\n return SugarElement.fromPoint(SugarElement.fromDom(win.document), x, y);\n };\n var getRect = function (element) {\n return element.dom.getBoundingClientRect();\n };\n var getRangedRect = function (start, soffset, finish, foffset) {\n var sel = SimSelection.exact(start, soffset, finish, foffset);\n return getFirstRect(win, sel);\n };\n var getSelection = function () {\n return get$2(win).map(function (exactAdt) {\n return convertToRange(win, exactAdt);\n });\n };\n var fromSitus = function (situs) {\n var relative = SimSelection.relative(situs.start, situs.finish);\n return convertToRange(win, relative);\n };\n var situsFromPoint = function (x, y) {\n return getAtPoint(win, x, y).map(function (exact) {\n return Situs.create(exact.start, exact.soffset, exact.finish, exact.foffset);\n });\n };\n var clearSelection = function () {\n clear(win);\n };\n var collapseSelection = function (toStart) {\n if (toStart === void 0) { toStart = false; }\n get$2(win).each(function (sel) { return sel.fold(function (rng) { return rng.collapse(toStart); }, function (startSitu, finishSitu) {\n var situ = toStart ? startSitu : finishSitu;\n setRelative(win, situ, situ);\n }, function (start, soffset, finish, foffset) {\n var node = toStart ? start : finish;\n var offset = toStart ? soffset : foffset;\n setExact(win, node, offset, node, offset);\n }); });\n };\n var selectNode = function (element) {\n setToElement(win, element, false);\n };\n var selectContents = function (element) {\n setToElement(win, element);\n };\n var setSelection = function (sel) {\n setExact(win, sel.start, sel.soffset, sel.finish, sel.foffset);\n };\n var setRelativeSelection = function (start, finish) {\n setRelative(win, start, finish);\n };\n var getInnerHeight = function () {\n return win.innerHeight;\n };\n var getScrollY = function () {\n var pos = get$3(SugarElement.fromDom(win.document));\n return pos.top;\n };\n var scrollBy = function (x, y) {\n by(x, y, SugarElement.fromDom(win.document));\n };\n return {\n elementFromPoint: elementFromPoint,\n getRect: getRect,\n getRangedRect: getRangedRect,\n getSelection: getSelection,\n fromSitus: fromSitus,\n situsFromPoint: situsFromPoint,\n clearSelection: clearSelection,\n collapseSelection: collapseSelection,\n setSelection: setSelection,\n setRelativeSelection: setRelativeSelection,\n selectNode: selectNode,\n selectContents: selectContents,\n getInnerHeight: getInnerHeight,\n getScrollY: getScrollY,\n scrollBy: scrollBy\n };\n };\n var rc = function (rows, cols) { return ({\n rows: rows,\n cols: cols\n }); };\n var mouse = function (win, container, isRoot, annotations) {\n var bridge = WindowBridge(win);\n var handlers = MouseSelection(bridge, container, isRoot, annotations);\n return {\n clearstate: handlers.clearstate,\n mousedown: handlers.mousedown,\n mouseover: handlers.mouseover,\n mouseup: handlers.mouseup\n };\n };\n var isEditableNode = function (node) { return closest$2(node, isHTMLElement).exists(isEditable$1); };\n var isEditableSelection = function (start, finish) { return isEditableNode(start) || isEditableNode(finish); };\n var keyboard = function (win, container, isRoot, annotations) {\n var bridge = WindowBridge(win);\n var clearToNavigate = function () {\n annotations.clear(container);\n return Optional.none();\n };\n var keydown = function (event, start, soffset, finish, foffset, direction) {\n var realEvent = event.raw;\n var keycode = realEvent.which;\n var shiftKey = realEvent.shiftKey === true;\n var handler = retrieve$1(container, annotations.selectedSelector).fold(function () {\n if (isNavigation(keycode) && !shiftKey) {\n annotations.clearBeforeUpdate(container);\n }\n if (isNavigation(keycode) && shiftKey && !isEditableSelection(start, finish)) {\n return Optional.none;\n }\n else if (isDown(keycode) && shiftKey) {\n return curry(select, bridge, container, isRoot, down, finish, start, annotations.selectRange);\n }\n else if (isUp(keycode) && shiftKey) {\n return curry(select, bridge, container, isRoot, up, finish, start, annotations.selectRange);\n }\n else if (isDown(keycode)) {\n return curry(navigate, bridge, isRoot, down, finish, start, lastDownCheck);\n }\n else if (isUp(keycode)) {\n return curry(navigate, bridge, isRoot, up, finish, start, firstUpCheck);\n }\n else {\n return Optional.none;\n }\n }, function (selected) {\n var update$1 = function (attempts) {\n return function () {\n var navigation = findMap(attempts, function (delta) {\n return update(delta.rows, delta.cols, container, selected, annotations);\n });\n return navigation.fold(function () {\n return getEdges(container, annotations.firstSelectedSelector, annotations.lastSelectedSelector).map(function (edges) {\n var relative = isDown(keycode) || direction.isForward(keycode) ? Situ.after : Situ.before;\n bridge.setRelativeSelection(Situ.on(edges.first, 0), relative(edges.table));\n annotations.clear(container);\n return Response.create(Optional.none(), true);\n });\n }, function (_) {\n return Optional.some(Response.create(Optional.none(), true));\n });\n };\n };\n if (isNavigation(keycode) && shiftKey && !isEditableSelection(start, finish)) {\n return Optional.none;\n }\n else if (isDown(keycode) && shiftKey) {\n return update$1([rc(+1, 0)]);\n }\n else if (isUp(keycode) && shiftKey) {\n return update$1([rc(-1, 0)]);\n }\n else if (direction.isBackward(keycode) && shiftKey) {\n return update$1([\n rc(0, -1),\n rc(-1, 0)\n ]);\n }\n else if (direction.isForward(keycode) && shiftKey) {\n return update$1([\n rc(0, +1),\n rc(+1, 0)\n ]);\n }\n else if (isNavigation(keycode) && !shiftKey) {\n return clearToNavigate;\n }\n else {\n return Optional.none;\n }\n });\n return handler();\n };\n var keyup = function (event, start, soffset, finish, foffset) {\n return retrieve$1(container, annotations.selectedSelector).fold(function () {\n var realEvent = event.raw;\n var keycode = realEvent.which;\n var shiftKey = realEvent.shiftKey === true;\n if (!shiftKey) {\n return Optional.none();\n }\n if (isNavigation(keycode) && isEditableSelection(start, finish)) {\n return sync(container, isRoot, start, soffset, finish, foffset, annotations.selectRange);\n }\n else {\n return Optional.none();\n }\n }, Optional.none);\n };\n return {\n keydown: keydown,\n keyup: keyup\n };\n };\n var external = function (win, container, isRoot, annotations) {\n var bridge = WindowBridge(win);\n return function (start, finish) {\n annotations.clearBeforeUpdate(container);\n identify(start, finish, isRoot).each(function (cellSel) {\n var boxes = cellSel.boxes.getOr([]);\n annotations.selectRange(container, boxes, cellSel.start, cellSel.finish);\n bridge.selectContents(finish);\n bridge.collapseSelection();\n });\n };\n };\n var read = function (element, attr) {\n var value = get$b(element, attr);\n return value === undefined || value === '' ? [] : value.split(' ');\n };\n var add$2 = function (element, attr, id) {\n var old = read(element, attr);\n var nu = old.concat([id]);\n set$2(element, attr, nu.join(' '));\n return true;\n };\n var remove$4 = function (element, attr, id) {\n var nu = filter$2(read(element, attr), function (v) { return v !== id; });\n if (nu.length > 0) {\n set$2(element, attr, nu.join(' '));\n }\n else {\n remove$7(element, attr);\n }\n return false;\n };\n var supports = function (element) { return element.dom.classList !== undefined; };\n var get$1 = function (element) { return read(element, 'class'); };\n var add$1 = function (element, clazz) { return add$2(element, 'class', clazz); };\n var remove$3 = function (element, clazz) { return remove$4(element, 'class', clazz); };\n var add = function (element, clazz) {\n if (supports(element)) {\n element.dom.classList.add(clazz);\n }\n else {\n add$1(element, clazz);\n }\n };\n var cleanClass = function (element) {\n var classList = supports(element) ? element.dom.classList : get$1(element);\n if (classList.length === 0) {\n remove$7(element, 'class');\n }\n };\n var remove$2 = function (element, clazz) {\n if (supports(element)) {\n var classList = element.dom.classList;\n classList.remove(clazz);\n }\n else {\n remove$3(element, clazz);\n }\n cleanClass(element);\n };\n var has = function (element, clazz) { return supports(element) && element.dom.classList.contains(clazz); };\n var remove$1 = function (element, classes) {\n each$2(classes, function (x) {\n remove$2(element, x);\n });\n };\n var addClass = function (clazz) { return function (element) {\n add(element, clazz);\n }; };\n var removeClasses = function (classes) { return function (element) {\n remove$1(element, classes);\n }; };\n var byClass = function (ephemera) {\n var addSelectionClass = addClass(ephemera.selected);\n var removeSelectionClasses = removeClasses([\n ephemera.selected,\n ephemera.lastSelected,\n ephemera.firstSelected\n ]);\n var clear = function (container) {\n var sels = descendants(container, ephemera.selectedSelector);\n each$2(sels, removeSelectionClasses);\n };\n var selectRange = function (container, cells, start, finish) {\n clear(container);\n each$2(cells, addSelectionClass);\n add(start, ephemera.firstSelected);\n add(finish, ephemera.lastSelected);\n };\n return {\n clearBeforeUpdate: clear,\n clear: clear,\n selectRange: selectRange,\n selectedSelector: ephemera.selectedSelector,\n firstSelectedSelector: ephemera.firstSelectedSelector,\n lastSelectedSelector: ephemera.lastSelectedSelector\n };\n };\n var byAttr = function (ephemera, onSelection, onClear) {\n var removeSelectionAttributes = function (element) {\n remove$7(element, ephemera.selected);\n remove$7(element, ephemera.firstSelected);\n remove$7(element, ephemera.lastSelected);\n };\n var addSelectionAttribute = function (element) {\n set$2(element, ephemera.selected, '1');\n };\n var clear = function (container) {\n clearBeforeUpdate(container);\n onClear();\n };\n var clearBeforeUpdate = function (container) {\n var sels = descendants(container, \"\".concat(ephemera.selectedSelector, \",\").concat(ephemera.firstSelectedSelector, \",\").concat(ephemera.lastSelectedSelector));\n each$2(sels, removeSelectionAttributes);\n };\n var selectRange = function (container, cells, start, finish) {\n clear(container);\n each$2(cells, addSelectionAttribute);\n set$2(start, ephemera.firstSelected, '1');\n set$2(finish, ephemera.lastSelected, '1');\n onSelection(cells, start, finish);\n };\n return {\n clearBeforeUpdate: clearBeforeUpdate,\n clear: clear,\n selectRange: selectRange,\n selectedSelector: ephemera.selectedSelector,\n firstSelectedSelector: ephemera.firstSelectedSelector,\n lastSelectedSelector: ephemera.lastSelectedSelector\n };\n };\n var SelectionAnnotation = {\n byClass: byClass,\n byAttr: byAttr\n };\n var fold = function (subject, onNone, onMultiple, onSingle) {\n switch (subject.tag) {\n case 'none':\n return onNone();\n case 'single':\n return onSingle(subject.element);\n case 'multiple':\n return onMultiple(subject.elements);\n }\n };\n var none = function () { return ({ tag: 'none' }); };\n var multiple = function (elements) { return ({\n tag: 'multiple',\n elements: elements\n }); };\n var single = function (element) { return ({\n tag: 'single',\n element: element\n }); };\n var Selections = function (lazyRoot, getStart, selectedSelector) {\n var get = function () { return retrieve(lazyRoot(), selectedSelector).fold(function () { return getStart().fold(none, single); }, multiple); };\n return { get: get };\n };\n var getUpOrLeftCells = function (grid, selectedCells) {\n var upGrid = grid.slice(0, selectedCells[selectedCells.length - 1].row + 1);\n var upDetails = toDetailList(upGrid);\n return bind$2(upDetails, function (detail) {\n var slicedCells = detail.cells.slice(0, selectedCells[selectedCells.length - 1].column + 1);\n return map$1(slicedCells, function (cell) { return cell.element; });\n });\n };\n var getDownOrRightCells = function (grid, selectedCells) {\n var downGrid = grid.slice(selectedCells[0].row + selectedCells[0].rowspan - 1, grid.length);\n var downDetails = toDetailList(downGrid);\n return bind$2(downDetails, function (detail) {\n var slicedCells = detail.cells.slice(selectedCells[0].column + selectedCells[0].colspan - 1, detail.cells.length);\n return map$1(slicedCells, function (cell) { return cell.element; });\n });\n };\n var getOtherCells = function (table, target, generators) {\n var warehouse = Warehouse.fromTable(table);\n var details = onCells(warehouse, target);\n return details.map(function (selectedCells) {\n var grid = toGrid(warehouse, generators, false);\n var rows = extractGridDetails(grid).rows;\n var upOrLeftCells = getUpOrLeftCells(rows, selectedCells);\n var downOrRightCells = getDownOrRightCells(rows, selectedCells);\n return {\n upOrLeftCells: upOrLeftCells,\n downOrRightCells: downOrRightCells\n };\n });\n };\n var mkEvent = function (target, x, y, stop, prevent, kill, raw) { return ({\n target: target,\n x: x,\n y: y,\n stop: stop,\n prevent: prevent,\n kill: kill,\n raw: raw\n }); };\n var fromRawEvent$1 = function (rawEvent) {\n var target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target));\n var stop = function () { return rawEvent.stopPropagation(); };\n var prevent = function () { return rawEvent.preventDefault(); };\n var kill = compose(prevent, stop);\n return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent);\n };\n var handle = function (filter, handler) { return function (rawEvent) {\n if (filter(rawEvent)) {\n handler(fromRawEvent$1(rawEvent));\n }\n }; };\n var binder = function (element, event, filter, handler, useCapture) {\n var wrapped = handle(filter, handler);\n element.dom.addEventListener(event, wrapped, useCapture);\n return { unbind: curry(unbind, element, event, wrapped, useCapture) };\n };\n var bind$1 = function (element, event, filter, handler) { return binder(element, event, filter, handler, false); };\n var unbind = function (element, event, handler, useCapture) {\n element.dom.removeEventListener(event, handler, useCapture);\n };\n var filter = always;\n var bind = function (element, event, handler) { return bind$1(element, event, filter, handler); };\n var fromRawEvent = fromRawEvent$1;\n var hasInternalTarget = function (e) { return !has(SugarElement.fromDom(e.target), 'ephox-snooker-resizer-bar'); };\n var TableCellSelectionHandler = function (editor, resizeHandler) {\n var cellSelection = Selections(function () { return SugarElement.fromDom(editor.getBody()); }, function () { return getSelectionCell(getSelectionStart(editor), getIsRoot(editor)); }, ephemera.selectedSelector);\n var onSelection = function (cells, start, finish) {\n var tableOpt = table(start);\n tableOpt.each(function (table) {\n var cloneFormats = getTableCloneElements(editor);\n var generators = cellOperations(noop, SugarElement.fromDom(editor.getDoc()), cloneFormats);\n var selectedCells = getCellsFromSelection(editor);\n var otherCells = getOtherCells(table, { selection: selectedCells }, generators);\n fireTableSelectionChange(editor, cells, start, finish, otherCells);\n });\n };\n var onClear = function () { return fireTableSelectionClear(editor); };\n var annotations = SelectionAnnotation.byAttr(ephemera, onSelection, onClear);\n editor.on('init', function (_e) {\n var win = editor.getWin();\n var body = getBody(editor);\n var isRoot = getIsRoot(editor);\n var syncSelection = function () {\n var sel = editor.selection;\n var start = SugarElement.fromDom(sel.getStart());\n var end = SugarElement.fromDom(sel.getEnd());\n var shared = sharedOne(table, [\n start,\n end\n ]);\n shared.fold(function () { return annotations.clear(body); }, noop);\n };\n var mouseHandlers = mouse(win, body, isRoot, annotations);\n var keyHandlers = keyboard(win, body, isRoot, annotations);\n var external$1 = external(win, body, isRoot, annotations);\n var hasShiftKey = function (event) { return event.raw.shiftKey === true; };\n editor.on('TableSelectorChange', function (e) { return external$1(e.start, e.finish); });\n var handleResponse = function (event, response) {\n if (!hasShiftKey(event)) {\n return;\n }\n if (response.kill) {\n event.kill();\n }\n response.selection.each(function (ns) {\n var relative = SimSelection.relative(ns.start, ns.finish);\n var rng = asLtrRange(win, relative);\n editor.selection.setRng(rng);\n });\n };\n var keyup = function (event) {\n var wrappedEvent = fromRawEvent(event);\n if (wrappedEvent.raw.shiftKey && isNavigation(wrappedEvent.raw.which)) {\n var rng = editor.selection.getRng();\n var start = SugarElement.fromDom(rng.startContainer);\n var end = SugarElement.fromDom(rng.endContainer);\n keyHandlers.keyup(wrappedEvent, start, rng.startOffset, end, rng.endOffset).each(function (response) {\n handleResponse(wrappedEvent, response);\n });\n }\n };\n var keydown = function (event) {\n var wrappedEvent = fromRawEvent(event);\n resizeHandler.hide();\n var rng = editor.selection.getRng();\n var start = SugarElement.fromDom(rng.startContainer);\n var end = SugarElement.fromDom(rng.endContainer);\n var direction = onDirection(ltr, rtl)(SugarElement.fromDom(editor.selection.getStart()));\n keyHandlers.keydown(wrappedEvent, start, rng.startOffset, end, rng.endOffset, direction).each(function (response) {\n handleResponse(wrappedEvent, response);\n });\n resizeHandler.show();\n };\n var isLeftMouse = function (raw) { return raw.button === 0; };\n var isLeftButtonPressed = function (raw) {\n if (raw.buttons === undefined) {\n return true;\n }\n return (raw.buttons & 1) !== 0;\n };\n var dragStart = function (_e) {\n mouseHandlers.clearstate();\n };\n var mouseDown = function (e) {\n if (isLeftMouse(e) && hasInternalTarget(e)) {\n mouseHandlers.mousedown(fromRawEvent(e));\n }\n };\n var mouseOver = function (e) {\n if (isLeftButtonPressed(e) && hasInternalTarget(e)) {\n mouseHandlers.mouseover(fromRawEvent(e));\n }\n };\n var mouseUp = function (e) {\n if (isLeftMouse(e) && hasInternalTarget(e)) {\n mouseHandlers.mouseup(fromRawEvent(e));\n }\n };\n var getDoubleTap = function () {\n var lastTarget = Cell(SugarElement.fromDom(body));\n var lastTimeStamp = Cell(0);\n var touchEnd = function (t) {\n var target = SugarElement.fromDom(t.target);\n if (isTag('td')(target) || isTag('th')(target)) {\n var lT = lastTarget.get();\n var lTS = lastTimeStamp.get();\n if (eq$1(lT, target) && t.timeStamp - lTS < 300) {\n t.preventDefault();\n external$1(target, target);\n }\n }\n lastTarget.set(target);\n lastTimeStamp.set(t.timeStamp);\n };\n return { touchEnd: touchEnd };\n };\n var doubleTap = getDoubleTap();\n editor.on('dragstart', dragStart);\n editor.on('mousedown', mouseDown);\n editor.on('mouseover', mouseOver);\n editor.on('mouseup', mouseUp);\n editor.on('touchend', doubleTap.touchEnd);\n editor.on('keyup', keyup);\n editor.on('keydown', keydown);\n editor.on('NodeChange', syncSelection);\n });\n editor.on('PreInit', function () {\n editor.serializer.addTempAttr(ephemera.firstSelected);\n editor.serializer.addTempAttr(ephemera.lastSelected);\n });\n var clearSelectedCells = function (container) { return annotations.clear(SugarElement.fromDom(container)); };\n var getSelectedCells = function () { return fold(cellSelection.get(), constant([]), function (cells) {\n return map$1(cells, function (cell) { return cell.dom; });\n }, function (cell) { return [cell.dom]; }); };\n return {\n getSelectedCells: getSelectedCells,\n clearSelectedCells: clearSelectedCells\n };\n };\n var Event = function (fields) {\n var handlers = [];\n var bind = function (handler) {\n if (handler === undefined) {\n throw new Error('Event bind error: undefined handler');\n }\n handlers.push(handler);\n };\n var unbind = function (handler) {\n handlers = filter$2(handlers, function (h) {\n return h !== handler;\n });\n };\n var trigger = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var event = {};\n each$2(fields, function (name, i) {\n event[name] = args[i];\n });\n each$2(handlers, function (handler) {\n handler(event);\n });\n };\n return {\n bind: bind,\n unbind: unbind,\n trigger: trigger\n };\n };\n var create$1 = function (typeDefs) {\n var registry = map(typeDefs, function (event) {\n return {\n bind: event.bind,\n unbind: event.unbind\n };\n });\n var trigger = map(typeDefs, function (event) {\n return event.trigger;\n });\n return {\n registry: registry,\n trigger: trigger\n };\n };\n var last = function (fn, rate) {\n var timer = null;\n var cancel = function () {\n if (!isNull(timer)) {\n clearTimeout(timer);\n timer = null;\n }\n };\n var throttle = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n cancel();\n timer = setTimeout(function () {\n timer = null;\n fn.apply(null, args);\n }, rate);\n };\n return {\n cancel: cancel,\n throttle: throttle\n };\n };\n var sort = function (arr) {\n return arr.slice(0).sort();\n };\n var reqMessage = function (required, keys) {\n throw new Error('All required keys (' + sort(required).join(', ') + ') were not specified. Specified keys were: ' + sort(keys).join(', ') + '.');\n };\n var unsuppMessage = function (unsupported) {\n throw new Error('Unsupported keys for object: ' + sort(unsupported).join(', '));\n };\n var validateStrArr = function (label, array) {\n if (!isArray(array)) {\n throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.');\n }\n each$2(array, function (a) {\n if (!isString(a)) {\n throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.');\n }\n });\n };\n var invalidTypeMessage = function (incorrect, type) {\n throw new Error('All values need to be of type: ' + type + '. Keys (' + sort(incorrect).join(', ') + ') were not.');\n };\n var checkDupes = function (everything) {\n var sorted = sort(everything);\n var dupe = find$1(sorted, function (s, i) {\n return i < sorted.length - 1 && s === sorted[i + 1];\n });\n dupe.each(function (d) {\n throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].');\n });\n };\n var base = function (handleUnsupported, required) {\n return baseWith(handleUnsupported, required, {\n validate: isFunction,\n label: 'function'\n });\n };\n var baseWith = function (handleUnsupported, required, pred) {\n if (required.length === 0) {\n throw new Error('You must specify at least one required field.');\n }\n validateStrArr('required', required);\n checkDupes(required);\n return function (obj) {\n var keys$1 = keys(obj);\n var allReqd = forall(required, function (req) {\n return contains$2(keys$1, req);\n });\n if (!allReqd) {\n reqMessage(required, keys$1);\n }\n handleUnsupported(required, keys$1);\n var invalidKeys = filter$2(required, function (key) {\n return !pred.validate(obj[key], key);\n });\n if (invalidKeys.length > 0) {\n invalidTypeMessage(invalidKeys, pred.label);\n }\n return obj;\n };\n };\n var handleExact = function (required, keys) {\n var unsupported = filter$2(keys, function (key) {\n return !contains$2(required, key);\n });\n if (unsupported.length > 0) {\n unsuppMessage(unsupported);\n }\n };\n var exactly = function (required) { return base(handleExact, required); };\n var DragMode = exactly([\n 'compare',\n 'extract',\n 'mutate',\n 'sink'\n ]);\n var DragSink = exactly([\n 'element',\n 'start',\n 'stop',\n 'destroy'\n ]);\n var DragApi = exactly([\n 'forceDrop',\n 'drop',\n 'move',\n 'delayDrop'\n ]);\n var InDrag = function () {\n var previous = Optional.none();\n var reset = function () {\n previous = Optional.none();\n };\n var update = function (mode, nu) {\n var result = previous.map(function (old) {\n return mode.compare(old, nu);\n });\n previous = Optional.some(nu);\n return result;\n };\n var onEvent = function (event, mode) {\n var dataOption = mode.extract(event);\n dataOption.each(function (data) {\n var offset = update(mode, data);\n offset.each(function (d) {\n events.trigger.move(d);\n });\n });\n };\n var events = create$1({ move: Event(['info']) });\n return {\n onEvent: onEvent,\n reset: reset,\n events: events.registry\n };\n };\n var NoDrag = function () {\n var events = create$1({ move: Event(['info']) });\n return {\n onEvent: noop,\n reset: noop,\n events: events.registry\n };\n };\n var Movement = function () {\n var noDragState = NoDrag();\n var inDragState = InDrag();\n var dragState = noDragState;\n var on = function () {\n dragState.reset();\n dragState = inDragState;\n };\n var off = function () {\n dragState.reset();\n dragState = noDragState;\n };\n var onEvent = function (event, mode) {\n dragState.onEvent(event, mode);\n };\n var isOn = function () {\n return dragState === inDragState;\n };\n return {\n on: on,\n off: off,\n isOn: isOn,\n onEvent: onEvent,\n events: inDragState.events\n };\n };\n var setup = function (mutation, mode, settings) {\n var active = false;\n var events = create$1({\n start: Event([]),\n stop: Event([])\n });\n var movement = Movement();\n var drop = function () {\n sink.stop();\n if (movement.isOn()) {\n movement.off();\n events.trigger.stop();\n }\n };\n var throttledDrop = last(drop, 200);\n var go = function (parent) {\n sink.start(parent);\n movement.on();\n events.trigger.start();\n };\n var mousemove = function (event) {\n throttledDrop.cancel();\n movement.onEvent(event, mode);\n };\n movement.events.move.bind(function (event) {\n mode.mutate(mutation, event.info);\n });\n var on = function () {\n active = true;\n };\n var off = function () {\n active = false;\n };\n var isActive = function () { return active; };\n var runIfActive = function (f) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (active) {\n f.apply(null, args);\n }\n };\n };\n var sink = mode.sink(DragApi({\n forceDrop: drop,\n drop: runIfActive(drop),\n move: runIfActive(mousemove),\n delayDrop: runIfActive(throttledDrop.throttle)\n }), settings);\n var destroy = function () {\n sink.destroy();\n };\n return {\n element: sink.element,\n go: go,\n on: on,\n off: off,\n isActive: isActive,\n destroy: destroy,\n events: events.registry\n };\n };\n var css = function (namespace) {\n var dashNamespace = namespace.replace(/\\./g, '-');\n var resolve = function (str) {\n return dashNamespace + '-' + str;\n };\n return { resolve: resolve };\n };\n var styles$1 = css('ephox-dragster');\n var resolve$1 = styles$1.resolve;\n var Blocker = function (options) {\n var settings = __assign({ layerClass: resolve$1('blocker') }, options);\n var div = SugarElement.fromTag('div');\n set$2(div, 'role', 'presentation');\n setAll(div, {\n position: 'fixed',\n left: '0px',\n top: '0px',\n width: '100%',\n height: '100%'\n });\n add(div, resolve$1('blocker'));\n add(div, settings.layerClass);\n var element = constant(div);\n var destroy = function () {\n remove$6(div);\n };\n return {\n element: element,\n destroy: destroy\n };\n };\n var compare = function (old, nu) {\n return SugarPosition(nu.left - old.left, nu.top - old.top);\n };\n var extract = function (event) {\n return Optional.some(SugarPosition(event.x, event.y));\n };\n var mutate = function (mutation, info) {\n mutation.mutate(info.left, info.top);\n };\n var sink = function (dragApi, settings) {\n var blocker = Blocker(settings);\n var mdown = bind(blocker.element(), 'mousedown', dragApi.forceDrop);\n var mup = bind(blocker.element(), 'mouseup', dragApi.drop);\n var mmove = bind(blocker.element(), 'mousemove', dragApi.move);\n var mout = bind(blocker.element(), 'mouseout', dragApi.delayDrop);\n var destroy = function () {\n blocker.destroy();\n mup.unbind();\n mmove.unbind();\n mout.unbind();\n mdown.unbind();\n };\n var start = function (parent) {\n append$1(parent, blocker.element());\n };\n var stop = function () {\n remove$6(blocker.element());\n };\n return DragSink({\n element: blocker.element,\n start: start,\n stop: stop,\n destroy: destroy\n });\n };\n var MouseDrag = DragMode({\n compare: compare,\n extract: extract,\n sink: sink,\n mutate: mutate\n });\n var transform = function (mutation, settings) {\n if (settings === void 0) { settings = {}; }\n var _a;\n var mode = (_a = settings.mode) !== null && _a !== void 0 ? _a : MouseDrag;\n return setup(mutation, mode, settings);\n };\n var styles = css('ephox-snooker');\n var resolve = styles.resolve;\n var Mutation = function () {\n var events = create$1({\n drag: Event([\n 'xDelta',\n 'yDelta'\n ])\n });\n var mutate = function (x, y) {\n events.trigger.drag(x, y);\n };\n return {\n mutate: mutate,\n events: events.registry\n };\n };\n var BarMutation = function () {\n var events = create$1({\n drag: Event([\n 'xDelta',\n 'yDelta',\n 'target'\n ])\n });\n var target = Optional.none();\n var delegate = Mutation();\n delegate.events.drag.bind(function (event) {\n target.each(function (t) {\n events.trigger.drag(event.xDelta, event.yDelta, t);\n });\n });\n var assign = function (t) {\n target = Optional.some(t);\n };\n var get = function () {\n return target;\n };\n return {\n assign: assign,\n get: get,\n mutate: delegate.mutate,\n events: events.registry\n };\n };\n var col = function (column, x, y, w, h) {\n var bar = SugarElement.fromTag('div');\n setAll(bar, {\n position: 'absolute',\n left: x - w / 2 + 'px',\n top: y + 'px',\n height: h + 'px',\n width: w + 'px'\n });\n setAll$1(bar, {\n 'data-column': column,\n 'role': 'presentation'\n });\n return bar;\n };\n var row = function (r, x, y, w, h) {\n var bar = SugarElement.fromTag('div');\n setAll(bar, {\n position: 'absolute',\n left: x + 'px',\n top: y - h / 2 + 'px',\n height: h + 'px',\n width: w + 'px'\n });\n setAll$1(bar, {\n 'data-row': r,\n 'role': 'presentation'\n });\n return bar;\n };\n var resizeBar = resolve('resizer-bar');\n var resizeRowBar = resolve('resizer-rows');\n var resizeColBar = resolve('resizer-cols');\n var BAR_THICKNESS = 7;\n var resizableRows = function (warehouse, isResizable) { return bind$2(warehouse.all, function (row, i) { return isResizable(row.element) ? [i] : []; }); };\n var resizableColumns = function (warehouse, isResizable) {\n var resizableCols = [];\n range$1(warehouse.grid.columns, function (index) {\n var colElmOpt = Warehouse.getColumnAt(warehouse, index).map(function (col) { return col.element; });\n if (colElmOpt.forall(isResizable)) {\n resizableCols.push(index);\n }\n });\n return filter$2(resizableCols, function (colIndex) {\n var columnCells = Warehouse.filterItems(warehouse, function (cell) { return cell.column === colIndex; });\n return forall(columnCells, function (cell) { return isResizable(cell.element); });\n });\n };\n var destroy = function (wire) {\n var previous = descendants(wire.parent(), '.' + resizeBar);\n each$2(previous, remove$6);\n };\n var drawBar = function (wire, positions, create) {\n var origin = wire.origin();\n each$2(positions, function (cpOption) {\n cpOption.each(function (cp) {\n var bar = create(origin, cp);\n add(bar, resizeBar);\n append$1(wire.parent(), bar);\n });\n });\n };\n var refreshCol = function (wire, colPositions, position, tableHeight) {\n drawBar(wire, colPositions, function (origin, cp) {\n var colBar = col(cp.col, cp.x - origin.left, position.top - origin.top, BAR_THICKNESS, tableHeight);\n add(colBar, resizeColBar);\n return colBar;\n });\n };\n var refreshRow = function (wire, rowPositions, position, tableWidth) {\n drawBar(wire, rowPositions, function (origin, cp) {\n var rowBar = row(cp.row, position.left - origin.left, cp.y - origin.top, tableWidth, BAR_THICKNESS);\n add(rowBar, resizeRowBar);\n return rowBar;\n });\n };\n var refreshGrid = function (warhouse, wire, table, rows, cols) {\n var position = absolute(table);\n var isResizable = wire.isResizable;\n var rowPositions = rows.length > 0 ? height.positions(rows, table) : [];\n var resizableRowBars = rowPositions.length > 0 ? resizableRows(warhouse, isResizable) : [];\n var resizableRowPositions = filter$2(rowPositions, function (_pos, i) { return exists(resizableRowBars, function (barIndex) { return i === barIndex; }); });\n refreshRow(wire, resizableRowPositions, position, getOuter$2(table));\n var colPositions = cols.length > 0 ? width.positions(cols, table) : [];\n var resizableColBars = colPositions.length > 0 ? resizableColumns(warhouse, isResizable) : [];\n var resizableColPositions = filter$2(colPositions, function (_pos, i) { return exists(resizableColBars, function (barIndex) { return i === barIndex; }); });\n refreshCol(wire, resizableColPositions, position, getOuter$1(table));\n };\n var refresh = function (wire, table) {\n destroy(wire);\n if (wire.isResizable(table)) {\n var warehouse = Warehouse.fromTable(table);\n var rows$1_1 = rows(warehouse);\n var cols = columns(warehouse);\n refreshGrid(warehouse, wire, table, rows$1_1, cols);\n }\n };\n var each = function (wire, f) {\n var bars = descendants(wire.parent(), '.' + resizeBar);\n each$2(bars, f);\n };\n var hide = function (wire) {\n each(wire, function (bar) {\n set$1(bar, 'display', 'none');\n });\n };\n var show = function (wire) {\n each(wire, function (bar) {\n set$1(bar, 'display', 'block');\n });\n };\n var isRowBar = function (element) {\n return has(element, resizeRowBar);\n };\n var isColBar = function (element) {\n return has(element, resizeColBar);\n };\n var resizeBarDragging = resolve('resizer-bar-dragging');\n var BarManager = function (wire) {\n var mutation = BarMutation();\n var resizing = transform(mutation, {});\n var hoverTable = Optional.none();\n var getResizer = function (element, type) {\n return Optional.from(get$b(element, type));\n };\n mutation.events.drag.bind(function (event) {\n getResizer(event.target, 'data-row').each(function (_dataRow) {\n var currentRow = getCssValue(event.target, 'top');\n set$1(event.target, 'top', currentRow + event.yDelta + 'px');\n });\n getResizer(event.target, 'data-column').each(function (_dataCol) {\n var currentCol = getCssValue(event.target, 'left');\n set$1(event.target, 'left', currentCol + event.xDelta + 'px');\n });\n });\n var getDelta = function (target, dir) {\n var newX = getCssValue(target, dir);\n var oldX = getAttrValue(target, 'data-initial-' + dir, 0);\n return newX - oldX;\n };\n resizing.events.stop.bind(function () {\n mutation.get().each(function (target) {\n hoverTable.each(function (table) {\n getResizer(target, 'data-row').each(function (row) {\n var delta = getDelta(target, 'top');\n remove$7(target, 'data-initial-top');\n events.trigger.adjustHeight(table, delta, parseInt(row, 10));\n });\n getResizer(target, 'data-column').each(function (column) {\n var delta = getDelta(target, 'left');\n remove$7(target, 'data-initial-left');\n events.trigger.adjustWidth(table, delta, parseInt(column, 10));\n });\n refresh(wire, table);\n });\n });\n });\n var handler = function (target, dir) {\n events.trigger.startAdjust();\n mutation.assign(target);\n set$2(target, 'data-initial-' + dir, getCssValue(target, dir));\n add(target, resizeBarDragging);\n set$1(target, 'opacity', '0.2');\n resizing.go(wire.parent());\n };\n var mousedown = bind(wire.parent(), 'mousedown', function (event) {\n if (isRowBar(event.target)) {\n handler(event.target, 'top');\n }\n if (isColBar(event.target)) {\n handler(event.target, 'left');\n }\n });\n var isRoot = function (e) {\n return eq$1(e, wire.view());\n };\n var findClosestEditableTable = function (target) { return closest$1(target, 'table', isRoot).filter(isEditable$1); };\n var mouseover = bind(wire.view(), 'mouseover', function (event) {\n findClosestEditableTable(event.target).fold(function () {\n if (inBody(event.target)) {\n destroy(wire);\n }\n }, function (table) {\n if (resizing.isActive()) {\n hoverTable = Optional.some(table);\n refresh(wire, table);\n }\n });\n });\n var destroy$1 = function () {\n mousedown.unbind();\n mouseover.unbind();\n resizing.destroy();\n destroy(wire);\n };\n var refresh$1 = function (tbl) {\n refresh(wire, tbl);\n };\n var events = create$1({\n adjustHeight: Event([\n 'table',\n 'delta',\n 'row'\n ]),\n adjustWidth: Event([\n 'table',\n 'delta',\n 'column'\n ]),\n startAdjust: Event([])\n });\n return {\n destroy: destroy$1,\n refresh: refresh$1,\n on: resizing.on,\n off: resizing.off,\n hideBars: curry(hide, wire),\n showBars: curry(show, wire),\n events: events.registry\n };\n };\n var create = function (wire, resizing, lazySizing) {\n var hdirection = height;\n var vdirection = width;\n var manager = BarManager(wire);\n var events = create$1({\n beforeResize: Event([\n 'table',\n 'type'\n ]),\n afterResize: Event([\n 'table',\n 'type'\n ]),\n startDrag: Event([])\n });\n manager.events.adjustHeight.bind(function (event) {\n var table = event.table;\n events.trigger.beforeResize(table, 'row');\n var delta = hdirection.delta(event.delta, table);\n adjustHeight(table, delta, event.row, hdirection);\n events.trigger.afterResize(table, 'row');\n });\n manager.events.startAdjust.bind(function (_event) {\n events.trigger.startDrag();\n });\n manager.events.adjustWidth.bind(function (event) {\n var table = event.table;\n events.trigger.beforeResize(table, 'col');\n var delta = vdirection.delta(event.delta, table);\n var tableSize = lazySizing(table);\n adjustWidth(table, delta, event.column, resizing, tableSize);\n events.trigger.afterResize(table, 'col');\n });\n return {\n on: manager.on,\n off: manager.off,\n refreshBars: manager.refresh,\n hideBars: manager.hideBars,\n showBars: manager.showBars,\n destroy: manager.destroy,\n events: events.registry\n };\n };\n var TableResize = { create: create };\n var only = function (element, isResizable) {\n var parent = isDocument(element) ? documentElement(element) : element;\n return {\n parent: constant(parent),\n view: constant(element),\n origin: constant(SugarPosition(0, 0)),\n isResizable: isResizable\n };\n };\n var detached = function (editable, chrome, isResizable) {\n var origin = function () { return absolute(chrome); };\n return {\n parent: constant(chrome),\n view: constant(editable),\n origin: origin,\n isResizable: isResizable\n };\n };\n var body = function (editable, chrome, isResizable) {\n return {\n parent: constant(chrome),\n view: constant(editable),\n origin: constant(SugarPosition(0, 0)),\n isResizable: isResizable\n };\n };\n var ResizeWire = {\n only: only,\n detached: detached,\n body: body\n };\n var createContainer = function () {\n var container = SugarElement.fromTag('div');\n setAll(container, {\n position: 'static',\n height: '0',\n width: '0',\n padding: '0',\n margin: '0',\n border: '0'\n });\n append$1(body$1(), container);\n return container;\n };\n var get = function (editor, isResizable) {\n return editor.inline ? ResizeWire.body(SugarElement.fromDom(editor.getBody()), createContainer(), isResizable) : ResizeWire.only(SugarElement.fromDom(editor.getDoc()), isResizable);\n };\n var remove = function (editor, wire) {\n if (editor.inline) {\n remove$6(wire.parent());\n }\n };\n var isTable = function (node) { return isNonNullable(node) && node.nodeName === 'TABLE'; };\n var barResizerPrefix = 'bar-';\n var isResizable = function (elm) { return get$b(elm, 'data-mce-resize') !== 'false'; };\n var syncPixels = function (table) {\n var warehouse = Warehouse.fromTable(table);\n if (!Warehouse.hasColumns(warehouse)) {\n each$2(cells$1(table), function (cell) {\n var computedWidth = get$a(cell, 'width');\n set$1(cell, 'width', computedWidth);\n remove$7(cell, 'width');\n });\n }\n };\n var TableResizeHandler = function (editor) {\n var selectionRng = value();\n var tableResize = value();\n var resizeWire = value();\n var startW;\n var startRawW;\n var lazySizing = function (table) { return get$5(editor, table); };\n var lazyResizingBehaviour = function () { return isPreserveTableColumnResizing(editor) ? preserveTable() : resizeTable(); };\n var getNumColumns = function (table) { return getGridSize(table).columns; };\n var afterCornerResize = function (table, origin, width) {\n var isRightEdgeResize = endsWith(origin, 'e');\n if (startRawW === '') {\n convertToPercentSize(table);\n }\n if (width !== startW && startRawW !== '') {\n set$1(table, 'width', startRawW);\n var resizing = lazyResizingBehaviour();\n var tableSize = lazySizing(table);\n var col_1 = isPreserveTableColumnResizing(editor) || isRightEdgeResize ? getNumColumns(table) - 1 : 0;\n adjustWidth(table, width - startW, col_1, resizing, tableSize);\n }\n else if (isPercentage$1(startRawW)) {\n var percentW = parseFloat(startRawW.replace('%', ''));\n var targetPercentW = width * percentW / startW;\n set$1(table, 'width', targetPercentW + '%');\n }\n if (isPixel(startRawW)) {\n syncPixels(table);\n }\n };\n var destroy = function () {\n tableResize.on(function (sz) {\n sz.destroy();\n });\n resizeWire.on(function (w) {\n remove(editor, w);\n });\n };\n editor.on('init', function () {\n var rawWire = get(editor, isResizable);\n resizeWire.set(rawWire);\n if (hasTableObjectResizing(editor) && hasTableResizeBars(editor)) {\n var resizing = lazyResizingBehaviour();\n var sz = TableResize.create(rawWire, resizing, lazySizing);\n sz.on();\n sz.events.startDrag.bind(function (_event) {\n selectionRng.set(editor.selection.getRng());\n });\n sz.events.beforeResize.bind(function (event) {\n var rawTable = event.table.dom;\n fireObjectResizeStart(editor, rawTable, getPixelWidth(rawTable), getPixelHeight(rawTable), barResizerPrefix + event.type);\n });\n sz.events.afterResize.bind(function (event) {\n var table = event.table;\n var rawTable = table.dom;\n removeDataStyle(table);\n selectionRng.on(function (rng) {\n editor.selection.setRng(rng);\n editor.focus();\n });\n fireObjectResized(editor, rawTable, getPixelWidth(rawTable), getPixelHeight(rawTable), barResizerPrefix + event.type);\n editor.undoManager.add();\n });\n tableResize.set(sz);\n }\n });\n editor.on('ObjectResizeStart', function (e) {\n var targetElm = e.target;\n if (isTable(targetElm)) {\n var table_1 = SugarElement.fromDom(targetElm);\n each$2(editor.dom.select('.mce-clonedresizable'), function (clone) {\n editor.dom.addClass(clone, 'mce-' + getTableColumnResizingBehaviour(editor) + '-columns');\n });\n if (!isPixelSizing(table_1) && isTablePixelsForced(editor)) {\n convertToPixelSize(table_1);\n }\n else if (!isPercentSizing(table_1) && isTablePercentagesForced(editor)) {\n convertToPercentSize(table_1);\n }\n if (isNoneSizing(table_1) && startsWith(e.origin, barResizerPrefix)) {\n convertToPercentSize(table_1);\n }\n startW = e.width;\n startRawW = isTableResponsiveForced(editor) ? '' : getRawWidth(editor, targetElm).getOr('');\n }\n });\n editor.on('ObjectResized', function (e) {\n var targetElm = e.target;\n if (isTable(targetElm)) {\n var table_2 = SugarElement.fromDom(targetElm);\n var origin_1 = e.origin;\n if (startsWith(origin_1, 'corner-')) {\n afterCornerResize(table_2, origin_1, e.width);\n }\n removeDataStyle(table_2);\n fireTableModified(editor, table_2.dom, styleModified);\n }\n });\n editor.on('SwitchMode', function () {\n tableResize.on(function (resize) {\n if (editor.mode.isReadOnly()) {\n resize.hideBars();\n }\n else {\n resize.showBars();\n }\n });\n });\n editor.on('dragstart dragend', function (e) {\n tableResize.on(function (resize) {\n if (e.type === 'dragstart') {\n resize.hideBars();\n resize.off();\n }\n else {\n resize.on();\n resize.showBars();\n }\n });\n });\n editor.on('remove', function () {\n destroy();\n });\n var refresh = function (table) {\n tableResize.on(function (resize) { return resize.refreshBars(SugarElement.fromDom(table)); });\n };\n var hide = function () {\n tableResize.on(function (resize) { return resize.hideBars(); });\n };\n var show = function () {\n tableResize.on(function (resize) { return resize.showBars(); });\n };\n return {\n refresh: refresh,\n hide: hide,\n show: show\n };\n };\n var setupTable = function (editor) {\n register(editor);\n var resizeHandler = TableResizeHandler(editor);\n var cellSelectionHandler = TableCellSelectionHandler(editor, resizeHandler);\n var actions = TableActions(editor, resizeHandler, cellSelectionHandler);\n registerCommands(editor, actions);\n registerQueryCommands(editor, actions);\n registerEvents(editor, actions);\n return {\n getSelectedCells: cellSelectionHandler.getSelectedCells,\n clearSelectedCells: cellSelectionHandler.clearSelectedCells\n };\n };\n var DomModel = function (editor) {\n var table = setupTable(editor);\n return { table: table };\n };\n var Model = function () {\n global$1.add('dom', DomModel);\n };\n Model();\n})();\n"],"names":["__assign","this","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","__spreadArray","to","from","pack","ar","l","Array","slice","concat","global$1","tinymce","util","Tools","resolve","isType$1","type","value","x","isArray","o","v","constructor","String","isPrototypeOf","_a","name","isSimpleType","eq$2","a","isString","isObject","isNull","isBoolean","isUndefined","undefined","isNonNullable","isNullable","isFunction","isNumber","noop","constant","identity","tripleEquals","b","curry","fn","initialArgs","_i","restArgs","all","not","f","never","always","Optional","tag","some","none","singletonNone","fold","onNone","onSome","isSome","isNone","map","mapper","bind","binder","exists","predicate","forall","filter","getOr","replacement","or","getOrThunk","thunk","orThunk","getOrDie","message","Error","getOrNull","getOrUndefined","each","worker","toArray","toString","decimalDigits","exponentPart","opt","unsignedDecimalLiteral","float","nativeSlice","nativeIndexOf","indexOf","nativePush","push","contains$2","xs","ts","pred","len","range$1","num","r","map$1","each$2","partition","pass","fail","filter$2","foldr","acc","eachr","foldl","find$1","until","findUntil","findIndex","flatten","bind$2","mapToObject","get$d","head","last$2","findMap","arr","r_1","keys","each$1","obj","props","k","tupleMap","tuple","filter$1","onTrue","onFalse","internalFilter","objAcc","mapToArray","values","has$1","key","Global","window","Function","resolve$2","scope","parts","path","split","actual","unsafe","getPrototypeOf","sandHTMLElement","test","element","dom","nodeName","toLowerCase","nodeType","isType","isComment","isHTMLElement","isElement","isText","isDocument","isDocumentFragment","isTag","e","rawSet","console","error","setAttribute","set$2","setAll$1","attrs","get$b","getAttribute","getOpt","remove$7","removeAttribute","clone$2","attributes","attr","fromDom$1","node","SugarElement","fromHtml","html","div","document","createElement","innerHTML","hasChildNodes","childNodes","fromTag","fromText","text","createTextNode","fromDom","fromPoint","docElm","y","elementFromPoint","is$2","selector","elem","matches","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","bypassSelector","childElementCount","one","base","querySelector","eq$1","e1","e2","contains$1","d1","d2","contains","is$1","owner","ownerDocument","documentOrOwner","dos","parent","parentNode","parentElement","parents","isRoot","stop","ret","rawParent","prevSibling","previousSibling","nextSibling","children$2","child$2","index","cs","before$3","marker","insertBefore","after$5","append$1","prepend","firstChild$1","firstChild","appendChild","wrap","wrapper","after$4","elements","append","empty","textContent","rogue","remove$6","removeChild","unwrap","children","clone$1","original","isDeep","cloneNode","shallow","deep","shallowAs","nu","validSectionList","detail","rowspan","colspan","rowdetail","cells","section","elementnew","isNew","isLocked","rowcells","supported","Element","attachShadow","Node","getRootNode","isSupported$1","getShadowRoot","host","getShadowHost","isOpenShadowHost","shadowRoot","inBody","fbc","fab","doc","body","getBody$1","descendants$1","result","ancestors$3","ancestors$4","children$1","descendants","querySelectorAll","all$1","ClosestOrAncestor","is","ancestor","ancestor$2","el","closest$2","ancestor$1","child","child$1","descendant","closest$1","lhs","rhs","comparator","left","cat","someIf","checkRange","str","substr","start","end","idx","startsWith","prefix","endsWith","suffix","trim","replace","blank","isNotEmpty","isSupported","style","getPropertyValue","internalSet","property","setProperty","set$1","setAll","css","get$a","getComputedStyle","getUnsafeProperty","getRaw$2","raw","remove$5","removeProperty","internalRemove","getAttrValue","cell","fallback","parseInt","getSpan","hasColspan","cellOrCol","hasRowspan","getCssValue","minWidth","minHeight","firstLayer","filterFirstLayer","tags","join","elm","lookup","cells$1","columns$1","columnGroups","columnGroup","table","rows$1","fromRowsOrColGroups","elems","getSection","row","cells_1","column","cells_2","getParentSection","group","parentName","isValidSection","fromTable$1","rows","columnGroups$1","cached","called","args","unknown$2","nu$2","major","minor","Version","detect","versionRegexes","agent","cleanedAgent","regexes","firstMatch","Number","find","unknown","detect$4","candidates","userAgent","candidate","search","normalVersionRegex","checkContains","target","uastring","browsers","brand","oses","PlatformInfo","edge","chromium","opera","firefox","safari","nu$1","info","current","version","isBrowser","isEdge","isChromium","isIE","isOpera","isFirefox","isSafari","Browser","ie","windows","android","linux","macos","solaris","freebsd","chromeos","isOS","isWindows","isiOS","isAndroid","isMacOS","isLinux","isSolaris","isFreeBSD","isChromeOS","OperatingSystem","ios","PlatformDetection","userAgentDataOpt","mediaMatch","browser","userAgentData","brands","uaBrand","lcBrand","detectBrowser$1","detectBrowser","os","detectOs","deviceType","isiPad","isiPhone","isMobile","isTouch","isTablet","isPhone","iOSwebview","isDesktop","isWebView","DeviceType","query","matchMedia","platform","navigator","detect$2","Dimension","getOffset","get","css_1","parseFloat","aggregate","properties","val","isNaN","set","h","match","getOuter","max","cumulativeInclusions","toNumber","px","toFloat","getProp","getCalculatedWidth","boxSizing","width","getBoundingClientRect","offsetWidth","size","upper","lower","calcContentBoxSize","api$2","get$9","getOuter$2","getInner","getRuntime$1","addCells","gridRow","existingCells","before","after","newCells","setCells","addCell","mutateCell","getCell","getCellElement","cellLength","extractGridDetails","grid","cols","clone","cloneRow","cloneCell","LOCKED_COL_ATTR","getLockedColumnsFromTable","lockedColStr","lockedCols","getLockedColumnsFromGrid","locked","lockedArr","_val","copy","sort","sort$1","filterItems","warehouse","generate$1","list","access","lockedColumns","rowData","maxRows","maxColumns","rowCount","_c","colgroupRows","currentRow","rowCell","hasNonNullableKey","extended","occupiedColumnPosition","occupiedRowPosition","columnPosition","newpos","Math","_d","columns","columnsGroup","columnIndex","colIndex","columnext","generateColumns","colgroup$1","colgroup","colgroups","grid$1","Warehouse","fromTable","generate","getAt","findItem","item","filtered","justCells","w","justColumns","hasColumns","getColumnAt","isValidCell","rowsArr","col","decide","getBlock","isValid","getFallback","inBlock","c","deduce","rest","reverse","aa","delta","next","extras","abs","onDirection","isLtr","isRtl","getDirection","api$1","height","offsetHeight","get$8","getOuter$1","getRuntime","top","translate","SugarPosition","firstDefinedOrZero","absolute","win","defaultView","documentElement","offsetLeft","offsetTop","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","viewport","box","boxPosition","rowInfo","colInfo","rtlEdge","ltrEdge","getLeftEdge","getRightEdge","getTop$1","getTopEdge","getBottomEdge","findPositions","getInnerEdge","getOuterEdge","array","lines","cellOption","lastLine","positions","optElements","ltr$1","rtl$1","step","detect$1","amount","units","unsupportedLength","fixed","relative","pattern","input","RegExp","parse","accepted","exec","unitRaw","unit","check","isUnit","rPercentageBasedSizeRegex","rPixelBasedSizeRegex","isCol$2","getPercentSize","outerGetter","innerGetter","relativeParent","setPixelWidth","setPercentageWidth","setHeight","normalizePixelSize","getter","setter","number","newSize","total","floor","convert","getTotalHeight","getHeightValue","getRaw$1","prop","getRawWidth$1","getPercentageWidth","getPixelWidth$1","getHeight","get$7","setGenericWidth","getPercentTableWidth","percentageBasedSizeRegex","isCol$1","getRawW","getRawH","getDimension","cellOpt","backups","getWidthFrom","getWidth","columnCells","justCols","pos","colFilter","supportsColWidths","isValidColumn","cell_1","getDeduced","deduced","d","getPixelWidths","tableSize","minCellWidth","getHeightFrom","direction","widthLookup","noneSize","zero","pixelWidth","getWidths","getCellDelta","singleColumnWidth","setElementWidth","adjustTableWidth","isRelative","label","percentageSize","getFloatWidth","cellWidth","getPercentageWidths","_delta","currentWidth","pixelSize","newWidth","TableSize","chooseSize","makeCell","seenSelected","rowIndex","td","extract$1","selectedSelector","isSelected","replica","replicaHouse","replicaStats","house","totalColumns","minRow","minCol","maxRow","maxCol","allCells","selectedCells","startRow","endRow","startCol","endCol","statsStruct","findSelectedStats","unselectedCells","stats","totalRows","j","fillInGaps","widthDelta","colWidths","allColsWidth","selectedColsWidth","getTableWidthDelta","emptyRows","clean","api","getOption","nodeValue","NodeValue","get$6","getEnd","elementsWithCursorPosition","isCursorPosition","isContentEditableFalse","first","descend","child_1","res","last$1","descendantRtl","child_2","transferableAttributes","createCell","createCol","createColgroup","createRow$1","replace$1","cloneChildren","copy$2","pasteReplace","cellOperations","mutate","formatsToClone","cloneCss","prev","source","sourceDom","targetDom","cssText","formats","lastNode","oldCell","newCell","firstText","formatSelector","last","clonedFormat","cloneFormats","validAttributes","attributeName","attribute","cloneAppropriateAttributes","colGap","gap","paste$1","option","editor","options","defaultWidth","getPixelForcedWidth","parentBlock","getParent","selection","getStart","isBlock","getBody","getTableCloneElements","getTableHeaderType","getTableColumnResizingBehaviour","isPreserveTableColumnResizing","isResizeTableColumnResizing","getTableSizingMode","isTablePercentagesForced","isTablePixelsForced","isTableResponsiveForced","hasTableResizeBars","shouldStyleWithCss","shouldMergeContentOnPaste","getTableDefaultAttributes","defaultAttributes","isSet","determineDefaultTableAttributes","getTableDefaultStyles","defaultStyles","determineDefaultTableStyles","tableUseColumnGroup","closest","isEditable$1","assumeEditable","isContentEditable","editable","getRaw","contentEditable","getIsRoot","removeDataStyle","removeStyleAttribute","getSelectionStart","getPixelWidth","getPixelHeight","isInEditableContext$1","inSelection","bounds","leftEdge","rightEdge","topEdge","bottomEdge","finishCol","finishRow","isWithin","getAnyBox","startCell","finishCell","startCoords","finishCoords","sc","fc","detailA","detailB","min","getBox$1","isRect","detailIsWithin","isRectangular","intercepts$1","finish","inside","parentCell","innerCell","c1","c2","moveBy","deltaRow","deltaColumn","moveBy$1","getWarehouse","intercepts","nestedIntercepts","firstTable","lastTable","optStartCell","optLastCell","lastCell","TagBoundaries","DomUniverse","up","down","styles","remove","copyTo","destination","as","insert","afterAll","appendAll","create","comparePosition","other","compareDocumentPosition","isSpecial","getLanguage","getText","setText","isBoundary","isEmptyTag","isNonEditable","eq","unsafeOne","universe","look","tail","commonElement","sharedOne$1","ancestors$1","ps1","ps2","prune","ind","pruned1","pruned2","shared","firstpath","secondpath","universe$3","sharedOne","_universe","lookupTable","container","identify","rootTable","boxes","startTable","finishTable","ancestorCells","ancestors","lca","lcaTable","finishAncestorCells","startAncestorCells","retrieve$1","sels","getEdges","firstSelectedSelector","lastSelectedSelector","shiftSelection","getLast","identified","expandTo","retrieve","retrieveBox","edges","sectionSelector","firstAncestor","lastAncestor","fA","lA","getBox","unmergable","hasSpan","span","mergable","ephemera","strSelected","strSelectedSelector","strAttributeSelector","strFirstSelected","strFirstSelectedSelector","strLastSelected","strLastSelectedSelector","attributeSelector","selected","firstSelected","lastSelected","forMenu","getSelectionFromSelector","initCell","cellName","getSelectionCellOrCaption","getSelectionCell","getCellsFromSelection","nodes","model","getSelectedCells","registerEvents","actions","on","cells_3","getCellsFromFakeSelection","preventDefault","extractSelected","content","format","innerText","getTextContent","serializer","serialize","serializeElements","multiCellContext","paste","isTable","getDoc","generators","targets","clipboard","pasteCells","focus","point","offset","scan$1","toEnd","freefallRtl$2","freefallRtl$1","universe$2","halve","main","width_1","getGenericWidth","surround","sizes","startIndex","endIndex","results","clampDeltaHelper","minCellSize","diff","clampNegativeDelta","clampDelta","resizeTable","calcRelativeDeltas","ratio","newThis","calcLeftEdgeDeltas","clampedDelta","calcFixedDeltas","resizer","clampTableDelta","calcMiddleDeltas","_prev","calcRightEdgeDeltas","calcRedestributedWidths","totalWidth","pixelDelta","ratio_1","newSizes","preserveTable","isLastColumn","maxDelta","_index","_minCellSize","_totalWidth","_pixelDelta","_isRelative","getGridSize","isHeaderCell","isHeaderCells","getRowHeaderType","isHeaderRow","getRowType","findCommonCellType","subType","headerCells","transformCell","substitution","transformRow","fixedCell","mutate$1","sectionCells","TableSection","rowType","findTableRowHeaderType","setIfNot","ignore","insert$1","render$1","newRows","syncRows","gridSection","tr","syncColGroup","colGroup","renderSection","sectionName","newSection","generateSection","sectionElems","renderOrRemoveSection","removeSection","headSection","bodySection","footSection","columnGroupsSection","findDiff","comp","subgrid","getRow","isColRow","getColumn","toDetails","seen","details","row_1","updateSeen","rowdetailnew","toGrid","colgroupCols","rowCells","rowDetail","row_2","toDetailList","findInWarehouse","extractCells","cell$1","lc","run","operation","extract","adjustment","postAction","genWrappers","behaviours","tableSection","output","fromWarehouse","cursor","out","newElements","tableSizing","sizing","resizing","resize","onPasteByEditor","onCells","onUnlockedCells","allUnlocked","isUnlockedTableCell","unmerge","row_4","currentCell","isToReplace","splitRows","cells_4","uniqueCells","_loop_1","row_5","sub","value$1","applyHelper","constHelper","outputHelper","inner","_onError","onValue","isValue","isError","Result","mapError","toOptional","msg","onError","_onValue","fromOption","optional","err","measureWidth","gridA","gridB","rowDelta","colDelta","measureHeight","generateElements","generator","rowFill","exampleRow","colFill","newChildren","tailor","fillCols","fillRows","gridWidth","isLastColLocked","modifiedCols","newLockedColumns","isSpanning","matching","getLockedColumnsWithinBounds","startAddress","colNum","merge$1","validStartAddress","currentStartAddress","gridColLength","adjustedRowAddress","possibleColAddresses","validColAddress","getValidStartAddress","gridBRows","lockedColumnsWithinBounds","rowRemainder","colRemainder","colRequired","rowRequired","measure","fittedGrid","newLockedColumnsWithinBounds","lockedColumnObj","r_2","skippedCol","gridBColIndex","newCellElm","mergeTables","insertCols","prevCell","substitute","splitCols","fittedNewGrid","secondDelta","fittedOldGrid","insertRows","oldCols","oldRows","newLocked","secondDiff","fittedGridB","newChild","lockedColFill","insertRowAt","example","newRow","ex","insertColumnAt","withinSpan","cell_2","getElementFor","isDuplicatedCell","notInStartRow","notInStartColumn","determineScope","applyScope","newScope","isInHeader","getScope","replaceIn","replacer","genScope","shouldReplace","mapCells","isTarget","newCell_1","getColumnCells","replaceColumns","indexes","rowHeaders","shouldReplaceCell","targetColumn","_colIndex","columnReplacePredicate","scopeGenerator","columnScopeGenerator","replaceRows","targetRow","getRowCells","columnHeaders","_cell","newGrid","_rowIndex","rowReplacerPredicate","rowScopeGenerator","replaceCells","targetCells","Adt","cases","constructors","adt","acase","count","keys$1","argLength","foldArgs","branches","branchKeys","reqKey","log","params","adt$6","only","middle","right","ColumnContext","determine","context","neighbours","measures","recalculateHeightForCells","heights","recalculate","widths","groups","recalculateWidthForColumns","recalculateWidthForCells","recalculateAndApply","adjustWidth","clampedStep","deltas","newWidths","dx","adjustHeight","getPixelHeights","newHeights","dy","newCellSizes","newRowSizes","matchRowHeight","uniqueColumns","currentDetail","isCol","isColgroup","isRow$1","elementToData","getScopeAttribute","Generators","toData","add","data","cell_3","nuCell","recent","getOrInit","makeNew","replaceOrInit","cell_4","merge","stringAttributes","baseScope_1","scopes_1","getScopeProperty","blockList","universe$1","tagName","isBlock$1","isList","isList$1","isEmptyTag$1","isBr","markCell","rightSiblingIsBlock","rightSibling","isListItem","contents","advancedBr","isEditable","outcome","elementFromGrid","_b","findEditableCursorPosition","bundle","cursorElement","uniqueRows","makeRowsSection","initialGrid","rowIndexes","opMakeRowsHeader","opMakeRowsBody","opMakeRowsFooter","gridifyRows","pasteDetails","fromPastedRows","wh","_table","_info","adjustWidthTo","adjustAndRedistributeWidths","resizeBehaviour","tablePixelWidth","adjustAndRedistributeWidths$1","firstColumnIsLocked","_warehouse","lastColumnIsLocked","getColumnsWidth","uniqueCols","insertColumnsExtractor","pasteColumnsExtractor","headerCellGenerator","bodyCellGenerator","insertRowsBefore","targetIndex","insertRowsAfter","newG","insertColumnsBefore","extractDetail","insertColumnsAfter","eraseColumns","_comparator","_genWrappers","deleteColumnsAt","maxColIndex","eraseRows","deleteRowsAt","maxRowIndex","makeColumnsHeader","columnIndexes","unmakeColumnsHeader","makeRowsHeader","makeRowsBody","makeRowsFooter","makeCellsHeader","unmakeCellsHeader","mergeCells","row_3","merge$2","onMergable","mergeable","unmergeCells","onUnmergable","gridify","address","pasteColsBefore","mergedGrid","pasteColsAfter","pasteRowsBefore","pasteRowsAfter","getColumnsType","lastSelectedCell","minColRange","maxColRange","selectedColumnCells","getCellsType","getRowsType","minRowRange","maxRowRange","rowTypes","hasHeader","hasFooter","hasBody","findCommonRowType","fireNewRow","dispatch","fireNewCell","fireTableModified","styleModified","structure","structureModified","styleAndStructureModified","get$5","TableActions","resizeHandler","cellSelectionHandler","isTableBody","colMutationOp","getTableSectionType","setSelectionFromAction","firstCell","clearSelectedCells","rng","createRng","selectNode","setRng","des","setStart","setEnd","execute","guard","effect","noEvents","refresh","range","deleteRow","deleteColumn","getTableRowType","getTableCellType","getTableColType","constrainSpan","currentColspan","isColInRange","copyCols","fakeColGroups","colsToCopy","copiedCols","clonedCol","fakeColgroup","generateColGroup","fakeRows","cellsToCopy","copiedCells","clonedCell","fakeTR","generateRows","copyRows","slicedGrid","filteredGrid","slicedDetails","adt$5","invalid","pixels","percent","validateFor","rawAmount","substring","Size","redistributeValues","newWidthType","newTotalWidth","scale","pc","redistributeToPx","_pc","redistributeToPercent","redistribute$1","newType","floats","redistributeEmpty","normalize","sum","add$3","scan","remainder","floored","roundDown","round","validate","getUnit","redistribute","optWidth","optHeight","widthUnit","oldWidths","getRawWidths","nuWidths","redistributeToColumns","redistributeToW","newHeight","hUnit","totalHeight","oldHeights","getRawHeights","redistributeToH","isPercentSizing","isPixelSizing","isNoneSizing","cleanupLegacyAttributes","convertToPercentSize","convertToPixelSize","getPixelTableWidth","convertToNoneSize","rowElements","DefaultRenderOptions","border","colGroups","createGroupRow","createRows","createRow","placeCaretInCell","select","collapse","colHeaders","undoManager","headerType","renderOpts","rowHeadersGoInThead","actualRowHeaders","thead","theadRows","tbody","tbodyRows","render","get$4","insertContent","addVisual","isPercentage","fireEvents","tableElm","selectFirstCellInTable","global","tableTypeBase","tableTypeRow","tableTypeColumn","setData","items","fakeClipboardItem","FakeClipboardItem","write","getData","read","getType","clearData","clear","setRows","rowsOpt","clearRows","getRows","setColumns","columnsOpt","clearColumns","getColumns","getSelectionStartCellOrCaption","registerCommands","getTableFromCell","performActionOnSelection","action","getSelectionStartCell","postExecute","_data","actOnSelection","copyRowSelection","copyColSelection","pasteOnSelection","clonedRows","pasteRows","actOnType","getAction","_ui","get$c","no_events","mceTableSplitCells","mceTableMergeCells","mceTableInsertRowBefore","mceTableInsertRowAfter","mceTableInsertColBefore","mceTableInsertColAfter","mceTableDeleteCol","mceTableDeleteRow","mceTableCutCol","mceTableCutRow","mceTableCopyCol","mceTableCopyRow","mceTablePasteColBefore","mceTablePasteColAfter","mceTablePasteRowBefore","mceTablePasteRowAfter","mceTableDelete","cellOrCaption","isEmpty","setContent","setCursorLocation","nodeChanged","mceTableCellToggleClass","clazz","allHaveClass","formatter","formatterAction","mceTableToggleClass","toggle","mceTableToggleCaption","caption","appendAt","mceTableSizingMode","setSizingMode","mceTableCellType","mceTableColType","mceTableRowType","func","addCommand","checkInput","headerRows","headerColumns","insertTable","getFormatName","validArgs","has","formatName","adt$4","Situ","cata","subject","onBefore","onOn","onAfter","situ","Response","kill","createRange","selectNodeContents","selectNodeContentsUsing","relativeToNative","startSitu","finishSitu","setStartBefore","setStartAfter","setEndBefore","setEndAfter","setFinish","exactToNative","soffset","foffset","toRect","rect","bottom","adt$3","ltr","rtl","fromRange","startContainer","startOffset","endContainer","endOffset","diagnose","ranges","domRange","exact","getRanges","collapsed","rev","doDiagnose","asLtrRange","SimRange","Situs","convertToRange","makeSitus","selectRange","cellSel","traverse","mode","backtrack","_direction","transition","sidestep","advance","sibling","successors","go","rules","succ","rule","fb","Walkers","hone","isLeaf","seekLeft$1","seekRight$1","before$1","after$1","after$2","adt$2","success","failedUp","failedDown","isRow","BeforeAfter","verify","bridge","beforeOffset","afterOffset","failure","afterCell","beforeCell","beforeBounds","getRect","afterBounds","isOverlapping","_sharedRow","onSuccess","onFailedUp","onFailedDown","gatherer","cand","gather","handleParent","findBr","br","adjacent","inParent","indexInParent","tryBr","handleBr","tgt","moveDown","caret","moveUp","xDelta","yDelta","toCaret","getElemBox","getBoxAt","getRangedRect","getPartialBox","getEntireBox","adt$1","retry","inOutsideBlock","isOutside","downMovement","adjuster","guessBox","lowerCaret","move","adjustTil","movement","numRetries","isAtTable","adjustForTable","situsFromPoint","guess","newCaret","moved","adjusted","getInnerHeight","checkScroll","scrollBy","Retries","tryUp","higherCaret","tryDown","getJumpSize","findSpot","getSelection","sel","brNeighbour","fromSitus","analysis","_message","process","tryCursor","situs","tryAgain","tryAt","inSameTable","simulate","initial","anchor","spot","handle$1","navigate","precheck","firstUpCheck","seekLeft","lastOffset","lastDownCheck","seekRight","Cell","doRevoke","revoke","singleton","findCell","isInEditableContext","isKey","keycode","isUp","isDown","isNavigation","isBackward","isForward","SimSelection","exactFromRange","simRange","getWin","_finishSitu","_soffset","_finish","_foffset","caretPositionFromPoint","offsetNode","caretRangeFromPoint","availableSearch","beforeSpecial","name$1","makeRange","same","getNativeSelection","doSetNativeRange","removeAllRanges","addRange","doSetRange","setRangeFromRelative","setBaseAndExtent","extend","setLegacyRtlRange","setExact","preprocessExact","setRelative","preprocessRelative","readRange","rangeCount","firstRng","getRangeAt","lastRng","doGetExact","anchorNode","focusNode","focus_1","anchorOffset","focusOffset","setToElement","selectNodeContents$1","get$2","getExact","getFirstRect","rects","getClientRects","getFirstRect$1","getAtPoint","WindowBridge","exactAdt","clearSelection","collapseSelection","toStart","setSelection","setRelativeSelection","selectContents","innerHeight","getScrollY","_DOC","by","rc","mouse","annotations","handlers","clearstate","applySelection","event","clearBeforeUpdate","singleCell","isNonEditableCell","isCellClosestContentEditable","mousedown","mouseover","mouseup","MouseSelection","isEditableNode","isEditableSelection","keyboard","clearToNavigate","keydown","realEvent","which","shiftKey","handler","update$1","attempts","navigation","newSels","update","_","keyup","sync","supports","classList","add$1","id","add$2","SelectionAnnotation","onSelection","onClear","removeSelectionAttributes","addSelectionAttribute","multiple","single","getOtherCells","upOrLeftCells","upGrid","upDetails","slicedCells","getUpOrLeftCells","downOrRightCells","downGrid","downDetails","getDownOrRightCells","fromRawEvent$1","rawEvent","fa","composed","composedPath","getOriginalEventTarget","stopPropagation","prevent","mkEvent","clientX","clientY","useCapture","wrapped","handle","addEventListener","unbind","removeEventListener","bind$1","fromRawEvent","hasInternalTarget","TableCellSelectionHandler","cellSelection","lazyRoot","Selections","otherCells","fireTableSelectionChange","fireTableSelectionClear","_e","mouseHandlers","keyHandlers","external$1","external","lastTarget","lastTimeStamp","handleResponse","response","hasShiftKey","ns","isLeftMouse","button","doubleTap","touchEnd","lT","lTS","timeStamp","buttons","wrappedEvent","getRng","hide","show","addTempAttr","onMultiple","onSingle","Event","fields","trigger","create$1","typeDefs","registry","baseWith","handleUnsupported","required","sorted","validateStrArr","req","reqMessage","invalidKeys","incorrect","invalidTypeMessage","handleExact","unsupported","unsuppMessage","exactly","DragMode","DragSink","DragApi","InDrag","previous","events","onEvent","old","compare","reset","Movement","noDragState","inDragState","dragState","off","isOn","setup","mutation","settings","rate","timer","cancel","active","drop","sink","throttledDrop","clearTimeout","throttle","setTimeout","runIfActive","forceDrop","delayDrop","isActive","destroy","namespace","dashNamespace","resolve$1","MouseDrag","dragApi","blocker","layerClass","position","Blocker","mdown","mup","mmove","mout","BarMutation","drag","delegate","Mutation","resizeBar","resizeRowBar","resizeColBar","wire","drawBar","origin","cpOption","cp","bar","refreshCol","colPositions","tableHeight","colBar","role","refreshRow","rowPositions","tableWidth","rowBar","refreshGrid","warhouse","isResizable","resizableRowBars","resizableRows","resizableRowPositions","_pos","barIndex","resizableColBars","resizableCols","colElmOpt","resizableColumns","resizableColPositions","rows$1_1","bars","resizeBarDragging","BarManager","transform","hoverTable","getResizer","_dataRow","_dataCol","currentCol","getDelta","dir","startAdjust","isColBar","view","tbl","hideBars","showBars","TableResize","lazySizing","hdirection","vdirection","manager","beforeResize","afterResize","startDrag","_event","refreshBars","ResizeWire","chrome","createContainer","padding","margin","barResizerPrefix","TableResizeHandler","startW","startRawW","selectionRng","tableResize","resizeWire","lazyResizingBehaviour","afterCornerResize","isRightEdgeResize","col_1","getNumColumns","isPercentage$1","percentW","isPixel","computedWidth","syncPixels","sz","inline","rawWire","objectResizing","hasTableObjectResizing","rawTable","fireObjectResizeStart","fireObjectResized","targetElm","table_1","addClass","getStyle","getAttrib","getRawWidth","table_2","origin_1","isReadOnly","setupTable","registerOption","register","processor","default","valid","lookupOnSelection","addQueryValueHandler","registerQueryCommands","DomModel"],"mappings":"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"}