spree_admin 5.1.7 → 5.2.0.rc1

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 (601) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/spree/admin/application.scss +5 -2
  3. data/app/assets/stylesheets/spree/admin/components/_alerts.scss +26 -8
  4. data/app/assets/stylesheets/spree/admin/components/_badges.scss +4 -3
  5. data/app/assets/stylesheets/spree/admin/components/_bulk_panel.scss +11 -26
  6. data/app/assets/stylesheets/spree/admin/components/_buttons.scss +9 -18
  7. data/app/assets/stylesheets/spree/admin/components/_cards.scss +45 -24
  8. data/app/assets/stylesheets/spree/admin/components/_dialogs.scss +204 -0
  9. data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +39 -13
  10. data/app/assets/stylesheets/spree/admin/components/_filters.scss +28 -10
  11. data/app/assets/stylesheets/spree/admin/components/_main.scss +36 -17
  12. data/app/assets/stylesheets/spree/admin/components/_media_form.scss +11 -3
  13. data/app/assets/stylesheets/spree/admin/components/_modals.scss +1 -1
  14. data/app/assets/stylesheets/spree/admin/components/_navigation.scss +0 -1
  15. data/app/assets/stylesheets/spree/admin/components/_search_picker.scss +0 -8
  16. data/app/assets/stylesheets/spree/admin/components/_sortable_tree.scss +2 -1
  17. data/app/assets/stylesheets/spree/admin/components/_tables.scss +20 -26
  18. data/app/assets/stylesheets/spree/admin/components/_tooltips.scss +20 -0
  19. data/app/assets/stylesheets/spree/admin/components/_variants_form.scss +3 -3
  20. data/app/assets/stylesheets/spree/admin/components/_wizard.scss +27 -0
  21. data/app/assets/stylesheets/spree/admin/global/_variables.scss +61 -43
  22. data/app/assets/stylesheets/spree/admin/plugins/_trix_custom.scss +5 -0
  23. data/app/assets/stylesheets/spree/admin/plugins/tom-select.scss +1 -1
  24. data/app/assets/stylesheets/spree/admin/plugins/uppy_fixes.scss +52 -3
  25. data/app/assets/stylesheets/spree/admin/shared/_base.scss +18 -17
  26. data/app/assets/stylesheets/spree/admin/shared/_forms.scss +7 -4
  27. data/app/assets/stylesheets/spree/admin/views/_page_builder.scss +12 -12
  28. data/app/controllers/concerns/spree/admin/page_builder_concern.rb +4 -4
  29. data/app/controllers/concerns/spree/admin/settings_concern.rb +23 -0
  30. data/app/controllers/spree/admin/admin_users_controller.rb +21 -6
  31. data/app/controllers/spree/admin/assets_controller.rb +3 -5
  32. data/app/controllers/spree/admin/base_controller.rb +2 -1
  33. data/app/controllers/spree/admin/custom_domains_controller.rb +1 -1
  34. data/app/controllers/spree/admin/errors_controller.rb +17 -3
  35. data/app/controllers/spree/admin/exports_controller.rb +7 -1
  36. data/app/controllers/spree/admin/gift_cards_controller.rb +5 -11
  37. data/app/controllers/spree/admin/import_mappings_controller.rb +15 -0
  38. data/app/controllers/spree/admin/import_rows_controller.rb +7 -0
  39. data/app/controllers/spree/admin/imports_controller.rb +66 -0
  40. data/app/controllers/spree/admin/invitations_controller.rb +3 -4
  41. data/app/controllers/spree/admin/json_previews_controller.rb +24 -0
  42. data/app/controllers/spree/admin/metafield_definitions_controller.rb +27 -0
  43. data/app/controllers/spree/admin/metafields_controller.rb +39 -0
  44. data/app/controllers/spree/admin/newsletter_subscribers_controller.rb +8 -0
  45. data/app/controllers/spree/admin/oauth_applications_controller.rb +2 -2
  46. data/app/controllers/spree/admin/orders/user_controller.rb +16 -10
  47. data/app/controllers/spree/admin/orders_controller.rb +17 -3
  48. data/app/controllers/spree/admin/page_blocks_controller.rb +2 -1
  49. data/app/controllers/spree/admin/page_links_controller.rb +9 -1
  50. data/app/controllers/spree/admin/pages_controller.rb +1 -9
  51. data/app/controllers/spree/admin/payment_methods_controller.rb +1 -5
  52. data/app/controllers/spree/admin/policies_controller.rb +28 -0
  53. data/app/controllers/spree/admin/products_controller.rb +8 -5
  54. data/app/controllers/spree/admin/profile_controller.rb +2 -0
  55. data/app/controllers/spree/admin/refund_reasons_controller.rb +1 -1
  56. data/app/controllers/spree/admin/reimbursement_types_controller.rb +1 -1
  57. data/app/controllers/spree/admin/resource_controller.rb +60 -1
  58. data/app/controllers/spree/admin/return_authorization_reasons_controller.rb +1 -1
  59. data/app/controllers/spree/admin/return_authorizations_controller.rb +3 -0
  60. data/app/controllers/spree/admin/roles_controller.rb +1 -2
  61. data/app/controllers/spree/admin/shipping_categories_controller.rb +1 -1
  62. data/app/controllers/spree/admin/shipping_methods_controller.rb +2 -2
  63. data/app/controllers/spree/admin/stock_locations_controller.rb +2 -2
  64. data/app/controllers/spree/admin/store_credits_controller.rb +6 -0
  65. data/app/controllers/spree/admin/storefront_controller.rb +1 -1
  66. data/app/controllers/spree/admin/stores_controller.rb +8 -2
  67. data/app/controllers/spree/admin/tax_categories_controller.rb +1 -1
  68. data/app/controllers/spree/admin/tax_rates_controller.rb +2 -2
  69. data/app/controllers/spree/admin/translations_controller.rb +30 -50
  70. data/app/controllers/spree/admin/users_controller.rb +4 -0
  71. data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +2 -3
  72. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  73. data/app/helpers/spree/admin/assets_helper.rb +42 -0
  74. data/app/helpers/spree/admin/base_helper.rb +58 -11
  75. data/app/helpers/spree/admin/bulk_operations_helper.rb +14 -12
  76. data/app/helpers/spree/admin/dialog_helper.rb +21 -0
  77. data/app/helpers/spree/admin/drawer_helper.rb +21 -0
  78. data/app/helpers/spree/admin/dropdown_helper.rb +32 -0
  79. data/app/helpers/spree/admin/json_preview_helper.rb +75 -0
  80. data/app/helpers/spree/admin/metafields_helper.rb +29 -0
  81. data/app/helpers/spree/admin/navigation_helper.rb +55 -23
  82. data/app/helpers/spree/admin/orders_filters_helper.rb +26 -17
  83. data/app/helpers/spree/admin/orders_helper.rb +9 -1
  84. data/app/helpers/spree/admin/page_builder_helper.rb +3 -8
  85. data/app/helpers/spree/admin/payments_helper.rb +2 -0
  86. data/app/helpers/spree/admin/products_helper.rb +0 -12
  87. data/app/helpers/spree/admin/translations_helper.rb +11 -4
  88. data/app/helpers/spree/admin/turbo_helper.rb +17 -4
  89. data/app/javascript/spree/admin/application.js +23 -5
  90. data/app/javascript/spree/admin/controllers/active_storage_upload_controller.js +41 -7
  91. data/app/javascript/spree/admin/controllers/admin_controller.js +0 -9
  92. data/app/javascript/spree/admin/controllers/auto_scroll_controller.js +33 -0
  93. data/app/javascript/spree/admin/controllers/codemirror_controller.js +45 -0
  94. data/app/javascript/spree/admin/controllers/highlight_controller.js +17 -0
  95. data/app/javascript/spree/admin/controllers/import_form_controller.js +27 -0
  96. data/app/javascript/spree/admin/controllers/sortable_auto_submit_controller.js +10 -0
  97. data/app/javascript/spree/admin/controllers/stock_transfer_controller.js +6 -5
  98. data/app/javascript/spree/admin/controllers/tabs_controller.js +21 -0
  99. data/app/javascript/spree/admin/controllers/tooltip_controller.js +136 -0
  100. data/app/javascript/spree/admin/controllers/turbo_submit_button_controller.js +14 -0
  101. data/app/javascript/spree/admin/helpers/bootstrap.js +5 -3
  102. data/app/models/spree/admin/form_builder.rb +250 -0
  103. data/app/views/layouts/spree/admin.html.erb +6 -2
  104. data/app/views/layouts/spree/admin_settings.html.erb +36 -0
  105. data/app/views/layouts/spree/admin_wizard.html.erb +34 -0
  106. data/app/views/layouts/spree/minimal.html.erb +2 -1
  107. data/app/views/layouts/spree/page_builder.html.erb +3 -2
  108. data/app/views/spree/admin/admin_users/_admin_user.html.erb +2 -2
  109. data/app/views/spree/admin/admin_users/_form.html.erb +3 -12
  110. data/app/views/spree/admin/admin_users/edit.html.erb +4 -7
  111. data/app/views/spree/admin/admin_users/index.html.erb +3 -3
  112. data/app/views/spree/admin/admin_users/show.html.erb +4 -4
  113. data/app/views/spree/admin/assets/create.turbo_stream.erb +1 -1
  114. data/app/views/spree/admin/assets/destroy.turbo_stream.erb +1 -1
  115. data/app/views/spree/admin/assets/edit.html.erb +16 -21
  116. data/app/views/spree/admin/assets/update.turbo_stream.erb +2 -2
  117. data/app/views/spree/admin/classifications/_classification.html.erb +5 -4
  118. data/app/views/spree/admin/classifications/create.turbo_stream.erb +1 -1
  119. data/app/views/spree/admin/classifications/index.html.erb +2 -2
  120. data/app/views/spree/admin/coupon_codes/_filters.html.erb +41 -0
  121. data/app/views/spree/admin/coupon_codes/_table_header.html.erb +0 -0
  122. data/app/views/spree/admin/coupon_codes/_table_row.html.erb +8 -0
  123. data/app/views/spree/admin/coupon_codes/index.html.erb +1 -58
  124. data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +4 -4
  125. data/app/views/spree/admin/custom_domains/edit.html.erb +1 -14
  126. data/app/views/spree/admin/custom_domains/new.html.erb +1 -14
  127. data/app/views/spree/admin/customer_returns/_filters.html.erb +11 -0
  128. data/app/views/spree/admin/customer_returns/_table_header.html.erb +8 -0
  129. data/app/views/spree/admin/customer_returns/{_customer_return.html.erb → _table_row.html.erb} +1 -1
  130. data/app/views/spree/admin/customer_returns/index.html.erb +1 -36
  131. data/app/views/spree/admin/dashboard/_setup_progress.html.erb +1 -1
  132. data/app/views/spree/admin/dashboard/_setup_tasks.html.erb +8 -10
  133. data/app/views/spree/admin/dashboard/_store_preview.html.erb +5 -5
  134. data/app/views/spree/admin/dashboard/_top_products.html.erb +3 -3
  135. data/app/views/spree/admin/dashboard/_updater.html.erb +1 -1
  136. data/app/views/spree/admin/dashboard/analytics.html.erb +37 -39
  137. data/app/views/spree/admin/dashboard/getting_started.html.erb +1 -1
  138. data/app/views/spree/admin/dashboard/setup_tasks/_add_products.html.erb +2 -2
  139. data/app/views/spree/admin/dashboard/show.html.erb +1 -1
  140. data/app/views/spree/admin/digital_assets/_digital_asset.html.erb +9 -10
  141. data/app/views/spree/admin/digital_assets/_form.html.erb +3 -8
  142. data/app/views/spree/admin/digital_assets/_table.html.erb +12 -13
  143. data/app/views/spree/admin/digital_assets/create.turbo_stream.erb +1 -1
  144. data/app/views/spree/admin/digital_assets/edit.html.erb +8 -10
  145. data/app/views/spree/admin/digital_assets/index.html.erb +8 -9
  146. data/app/views/spree/admin/digital_assets/new.html.erb +8 -10
  147. data/app/views/spree/admin/digital_assets/update.turbo_stream.erb +1 -1
  148. data/app/views/spree/admin/errors/403.html.erb +14 -0
  149. data/app/views/spree/admin/errors/404.html.erb +14 -0
  150. data/app/views/spree/admin/errors/422.html.erb +14 -0
  151. data/app/views/spree/admin/errors/500.html.erb +14 -0
  152. data/app/views/spree/admin/errors/503.html.erb +14 -0
  153. data/app/views/spree/admin/exports/_export.html.erb +1 -1
  154. data/app/views/spree/admin/exports/create.turbo_stream.erb +4 -1
  155. data/app/views/spree/admin/exports/index.html.erb +5 -5
  156. data/app/views/spree/admin/exports/new.html.erb +33 -28
  157. data/app/views/spree/admin/gift_card_batches/_form.html.erb +5 -20
  158. data/app/views/spree/admin/gift_card_batches/new.html.erb +1 -15
  159. data/app/views/spree/admin/gift_cards/_filters.html.erb +3 -4
  160. data/app/views/spree/admin/gift_cards/_form.html.erb +16 -26
  161. data/app/views/spree/admin/gift_cards/_gift_card.html.erb +1 -1
  162. data/app/views/spree/admin/gift_cards/_list.html.erb +7 -7
  163. data/app/views/spree/admin/gift_cards/_table_filter_dropdown.html.erb +13 -13
  164. data/app/views/spree/admin/gift_cards/index.html.erb +14 -11
  165. data/app/views/spree/admin/gift_cards/new.html.erb +1 -30
  166. data/app/views/spree/admin/gift_cards/show.html.erb +6 -6
  167. data/app/views/spree/admin/import_mappings/update.turbo_stream.erb +15 -0
  168. data/app/views/spree/admin/import_rows/_variant.html.erb +1 -0
  169. data/app/views/spree/admin/import_rows/show.html.erb +32 -0
  170. data/app/views/spree/admin/imports/_footer.html.erb +15 -0
  171. data/app/views/spree/admin/imports/_loader.html.erb +14 -0
  172. data/app/views/spree/admin/imports/_mapping.html.erb +12 -0
  173. data/app/views/spree/admin/imports/_mapping_footer.html.erb +20 -0
  174. data/app/views/spree/admin/imports/_mapping_form.html.erb +11 -0
  175. data/app/views/spree/admin/imports/_mapping_icon.html.erb +6 -0
  176. data/app/views/spree/admin/imports/_row.html.erb +35 -0
  177. data/app/views/spree/admin/imports/new.html.erb +26 -0
  178. data/app/views/spree/admin/imports/show.html.erb +57 -0
  179. data/app/views/spree/admin/invitations/_invitation.html.erb +13 -13
  180. data/app/views/spree/admin/invitations/create.turbo_stream.erb +1 -1
  181. data/app/views/spree/admin/invitations/index.html.erb +15 -17
  182. data/app/views/spree/admin/invitations/new.html.erb +15 -26
  183. data/app/views/spree/admin/json_previews/show.html.erb +37 -0
  184. data/app/views/spree/admin/line_items/new.html.erb +6 -6
  185. data/app/views/spree/admin/metafield_definitions/_filters.html.erb +18 -0
  186. data/app/views/spree/admin/metafield_definitions/_form.html.erb +44 -0
  187. data/app/views/spree/admin/metafield_definitions/_table_header.html.erb +11 -0
  188. data/app/views/spree/admin/metafield_definitions/_table_row.html.erb +22 -0
  189. data/app/views/spree/admin/metafield_definitions/edit.html.erb +1 -0
  190. data/app/views/spree/admin/metafield_definitions/index.html.erb +9 -0
  191. data/app/views/spree/admin/metafield_definitions/new.html.erb +1 -0
  192. data/app/views/spree/admin/metafield_definitions/update.turbo_stream.erb +1 -0
  193. data/app/views/spree/admin/metafields/edit.html.erb +43 -0
  194. data/app/views/spree/admin/metafields/types/_boolean.html.erb +4 -0
  195. data/app/views/spree/admin/metafields/types/_json.html.erb +4 -0
  196. data/app/views/spree/admin/metafields/types/_long_text.html.erb +1 -0
  197. data/app/views/spree/admin/metafields/types/_number.html.erb +1 -0
  198. data/app/views/spree/admin/metafields/types/_rich_text.html.erb +3 -0
  199. data/app/views/spree/admin/metafields/types/_short_text.html.erb +1 -0
  200. data/app/views/spree/admin/metafields/update.turbo_stream.erb +1 -0
  201. data/app/views/spree/admin/newsletter_subscribers/_filters.html.erb +41 -0
  202. data/app/views/spree/admin/newsletter_subscribers/_table_header.html.erb +8 -0
  203. data/app/views/spree/admin/newsletter_subscribers/_table_row.html.erb +36 -0
  204. data/app/views/spree/admin/newsletter_subscribers/index.html.erb +9 -0
  205. data/app/views/spree/admin/oauth_applications/_form.html.erb +5 -10
  206. data/app/views/spree/admin/oauth_applications/_table_header.html.erb +7 -0
  207. data/app/views/spree/admin/oauth_applications/_table_row.html.erb +34 -0
  208. data/app/views/spree/admin/oauth_applications/create.turbo_stream.erb +20 -30
  209. data/app/views/spree/admin/oauth_applications/edit.html.erb +1 -18
  210. data/app/views/spree/admin/oauth_applications/index.html.erb +4 -60
  211. data/app/views/spree/admin/oauth_applications/new.html.erb +1 -24
  212. data/app/views/spree/admin/option_types/{_filter.html.erb → _filters.html.erb} +1 -1
  213. data/app/views/spree/admin/option_types/_form.html.erb +8 -30
  214. data/app/views/spree/admin/option_types/_table_header.html.erb +19 -0
  215. data/app/views/spree/admin/option_types/{_option_type.html.erb → _table_row.html.erb} +1 -1
  216. data/app/views/spree/admin/option_types/edit.html.erb +0 -3
  217. data/app/views/spree/admin/option_types/index.html.erb +3 -42
  218. data/app/views/spree/admin/orders/_customer.html.erb +17 -21
  219. data/app/views/spree/admin/orders/_customer_returns.html.erb +4 -4
  220. data/app/views/spree/admin/orders/_filters.html.erb +49 -48
  221. data/app/views/spree/admin/orders/_form.html.erb +12 -0
  222. data/app/views/spree/admin/orders/_header.html.erb +2 -7
  223. data/app/views/spree/admin/orders/_line_item.html.erb +6 -11
  224. data/app/views/spree/admin/orders/_line_items.html.erb +39 -47
  225. data/app/views/spree/admin/orders/_list.html.erb +7 -7
  226. data/app/views/spree/admin/orders/_order.html.erb +1 -1
  227. data/app/views/spree/admin/orders/_payments.html.erb +2 -2
  228. data/app/views/spree/admin/orders/_refunds.html.erb +7 -9
  229. data/app/views/spree/admin/orders/_return_authorizations.html.erb +5 -5
  230. data/app/views/spree/admin/orders/_risk_analysis.html.erb +1 -1
  231. data/app/views/spree/admin/orders/_shipment.html.erb +7 -6
  232. data/app/views/spree/admin/orders/_shipment_manifest_item.html.erb +1 -1
  233. data/app/views/spree/admin/orders/_shipments.html.erb +1 -1
  234. data/app/views/spree/admin/orders/_summary.html.erb +14 -7
  235. data/app/views/spree/admin/orders/_table_filter_dropdown.html.erb +6 -6
  236. data/app/views/spree/admin/orders/_tax_lines.html.erb +1 -1
  237. data/app/views/spree/admin/orders/billing_address/_form.html.erb +4 -2
  238. data/app/views/spree/admin/orders/billing_address/create.turbo_stream.erb +22 -24
  239. data/app/views/spree/admin/orders/billing_address/edit.html.erb +29 -31
  240. data/app/views/spree/admin/orders/billing_address/new.html.erb +22 -24
  241. data/app/views/spree/admin/orders/billing_address/update.turbo_stream.erb +22 -24
  242. data/app/views/spree/admin/orders/contact_information/edit.html.erb +10 -12
  243. data/app/views/spree/admin/orders/customer_returns/_customer_return.html.erb +7 -12
  244. data/app/views/spree/admin/orders/customer_returns/_reimbursements_table.html.erb +5 -5
  245. data/app/views/spree/admin/orders/customer_returns/_return_item_decision.html.erb +6 -6
  246. data/app/views/spree/admin/orders/customer_returns/_return_item_selection.html.erb +6 -6
  247. data/app/views/spree/admin/orders/customer_returns/new.html.erb +2 -6
  248. data/app/views/spree/admin/orders/index.html.erb +7 -3
  249. data/app/views/spree/admin/orders/new.html.erb +22 -0
  250. data/app/views/spree/admin/orders/return_authorizations/_form.html.erb +14 -28
  251. data/app/views/spree/admin/orders/return_authorizations/_return_authorization.html.erb +1 -1
  252. data/app/views/spree/admin/orders/return_authorizations/show.html.erb +14 -14
  253. data/app/views/spree/admin/orders/shipping_address/_form.html.erb +4 -2
  254. data/app/views/spree/admin/orders/shipping_address/create.turbo_stream.erb +8 -10
  255. data/app/views/spree/admin/orders/shipping_address/edit.html.erb +8 -10
  256. data/app/views/spree/admin/orders/shipping_address/new.html.erb +8 -10
  257. data/app/views/spree/admin/orders/shipping_address/update.turbo_stream.erb +8 -10
  258. data/app/views/spree/admin/orders/user/edit.html.erb +1 -1
  259. data/app/views/spree/admin/orders/user/new.html.erb +1 -1
  260. data/app/views/spree/admin/page_blocks/edit.html.erb +6 -9
  261. data/app/views/spree/admin/page_blocks/forms/_image.html.erb +4 -1
  262. data/app/views/spree/admin/page_blocks/forms/_metafields.html.erb +35 -0
  263. data/app/views/spree/admin/page_blocks/forms/products/_description.html.erb +0 -0
  264. data/app/views/spree/admin/page_builder/_add_block.html.erb +8 -6
  265. data/app/views/spree/admin/page_builder/_header.html.erb +29 -22
  266. data/app/views/spree/admin/page_builder/_pages_dropdown.html.erb +6 -6
  267. data/app/views/spree/admin/page_builder/_sidebar.html.erb +5 -5
  268. data/app/views/spree/admin/page_builder/_sidebar_colors.html.erb +71 -69
  269. data/app/views/spree/admin/page_builder/_sidebar_fonts.html.erb +62 -61
  270. data/app/views/spree/admin/page_builder/_sidebar_section.html.erb +4 -6
  271. data/app/views/spree/admin/page_builder/_sidebar_sections.html.erb +12 -2
  272. data/app/views/spree/admin/page_builder/_sidebar_sections_toolbar.html.erb +59 -57
  273. data/app/views/spree/admin/page_links/_form.html.erb +3 -3
  274. data/app/views/spree/admin/page_links/_linkable_type_dropdown.html.erb +3 -3
  275. data/app/views/spree/admin/page_links/create.turbo_stream.erb +10 -4
  276. data/app/views/spree/admin/page_links/destroy.turbo_stream.erb +13 -9
  277. data/app/views/spree/admin/page_links/edit.html.erb +26 -13
  278. data/app/views/spree/admin/page_links/update.turbo_stream.erb +11 -5
  279. data/app/views/spree/admin/page_sections/edit.html.erb +5 -8
  280. data/app/views/spree/admin/page_sections/forms/_breadcrumbs.html.erb +0 -0
  281. data/app/views/spree/admin/page_sections/forms/_image_with_text.html.erb +2 -5
  282. data/app/views/spree/admin/pages/_form.html.erb +1 -4
  283. data/app/views/spree/admin/pages/_table_header.html.erb +6 -0
  284. data/app/views/spree/admin/pages/_table_row.html.erb +28 -0
  285. data/app/views/spree/admin/pages/edit.html.erb +9 -11
  286. data/app/views/spree/admin/pages/{_filters.html.erb → filters.html.erb} +1 -1
  287. data/app/views/spree/admin/pages/index.html.erb +1 -24
  288. data/app/views/spree/admin/pages/new.html.erb +1 -17
  289. data/app/views/spree/admin/payment_methods/_available_payment_method.html.erb +1 -1
  290. data/app/views/spree/admin/payment_methods/_form.html.erb +4 -24
  291. data/app/views/spree/admin/payment_methods/_payment_method.html.erb +5 -2
  292. data/app/views/spree/admin/payment_methods/index.html.erb +17 -19
  293. data/app/views/spree/admin/payments/_payment.html.erb +16 -16
  294. data/app/views/spree/admin/payments/source_views/_gateway.html.erb +3 -3
  295. data/app/views/spree/admin/payments/source_views/_storecredit.html.erb +7 -7
  296. data/app/views/spree/admin/policies/_filters.html.erb +8 -0
  297. data/app/views/spree/admin/policies/_form.html.erb +7 -0
  298. data/app/views/spree/admin/policies/_table_header.html.erb +8 -0
  299. data/app/views/spree/admin/policies/_table_row.html.erb +20 -0
  300. data/app/views/spree/admin/policies/edit.html.erb +2 -0
  301. data/app/views/spree/admin/policies/index.html.erb +9 -0
  302. data/app/views/spree/admin/policies/new.html.erb +1 -0
  303. data/app/views/spree/admin/policies/update.turbo_stream.erb +1 -0
  304. data/app/views/spree/admin/post_categories/_form.html.erb +2 -11
  305. data/app/views/spree/admin/post_categories/_table_header.html.erb +5 -0
  306. data/app/views/spree/admin/post_categories/{_post_category.html.erb → _table_row.html.erb} +3 -3
  307. data/app/views/spree/admin/post_categories/edit.html.erb +1 -14
  308. data/app/views/spree/admin/post_categories/index.html.erb +1 -20
  309. data/app/views/spree/admin/post_categories/new.html.erb +1 -14
  310. data/app/views/spree/admin/posts/_form.html.erb +21 -43
  311. data/app/views/spree/admin/posts/_table_header.html.erb +7 -0
  312. data/app/views/spree/admin/posts/{_post.html.erb → _table_row.html.erb} +2 -2
  313. data/app/views/spree/admin/posts/filters.html.erb +29 -0
  314. data/app/views/spree/admin/posts/index.html.erb +1 -24
  315. data/app/views/spree/admin/products/_bulk_operations.html.erb +6 -16
  316. data/app/views/spree/admin/products/_filters.html.erb +31 -38
  317. data/app/views/spree/admin/products/_form.html.erb +3 -2
  318. data/app/views/spree/admin/products/_list.html.erb +1 -1
  319. data/app/views/spree/admin/products/_product.html.erb +1 -1
  320. data/app/views/spree/admin/products/_table_filter_dropdown.html.erb +6 -6
  321. data/app/views/spree/admin/products/bulk_modal.html.erb +13 -15
  322. data/app/views/spree/admin/products/edit.html.erb +0 -1
  323. data/app/views/spree/admin/products/form/_base.html.erb +1 -5
  324. data/app/views/spree/admin/products/form/_properties.html.erb +2 -2
  325. data/app/views/spree/admin/products/form/_shipping.html.erb +1 -5
  326. data/app/views/spree/admin/products/form/_tax.html.erb +1 -5
  327. data/app/views/spree/admin/products/form/_variants.html.erb +1 -1
  328. data/app/views/spree/admin/products/index.html.erb +7 -2
  329. data/app/views/spree/admin/promotion_actions/_promotion_action.html.erb +7 -7
  330. data/app/views/spree/admin/promotion_actions/forms/_create_line_items.html.erb +4 -4
  331. data/app/views/spree/admin/promotion_actions/new.html.erb +29 -35
  332. data/app/views/spree/admin/promotion_rules/_promotion_rule.html.erb +8 -8
  333. data/app/views/spree/admin/promotion_rules/forms/_currency.html.erb +1 -4
  334. data/app/views/spree/admin/promotion_rules/forms/_item_total.html.erb +1 -1
  335. data/app/views/spree/admin/promotion_rules/new.html.erb +30 -36
  336. data/app/views/spree/admin/promotions/_actions.html.erb +4 -8
  337. data/app/views/spree/admin/promotions/_filters.html.erb +5 -9
  338. data/app/views/spree/admin/promotions/_form.html.erb +36 -0
  339. data/app/views/spree/admin/promotions/_rules.html.erb +4 -8
  340. data/app/views/spree/admin/promotions/_sidebar.html.erb +4 -4
  341. data/app/views/spree/admin/promotions/_table_filter_dropdown.html.erb +7 -7
  342. data/app/views/spree/admin/promotions/_table_header.html.erb +7 -0
  343. data/app/views/spree/admin/promotions/{_promotion.html.erb → _table_row.html.erb} +2 -5
  344. data/app/views/spree/admin/promotions/edit.html.erb +1 -1
  345. data/app/views/spree/admin/promotions/form/_kind.html.erb +52 -48
  346. data/app/views/spree/admin/promotions/form/_settings.html.erb +2 -8
  347. data/app/views/spree/admin/promotions/index.html.erb +1 -26
  348. data/app/views/spree/admin/promotions/new.html.erb +1 -57
  349. data/app/views/spree/admin/properties/_filters.html.erb +5 -0
  350. data/app/views/spree/admin/properties/_form.html.erb +8 -22
  351. data/app/views/spree/admin/properties/_table_header.html.erb +9 -0
  352. data/app/views/spree/admin/properties/{_property.html.erb → _table_row.html.erb} +2 -2
  353. data/app/views/spree/admin/properties/edit.html.erb +1 -21
  354. data/app/views/spree/admin/properties/index.html.erb +3 -38
  355. data/app/views/spree/admin/properties/new.html.erb +1 -18
  356. data/app/views/spree/admin/refund_reasons/_form.html.erb +1 -0
  357. data/app/views/spree/admin/refund_reasons/_table_header.html.erb +6 -0
  358. data/app/views/spree/admin/refund_reasons/_table_row.html.erb +14 -0
  359. data/app/views/spree/admin/refund_reasons/edit.html.erb +1 -3
  360. data/app/views/spree/admin/refund_reasons/index.html.erb +1 -36
  361. data/app/views/spree/admin/refund_reasons/new.html.erb +1 -4
  362. data/app/views/spree/admin/refunds/_form.html.erb +1 -5
  363. data/app/views/spree/admin/refunds/edit.html.erb +9 -11
  364. data/app/views/spree/admin/reimbursement_types/_form.html.erb +10 -31
  365. data/app/views/spree/admin/reimbursement_types/_table_header.html.erb +7 -0
  366. data/app/views/spree/admin/reimbursement_types/_table_row.html.erb +17 -0
  367. data/app/views/spree/admin/reimbursement_types/edit.html.erb +1 -14
  368. data/app/views/spree/admin/reimbursement_types/index.html.erb +1 -40
  369. data/app/views/spree/admin/reimbursement_types/new.html.erb +1 -14
  370. data/app/views/spree/admin/reimbursements/edit.html.erb +9 -9
  371. data/app/views/spree/admin/reimbursements/show.html.erb +12 -12
  372. data/app/views/spree/admin/reports/_report.html.erb +1 -1
  373. data/app/views/spree/admin/reports/index.html.erb +2 -2
  374. data/app/views/spree/admin/reports/new.html.erb +2 -1
  375. data/app/views/spree/admin/return_authorization_reasons/_form.html.erb +1 -0
  376. data/app/views/spree/admin/return_authorization_reasons/_table_header.html.erb +5 -0
  377. data/app/views/spree/admin/return_authorization_reasons/_table_row.html.erb +18 -0
  378. data/app/views/spree/admin/return_authorization_reasons/edit.html.erb +1 -3
  379. data/app/views/spree/admin/return_authorization_reasons/index.html.erb +1 -39
  380. data/app/views/spree/admin/return_authorization_reasons/new.html.erb +1 -4
  381. data/app/views/spree/admin/return_authorizations/_list.html.erb +3 -3
  382. data/app/views/spree/admin/return_authorizations/_table_header.html.erb +6 -0
  383. data/app/views/spree/admin/return_authorizations/{_return_authorization.html.erb → _table_row.html.erb} +1 -1
  384. data/app/views/spree/admin/return_authorizations/{_filters.html.erb → filters.html.erb} +7 -12
  385. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -10
  386. data/app/views/spree/admin/roles/_form.html.erb +4 -5
  387. data/app/views/spree/admin/roles/edit.html.erb +1 -15
  388. data/app/views/spree/admin/roles/index.html.erb +4 -4
  389. data/app/views/spree/admin/roles/new.html.erb +1 -18
  390. data/app/views/spree/admin/shared/_alerts.html.erb +3 -1
  391. data/app/views/spree/admin/shared/_back_to_dashboard.html.erb +1 -0
  392. data/app/views/spree/admin/shared/_breadcrumbs.html.erb +1 -1
  393. data/app/views/spree/admin/shared/_bulk_modal.html.erb +13 -19
  394. data/app/views/spree/admin/shared/_calendar_range_picker.html.erb +6 -7
  395. data/app/views/spree/admin/shared/_close_bulk_modal.turbo_stream.erb +4 -1
  396. data/app/views/spree/admin/shared/_content_header.html.erb +20 -38
  397. data/app/views/spree/admin/shared/_dialog.html.erb +4 -0
  398. data/app/views/spree/admin/shared/_drawer.html.erb +4 -0
  399. data/app/views/spree/admin/shared/_edit_resource.html.erb +17 -0
  400. data/app/views/spree/admin/shared/_export_modal.html.erb +3 -0
  401. data/app/views/spree/admin/shared/_filters_button.html.erb +2 -2
  402. data/app/views/spree/admin/shared/_head.html.erb +7 -3
  403. data/app/views/spree/admin/shared/_header.html.erb +2 -5
  404. data/app/views/spree/admin/shared/_index_table.html.erb +34 -0
  405. data/app/views/spree/admin/shared/_index_table_options.html.erb +5 -7
  406. data/app/views/spree/admin/{variants/form → shared}/_media_asset.html.erb +3 -5
  407. data/app/views/spree/admin/{variants/form/_media.html.erb → shared/_media_form.html.erb} +2 -2
  408. data/app/views/spree/admin/shared/_multi_product_picker.html.erb +7 -7
  409. data/app/views/spree/admin/shared/_new_item_dropdown.html.erb +8 -10
  410. data/app/views/spree/admin/shared/_new_resource.html.erb +18 -0
  411. data/app/views/spree/admin/shared/_no_resource_found.html.erb +1 -1
  412. data/app/views/spree/admin/shared/_page_alerts.html.erb +5 -0
  413. data/app/views/spree/admin/shared/_page_section_image.html.erb +6 -0
  414. data/app/views/spree/admin/shared/_page_tabs.html.erb +9 -0
  415. data/app/views/spree/admin/shared/_refunds.html.erb +6 -8
  416. data/app/views/spree/admin/shared/_seo.html.erb +3 -8
  417. data/app/views/spree/admin/shared/_team_nav.html.erb +1 -3
  418. data/app/views/spree/admin/shared/_user.html.erb +2 -1
  419. data/app/views/spree/admin/shared/_user_dropdown.html.erb +7 -9
  420. data/app/views/spree/admin/shared/named_types/_edit.html.erb +1 -14
  421. data/app/views/spree/admin/shared/named_types/_form.html.erb +2 -11
  422. data/app/views/spree/admin/shared/named_types/_new.html.erb +1 -14
  423. data/app/views/spree/admin/shared/sidebar/_customers_nav.html.erb +8 -0
  424. data/app/views/spree/admin/shared/sidebar/_enterprise_edition_notice.html.erb +1 -1
  425. data/app/views/spree/admin/shared/sidebar/_products_nav.html.erb +1 -1
  426. data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +8 -9
  427. data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +16 -14
  428. data/app/views/spree/admin/shared/sidebar/_vendors_nav.html.erb +5 -2
  429. data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +7 -7
  430. data/app/views/spree/admin/shipping_categories/_form.html.erb +1 -5
  431. data/app/views/spree/admin/shipping_categories/_table_header.html.erb +4 -0
  432. data/app/views/spree/admin/shipping_categories/_table_row.html.erb +8 -0
  433. data/app/views/spree/admin/shipping_categories/edit.html.erb +1 -14
  434. data/app/views/spree/admin/shipping_categories/index.html.erb +3 -30
  435. data/app/views/spree/admin/shipping_categories/new.html.erb +1 -14
  436. data/app/views/spree/admin/shipping_methods/_table_header.html.erb +8 -0
  437. data/app/views/spree/admin/shipping_methods/{_shipping_method.html.erb → _table_row.html.erb} +1 -1
  438. data/app/views/spree/admin/shipping_methods/form/_display.html.erb +2 -2
  439. data/app/views/spree/admin/shipping_methods/form/_tax_category.html.erb +1 -4
  440. data/app/views/spree/admin/shipping_methods/form/_tracking_url.html.erb +1 -1
  441. data/app/views/spree/admin/shipping_methods/index.html.erb +3 -26
  442. data/app/views/spree/admin/stock_items/_filters.html.erb +12 -21
  443. data/app/views/spree/admin/stock_items/_table_header.html.erb +9 -0
  444. data/app/views/spree/admin/stock_items/{_stock_item.html.erb → _table_row.html.erb} +1 -1
  445. data/app/views/spree/admin/stock_items/index.html.erb +1 -27
  446. data/app/views/spree/admin/stock_locations/_form.html.erb +3 -15
  447. data/app/views/spree/admin/stock_locations/_table_header.html.erb +9 -0
  448. data/app/views/spree/admin/stock_locations/{_stock_location.html.erb → _table_row.html.erb} +7 -6
  449. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -14
  450. data/app/views/spree/admin/stock_locations/index.html.erb +3 -26
  451. data/app/views/spree/admin/stock_locations/new.html.erb +1 -14
  452. data/app/views/spree/admin/stock_transfers/_filters.html.erb +25 -33
  453. data/app/views/spree/admin/stock_transfers/_new_variant_modal.html.erb +22 -26
  454. data/app/views/spree/admin/stock_transfers/_table_header.html.erb +9 -0
  455. data/app/views/spree/admin/stock_transfers/{_stock_transfer.html.erb → _table_row.html.erb} +2 -2
  456. data/app/views/spree/admin/stock_transfers/index.html.erb +1 -26
  457. data/app/views/spree/admin/stock_transfers/new.html.erb +5 -6
  458. data/app/views/spree/admin/stock_transfers/show.html.erb +3 -3
  459. data/app/views/spree/admin/store_credit_categories/_form.html.erb +1 -5
  460. data/app/views/spree/admin/store_credit_categories/index.html.erb +3 -3
  461. data/app/views/spree/admin/store_credit_events/_store_credit_event.html.erb +1 -1
  462. data/app/views/spree/admin/store_credits/_form.html.erb +3 -16
  463. data/app/views/spree/admin/store_credits/_list.html.erb +7 -7
  464. data/app/views/spree/admin/store_credits/_store_credit.html.erb +2 -2
  465. data/app/views/spree/admin/store_credits/show.html.erb +6 -6
  466. data/app/views/spree/admin/storefront/edit.html.erb +10 -53
  467. data/app/views/spree/admin/stores/edit.html.erb +10 -6
  468. data/app/views/spree/admin/stores/form/_basic.html.erb +65 -158
  469. data/app/views/spree/admin/stores/form/_checkout.html.erb +35 -51
  470. data/app/views/spree/admin/stores/form/_checkout_links.html.erb +28 -0
  471. data/app/views/spree/admin/stores/form/_emails.html.erb +33 -64
  472. data/app/views/spree/admin/stores/form/_policies.html.erb +55 -71
  473. data/app/views/spree/admin/stores/new.html.erb +119 -129
  474. data/app/views/spree/admin/tax_categories/_form.html.erb +4 -17
  475. data/app/views/spree/admin/tax_categories/_table_header.html.erb +7 -0
  476. data/app/views/spree/admin/tax_categories/{_tax_category.html.erb → _table_row.html.erb} +1 -1
  477. data/app/views/spree/admin/tax_categories/edit.html.erb +1 -14
  478. data/app/views/spree/admin/tax_categories/index.html.erb +3 -24
  479. data/app/views/spree/admin/tax_categories/new.html.erb +1 -14
  480. data/app/views/spree/admin/tax_rates/_form.html.erb +6 -26
  481. data/app/views/spree/admin/tax_rates/_table_header.html.erb +9 -0
  482. data/app/views/spree/admin/tax_rates/{_tax_rate.html.erb → _table_row.html.erb} +1 -1
  483. data/app/views/spree/admin/tax_rates/edit.html.erb +1 -14
  484. data/app/views/spree/admin/tax_rates/index.html.erb +3 -26
  485. data/app/views/spree/admin/tax_rates/new.html.erb +1 -14
  486. data/app/views/spree/admin/taxonomies/_form.html.erb +5 -0
  487. data/app/views/spree/admin/taxonomies/_table_header.html.erb +6 -0
  488. data/app/views/spree/admin/taxonomies/{_taxonomy.html.erb → _table_row.html.erb} +3 -3
  489. data/app/views/spree/admin/taxonomies/edit.html.erb +1 -25
  490. data/app/views/spree/admin/taxonomies/filters.html.erb +6 -0
  491. data/app/views/spree/admin/taxonomies/index.html.erb +3 -34
  492. data/app/views/spree/admin/taxonomies/new.html.erb +1 -23
  493. data/app/views/spree/admin/taxons/_form.html.erb +6 -30
  494. data/app/views/spree/admin/taxons/_rule_form.html.erb +2 -1
  495. data/app/views/spree/admin/taxons/_rules_form.html.erb +1 -1
  496. data/app/views/spree/admin/taxons/edit.html.erb +0 -1
  497. data/app/views/spree/admin/themes/_theme.html.erb +9 -8
  498. data/app/views/spree/admin/themes/index.html.erb +14 -16
  499. data/app/views/spree/admin/translations/edit.html.erb +34 -49
  500. data/app/views/spree/admin/translations/policies/_form.html.erb +12 -0
  501. data/app/views/spree/admin/translations/products/_form.html.erb +2 -0
  502. data/app/views/spree/admin/translations/translation_rows/_permalink_field_row.html.erb +11 -20
  503. data/app/views/spree/admin/translations/translation_rows/_rich_textarea_row.html.erb +1 -11
  504. data/app/views/spree/admin/translations/translation_rows/_text_field_row.html.erb +1 -5
  505. data/app/views/spree/admin/translations/translation_rows/_textarea_row.html.erb +2 -9
  506. data/app/views/spree/admin/translations/translation_rows/_tinymce_row.html.erb +4 -11
  507. data/app/views/spree/admin/translations/update.turbo_stream.erb +1 -0
  508. data/app/views/spree/admin/users/_filters.html.erb +50 -66
  509. data/app/views/spree/admin/users/_form.html.erb +3 -36
  510. data/app/views/spree/admin/users/_form_fields.html.erb +15 -0
  511. data/app/views/spree/admin/users/_last_order.html.erb +3 -2
  512. data/app/views/spree/admin/users/_lifetime_stats.html.erb +1 -1
  513. data/app/views/spree/admin/users/_tabs.html.erb +31 -31
  514. data/app/views/spree/admin/users/_user.html.erb +1 -1
  515. data/app/views/spree/admin/users/bulk_modal.html.erb +11 -13
  516. data/app/views/spree/admin/users/edit.html.erb +1 -1
  517. data/app/views/spree/admin/users/index.html.erb +53 -55
  518. data/app/views/spree/admin/users/new.html.erb +1 -18
  519. data/app/views/spree/admin/variants/_variant.html.erb +1 -1
  520. data/app/views/spree/admin/variants/edit.html.erb +1 -1
  521. data/app/views/spree/admin/variants/form/_basic.html.erb +4 -17
  522. data/app/views/spree/admin/variants/form/_dimensions.html.erb +4 -18
  523. data/app/views/spree/admin/variants/form/_inventory.html.erb +6 -12
  524. data/app/views/spree/admin/variants/form/_pricing.html.erb +3 -3
  525. data/app/views/spree/admin/webhook_events/_webhook_event.html.erb +1 -1
  526. data/app/views/spree/admin/webhooks_subscribers/_form.html.erb +57 -73
  527. data/app/views/spree/admin/webhooks_subscribers/_table_header.html.erb +7 -0
  528. data/app/views/spree/admin/webhooks_subscribers/{_webhooks_subscriber.html.erb → _table_row.html.erb} +3 -3
  529. data/app/views/spree/admin/webhooks_subscribers/edit.html.erb +1 -9
  530. data/app/views/spree/admin/webhooks_subscribers/index.html.erb +1 -23
  531. data/app/views/spree/admin/webhooks_subscribers/new.html.erb +1 -11
  532. data/app/views/spree/admin/webhooks_subscribers/show.html.erb +8 -8
  533. data/app/views/spree/admin/zones/_form.html.erb +8 -28
  534. data/app/views/spree/admin/zones/_table_header.html.erb +8 -0
  535. data/app/views/spree/admin/zones/_table_row.html.erb +8 -0
  536. data/app/views/spree/admin/zones/edit.html.erb +1 -14
  537. data/app/views/spree/admin/zones/index.html.erb +3 -35
  538. data/app/views/spree/admin/zones/new.html.erb +1 -14
  539. data/config/importmap.rb +32 -2
  540. data/config/initializers/assets.rb +3 -1
  541. data/config/locales/en.yml +32 -3
  542. data/config/routes.rb +27 -4
  543. data/lib/generators/spree/admin/scaffold/scaffold_generator.rb +51 -0
  544. data/lib/generators/spree/admin/scaffold/templates/controller.rb.tt +11 -0
  545. data/lib/generators/spree/admin/scaffold/templates/views/_filters.html.erb.tt +13 -0
  546. data/lib/generators/spree/admin/scaffold/templates/views/_form.html.erb.tt +5 -0
  547. data/lib/generators/spree/admin/scaffold/templates/views/_table_header.html.erb.tt +5 -0
  548. data/lib/generators/spree/admin/scaffold/templates/views/_table_row.html.erb.tt +9 -0
  549. data/lib/generators/spree/admin/scaffold/templates/views/edit.html.erb.tt +1 -0
  550. data/lib/generators/spree/admin/scaffold/templates/views/index.html.erb.tt +9 -0
  551. data/lib/generators/spree/admin/scaffold/templates/views/new.html.erb.tt +1 -0
  552. data/lib/spree/admin/engine.rb +13 -9
  553. data/lib/spree/admin/runtime_configuration.rb +5 -0
  554. data/lib/spree/admin/testing_support/capybara_utils.rb +19 -0
  555. data/lib/spree/admin.rb +1 -3
  556. data/vendor/javascript/@codemirror--autocomplete.js +4 -0
  557. data/vendor/javascript/@codemirror--commands.js +4 -0
  558. data/vendor/javascript/@codemirror--lang-json.js +4 -0
  559. data/vendor/javascript/@codemirror--language.js +4 -0
  560. data/vendor/javascript/@codemirror--lint.js +4 -0
  561. data/vendor/javascript/@codemirror--search.js +4 -0
  562. data/vendor/javascript/@codemirror--state.js +4 -0
  563. data/vendor/javascript/@codemirror--view.js +4 -0
  564. data/vendor/javascript/@floating-ui--core.js +4 -0
  565. data/vendor/javascript/@floating-ui--dom.js +12 -0
  566. data/vendor/javascript/@floating-ui--utils--dom.js +4 -0
  567. data/vendor/javascript/@floating-ui--utils.js +4 -0
  568. data/vendor/javascript/@highlightjs--cdn-assets--es--core.min.js.js +308 -0
  569. data/vendor/javascript/@highlightjs--cdn-assets--es--languages--json.min.js.js +10 -0
  570. data/vendor/javascript/@lezer--common.js +4 -0
  571. data/vendor/javascript/@lezer--highlight.js +4 -0
  572. data/vendor/javascript/@lezer--json.js +4 -0
  573. data/vendor/javascript/@lezer--lr.js +4 -0
  574. data/vendor/javascript/@marijn--find-cluster-break.js +4 -0
  575. data/vendor/javascript/@stimulus-components--dialog.js +4 -0
  576. data/vendor/javascript/@stimulus-components--dropdown.js +4 -0
  577. data/vendor/javascript/codemirror.js +4 -0
  578. data/vendor/javascript/crelt.js +4 -0
  579. data/vendor/javascript/stimulus-use.js +2 -2
  580. data/vendor/javascript/style-mod.js +4 -0
  581. data/vendor/javascript/trix@2.1.15.js +5 -0
  582. data/vendor/javascript/w3c-keyname.js +4 -0
  583. metadata +210 -71
  584. data/app/assets/stylesheets/spree/admin/plugins/flatfile.scss +0 -4
  585. data/app/helpers/spree/admin/session_assets_helper.rb +0 -24
  586. data/app/javascript/spree/admin/controllers/bootstrap_tabs_controller.js +0 -9
  587. data/app/javascript/spree/admin/controllers/enable_button_controller.js +0 -29
  588. data/app/views/spree/admin/coupon_codes/_coupon_code.html.erb +0 -8
  589. data/app/views/spree/admin/errors/forbidden.html.erb +0 -13
  590. data/app/views/spree/admin/gift_cards/index.csv.erb +0 -22
  591. data/app/views/spree/admin/orders/user/create.turbo_stream.erb +0 -12
  592. data/app/views/spree/admin/orders/user/update.turbo_stream.erb +0 -5
  593. data/app/views/spree/admin/pages/_page.html.erb +0 -26
  594. data/app/views/spree/admin/payment_methods/update.turbo_stream.erb +0 -1
  595. data/app/views/spree/admin/posts/_filters.html.erb +0 -36
  596. data/app/views/spree/admin/stores/create.turbo_stream.erb +0 -5
  597. data/app/views/spree/admin/translations/_translations_unavailable.html.erb +0 -8
  598. data/app/views/spree/admin/users/index.csv.erb +0 -43
  599. data/vendor/javascript/trix@2.1.12.js +0 -5
  600. /data/app/views/spree/admin/page_blocks/forms/{_buy_buttons.html.erb → products/_buy_buttons.html.erb} +0 -0
  601. /data/app/views/spree/admin/page_blocks/forms/{_quantity_selector.html.erb → products/_quantity_selector.html.erb} +0 -0
