nuxt-ui-tools 1.12.0 → 1.13.0

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 (321) hide show
  1. package/README.md +11 -5
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +46 -0
  4. package/dist/runtime/dashboard/components/dashboard-stat.d.vue.ts +1 -1
  5. package/dist/runtime/dashboard/components/dashboard-stat.vue.d.ts +1 -1
  6. package/dist/runtime/file-preview/components/shell/file-preview-stage.d.vue.ts +2 -2
  7. package/dist/runtime/file-preview/components/shell/file-preview-stage.vue.d.ts +2 -2
  8. package/dist/runtime/i18n/locales/en.js +251 -130
  9. package/dist/runtime/i18n/locales/fr.js +251 -130
  10. package/dist/runtime/i18n/types.d.ts +241 -119
  11. package/dist/runtime/shared/types/remote-options.d.ts +11 -0
  12. package/dist/runtime/shared/utils/define-remote-options.js +6 -0
  13. package/dist/runtime/shared/utils/file.d.ts +1 -1
  14. package/dist/runtime/spreadsheet/components/{steps/review/spreadsheet-review-overflow-alert.d.vue.ts → internal/spreadsheet-import-cell-editor.d.vue.ts} +8 -5
  15. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-cell-editor.vue +73 -0
  16. package/dist/runtime/spreadsheet/components/{steps/review/spreadsheet-review-overflow-alert.vue.d.ts → internal/spreadsheet-import-cell-editor.vue.d.ts} +8 -5
  17. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.d.vue.ts +17 -0
  18. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.vue +98 -0
  19. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.vue.d.ts +17 -0
  20. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.d.vue.ts +17 -0
  21. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.vue +20 -0
  22. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.vue.d.ts +17 -0
  23. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.d.vue.ts +10 -0
  24. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.vue +34 -0
  25. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.vue.d.ts +10 -0
  26. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.d.vue.ts +13 -0
  27. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.vue +113 -0
  28. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.vue.d.ts +13 -0
  29. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.d.vue.ts +35 -0
  30. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.vue +154 -0
  31. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.vue.d.ts +35 -0
  32. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.d.vue.ts +23 -0
  33. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.vue +83 -0
  34. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.vue.d.ts +23 -0
  35. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.d.vue.ts +19 -0
  36. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.vue +45 -0
  37. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.vue.d.ts +19 -0
  38. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-object-preview-table.d.vue.ts → parts/spreadsheet-import-export-button.d.vue.ts} +3 -2
  39. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-export-button.vue +34 -0
  40. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-file-bar.vue.d.ts → parts/spreadsheet-import-export-button.vue.d.ts} +3 -4
  41. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.d.vue.ts +17 -0
  42. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.vue +49 -0
  43. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.vue.d.ts +17 -0
  44. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.d.vue.ts +18 -0
  45. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.vue +101 -0
  46. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.vue.d.ts +18 -0
  47. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.d.vue.ts +22 -0
  48. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.vue +276 -0
  49. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.vue.d.ts +22 -0
  50. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.d.vue.ts +11 -0
  51. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.vue +164 -0
  52. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.vue.d.ts +11 -0
  53. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-value-preview.d.vue.ts → parts/spreadsheet-import-stat.d.vue.ts} +7 -4
  54. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stat.vue +30 -0
  55. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-value-preview.vue.d.ts → parts/spreadsheet-import-stat.vue.d.ts} +7 -4
  56. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.d.vue.ts +26 -0
  57. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.vue +55 -0
  58. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.vue.d.ts +26 -0
  59. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-object-preview-table.vue.d.ts → parts/spreadsheet-import-submit-button.d.vue.ts} +3 -2
  60. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-submit-button.vue +27 -0
  61. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-submit-button.vue.d.ts +8 -0
  62. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.d.vue.ts +16 -0
  63. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.vue +51 -0
  64. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.vue.d.ts +16 -0
  65. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-file-bar.d.vue.ts → parts/spreadsheet-import-table-toolbar.d.vue.ts} +2 -4
  66. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table-toolbar.vue +217 -0
  67. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-raw-preview-table.d.vue.ts → parts/spreadsheet-import-table-toolbar.vue.d.ts} +2 -2
  68. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.d.vue.ts +33 -0
  69. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.vue +302 -0
  70. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.vue.d.ts +33 -0
  71. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-sidebar.d.vue.ts → parts/spreadsheet-import-template-button.d.vue.ts} +5 -4
  72. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-template-button.vue +31 -0
  73. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-sidebar.vue.d.ts → parts/spreadsheet-import-template-button.vue.d.ts} +5 -4
  74. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.d.vue.ts +27 -0
  75. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.vue +162 -0
  76. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.vue.d.ts +27 -0
  77. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.d.vue.ts +24 -0
  78. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.vue +23 -0
  79. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.vue.d.ts +24 -0
  80. package/dist/runtime/spreadsheet/components/spreadsheet-import.d.vue.ts +21 -6
  81. package/dist/runtime/spreadsheet/components/spreadsheet-import.vue +46 -262
  82. package/dist/runtime/spreadsheet/components/spreadsheet-import.vue.d.ts +21 -6
  83. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-header.d.vue.ts → steps/spreadsheet-import-step-nav.d.vue.ts} +6 -2
  84. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step-nav.vue +116 -0
  85. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-header.vue.d.ts → steps/spreadsheet-import-step-nav.vue.d.ts} +6 -2
  86. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.d.vue.ts +26 -0
  87. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.vue +106 -0
  88. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.vue.d.ts +26 -0
  89. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.d.vue.ts +15 -0
  90. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.vue +131 -0
  91. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.vue.d.ts +15 -0
  92. package/dist/runtime/spreadsheet/composables/index.d.ts +2 -0
  93. package/dist/runtime/spreadsheet/composables/index.js +2 -0
  94. package/dist/runtime/spreadsheet/composables/use-spreadsheet-answers.d.ts +8 -0
  95. package/dist/runtime/spreadsheet/composables/use-spreadsheet-answers.js +19 -0
  96. package/dist/runtime/spreadsheet/composables/use-spreadsheet-columns.d.ts +23 -0
  97. package/dist/runtime/spreadsheet/composables/use-spreadsheet-columns.js +75 -0
  98. package/dist/runtime/spreadsheet/composables/use-spreadsheet-context.d.ts +8 -45
  99. package/dist/runtime/spreadsheet/composables/use-spreadsheet-context.js +28 -32
  100. package/dist/runtime/spreadsheet/composables/use-spreadsheet-edits.d.ts +11 -0
  101. package/dist/runtime/spreadsheet/composables/use-spreadsheet-edits.js +25 -0
  102. package/dist/runtime/spreadsheet/composables/use-spreadsheet-fields.d.ts +16 -0
  103. package/dist/runtime/spreadsheet/composables/use-spreadsheet-fields.js +20 -0
  104. package/dist/runtime/spreadsheet/composables/use-spreadsheet-file.d.ts +14 -0
  105. package/dist/runtime/spreadsheet/composables/use-spreadsheet-file.js +44 -0
  106. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import-context.d.ts +12 -0
  107. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import-context.js +22 -0
  108. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import.d.ts +18 -7
  109. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import.js +340 -109
  110. package/dist/runtime/spreadsheet/composables/use-spreadsheet-layout.d.ts +36 -0
  111. package/dist/runtime/spreadsheet/composables/use-spreadsheet-layout.js +95 -0
  112. package/dist/runtime/spreadsheet/composables/use-spreadsheet-options.d.ts +24 -0
  113. package/dist/runtime/spreadsheet/composables/use-spreadsheet-options.js +159 -0
  114. package/dist/runtime/spreadsheet/composables/use-spreadsheet-queries.d.ts +14 -0
  115. package/dist/runtime/spreadsheet/composables/use-spreadsheet-queries.js +11 -0
  116. package/dist/runtime/spreadsheet/composables/use-spreadsheet-review.d.ts +37 -169
  117. package/dist/runtime/spreadsheet/composables/use-spreadsheet-review.js +148 -408
  118. package/dist/runtime/spreadsheet/composables/use-spreadsheet-rows.d.ts +48 -26
  119. package/dist/runtime/spreadsheet/composables/use-spreadsheet-rows.js +334 -21
  120. package/dist/runtime/spreadsheet/composables/use-spreadsheet-steps.d.ts +33 -0
  121. package/dist/runtime/spreadsheet/composables/use-spreadsheet-steps.js +126 -0
  122. package/dist/runtime/spreadsheet/composables/use-spreadsheet-submit.d.ts +37 -0
  123. package/dist/runtime/spreadsheet/composables/use-spreadsheet-submit.js +136 -0
  124. package/dist/runtime/spreadsheet/composables/use-spreadsheet-values.d.ts +27 -0
  125. package/dist/runtime/spreadsheet/composables/use-spreadsheet-values.js +121 -0
  126. package/dist/runtime/spreadsheet/index.d.ts +0 -1
  127. package/dist/runtime/spreadsheet/index.js +0 -1
  128. package/dist/runtime/spreadsheet/schema/builder.d.ts +8 -0
  129. package/dist/runtime/spreadsheet/schema/builder.js +31 -0
  130. package/dist/runtime/spreadsheet/schema/index.d.ts +24 -32
  131. package/dist/runtime/spreadsheet/schema/index.js +4 -21
  132. package/dist/runtime/spreadsheet/types/columns.d.ts +252 -273
  133. package/dist/runtime/spreadsheet/types/fields.d.ts +64 -0
  134. package/dist/runtime/spreadsheet/types/importer.d.ts +308 -0
  135. package/dist/runtime/spreadsheet/types/index.d.ts +6 -10
  136. package/dist/runtime/spreadsheet/types/options.d.ts +47 -9
  137. package/dist/runtime/spreadsheet/types/rows.d.ts +57 -48
  138. package/dist/runtime/spreadsheet/types/schema.d.ts +162 -76
  139. package/dist/runtime/spreadsheet/types/shared.d.ts +19 -21
  140. package/dist/runtime/spreadsheet/types/source.d.ts +39 -15
  141. package/dist/runtime/spreadsheet/types/steps.d.ts +76 -0
  142. package/dist/runtime/spreadsheet/types/validation.d.ts +49 -69
  143. package/dist/runtime/spreadsheet/types/values.d.ts +77 -0
  144. package/dist/runtime/spreadsheet/utils/download.d.ts +2 -0
  145. package/dist/runtime/spreadsheet/utils/download.js +8 -0
  146. package/dist/runtime/spreadsheet/utils/export.d.ts +26 -0
  147. package/dist/runtime/spreadsheet/utils/export.js +50 -0
  148. package/dist/runtime/spreadsheet/utils/fields.d.ts +26 -0
  149. package/dist/runtime/spreadsheet/utils/fields.js +169 -0
  150. package/dist/runtime/spreadsheet/utils/guards.d.ts +18 -0
  151. package/dist/runtime/spreadsheet/utils/guards.js +27 -0
  152. package/dist/runtime/spreadsheet/utils/headers.d.ts +15 -0
  153. package/dist/runtime/spreadsheet/utils/headers.js +36 -0
  154. package/dist/runtime/spreadsheet/utils/identity.d.ts +24 -0
  155. package/dist/runtime/spreadsheet/utils/identity.js +57 -0
  156. package/dist/runtime/spreadsheet/utils/index.d.ts +15 -6
  157. package/dist/runtime/spreadsheet/utils/index.js +15 -6
  158. package/dist/runtime/spreadsheet/utils/layout.d.ts +12 -0
  159. package/dist/runtime/spreadsheet/utils/layout.js +37 -0
  160. package/dist/runtime/spreadsheet/utils/options.d.ts +31 -10
  161. package/dist/runtime/spreadsheet/utils/options.js +58 -30
  162. package/dist/runtime/spreadsheet/utils/parse.d.ts +6 -0
  163. package/dist/runtime/spreadsheet/utils/parse.js +147 -0
  164. package/dist/runtime/spreadsheet/utils/paths.d.ts +4 -0
  165. package/dist/runtime/spreadsheet/utils/paths.js +29 -0
  166. package/dist/runtime/spreadsheet/utils/rows.d.ts +69 -0
  167. package/dist/runtime/spreadsheet/utils/rows.js +168 -0
  168. package/dist/runtime/spreadsheet/utils/rules.d.ts +4 -0
  169. package/dist/runtime/spreadsheet/utils/rules.js +95 -0
  170. package/dist/runtime/spreadsheet/utils/suggestions.d.ts +20 -0
  171. package/dist/runtime/spreadsheet/utils/suggestions.js +43 -0
  172. package/dist/runtime/spreadsheet/utils/text.d.ts +9 -0
  173. package/dist/runtime/spreadsheet/utils/text.js +11 -0
  174. package/dist/runtime/spreadsheet/utils/workbook.d.ts +13 -0
  175. package/dist/runtime/spreadsheet/utils/workbook.js +121 -0
  176. package/dist/runtime/table/components/filters/tags/boolean-filter-tag.d.vue.ts +2 -2
  177. package/dist/runtime/table/components/filters/tags/boolean-filter-tag.vue.d.ts +2 -2
  178. package/dist/runtime/table/components/filters/tags/date-filter-tag.d.vue.ts +2 -2
  179. package/dist/runtime/table/components/filters/tags/date-filter-tag.vue.d.ts +2 -2
  180. package/dist/runtime/table/components/filters/tags/number-filter-tag.d.vue.ts +2 -2
  181. package/dist/runtime/table/components/filters/tags/number-filter-tag.vue.d.ts +2 -2
  182. package/dist/runtime/table/components/filters/tags/option-filter-tag.d.vue.ts +2 -2
  183. package/dist/runtime/table/components/filters/tags/option-filter-tag.vue.d.ts +2 -2
  184. package/dist/runtime/table/components/filters/tags/text-filter-tag.d.vue.ts +2 -2
  185. package/dist/runtime/table/components/filters/tags/text-filter-tag.vue.d.ts +2 -2
  186. package/dist/runtime/table/components/table/table-cell-ellipsis.d.ts +1 -1
  187. package/dist/runtime/table/utils/data-list-ui.d.ts +1 -1
  188. package/package.json +18 -3
  189. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-file-bar.vue +0 -31
  190. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.d.vue.ts +0 -24
  191. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.vue +0 -69
  192. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.vue.d.ts +0 -24
  193. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-header.vue +0 -36
  194. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-sidebar.vue +0 -63
  195. package/dist/runtime/spreadsheet/components/shared/spreadsheet-object-preview-table.vue +0 -67
  196. package/dist/runtime/spreadsheet/components/shared/spreadsheet-raw-preview-table.vue +0 -41
  197. package/dist/runtime/spreadsheet/components/shared/spreadsheet-raw-preview-table.vue.d.ts +0 -7
  198. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.d.vue.ts +0 -10
  199. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.vue +0 -25
  200. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.vue.d.ts +0 -10
  201. package/dist/runtime/spreadsheet/components/shared/spreadsheet-value-preview.vue +0 -201
  202. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.d.vue.ts +0 -11
  203. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.vue +0 -38
  204. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.vue.d.ts +0 -11
  205. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.d.vue.ts +0 -45
  206. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.vue +0 -219
  207. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.vue.d.ts +0 -45
  208. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.d.vue.ts +0 -51
  209. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.vue +0 -166
  210. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.vue.d.ts +0 -51
  211. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.d.vue.ts +0 -11
  212. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.vue +0 -26
  213. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.vue.d.ts +0 -11
  214. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.d.vue.ts +0 -41
  215. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.vue +0 -392
  216. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.vue.d.ts +0 -41
  217. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-overflow-alert.vue +0 -43
  218. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.d.vue.ts +0 -15
  219. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.vue +0 -40
  220. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.vue.d.ts +0 -15
  221. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.d.vue.ts +0 -7
  222. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.vue +0 -137
  223. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.vue.d.ts +0 -7
  224. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.d.vue.ts +0 -7
  225. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.vue +0 -222
  226. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.vue.d.ts +0 -7
  227. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.d.vue.ts +0 -7
  228. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.vue +0 -191
  229. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.vue.d.ts +0 -7
  230. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.d.vue.ts +0 -7
  231. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.vue +0 -62
  232. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.vue.d.ts +0 -7
  233. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.d.vue.ts +0 -8
  234. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.vue +0 -81
  235. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.vue.d.ts +0 -8
  236. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.d.vue.ts +0 -15
  237. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.vue +0 -95
  238. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.vue.d.ts +0 -15
  239. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.d.vue.ts +0 -15
  240. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.vue +0 -56
  241. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.vue.d.ts +0 -15
  242. package/dist/runtime/spreadsheet/components/types.d.ts +0 -41
  243. package/dist/runtime/spreadsheet/composables/use-spreadsheet-column-matching.d.ts +0 -18
  244. package/dist/runtime/spreadsheet/composables/use-spreadsheet-column-matching.js +0 -62
  245. package/dist/runtime/spreadsheet/composables/use-spreadsheet-internals.d.ts +0 -629
  246. package/dist/runtime/spreadsheet/composables/use-spreadsheet-internals.js +0 -68
  247. package/dist/runtime/spreadsheet/composables/use-spreadsheet-references.d.ts +0 -1
  248. package/dist/runtime/spreadsheet/composables/use-spreadsheet-references.js +0 -3
  249. package/dist/runtime/spreadsheet/composables/use-spreadsheet-resolutions.d.ts +0 -40
  250. package/dist/runtime/spreadsheet/composables/use-spreadsheet-resolutions.js +0 -97
  251. package/dist/runtime/spreadsheet/composables/use-spreadsheet-row-state.d.ts +0 -24
  252. package/dist/runtime/spreadsheet/composables/use-spreadsheet-row-state.js +0 -74
  253. package/dist/runtime/spreadsheet/composables/use-spreadsheet-source.d.ts +0 -27
  254. package/dist/runtime/spreadsheet/composables/use-spreadsheet-source.js +0 -109
  255. package/dist/runtime/spreadsheet/composables/use-spreadsheet-view.d.ts +0 -15
  256. package/dist/runtime/spreadsheet/composables/use-spreadsheet-view.js +0 -109
  257. package/dist/runtime/spreadsheet/schema/normalize.d.ts +0 -73
  258. package/dist/runtime/spreadsheet/schema/normalize.js +0 -136
  259. package/dist/runtime/spreadsheet/types/context.d.ts +0 -9
  260. package/dist/runtime/spreadsheet/types/import.d.ts +0 -55
  261. package/dist/runtime/spreadsheet/types/inference.d.ts +0 -83
  262. package/dist/runtime/spreadsheet/types/normalized.d.ts +0 -50
  263. package/dist/runtime/spreadsheet/types/normalized.js +0 -0
  264. package/dist/runtime/spreadsheet/types/pipeline.d.ts +0 -7
  265. package/dist/runtime/spreadsheet/types/pipeline.js +0 -0
  266. package/dist/runtime/spreadsheet/types/reference-session.d.ts +0 -43
  267. package/dist/runtime/spreadsheet/types/reference-session.js +0 -0
  268. package/dist/runtime/spreadsheet/types/references.d.ts +0 -32
  269. package/dist/runtime/spreadsheet/types/references.js +0 -0
  270. package/dist/runtime/spreadsheet/types/resolution.d.ts +0 -43
  271. package/dist/runtime/spreadsheet/types/resolution.js +0 -0
  272. package/dist/runtime/spreadsheet/utils/builders/core.d.ts +0 -17
  273. package/dist/runtime/spreadsheet/utils/builders/core.js +0 -262
  274. package/dist/runtime/spreadsheet/utils/builders/index.d.ts +0 -1
  275. package/dist/runtime/spreadsheet/utils/builders/index.js +0 -1
  276. package/dist/runtime/spreadsheet/utils/context.d.ts +0 -20
  277. package/dist/runtime/spreadsheet/utils/context.js +0 -25
  278. package/dist/runtime/spreadsheet/utils/display.d.ts +0 -6
  279. package/dist/runtime/spreadsheet/utils/display.js +0 -26
  280. package/dist/runtime/spreadsheet/utils/object.d.ts +0 -9
  281. package/dist/runtime/spreadsheet/utils/object.js +0 -78
  282. package/dist/runtime/spreadsheet/utils/references/candidates.d.ts +0 -6
  283. package/dist/runtime/spreadsheet/utils/references/candidates.js +0 -28
  284. package/dist/runtime/spreadsheet/utils/references/core.d.ts +0 -3
  285. package/dist/runtime/spreadsheet/utils/references/core.js +0 -3
  286. package/dist/runtime/spreadsheet/utils/references/guards.d.ts +0 -4
  287. package/dist/runtime/spreadsheet/utils/references/guards.js +0 -28
  288. package/dist/runtime/spreadsheet/utils/references/index.d.ts +0 -1
  289. package/dist/runtime/spreadsheet/utils/references/index.js +0 -1
  290. package/dist/runtime/spreadsheet/utils/references/resolutions.d.ts +0 -17
  291. package/dist/runtime/spreadsheet/utils/references/resolutions.js +0 -172
  292. package/dist/runtime/spreadsheet/utils/references/shared.d.ts +0 -3
  293. package/dist/runtime/spreadsheet/utils/references/shared.js +0 -26
  294. package/dist/runtime/spreadsheet/utils/references/sources.d.ts +0 -9
  295. package/dist/runtime/spreadsheet/utils/references/sources.js +0 -38
  296. package/dist/runtime/spreadsheet/utils/rows/core.d.ts +0 -4
  297. package/dist/runtime/spreadsheet/utils/rows/core.js +0 -4
  298. package/dist/runtime/spreadsheet/utils/rows/headers.d.ts +0 -2
  299. package/dist/runtime/spreadsheet/utils/rows/headers.js +0 -9
  300. package/dist/runtime/spreadsheet/utils/rows/index.d.ts +0 -1
  301. package/dist/runtime/spreadsheet/utils/rows/index.js +0 -1
  302. package/dist/runtime/spreadsheet/utils/rows/matching.d.ts +0 -5
  303. package/dist/runtime/spreadsheet/utils/rows/matching.js +0 -209
  304. package/dist/runtime/spreadsheet/utils/rows/parsing.d.ts +0 -7
  305. package/dist/runtime/spreadsheet/utils/rows/parsing.js +0 -209
  306. package/dist/runtime/spreadsheet/utils/rows/shared.d.ts +0 -17
  307. package/dist/runtime/spreadsheet/utils/rows/shared.js +0 -309
  308. package/dist/runtime/spreadsheet/utils/rows/summary.d.ts +0 -2
  309. package/dist/runtime/spreadsheet/utils/rows/summary.js +0 -10
  310. package/dist/runtime/spreadsheet/utils/source/core.d.ts +0 -9
  311. package/dist/runtime/spreadsheet/utils/source/core.js +0 -65
  312. package/dist/runtime/spreadsheet/utils/source/index.d.ts +0 -1
  313. package/dist/runtime/spreadsheet/utils/source/index.js +0 -1
  314. package/dist/runtime/spreadsheet/utils/validation/core.d.ts +0 -16
  315. package/dist/runtime/spreadsheet/utils/validation/core.js +0 -211
  316. package/dist/runtime/spreadsheet/utils/validation/index.d.ts +0 -1
  317. package/dist/runtime/spreadsheet/utils/validation/index.js +0 -1
  318. /package/dist/runtime/spreadsheet/{components/types.js → types/fields.js} +0 -0
  319. /package/dist/runtime/spreadsheet/types/{context.js → importer.js} +0 -0
  320. /package/dist/runtime/spreadsheet/types/{import.js → steps.js} +0 -0
  321. /package/dist/runtime/spreadsheet/types/{inference.js → values.js} +0 -0
