@lotte-innovate/ui-component-test 0.0.112 → 0.0.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/_virtual/index.mjs +2 -0
- package/dist/lib/_virtual/index10.mjs +2 -0
- package/dist/lib/_virtual/index10.mjs.map +1 -0
- package/dist/lib/_virtual/index11.mjs +2 -0
- package/dist/lib/_virtual/index11.mjs.map +1 -0
- package/dist/lib/_virtual/index12.mjs +2 -0
- package/dist/lib/_virtual/index12.mjs.map +1 -0
- package/dist/lib/_virtual/index13.mjs +2 -0
- package/dist/lib/_virtual/index13.mjs.map +1 -0
- package/dist/lib/_virtual/index14.mjs +2 -0
- package/dist/lib/_virtual/index14.mjs.map +1 -0
- package/dist/lib/_virtual/index2.mjs +2 -0
- package/dist/lib/_virtual/index2.mjs.map +1 -0
- package/dist/lib/_virtual/index3.mjs +2 -0
- package/dist/lib/_virtual/index3.mjs.map +1 -0
- package/dist/lib/_virtual/index4.mjs +2 -0
- package/dist/lib/_virtual/index4.mjs.map +1 -0
- package/dist/lib/_virtual/index5.mjs +2 -0
- package/dist/lib/_virtual/index5.mjs.map +1 -0
- package/dist/lib/_virtual/index6.mjs +2 -0
- package/dist/lib/_virtual/index6.mjs.map +1 -0
- package/dist/lib/_virtual/index7.mjs +2 -0
- package/dist/lib/_virtual/index7.mjs.map +1 -0
- package/dist/lib/_virtual/index8.mjs +2 -0
- package/dist/lib/_virtual/index8.mjs.map +1 -0
- package/dist/lib/_virtual/index9.mjs +2 -0
- package/dist/lib/_virtual/index9.mjs.map +1 -0
- package/dist/lib/_virtual/model.mjs +2 -0
- package/dist/lib/_virtual/model.mjs.map +1 -0
- package/dist/lib/_virtual/plugin.mjs +2 -0
- package/dist/lib/_virtual/plugin.mjs.map +1 -0
- package/dist/lib/_virtual/plugin2.mjs +2 -0
- package/dist/lib/_virtual/plugin2.mjs.map +1 -0
- package/dist/lib/_virtual/plugin3.mjs +2 -0
- package/dist/lib/_virtual/plugin3.mjs.map +1 -0
- package/dist/lib/_virtual/plugin4.mjs +2 -0
- package/dist/lib/_virtual/plugin4.mjs.map +1 -0
- package/dist/lib/_virtual/plugin5.mjs +2 -0
- package/dist/lib/_virtual/plugin5.mjs.map +1 -0
- package/dist/lib/_virtual/theme.mjs +2 -0
- package/dist/lib/_virtual/theme.mjs.map +1 -0
- package/dist/lib/components/Editor/index.d.ts +11 -13
- package/dist/lib/components/Editor/index.js +11 -13
- package/dist/lib/lib/color/alpha.mjs.map +1 -0
- package/dist/lib/lib/color/constants.mjs.map +1 -0
- package/dist/lib/lib/color/light.mjs.map +1 -0
- package/dist/lib/lib/components/AlertDialog/index.mjs.map +1 -0
- package/dist/lib/lib/components/BarChart/index.mjs.map +1 -0
- package/dist/lib/lib/components/Breadcrumb/BreadcrumbEllipsis.mjs.map +1 -0
- package/dist/lib/lib/components/Breadcrumb/BreadcrumbItem.mjs.map +1 -0
- package/dist/lib/lib/components/Breadcrumb/BreadcrumbLink.mjs.map +1 -0
- package/dist/lib/lib/components/Breadcrumb/BreadcrumbList.mjs.map +1 -0
- package/dist/lib/lib/components/Breadcrumb/BreadcrumbPage.mjs.map +1 -0
- package/dist/lib/lib/components/Breadcrumb/BreadcrumbSeparator.mjs.map +1 -0
- package/dist/lib/lib/components/Breadcrumb/index.mjs.map +1 -0
- package/dist/lib/lib/components/BubbleChart/index.mjs.map +1 -0
- package/dist/lib/lib/components/Callout/index.mjs.map +1 -0
- package/dist/lib/lib/components/CheckboxGroup/index.mjs.map +1 -0
- package/dist/lib/lib/components/ContextMenu/ContextMenuGroup.mjs.map +1 -0
- package/dist/lib/lib/components/ContextMenu/ContextMenuSeparator.mjs.map +1 -0
- package/dist/lib/lib/components/ContextMenu/ContextMenuTrigger.mjs.map +1 -0
- package/dist/lib/lib/components/ContextMenu/index.mjs.map +1 -0
- package/dist/lib/lib/components/DataList/index.mjs.map +1 -0
- package/dist/lib/lib/components/Dialog/DialogTrigger.mjs.map +1 -0
- package/dist/lib/lib/components/Dialog/index.mjs.map +1 -0
- package/dist/lib/lib/components/DoughnutChart/index.mjs.map +1 -0
- package/dist/lib/lib/components/DropdownMenu/DropdonMenuRadioGroup.mjs.map +1 -0
- package/dist/lib/lib/components/DropdownMenu/DropdownMenuSeparator.mjs.map +1 -0
- package/dist/lib/lib/components/DropdownMenu/DropdownMenuSub.mjs.map +1 -0
- package/dist/lib/lib/components/DropdownMenu/index.mjs.map +1 -0
- package/dist/lib/lib/components/Editor/index.mjs +3 -0
- package/dist/lib/lib/components/Gnb/GnbLogo.mjs.map +1 -0
- package/dist/lib/lib/components/Gnb/index.mjs.map +1 -0
- package/dist/lib/lib/components/Grid/Pagination.mjs.map +1 -0
- package/dist/lib/lib/components/HoverCard/HoverCardTrigger.mjs.map +1 -0
- package/dist/lib/lib/components/HoverCard/index.mjs.map +1 -0
- package/dist/lib/lib/components/LineChart/index.mjs.map +1 -0
- package/dist/lib/lib/components/Menubar/MenubarMenu.mjs.map +1 -0
- package/dist/lib/lib/components/Menubar/MenubarSeparator.mjs.map +1 -0
- package/dist/lib/lib/components/Menubar/MenubarSub.mjs.map +1 -0
- package/dist/lib/lib/components/Menubar/index.mjs.map +1 -0
- package/dist/lib/lib/components/NavigationMenu/NavigationMenuIndicator.mjs.map +1 -0
- package/dist/lib/lib/components/NavigationMenu/NavigationMenuItem.mjs.map +1 -0
- package/dist/lib/lib/components/NavigationMenu/index.mjs.map +1 -0
- package/dist/lib/lib/components/PieChart/index.mjs.map +1 -0
- package/dist/lib/lib/components/Popover/PopoverTrigger.mjs.map +1 -0
- package/dist/lib/lib/components/Popover/index.mjs.map +1 -0
- package/dist/lib/lib/components/RadarChart/index.mjs.map +1 -0
- package/dist/lib/lib/components/RadioCards/index.mjs.map +1 -0
- package/dist/lib/lib/components/RadioGroup/index.mjs.map +1 -0
- package/dist/lib/lib/components/SegmentedControl/SegmentedControlItem.mjs.map +1 -0
- package/dist/lib/lib/components/SegmentedControl/index.mjs.map +1 -0
- package/dist/lib/lib/components/Toast/index.mjs.map +1 -0
- package/dist/lib/lib/components/ToggleGroup/index.mjs.map +1 -0
- package/dist/lib/lib/constants.mjs.map +1 -0
- package/dist/lib/lib/index.mjs.map +1 -0
- package/dist/lib/lib/utils/utils.mjs.map +1 -0
- package/{public/tinymce/icons/default/icons.min.js → dist/lib/public/tinymce/icons/default/icons.mjs} +3 -1
- package/dist/lib/public/tinymce/icons/default/icons.mjs.map +1 -0
- package/dist/lib/public/tinymce/models/dom/index.mjs +2 -0
- package/dist/lib/public/tinymce/models/dom/index.mjs.map +1 -0
- package/dist/lib/public/tinymce/models/dom/model.mjs +2 -0
- package/dist/lib/public/tinymce/models/dom/model.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/advlist/index.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/advlist/index.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/advlist/plugin.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/advlist/plugin.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/code/index.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/code/index.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/code/plugin.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/code/plugin.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/link/index.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/link/index.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/link/plugin.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/link/plugin.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/lists/index.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/lists/index.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/lists/plugin.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/lists/plugin.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/table/index.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/table/index.mjs.map +1 -0
- package/dist/lib/public/tinymce/plugins/table/plugin.mjs +2 -0
- package/dist/lib/public/tinymce/plugins/table/plugin.mjs.map +1 -0
- package/dist/lib/public/tinymce/skins/content/default/content.mjs +3 -0
- package/dist/lib/public/tinymce/skins/content/default/content.mjs.map +1 -0
- package/dist/lib/public/tinymce/skins/ui/oxide/content.mjs +3 -0
- package/dist/lib/public/tinymce/skins/ui/oxide/content.mjs.map +1 -0
- package/dist/lib/public/tinymce/skins/ui/oxide/skin.mjs +3 -0
- package/dist/lib/public/tinymce/skins/ui/oxide/skin.mjs.map +1 -0
- package/dist/lib/public/tinymce/themes/silver/index.mjs +2 -0
- package/dist/lib/public/tinymce/themes/silver/index.mjs.map +1 -0
- package/dist/lib/public/tinymce/themes/silver/theme.mjs +2 -0
- package/dist/lib/public/tinymce/themes/silver/theme.mjs.map +1 -0
- package/dist/lib/tsconfig.tsbuildinfo +1 -1
- package/dist/public/tinymce/icons/default/icons.d.ts +0 -0
- package/dist/public/tinymce/icons/default/icons.js +195 -0
- package/dist/public/tinymce/icons/default/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/icons/default/index.js +1 -1
- package/dist/public/tinymce/models/dom/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/models/dom/index.js +2 -1
- package/dist/public/tinymce/models/dom/model.d.ts +0 -0
- package/dist/public/tinymce/models/dom/model.js +7988 -0
- package/dist/public/tinymce/plugins/advlist/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/plugins/advlist/index.js +2 -1
- package/dist/public/tinymce/plugins/advlist/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/advlist/plugin.js +255 -0
- package/dist/public/tinymce/plugins/autolink/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/plugins/autolink/index.js +2 -1
- package/dist/public/tinymce/plugins/autolink/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/autolink/plugin.js +221 -0
- package/dist/public/tinymce/plugins/code/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/plugins/code/index.js +2 -1
- package/dist/public/tinymce/plugins/code/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/code/plugin.js +77 -0
- package/dist/public/tinymce/plugins/codesample/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/plugins/codesample/index.js +2 -1
- package/dist/public/tinymce/plugins/codesample/plugin.d.ts +45 -0
- package/dist/public/tinymce/plugins/codesample/plugin.js +2462 -0
- package/dist/public/tinymce/plugins/image/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/plugins/image/index.js +2 -1
- package/dist/public/tinymce/plugins/image/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/image/plugin.js +1523 -0
- package/dist/public/tinymce/plugins/link/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/plugins/link/index.js +2 -1
- package/dist/public/tinymce/plugins/link/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/link/plugin.js +1246 -0
- package/dist/public/tinymce/plugins/lists/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/plugins/lists/index.js +2 -1
- package/dist/public/tinymce/plugins/lists/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/lists/plugin.js +2191 -0
- package/dist/public/tinymce/plugins/table/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/plugins/table/index.js +2 -1
- package/dist/public/tinymce/plugins/table/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/table/plugin.js +3399 -0
- package/dist/public/tinymce/skins/content/default/content.d.ts +0 -0
- package/{public → dist/public}/tinymce/skins/content/default/content.js +2 -1
- package/dist/public/tinymce/skins/ui/oxide/content.d.ts +0 -0
- package/dist/public/tinymce/skins/ui/oxide/content.inline.d.ts +0 -0
- package/{public → dist/public}/tinymce/skins/ui/oxide/content.inline.js +2 -1
- package/{public → dist/public}/tinymce/skins/ui/oxide/content.js +2 -1
- package/dist/public/tinymce/skins/ui/oxide/skin.d.ts +0 -0
- package/{public → dist/public}/tinymce/skins/ui/oxide/skin.js +2 -1
- package/dist/public/tinymce/skins/ui/oxide/skin.shadowdom.d.ts +0 -0
- package/{public → dist/public}/tinymce/skins/ui/oxide/skin.shadowdom.js +2 -1
- package/dist/public/tinymce/skins/ui/oxide-dark/content.d.ts +0 -0
- package/dist/public/tinymce/skins/ui/oxide-dark/content.inline.d.ts +0 -0
- package/{public → dist/public}/tinymce/skins/ui/oxide-dark/content.inline.js +2 -1
- package/{public → dist/public}/tinymce/skins/ui/oxide-dark/content.js +2 -1
- package/dist/public/tinymce/skins/ui/oxide-dark/skin.d.ts +0 -0
- package/{public → dist/public}/tinymce/skins/ui/oxide-dark/skin.js +2 -1
- package/dist/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.d.ts +0 -0
- package/{public → dist/public}/tinymce/skins/ui/oxide-dark/skin.shadowdom.js +2 -1
- package/dist/public/tinymce/themes/silver/index.d.ts +1 -0
- package/{public → dist/public}/tinymce/themes/silver/index.js +2 -1
- package/dist/public/tinymce/themes/silver/theme.d.ts +0 -0
- package/dist/public/tinymce/themes/silver/theme.js +29731 -0
- package/dist/public/tinymce/tinymce.d.ts +1 -0
- package/dist/public/tinymce/tinymce.js +31974 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -2
- package/dist/lib/color/alpha.mjs.map +0 -1
- package/dist/lib/color/constants.mjs.map +0 -1
- package/dist/lib/color/light.mjs.map +0 -1
- package/dist/lib/components/AlertDialog/index.mjs.map +0 -1
- package/dist/lib/components/BarChart/index.mjs.map +0 -1
- package/dist/lib/components/Breadcrumb/BreadcrumbEllipsis.mjs.map +0 -1
- package/dist/lib/components/Breadcrumb/BreadcrumbItem.mjs.map +0 -1
- package/dist/lib/components/Breadcrumb/BreadcrumbLink.mjs.map +0 -1
- package/dist/lib/components/Breadcrumb/BreadcrumbList.mjs.map +0 -1
- package/dist/lib/components/Breadcrumb/BreadcrumbPage.mjs.map +0 -1
- package/dist/lib/components/Breadcrumb/BreadcrumbSeparator.mjs.map +0 -1
- package/dist/lib/components/Breadcrumb/index.mjs.map +0 -1
- package/dist/lib/components/BubbleChart/index.mjs.map +0 -1
- package/dist/lib/components/Callout/index.mjs.map +0 -1
- package/dist/lib/components/CheckboxGroup/index.mjs.map +0 -1
- package/dist/lib/components/ContextMenu/ContextMenuGroup.mjs.map +0 -1
- package/dist/lib/components/ContextMenu/ContextMenuSeparator.mjs.map +0 -1
- package/dist/lib/components/ContextMenu/ContextMenuTrigger.mjs.map +0 -1
- package/dist/lib/components/ContextMenu/index.mjs.map +0 -1
- package/dist/lib/components/DataList/index.mjs.map +0 -1
- package/dist/lib/components/Dialog/DialogTrigger.mjs.map +0 -1
- package/dist/lib/components/Dialog/index.mjs.map +0 -1
- package/dist/lib/components/DoughnutChart/index.mjs.map +0 -1
- package/dist/lib/components/DropdownMenu/DropdonMenuRadioGroup.mjs.map +0 -1
- package/dist/lib/components/DropdownMenu/DropdownMenuSeparator.mjs.map +0 -1
- package/dist/lib/components/DropdownMenu/DropdownMenuSub.mjs.map +0 -1
- package/dist/lib/components/DropdownMenu/index.mjs.map +0 -1
- package/dist/lib/components/Editor/index.mjs +0 -3
- package/dist/lib/components/Gnb/GnbLogo.mjs.map +0 -1
- package/dist/lib/components/Gnb/index.mjs.map +0 -1
- package/dist/lib/components/Grid/Pagination.mjs.map +0 -1
- package/dist/lib/components/HoverCard/HoverCardTrigger.mjs.map +0 -1
- package/dist/lib/components/HoverCard/index.mjs.map +0 -1
- package/dist/lib/components/LineChart/index.mjs.map +0 -1
- package/dist/lib/components/Menubar/MenubarMenu.mjs.map +0 -1
- package/dist/lib/components/Menubar/MenubarSeparator.mjs.map +0 -1
- package/dist/lib/components/Menubar/MenubarSub.mjs.map +0 -1
- package/dist/lib/components/Menubar/index.mjs.map +0 -1
- package/dist/lib/components/NavigationMenu/NavigationMenuIndicator.mjs.map +0 -1
- package/dist/lib/components/NavigationMenu/NavigationMenuItem.mjs.map +0 -1
- package/dist/lib/components/NavigationMenu/index.mjs.map +0 -1
- package/dist/lib/components/PieChart/index.mjs.map +0 -1
- package/dist/lib/components/Popover/PopoverTrigger.mjs.map +0 -1
- package/dist/lib/components/Popover/index.mjs.map +0 -1
- package/dist/lib/components/RadarChart/index.mjs.map +0 -1
- package/dist/lib/components/RadioCards/index.mjs.map +0 -1
- package/dist/lib/components/RadioGroup/index.mjs.map +0 -1
- package/dist/lib/components/SegmentedControl/SegmentedControlItem.mjs.map +0 -1
- package/dist/lib/components/SegmentedControl/index.mjs.map +0 -1
- package/dist/lib/components/Toast/index.mjs.map +0 -1
- package/dist/lib/components/ToggleGroup/index.mjs.map +0 -1
- package/dist/lib/constants.mjs.map +0 -1
- package/dist/lib/utils/utils.mjs.map +0 -1
- package/public/tinymce/CHANGELOG.md +0 -3453
- package/public/tinymce/README.md +0 -73
- package/public/tinymce/bower.json +0 -27
- package/public/tinymce/composer.json +0 -52
- package/public/tinymce/icons/default/icons.js +0 -194
- package/public/tinymce/license.txt +0 -21
- package/public/tinymce/models/dom/model.js +0 -8040
- package/public/tinymce/models/dom/model.min.js +0 -4
- package/public/tinymce/package.json +0 -32
- package/public/tinymce/plugins/advlist/plugin.js +0 -259
- package/public/tinymce/plugins/advlist/plugin.min.js +0 -4
- package/public/tinymce/plugins/autolink/plugin.js +0 -228
- package/public/tinymce/plugins/autolink/plugin.min.js +0 -4
- package/public/tinymce/plugins/code/plugin.js +0 -85
- package/public/tinymce/plugins/code/plugin.min.js +0 -4
- package/public/tinymce/plugins/codesample/plugin.js +0 -2463
- package/public/tinymce/plugins/codesample/plugin.min.js +0 -4
- package/public/tinymce/plugins/image/plugin.js +0 -1505
- package/public/tinymce/plugins/image/plugin.min.js +0 -4
- package/public/tinymce/plugins/link/plugin.js +0 -1242
- package/public/tinymce/plugins/link/plugin.min.js +0 -4
- package/public/tinymce/plugins/lists/plugin.js +0 -2172
- package/public/tinymce/plugins/lists/plugin.min.js +0 -4
- package/public/tinymce/plugins/table/plugin.js +0 -3462
- package/public/tinymce/plugins/table/plugin.min.js +0 -4
- package/public/tinymce/skins/content/default/content.css +0 -61
- package/public/tinymce/skins/content/default/content.min.css +0 -1
- package/public/tinymce/skins/ui/oxide/content.css +0 -785
- package/public/tinymce/skins/ui/oxide/content.inline.css +0 -779
- package/public/tinymce/skins/ui/oxide/content.inline.min.css +0 -1
- package/public/tinymce/skins/ui/oxide/content.min.css +0 -1
- package/public/tinymce/skins/ui/oxide/skin.css +0 -3763
- package/public/tinymce/skins/ui/oxide/skin.min.css +0 -1
- package/public/tinymce/skins/ui/oxide/skin.shadowdom.css +0 -30
- package/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css +0 -1
- package/public/tinymce/skins/ui/oxide-dark/content.css +0 -766
- package/public/tinymce/skins/ui/oxide-dark/content.inline.css +0 -779
- package/public/tinymce/skins/ui/oxide-dark/content.inline.min.css +0 -1
- package/public/tinymce/skins/ui/oxide-dark/content.min.css +0 -1
- package/public/tinymce/skins/ui/oxide-dark/skin.css +0 -3766
- package/public/tinymce/skins/ui/oxide-dark/skin.min.css +0 -1
- package/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css +0 -30
- package/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css +0 -1
- package/public/tinymce/themes/silver/theme.js +0 -30775
- package/public/tinymce/themes/silver/theme.min.js +0 -384
- package/public/tinymce/tinymce.d.ts +0 -3238
- package/public/tinymce/tinymce.js +0 -31779
- package/public/tinymce/tinymce.min.js +0 -384
- /package/dist/lib/{index.mjs.map → _virtual/index.mjs.map} +0 -0
- /package/dist/lib/{Typography → lib/Typography}/Header/index.mjs +0 -0
- /package/dist/lib/{Typography → lib/Typography}/Header/index.mjs.map +0 -0
- /package/dist/lib/{Typography → lib/Typography}/Text/index.mjs +0 -0
- /package/dist/lib/{Typography → lib/Typography}/Text/index.mjs.map +0 -0
- /package/dist/lib/{color → lib/color}/alpha.mjs +0 -0
- /package/dist/lib/{color → lib/color}/constants.mjs +0 -0
- /package/dist/lib/{color → lib/color}/light.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Accordion/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Accordion/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogAction.mjs +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogAction.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogCancel.mjs +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogCancel.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogDescription.mjs +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogDescription.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogTitle.mjs +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogTitle.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/AlertDialogTrigger.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/AlertDialog/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/AspectRatio/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/AspectRatio/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Avatar/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Avatar/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Badge/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Badge/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/BarChart/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Breadcrumb/BreadcrumbEllipsis.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Breadcrumb/BreadcrumbItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Breadcrumb/BreadcrumbLink.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Breadcrumb/BreadcrumbList.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Breadcrumb/BreadcrumbPage.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Breadcrumb/BreadcrumbRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Breadcrumb/BreadcrumbRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Breadcrumb/BreadcrumbSeparator.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Breadcrumb/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/BubbleChart/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Button/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Button/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Callout/CalloutIcon.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Callout/CalloutIcon.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Callout/CalloutRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Callout/CalloutRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Callout/CalloutText.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Callout/CalloutText.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Callout/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Card/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Card/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Checkbox/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Checkbox/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/CheckboxCard/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/CheckboxCard/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/CheckboxGroup/CheckboxGroupItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/CheckboxGroup/CheckboxGroupItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/CheckboxGroup/CheckboxGroupRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/CheckboxGroup/CheckboxGroupRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/CheckboxGroup/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Collapsible/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Collapsible/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuCheckboxItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuCheckboxItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuGroup.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuItemIndicator.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuItemIndicator.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuLabel.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuLabel.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuRadioGroup.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuRadioGroup.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuRadioItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuRadioItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuSeparator.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuSubContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuSubContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuSubTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuSubTrigger.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/ContextMenuTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ContextMenu/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DataList/DataListItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DataList/DataListItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DataList/DataListLabel.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DataList/DataListLabel.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DataList/DataListRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DataList/DataListRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DataList/DataListValue.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DataList/DataListValue.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DataList/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogAction.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogAction.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogCancel.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogCancel.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogDescription.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogDescription.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogSlot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogSlot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogTitle.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogTitle.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/DialogTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Dialog/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DoughnutChart/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdonMenuRadioGroup.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdonMenuSubContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdonMenuSubContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuCheckboxItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuCheckboxItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuItemIndicator.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuItemIndicator.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuLable.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuLable.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuRadioItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuRadioItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuSeparator.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuSub.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuSubTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuSubTrigger.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/DropdownMenuTrigger.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/DropdownMenu/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Editor/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Footer/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Footer/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Gnb/GnbInfo.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Gnb/GnbInfo.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Gnb/GnbLogo.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Gnb/GnbMenu.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Gnb/GnbMenu.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Gnb/GnbRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Gnb/GnbRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Gnb/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Grid/Pagination.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Grid/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Grid/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Grid/useGrid.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Grid/useGrid.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/HoverCard/HoverCardContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/HoverCard/HoverCardContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/HoverCard/HoverCardRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/HoverCard/HoverCardRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/HoverCard/HoverCardTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/HoverCard/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/IconButton/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/IconButton/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Inset/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Inset/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Label/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Label/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/LineChart/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarCheckboxItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarCheckboxItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarItemIndicator.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarItemIndicator.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarMenu.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarRadioGroup.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarRadioGroup.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarRadioItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarRadioItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarSeparator.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarSub.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarSubContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarSubContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarSubTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarSubTrigger.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/MenubarTrigger.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Menubar/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuIndicator.mjs +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuLink.mjs +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuLink.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuList.mjs +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuList.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuTrigger.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuViewport.mjs +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/NavigationMenuViewport.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/NavigationMenu/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/PieChart/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Popover/PopoverClose.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Popover/PopoverClose.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Popover/PopoverContent.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Popover/PopoverContent.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Popover/PopoverRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Popover/PopoverRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Popover/PopoverTrigger.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Popover/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Progress/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Progress/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/RadarChart/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Radio/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Radio/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/RadioCards/RadioCardsItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/RadioCards/RadioCardsItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/RadioCards/RadioCardsRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/RadioCards/RadioCardsRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/RadioCards/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/RadioGroup/RadioGroupItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/RadioGroup/RadioGroupItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/RadioGroup/RadioGroupRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/RadioGroup/RadioGroupRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/RadioGroup/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ScrollArea/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ScrollArea/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/SegmentedControl/SegmentedControlItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/SegmentedControl/SegmentedControlRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/SegmentedControl/SegmentedControlRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/SegmentedControl/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Select/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Select/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Separator/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Separator/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Skeleton/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Skeleton/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Slider/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Slider/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Spinner/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Spinner/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/TabNav/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/TabNav/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Table/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Table/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Tabs/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Tabs/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/TextArea/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/TextArea/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/TextField/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/TextField/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Toast/ToastActionButton.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Toast/ToastActionButton.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Toast/ToastDescription.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Toast/ToastDescription.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Toast/ToastRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Toast/ToastRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Toast/ToastTitle.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Toast/ToastTitle.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Toast/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Toggle/ToggleWithText.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Toggle/ToggleWithText.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Toggle/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Toggle/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ToggleGroup/ToggleGroupItem.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ToggleGroup/ToggleGroupItem.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ToggleGroup/ToggleGroupRoot.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ToggleGroup/ToggleGroupRoot.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/ToggleGroup/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ToggleSwitch/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/ToggleSwitch/index.mjs.map +0 -0
- /package/dist/lib/{components → lib/components}/Tooltip/index.mjs +0 -0
- /package/dist/lib/{components → lib/components}/Tooltip/index.mjs.map +0 -0
- /package/dist/lib/{constants.mjs → lib/constants.mjs} +0 -0
- /package/dist/lib/{index.mjs → lib/index.mjs} +0 -0
- /package/dist/lib/{theme → lib/theme}/ThemeProvider.mjs +0 -0
- /package/dist/lib/{theme → lib/theme}/ThemeProvider.mjs.map +0 -0
- /package/dist/lib/{utils → lib/utils}/useDarkMode.mjs +0 -0
- /package/dist/lib/{utils → lib/utils}/useDarkMode.mjs.map +0 -0
- /package/dist/lib/{utils → lib/utils}/utils.mjs +0 -0
|
@@ -0,0 +1 @@
|
|
|
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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"}
|