@@ -0,0 +1,4 @@
1
+ // @codemirror/state@6.5.2 downloaded from https://ga.jspm.io/npm:@codemirror/state@6.5.2/dist/index.js
2
+
3
+ import{findClusterBreak as e}from"@marijn/find-cluster-break";class Text{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,false,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,true,1,0)}replace(e,t,n){[e,t]=clip(this,e,t);let i=[];this.decompose(0,e,i,2);n.length&&n.decompose(0,n.length,i,3);this.decompose(t,this.length,i,1);return TextNode.from(i,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=clip(this,e,t);let n=[];this.decompose(e,t,n,0);return TextNode.from(n,t-e)}eq(e){if(e==this)return true;if(e.length!=this.length||e.lines!=this.lines)return false;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1);let i=new RawTextCursor(this),s=new RawTextCursor(e);for(let e=t,r=t;;){i.next(e);s.next(e);e=0;if(i.lineBreak!=s.lineBreak||i.done!=s.done||i.value!=s.value)return false;r+=i.value.length;if(i.done||r>=n)return true}}iter(e=1){return new RawTextCursor(this,e)}iterRange(e,t=this.length){return new PartialTextCursor(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t==null&&(t=this.lines+1);let i=this.line(e).from;n=this.iterRange(i,Math.max(i,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new LineCursor(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];this.flatten(e);return e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length!=1||e[0]?e.length<=32?new TextLeaf(e):TextNode.from(TextLeaf.split(e,[])):Text.empty}}class TextLeaf extends Text{constructor(e,t=textLength(e)){super();this.text=e;this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,i){for(let s=0;;s++){let r=this.text[s],a=i+r.length;if((t?n:a)>=e)return new Line(i,a,n,r);i=a+1;n++}}decompose(e,t,n,i){let s=e<=0&&t>=this.length?this:new TextLeaf(sliceText(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(i&1){let e=n.pop();let t=appendText(s.text,e.text.slice(),0,s.length);if(t.length<=32)n.push(new TextLeaf(t,e.length+s.length));else{let e=t.length>>1;n.push(new TextLeaf(t.slice(0,e)),new TextLeaf(t.slice(e)))}}else n.push(s)}replace(e,t,n){if(!(n instanceof TextLeaf))return super.replace(e,t,n);[e,t]=clip(this,e,t);let i=appendText(this.text,appendText(n.text,sliceText(this.text,0,e)),t);let s=this.length+n.length-(t-e);return i.length<=32?new TextLeaf(i,s):TextNode.from(TextLeaf.split(i,[]),s)}sliceString(e,t=this.length,n="\n"){[e,t]=clip(this,e,t);let i="";for(let s=0,r=0;s<=t&&r<this.text.length;r++){let a=this.text[r],o=s+a.length;s>e&&r&&(i+=n);e<o&&t>s&&(i+=a.slice(Math.max(0,e-s),t-s));s=o+1}return i}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let n=[],i=-1;for(let s of e){n.push(s);i+=s.length+1;if(n.length==32){t.push(new TextLeaf(n,i));n=[];i=-1}}i>-1&&t.push(new TextLeaf(n,i));return t}}class TextNode extends Text{constructor(e,t){super();this.children=e;this.length=t;this.lines=0;for(let t of e)this.lines+=t.lines}lineInner(e,t,n,i){for(let s=0;;s++){let r=this.children[s],a=i+r.length,o=n+r.lines-1;if((t?o:a)>=e)return r.lineInner(e,t,n,i);i=a+1;n=o+1}}decompose(e,t,n,i){for(let s=0,r=0;r<=t&&s<this.children.length;s++){let a=this.children[s],o=r+a.length;if(e<=o&&t>=r){let s=i&((r<=e?1:0)|(o>=t?2:0));r>=e&&o<=t&&!s?n.push(a):a.decompose(e-r,t-r,n,s)}r=o+1}}replace(e,t,n){[e,t]=clip(this,e,t);if(n.lines<this.lines)for(let i=0,s=0;i<this.children.length;i++){let r=this.children[i],a=s+r.length;if(e>=s&&t<=a){let o=r.replace(e-s,t-s,n);let l=this.lines-r.lines+o.lines;if(o.lines<l>>4&&o.lines>l>>6){let s=this.children.slice();s[i]=o;return new TextNode(s,this.length-(t-e)+n.length)}return super.replace(s,a,o)}s=a+1}return super.replace(e,t,n)}sliceString(e,t=this.length,n="\n"){[e,t]=clip(this,e,t);let i="";for(let s=0,r=0;s<this.children.length&&r<=t;s++){let a=this.children[s],o=r+a.length;r>e&&s&&(i+=n);e<o&&t>r&&(i+=a.sliceString(e-r,t-r,n));r=o+1}return i}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof TextNode))return 0;let n=0;let[i,s,r,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;i+=t,s+=t){if(i==r||s==a)return n;let o=this.children[i],l=e.children[s];if(o!=l)return n+o.scanIdentical(l,t);n+=o.length+1}}static from(e,t=e.reduce(((e,t)=>e+t.length+1),-1)){let n=0;for(let t of e)n+=t.lines;if(n<32){let n=[];for(let t of e)t.flatten(n);return new TextLeaf(n,t)}let i=Math.max(32,n>>5),s=i<<1,r=i>>1;let a=[],o=0,l=-1,h=[];function add(e){let t;if(e.lines>s&&e instanceof TextNode)for(let t of e.children)add(t);else if(e.lines>r&&(o>r||!o)){flush();a.push(e)}else if(e instanceof TextLeaf&&o&&(t=h[h.length-1])instanceof TextLeaf&&e.lines+t.lines<=32){o+=e.lines;l+=e.length+1;h[h.length-1]=new TextLeaf(t.text.concat(e.text),t.length+1+e.length)}else{o+e.lines>i&&flush();o+=e.lines;l+=e.length+1;h.push(e)}}function flush(){if(o!=0){a.push(h.length==1?h[0]:TextNode.from(h,l));l=-1;o=h.length=0}}for(let t of e)add(t);flush();return a.length==1?a[0]:new TextNode(a,t)}}Text.empty=new TextLeaf([""],0);function textLength(e){let t=-1;for(let n of e)t+=n.length+1;return t}function appendText(e,t,n=0,i=1e9){for(let s=0,r=0,a=true;r<e.length&&s<=i;r++){let o=e[r],l=s+o.length;if(l>=n){l>i&&(o=o.slice(0,i-s));s<n&&(o=o.slice(n-s));if(a){t[t.length-1]+=o;a=false}else t.push(o)}s=l+1}return t}function sliceText(e,t,n){return appendText(e,[""],t,n)}class RawTextCursor{constructor(e,t=1){this.dir=t;this.done=false;this.lineBreak=false;this.value="";this.nodes=[e];this.offsets=[t>0?1:(e instanceof TextLeaf?e.text.length:e.children.length)<<1]}nextInner(e,t){this.done=this.lineBreak=false;for(;;){let n=this.nodes.length-1;let i=this.nodes[n],s=this.offsets[n],r=s>>1;let a=i instanceof TextLeaf?i.text.length:i.children.length;if(r==(t>0?a:0)){if(n==0){this.done=true;this.value="";return this}t>0&&this.offsets[n-1]++;this.nodes.pop();this.offsets.pop()}else if((s&1)==(t>0?0:1)){this.offsets[n]+=t;if(e==0){this.lineBreak=true;this.value="\n";return this}e--}else if(i instanceof TextLeaf){let s=i.text[r+(t<0?-1:0)];this.offsets[n]+=t;if(s.length>Math.max(0,e)){this.value=e==0?s:t>0?s.slice(e):s.slice(0,s.length-e);return this}e-=s.length}else{let s=i.children[r+(t<0?-1:0)];if(e>s.length){e-=s.length;this.offsets[n]+=t}else{t<0&&this.offsets[n]--;this.nodes.push(s);this.offsets.push(t>0?1:(s instanceof TextLeaf?s.text.length:s.children.length)<<1)}}}}next(e=0){if(e<0){this.nextInner(-e,-this.dir);e=this.value.length}return this.nextInner(e,this.dir)}}class PartialTextCursor{constructor(e,t,n){this.value="";this.done=false;this.cursor=new RawTextCursor(e,t>n?-1:1);this.pos=t>n?e.length:0;this.from=Math.min(t,n);this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to){this.value="";this.done=true;return this}e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n);n-=e;let{value:i}=this.cursor.next(e);this.pos+=(i.length+e)*t;this.value=i.length<=n?i:t<0?i.slice(i.length-n):i.slice(0,n);this.done=!this.value;return this}next(e=0){e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos));return this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class LineCursor{constructor(e){this.inner=e;this.afterBreak=true;this.value="";this.done=false}next(e=0){let{done:t,lineBreak:n,value:i}=this.inner.next(e);if(t&&this.afterBreak){this.value="";this.afterBreak=false}else if(t){this.done=true;this.value=""}else if(n)if(this.afterBreak)this.value="";else{this.afterBreak=true;this.next()}else{this.value=i;this.afterBreak=false}return this}get lineBreak(){return false}}if(typeof Symbol!="undefined"){Text.prototype[Symbol.iterator]=function(){return this.iter()};RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this}}class Line{constructor(e,t,n,i){this.from=e;this.to=t;this.number=n;this.text=i}get length(){return this.to-this.from}}function clip(e,t,n){t=Math.max(0,Math.min(e.length,t));return[t,Math.max(t,Math.min(e.length,n))]}function findClusterBreak(t,n,i=true,s=true){return e(t,n,i,s)}function surrogateLow(e){return e>=56320&&e<57344}function surrogateHigh(e){return e>=55296&&e<56320}function codePointAt(e,t){let n=e.charCodeAt(t);if(!surrogateHigh(n)||t+1==e.length)return n;let i=e.charCodeAt(t+1);return surrogateLow(i)?i-56320+(n-55296<<10)+65536:n}function fromCodePoint(e){if(e<=65535)return String.fromCharCode(e);e-=65536;return String.fromCharCode(55296+(e>>10),56320+(e&1023))}function codePointSize(e){return e<65536?1:2}const t=/\r\n?|\n/;var n=function(e){e[e.Simple=0]="Simple";e[e.TrackDel=1]="TrackDel";e[e.TrackBefore=2]="TrackBefore";e[e.TrackAfter=3]="TrackAfter";return e}(n||(n={}));class ChangeDesc{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t+1];e+=n<0?this.sections[t]:n}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,n=0,i=0;t<this.sections.length;){let s=this.sections[t++],r=this.sections[t++];if(r<0){e(n,i,s);i+=s}else i+=r;n+=s}}iterChangedRanges(e,t=false){iterChanges(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let n=this.sections[t++],i=this.sections[t++];i<0?e.push(n,i):e.push(i,n)}return new ChangeDesc(e)}composeDesc(e){return this.empty?e:e.empty?this:composeSets(this,e)}mapDesc(e,t=false){return e.empty?this:mapSet(this,e,t)}mapPos(e,t=-1,i=n.Simple){let s=0,r=0;for(let a=0;a<this.sections.length;){let o=this.sections[a++],l=this.sections[a++],h=s+o;if(l<0){if(h>e)return r+(e-s);r+=o}else{if(i!=n.Simple&&h>=e&&(i==n.TrackDel&&s<e&&h>e||i==n.TrackBefore&&s<e||i==n.TrackAfter&&h>e))return null;if(h>e||h==e&&t<0&&!o)return e==s||t<0?r:r+l;r+=l}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,t=e){for(let n=0,i=0;n<this.sections.length&&i<=t;){let s=this.sections[n++],r=this.sections[n++],a=i+s;if(r>=0&&i<=t&&a>=e)return!(i<e&&a>t)||"cover";i=a}return false}toString(){let e="";for(let t=0;t<this.sections.length;){let n=this.sections[t++],i=this.sections[t++];e+=(e?" ":"")+n+(i>=0?":"+i:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some((e=>typeof e!="number")))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ChangeDesc(e)}static create(e){return new ChangeDesc(e)}}class ChangeSet extends ChangeDesc{constructor(e,t){super(e);this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");iterChanges(this,((t,n,i,s,r)=>e=e.replace(i,i+(n-t),r)),false);return e}mapDesc(e,t=false){return mapSet(this,e,t,true)}invert(e){let t=this.sections.slice(),n=[];for(let i=0,s=0;i<t.length;i+=2){let r=t[i],a=t[i+1];if(a>=0){t[i]=a;t[i+1]=r;let o=i>>1;while(n.length<o)n.push(Text.empty);n.push(r?e.slice(s,s+r):Text.empty)}s+=r}return new ChangeSet(t,n)}compose(e){return this.empty?e:e.empty?this:composeSets(this,e,true)}map(e,t=false){return e.empty?this:mapSet(this,e,t,true)}iterChanges(e,t=false){iterChanges(this,e,t)}get desc(){return ChangeDesc.create(this.sections)}filter(e){let t=[],n=[],i=[];let s=new SectionIter(this);e:for(let r=0,a=0;;){let o=r==e.length?1e9:e[r++];while(a<o||a==o&&s.len==0){if(s.done)break e;let e=Math.min(s.len,o-a);addSection(i,e,-1);let r=s.ins==-1?-1:s.off==0?s.ins:0;addSection(t,e,r);r>0&&addInsert(n,t,s.text);s.forward(e);a+=e}let l=e[r++];while(a<l){if(s.done)break e;let e=Math.min(s.len,l-a);addSection(t,e,-1);addSection(i,e,s.ins==-1?-1:s.off==0?s.ins:0);s.forward(e);a+=e}}return{changes:new ChangeSet(t,n),filtered:ChangeDesc.create(i)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t],i=this.sections[t+1];i<0?e.push(n):i==0?e.push([n]):e.push([n].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,n,i){let s=[],r=[],a=0;let o=null;function flush(e=false){if(!e&&!s.length)return;a<n&&addSection(s,n-a,-1);let t=new ChangeSet(s,r);o=o?o.compose(t.map(o)):t;s=[];r=[];a=0}function process(e){if(Array.isArray(e))for(let t of e)process(t);else if(e instanceof ChangeSet){if(e.length!=n)throw new RangeError(`Mismatched change set length (got ${e.length}, expected ${n})`);flush();o=o?o.compose(e.map(o)):e}else{let{from:o,to:l=o,insert:h}=e;if(o>l||o<0||l>n)throw new RangeError(`Invalid change range ${o} to ${l} (in doc of length ${n})`);let c=h?typeof h=="string"?Text.of(h.split(i||t)):h:Text.empty;let f=c.length;if(o==l&&f==0)return;o<a&&flush();o>a&&addSection(s,o-a,-1);addSection(s,l-o,f);addInsert(r,s,c);a=l}}process(e);flush(!o);return o}static empty(e){return new ChangeSet(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],n=[];for(let i=0;i<e.length;i++){let s=e[i];if(typeof s=="number")t.push(s,-1);else{if(!Array.isArray(s)||typeof s[0]!="number"||s.some(((e,t)=>t&&typeof e!="string")))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{while(n.length<i)n.push(Text.empty);n[i]=Text.of(s.slice(1));t.push(s[0],n[i].length)}}}return new ChangeSet(t,n)}static createSet(e,t){return new ChangeSet(e,t)}}function addSection(e,t,n,i=false){if(t==0&&n<=0)return;let s=e.length-2;if(s>=0&&n<=0&&n==e[s+1])e[s]+=t;else if(s>=0&&t==0&&e[s]==0)e[s+1]+=n;else if(i){e[s]+=t;e[s+1]+=n}else e.push(t,n)}function addInsert(e,t,n){if(n.length==0)return;let i=t.length-2>>1;if(i<e.length)e[e.length-1]=e[e.length-1].append(n);else{while(e.length<i)e.push(Text.empty);e.push(n)}}function iterChanges(e,t,n){let i=e.inserted;for(let s=0,r=0,a=0;a<e.sections.length;){let o=e.sections[a++],l=e.sections[a++];if(l<0){s+=o;r+=o}else{let h=s,c=r,f=Text.empty;for(;;){h+=o;c+=l;l&&i&&(f=f.append(i[a-2>>1]));if(n||a==e.sections.length||e.sections[a+1]<0)break;o=e.sections[a++];l=e.sections[a++]}t(s,h,r,c,f);s=h;r=c}}}function mapSet(e,t,n,i=false){let s=[],r=i?[]:null;let a=new SectionIter(e),o=new SectionIter(t);for(let e=-1;;){if(a.done&&o.len||o.done&&a.len)throw new Error("Mismatched change set lengths");if(a.ins==-1&&o.ins==-1){let e=Math.min(a.len,o.len);addSection(s,e,-1);a.forward(e);o.forward(e)}else if(o.ins>=0&&(a.ins<0||e==a.i||a.off==0&&(o.len<a.len||o.len==a.len&&!n))){let t=o.len;addSection(s,o.ins,-1);while(t){let n=Math.min(a.len,t);if(a.ins>=0&&e<a.i&&a.len<=n){addSection(s,0,a.ins);r&&addInsert(r,s,a.text);e=a.i}a.forward(n);t-=n}o.next()}else{if(!(a.ins>=0)){if(a.done&&o.done)return r?ChangeSet.createSet(s,r):ChangeDesc.create(s);throw new Error("Mismatched change set lengths")}{let t=0,n=a.len;while(n)if(o.ins==-1){let e=Math.min(n,o.len);t+=e;n-=e;o.forward(e)}else{if(!(o.ins==0&&o.len<n))break;n-=o.len;o.next()}addSection(s,t,e<a.i?a.ins:0);r&&e<a.i&&addInsert(r,s,a.text);e=a.i;a.forward(a.len-n)}}}}function composeSets(e,t,n=false){let i=[];let s=n?[]:null;let r=new SectionIter(e),a=new SectionIter(t);for(let e=false;;){if(r.done&&a.done)return s?ChangeSet.createSet(i,s):ChangeDesc.create(i);if(r.ins==0){addSection(i,r.len,0,e);r.next()}else if(a.len!=0||a.done){if(r.done||a.done)throw new Error("Mismatched change set lengths");{let t=Math.min(r.len2,a.len),n=i.length;if(r.ins==-1){let n=a.ins==-1?-1:a.off?0:a.ins;addSection(i,t,n,e);s&&n&&addInsert(s,i,a.text)}else if(a.ins==-1){addSection(i,r.off?0:r.len,t,e);s&&addInsert(s,i,r.textBit(t))}else{addSection(i,r.off?0:r.len,a.off?0:a.ins,e);s&&!a.off&&addInsert(s,i,a.text)}e=(r.ins>t||a.ins>=0&&a.len>t)&&(e||i.length>n);r.forward2(t);a.forward(t)}}else{addSection(i,0,a.ins,e);s&&addInsert(s,i,a.text);a.next()}}}class SectionIter{constructor(e){this.set=e;this.i=0;this.next()}next(){let{sections:e}=this.set;if(this.i<e.length){this.len=e[this.i++];this.ins=e[this.i++]}else{this.len=0;this.ins=-2}this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?Text.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?Text.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){if(e==this.len)this.next();else{this.len-=e;this.off+=e}}forward2(e){if(this.ins==-1)this.forward(e);else if(e==this.ins)this.next();else{this.ins-=e;this.off+=e}}}class SelectionRange{constructor(e,t,n){this.from=e;this.to=t;this.flags=n}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let n,i;if(this.empty)n=i=e.mapPos(this.from,t);else{n=e.mapPos(this.from,1);i=e.mapPos(this.to,-1)}return n==this.from&&i==this.to?this:new SelectionRange(n,i,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return EditorSelection.range(e,t);let n=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return EditorSelection.range(this.anchor,n)}eq(e,t=false){return this.anchor==e.anchor&&this.head==e.head&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return EditorSelection.range(e.anchor,e.head)}static create(e,t,n){return new SelectionRange(e,t,n)}}class EditorSelection{constructor(e,t){this.ranges=e;this.mainIndex=t}map(e,t=-1){return e.empty?this:EditorSelection.create(this.ranges.map((n=>n.map(e,t))),this.mainIndex)}eq(e,t=false){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return false;for(let n=0;n<this.ranges.length;n++)if(!this.ranges[n].eq(e.ranges[n],t))return false;return true}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new EditorSelection([this.main],0)}addRange(e,t=true){return EditorSelection.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let n=this.ranges.slice();n[t]=e;return EditorSelection.create(n,this.mainIndex)}toJSON(){return{ranges:this.ranges.map((e=>e.toJSON())),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new EditorSelection(e.ranges.map((e=>SelectionRange.fromJSON(e))),e.main)}static single(e,t=e){return new EditorSelection([EditorSelection.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let n=0,i=0;i<e.length;i++){let s=e[i];if(s.empty?s.from<=n:s.from<n)return EditorSelection.normalized(e.slice(),t);n=s.to}return new EditorSelection(e,t)}static cursor(e,t=0,n,i){return SelectionRange.create(e,e,(t==0?0:t<0?8:16)|(n==null?7:Math.min(6,n))|(i!==null&&i!==void 0?i:16777215)<<6)}static range(e,t,n,i){let s=(n!==null&&n!==void 0?n:16777215)<<6|(i==null?7:Math.min(6,i));return t<e?SelectionRange.create(t,e,48|s):SelectionRange.create(e,t,(t>e?8:0)|s)}static normalized(e,t=0){let n=e[t];e.sort(((e,t)=>e.from-t.from));t=e.indexOf(n);for(let n=1;n<e.length;n++){let i=e[n],s=e[n-1];if(i.empty?i.from<=s.to:i.from<s.to){let r=s.from,a=Math.max(i.to,s.to);n<=t&&t--;e.splice(--n,2,i.anchor>i.head?EditorSelection.range(a,r):EditorSelection.range(r,a))}}return new EditorSelection(e,t)}}function checkSelection(e,t){for(let n of e.ranges)if(n.to>t)throw new RangeError("Selection points outside of document")}let i=0;class Facet{constructor(e,t,n,s,r){this.combine=e;this.compareInput=t;this.compare=n;this.isStatic=s;this.id=i++;this.default=e([]);this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new Facet(e.combine||(e=>e),e.compareInput||((e,t)=>e===t),e.compare||(e.combine?(e,t)=>e===t:sameArray),!!e.static,e.enables)}of(e){return new FacetProvider([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,2,t)}from(e,t){t||(t=e=>e);return this.compute([e],(n=>t(n.field(e))))}}function sameArray(e,t){return e==t||e.length==t.length&&e.every(((e,n)=>e===t[n]))}class FacetProvider{constructor(e,t,n,s){this.dependencies=e;this.facet=t;this.type=n;this.value=s;this.id=i++}dynamicSlot(e){var t;let n=this.value;let i=this.facet.compareInput;let s=this.id,r=e[s]>>1,a=this.type==2;let o=false,l=false,h=[];for(let n of this.dependencies)n=="doc"?o=true:n=="selection"?l=true:(((t=e[n.id])!==null&&t!==void 0?t:1)&1)==0&&h.push(e[n.id]);return{create(e){e.values[r]=n(e);return 1},update(e,t){if(o&&t.docChanged||l&&(t.docChanged||t.selection)||ensureAll(e,h)){let t=n(e);if(a?!compareArray(t,e.values[r],i):!i(t,e.values[r])){e.values[r]=t;return 1}}return 0},reconfigure:(e,t)=>{let o,l=t.config.address[s];if(l!=null){let s=getAddr(t,l);if(this.dependencies.every((n=>n instanceof Facet?t.facet(n)===e.facet(n):!(n instanceof StateField)||t.field(n,false)==e.field(n,false)))||(a?compareArray(o=n(e),s,i):i(o=n(e),s))){e.values[r]=s;return 0}}else o=n(e);e.values[r]=o;return 1}}}}function compareArray(e,t,n){if(e.length!=t.length)return false;for(let i=0;i<e.length;i++)if(!n(e[i],t[i]))return false;return true}function ensureAll(e,t){let n=false;for(let i of t)ensureAddr(e,i)&1&&(n=true);return n}function dynamicFacetSlot(e,t,n){let i=n.map((t=>e[t.id]));let s=n.map((e=>e.type));let r=i.filter((e=>!(e&1)));let a=e[t.id]>>1;function get(e){let n=[];for(let t=0;t<i.length;t++){let r=getAddr(e,i[t]);if(s[t]==2)for(let e of r)n.push(e);else n.push(r)}return t.combine(n)}return{create(e){for(let t of i)ensureAddr(e,t);e.values[a]=get(e);return 1},update(e,n){if(!ensureAll(e,r))return 0;let i=get(e);if(t.compare(i,e.values[a]))return 0;e.values[a]=i;return 1},reconfigure(e,s){let r=ensureAll(e,i);let o=s.config.facets[t.id],l=s.facet(t);if(o&&!r&&sameArray(n,o)){e.values[a]=l;return 0}let h=get(e);if(t.compare(h,l)){e.values[a]=l;return 0}e.values[a]=h;return 1}}}const s=Facet.define({static:true});class StateField{constructor(e,t,n,i,s){this.id=e;this.createF=t;this.updateF=n;this.compareF=i;this.spec=s;this.provides=void 0}static define(e){let t=new StateField(i++,e.create,e.update,e.compare||((e,t)=>e===t),e);e.provide&&(t.provides=e.provide(t));return t}create(e){let t=e.facet(s).find((e=>e.field==this));return((t===null||t===void 0?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:e=>{e.values[t]=this.create(e);return 1},update:(e,n)=>{let i=e.values[t];let s=this.updateF(i,n);if(this.compareF(i,s))return 0;e.values[t]=s;return 1},reconfigure:(e,n)=>{let i,r=e.facet(s),a=n.facet(s);if((i=r.find((e=>e.field==this)))&&i!=a.find((e=>e.field==this))){e.values[t]=i.create(e);return 1}if(n.config.address[this.id]!=null){e.values[t]=n.field(this);return 0}e.values[t]=this.create(e);return 1}}}init(e){return[this,s.of({field:this,create:e})]}get extension(){return this}}const r={lowest:4,low:3,default:2,high:1,highest:0};function prec(e){return t=>new PrecExtension(t,e)}const a={highest:prec(r.highest),high:prec(r.high),default:prec(r.default),low:prec(r.low),lowest:prec(r.lowest)};class PrecExtension{constructor(e,t){this.inner=e;this.prec=t}}class Compartment{of(e){return new CompartmentInstance(this,e)}reconfigure(e){return Compartment.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class CompartmentInstance{constructor(e,t){this.compartment=e;this.inner=t}}class Configuration{constructor(e,t,n,i,s,r){this.base=e;this.compartments=t;this.dynamicSlots=n;this.address=i;this.staticValues=s;this.facets=r;this.statusTemplate=[];while(this.statusTemplate.length<n.length)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(e,t,n){let i=[];let s=Object.create(null);let r=new Map;for(let n of flatten(e,t,r))n instanceof StateField?i.push(n):(s[n.facet.id]||(s[n.facet.id]=[])).push(n);let a=Object.create(null);let o=[];let l=[];for(let e of i){a[e.id]=l.length<<1;l.push((t=>e.slot(t)))}let h=n===null||n===void 0?void 0:n.config.facets;for(let e in s){let t=s[e],i=t[0].facet;let r=h&&h[e]||[];if(t.every((e=>e.type==0))){a[i.id]=o.length<<1|1;if(sameArray(r,t))o.push(n.facet(i));else{let e=i.combine(t.map((e=>e.value)));o.push(n&&i.compare(e,n.facet(i))?n.facet(i):e)}}else{for(let e of t)if(e.type==0){a[e.id]=o.length<<1|1;o.push(e.value)}else{a[e.id]=l.length<<1;l.push((t=>e.dynamicSlot(t)))}a[i.id]=l.length<<1;l.push((e=>dynamicFacetSlot(e,i,t)))}}let c=l.map((e=>e(a)));return new Configuration(e,r,c,a,o,s)}}function flatten(e,t,n){let i=[[],[],[],[],[]];let s=new Map;function inner(e,a){let o=s.get(e);if(o!=null){if(o<=a)return;let t=i[o].indexOf(e);t>-1&&i[o].splice(t,1);e instanceof CompartmentInstance&&n.delete(e.compartment)}s.set(e,a);if(Array.isArray(e))for(let t of e)inner(t,a);else if(e instanceof CompartmentInstance){if(n.has(e.compartment))throw new RangeError("Duplicate use of compartment in extensions");let i=t.get(e.compartment)||e.inner;n.set(e.compartment,i);inner(i,a)}else if(e instanceof PrecExtension)inner(e.inner,e.prec);else if(e instanceof StateField){i[a].push(e);e.provides&&inner(e.provides,a)}else if(e instanceof FacetProvider){i[a].push(e);e.facet.extensions&&inner(e.facet.extensions,r.default)}else{let t=e.extension;if(!t)throw new Error(`Unrecognized extension value in extension set (${e}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);inner(t,a)}}inner(e,r.default);return i.reduce(((e,t)=>e.concat(t)))}function ensureAddr(e,t){if(t&1)return 2;let n=t>>1;let i=e.status[n];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;e.status[n]=4;let s=e.computeSlot(e,e.config.dynamicSlots[n]);return e.status[n]=2|s}function getAddr(e,t){return t&1?e.config.staticValues[t>>1]:e.values[t>>1]}const o=Facet.define();const l=Facet.define({combine:e=>e.some((e=>e)),static:true});const h=Facet.define({combine:e=>e.length?e[0]:void 0,static:true});const c=Facet.define();const f=Facet.define();const u=Facet.define();const d=Facet.define({combine:e=>!!e.length&&e[0]});class Annotation{constructor(e,t){this.type=e;this.value=t}static define(){return new AnnotationType}}class AnnotationType{of(e){return new Annotation(this,e)}}class StateEffectType{constructor(e){this.map=e}of(e){return new StateEffect(this,e)}}class StateEffect{constructor(e,t){this.type=e;this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new StateEffect(this.type,t)}is(e){return this.type==e}static define(e={}){return new StateEffectType(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let i of e){let e=i.map(t);e&&n.push(e)}return n}}StateEffect.reconfigure=StateEffect.define();StateEffect.appendConfig=StateEffect.define();class Transaction{constructor(e,t,n,i,s,r){this.startState=e;this.changes=t;this.selection=n;this.effects=i;this.annotations=s;this.scrollIntoView=r;this._doc=null;this._state=null;n&&checkSelection(n,t.newLength);s.some((e=>e.type==Transaction.time))||(this.annotations=s.concat(Transaction.time.of(Date.now())))}static create(e,t,n,i,s,r){return new Transaction(e,t,n,i,s,r)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){this._state||this.startState.applyTransaction(this);return this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(Transaction.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}}Transaction.time=Annotation.define();Transaction.userEvent=Annotation.define();Transaction.addToHistory=Annotation.define();Transaction.remote=Annotation.define();function joinRanges(e,t){let n=[];for(let i=0,s=0;;){let r,a;if(i<e.length&&(s==t.length||t[s]>=e[i])){r=e[i++];a=e[i++]}else{if(!(s<t.length))return n;r=t[s++];a=t[s++]}!n.length||n[n.length-1]<r?n.push(r,a):n[n.length-1]<a&&(n[n.length-1]=a)}}function mergeTransaction(e,t,n){var i;let s,r,a;if(n){s=t.changes;r=ChangeSet.empty(t.changes.length);a=e.changes.compose(t.changes)}else{s=t.changes.map(e.changes);r=e.changes.mapDesc(t.changes,true);a=e.changes.compose(s)}return{changes:a,selection:t.selection?t.selection.map(r):(i=e.selection)===null||i===void 0?void 0:i.map(s),effects:StateEffect.mapEffects(e.effects,s).concat(StateEffect.mapEffects(t.effects,r)),annotations:e.annotations.length?e.annotations.concat(t.annotations):t.annotations,scrollIntoView:e.scrollIntoView||t.scrollIntoView}}function resolveTransactionInner(e,t,n){let i=t.selection,s=asArray(t.annotations);t.userEvent&&(s=s.concat(Transaction.userEvent.of(t.userEvent)));return{changes:t.changes instanceof ChangeSet?t.changes:ChangeSet.of(t.changes||[],n,e.facet(h)),selection:i&&(i instanceof EditorSelection?i:EditorSelection.single(i.anchor,i.head)),effects:asArray(t.effects),annotations:s,scrollIntoView:!!t.scrollIntoView}}function resolveTransaction(e,t,n){let i=resolveTransactionInner(e,t.length?t[0]:{},e.doc.length);t.length&&t[0].filter===false&&(n=false);for(let s=1;s<t.length;s++){t[s].filter===false&&(n=false);let r=!!t[s].sequential;i=mergeTransaction(i,resolveTransactionInner(e,t[s],r?i.changes.newLength:e.doc.length),r)}let s=Transaction.create(e,i.changes,i.selection,i.effects,i.annotations,i.scrollIntoView);return extendTransaction(n?filterTransaction(s):s)}function filterTransaction(e){let t=e.startState;let n=true;for(let i of t.facet(c)){let t=i(e);if(t===false){n=false;break}Array.isArray(t)&&(n=n===true?t:joinRanges(n,t))}if(n!==true){let i,s;if(n===false){s=e.changes.invertedDesc;i=ChangeSet.empty(t.doc.length)}else{let t=e.changes.filter(n);i=t.changes;s=t.filtered.mapDesc(t.changes).invertedDesc}e=Transaction.create(t,i,e.selection&&e.selection.map(s),StateEffect.mapEffects(e.effects,s),e.annotations,e.scrollIntoView)}let i=t.facet(f);for(let n=i.length-1;n>=0;n--){let s=i[n](e);e=s instanceof Transaction?s:Array.isArray(s)&&s.length==1&&s[0]instanceof Transaction?s[0]:resolveTransaction(t,asArray(s),false)}return e}function extendTransaction(e){let t=e.startState,n=t.facet(u),i=e;for(let s=n.length-1;s>=0;s--){let r=n[s](e);r&&Object.keys(r).length&&(i=mergeTransaction(i,resolveTransactionInner(t,r,e.changes.newLength),true))}return i==e?e:Transaction.create(t,e.changes,e.selection,i.effects,i.annotations,i.scrollIntoView)}const g=[];function asArray(e){return e==null?g:Array.isArray(e)?e:[e]}var p=function(e){e[e.Word=0]="Word";e[e.Space=1]="Space";e[e.Other=2]="Other";return e}(p||(p={}));const m=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let S;try{S=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(e){}function hasWordChar(e){if(S)return S.test(e);for(let t=0;t<e.length;t++){let n=e[t];if(/\w/.test(n)||n>"€"&&(n.toUpperCase()!=n.toLowerCase()||m.test(n)))return true}return false}function makeCategorizer(e){return t=>{if(!/\S/.test(t))return p.Space;if(hasWordChar(t))return p.Word;for(let n=0;n<e.length;n++)if(t.indexOf(e[n])>-1)return p.Word;return p.Other}}class EditorState{constructor(e,t,n,i,s,r){this.config=e;this.doc=t;this.selection=n;this.values=i;this.status=e.statusTemplate.slice();this.computeSlot=s;r&&(r._state=this);for(let e=0;e<this.config.dynamicSlots.length;e++)ensureAddr(this,e<<1);this.computeSlot=null}field(e,t=true){let n=this.config.address[e.id];if(n!=null){ensureAddr(this,n);return getAddr(this,n)}if(t)throw new RangeError("Field is not present in this state")}update(...e){return resolveTransaction(this,e,true)}applyTransaction(e){let t=this.config,{base:n,compartments:i}=t;for(let s of e.effects)if(s.is(Compartment.reconfigure)){if(t){i=new Map;t.compartments.forEach(((e,t)=>i.set(t,e)));t=null}i.set(s.value.compartment,s.value.extension)}else if(s.is(StateEffect.reconfigure)){t=null;n=s.value}else if(s.is(StateEffect.appendConfig)){t=null;n=asArray(n).concat(s.value)}let s;if(t)s=e.startState.values.slice();else{t=Configuration.resolve(n,i,this);let e=new EditorState(t,this.doc,this.selection,t.dynamicSlots.map((()=>null)),((e,t)=>t.reconfigure(e,this)),null);s=e.values}let r=e.startState.facet(l)?e.newSelection:e.newSelection.asSingle();new EditorState(t,e.newDoc,r,s,((t,n)=>n.update(t,e)),e)}replaceSelection(e){typeof e=="string"&&(e=this.toText(e));return this.changeByRange((t=>({changes:{from:t.from,to:t.to,insert:e},range:EditorSelection.cursor(t.from+e.length)})))}changeByRange(e){let t=this.selection;let n=e(t.ranges[0]);let i=this.changes(n.changes),s=[n.range];let r=asArray(n.effects);for(let n=1;n<t.ranges.length;n++){let a=e(t.ranges[n]);let o=this.changes(a.changes),l=o.map(i);for(let e=0;e<n;e++)s[e]=s[e].map(l);let h=i.mapDesc(o,true);s.push(a.range.map(h));i=i.compose(l);r=StateEffect.mapEffects(r,l).concat(StateEffect.mapEffects(asArray(a.effects),h))}return{changes:i,selection:EditorSelection.create(s,t.mainIndex),effects:r}}changes(e=[]){return e instanceof ChangeSet?e:ChangeSet.of(e,this.doc.length,this.facet(EditorState.lineSeparator))}toText(e){return Text.of(e.split(this.facet(EditorState.lineSeparator)||t))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];if(t==null)return e.default;ensureAddr(this,t);return getAddr(this,t)}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let n in e){let i=e[n];i instanceof StateField&&this.config.address[i.id]!=null&&(t[n]=i.spec.toJSON(this.field(e[n]),this))}return t}static fromJSON(e,t={},n){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let i=[];if(n)for(let t in n)if(Object.prototype.hasOwnProperty.call(e,t)){let s=n[t],r=e[t];i.push(s.init((e=>s.spec.fromJSON(r,e))))}return EditorState.create({doc:e.doc,selection:EditorSelection.fromJSON(e.selection),extensions:t.extensions?i.concat([t.extensions]):i})}static create(e={}){let n=Configuration.resolve(e.extensions||[],new Map);let i=e.doc instanceof Text?e.doc:Text.of((e.doc||"").split(n.staticFacet(EditorState.lineSeparator)||t));let s=e.selection?e.selection instanceof EditorSelection?e.selection:EditorSelection.single(e.selection.anchor,e.selection.head):EditorSelection.single(0);checkSelection(s,i.length);n.staticFacet(l)||(s=s.asSingle());return new EditorState(n,i,s,n.dynamicSlots.map((()=>null)),((e,t)=>t.create(e)),null)}get tabSize(){return this.facet(EditorState.tabSize)}get lineBreak(){return this.facet(EditorState.lineSeparator)||"\n"}get readOnly(){return this.facet(d)}phrase(e,...t){for(let t of this.facet(EditorState.phrases))if(Object.prototype.hasOwnProperty.call(t,e)){e=t[e];break}t.length&&(e=e.replace(/\$(\$|\d*)/g,((e,n)=>{if(n=="$")return"$";let i=+(n||1);return!i||i>t.length?e:t[i-1]})));return e}languageDataAt(e,t,n=-1){let i=[];for(let s of this.facet(o))for(let r of s(this,t,n))Object.prototype.hasOwnProperty.call(r,e)&&i.push(r[e]);return i}charCategorizer(e){return makeCategorizer(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:t,from:n,length:i}=this.doc.lineAt(e);let s=this.charCategorizer(e);let r=e-n,a=e-n;while(r>0){let e=findClusterBreak(t,r,false);if(s(t.slice(e,r))!=p.Word)break;r=e}while(a<i){let e=findClusterBreak(t,a);if(s(t.slice(a,e))!=p.Word)break;a=e}return r==a?null:EditorSelection.range(r+n,a+n)}}EditorState.allowMultipleSelections=l;EditorState.tabSize=Facet.define({combine:e=>e.length?e[0]:4});EditorState.lineSeparator=h;EditorState.readOnly=d;EditorState.phrases=Facet.define({compare(e,t){let n=Object.keys(e),i=Object.keys(t);return n.length==i.length&&n.every((n=>e[n]==t[n]))}});EditorState.languageData=o;EditorState.changeFilter=c;EditorState.transactionFilter=f;EditorState.transactionExtender=u;Compartment.reconfigure=StateEffect.define();function combineConfig(e,t,n={}){let i={};for(let t of e)for(let e of Object.keys(t)){let s=t[e],r=i[e];if(r===void 0)i[e]=s;else if(r===s||s===void 0);else{if(!Object.hasOwnProperty.call(n,e))throw new Error("Config merge conflict for field "+e);i[e]=n[e](r,s)}}for(let e in t)i[e]===void 0&&(i[e]=t[e]);return i}class RangeValue{eq(e){return this==e}range(e,t=e){return Range.create(e,t,this)}}RangeValue.prototype.startSide=RangeValue.prototype.endSide=0;RangeValue.prototype.point=false;RangeValue.prototype.mapMode=n.TrackDel;class Range{constructor(e,t,n){this.from=e;this.to=t;this.value=n}static create(e,t,n){return new Range(e,t,n)}}function cmpRange(e,t){return e.from-t.from||e.value.startSide-t.value.startSide}class Chunk{constructor(e,t,n,i){this.from=e;this.to=t;this.value=n;this.maxPoint=i}get length(){return this.to[this.to.length-1]}findIndex(e,t,n,i=0){let s=n?this.to:this.from;for(let r=i,a=s.length;;){if(r==a)return r;let i=r+a>>1;let o=s[i]-e||(n?this.value[i].endSide:this.value[i].startSide)-t;if(i==r)return o>=0?r:a;o>=0?a=i:r=i+1}}between(e,t,n,i){for(let s=this.findIndex(t,-1e9,true),r=this.findIndex(n,1e9,false,s);s<r;s++)if(i(this.from[s]+e,this.to[s]+e,this.value[s])===false)return false}map(e,t){let n=[],i=[],s=[],r=-1,a=-1;for(let o=0;o<this.value.length;o++){let l,h,c=this.value[o],f=this.from[o]+e,u=this.to[o]+e;if(f==u){let e=t.mapPos(f,c.startSide,c.mapMode);if(e==null)continue;l=h=e;if(c.startSide!=c.endSide){h=t.mapPos(f,c.endSide);if(h<l)continue}}else{l=t.mapPos(f,c.startSide);h=t.mapPos(u,c.endSide);if(l>h||l==h&&c.startSide>0&&c.endSide<=0)continue}if(!((h-l||c.endSide-c.startSide)<0)){r<0&&(r=l);c.point&&(a=Math.max(a,h-l));n.push(c);i.push(l-r);s.push(h-r)}}return{mapped:n.length?new Chunk(i,s,n,a):null,pos:r}}}class RangeSet{constructor(e,t,n,i){this.chunkPos=e;this.chunk=t;this.nextLayer=n;this.maxPoint=i}static create(e,t,n,i){return new RangeSet(e,t,n,i)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:n=false,filterFrom:i=0,filterTo:s=this.length}=e;let r=e.filter;if(t.length==0&&!r)return this;n&&(t=t.slice().sort(cmpRange));if(this.isEmpty)return t.length?RangeSet.of(t):this;let a=new LayerCursor(this,null,-1).goto(0),o=0,l=[];let h=new RangeSetBuilder;while(a.value||o<t.length)if(o<t.length&&(a.from-t[o].from||a.startSide-t[o].value.startSide)>=0){let e=t[o++];h.addInner(e.from,e.to,e.value)||l.push(e)}else if(a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(o==t.length||this.chunkEnd(a.chunkIndex)<t[o].from)&&(!r||i>this.chunkEnd(a.chunkIndex)||s<this.chunkPos[a.chunkIndex])&&h.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex]))a.nextChunk();else{(!r||i>a.to||s<a.from||r(a.from,a.to,a.value))&&(h.addInner(a.from,a.to,a.value)||l.push(Range.create(a.from,a.to,a.value)));a.next()}return h.finishInner(this.nextLayer.isEmpty&&!l.length?RangeSet.empty:this.nextLayer.update({add:l,filter:r,filterFrom:i,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],n=[],i=-1;for(let s=0;s<this.chunk.length;s++){let r=this.chunkPos[s],a=this.chunk[s];let o=e.touchesRange(r,r+a.length);if(o===false){i=Math.max(i,a.maxPoint);t.push(a);n.push(e.mapPos(r))}else if(o===true){let{mapped:s,pos:o}=a.map(r,e);if(s){i=Math.max(i,s.maxPoint);t.push(s);n.push(o)}}}let s=this.nextLayer.map(e);return t.length==0?s:new RangeSet(n,t,s||RangeSet.empty,i)}between(e,t,n){if(!this.isEmpty){for(let i=0;i<this.chunk.length;i++){let s=this.chunkPos[i],r=this.chunk[i];if(t>=s&&e<=s+r.length&&r.between(s,e-s,t-s,n)===false)return}this.nextLayer.between(e,t,n)}}iter(e=0){return HeapCursor.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return HeapCursor.from(e).goto(t)}static compare(e,t,n,i,s=-1){let r=e.filter((e=>e.maxPoint>0||!e.isEmpty&&e.maxPoint>=s));let a=t.filter((e=>e.maxPoint>0||!e.isEmpty&&e.maxPoint>=s));let o=findSharedChunks(r,a,n);let l=new SpanCursor(r,o,s);let h=new SpanCursor(a,o,s);n.iterGaps(((e,t,n)=>compare(l,e,h,t,n,i)));n.empty&&n.length==0&&compare(l,0,h,0,0,i)}static eq(e,t,n=0,i){i==null&&(i=999999999);let s=e.filter((e=>!e.isEmpty&&t.indexOf(e)<0));let r=t.filter((t=>!t.isEmpty&&e.indexOf(t)<0));if(s.length!=r.length)return false;if(!s.length)return true;let a=findSharedChunks(s,r);let o=new SpanCursor(s,a,0).goto(n),l=new SpanCursor(r,a,0).goto(n);for(;;){if(o.to!=l.to||!sameValues(o.active,l.active)||o.point&&(!l.point||!o.point.eq(l.point)))return false;if(o.to>i)return true;o.next();l.next()}}static spans(e,t,n,i,s=-1){let r=new SpanCursor(e,null,s).goto(t),a=t;let o=r.openStart;for(;;){let e=Math.min(r.to,n);if(r.point){let n=r.activeForPoint(r.to);let s=r.pointFrom<t?n.length+1:r.point.startSide<0?n.length:Math.min(n.length,o);i.point(a,e,r.point,n,s,r.pointRank);o=Math.min(r.openEnd(e),n.length)}else if(e>a){i.span(a,e,r.active,o);o=r.openEnd(e)}if(r.to>n)return o+(r.point&&r.to>n?1:0);a=r.to;r.next()}}static of(e,t=false){let n=new RangeSetBuilder;for(let i of e instanceof Range?[e]:t?lazySort(e):e)n.add(i.from,i.to,i.value);return n.finish()}static join(e){if(!e.length)return RangeSet.empty;let t=e[e.length-1];for(let n=e.length-2;n>=0;n--)for(let i=e[n];i!=RangeSet.empty;i=i.nextLayer)t=new RangeSet(i.chunkPos,i.chunk,t,Math.max(i.maxPoint,t.maxPoint));return t}}RangeSet.empty=new RangeSet([],[],null,-1);function lazySort(e){if(e.length>1)for(let t=e[0],n=1;n<e.length;n++){let i=e[n];if(cmpRange(t,i)>0)return e.slice().sort(cmpRange);t=i}return e}RangeSet.empty.nextLayer=RangeSet.empty;class RangeSetBuilder{finishChunk(e){this.chunks.push(new Chunk(this.from,this.to,this.value,this.maxPoint));this.chunkPos.push(this.chunkStart);this.chunkStart=-1;this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint);this.maxPoint=-1;if(e){this.from=[];this.to=[];this.value=[]}}constructor(){this.chunks=[];this.chunkPos=[];this.chunkStart=-1;this.last=null;this.lastFrom=-1e9;this.lastTo=-1e9;this.from=[];this.to=[];this.value=[];this.maxPoint=-1;this.setMaxPoint=-1;this.nextLayer=null}add(e,t,n){this.addInner(e,t,n)||(this.nextLayer||(this.nextLayer=new RangeSetBuilder)).add(e,t,n)}addInner(e,t,n){let i=e-this.lastTo||n.startSide-this.last.endSide;if(i<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");if(i<0)return false;this.from.length==250&&this.finishChunk(true);this.chunkStart<0&&(this.chunkStart=e);this.from.push(e-this.chunkStart);this.to.push(t-this.chunkStart);this.last=n;this.lastFrom=e;this.lastTo=t;this.value.push(n);n.point&&(this.maxPoint=Math.max(this.maxPoint,t-e));return true}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return false;this.from.length&&this.finishChunk(true);this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint);this.chunks.push(t);this.chunkPos.push(e);let n=t.value.length-1;this.last=t.value[n];this.lastFrom=t.from[n]+e;this.lastTo=t.to[n]+e;return true}finish(){return this.finishInner(RangeSet.empty)}finishInner(e){this.from.length&&this.finishChunk(false);if(this.chunks.length==0)return e;let t=RangeSet.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);this.from=null;return t}}function findSharedChunks(e,t,n){let i=new Map;for(let t of e)for(let e=0;e<t.chunk.length;e++)t.chunk[e].maxPoint<=0&&i.set(t.chunk[e],t.chunkPos[e]);let s=new Set;for(let e of t)for(let t=0;t<e.chunk.length;t++){let r=i.get(e.chunk[t]);r==null||(n?n.mapPos(r):r)!=e.chunkPos[t]||(n===null||n===void 0?void 0:n.touchesRange(r,r+e.chunk[t].length))||s.add(e.chunk[t])}return s}class LayerCursor{constructor(e,t,n,i=0){this.layer=e;this.skip=t;this.minPoint=n;this.rank=i}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,t=-1e9){this.chunkIndex=this.rangeIndex=0;this.gotoInner(e,t,false);return this}gotoInner(e,t,n){while(this.chunkIndex<this.layer.chunk.length){let t=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(t)||this.layer.chunkEnd(this.chunkIndex)<e||t.maxPoint<this.minPoint))break;this.chunkIndex++;n=false}if(this.chunkIndex<this.layer.chunk.length){let i=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,true);(!n||this.rangeIndex<i)&&this.setRangeIndex(i)}this.next()}forward(e,t){(this.to-e||this.endSide-t)<0&&this.gotoInner(e,t,true)}next(){for(;;){if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9;this.value=null;break}{let e=this.layer.chunkPos[this.chunkIndex],t=this.layer.chunk[this.chunkIndex];let n=e+t.from[this.rangeIndex];this.from=n;this.to=e+t.to[this.rangeIndex];this.value=t.value[this.rangeIndex];this.setRangeIndex(this.rangeIndex+1);if(this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){this.chunkIndex++;if(this.skip)while(this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]))this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++;this.rangeIndex=0;this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}}class HeapCursor{constructor(e){this.heap=e}static from(e,t=null,n=-1){let i=[];for(let s=0;s<e.length;s++)for(let r=e[s];!r.isEmpty;r=r.nextLayer)r.maxPoint>=n&&i.push(new LayerCursor(r,t,n,s));return i.length==1?i[0]:new HeapCursor(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let n of this.heap)n.goto(e,t);for(let e=this.heap.length>>1;e>=0;e--)heapBubble(this.heap,e);this.next();return this}forward(e,t){for(let n of this.heap)n.forward(e,t);for(let e=this.heap.length>>1;e>=0;e--)heapBubble(this.heap,e);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0){this.from=this.to=1e9;this.value=null;this.rank=-1}else{let e=this.heap[0];this.from=e.from;this.to=e.to;this.value=e.value;this.rank=e.rank;e.value&&e.next();heapBubble(this.heap,0)}}}function heapBubble(e,t){for(let n=e[t];;){let i=1+(t<<1);if(i>=e.length)break;let s=e[i];if(i+1<e.length&&s.compare(e[i+1])>=0){s=e[i+1];i++}if(n.compare(s)<0)break;e[i]=n;e[t]=s;t=i}}class SpanCursor{constructor(e,t,n){this.minPoint=n;this.active=[];this.activeTo=[];this.activeRank=[];this.minActive=-1;this.point=null;this.pointFrom=0;this.pointRank=0;this.to=-1e9;this.endSide=0;this.openStart=-1;this.cursor=HeapCursor.from(e,t,n)}goto(e,t=-1e9){this.cursor.goto(e,t);this.active.length=this.activeTo.length=this.activeRank.length=0;this.minActive=-1;this.to=e;this.endSide=t;this.openStart=-1;this.next();return this}forward(e,t){while(this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){remove(this.active,e);remove(this.activeTo,e);remove(this.activeRank,e);this.minActive=findMinIndex(this.active,this.activeTo)}addActive(e){let t=0,{value:n,to:i,rank:s}=this.cursor;while(t<this.activeRank.length&&(s-this.activeRank[t]||i-this.activeTo[t])>0)t++;insert(this.active,t,n);insert(this.activeTo,t,i);insert(this.activeRank,t,s);e&&insert(e,t,this.cursor.from);this.minActive=findMinIndex(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let i=this.minActive;if(i>-1&&(this.activeTo[i]-this.cursor.from||this.active[i].endSide-this.cursor.startSide)<0){if(this.activeTo[i]>e){this.to=this.activeTo[i];this.endSide=this.active[i].endSide;break}this.removeActive(i);n&&remove(n,i)}else{if(!this.cursor.value){this.to=this.endSide=1e9;break}if(this.cursor.from>e){this.to=this.cursor.from;this.endSide=this.cursor.startSide;break}{let e=this.cursor.value;if(e.point){if(!(t&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)){this.point=e;this.pointFrom=this.cursor.from;this.pointRank=this.cursor.rank;this.to=this.cursor.to;this.endSide=e.endSide;this.cursor.next();this.forward(this.to,this.endSide);break}this.cursor.next()}else{this.addActive(n);this.cursor.next()}}}}if(n){this.openStart=0;for(let t=n.length-1;t>=0&&n[t]<e;t--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let t=[];for(let n=this.active.length-1;n>=0;n--){if(this.activeRank[n]<this.pointRank)break;(this.activeTo[n]>e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&t.push(this.active[n])}return t.reverse()}openEnd(e){let t=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)t++;return t}}function compare(e,t,n,i,s,r){e.goto(t);n.goto(i);let a=i+s;let o=i,l=i-t;for(;;){let t=e.to+l-n.to,i=t||e.endSide-n.endSide;let s=i<0?e.to+l:n.to,h=Math.min(s,a);e.point||n.point?e.point&&n.point&&(e.point==n.point||e.point.eq(n.point))&&sameValues(e.activeForPoint(e.to),n.activeForPoint(n.to))||r.comparePoint(o,h,e.point,n.point):h>o&&!sameValues(e.active,n.active)&&r.compareRange(o,h,e.active,n.active);if(s>a)break;(t||e.openEnd!=n.openEnd)&&r.boundChange&&r.boundChange(s);o=s;i<=0&&e.next();i>=0&&n.next()}}function sameValues(e,t){if(e.length!=t.length)return false;for(let n=0;n<e.length;n++)if(e[n]!=t[n]&&!e[n].eq(t[n]))return false;return true}function remove(e,t){for(let n=t,i=e.length-1;n<i;n++)e[n]=e[n+1];e.pop()}function insert(e,t,n){for(let n=e.length-1;n>=t;n--)e[n+1]=e[n];e[t]=n}function findMinIndex(e,t){let n=-1,i=1e9;for(let s=0;s<t.length;s++)if((t[s]-i||e[s].endSide-e[n].endSide)<0){n=s;i=t[s]}return n}function countColumn(e,t,n=e.length){let i=0;for(let s=0;s<n&&s<e.length;)if(e.charCodeAt(s)==9){i+=t-i%t;s++}else{i++;s=findClusterBreak(e,s)}return i}function findColumn(e,t,n,i){for(let i=0,s=0;;){if(s>=t)return i;if(i==e.length)break;s+=e.charCodeAt(i)==9?n-s%n:1;i=findClusterBreak(e,i)}return i===true?-1:e.length}export{Annotation,AnnotationType,ChangeDesc,ChangeSet,p as CharCategory,Compartment,EditorSelection,EditorState,Facet,Line,n as MapMode,a as Prec,Range,RangeSet,RangeSetBuilder,RangeValue,SelectionRange,StateEffect,StateEffectType,StateField,Text,Transaction,codePointAt,codePointSize,combineConfig,countColumn,findClusterBreak,findColumn,fromCodePoint};
4
+