@bigbinary/neeto-molecules 3.15.43 → 3.15.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/dist/AuditLogs.js +539 -0
  2. package/dist/AuditLogs.js.map +1 -0
  3. package/dist/BoardView.js +394 -0
  4. package/dist/BoardView.js.map +1 -0
  5. package/dist/Breadcrumbs.js +46 -0
  6. package/dist/Breadcrumbs.js.map +1 -0
  7. package/dist/BrowserPreview.js +50 -0
  8. package/dist/BrowserPreview.js.map +1 -0
  9. package/dist/BrowserSupport.js +348 -0
  10. package/dist/BrowserSupport.js.map +1 -0
  11. package/dist/Builder.js +786 -0
  12. package/dist/Builder.js.map +1 -0
  13. package/dist/ButtonGroup.js +36 -0
  14. package/dist/ButtonGroup.js.map +1 -0
  15. package/dist/CalendarView.js +356 -0
  16. package/dist/CalendarView.js.map +1 -0
  17. package/dist/CardLayout.js +49 -0
  18. package/dist/CardLayout.js.map +1 -0
  19. package/dist/Chevron-DfSoxXBs.js +246 -0
  20. package/dist/Chevron-DfSoxXBs.js.map +1 -0
  21. package/dist/Codeblock.js +58 -0
  22. package/dist/Codeblock.js.map +1 -0
  23. package/dist/Columns.js +21 -0
  24. package/dist/Columns.js.map +1 -0
  25. package/dist/ConfigurePageSidebar.js +97 -0
  26. package/dist/ConfigurePageSidebar.js.map +1 -0
  27. package/dist/ConfirmationModal.js +110 -0
  28. package/dist/ConfirmationModal.js.map +1 -0
  29. package/dist/Container.js +38 -0
  30. package/dist/Container.js.map +1 -0
  31. package/dist/CopyToClipboardButton.js +82 -0
  32. package/dist/CopyToClipboardButton.js.map +1 -0
  33. package/dist/Currency.js +917 -0
  34. package/dist/Currency.js.map +1 -0
  35. package/dist/DateFormat.js +45 -0
  36. package/dist/DateFormat.js.map +1 -0
  37. package/dist/DateRangeFilter.js +178 -0
  38. package/dist/DateRangeFilter.js.map +1 -0
  39. package/dist/DeleteArchiveModal.js +98 -0
  40. package/dist/DeleteArchiveModal.js.map +1 -0
  41. package/dist/DeviceIncompatibilityMessage.js +95 -0
  42. package/dist/DeviceIncompatibilityMessage.js.map +1 -0
  43. package/dist/DocumentEditor.js +183 -0
  44. package/dist/DocumentEditor.js.map +1 -0
  45. package/dist/DownloadMobileAppCallout.js +40 -0
  46. package/dist/DownloadMobileAppCallout.js.map +1 -0
  47. package/dist/DynamicVariables.js +115 -0
  48. package/dist/DynamicVariables.js.map +1 -0
  49. package/dist/EmailForm.js +567 -0
  50. package/dist/EmailForm.js.map +1 -0
  51. package/dist/EmailPreview.js +140 -0
  52. package/dist/EmailPreview.js.map +1 -0
  53. package/dist/EmojiPicker.js +112 -0
  54. package/dist/EmojiPicker.js.map +1 -0
  55. package/dist/EmojiReactions.js +82 -0
  56. package/dist/EmojiReactions.js.map +1 -0
  57. package/dist/Engagements.js +292 -0
  58. package/dist/Engagements.js.map +1 -0
  59. package/dist/ErrorPage.js +1811 -0
  60. package/dist/ErrorPage.js.map +1 -0
  61. package/dist/FileUpload.js +595 -0
  62. package/dist/FileUpload.js.map +1 -0
  63. package/dist/FinderModal.js +280 -0
  64. package/dist/FinderModal.js.map +1 -0
  65. package/dist/FloatingActionMenu.js +854 -0
  66. package/dist/FloatingActionMenu.js.map +1 -0
  67. package/dist/GoogleFontPicker.js +581 -0
  68. package/dist/GoogleFontPicker.js.map +1 -0
  69. package/dist/Header.js +126 -0
  70. package/dist/Header.js.map +1 -0
  71. package/dist/HelpPopover.js +83 -0
  72. package/dist/HelpPopover.js.map +1 -0
  73. package/dist/IconPicker.js +1159 -0
  74. package/dist/IconPicker.js.map +1 -0
  75. package/dist/ImageWithFallback.js +49 -0
  76. package/dist/ImageWithFallback.js.map +1 -0
  77. package/dist/InlineInput.js +230 -0
  78. package/dist/InlineInput.js.map +1 -0
  79. package/dist/Insights.js +358 -0
  80. package/dist/Insights.js.map +1 -0
  81. package/dist/IntegrationCard.js +227 -0
  82. package/dist/IntegrationCard.js.map +1 -0
  83. package/dist/IpRestriction.js +3617 -0
  84. package/dist/IpRestriction.js.map +1 -0
  85. package/dist/KeyboardShortcuts.js +284 -0
  86. package/dist/KeyboardShortcuts.js.map +1 -0
  87. package/dist/LoginPage.js +184 -0
  88. package/dist/LoginPage.js.map +1 -0
  89. package/dist/MadeWith.js +41 -0
  90. package/dist/MadeWith.js.map +1 -0
  91. package/dist/MenuBar.js +1326 -0
  92. package/dist/MenuBar.js.map +1 -0
  93. package/dist/Metadata.js +218 -0
  94. package/dist/Metadata.js.map +1 -0
  95. package/dist/MobilePreviewHeader.js +25 -0
  96. package/dist/MobilePreviewHeader.js.map +1 -0
  97. package/dist/MoreDropdown.js +163 -0
  98. package/dist/MoreDropdown.js.map +1 -0
  99. package/dist/NavigationHeader.js +264 -0
  100. package/dist/NavigationHeader.js.map +1 -0
  101. package/dist/NeetoWidget.js +2867 -0
  102. package/dist/NeetoWidget.js.map +1 -0
  103. package/dist/Onboarding.js +246 -0
  104. package/dist/Onboarding.js.map +1 -0
  105. package/dist/OptionFields.js +717 -0
  106. package/dist/OptionFields.js.map +1 -0
  107. package/dist/PageLoader.js +40 -0
  108. package/dist/PageLoader.js.map +1 -0
  109. package/dist/PhoneNumber.js +75 -0
  110. package/dist/PhoneNumber.js.map +1 -0
  111. package/dist/ProductEmbed.js +884 -0
  112. package/dist/ProductEmbed.js.map +1 -0
  113. package/dist/PublishBlock.js +447 -0
  114. package/dist/PublishBlock.js.map +1 -0
  115. package/dist/PublishYourItem.js +58 -0
  116. package/dist/PublishYourItem.js.map +1 -0
  117. package/dist/Rename.js +366 -0
  118. package/dist/Rename.js.map +1 -0
  119. package/dist/ResponsiveDevicePicker.js +63 -0
  120. package/dist/ResponsiveDevicePicker.js.map +1 -0
  121. package/dist/Schedule.js +926 -0
  122. package/dist/Schedule.js.map +1 -0
  123. package/dist/Scrollable.js +42 -0
  124. package/dist/Scrollable.js.map +1 -0
  125. package/dist/Search.js +110 -0
  126. package/dist/Search.js.map +1 -0
  127. package/dist/SendToFields.js +2221 -0
  128. package/dist/SendToFields.js.map +1 -0
  129. package/dist/SessionEnvironment.js +431 -0
  130. package/dist/SessionEnvironment.js.map +1 -0
  131. package/dist/Settings.js +250 -0
  132. package/dist/Settings.js.map +1 -0
  133. package/dist/ShareRecordingPane.js +216 -0
  134. package/dist/ShareRecordingPane.js.map +1 -0
  135. package/dist/ShareViaEmail.js +416 -0
  136. package/dist/ShareViaEmail.js.map +1 -0
  137. package/dist/ShareViaLink.js +1556 -0
  138. package/dist/ShareViaLink.js.map +1 -0
  139. package/dist/Sidebar.js +294 -0
  140. package/dist/Sidebar.js.map +1 -0
  141. package/dist/StatusDropdown.js +109 -0
  142. package/dist/StatusDropdown.js.map +1 -0
  143. package/dist/StickyRibbonsContainer.js +131 -0
  144. package/dist/StickyRibbonsContainer.js.map +1 -0
  145. package/dist/SubHeader.js +209 -0
  146. package/dist/SubHeader.js.map +1 -0
  147. package/dist/SubscriptionNotificationsContainer.js +77 -0
  148. package/dist/SubscriptionNotificationsContainer.js.map +1 -0
  149. package/dist/SuffixedInput.js +111 -0
  150. package/dist/SuffixedInput.js.map +1 -0
  151. package/dist/TableWrapper.js +27 -0
  152. package/dist/TableWrapper.js.map +1 -0
  153. package/dist/Taxonomy.js +496 -0
  154. package/dist/Taxonomy.js.map +1 -0
  155. package/dist/TimeFormat.js +14 -0
  156. package/dist/TimeFormat.js.map +1 -0
  157. package/dist/TimezoneMismatchModal.js +138 -0
  158. package/dist/TimezoneMismatchModal.js.map +1 -0
  159. package/dist/ToggleFeatureCard.js +211 -0
  160. package/dist/ToggleFeatureCard.js.map +1 -0
  161. package/dist/_commonjsHelpers-BFTU3MAI.js +8 -0
  162. package/dist/_commonjsHelpers-BFTU3MAI.js.map +1 -0
  163. package/dist/cjs/AuditLogs.js +541 -0
  164. package/dist/cjs/AuditLogs.js.map +1 -0
  165. package/dist/cjs/BoardView.js +396 -0
  166. package/dist/cjs/BoardView.js.map +1 -0
  167. package/dist/cjs/Breadcrumbs.js +48 -0
  168. package/dist/cjs/Breadcrumbs.js.map +1 -0
  169. package/dist/cjs/BrowserPreview.js +52 -0
  170. package/dist/cjs/BrowserPreview.js.map +1 -0
  171. package/dist/cjs/BrowserSupport.js +350 -0
  172. package/dist/cjs/BrowserSupport.js.map +1 -0
  173. package/dist/cjs/Builder.js +794 -0
  174. package/dist/cjs/Builder.js.map +1 -0
  175. package/dist/cjs/ButtonGroup.js +38 -0
  176. package/dist/cjs/ButtonGroup.js.map +1 -0
  177. package/dist/cjs/CalendarView.js +358 -0
  178. package/dist/cjs/CalendarView.js.map +1 -0
  179. package/dist/cjs/CardLayout.js +51 -0
  180. package/dist/cjs/CardLayout.js.map +1 -0
  181. package/dist/cjs/Chevron-DJbXy_CD.js +256 -0
  182. package/dist/cjs/Chevron-DJbXy_CD.js.map +1 -0
  183. package/dist/cjs/Codeblock.js +60 -0
  184. package/dist/cjs/Codeblock.js.map +1 -0
  185. package/dist/cjs/Columns.js +35 -0
  186. package/dist/cjs/Columns.js.map +1 -0
  187. package/dist/cjs/ConfigurePageSidebar.js +99 -0
  188. package/dist/cjs/ConfigurePageSidebar.js.map +1 -0
  189. package/dist/cjs/ConfirmationModal.js +131 -0
  190. package/dist/cjs/ConfirmationModal.js.map +1 -0
  191. package/dist/cjs/Container.js +40 -0
  192. package/dist/cjs/Container.js.map +1 -0
  193. package/dist/cjs/CopyToClipboardButton.js +84 -0
  194. package/dist/cjs/CopyToClipboardButton.js.map +1 -0
  195. package/dist/cjs/Currency.js +920 -0
  196. package/dist/cjs/Currency.js.map +1 -0
  197. package/dist/cjs/DateFormat.js +47 -0
  198. package/dist/cjs/DateFormat.js.map +1 -0
  199. package/dist/cjs/DateRangeFilter.js +180 -0
  200. package/dist/cjs/DateRangeFilter.js.map +1 -0
  201. package/dist/cjs/DeleteArchiveModal.js +100 -0
  202. package/dist/cjs/DeleteArchiveModal.js.map +1 -0
  203. package/dist/cjs/DeviceIncompatibilityMessage.js +115 -0
  204. package/dist/cjs/DeviceIncompatibilityMessage.js.map +1 -0
  205. package/dist/cjs/DocumentEditor.js +185 -0
  206. package/dist/cjs/DocumentEditor.js.map +1 -0
  207. package/dist/cjs/DownloadMobileAppCallout.js +42 -0
  208. package/dist/cjs/DownloadMobileAppCallout.js.map +1 -0
  209. package/dist/cjs/DynamicVariables.js +117 -0
  210. package/dist/cjs/DynamicVariables.js.map +1 -0
  211. package/dist/cjs/EmailForm.js +593 -0
  212. package/dist/cjs/EmailForm.js.map +1 -0
  213. package/dist/cjs/EmailPreview.js +142 -0
  214. package/dist/cjs/EmailPreview.js.map +1 -0
  215. package/dist/cjs/EmojiPicker.js +114 -0
  216. package/dist/cjs/EmojiPicker.js.map +1 -0
  217. package/dist/cjs/EmojiReactions.js +84 -0
  218. package/dist/cjs/EmojiReactions.js.map +1 -0
  219. package/dist/cjs/Engagements.js +294 -0
  220. package/dist/cjs/Engagements.js.map +1 -0
  221. package/dist/cjs/ErrorPage.js +1831 -0
  222. package/dist/cjs/ErrorPage.js.map +1 -0
  223. package/dist/cjs/FileUpload.js +598 -0
  224. package/dist/cjs/FileUpload.js.map +1 -0
  225. package/dist/cjs/FinderModal.js +282 -0
  226. package/dist/cjs/FinderModal.js.map +1 -0
  227. package/dist/cjs/FloatingActionMenu.js +875 -0
  228. package/dist/cjs/FloatingActionMenu.js.map +1 -0
  229. package/dist/cjs/GoogleFontPicker.js +583 -0
  230. package/dist/cjs/GoogleFontPicker.js.map +1 -0
  231. package/dist/cjs/Header.js +128 -0
  232. package/dist/cjs/Header.js.map +1 -0
  233. package/dist/cjs/HelpPopover.js +85 -0
  234. package/dist/cjs/HelpPopover.js.map +1 -0
  235. package/dist/cjs/IconPicker.js +1161 -0
  236. package/dist/cjs/IconPicker.js.map +1 -0
  237. package/dist/cjs/ImageWithFallback.js +51 -0
  238. package/dist/cjs/ImageWithFallback.js.map +1 -0
  239. package/dist/cjs/InlineInput.js +233 -0
  240. package/dist/cjs/InlineInput.js.map +1 -0
  241. package/dist/cjs/Insights.js +360 -0
  242. package/dist/cjs/Insights.js.map +1 -0
  243. package/dist/cjs/IntegrationCard.js +229 -0
  244. package/dist/cjs/IntegrationCard.js.map +1 -0
  245. package/dist/cjs/IpRestriction.js +3638 -0
  246. package/dist/cjs/IpRestriction.js.map +1 -0
  247. package/dist/cjs/KeyboardShortcuts.js +286 -0
  248. package/dist/cjs/KeyboardShortcuts.js.map +1 -0
  249. package/dist/cjs/LoginPage.js +205 -0
  250. package/dist/cjs/LoginPage.js.map +1 -0
  251. package/dist/cjs/MadeWith.js +43 -0
  252. package/dist/cjs/MadeWith.js.map +1 -0
  253. package/dist/cjs/MenuBar.js +1328 -0
  254. package/dist/cjs/MenuBar.js.map +1 -0
  255. package/dist/cjs/Metadata.js +220 -0
  256. package/dist/cjs/Metadata.js.map +1 -0
  257. package/dist/cjs/MobilePreviewHeader.js +27 -0
  258. package/dist/cjs/MobilePreviewHeader.js.map +1 -0
  259. package/dist/cjs/MoreDropdown.js +165 -0
  260. package/dist/cjs/MoreDropdown.js.map +1 -0
  261. package/dist/cjs/NavigationHeader.js +266 -0
  262. package/dist/cjs/NavigationHeader.js.map +1 -0
  263. package/dist/cjs/NeetoWidget.js +2888 -0
  264. package/dist/cjs/NeetoWidget.js.map +1 -0
  265. package/dist/cjs/Onboarding.js +248 -0
  266. package/dist/cjs/Onboarding.js.map +1 -0
  267. package/dist/cjs/OptionFields.js +719 -0
  268. package/dist/cjs/OptionFields.js.map +1 -0
  269. package/dist/cjs/PageLoader.js +42 -0
  270. package/dist/cjs/PageLoader.js.map +1 -0
  271. package/dist/cjs/PhoneNumber.js +80 -0
  272. package/dist/cjs/PhoneNumber.js.map +1 -0
  273. package/dist/cjs/ProductEmbed.js +886 -0
  274. package/dist/cjs/ProductEmbed.js.map +1 -0
  275. package/dist/cjs/PublishBlock.js +449 -0
  276. package/dist/cjs/PublishBlock.js.map +1 -0
  277. package/dist/cjs/PublishYourItem.js +60 -0
  278. package/dist/cjs/PublishYourItem.js.map +1 -0
  279. package/dist/cjs/Rename.js +368 -0
  280. package/dist/cjs/Rename.js.map +1 -0
  281. package/dist/cjs/ResponsiveDevicePicker.js +65 -0
  282. package/dist/cjs/ResponsiveDevicePicker.js.map +1 -0
  283. package/dist/cjs/Schedule.js +947 -0
  284. package/dist/cjs/Schedule.js.map +1 -0
  285. package/dist/cjs/Scrollable.js +44 -0
  286. package/dist/cjs/Scrollable.js.map +1 -0
  287. package/dist/cjs/Search.js +112 -0
  288. package/dist/cjs/Search.js.map +1 -0
  289. package/dist/cjs/SendToFields.js +2223 -0
  290. package/dist/cjs/SendToFields.js.map +1 -0
  291. package/dist/cjs/SessionEnvironment.js +433 -0
  292. package/dist/cjs/SessionEnvironment.js.map +1 -0
  293. package/dist/cjs/Settings.js +252 -0
  294. package/dist/cjs/Settings.js.map +1 -0
  295. package/dist/cjs/ShareRecordingPane.js +218 -0
  296. package/dist/cjs/ShareRecordingPane.js.map +1 -0
  297. package/dist/cjs/ShareViaEmail.js +437 -0
  298. package/dist/cjs/ShareViaEmail.js.map +1 -0
  299. package/dist/cjs/ShareViaLink.js +1577 -0
  300. package/dist/cjs/ShareViaLink.js.map +1 -0
  301. package/dist/cjs/Sidebar.js +315 -0
  302. package/dist/cjs/Sidebar.js.map +1 -0
  303. package/dist/cjs/StatusDropdown.js +111 -0
  304. package/dist/cjs/StatusDropdown.js.map +1 -0
  305. package/dist/cjs/StickyRibbonsContainer.js +133 -0
  306. package/dist/cjs/StickyRibbonsContainer.js.map +1 -0
  307. package/dist/cjs/SubHeader.js +211 -0
  308. package/dist/cjs/SubHeader.js.map +1 -0
  309. package/dist/cjs/SubscriptionNotificationsContainer.js +79 -0
  310. package/dist/cjs/SubscriptionNotificationsContainer.js.map +1 -0
  311. package/dist/cjs/SuffixedInput.js +113 -0
  312. package/dist/cjs/SuffixedInput.js.map +1 -0
  313. package/dist/cjs/TableWrapper.js +29 -0
  314. package/dist/cjs/TableWrapper.js.map +1 -0
  315. package/dist/cjs/Taxonomy.js +517 -0
  316. package/dist/cjs/Taxonomy.js.map +1 -0
  317. package/dist/cjs/TimeFormat.js +16 -0
  318. package/dist/cjs/TimeFormat.js.map +1 -0
  319. package/dist/cjs/TimezoneMismatchModal.js +140 -0
  320. package/dist/cjs/TimezoneMismatchModal.js.map +1 -0
  321. package/dist/cjs/ToggleFeatureCard.js +213 -0
  322. package/dist/cjs/ToggleFeatureCard.js.map +1 -0
  323. package/dist/cjs/_commonjsHelpers-BJu3ubxk.js +11 -0
  324. package/dist/cjs/_commonjsHelpers-BJu3ubxk.js.map +1 -0
  325. package/dist/cjs/index-JY2zVpnv.js +1189 -0
  326. package/dist/cjs/index-JY2zVpnv.js.map +1 -0
  327. package/dist/cjs/inject-css-vQvjPR2x.js +6 -0
  328. package/dist/cjs/inject-css-vQvjPR2x.js.map +1 -0
  329. package/dist/cjs/phone-number-BN-c0rfv.js +320 -0
  330. package/dist/cjs/phone-number-BN-c0rfv.js.map +1 -0
  331. package/dist/cjs/platform-BUcCb8Jx.js +1254 -0
  332. package/dist/cjs/platform-BUcCb8Jx.js.map +1 -0
  333. package/dist/cjs/useColumns-BP8c4PV-.js +282 -0
  334. package/dist/cjs/useColumns-BP8c4PV-.js.map +1 -0
  335. package/dist/index-DAYCJu79.js +1187 -0
  336. package/dist/index-DAYCJu79.js.map +1 -0
  337. package/dist/inject-css-DmrvuTKK.js +4 -0
  338. package/dist/inject-css-DmrvuTKK.js.map +1 -0
  339. package/dist/phone-number-CXCBroLh.js +295 -0
  340. package/dist/phone-number-CXCBroLh.js.map +1 -0
  341. package/dist/platform-F44zJ4Xh.js +1252 -0
  342. package/dist/platform-F44zJ4Xh.js.map +1 -0
  343. package/dist/styles/page-loader.css +1 -0
  344. package/dist/styles/page-loader.js +3 -0
  345. package/dist/useColumns-Db5uic1-.js +274 -0
  346. package/dist/useColumns-Db5uic1-.js.map +1 -0
  347. package/package.json +5 -5
  348. package/types/AuditLogs.d.ts +22 -0
  349. package/types/BoardView.d.ts +149 -0
  350. package/types/Breadcrumbs.d.ts +30 -0
  351. package/types/BrowserPreview.d.ts +30 -0
  352. package/types/BrowserSupport.d.ts +110 -0
  353. package/types/Builder.d.ts +99 -0
  354. package/types/ButtonGroup.d.ts +45 -0
  355. package/types/CalendarView.d.ts +98 -0
  356. package/types/CardLayout.d.ts +34 -0
  357. package/types/Codeblock.d.ts +37 -0
  358. package/types/Columns.d.ts +168 -0
  359. package/types/ConfigurePageSidebar.d.ts +45 -0
  360. package/types/ConfirmationModal.d.ts +65 -0
  361. package/types/Container.d.ts +38 -0
  362. package/types/CopyToClipboardButton.d.ts +28 -0
  363. package/types/Currency.d.ts +50 -0
  364. package/types/DateFormat.d.ts +15 -0
  365. package/types/DateRangeFilter.d.ts +56 -0
  366. package/types/DeleteArchiveModal.d.ts +65 -0
  367. package/types/DeviceIncompatibilityMessage.d.ts +19 -0
  368. package/types/DocumentEditor.d.ts +61 -0
  369. package/types/DownloadMobileAppCallout.d.ts +35 -0
  370. package/types/DynamicVariables.d.ts +48 -0
  371. package/types/EmailForm.d.ts +165 -0
  372. package/types/EmailFormProvider.d.ts +48 -0
  373. package/types/EmailPreview.d.ts +43 -0
  374. package/types/EmojiPicker.d.ts +35 -0
  375. package/types/EmojiReactions.d.ts +62 -0
  376. package/types/Engagements.d.ts +131 -0
  377. package/types/ErrorPage.d.ts +22 -0
  378. package/types/FileUpload.d.ts +89 -0
  379. package/types/FinderModal.d.ts +66 -0
  380. package/types/FloatingActionMenu.d.ts +59 -0
  381. package/types/GoogleFontPicker.d.ts +68 -0
  382. package/types/Header.d.ts +37 -0
  383. package/types/HelpPopover.d.ts +45 -0
  384. package/types/IconPicker.d.ts +45 -0
  385. package/types/ImageWithFallback.d.ts +24 -0
  386. package/types/InlineInput.d.ts +87 -0
  387. package/types/Insights.d.ts +112 -0
  388. package/types/IntegrationCard.d.ts +60 -0
  389. package/types/IpRestriction.d.ts +25 -0
  390. package/types/KeyboardShortcuts.d.ts +149 -0
  391. package/types/LoginPage.d.ts +45 -0
  392. package/types/MadeWith.d.ts +18 -0
  393. package/types/MenuBar.d.ts +127 -0
  394. package/types/Metadata.d.ts +109 -0
  395. package/types/MobilePreviewHeader.d.ts +19 -0
  396. package/types/MoreDropdown.d.ts +52 -0
  397. package/types/NavigationHeader.d.ts +180 -0
  398. package/types/NeetoWidget.d.ts +43 -0
  399. package/types/Onboarding.d.ts +70 -0
  400. package/types/OptionFields.d.ts +70 -0
  401. package/types/PageLoader.d.ts +40 -0
  402. package/types/PhoneNumber.d.ts +112 -0
  403. package/types/ProductEmbed.d.ts +93 -0
  404. package/types/PublishBlock.d.ts +148 -0
  405. package/types/Rename.d.ts +73 -0
  406. package/types/ResponsiveDevicePicker.d.ts +32 -0
  407. package/types/Schedule.d.ts +146 -0
  408. package/types/Scrollable.d.ts +30 -0
  409. package/types/Search.d.ts +22 -0
  410. package/types/SendToFields.d.ts +67 -0
  411. package/types/SessionEnvironment.d.ts +170 -0
  412. package/types/Settings.d.ts +108 -0
  413. package/types/ShareRecordingPane.d.ts +85 -0
  414. package/types/ShareViaEmail.d.ts +99 -0
  415. package/types/ShareViaLink.d.ts +183 -0
  416. package/types/Sidebar.d.ts +51 -0
  417. package/types/StatusDropdown.d.ts +74 -0
  418. package/types/StickyRibbonsContainer.d.ts +28 -0
  419. package/types/SubHeader.d.ts +105 -0
  420. package/types/SubscriptionNotificationsContainer.d.ts +26 -0
  421. package/types/SuffixedInput.d.ts +45 -0
  422. package/types/TableWrapper.d.ts +40 -0
  423. package/types/Taxonomy.d.ts +59 -0
  424. package/types/TimeFormat.d.ts +13 -0
  425. package/types/TimezoneMismatchModal.d.ts +41 -0
  426. package/types/ToggleFeatureCard.d.ts +38 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendToFields.js","sources":["../src/components/SendToFields/constants.js","../src/components/SendToFields/Requirements.jsx","../src/components/SendToFields/BulkUploadPane.jsx","../node_modules/papaparse/papaparse.js","../src/components/SendToFields/utils.js","../src/components/SendToFields/index.jsx"],"sourcesContent":["export const SIZES = { small: \"small\", medium: \"medium\", large: \"large\" };\nexport const CSV_FILE_SIZE_IN_KB = 32;\nexport const ONE_KILOBYTE_IN_BYTES = 1024;\nexport const DOWNLOAD_SAMPLE_EMAIL_CSV_FILE =\n \"https://d2v7kzglnr2dnh.cloudfront.net/others/sample-bulk-email.csv\";\n","import { memo } from \"react\";\n\nimport withT from \"neetocommons/react-utils/withT\";\nimport { Download } from \"neetoicons\";\nimport { Button, Callout } from \"neetoui\";\nimport { Trans } from \"react-i18next\";\n\nimport { DOWNLOAD_SAMPLE_EMAIL_CSV_FILE } from \"./constants\";\n\nconst Requirements = withT(({ t, fileSize }) => (\n <Callout className=\"flex flex-col items-center py-6\" style=\"info\">\n <ul className=\"list-outside list-disc space-y-1 font-normal leading-normal\">\n {fileSize && (\n <li>\n {t(\"neetoMolecules.shareViaLink.requirements.fileTypeAndSize\", {\n limit: fileSize,\n })}\n </li>\n )}\n <li>\n <Trans\n components={{ strong: <strong className=\"font-semibold\" /> }}\n i18nKey=\"neetoMolecules.shareViaLink.requirements.shouldContainColumns\"\n />\n </li>\n </ul>\n <Button\n href={DOWNLOAD_SAMPLE_EMAIL_CSV_FILE}\n icon={Download}\n iconPosition=\"left\"\n label={t(\"neetoMolecules.shareViaLink.bulkUploadPane.downloadSampleCSV\")}\n style=\"link\"\n />\n </Callout>\n));\n\nexport default memo(Requirements);\n","import classNames from \"classnames\";\nimport { Upload } from \"neetoicons\";\nimport { Button, Typography, Pane } from \"neetoui\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { ONE_KILOBYTE_IN_BYTES } from \"./constants\";\nimport Requirements from \"./Requirements\";\n\nconst BulkUploadPane = ({ isOpen, fileSize, onClose, handleFileSubmit }) => {\n const { getRootProps, getInputProps, isDragActive, fileRejections } =\n useDropzone({\n accept: { \"text/csv\": [] },\n maxFiles: 1,\n maxSize: fileSize * ONE_KILOBYTE_IN_BYTES,\n onDrop: files => files[0] && handleFileSubmit(files[0]),\n });\n\n const errors = fileRejections[0]?.errors.map(({ message, code }) => (\n <Typography\n className=\"neeto-ui-text-error-500 items\"\n data-cy=\"file-input-error-message\"\n key={code}\n style=\"body3\"\n >\n {message}\n </Typography>\n ));\n\n const { t } = useTranslation();\n\n return (\n <Pane {...{ isOpen, onClose }} data-testid=\"bulk-upload-pane\">\n <div tabIndex={0}>\n <Pane.Header>\n <Typography\n data-testid=\"bulk-upload-header\"\n style=\"h2\"\n weight=\"semibold\"\n >\n {t(\"neetoMolecules.shareViaLink.bulkUpload\")}\n </Typography>\n </Pane.Header>\n <Pane.Body>\n <div className=\"w-full space-y-4\">\n <Requirements {...{ fileSize }} />\n <div\n {...getRootProps({\n className: classNames(\n \"flex flex-col p-2 border neeto-ui-border-primary-500 border-dashed neeto-ui-rounded-md transition duration-500 ease-in-out hover:neeto-ui-bg-gray-100 cursor-pointer items-center\",\n {\n \"neeto-ui-border-gray-100\": isDragActive,\n \"neeto-ui-border-error neeto-ui-bg-pastel-red hover:neeto-ui-bg-pastel-red\":\n fileRejections.length,\n }\n ),\n })}\n >\n <div className=\"flex flex-col items-center space-y-3 p-4\">\n <Upload className=\"neeto-ui-text-primary-500\" size={32} />\n <input\n {...getInputProps()}\n data-cy=\"csv-upload-input\"\n data-testid=\"csv-upload-input\"\n />\n {isDragActive ? (\n <Typography style=\"body2\">\n {t(\n \"neetoMolecules.shareViaLink.bulkUploadPane.dropFileHere\"\n )}\n </Typography>\n ) : (\n <div className=\"flex flex-col items-center space-y-1\">\n <div className=\"flex w-full items-center justify-center gap-x-1\">\n <Trans\n i18nKey=\"neetoMolecules.shareViaLink.bulkUploadPane.dragNDrop\"\n components={{\n Button: <Button style=\"link\" />,\n }}\n />\n </div>\n <Typography\n className=\"neeto-ui-text-gray-700\"\n style=\"body3\"\n >\n <Trans\n i18nKey=\"neetoMolecules.shareViaLink.bulkUploadPane.supportedFormat\"\n values={{ fileType: \"csv\" }}\n components={{\n code: (\n <code className=\"neeto-ui-typography neeto-ui-text-body3 neeto-ui-bg-white m-0 border-l-0 p-0\" />\n ),\n }}\n />{\" \"}\n {fileSize &&\n t(\n \"neetoMolecules.shareViaLink.bulkUploadPane.supportedSize\",\n { fileSize }\n )}\n </Typography>\n </div>\n )}\n </div>\n {errors}\n </div>\n </div>\n </Pane.Body>\n <Pane.Footer className=\"flex items-center space-x-2\">\n <Button\n data-cy=\"bulk-upload-cancel-button\"\n data-testid=\"bulk-upload-cancel-button\"\n label={t(\"neetoMolecules.common.actions.cancel\")}\n style=\"text\"\n type=\"reset\"\n onClick={onClose}\n />\n </Pane.Footer>\n </div>\n </Pane>\n );\n};\n\nexport default BulkUploadPane;\n","/* @license\nPapa Parse\nv5.4.1\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n\n(function(root, factory)\n{\n\t/* globals define */\n\tif (typeof define === 'function' && define.amd)\n\t{\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t}\n\telse if (typeof module === 'object' && typeof exports !== 'undefined')\n\t{\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t}\n\telse\n\t{\n\t\t// Browser globals (root is window)\n\t\troot.Papa = factory();\n\t}\n\t// in strict mode we cannot access arguments.callee, so we need a named reference to\n\t// stringify the factory method for the blob worker\n\t// eslint-disable-next-line func-name\n}(this, function moduleFactory()\n{\n\t'use strict';\n\n\tvar global = (function() {\n\t\t// alternative method, similar to `Function('return this')()`\n\t\t// but without using `eval` (which is disabled when\n\t\t// using Content Security Policy).\n\n\t\tif (typeof self !== 'undefined') { return self; }\n\t\tif (typeof window !== 'undefined') { return window; }\n\t\tif (typeof global !== 'undefined') { return global; }\n\n\t\t// When running tests none of the above have been defined\n\t\treturn {};\n\t})();\n\n\n\tfunction getWorkerBlob() {\n\t\tvar URL = global.URL || global.webkitURL || null;\n\t\tvar code = moduleFactory.toString();\n\t\treturn Papa.BLOB_URL || (Papa.BLOB_URL = URL.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \", '(', code, ')();'], {type: 'text/javascript'})));\n\t}\n\n\tvar IS_WORKER = !global.document && !!global.postMessage,\n\t\tIS_PAPA_WORKER = global.IS_PAPA_WORKER || false;\n\n\tvar workers = {}, workerIdCounter = 0;\n\n\tvar Papa = {};\n\n\tPapa.parse = CsvToJson;\n\tPapa.unparse = JsonToCsv;\n\n\tPapa.RECORD_SEP = String.fromCharCode(30);\n\tPapa.UNIT_SEP = String.fromCharCode(31);\n\tPapa.BYTE_ORDER_MARK = '\\ufeff';\n\tPapa.BAD_DELIMITERS = ['\\r', '\\n', '\"', Papa.BYTE_ORDER_MARK];\n\tPapa.WORKERS_SUPPORTED = !IS_WORKER && !!global.Worker;\n\tPapa.NODE_STREAM_INPUT = 1;\n\n\t// Configurable chunk sizes for local and remote files, respectively\n\tPapa.LocalChunkSize = 1024 * 1024 * 10;\t// 10 MB\n\tPapa.RemoteChunkSize = 1024 * 1024 * 5;\t// 5 MB\n\tPapa.DefaultDelimiter = ',';\t\t\t// Used if not specified and detection fails\n\n\t// Exposed for testing and development only\n\tPapa.Parser = Parser;\n\tPapa.ParserHandle = ParserHandle;\n\tPapa.NetworkStreamer = NetworkStreamer;\n\tPapa.FileStreamer = FileStreamer;\n\tPapa.StringStreamer = StringStreamer;\n\tPapa.ReadableStreamStreamer = ReadableStreamStreamer;\n\tif (typeof PAPA_BROWSER_CONTEXT === 'undefined') {\n\t\tPapa.DuplexStreamStreamer = DuplexStreamStreamer;\n\t}\n\n\tif (global.jQuery)\n\t{\n\t\tvar $ = global.jQuery;\n\t\t$.fn.parse = function(options)\n\t\t{\n\t\t\tvar config = options.config || {};\n\t\t\tvar queue = [];\n\n\t\t\tthis.each(function(idx)\n\t\t\t{\n\t\t\t\tvar supported = $(this).prop('tagName').toUpperCase() === 'INPUT'\n\t\t\t\t\t\t\t\t&& $(this).attr('type').toLowerCase() === 'file'\n\t\t\t\t\t\t\t\t&& global.FileReader;\n\n\t\t\t\tif (!supported || !this.files || this.files.length === 0)\n\t\t\t\t\treturn true;\t// continue to next input element\n\n\t\t\t\tfor (var i = 0; i < this.files.length; i++)\n\t\t\t\t{\n\t\t\t\t\tqueue.push({\n\t\t\t\t\t\tfile: this.files[i],\n\t\t\t\t\t\tinputElem: this,\n\t\t\t\t\t\tinstanceConfig: $.extend({}, config)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tparseNextFile();\t// begin parsing\n\t\t\treturn this;\t\t// maintains chainability\n\n\n\t\t\tfunction parseNextFile()\n\t\t\t{\n\t\t\t\tif (queue.length === 0)\n\t\t\t\t{\n\t\t\t\t\tif (isFunction(options.complete))\n\t\t\t\t\t\toptions.complete();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar f = queue[0];\n\n\t\t\t\tif (isFunction(options.before))\n\t\t\t\t{\n\t\t\t\t\tvar returned = options.before(f.file, f.inputElem);\n\n\t\t\t\t\tif (typeof returned === 'object')\n\t\t\t\t\t{\n\t\t\t\t\t\tif (returned.action === 'abort')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror('AbortError', f.file, f.inputElem, returned.reason);\n\t\t\t\t\t\t\treturn;\t// Aborts all queued files immediately\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (returned.action === 'skip')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfileComplete();\t// parse the next file in the queue, if any\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (typeof returned.config === 'object')\n\t\t\t\t\t\t\tf.instanceConfig = $.extend(f.instanceConfig, returned.config);\n\t\t\t\t\t}\n\t\t\t\t\telse if (returned === 'skip')\n\t\t\t\t\t{\n\t\t\t\t\t\tfileComplete();\t// parse the next file in the queue, if any\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Wrap up the user's complete callback, if any, so that ours also gets executed\n\t\t\t\tvar userCompleteFunc = f.instanceConfig.complete;\n\t\t\t\tf.instanceConfig.complete = function(results)\n\t\t\t\t{\n\t\t\t\t\tif (isFunction(userCompleteFunc))\n\t\t\t\t\t\tuserCompleteFunc(results, f.file, f.inputElem);\n\t\t\t\t\tfileComplete();\n\t\t\t\t};\n\n\t\t\t\tPapa.parse(f.file, f.instanceConfig);\n\t\t\t}\n\n\t\t\tfunction error(name, file, elem, reason)\n\t\t\t{\n\t\t\t\tif (isFunction(options.error))\n\t\t\t\t\toptions.error({name: name}, file, elem, reason);\n\t\t\t}\n\n\t\t\tfunction fileComplete()\n\t\t\t{\n\t\t\t\tqueue.splice(0, 1);\n\t\t\t\tparseNextFile();\n\t\t\t}\n\t\t};\n\t}\n\n\n\tif (IS_PAPA_WORKER)\n\t{\n\t\tglobal.onmessage = workerThreadReceivedMessage;\n\t}\n\n\n\n\n\tfunction CsvToJson(_input, _config)\n\t{\n\t\t_config = _config || {};\n\t\tvar dynamicTyping = _config.dynamicTyping || false;\n\t\tif (isFunction(dynamicTyping)) {\n\t\t\t_config.dynamicTypingFunction = dynamicTyping;\n\t\t\t// Will be filled on first row call\n\t\t\tdynamicTyping = {};\n\t\t}\n\t\t_config.dynamicTyping = dynamicTyping;\n\n\t\t_config.transform = isFunction(_config.transform) ? _config.transform : false;\n\n\t\tif (_config.worker && Papa.WORKERS_SUPPORTED)\n\t\t{\n\t\t\tvar w = newWorker();\n\n\t\t\tw.userStep = _config.step;\n\t\t\tw.userChunk = _config.chunk;\n\t\t\tw.userComplete = _config.complete;\n\t\t\tw.userError = _config.error;\n\n\t\t\t_config.step = isFunction(_config.step);\n\t\t\t_config.chunk = isFunction(_config.chunk);\n\t\t\t_config.complete = isFunction(_config.complete);\n\t\t\t_config.error = isFunction(_config.error);\n\t\t\tdelete _config.worker;\t// prevent infinite loop\n\n\t\t\tw.postMessage({\n\t\t\t\tinput: _input,\n\t\t\t\tconfig: _config,\n\t\t\t\tworkerId: w.id\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar streamer = null;\n\t\tif (_input === Papa.NODE_STREAM_INPUT && typeof PAPA_BROWSER_CONTEXT === 'undefined')\n\t\t{\n\t\t\t// create a node Duplex stream for use\n\t\t\t// with .pipe\n\t\t\tstreamer = new DuplexStreamStreamer(_config);\n\t\t\treturn streamer.getStream();\n\t\t}\n\t\telse if (typeof _input === 'string')\n\t\t{\n\t\t\t_input = stripBom(_input);\n\t\t\tif (_config.download)\n\t\t\t\tstreamer = new NetworkStreamer(_config);\n\t\t\telse\n\t\t\t\tstreamer = new StringStreamer(_config);\n\t\t}\n\t\telse if (_input.readable === true && isFunction(_input.read) && isFunction(_input.on))\n\t\t{\n\t\t\tstreamer = new ReadableStreamStreamer(_config);\n\t\t}\n\t\telse if ((global.File && _input instanceof File) || _input instanceof Object)\t// ...Safari. (see issue #106)\n\t\t\tstreamer = new FileStreamer(_config);\n\n\t\treturn streamer.stream(_input);\n\n\t\t// Strip character from UTF-8 BOM encoded files that cause issue parsing the file\n\t\tfunction stripBom(string) {\n\t\t\tif (string.charCodeAt(0) === 0xfeff) {\n\t\t\t\treturn string.slice(1);\n\t\t\t}\n\t\t\treturn string;\n\t\t}\n\t}\n\n\n\n\n\n\n\tfunction JsonToCsv(_input, _config)\n\t{\n\t\t// Default configuration\n\n\t\t/** whether to surround every datum with quotes */\n\t\tvar _quotes = false;\n\n\t\t/** whether to write headers */\n\t\tvar _writeHeader = true;\n\n\t\t/** delimiting character(s) */\n\t\tvar _delimiter = ',';\n\n\t\t/** newline character(s) */\n\t\tvar _newline = '\\r\\n';\n\n\t\t/** quote character */\n\t\tvar _quoteChar = '\"';\n\n\t\t/** escaped quote character, either \"\" or <config.escapeChar>\" */\n\t\tvar _escapedQuote = _quoteChar + _quoteChar;\n\n\t\t/** whether to skip empty lines */\n\t\tvar _skipEmptyLines = false;\n\n\t\t/** the columns (keys) we expect when we unparse objects */\n\t\tvar _columns = null;\n\n\t\t/** whether to prevent outputting cells that can be parsed as formulae by spreadsheet software (Excel and LibreOffice) */\n\t\tvar _escapeFormulae = false;\n\n\t\tunpackConfig();\n\n\t\tvar quoteCharRegex = new RegExp(escapeRegExp(_quoteChar), 'g');\n\n\t\tif (typeof _input === 'string')\n\t\t\t_input = JSON.parse(_input);\n\n\t\tif (Array.isArray(_input))\n\t\t{\n\t\t\tif (!_input.length || Array.isArray(_input[0]))\n\t\t\t\treturn serialize(null, _input, _skipEmptyLines);\n\t\t\telse if (typeof _input[0] === 'object')\n\t\t\t\treturn serialize(_columns || Object.keys(_input[0]), _input, _skipEmptyLines);\n\t\t}\n\t\telse if (typeof _input === 'object')\n\t\t{\n\t\t\tif (typeof _input.data === 'string')\n\t\t\t\t_input.data = JSON.parse(_input.data);\n\n\t\t\tif (Array.isArray(_input.data))\n\t\t\t{\n\t\t\t\tif (!_input.fields)\n\t\t\t\t\t_input.fields = _input.meta && _input.meta.fields || _columns;\n\n\t\t\t\tif (!_input.fields)\n\t\t\t\t\t_input.fields = Array.isArray(_input.data[0])\n\t\t\t\t\t\t? _input.fields\n\t\t\t\t\t\t: typeof _input.data[0] === 'object'\n\t\t\t\t\t\t\t? Object.keys(_input.data[0])\n\t\t\t\t\t\t\t: [];\n\n\t\t\t\tif (!(Array.isArray(_input.data[0])) && typeof _input.data[0] !== 'object')\n\t\t\t\t\t_input.data = [_input.data];\t// handles input like [1,2,3] or ['asdf']\n\t\t\t}\n\n\t\t\treturn serialize(_input.fields || [], _input.data || [], _skipEmptyLines);\n\t\t}\n\n\t\t// Default (any valid paths should return before this)\n\t\tthrow new Error('Unable to serialize unrecognized input');\n\n\n\t\tfunction unpackConfig()\n\t\t{\n\t\t\tif (typeof _config !== 'object')\n\t\t\t\treturn;\n\n\t\t\tif (typeof _config.delimiter === 'string'\n && !Papa.BAD_DELIMITERS.filter(function(value) { return _config.delimiter.indexOf(value) !== -1; }).length)\n\t\t\t{\n\t\t\t\t_delimiter = _config.delimiter;\n\t\t\t}\n\n\t\t\tif (typeof _config.quotes === 'boolean'\n\t\t\t\t|| typeof _config.quotes === 'function'\n\t\t\t\t|| Array.isArray(_config.quotes))\n\t\t\t\t_quotes = _config.quotes;\n\n\t\t\tif (typeof _config.skipEmptyLines === 'boolean'\n\t\t\t\t|| typeof _config.skipEmptyLines === 'string')\n\t\t\t\t_skipEmptyLines = _config.skipEmptyLines;\n\n\t\t\tif (typeof _config.newline === 'string')\n\t\t\t\t_newline = _config.newline;\n\n\t\t\tif (typeof _config.quoteChar === 'string')\n\t\t\t\t_quoteChar = _config.quoteChar;\n\n\t\t\tif (typeof _config.header === 'boolean')\n\t\t\t\t_writeHeader = _config.header;\n\n\t\t\tif (Array.isArray(_config.columns)) {\n\n\t\t\t\tif (_config.columns.length === 0) throw new Error('Option columns is empty');\n\n\t\t\t\t_columns = _config.columns;\n\t\t\t}\n\n\t\t\tif (_config.escapeChar !== undefined) {\n\t\t\t\t_escapedQuote = _config.escapeChar + _quoteChar;\n\t\t\t}\n\n\t\t\tif (typeof _config.escapeFormulae === 'boolean' || _config.escapeFormulae instanceof RegExp) {\n\t\t\t\t_escapeFormulae = _config.escapeFormulae instanceof RegExp ? _config.escapeFormulae : /^[=+\\-@\\t\\r].*$/;\n\t\t\t}\n\t\t}\n\n\t\t/** The double for loop that iterates the data and writes out a CSV string including header row */\n\t\tfunction serialize(fields, data, skipEmptyLines)\n\t\t{\n\t\t\tvar csv = '';\n\n\t\t\tif (typeof fields === 'string')\n\t\t\t\tfields = JSON.parse(fields);\n\t\t\tif (typeof data === 'string')\n\t\t\t\tdata = JSON.parse(data);\n\n\t\t\tvar hasHeader = Array.isArray(fields) && fields.length > 0;\n\t\t\tvar dataKeyedByField = !(Array.isArray(data[0]));\n\n\t\t\t// If there a header row, write it first\n\t\t\tif (hasHeader && _writeHeader)\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < fields.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (i > 0)\n\t\t\t\t\t\tcsv += _delimiter;\n\t\t\t\t\tcsv += safe(fields[i], i);\n\t\t\t\t}\n\t\t\t\tif (data.length > 0)\n\t\t\t\t\tcsv += _newline;\n\t\t\t}\n\n\t\t\t// Then write out the data\n\t\t\tfor (var row = 0; row < data.length; row++)\n\t\t\t{\n\t\t\t\tvar maxCol = hasHeader ? fields.length : data[row].length;\n\n\t\t\t\tvar emptyLine = false;\n\t\t\t\tvar nullLine = hasHeader ? Object.keys(data[row]).length === 0 : data[row].length === 0;\n\t\t\t\tif (skipEmptyLines && !hasHeader)\n\t\t\t\t{\n\t\t\t\t\temptyLine = skipEmptyLines === 'greedy' ? data[row].join('').trim() === '' : data[row].length === 1 && data[row][0].length === 0;\n\t\t\t\t}\n\t\t\t\tif (skipEmptyLines === 'greedy' && hasHeader) {\n\t\t\t\t\tvar line = [];\n\t\t\t\t\tfor (var c = 0; c < maxCol; c++) {\n\t\t\t\t\t\tvar cx = dataKeyedByField ? fields[c] : c;\n\t\t\t\t\t\tline.push(data[row][cx]);\n\t\t\t\t\t}\n\t\t\t\t\temptyLine = line.join('').trim() === '';\n\t\t\t\t}\n\t\t\t\tif (!emptyLine)\n\t\t\t\t{\n\t\t\t\t\tfor (var col = 0; col < maxCol; col++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (col > 0 && !nullLine)\n\t\t\t\t\t\t\tcsv += _delimiter;\n\t\t\t\t\t\tvar colIdx = hasHeader && dataKeyedByField ? fields[col] : col;\n\t\t\t\t\t\tcsv += safe(data[row][colIdx], col);\n\t\t\t\t\t}\n\t\t\t\t\tif (row < data.length - 1 && (!skipEmptyLines || (maxCol > 0 && !nullLine)))\n\t\t\t\t\t{\n\t\t\t\t\t\tcsv += _newline;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn csv;\n\t\t}\n\n\t\t/** Encloses a value around quotes if needed (makes a value safe for CSV insertion) */\n\t\tfunction safe(str, col)\n\t\t{\n\t\t\tif (typeof str === 'undefined' || str === null)\n\t\t\t\treturn '';\n\n\t\t\tif (str.constructor === Date)\n\t\t\t\treturn JSON.stringify(str).slice(1, 25);\n\n\t\t\tvar needsQuotes = false;\n\n\t\t\tif (_escapeFormulae && typeof str === \"string\" && _escapeFormulae.test(str)) {\n\t\t\t\tstr = \"'\" + str;\n\t\t\t\tneedsQuotes = true;\n\t\t\t}\n\n\t\t\tvar escapedQuoteStr = str.toString().replace(quoteCharRegex, _escapedQuote);\n\n\t\t\tneedsQuotes = needsQuotes\n\t\t\t\t\t\t\t|| _quotes === true\n\t\t\t\t\t\t\t|| (typeof _quotes === 'function' && _quotes(str, col))\n\t\t\t\t\t\t\t|| (Array.isArray(_quotes) && _quotes[col])\n\t\t\t\t\t\t\t|| hasAny(escapedQuoteStr, Papa.BAD_DELIMITERS)\n\t\t\t\t\t\t\t|| escapedQuoteStr.indexOf(_delimiter) > -1\n\t\t\t\t\t\t\t|| escapedQuoteStr.charAt(0) === ' '\n\t\t\t\t\t\t\t|| escapedQuoteStr.charAt(escapedQuoteStr.length - 1) === ' ';\n\n\t\t\treturn needsQuotes ? _quoteChar + escapedQuoteStr + _quoteChar : escapedQuoteStr;\n\t\t}\n\n\t\tfunction hasAny(str, substrings)\n\t\t{\n\t\t\tfor (var i = 0; i < substrings.length; i++)\n\t\t\t\tif (str.indexOf(substrings[i]) > -1)\n\t\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/** ChunkStreamer is the base prototype for various streamer implementations. */\n\tfunction ChunkStreamer(config)\n\t{\n\t\tthis._handle = null;\n\t\tthis._finished = false;\n\t\tthis._completed = false;\n\t\tthis._halted = false;\n\t\tthis._input = null;\n\t\tthis._baseIndex = 0;\n\t\tthis._partialLine = '';\n\t\tthis._rowCount = 0;\n\t\tthis._start = 0;\n\t\tthis._nextChunk = null;\n\t\tthis.isFirstChunk = true;\n\t\tthis._completeResults = {\n\t\t\tdata: [],\n\t\t\terrors: [],\n\t\t\tmeta: {}\n\t\t};\n\t\treplaceConfig.call(this, config);\n\n\t\tthis.parseChunk = function(chunk, isFakeChunk)\n\t\t{\n\t\t\t// First chunk pre-processing\n\t\t\tif (this.isFirstChunk && isFunction(this._config.beforeFirstChunk))\n\t\t\t{\n\t\t\t\tvar modifiedChunk = this._config.beforeFirstChunk(chunk);\n\t\t\t\tif (modifiedChunk !== undefined)\n\t\t\t\t\tchunk = modifiedChunk;\n\t\t\t}\n\t\t\tthis.isFirstChunk = false;\n\t\t\tthis._halted = false;\n\n\t\t\t// Rejoin the line we likely just split in two by chunking the file\n\t\t\tvar aggregate = this._partialLine + chunk;\n\t\t\tthis._partialLine = '';\n\n\t\t\tvar results = this._handle.parse(aggregate, this._baseIndex, !this._finished);\n\n\t\t\tif (this._handle.paused() || this._handle.aborted()) {\n\t\t\t\tthis._halted = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar lastIndex = results.meta.cursor;\n\n\t\t\tif (!this._finished)\n\t\t\t{\n\t\t\t\tthis._partialLine = aggregate.substring(lastIndex - this._baseIndex);\n\t\t\t\tthis._baseIndex = lastIndex;\n\t\t\t}\n\n\t\t\tif (results && results.data)\n\t\t\t\tthis._rowCount += results.data.length;\n\n\t\t\tvar finishedIncludingPreview = this._finished || (this._config.preview && this._rowCount >= this._config.preview);\n\n\t\t\tif (IS_PAPA_WORKER)\n\t\t\t{\n\t\t\t\tglobal.postMessage({\n\t\t\t\t\tresults: results,\n\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\tfinished: finishedIncludingPreview\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (isFunction(this._config.chunk) && !isFakeChunk)\n\t\t\t{\n\t\t\t\tthis._config.chunk(results, this._handle);\n\t\t\t\tif (this._handle.paused() || this._handle.aborted()) {\n\t\t\t\t\tthis._halted = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresults = undefined;\n\t\t\t\tthis._completeResults = undefined;\n\t\t\t}\n\n\t\t\tif (!this._config.step && !this._config.chunk) {\n\t\t\t\tthis._completeResults.data = this._completeResults.data.concat(results.data);\n\t\t\t\tthis._completeResults.errors = this._completeResults.errors.concat(results.errors);\n\t\t\t\tthis._completeResults.meta = results.meta;\n\t\t\t}\n\n\t\t\tif (!this._completed && finishedIncludingPreview && isFunction(this._config.complete) && (!results || !results.meta.aborted)) {\n\t\t\t\tthis._config.complete(this._completeResults, this._input);\n\t\t\t\tthis._completed = true;\n\t\t\t}\n\n\t\t\tif (!finishedIncludingPreview && (!results || !results.meta.paused))\n\t\t\t\tthis._nextChunk();\n\n\t\t\treturn results;\n\t\t};\n\n\t\tthis._sendError = function(error)\n\t\t{\n\t\t\tif (isFunction(this._config.error))\n\t\t\t\tthis._config.error(error);\n\t\t\telse if (IS_PAPA_WORKER && this._config.error)\n\t\t\t{\n\t\t\t\tglobal.postMessage({\n\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\terror: error,\n\t\t\t\t\tfinished: false\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tfunction replaceConfig(config)\n\t\t{\n\t\t\t// Deep-copy the config so we can edit it\n\t\t\tvar configCopy = copy(config);\n\t\t\tconfigCopy.chunkSize = parseInt(configCopy.chunkSize);\t// parseInt VERY important so we don't concatenate strings!\n\t\t\tif (!config.step && !config.chunk)\n\t\t\t\tconfigCopy.chunkSize = null; // disable Range header if not streaming; bad values break IIS - see issue #196\n\t\t\tthis._handle = new ParserHandle(configCopy);\n\t\t\tthis._handle.streamer = this;\n\t\t\tthis._config = configCopy;\t// persist the copy to the caller\n\t\t}\n\t}\n\n\n\tfunction NetworkStreamer(config)\n\t{\n\t\tconfig = config || {};\n\t\tif (!config.chunkSize)\n\t\t\tconfig.chunkSize = Papa.RemoteChunkSize;\n\t\tChunkStreamer.call(this, config);\n\n\t\tvar xhr;\n\n\t\tif (IS_WORKER)\n\t\t{\n\t\t\tthis._nextChunk = function()\n\t\t\t{\n\t\t\t\tthis._readChunk();\n\t\t\t\tthis._chunkLoaded();\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._nextChunk = function()\n\t\t\t{\n\t\t\t\tthis._readChunk();\n\t\t\t};\n\t\t}\n\n\t\tthis.stream = function(url)\n\t\t{\n\t\t\tthis._input = url;\n\t\t\tthis._nextChunk();\t// Starts streaming\n\t\t};\n\n\t\tthis._readChunk = function()\n\t\t{\n\t\t\tif (this._finished)\n\t\t\t{\n\t\t\t\tthis._chunkLoaded();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\txhr = new XMLHttpRequest();\n\n\t\t\tif (this._config.withCredentials)\n\t\t\t{\n\t\t\t\txhr.withCredentials = this._config.withCredentials;\n\t\t\t}\n\n\t\t\tif (!IS_WORKER)\n\t\t\t{\n\t\t\t\txhr.onload = bindFunction(this._chunkLoaded, this);\n\t\t\t\txhr.onerror = bindFunction(this._chunkError, this);\n\t\t\t}\n\n\t\t\txhr.open(this._config.downloadRequestBody ? 'POST' : 'GET', this._input, !IS_WORKER);\n\t\t\t// Headers can only be set when once the request state is OPENED\n\t\t\tif (this._config.downloadRequestHeaders)\n\t\t\t{\n\t\t\t\tvar headers = this._config.downloadRequestHeaders;\n\n\t\t\t\tfor (var headerName in headers)\n\t\t\t\t{\n\t\t\t\t\txhr.setRequestHeader(headerName, headers[headerName]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._config.chunkSize)\n\t\t\t{\n\t\t\t\tvar end = this._start + this._config.chunkSize - 1;\t// minus one because byte range is inclusive\n\t\t\t\txhr.setRequestHeader('Range', 'bytes=' + this._start + '-' + end);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\txhr.send(this._config.downloadRequestBody);\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tthis._chunkError(err.message);\n\t\t\t}\n\n\t\t\tif (IS_WORKER && xhr.status === 0)\n\t\t\t\tthis._chunkError();\n\t\t};\n\n\t\tthis._chunkLoaded = function()\n\t\t{\n\t\t\tif (xhr.readyState !== 4)\n\t\t\t\treturn;\n\n\t\t\tif (xhr.status < 200 || xhr.status >= 400)\n\t\t\t{\n\t\t\t\tthis._chunkError();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Use chunckSize as it may be a diference on reponse lentgh due to characters with more than 1 byte\n\t\t\tthis._start += this._config.chunkSize ? this._config.chunkSize : xhr.responseText.length;\n\t\t\tthis._finished = !this._config.chunkSize || this._start >= getFileSize(xhr);\n\t\t\tthis.parseChunk(xhr.responseText);\n\t\t};\n\n\t\tthis._chunkError = function(errorMessage)\n\t\t{\n\t\t\tvar errorText = xhr.statusText || errorMessage;\n\t\t\tthis._sendError(new Error(errorText));\n\t\t};\n\n\t\tfunction getFileSize(xhr)\n\t\t{\n\t\t\tvar contentRange = xhr.getResponseHeader('Content-Range');\n\t\t\tif (contentRange === null) { // no content range, then finish!\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\treturn parseInt(contentRange.substring(contentRange.lastIndexOf('/') + 1));\n\t\t}\n\t}\n\tNetworkStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\tNetworkStreamer.prototype.constructor = NetworkStreamer;\n\n\n\tfunction FileStreamer(config)\n\t{\n\t\tconfig = config || {};\n\t\tif (!config.chunkSize)\n\t\t\tconfig.chunkSize = Papa.LocalChunkSize;\n\t\tChunkStreamer.call(this, config);\n\n\t\tvar reader, slice;\n\n\t\t// FileReader is better than FileReaderSync (even in worker) - see http://stackoverflow.com/q/24708649/1048862\n\t\t// But Firefox is a pill, too - see issue #76: https://github.com/mholt/PapaParse/issues/76\n\t\tvar usingAsyncReader = typeof FileReader !== 'undefined';\t// Safari doesn't consider it a function - see issue #105\n\n\t\tthis.stream = function(file)\n\t\t{\n\t\t\tthis._input = file;\n\t\t\tslice = file.slice || file.webkitSlice || file.mozSlice;\n\n\t\t\tif (usingAsyncReader)\n\t\t\t{\n\t\t\t\treader = new FileReader();\t\t// Preferred method of reading files, even in workers\n\t\t\t\treader.onload = bindFunction(this._chunkLoaded, this);\n\t\t\t\treader.onerror = bindFunction(this._chunkError, this);\n\t\t\t}\n\t\t\telse\n\t\t\t\treader = new FileReaderSync();\t// Hack for running in a web worker in Firefox\n\n\t\t\tthis._nextChunk();\t// Starts streaming\n\t\t};\n\n\t\tthis._nextChunk = function()\n\t\t{\n\t\t\tif (!this._finished && (!this._config.preview || this._rowCount < this._config.preview))\n\t\t\t\tthis._readChunk();\n\t\t};\n\n\t\tthis._readChunk = function()\n\t\t{\n\t\t\tvar input = this._input;\n\t\t\tif (this._config.chunkSize)\n\t\t\t{\n\t\t\t\tvar end = Math.min(this._start + this._config.chunkSize, this._input.size);\n\t\t\t\tinput = slice.call(input, this._start, end);\n\t\t\t}\n\t\t\tvar txt = reader.readAsText(input, this._config.encoding);\n\t\t\tif (!usingAsyncReader)\n\t\t\t\tthis._chunkLoaded({ target: { result: txt } });\t// mimic the async signature\n\t\t};\n\n\t\tthis._chunkLoaded = function(event)\n\t\t{\n\t\t\t// Very important to increment start each time before handling results\n\t\t\tthis._start += this._config.chunkSize;\n\t\t\tthis._finished = !this._config.chunkSize || this._start >= this._input.size;\n\t\t\tthis.parseChunk(event.target.result);\n\t\t};\n\n\t\tthis._chunkError = function()\n\t\t{\n\t\t\tthis._sendError(reader.error);\n\t\t};\n\n\t}\n\tFileStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\tFileStreamer.prototype.constructor = FileStreamer;\n\n\n\tfunction StringStreamer(config)\n\t{\n\t\tconfig = config || {};\n\t\tChunkStreamer.call(this, config);\n\n\t\tvar remaining;\n\t\tthis.stream = function(s)\n\t\t{\n\t\t\tremaining = s;\n\t\t\treturn this._nextChunk();\n\t\t};\n\t\tthis._nextChunk = function()\n\t\t{\n\t\t\tif (this._finished) return;\n\t\t\tvar size = this._config.chunkSize;\n\t\t\tvar chunk;\n\t\t\tif(size) {\n\t\t\t\tchunk = remaining.substring(0, size);\n\t\t\t\tremaining = remaining.substring(size);\n\t\t\t} else {\n\t\t\t\tchunk = remaining;\n\t\t\t\tremaining = '';\n\t\t\t}\n\t\t\tthis._finished = !remaining;\n\t\t\treturn this.parseChunk(chunk);\n\t\t};\n\t}\n\tStringStreamer.prototype = Object.create(StringStreamer.prototype);\n\tStringStreamer.prototype.constructor = StringStreamer;\n\n\n\tfunction ReadableStreamStreamer(config)\n\t{\n\t\tconfig = config || {};\n\n\t\tChunkStreamer.call(this, config);\n\n\t\tvar queue = [];\n\t\tvar parseOnData = true;\n\t\tvar streamHasEnded = false;\n\n\t\tthis.pause = function()\n\t\t{\n\t\t\tChunkStreamer.prototype.pause.apply(this, arguments);\n\t\t\tthis._input.pause();\n\t\t};\n\n\t\tthis.resume = function()\n\t\t{\n\t\t\tChunkStreamer.prototype.resume.apply(this, arguments);\n\t\t\tthis._input.resume();\n\t\t};\n\n\t\tthis.stream = function(stream)\n\t\t{\n\t\t\tthis._input = stream;\n\n\t\t\tthis._input.on('data', this._streamData);\n\t\t\tthis._input.on('end', this._streamEnd);\n\t\t\tthis._input.on('error', this._streamError);\n\t\t};\n\n\t\tthis._checkIsFinished = function()\n\t\t{\n\t\t\tif (streamHasEnded && queue.length === 1) {\n\t\t\t\tthis._finished = true;\n\t\t\t}\n\t\t};\n\n\t\tthis._nextChunk = function()\n\t\t{\n\t\t\tthis._checkIsFinished();\n\t\t\tif (queue.length)\n\t\t\t{\n\t\t\t\tthis.parseChunk(queue.shift());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tparseOnData = true;\n\t\t\t}\n\t\t};\n\n\t\tthis._streamData = bindFunction(function(chunk)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tqueue.push(typeof chunk === 'string' ? chunk : chunk.toString(this._config.encoding));\n\n\t\t\t\tif (parseOnData)\n\t\t\t\t{\n\t\t\t\t\tparseOnData = false;\n\t\t\t\t\tthis._checkIsFinished();\n\t\t\t\t\tthis.parseChunk(queue.shift());\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (error)\n\t\t\t{\n\t\t\t\tthis._streamError(error);\n\t\t\t}\n\t\t}, this);\n\n\t\tthis._streamError = bindFunction(function(error)\n\t\t{\n\t\t\tthis._streamCleanUp();\n\t\t\tthis._sendError(error);\n\t\t}, this);\n\n\t\tthis._streamEnd = bindFunction(function()\n\t\t{\n\t\t\tthis._streamCleanUp();\n\t\t\tstreamHasEnded = true;\n\t\t\tthis._streamData('');\n\t\t}, this);\n\n\t\tthis._streamCleanUp = bindFunction(function()\n\t\t{\n\t\t\tthis._input.removeListener('data', this._streamData);\n\t\t\tthis._input.removeListener('end', this._streamEnd);\n\t\t\tthis._input.removeListener('error', this._streamError);\n\t\t}, this);\n\t}\n\tReadableStreamStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\tReadableStreamStreamer.prototype.constructor = ReadableStreamStreamer;\n\n\n\tfunction DuplexStreamStreamer(_config) {\n\t\tvar Duplex = require('stream').Duplex;\n\t\tvar config = copy(_config);\n\t\tvar parseOnWrite = true;\n\t\tvar writeStreamHasFinished = false;\n\t\tvar parseCallbackQueue = [];\n\t\tvar stream = null;\n\n\t\tthis._onCsvData = function(results)\n\t\t{\n\t\t\tvar data = results.data;\n\t\t\tif (!stream.push(data) && !this._handle.paused()) {\n\t\t\t\t// the writeable consumer buffer has filled up\n\t\t\t\t// so we need to pause until more items\n\t\t\t\t// can be processed\n\t\t\t\tthis._handle.pause();\n\t\t\t}\n\t\t};\n\n\t\tthis._onCsvComplete = function()\n\t\t{\n\t\t\t// node will finish the read stream when\n\t\t\t// null is pushed\n\t\t\tstream.push(null);\n\t\t};\n\n\t\tconfig.step = bindFunction(this._onCsvData, this);\n\t\tconfig.complete = bindFunction(this._onCsvComplete, this);\n\t\tChunkStreamer.call(this, config);\n\n\t\tthis._nextChunk = function()\n\t\t{\n\t\t\tif (writeStreamHasFinished && parseCallbackQueue.length === 1) {\n\t\t\t\tthis._finished = true;\n\t\t\t}\n\t\t\tif (parseCallbackQueue.length) {\n\t\t\t\tparseCallbackQueue.shift()();\n\t\t\t} else {\n\t\t\t\tparseOnWrite = true;\n\t\t\t}\n\t\t};\n\n\t\tthis._addToParseQueue = function(chunk, callback)\n\t\t{\n\t\t\t// add to queue so that we can indicate\n\t\t\t// completion via callback\n\t\t\t// node will automatically pause the incoming stream\n\t\t\t// when too many items have been added without their\n\t\t\t// callback being invoked\n\t\t\tparseCallbackQueue.push(bindFunction(function() {\n\t\t\t\tthis.parseChunk(typeof chunk === 'string' ? chunk : chunk.toString(config.encoding));\n\t\t\t\tif (isFunction(callback)) {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\tif (parseOnWrite) {\n\t\t\t\tparseOnWrite = false;\n\t\t\t\tthis._nextChunk();\n\t\t\t}\n\t\t};\n\n\t\tthis._onRead = function()\n\t\t{\n\t\t\tif (this._handle.paused()) {\n\t\t\t\t// the writeable consumer can handle more data\n\t\t\t\t// so resume the chunk parsing\n\t\t\t\tthis._handle.resume();\n\t\t\t}\n\t\t};\n\n\t\tthis._onWrite = function(chunk, encoding, callback)\n\t\t{\n\t\t\tthis._addToParseQueue(chunk, callback);\n\t\t};\n\n\t\tthis._onWriteComplete = function()\n\t\t{\n\t\t\twriteStreamHasFinished = true;\n\t\t\t// have to write empty string\n\t\t\t// so parser knows its done\n\t\t\tthis._addToParseQueue('');\n\t\t};\n\n\t\tthis.getStream = function()\n\t\t{\n\t\t\treturn stream;\n\t\t};\n\t\tstream = new Duplex({\n\t\t\treadableObjectMode: true,\n\t\t\tdecodeStrings: false,\n\t\t\tread: bindFunction(this._onRead, this),\n\t\t\twrite: bindFunction(this._onWrite, this)\n\t\t});\n\t\tstream.once('finish', bindFunction(this._onWriteComplete, this));\n\t}\n\tif (typeof PAPA_BROWSER_CONTEXT === 'undefined') {\n\t\tDuplexStreamStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\t\tDuplexStreamStreamer.prototype.constructor = DuplexStreamStreamer;\n\t}\n\n\n\t// Use one ParserHandle per entire CSV file or string\n\tfunction ParserHandle(_config)\n\t{\n\t\t// One goal is to minimize the use of regular expressions...\n\t\tvar MAX_FLOAT = Math.pow(2, 53);\n\t\tvar MIN_FLOAT = -MAX_FLOAT;\n\t\tvar FLOAT = /^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/;\n\t\tvar ISO_DATE = /^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/;\n\t\tvar self = this;\n\t\tvar _stepCounter = 0;\t// Number of times step was called (number of rows parsed)\n\t\tvar _rowCounter = 0;\t// Number of rows that have been parsed so far\n\t\tvar _input;\t\t\t\t// The input being parsed\n\t\tvar _parser;\t\t\t// The core parser being used\n\t\tvar _paused = false;\t// Whether we are paused or not\n\t\tvar _aborted = false;\t// Whether the parser has aborted or not\n\t\tvar _delimiterError;\t// Temporary state between delimiter detection and processing results\n\t\tvar _fields = [];\t\t// Fields are from the header row of the input, if there is one\n\t\tvar _results = {\t\t// The last results returned from the parser\n\t\t\tdata: [],\n\t\t\terrors: [],\n\t\t\tmeta: {}\n\t\t};\n\n\t\tif (isFunction(_config.step))\n\t\t{\n\t\t\tvar userStep = _config.step;\n\t\t\t_config.step = function(results)\n\t\t\t{\n\t\t\t\t_results = results;\n\n\t\t\t\tif (needsHeaderRow())\n\t\t\t\t\tprocessResults();\n\t\t\t\telse\t// only call user's step function after header row\n\t\t\t\t{\n\t\t\t\t\tprocessResults();\n\n\t\t\t\t\t// It's possbile that this line was empty and there's no row here after all\n\t\t\t\t\tif (_results.data.length === 0)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t_stepCounter += results.data.length;\n\t\t\t\t\tif (_config.preview && _stepCounter > _config.preview)\n\t\t\t\t\t\t_parser.abort();\n\t\t\t\t\telse {\n\t\t\t\t\t\t_results.data = _results.data[0];\n\t\t\t\t\t\tuserStep(_results, self);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Parses input. Most users won't need, and shouldn't mess with, the baseIndex\n\t\t * and ignoreLastRow parameters. They are used by streamers (wrapper functions)\n\t\t * when an input comes in multiple chunks, like from a file.\n\t\t */\n\t\tthis.parse = function(input, baseIndex, ignoreLastRow)\n\t\t{\n\t\t\tvar quoteChar = _config.quoteChar || '\"';\n\t\t\tif (!_config.newline)\n\t\t\t\t_config.newline = guessLineEndings(input, quoteChar);\n\n\t\t\t_delimiterError = false;\n\t\t\tif (!_config.delimiter)\n\t\t\t{\n\t\t\t\tvar delimGuess = guessDelimiter(input, _config.newline, _config.skipEmptyLines, _config.comments, _config.delimitersToGuess);\n\t\t\t\tif (delimGuess.successful)\n\t\t\t\t\t_config.delimiter = delimGuess.bestDelimiter;\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_delimiterError = true;\t// add error after parsing (otherwise it would be overwritten)\n\t\t\t\t\t_config.delimiter = Papa.DefaultDelimiter;\n\t\t\t\t}\n\t\t\t\t_results.meta.delimiter = _config.delimiter;\n\t\t\t}\n\t\t\telse if(isFunction(_config.delimiter))\n\t\t\t{\n\t\t\t\t_config.delimiter = _config.delimiter(input);\n\t\t\t\t_results.meta.delimiter = _config.delimiter;\n\t\t\t}\n\n\t\t\tvar parserConfig = copy(_config);\n\t\t\tif (_config.preview && _config.header)\n\t\t\t\tparserConfig.preview++;\t// to compensate for header row\n\n\t\t\t_input = input;\n\t\t\t_parser = new Parser(parserConfig);\n\t\t\t_results = _parser.parse(_input, baseIndex, ignoreLastRow);\n\t\t\tprocessResults();\n\t\t\treturn _paused ? { meta: { paused: true } } : (_results || { meta: { paused: false } });\n\t\t};\n\n\t\tthis.paused = function()\n\t\t{\n\t\t\treturn _paused;\n\t\t};\n\n\t\tthis.pause = function()\n\t\t{\n\t\t\t_paused = true;\n\t\t\t_parser.abort();\n\n\t\t\t// If it is streaming via \"chunking\", the reader will start appending correctly already so no need to substring,\n\t\t\t// otherwise we can get duplicate content within a row\n\t\t\t_input = isFunction(_config.chunk) ? \"\" : _input.substring(_parser.getCharIndex());\n\t\t};\n\n\t\tthis.resume = function()\n\t\t{\n\t\t\tif(self.streamer._halted) {\n\t\t\t\t_paused = false;\n\t\t\t\tself.streamer.parseChunk(_input, true);\n\t\t\t} else {\n\t\t\t\t// Bugfix: #636 In case the processing hasn't halted yet\n\t\t\t\t// wait for it to halt in order to resume\n\t\t\t\tsetTimeout(self.resume, 3);\n\t\t\t}\n\t\t};\n\n\t\tthis.aborted = function()\n\t\t{\n\t\t\treturn _aborted;\n\t\t};\n\n\t\tthis.abort = function()\n\t\t{\n\t\t\t_aborted = true;\n\t\t\t_parser.abort();\n\t\t\t_results.meta.aborted = true;\n\t\t\tif (isFunction(_config.complete))\n\t\t\t\t_config.complete(_results);\n\t\t\t_input = '';\n\t\t};\n\n\t\tfunction testEmptyLine(s) {\n\t\t\treturn _config.skipEmptyLines === 'greedy' ? s.join('').trim() === '' : s.length === 1 && s[0].length === 0;\n\t\t}\n\n\t\tfunction testFloat(s) {\n\t\t\tif (FLOAT.test(s)) {\n\t\t\t\tvar floatValue = parseFloat(s);\n\t\t\t\tif (floatValue > MIN_FLOAT && floatValue < MAX_FLOAT) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction processResults()\n\t\t{\n\t\t\tif (_results && _delimiterError)\n\t\t\t{\n\t\t\t\taddError('Delimiter', 'UndetectableDelimiter', 'Unable to auto-detect delimiting character; defaulted to \\'' + Papa.DefaultDelimiter + '\\'');\n\t\t\t\t_delimiterError = false;\n\t\t\t}\n\n\t\t\tif (_config.skipEmptyLines)\n\t\t\t{\n\t\t\t\t_results.data = _results.data.filter(function(d) {\n\t\t\t\t\treturn !testEmptyLine(d);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (needsHeaderRow())\n\t\t\t\tfillHeaderFields();\n\n\t\t\treturn applyHeaderAndDynamicTypingAndTransformation();\n\t\t}\n\n\t\tfunction needsHeaderRow()\n\t\t{\n\t\t\treturn _config.header && _fields.length === 0;\n\t\t}\n\n\t\tfunction fillHeaderFields()\n\t\t{\n\t\t\tif (!_results)\n\t\t\t\treturn;\n\n\t\t\tfunction addHeader(header, i)\n\t\t\t{\n\t\t\t\tif (isFunction(_config.transformHeader))\n\t\t\t\t\theader = _config.transformHeader(header, i);\n\n\t\t\t\t_fields.push(header);\n\t\t\t}\n\n\t\t\tif (Array.isArray(_results.data[0]))\n\t\t\t{\n\t\t\t\tfor (var i = 0; needsHeaderRow() && i < _results.data.length; i++)\n\t\t\t\t\t_results.data[i].forEach(addHeader);\n\n\t\t\t\t_results.data.splice(0, 1);\n\t\t\t}\n\t\t\t// if _results.data[0] is not an array, we are in a step where _results.data is the row.\n\t\t\telse\n\t\t\t\t_results.data.forEach(addHeader);\n\t\t}\n\n\t\tfunction shouldApplyDynamicTyping(field) {\n\t\t\t// Cache function values to avoid calling it for each row\n\t\t\tif (_config.dynamicTypingFunction && _config.dynamicTyping[field] === undefined) {\n\t\t\t\t_config.dynamicTyping[field] = _config.dynamicTypingFunction(field);\n\t\t\t}\n\t\t\treturn (_config.dynamicTyping[field] || _config.dynamicTyping) === true;\n\t\t}\n\n\t\tfunction parseDynamic(field, value)\n\t\t{\n\t\t\tif (shouldApplyDynamicTyping(field))\n\t\t\t{\n\t\t\t\tif (value === 'true' || value === 'TRUE')\n\t\t\t\t\treturn true;\n\t\t\t\telse if (value === 'false' || value === 'FALSE')\n\t\t\t\t\treturn false;\n\t\t\t\telse if (testFloat(value))\n\t\t\t\t\treturn parseFloat(value);\n\t\t\t\telse if (ISO_DATE.test(value))\n\t\t\t\t\treturn new Date(value);\n\t\t\t\telse\n\t\t\t\t\treturn (value === '' ? null : value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\n\t\tfunction applyHeaderAndDynamicTypingAndTransformation()\n\t\t{\n\t\t\tif (!_results || (!_config.header && !_config.dynamicTyping && !_config.transform))\n\t\t\t\treturn _results;\n\n\t\t\tfunction processRow(rowSource, i)\n\t\t\t{\n\t\t\t\tvar row = _config.header ? {} : [];\n\n\t\t\t\tvar j;\n\t\t\t\tfor (j = 0; j < rowSource.length; j++)\n\t\t\t\t{\n\t\t\t\t\tvar field = j;\n\t\t\t\t\tvar value = rowSource[j];\n\n\t\t\t\t\tif (_config.header)\n\t\t\t\t\t\tfield = j >= _fields.length ? '__parsed_extra' : _fields[j];\n\n\t\t\t\t\tif (_config.transform)\n\t\t\t\t\t\tvalue = _config.transform(value,field);\n\n\t\t\t\t\tvalue = parseDynamic(field, value);\n\n\t\t\t\t\tif (field === '__parsed_extra')\n\t\t\t\t\t{\n\t\t\t\t\t\trow[field] = row[field] || [];\n\t\t\t\t\t\trow[field].push(value);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\trow[field] = value;\n\t\t\t\t}\n\n\n\t\t\t\tif (_config.header)\n\t\t\t\t{\n\t\t\t\t\tif (j > _fields.length)\n\t\t\t\t\t\taddError('FieldMismatch', 'TooManyFields', 'Too many fields: expected ' + _fields.length + ' fields but parsed ' + j, _rowCounter + i);\n\t\t\t\t\telse if (j < _fields.length)\n\t\t\t\t\t\taddError('FieldMismatch', 'TooFewFields', 'Too few fields: expected ' + _fields.length + ' fields but parsed ' + j, _rowCounter + i);\n\t\t\t\t}\n\n\t\t\t\treturn row;\n\t\t\t}\n\n\t\t\tvar incrementBy = 1;\n\t\t\tif (!_results.data.length || Array.isArray(_results.data[0]))\n\t\t\t{\n\t\t\t\t_results.data = _results.data.map(processRow);\n\t\t\t\tincrementBy = _results.data.length;\n\t\t\t}\n\t\t\telse\n\t\t\t\t_results.data = processRow(_results.data, 0);\n\n\n\t\t\tif (_config.header && _results.meta)\n\t\t\t\t_results.meta.fields = _fields;\n\n\t\t\t_rowCounter += incrementBy;\n\t\t\treturn _results;\n\t\t}\n\n\t\tfunction guessDelimiter(input, newline, skipEmptyLines, comments, delimitersToGuess) {\n\t\t\tvar bestDelim, bestDelta, fieldCountPrevRow, maxFieldCount;\n\n\t\t\tdelimitersToGuess = delimitersToGuess || [',', '\\t', '|', ';', Papa.RECORD_SEP, Papa.UNIT_SEP];\n\n\t\t\tfor (var i = 0; i < delimitersToGuess.length; i++) {\n\t\t\t\tvar delim = delimitersToGuess[i];\n\t\t\t\tvar delta = 0, avgFieldCount = 0, emptyLinesCount = 0;\n\t\t\t\tfieldCountPrevRow = undefined;\n\n\t\t\t\tvar preview = new Parser({\n\t\t\t\t\tcomments: comments,\n\t\t\t\t\tdelimiter: delim,\n\t\t\t\t\tnewline: newline,\n\t\t\t\t\tpreview: 10\n\t\t\t\t}).parse(input);\n\n\t\t\t\tfor (var j = 0; j < preview.data.length; j++) {\n\t\t\t\t\tif (skipEmptyLines && testEmptyLine(preview.data[j])) {\n\t\t\t\t\t\temptyLinesCount++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tvar fieldCount = preview.data[j].length;\n\t\t\t\t\tavgFieldCount += fieldCount;\n\n\t\t\t\t\tif (typeof fieldCountPrevRow === 'undefined') {\n\t\t\t\t\t\tfieldCountPrevRow = fieldCount;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\telse if (fieldCount > 0) {\n\t\t\t\t\t\tdelta += Math.abs(fieldCount - fieldCountPrevRow);\n\t\t\t\t\t\tfieldCountPrevRow = fieldCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (preview.data.length > 0)\n\t\t\t\t\tavgFieldCount /= (preview.data.length - emptyLinesCount);\n\n\t\t\t\tif ((typeof bestDelta === 'undefined' || delta <= bestDelta)\n\t\t\t\t\t&& (typeof maxFieldCount === 'undefined' || avgFieldCount > maxFieldCount) && avgFieldCount > 1.99) {\n\t\t\t\t\tbestDelta = delta;\n\t\t\t\t\tbestDelim = delim;\n\t\t\t\t\tmaxFieldCount = avgFieldCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_config.delimiter = bestDelim;\n\n\t\t\treturn {\n\t\t\t\tsuccessful: !!bestDelim,\n\t\t\t\tbestDelimiter: bestDelim\n\t\t\t};\n\t\t}\n\n\t\tfunction guessLineEndings(input, quoteChar)\n\t\t{\n\t\t\tinput = input.substring(0, 1024 * 1024);\t// max length 1 MB\n\t\t\t// Replace all the text inside quotes\n\t\t\tvar re = new RegExp(escapeRegExp(quoteChar) + '([^]*?)' + escapeRegExp(quoteChar), 'gm');\n\t\t\tinput = input.replace(re, '');\n\n\t\t\tvar r = input.split('\\r');\n\n\t\t\tvar n = input.split('\\n');\n\n\t\t\tvar nAppearsFirst = (n.length > 1 && n[0].length < r[0].length);\n\n\t\t\tif (r.length === 1 || nAppearsFirst)\n\t\t\t\treturn '\\n';\n\n\t\t\tvar numWithN = 0;\n\t\t\tfor (var i = 0; i < r.length; i++)\n\t\t\t{\n\t\t\t\tif (r[i][0] === '\\n')\n\t\t\t\t\tnumWithN++;\n\t\t\t}\n\n\t\t\treturn numWithN >= r.length / 2 ? '\\r\\n' : '\\r';\n\t\t}\n\n\t\tfunction addError(type, code, msg, row)\n\t\t{\n\t\t\tvar error = {\n\t\t\t\ttype: type,\n\t\t\t\tcode: code,\n\t\t\t\tmessage: msg\n\t\t\t};\n\t\t\tif(row !== undefined) {\n\t\t\t\terror.row = row;\n\t\t\t}\n\t\t\t_results.errors.push(error);\n\t\t}\n\t}\n\n\t/** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions */\n\tfunction escapeRegExp(string)\n\t{\n\t\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\t}\n\n\t/** The core parser implements speedy and correct CSV parsing */\n\tfunction Parser(config)\n\t{\n\t\t// Unpack the config object\n\t\tconfig = config || {};\n\t\tvar delim = config.delimiter;\n\t\tvar newline = config.newline;\n\t\tvar comments = config.comments;\n\t\tvar step = config.step;\n\t\tvar preview = config.preview;\n\t\tvar fastMode = config.fastMode;\n\t\tvar quoteChar;\n\t\tif (config.quoteChar === undefined || config.quoteChar === null) {\n\t\t\tquoteChar = '\"';\n\t\t} else {\n\t\t\tquoteChar = config.quoteChar;\n\t\t}\n\t\tvar escapeChar = quoteChar;\n\t\tif (config.escapeChar !== undefined) {\n\t\t\tescapeChar = config.escapeChar;\n\t\t}\n\n\t\t// Delimiter must be valid\n\t\tif (typeof delim !== 'string'\n\t\t\t|| Papa.BAD_DELIMITERS.indexOf(delim) > -1)\n\t\t\tdelim = ',';\n\n\t\t// Comment character must be valid\n\t\tif (comments === delim)\n\t\t\tthrow new Error('Comment character same as delimiter');\n\t\telse if (comments === true)\n\t\t\tcomments = '#';\n\t\telse if (typeof comments !== 'string'\n\t\t\t|| Papa.BAD_DELIMITERS.indexOf(comments) > -1)\n\t\t\tcomments = false;\n\n\t\t// Newline must be valid: \\r, \\n, or \\r\\n\n\t\tif (newline !== '\\n' && newline !== '\\r' && newline !== '\\r\\n')\n\t\t\tnewline = '\\n';\n\n\t\t// We're gonna need these at the Parser scope\n\t\tvar cursor = 0;\n\t\tvar aborted = false;\n\n\t\tthis.parse = function(input, baseIndex, ignoreLastRow)\n\t\t{\n\t\t\t// For some reason, in Chrome, this speeds things up (!?)\n\t\t\tif (typeof input !== 'string')\n\t\t\t\tthrow new Error('Input must be a string');\n\n\t\t\t// We don't need to compute some of these every time parse() is called,\n\t\t\t// but having them in a more local scope seems to perform better\n\t\t\tvar inputLen = input.length,\n\t\t\t\tdelimLen = delim.length,\n\t\t\t\tnewlineLen = newline.length,\n\t\t\t\tcommentsLen = comments.length;\n\t\t\tvar stepIsFunction = isFunction(step);\n\n\t\t\t// Establish starting state\n\t\t\tcursor = 0;\n\t\t\tvar data = [], errors = [], row = [], lastCursor = 0;\n\n\t\t\tif (!input)\n\t\t\t\treturn returnable();\n\n\t\t\t// Rename headers if there are duplicates\n\t\t\tif (config.header && !baseIndex)\n\t\t\t{\n\t\t\t\tvar firstLine = input.split(newline)[0];\n\t\t\t\tvar headers = firstLine.split(delim);\n\t\t\t\tvar separator = '_';\n\t\t\t\tvar headerMap = [];\n\t\t\t\tvar headerCount = {};\n\t\t\t\tvar duplicateHeaders = false;\n\n\t\t\t\tfor (var j in headers) {\n\t\t\t\t\tvar header = headers[j];\n\t\t\t\t\tif (isFunction(config.transformHeader))\n\t\t\t\t\t\theader = config.transformHeader(header, j);\n\t\t\t\t\tvar headerName = header;\n\n\t\t\t\t\tvar count = headerCount[header] || 0;\n\t\t\t\t\tif (count > 0) {\n\t\t\t\t\t\tduplicateHeaders = true;\n\t\t\t\t\t\theaderName = header + separator + count;\n\t\t\t\t\t}\n\t\t\t\t\theaderCount[header] = count + 1;\n\t\t\t\t\t// In case it already exists, we add more separtors\n\t\t\t\t\twhile (headerMap.includes(headerName)) {\n\t\t\t\t\t\theaderName = headerName + separator + count;\n\t\t\t\t\t}\n\t\t\t\t\theaderMap.push(headerName);\n\t\t\t\t}\n\t\t\t\tif (duplicateHeaders) {\n\t\t\t\t\tvar editedInput = input.split(newline);\n\t\t\t\t\teditedInput[0] = headerMap.join(delim);\n\t\t\t\t\tinput = editedInput.join(newline);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (fastMode || (fastMode !== false && input.indexOf(quoteChar) === -1))\n\t\t\t{\n\t\t\t\tvar rows = input.split(newline);\n\t\t\t\tfor (var i = 0; i < rows.length; i++)\n\t\t\t\t{\n\t\t\t\t\trow = rows[i];\n\t\t\t\t\tcursor += row.length;\n\t\t\t\t\tif (i !== rows.length - 1)\n\t\t\t\t\t\tcursor += newline.length;\n\t\t\t\t\telse if (ignoreLastRow)\n\t\t\t\t\t\treturn returnable();\n\t\t\t\t\tif (comments && row.substring(0, commentsLen) === comments)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\tpushRow(row.split(delim));\n\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tpushRow(row.split(delim));\n\t\t\t\t\tif (preview && i >= preview)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = data.slice(0, preview);\n\t\t\t\t\t\treturn returnable(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn returnable();\n\t\t\t}\n\n\t\t\tvar nextDelim = input.indexOf(delim, cursor);\n\t\t\tvar nextNewline = input.indexOf(newline, cursor);\n\t\t\tvar quoteCharRegex = new RegExp(escapeRegExp(escapeChar) + escapeRegExp(quoteChar), 'g');\n\t\t\tvar quoteSearch = input.indexOf(quoteChar, cursor);\n\n\t\t\t// Parser loop\n\t\t\tfor (;;)\n\t\t\t{\n\t\t\t\t// Field has opening quote\n\t\t\t\tif (input[cursor] === quoteChar)\n\t\t\t\t{\n\t\t\t\t\t// Start our search for the closing quote where the cursor is\n\t\t\t\t\tquoteSearch = cursor;\n\n\t\t\t\t\t// Skip the opening quote\n\t\t\t\t\tcursor++;\n\n\t\t\t\t\tfor (;;)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Find closing quote\n\t\t\t\t\t\tquoteSearch = input.indexOf(quoteChar, quoteSearch + 1);\n\n\t\t\t\t\t\t//No other quotes are found - no other delimiters\n\t\t\t\t\t\tif (quoteSearch === -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!ignoreLastRow) {\n\t\t\t\t\t\t\t\t// No closing quote... what a pity\n\t\t\t\t\t\t\t\terrors.push({\n\t\t\t\t\t\t\t\t\ttype: 'Quotes',\n\t\t\t\t\t\t\t\t\tcode: 'MissingQuotes',\n\t\t\t\t\t\t\t\t\tmessage: 'Quoted field unterminated',\n\t\t\t\t\t\t\t\t\trow: data.length,\t// row has yet to be inserted\n\t\t\t\t\t\t\t\t\tindex: cursor\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn finish();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Closing quote at EOF\n\t\t\t\t\t\tif (quoteSearch === inputLen - 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar value = input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar);\n\t\t\t\t\t\t\treturn finish(value);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If this quote is escaped, it's part of the data; skip it\n\t\t\t\t\t\t// If the quote character is the escape character, then check if the next character is the escape character\n\t\t\t\t\t\tif (quoteChar === escapeChar && input[quoteSearch + 1] === escapeChar)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tquoteSearch++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If the quote character is not the escape character, then check if the previous character was the escape character\n\t\t\t\t\t\tif (quoteChar !== escapeChar && quoteSearch !== 0 && input[quoteSearch - 1] === escapeChar)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(nextDelim !== -1 && nextDelim < (quoteSearch + 1)) {\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, (quoteSearch + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(nextNewline !== -1 && nextNewline < (quoteSearch + 1)) {\n\t\t\t\t\t\t\tnextNewline = input.indexOf(newline, (quoteSearch + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Check up to nextDelim or nextNewline, whichever is closest\n\t\t\t\t\t\tvar checkUpTo = nextNewline === -1 ? nextDelim : Math.min(nextDelim, nextNewline);\n\t\t\t\t\t\tvar spacesBetweenQuoteAndDelimiter = extraSpaces(checkUpTo);\n\n\t\t\t\t\t\t// Closing quote followed by delimiter or 'unnecessary spaces + delimiter'\n\t\t\t\t\t\tif (input.substr(quoteSearch + 1 + spacesBetweenQuoteAndDelimiter, delimLen) === delim)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n\t\t\t\t\t\t\tcursor = quoteSearch + 1 + spacesBetweenQuoteAndDelimiter + delimLen;\n\n\t\t\t\t\t\t\t// If char after following delimiter is not quoteChar, we find next quote char position\n\t\t\t\t\t\t\tif (input[quoteSearch + 1 + spacesBetweenQuoteAndDelimiter + delimLen] !== quoteChar)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tquoteSearch = input.indexOf(quoteChar, cursor);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar spacesBetweenQuoteAndNewLine = extraSpaces(nextNewline);\n\n\t\t\t\t\t\t// Closing quote followed by newline or 'unnecessary spaces + newLine'\n\t\t\t\t\t\tif (input.substring(quoteSearch + 1 + spacesBetweenQuoteAndNewLine, quoteSearch + 1 + spacesBetweenQuoteAndNewLine + newlineLen) === newline)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n\t\t\t\t\t\t\tsaveRow(quoteSearch + 1 + spacesBetweenQuoteAndNewLine + newlineLen);\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\t// because we may have skipped the nextDelim in the quoted field\n\t\t\t\t\t\t\tquoteSearch = input.indexOf(quoteChar, cursor);\t// we search for first quote in next line\n\n\t\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (preview && data.length >= preview)\n\t\t\t\t\t\t\t\treturn returnable(true);\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// Checks for valid closing quotes are complete (escaped quotes or quote followed by EOF/delimiter/newline) -- assume these quotes are part of an invalid text string\n\t\t\t\t\t\terrors.push({\n\t\t\t\t\t\t\ttype: 'Quotes',\n\t\t\t\t\t\t\tcode: 'InvalidQuotes',\n\t\t\t\t\t\t\tmessage: 'Trailing quote on quoted field is malformed',\n\t\t\t\t\t\t\trow: data.length,\t// row has yet to be inserted\n\t\t\t\t\t\t\tindex: cursor\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tquoteSearch++;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Comment found at start of new line\n\t\t\t\tif (comments && row.length === 0 && input.substring(cursor, cursor + commentsLen) === comments)\n\t\t\t\t{\n\t\t\t\t\tif (nextNewline === -1)\t// Comment ends at EOF\n\t\t\t\t\t\treturn returnable();\n\t\t\t\t\tcursor = nextNewline + newlineLen;\n\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Next delimiter comes before next newline, so we've reached end of field\n\t\t\t\tif (nextDelim !== -1 && (nextDelim < nextNewline || nextNewline === -1))\n\t\t\t\t{\n\t\t\t\t\trow.push(input.substring(cursor, nextDelim));\n\t\t\t\t\tcursor = nextDelim + delimLen;\n\t\t\t\t\t// we look for next delimiter char\n\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// End of row\n\t\t\t\tif (nextNewline !== -1)\n\t\t\t\t{\n\t\t\t\t\trow.push(input.substring(cursor, nextNewline));\n\t\t\t\t\tsaveRow(nextNewline + newlineLen);\n\n\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t{\n\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (preview && data.length >= preview)\n\t\t\t\t\t\treturn returnable(true);\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\n\t\t\treturn finish();\n\n\n\t\t\tfunction pushRow(row)\n\t\t\t{\n\t\t\t\tdata.push(row);\n\t\t\t\tlastCursor = cursor;\n\t\t\t}\n\n\t\t\t/**\n * checks if there are extra spaces after closing quote and given index without any text\n * if Yes, returns the number of spaces\n */\n\t\t\tfunction extraSpaces(index) {\n\t\t\t\tvar spaceLength = 0;\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tvar textBetweenClosingQuoteAndIndex = input.substring(quoteSearch + 1, index);\n\t\t\t\t\tif (textBetweenClosingQuoteAndIndex && textBetweenClosingQuoteAndIndex.trim() === '') {\n\t\t\t\t\t\tspaceLength = textBetweenClosingQuoteAndIndex.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn spaceLength;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Appends the remaining input from cursor to the end into\n\t\t\t * row, saves the row, calls step, and returns the results.\n\t\t\t */\n\t\t\tfunction finish(value)\n\t\t\t{\n\t\t\t\tif (ignoreLastRow)\n\t\t\t\t\treturn returnable();\n\t\t\t\tif (typeof value === 'undefined')\n\t\t\t\t\tvalue = input.substring(cursor);\n\t\t\t\trow.push(value);\n\t\t\t\tcursor = inputLen;\t// important in case parsing is paused\n\t\t\t\tpushRow(row);\n\t\t\t\tif (stepIsFunction)\n\t\t\t\t\tdoStep();\n\t\t\t\treturn returnable();\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Appends the current row to the results. It sets the cursor\n\t\t\t * to newCursor and finds the nextNewline. The caller should\n\t\t\t * take care to execute user's step function and check for\n\t\t\t * preview and end parsing if necessary.\n\t\t\t */\n\t\t\tfunction saveRow(newCursor)\n\t\t\t{\n\t\t\t\tcursor = newCursor;\n\t\t\t\tpushRow(row);\n\t\t\t\trow = [];\n\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t}\n\n\t\t\t/** Returns an object with the results, errors, and meta. */\n\t\t\tfunction returnable(stopped)\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tdata: data,\n\t\t\t\t\terrors: errors,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tdelimiter: delim,\n\t\t\t\t\t\tlinebreak: newline,\n\t\t\t\t\t\taborted: aborted,\n\t\t\t\t\t\ttruncated: !!stopped,\n\t\t\t\t\t\tcursor: lastCursor + (baseIndex || 0)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t/** Executes the user's step function and resets data & errors. */\n\t\t\tfunction doStep()\n\t\t\t{\n\t\t\t\tstep(returnable());\n\t\t\t\tdata = [];\n\t\t\t\terrors = [];\n\t\t\t}\n\t\t};\n\n\t\t/** Sets the abort flag */\n\t\tthis.abort = function()\n\t\t{\n\t\t\taborted = true;\n\t\t};\n\n\t\t/** Gets the cursor position */\n\t\tthis.getCharIndex = function()\n\t\t{\n\t\t\treturn cursor;\n\t\t};\n\t}\n\n\n\tfunction newWorker()\n\t{\n\t\tif (!Papa.WORKERS_SUPPORTED)\n\t\t\treturn false;\n\n\t\tvar workerUrl = getWorkerBlob();\n\t\tvar w = new global.Worker(workerUrl);\n\t\tw.onmessage = mainThreadReceivedMessage;\n\t\tw.id = workerIdCounter++;\n\t\tworkers[w.id] = w;\n\t\treturn w;\n\t}\n\n\t/** Callback when main thread receives a message */\n\tfunction mainThreadReceivedMessage(e)\n\t{\n\t\tvar msg = e.data;\n\t\tvar worker = workers[msg.workerId];\n\t\tvar aborted = false;\n\n\t\tif (msg.error)\n\t\t\tworker.userError(msg.error, msg.file);\n\t\telse if (msg.results && msg.results.data)\n\t\t{\n\t\t\tvar abort = function() {\n\t\t\t\taborted = true;\n\t\t\t\tcompleteWorker(msg.workerId, { data: [], errors: [], meta: { aborted: true } });\n\t\t\t};\n\n\t\t\tvar handle = {\n\t\t\t\tabort: abort,\n\t\t\t\tpause: notImplemented,\n\t\t\t\tresume: notImplemented\n\t\t\t};\n\n\t\t\tif (isFunction(worker.userStep))\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < msg.results.data.length; i++)\n\t\t\t\t{\n\t\t\t\t\tworker.userStep({\n\t\t\t\t\t\tdata: msg.results.data[i],\n\t\t\t\t\t\terrors: msg.results.errors,\n\t\t\t\t\t\tmeta: msg.results.meta\n\t\t\t\t\t}, handle);\n\t\t\t\t\tif (aborted)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdelete msg.results;\t// free memory ASAP\n\t\t\t}\n\t\t\telse if (isFunction(worker.userChunk))\n\t\t\t{\n\t\t\t\tworker.userChunk(msg.results, handle, msg.file);\n\t\t\t\tdelete msg.results;\n\t\t\t}\n\t\t}\n\n\t\tif (msg.finished && !aborted)\n\t\t\tcompleteWorker(msg.workerId, msg.results);\n\t}\n\n\tfunction completeWorker(workerId, results) {\n\t\tvar worker = workers[workerId];\n\t\tif (isFunction(worker.userComplete))\n\t\t\tworker.userComplete(results);\n\t\tworker.terminate();\n\t\tdelete workers[workerId];\n\t}\n\n\tfunction notImplemented() {\n\t\tthrow new Error('Not implemented.');\n\t}\n\n\t/** Callback when worker thread receives a message */\n\tfunction workerThreadReceivedMessage(e)\n\t{\n\t\tvar msg = e.data;\n\n\t\tif (typeof Papa.WORKER_ID === 'undefined' && msg)\n\t\t\tPapa.WORKER_ID = msg.workerId;\n\n\t\tif (typeof msg.input === 'string')\n\t\t{\n\t\t\tglobal.postMessage({\n\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\tresults: Papa.parse(msg.input, msg.config),\n\t\t\t\tfinished: true\n\t\t\t});\n\t\t}\n\t\telse if ((global.File && msg.input instanceof File) || msg.input instanceof Object)\t// thank you, Safari (see issue #106)\n\t\t{\n\t\t\tvar results = Papa.parse(msg.input, msg.config);\n\t\t\tif (results)\n\t\t\t\tglobal.postMessage({\n\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\tresults: results,\n\t\t\t\t\tfinished: true\n\t\t\t\t});\n\t\t}\n\t}\n\n\t/** Makes a deep copy of an array or object (mostly) */\n\tfunction copy(obj)\n\t{\n\t\tif (typeof obj !== 'object' || obj === null)\n\t\t\treturn obj;\n\t\tvar cpy = Array.isArray(obj) ? [] : {};\n\t\tfor (var key in obj)\n\t\t\tcpy[key] = copy(obj[key]);\n\t\treturn cpy;\n\t}\n\n\tfunction bindFunction(f, self)\n\t{\n\t\treturn function() { f.apply(self, arguments); };\n\t}\n\n\tfunction isFunction(func)\n\t{\n\t\treturn typeof func === 'function';\n\t}\n\n\treturn Papa;\n}));\n","import { t } from \"i18next\";\nimport { Toastr } from \"neetoui\";\nimport Papa from \"papaparse\";\nimport { prop } from \"ramda\";\nimport { string } from \"yup\";\n\nconst isValidEmail = email => string().email().isValidSync(email);\n\nexport const createEmailOptions = (emails = []) =>\n emails.map(email => ({\n label: email,\n value: email,\n valid: isValidEmail(email),\n }));\n\nexport const parseCsvEmails = (file, onSuccess) => {\n Papa.parse(file, {\n header: true,\n skipEmptyLines: true,\n transformHeader: h => h.toLowerCase().replace(/\\W/g, \"\"),\n complete: results => {\n const isEmailFieldPresent = results.meta.fields?.includes(\"email\");\n if (isEmailFieldPresent) {\n const emails = results.data\n .filter(prop(\"email\"))\n .map(item => item.email.trim());\n onSuccess(createEmailOptions(emails));\n } else {\n Toastr.error(t(\"neetoMolecules.sendToFields.errors.invalidCsv\"));\n }\n },\n });\n};\n","import { useRef, useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { Upload } from \"neetoicons\";\nimport { Button, Toastr } from \"neetoui\";\nimport { MultiEmailInput } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport BulkUploadPane from \"./BulkUploadPane\";\nimport { CSV_FILE_SIZE_IN_KB, SIZES } from \"./constants\";\nimport { parseCsvEmails } from \"./utils\";\n\nconst SendToFields = ({\n emailInputProps,\n ccInputProps,\n bccInputProps,\n showUploadCsvButton = false,\n showCcBccButton = false,\n showCcField = false,\n showBccField = false,\n showSendToField = true,\n}) => {\n const [isBulkUploadPaneOpen, setIsBulkUploadPaneOpen] = useState(false);\n const sendToFieldRef = useRef();\n const {\n values: {\n showCopyEmails,\n [emailInputProps.name || \"sendTo\"]: existingSendToEmails,\n },\n setFieldValue,\n } = useFormikContext();\n const { t } = useTranslation();\n\n const handleCSVFile = file => {\n try {\n const onSuccess = values =>\n setFieldValue(emailInputProps.name || \"sendTo\", [\n ...existingSendToEmails,\n ...values,\n ]);\n\n parseCsvEmails(file, onSuccess);\n setIsBulkUploadPaneOpen(false);\n sendToFieldRef.current?.focus();\n } catch (error) {\n Toastr.error(error);\n }\n };\n\n const handelCcBccButtonClick = e => {\n e.stopPropagation();\n setFieldValue(\"showCopyEmails\", !showCopyEmails);\n };\n\n return (\n <div\n className=\"relative w-full flex-col gap-2\"\n data-testid=\"send-to-text-field\"\n >\n {showUploadCsvButton && (\n <Button\n className=\"absolute right-1 top-0\"\n data-testid=\"bulk-upload-button\"\n icon={Upload}\n label={t(\"neetoMolecules.shareViaLink.bulkUpload\")}\n size=\"small\"\n style=\"link\"\n onClick={() => setIsBulkUploadPaneOpen(true)}\n />\n )}\n {showSendToField && (\n <MultiEmailInput\n name=\"sendTo\"\n ref={sendToFieldRef}\n {...emailInputProps}\n suffix={\n showCcBccButton && (\n <Button\n data-cy=\"cc-bcc-button\"\n data-testid=\"cc-bcc-button\"\n label={t(\"neetoMolecules.emailForm.labels.ccBcc\")}\n size=\"small\"\n style=\"link\"\n onClick={handelCcBccButtonClick}\n />\n )\n }\n />\n )}\n {(showCopyEmails || showCcField || showBccField) && (\n <div className=\"mt-5 flex w-full flex-col gap-6\">\n {(showCopyEmails || showCcField) && (\n <MultiEmailInput name=\"sendToBcc\" {...ccInputProps} />\n )}\n {(showCopyEmails || showBccField) && (\n <MultiEmailInput name=\"sendToCc\" {...bccInputProps} />\n )}\n </div>\n )}\n <BulkUploadPane\n fileSize={CSV_FILE_SIZE_IN_KB}\n handleFileSubmit={handleCSVFile}\n isOpen={isBulkUploadPaneOpen}\n onClose={() => setIsBulkUploadPaneOpen(false)}\n />\n </div>\n );\n};\n\nconst inputPropTypes = PropTypes.shape({\n name: PropTypes.string,\n display: PropTypes.node,\n label: PropTypes.string,\n editButtonTooltip: PropTypes.string,\n editButtonDataCy: PropTypes.string,\n placeholder: PropTypes.string,\n dataCy: PropTypes.string,\n onChange: PropTypes.func,\n suffix: PropTypes.node,\n prefix: PropTypes.node,\n className: PropTypes.string,\n nakedInput: PropTypes.bool,\n size: PropTypes.oneOf(Object.values(SIZES)),\n type: PropTypes.string,\n maxLength: PropTypes.number,\n contentSize: PropTypes.number,\n unlimitedChars: PropTypes.bool,\n required: PropTypes.bool,\n});\n\nSendToFields.propTypes = {\n /**\n * Input props for sendTo input field.\n */\n emailInputProps: inputPropTypes,\n /**\n * Input props for CC input field.\n */\n ccInputProps: inputPropTypes,\n /**\n * Input props for BCC input field.\n */\n bccInputProps: inputPropTypes,\n /**\n * Flag to determine whether the 'FilePicker' button is displayed.\n */\n showUploadCsvButton: PropTypes.bool,\n /**\n * Flag to determine whether the 'Cc/Bcc' button is displayed.\n */\n showCcBccButton: PropTypes.bool,\n /**\n * To show or hide the CC field.\n */\n showCcField: PropTypes.bool,\n /**\n * To show or hide the BCC field.\n */\n showBccField: PropTypes.bool,\n /**\n * To show or hide the \"Send to\" field.\n */\n showSendToField: PropTypes.bool,\n};\n\nexport default SendToFields;\n"],"names":["CSV_FILE_SIZE_IN_KB","ONE_KILOBYTE_IN_BYTES","DOWNLOAD_SAMPLE_EMAIL_CSV_FILE","Requirements","withT","_ref","t","fileSize","_jsxs","Callout","className","style","children","_jsx","limit","Trans","components","strong","i18nKey","Button","href","icon","Download","iconPosition","label","memo","BulkUploadPane","_fileRejections$","isOpen","onClose","handleFileSubmit","_useDropzone","useDropzone","accept","maxFiles","maxSize","onDrop","files","getRootProps","getInputProps","isDragActive","fileRejections","errors","map","_ref2","message","code","Typography","_useTranslation","useTranslation","Pane","tabIndex","Header","weight","Body","_objectSpread","classNames","length","Upload","size","values","fileType","Footer","type","onClick","this","isValidEmail","email","string","isValidSync","createEmailOptions","emails","arguments","undefined","value","valid","parseCsvEmails","file","onSuccess","Papa","parse","header","skipEmptyLines","transformHeader","h","toLowerCase","replace","complete","results","_results$meta$fields","isEmailFieldPresent","meta","fields","includes","data","filter","prop","item","trim","Toastr","error","SendToFields","emailInputProps","ccInputProps","bccInputProps","_ref$showUploadCsvBut","showUploadCsvButton","_ref$showCcBccButton","showCcBccButton","_ref$showCcField","showCcField","_ref$showBccField","showBccField","_ref$showSendToField","showSendToField","_useState","useState","_useState2","_slicedToArray","isBulkUploadPaneOpen","setIsBulkUploadPaneOpen","sendToFieldRef","useRef","_useFormikContext","useFormikContext","_useFormikContext$val","showCopyEmails","existingSendToEmails","name","setFieldValue","handleCSVFile","_sendToFieldRef$curre","concat","_toConsumableArray","current","focus","handelCcBccButtonClick","e","stopPropagation","MultiEmailInput","ref","suffix"],"mappings":"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","x_google_ignoreList":[3]}