@@ -1,120 +1,351 @@
1
- import { computed, shallowRef, toValue, watch } from "vue";
2
- import { createSpreadsheetInternals } from "./use-spreadsheet-internals.js";
3
- function mapSpreadsheetParsedRows(rows) {
4
- return rows;
5
- }
6
- function mapSpreadsheetResolvedRows(rows) {
7
- return rows;
8
- }
9
- function mapSpreadsheetRowData(rows) {
10
- return rows.map((row) => row.data);
11
- }
12
- async function createSpreadsheetSubmitPayloads(params) {
13
- if (!params.schema.buildRow) {
14
- return params.rows.map((row) => row.data);
15
- }
16
- return Promise.all(
17
- params.rows.map(
18
- (row) => params.schema.buildRow({
19
- context: params.context,
20
- row: row.data
21
- })
22
- )
23
- );
24
- }
25
- export function useSpreadsheetImport(schema) {
26
- const resolvedSchema = computed(() => toValue(schema));
27
- const sourceRef = shallowRef(null);
28
- const fileNameRef = shallowRef();
29
- const internals = createSpreadsheetInternals({
30
- fileName: fileNameRef,
31
- rawSchema: resolvedSchema,
32
- source: sourceRef
1
+ import { computed, toValue, watch } from "vue";
2
+ import { useUiToolsLocale } from "#ui-tools/i18n";
3
+ import { createSpreadsheetTemplateWorkbook, suggestSpreadsheetColumns } from "../utils/index.js";
4
+ import { useSpreadsheetAnswers } from "./use-spreadsheet-answers.js";
5
+ import { useSpreadsheetColumns } from "./use-spreadsheet-columns.js";
6
+ import { useSpreadsheetContext } from "./use-spreadsheet-context.js";
7
+ import { useSpreadsheetEdits } from "./use-spreadsheet-edits.js";
8
+ import { useSpreadsheetFields } from "./use-spreadsheet-fields.js";
9
+ import { useSpreadsheetFile } from "./use-spreadsheet-file.js";
10
+ import { useSpreadsheetLayout } from "./use-spreadsheet-layout.js";
11
+ import { useSpreadsheetOptions } from "./use-spreadsheet-options.js";
12
+ import { useSpreadsheetReview } from "./use-spreadsheet-review.js";
13
+ import { useSpreadsheetRows } from "./use-spreadsheet-rows.js";
14
+ import { useSpreadsheetSubmit } from "./use-spreadsheet-submit.js";
15
+ import { useSpreadsheetValues } from "./use-spreadsheet-values.js";
16
+ export function useSpreadsheetImport(schemaInput, options = {}) {
17
+ const { t } = useUiToolsLocale();
18
+ const schema = computed(() => toValue(schemaInput));
19
+ const context = useSpreadsheetContext({ input: () => options.context });
20
+ const file = useSpreadsheetFile();
21
+ const edits = useSpreadsheetEdits();
22
+ const answers = useSpreadsheetAnswers();
23
+ const fields = useSpreadsheetFields({ context, schema, t });
24
+ const layout = useSpreadsheetLayout({ context, fields, file, schema });
25
+ const columns = useSpreadsheetColumns({ context, fields, layout });
26
+ const options$ = useSpreadsheetOptions({ columns, context, edits, fields, layout });
27
+ const rows = useSpreadsheetRows({
28
+ answers,
29
+ columns,
30
+ context,
31
+ edits,
32
+ fields,
33
+ layout,
34
+ options: options$,
35
+ schema,
36
+ t
33
37
  });
34
- const parsedRows = computed(
35
- () => mapSpreadsheetParsedRows(internals.rows.parsedRows.value)
36
- );
37
- const resolvedRows = computed(
38
- () => mapSpreadsheetResolvedRows(internals.resolutions.resolvedRows.value)
38
+ const values = useSpreadsheetValues({ answers, fields, options: options$, rows });
39
+ const review = useSpreadsheetReview({ layout, rows });
40
+ const submit = useSpreadsheetSubmit({
41
+ batchSize: options.submit?.batchSize,
42
+ context,
43
+ fields,
44
+ onSubmit: options.onSubmit,
45
+ rows,
46
+ schema,
47
+ t,
48
+ values
49
+ });
50
+ watch(file.workbook, () => {
51
+ edits.clear();
52
+ answers.clear();
53
+ columns.clear();
54
+ rows.reset();
55
+ submit.reset();
56
+ });
57
+ const suggestions = computed(() => {
58
+ const missing2 = new Set(
59
+ columns.states.value.filter((state) => state.status === "missing").map((state) => state.path)
60
+ );
61
+ if (!missing2.size)
62
+ return /* @__PURE__ */ new Map();
63
+ return suggestSpreadsheetColumns({
64
+ ctx: context.ctx.value,
65
+ fields: fields.columnFields.value.filter((field) => missing2.has(field.path)),
66
+ headers: columns.unusedHeaders.value,
67
+ options: options$.options.value,
68
+ raws: layout.dataRaws.value,
69
+ rows: layout.dataRows.value,
70
+ t
71
+ });
72
+ });
73
+ const fieldStates = computed(
74
+ () => columns.states.value.map((state) => ({
75
+ ...state,
76
+ suggestion: suggestions.value.get(state.path) ?? null
77
+ }))
39
78
  );
40
- const rowData = computed(
41
- () => mapSpreadsheetRowData(internals.resolutions.resolvedRows.value)
79
+ const missing = computed(() => fieldStates.value.filter((state) => state.status === "missing"));
80
+ const loading = computed(
81
+ () => context.loading.value || file.reading.value || options$.loading.value || rows.loading.value
42
82
  );
43
- const submitPayloads = computedAsyncPayloads({
44
- context: internals.context.contextData,
45
- rows: computed(() => internals.resolutions.resolvedRows.value),
46
- schema: resolvedSchema
83
+ const readiness = computed(() => {
84
+ const importable = rows.importable.value.length;
85
+ const openValues = values.open.value.length;
86
+ return {
87
+ canSubmit: Boolean(file.workbook.value) && !loading.value && !missing.value.length && !openValues && importable > 0,
88
+ importable,
89
+ invalidRows: rows.invalid.value.length,
90
+ loading: loading.value,
91
+ missingColumns: missing.value.length,
92
+ openValues
93
+ };
47
94
  });
48
- const status = computed(() => ({
49
- initialized: internals.source.status.value.initialized || internals.context.status.value.initialized || internals.rows.status.value.initialized,
50
- isLoadingContext: internals.context.status.value.isPending || internals.context.status.value.isFetching,
51
- isParsingRows: internals.rows.status.value.isParsing,
52
- isParsingSource: internals.source.status.value.isParsing,
53
- isReady: internals.source.status.value.isReady && internals.context.status.value.isReady && internals.rows.status.value.isReady
54
- }));
55
- function loadSource(params) {
56
- sourceRef.value = params.source;
57
- fileNameRef.value = params.fileName;
95
+ function ready() {
96
+ return new Promise((resolve) => {
97
+ const stop = watch(
98
+ () => !loading.value && (!file.workbook.value || fields.fields.value.length > 0 || !context.ready.value),
99
+ (settled) => {
100
+ if (!settled) return;
101
+ queueMicrotask(() => stop());
102
+ resolve();
103
+ },
104
+ { immediate: true }
105
+ );
106
+ });
58
107
  }
59
- function clearSource() {
60
- sourceRef.value = null;
61
- fileNameRef.value = void 0;
108
+ function template() {
109
+ return createSpreadsheetTemplateWorkbook({
110
+ fields: fields.fields.value,
111
+ guideHeaders: [
112
+ t("spreadsheet.template.column"),
113
+ t("spreadsheet.template.required"),
114
+ t("spreadsheet.template.allowed"),
115
+ t("spreadsheet.template.description")
116
+ ],
117
+ guideName: t("spreadsheet.template.guide"),
118
+ options: options$.options.value,
119
+ sheetName: t("spreadsheet.template.sheet"),
120
+ yes: t("spreadsheet.template.yes")
121
+ });
62
122
  }
63
- async function refresh() {
64
- await internals.source.refreshWorkbook();
65
- await internals.context.refreshContext();
66
- await internals.rows.refreshRows();
123
+ function reset() {
124
+ file.clear();
67
125
  }
68
- return {
69
- __internals: internals,
70
- activeSheet: internals.source.sheet,
71
- assignColumn: ({ headerIndex, columnKey }) => internals.rows.assignColumn(headerIndex, columnKey),
72
- clearColumnAssignment: (headerIndex) => internals.rows.clearColumnAssignment(headerIndex),
73
- clearReference: internals.resolutions.clearReference,
74
- clearSource,
75
- contextError: internals.context.error,
76
- headerCells: internals.rows.headerCells,
77
- headers: internals.source.headers,
78
- loadSource,
79
- parsedRows,
80
- referenceResolutions: computed(() => internals.resolutions.resolutions.value),
81
- refresh,
82
- resolvedRows,
83
- rowData,
84
- rowError: internals.rows.error,
85
- rowSummary: internals.rows.summary,
86
- rows: internals.source.rows,
87
- schema: resolvedSchema,
88
- selectReference: internals.resolutions.selectReference,
89
- selection: internals.source.selection,
90
- setHeaderRowIndex: internals.source.setHeaderRowIndex,
91
- setSheetName: internals.source.setSheetName,
92
- sourceError: internals.source.error,
93
- status,
94
- submitPayloads,
95
- unresolvedReferenceResolutions: computed(
96
- () => internals.resolutions.unresolvedResolutions.value
97
- ),
98
- workbook: internals.source.workbook
126
+ const contextModel = {
127
+ get ctx() {
128
+ return context.ctx.value;
129
+ },
130
+ get error() {
131
+ return context.error.value;
132
+ },
133
+ get loading() {
134
+ return context.loading.value;
135
+ },
136
+ get ready() {
137
+ return context.ready.value;
138
+ }
99
139
  };
100
- }
101
- function computedAsyncPayloads(params) {
102
- const payloads = shallowRef([]);
103
- async function refreshPayloads() {
104
- payloads.value = await createSpreadsheetSubmitPayloads({
105
- context: params.context.value,
106
- rows: params.rows.value,
107
- schema: params.schema.value
108
- });
109
- }
110
- watch(
111
- [params.schema, params.context, params.rows],
112
- () => {
113
- void refreshPayloads();
140
+ const fileModel = {
141
+ clear: file.clear,
142
+ get error() {
143
+ return file.error.value;
144
+ },
145
+ load: (source, name) => void file.load(source, name),
146
+ get loaded() {
147
+ return Boolean(file.workbook.value);
148
+ },
149
+ get name() {
150
+ return file.workbook.value?.name ?? "";
114
151
  },
115
- {
116
- immediate: true
152
+ paste: file.paste,
153
+ get reading() {
154
+ return file.reading.value;
155
+ },
156
+ get sheets() {
157
+ return file.sheets.value;
117
158
  }
118
- );
119
- return computed(() => payloads.value);
159
+ };
160
+ const layoutModel = {
161
+ get ambiguous() {
162
+ return layout.detection.value?.ambiguous ?? false;
163
+ },
164
+ get candidates() {
165
+ return layout.candidates.value;
166
+ },
167
+ get detected() {
168
+ return layout.detected.value;
169
+ },
170
+ get detection() {
171
+ return layout.detection.value;
172
+ },
173
+ get headerRow() {
174
+ return layout.selection.value.headerRow;
175
+ },
176
+ get headerRowNumber() {
177
+ return layout.sheet.value?.rowNumbers[layout.selection.value.headerRow] ?? layout.selection.value.headerRow + 1;
178
+ },
179
+ get headers() {
180
+ return layout.headers.value;
181
+ },
182
+ get preview() {
183
+ return layout.preview.value;
184
+ },
185
+ redetect: layout.redetect,
186
+ setHeaderRow: layout.setHeaderRow,
187
+ setSheet: layout.setSheet,
188
+ get sheet() {
189
+ return layout.selection.value.sheet;
190
+ }
191
+ };
192
+ const columnsModel = {
193
+ assign: columns.assign,
194
+ get fields() {
195
+ return fieldStates.value;
196
+ },
197
+ get groups() {
198
+ return fields.groups.value;
199
+ },
200
+ get headers() {
201
+ return layout.headers.value;
202
+ },
203
+ ignore: columns.ignore,
204
+ get missing() {
205
+ return missing.value;
206
+ },
207
+ reset: columns.reset,
208
+ get unusedHeaders() {
209
+ return columns.unusedHeaders.value;
210
+ }
211
+ };
212
+ const valuesModel = {
213
+ answer: values.answer,
214
+ choices: values.choices,
215
+ clear: values.clear,
216
+ get loading() {
217
+ return options$.loading.value;
218
+ },
219
+ get open() {
220
+ return values.open.value;
221
+ },
222
+ get questions() {
223
+ return values.questions.value;
224
+ },
225
+ get recognized() {
226
+ return values.recognized.value;
227
+ },
228
+ search: values.search
229
+ };
230
+ const rowsModel = {
231
+ get all() {
232
+ return rows.rows.value;
233
+ },
234
+ get byMode() {
235
+ return rows.byMode.value;
236
+ },
237
+ cell: rows.cell,
238
+ discard: rows.discard,
239
+ get discarded() {
240
+ return rows.discarded.value;
241
+ },
242
+ distinct: rows.distinct,
243
+ edit: rows.edit,
244
+ exportInvalid: () => rows.exportInvalid(t("spreadsheet.review.issuesColumn")),
245
+ get importable() {
246
+ return rows.importable.value;
247
+ },
248
+ get invalid() {
249
+ return rows.invalid.value;
250
+ },
251
+ issues: rows.issues,
252
+ get keyFields() {
253
+ return rows.keyFields.value;
254
+ },
255
+ get loading() {
256
+ return rows.loading.value;
257
+ },
258
+ restore: rows.restore,
259
+ revert: edits.revert,
260
+ row: (index) => rows.rows.value[index],
261
+ get valid() {
262
+ return rows.valid.value;
263
+ }
264
+ };
265
+ const reviewModel = {
266
+ clearSelection: review.clearSelection,
267
+ get fieldIssues() {
268
+ return review.fieldIssues.value;
269
+ },
270
+ inspect: review.inspect,
271
+ get inspected() {
272
+ return review.inspected.value;
273
+ },
274
+ get issue() {
275
+ return review.issue.value;
276
+ },
277
+ get issueTypes() {
278
+ return review.issueTypes.value;
279
+ },
280
+ get level() {
281
+ return review.level.value;
282
+ },
283
+ get mode() {
284
+ return review.mode.value;
285
+ },
286
+ next: review.next,
287
+ get position() {
288
+ return review.position.value;
289
+ },
290
+ previous: review.previous,
291
+ get search() {
292
+ return review.search.value;
293
+ },
294
+ select: review.select,
295
+ get selection() {
296
+ return review.selection.value;
297
+ },
298
+ setIssue: review.setIssue,
299
+ setLevel: review.setLevel,
300
+ setMode: review.setMode,
301
+ setSearch: review.setSearch,
302
+ setTab: review.setTab,
303
+ get tab() {
304
+ return review.tab.value;
305
+ },
306
+ get visible() {
307
+ return review.visible.value;
308
+ }
309
+ };
310
+ const submitModel = {
311
+ get error() {
312
+ return submit.error.value;
313
+ },
314
+ get imported() {
315
+ return submit.imported.value;
316
+ },
317
+ get progress() {
318
+ return submit.progress.value;
319
+ },
320
+ get rejected() {
321
+ return submit.rejected.value;
322
+ },
323
+ reset: submit.reset,
324
+ retryRejected: submit.retryRejected,
325
+ run: submit.run,
326
+ get status() {
327
+ return submit.status.value;
328
+ }
329
+ };
330
+ return {
331
+ columns: columnsModel,
332
+ context: contextModel,
333
+ file: fileModel,
334
+ get layout() {
335
+ return layoutModel;
336
+ },
337
+ get readiness() {
338
+ return readiness.value;
339
+ },
340
+ ready,
341
+ reset,
342
+ review: reviewModel,
343
+ rows: rowsModel,
344
+ get schema() {
345
+ return schema.value;
346
+ },
347
+ submit: submitModel,
348
+ template,
349
+ values: valuesModel
350
+ };
120
351
  }
@@ -0,0 +1,36 @@
1
+ import type { ComputedRef } from 'vue';
2
+ import type { SpreadsheetPreviewRow, SpreadsheetRuntimeSchema } from '../types/index.js';
3
+ import type { useSpreadsheetContext } from './use-spreadsheet-context.js';
4
+ import type { useSpreadsheetFields } from './use-spreadsheet-fields.js';
5
+ import type { useSpreadsheetFile } from './use-spreadsheet-file.js';
6
+ export interface UseSpreadsheetLayoutParams {
7
+ schema: ComputedRef<SpreadsheetRuntimeSchema>;
8
+ file: ReturnType<typeof useSpreadsheetFile>;
9
+ fields: ReturnType<typeof useSpreadsheetFields>;
10
+ context: ReturnType<typeof useSpreadsheetContext>;
11
+ }
12
+ /**
13
+ * The sheet and header row read. Detection runs on each new file and applies the schema's `sheet`
14
+ * and `headerRow`; the user can change both.
15
+ */
16
+ export declare function useSpreadsheetLayout(params: UseSpreadsheetLayoutParams): {
17
+ candidates: ComputedRef<readonly import("..").SpreadsheetHeaderRowCandidate[]>;
18
+ dataRaws: ComputedRef<(readonly unknown[] | undefined)[]>;
19
+ dataRowNumbers: ComputedRef<number[]>;
20
+ dataRows: ComputedRef<(readonly string[])[]>;
21
+ detected: ComputedRef<boolean>;
22
+ detection: ComputedRef<import("..").SpreadsheetLayoutDetection | null>;
23
+ headers: ComputedRef<import("..").SpreadsheetHeaderCell[]>;
24
+ preview: ComputedRef<SpreadsheetPreviewRow[]>;
25
+ redetect: () => void;
26
+ selection: import("vue").ShallowRef<{
27
+ sheet: string | null;
28
+ headerRow: number;
29
+ }, {
30
+ sheet: string | null;
31
+ headerRow: number;
32
+ }>;
33
+ setHeaderRow: (index: number) => void;
34
+ setSheet: (name: string) => void;
35
+ sheet: ComputedRef<import("..").SpreadsheetSheet | null>;
36
+ };
@@ -0,0 +1,95 @@
1
+ import { computed, shallowRef, watch } from "vue";
2
+ import { createSpreadsheetHeaderCells, detectSpreadsheetLayout } from "../utils/index.js";
3
+ export function useSpreadsheetLayout(params) {
4
+ const selection = shallowRef({
5
+ headerRow: 0,
6
+ sheet: null
7
+ });
8
+ const detection = computed(() => {
9
+ const workbook = params.file.workbook.value;
10
+ if (!workbook || !params.fields.columnFields.value.length) return null;
11
+ return detectSpreadsheetLayout({
12
+ ctx: params.context.ctx.value,
13
+ fields: params.fields.columnFields.value,
14
+ workbook
15
+ });
16
+ });
17
+ function detectedSelection() {
18
+ const workbook = params.file.workbook.value;
19
+ const definition = params.schema.value.file ?? {};
20
+ const best = detection.value?.best;
21
+ const sheetName = definition.sheet && definition.sheet !== "auto" ? definition.sheet : best?.sheet ?? workbook?.sheets[0]?.name ?? null;
22
+ const sheet2 = workbook?.sheets.find((entry) => entry.name === sheetName);
23
+ const layout = detection.value?.sheets.find((entry) => entry.name === sheetName);
24
+ const headerRow = typeof definition.headerRow === "number" ? Math.max(sheet2?.rowNumbers.indexOf(definition.headerRow) ?? -1, 0) : layout?.headerRow ?? 0;
25
+ return { headerRow, sheet: sheetName };
26
+ }
27
+ function redetect() {
28
+ selection.value = detectedSelection();
29
+ }
30
+ watch(
31
+ () => [params.file.workbook.value, detection.value !== null],
32
+ ([workbook], previous) => {
33
+ if (!workbook) {
34
+ selection.value = { headerRow: 0, sheet: null };
35
+ return;
36
+ }
37
+ if (previous?.[0] !== workbook || !previous[1]) redetect();
38
+ },
39
+ { immediate: true }
40
+ );
41
+ const sheet = computed(
42
+ () => params.file.workbook.value?.sheets.find((entry) => entry.name === selection.value.sheet) ?? null
43
+ );
44
+ const headers = computed(
45
+ () => createSpreadsheetHeaderCells(sheet.value?.rows[selection.value.headerRow] ?? [])
46
+ );
47
+ const dataRows = computed(() => sheet.value?.rows.slice(selection.value.headerRow + 1) ?? []);
48
+ const dataRaws = computed(() => sheet.value?.raws.slice(selection.value.headerRow + 1) ?? []);
49
+ const dataRowNumbers = computed(
50
+ () => sheet.value?.rowNumbers.slice(selection.value.headerRow + 1) ?? []
51
+ );
52
+ const candidates = computed(
53
+ () => detection.value?.sheets.find((entry) => entry.name === selection.value.sheet)?.candidates ?? []
54
+ );
55
+ const detected = computed(() => {
56
+ const expected = detectedSelection();
57
+ return Boolean(detection.value?.best) && expected.sheet === selection.value.sheet && expected.headerRow === selection.value.headerRow;
58
+ });
59
+ const preview = computed(() => {
60
+ const rows = sheet.value?.rows ?? [];
61
+ const numbers = sheet.value?.rowNumbers ?? [];
62
+ const header = selection.value.headerRow;
63
+ const start = Math.max(0, header - 2);
64
+ return rows.slice(start, header + 4).map((cells, offset) => {
65
+ const index = start + offset;
66
+ return {
67
+ cells,
68
+ kind: index < header ? "title" : index === header ? "header" : "data",
69
+ rowNumber: numbers[index] ?? index + 1
70
+ };
71
+ });
72
+ });
73
+ function setSheet(name) {
74
+ const layout = detection.value?.sheets.find((entry) => entry.name === name);
75
+ selection.value = { headerRow: layout?.headerRow ?? 0, sheet: name };
76
+ }
77
+ function setHeaderRow(index) {
78
+ selection.value = { ...selection.value, headerRow: index };
79
+ }
80
+ return {
81
+ candidates,
82
+ dataRaws,
83
+ dataRowNumbers,
84
+ dataRows,
85
+ detected,
86
+ detection,
87
+ headers,
88
+ preview,
89
+ redetect,
90
+ selection,
91
+ setHeaderRow,
92
+ setSheet,
93
+ sheet
94
+ };
95
+ }
@@ -0,0 +1,24 @@
1
+ import type { SpreadsheetField, SpreadsheetFieldOptions, SpreadsheetRecord, SpreadsheetResolvedOption } from '../types/index.js';
2
+ import type { SpreadsheetRowOptions } from '../utils/index.js';
3
+ import type { useSpreadsheetColumns } from './use-spreadsheet-columns.js';
4
+ import type { useSpreadsheetContext } from './use-spreadsheet-context.js';
5
+ import type { useSpreadsheetEdits } from './use-spreadsheet-edits.js';
6
+ import type { useSpreadsheetFields } from './use-spreadsheet-fields.js';
7
+ import type { useSpreadsheetLayout } from './use-spreadsheet-layout.js';
8
+ export interface UseSpreadsheetOptionsParams {
9
+ fields: ReturnType<typeof useSpreadsheetFields>;
10
+ columns: ReturnType<typeof useSpreadsheetColumns>;
11
+ layout: ReturnType<typeof useSpreadsheetLayout>;
12
+ edits: ReturnType<typeof useSpreadsheetEdits>;
13
+ context: ReturnType<typeof useSpreadsheetContext>;
14
+ }
15
+ /**
16
+ * Options of every select field: lists as they are, queries once loaded, and remote loaders
17
+ * resolved for the values the file holds, exactly.
18
+ */
19
+ export declare function useSpreadsheetOptions(params: UseSpreadsheetOptionsParams): {
20
+ loading: import("vue").ComputedRef<boolean>;
21
+ options: import("vue").ComputedRef<Map<string, SpreadsheetFieldOptions>>;
22
+ optionsOf: (field: SpreadsheetField, row: SpreadsheetRecord) => SpreadsheetRowOptions;
23
+ search: (path: string, text: string) => Promise<readonly SpreadsheetResolvedOption[]>;
24
+ };