@ng-atomic/common 18.12.0 → 18.13.0-preview-v19f.1

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 (333) hide show
  1. package/directives/molecules/column/column.molecule.d.ts +2 -1
  2. package/fesm2022/ng-atomic-common-directives-fallback-src.mjs +3 -3
  3. package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs +9 -8
  4. package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs.map +1 -1
  5. package/fesm2022/ng-atomic-common-directives-molecules-column.mjs +18 -12
  6. package/fesm2022/ng-atomic-common-directives-molecules-column.mjs.map +1 -1
  7. package/fesm2022/ng-atomic-common-directives-resize-column.mjs +6 -6
  8. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +3 -4
  9. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
  10. package/fesm2022/ng-atomic-common-interceptors-throttle.mjs +6 -6
  11. package/fesm2022/ng-atomic-common-interceptors-token.mjs +3 -3
  12. package/fesm2022/ng-atomic-common-interceptors.mjs +4 -4
  13. package/fesm2022/ng-atomic-common-pipes-actions.mjs +3 -3
  14. package/fesm2022/ng-atomic-common-pipes-auto-columns.mjs +3 -3
  15. package/fesm2022/ng-atomic-common-pipes-columns.mjs +3 -3
  16. package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs +3 -3
  17. package/fesm2022/ng-atomic-common-pipes-domain.mjs +3 -3
  18. package/fesm2022/ng-atomic-common-pipes-error.mjs +3 -3
  19. package/fesm2022/ng-atomic-common-pipes-expression.mjs +3 -3
  20. package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs +3 -3
  21. package/fesm2022/ng-atomic-common-pipes-index-length.mjs +3 -3
  22. package/fesm2022/ng-atomic-common-pipes-index.mjs +3 -3
  23. package/fesm2022/ng-atomic-common-pipes-keys.mjs +3 -3
  24. package/fesm2022/ng-atomic-common-pipes-map.mjs +3 -3
  25. package/fesm2022/ng-atomic-common-pipes-page.mjs +3 -3
  26. package/fesm2022/ng-atomic-common-pipes-pagination.mjs +4 -4
  27. package/fesm2022/ng-atomic-common-pipes-query.mjs +4 -4
  28. package/fesm2022/ng-atomic-common-pipes-resolve-columns.mjs +3 -3
  29. package/fesm2022/ng-atomic-common-pipes-secret.mjs +3 -3
  30. package/fesm2022/ng-atomic-common-pipes-select-id.mjs +3 -3
  31. package/fesm2022/ng-atomic-common-pipes-signal.mjs +3 -3
  32. package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +3 -3
  33. package/fesm2022/ng-atomic-common-pipes-sort-by.mjs +3 -3
  34. package/fesm2022/ng-atomic-common-pipes-sort.mjs +3 -3
  35. package/fesm2022/ng-atomic-common-pipes-style.mjs +3 -3
  36. package/fesm2022/ng-atomic-common-pipes-yen.mjs +3 -3
  37. package/fesm2022/ng-atomic-common-services-app.mjs +6 -6
  38. package/fesm2022/ng-atomic-common-services-auth.mjs +3 -3
  39. package/fesm2022/ng-atomic-common-services-breakpoint.mjs +3 -3
  40. package/fesm2022/ng-atomic-common-services-chips-manager.mjs +3 -3
  41. package/fesm2022/ng-atomic-common-services-csv.mjs +3 -3
  42. package/fesm2022/ng-atomic-common-services-fab.mjs +3 -3
  43. package/fesm2022/ng-atomic-common-services-form-_index.mjs +3 -3
  44. package/fesm2022/ng-atomic-common-services-form-columns.mjs +3 -3
  45. package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +3 -3
  46. package/fesm2022/ng-atomic-common-services-form-pagination.mjs +3 -3
  47. package/fesm2022/ng-atomic-common-services-form-sort.mjs +3 -3
  48. package/fesm2022/ng-atomic-common-services-initializer.mjs +3 -3
  49. package/fesm2022/ng-atomic-common-services-language.mjs +3 -3
  50. package/fesm2022/ng-atomic-common-services-loading.mjs +6 -6
  51. package/fesm2022/ng-atomic-common-services-navigation-history.mjs +3 -3
  52. package/fesm2022/ng-atomic-common-services-query-resolver.mjs +6 -6
  53. package/fesm2022/ng-atomic-common-services-root-property.mjs +14 -15
  54. package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
  55. package/fesm2022/ng-atomic-common-services-router.mjs +3 -3
  56. package/fesm2022/ng-atomic-common-services-secret.mjs +3 -3
  57. package/fesm2022/ng-atomic-common-services-sheets-actions.mjs +4 -4
  58. package/fesm2022/ng-atomic-common-services-sheets-actions.mjs.map +1 -1
  59. package/fesm2022/ng-atomic-common-services-sheets.mjs +7 -7
  60. package/fesm2022/ng-atomic-common-services-side-app.mjs +6 -6
  61. package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs +3 -3
  62. package/fesm2022/ng-atomic-common-services-snack-bar.mjs +7 -7
  63. package/fesm2022/ng-atomic-common-services-spreadsheet.mjs +31 -31
  64. package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -1
  65. package/fesm2022/ng-atomic-common-services-ui.mjs +5 -5
  66. package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
  67. package/fesm2022/ng-atomic-common-stores-entities.mjs +9 -9
  68. package/fesm2022/ng-atomic-common-stores-pagination.mjs +3 -3
  69. package/fesm2022/ng-atomic-common-stores-query.mjs +3 -3
  70. package/fesm2022/ng-atomic-common-stores-selection.mjs +3 -3
  71. package/fesm2022/ng-atomic-common-stores-sort.mjs +3 -3
  72. package/fesm2022/ng-atomic-common-utils.mjs +7 -7
  73. package/fesm2022/ng-atomic-common.mjs +11 -11
  74. package/package.json +54 -178
  75. package/pipes/index/index.pipe.d.ts +1 -1
  76. package/pipes/index-length/index-length.pipe.d.ts +1 -1
  77. package/services/spreadsheet/directives/grid-cell.directive.d.ts +3 -3
  78. package/services/ui/ui.helpers.d.ts +1 -1
  79. package/esm2022/common.module.mjs +0 -34
  80. package/esm2022/directives/fallback-src/fallback-src.directive.mjs +0 -25
  81. package/esm2022/directives/fallback-src/index.mjs +0 -2
  82. package/esm2022/directives/fallback-src/ng-atomic-common-directives-fallback-src.mjs +0 -5
  83. package/esm2022/directives/ios-safari-scroll-buggyfill/index.mjs +0 -3
  84. package/esm2022/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.mjs +0 -24
  85. package/esm2022/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.module.mjs +0 -24
  86. package/esm2022/directives/ios-safari-scroll-buggyfill/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs +0 -5
  87. package/esm2022/directives/molecules/column/column.molecule.mjs +0 -112
  88. package/esm2022/directives/molecules/column/index.mjs +0 -2
  89. package/esm2022/directives/molecules/column/ng-atomic-common-directives-molecules-column.mjs +0 -5
  90. package/esm2022/directives/resize-column/index.mjs +0 -2
  91. package/esm2022/directives/resize-column/ng-atomic-common-directives-resize-column.mjs +0 -5
  92. package/esm2022/directives/resize-column/resize-column.directive.mjs +0 -62
  93. package/esm2022/directives/resize-column/resize-handle.component.mjs +0 -13
  94. package/esm2022/index.mjs +0 -2
  95. package/esm2022/interceptors/authorization/authorization.interceptor.mjs +0 -39
  96. package/esm2022/interceptors/authorization/index.mjs +0 -2
  97. package/esm2022/interceptors/authorization/ng-atomic-common-interceptors-authorization.mjs +0 -5
  98. package/esm2022/interceptors/index.mjs +0 -2
  99. package/esm2022/interceptors/interceptors.module.mjs +0 -44
  100. package/esm2022/interceptors/ng-atomic-common-interceptors.mjs +0 -5
  101. package/esm2022/interceptors/throttle/index.mjs +0 -2
  102. package/esm2022/interceptors/throttle/ng-atomic-common-interceptors-throttle.mjs +0 -5
  103. package/esm2022/interceptors/throttle/throttle.interceptor.mjs +0 -63
  104. package/esm2022/interceptors/token/authorization.interceptor.mjs +0 -26
  105. package/esm2022/interceptors/token/index.mjs +0 -2
  106. package/esm2022/interceptors/token/ng-atomic-common-interceptors-token.mjs +0 -5
  107. package/esm2022/models/index.mjs +0 -2
  108. package/esm2022/models/menu-item.mjs +0 -2
  109. package/esm2022/models/ng-atomic-common-models.mjs +0 -5
  110. package/esm2022/ng-atomic-common.mjs +0 -5
  111. package/esm2022/pipes/actions/actions.pipe.mjs +0 -19
  112. package/esm2022/pipes/actions/index.mjs +0 -2
  113. package/esm2022/pipes/actions/ng-atomic-common-pipes-actions.mjs +0 -5
  114. package/esm2022/pipes/auto-columns/auto-columns.pipe.mjs +0 -20
  115. package/esm2022/pipes/auto-columns/index.mjs +0 -2
  116. package/esm2022/pipes/auto-columns/ng-atomic-common-pipes-auto-columns.mjs +0 -5
  117. package/esm2022/pipes/columns/columns.pipe.mjs +0 -18
  118. package/esm2022/pipes/columns/index.mjs +0 -2
  119. package/esm2022/pipes/columns/ng-atomic-common-pipes-columns.mjs +0 -5
  120. package/esm2022/pipes/data-accessor/data-accessor.pipe.mjs +0 -46
  121. package/esm2022/pipes/data-accessor/index.mjs +0 -2
  122. package/esm2022/pipes/data-accessor/ng-atomic-common-pipes-data-accessor.mjs +0 -5
  123. package/esm2022/pipes/domain/domain.pipe.mjs +0 -71
  124. package/esm2022/pipes/domain/index.mjs +0 -2
  125. package/esm2022/pipes/domain/ng-atomic-common-pipes-domain.mjs +0 -5
  126. package/esm2022/pipes/error/error.pipe.mjs +0 -46
  127. package/esm2022/pipes/error/index.mjs +0 -2
  128. package/esm2022/pipes/error/ng-atomic-common-pipes-error.mjs +0 -5
  129. package/esm2022/pipes/expression/expression.pipe.mjs +0 -18
  130. package/esm2022/pipes/expression/index.mjs +0 -2
  131. package/esm2022/pipes/expression/ng-atomic-common-pipes-expression.mjs +0 -5
  132. package/esm2022/pipes/grouped-by/grouped-by.pipe.mjs +0 -29
  133. package/esm2022/pipes/grouped-by/index.mjs +0 -2
  134. package/esm2022/pipes/grouped-by/ng-atomic-common-pipes-grouped-by.mjs +0 -5
  135. package/esm2022/pipes/index/index.mjs +0 -2
  136. package/esm2022/pipes/index/index.pipe.mjs +0 -29
  137. package/esm2022/pipes/index/ng-atomic-common-pipes-index.mjs +0 -5
  138. package/esm2022/pipes/index-length/index-length.pipe.mjs +0 -22
  139. package/esm2022/pipes/index-length/index.mjs +0 -2
  140. package/esm2022/pipes/index-length/ng-atomic-common-pipes-index-length.mjs +0 -5
  141. package/esm2022/pipes/keys/index.mjs +0 -2
  142. package/esm2022/pipes/keys/keys.pipe.mjs +0 -18
  143. package/esm2022/pipes/keys/ng-atomic-common-pipes-keys.mjs +0 -5
  144. package/esm2022/pipes/map/index.mjs +0 -2
  145. package/esm2022/pipes/map/map.pipe.mjs +0 -17
  146. package/esm2022/pipes/map/ng-atomic-common-pipes-map.mjs +0 -5
  147. package/esm2022/pipes/page/index.mjs +0 -2
  148. package/esm2022/pipes/page/ng-atomic-common-pipes-page.mjs +0 -5
  149. package/esm2022/pipes/page/page.pipe.mjs +0 -25
  150. package/esm2022/pipes/pagination/index.mjs +0 -2
  151. package/esm2022/pipes/pagination/ng-atomic-common-pipes-pagination.mjs +0 -5
  152. package/esm2022/pipes/pagination/pagination.pipe.mjs +0 -32
  153. package/esm2022/pipes/query/index.mjs +0 -2
  154. package/esm2022/pipes/query/ng-atomic-common-pipes-query.mjs +0 -5
  155. package/esm2022/pipes/query/query.pipe.mjs +0 -33
  156. package/esm2022/pipes/resolve-columns/index.mjs +0 -2
  157. package/esm2022/pipes/resolve-columns/ng-atomic-common-pipes-resolve-columns.mjs +0 -5
  158. package/esm2022/pipes/resolve-columns/resolve-columns.pipe.mjs +0 -24
  159. package/esm2022/pipes/secret/index.mjs +0 -2
  160. package/esm2022/pipes/secret/ng-atomic-common-pipes-secret.mjs +0 -5
  161. package/esm2022/pipes/secret/secret.pipe.mjs +0 -21
  162. package/esm2022/pipes/select-id/index.mjs +0 -2
  163. package/esm2022/pipes/select-id/ng-atomic-common-pipes-select-id.mjs +0 -5
  164. package/esm2022/pipes/select-id/select-id.pipe.mjs +0 -29
  165. package/esm2022/pipes/signal/index.mjs +0 -2
  166. package/esm2022/pipes/signal/ng-atomic-common-pipes-signal.mjs +0 -5
  167. package/esm2022/pipes/signal/signal.pipe.mjs +0 -23
  168. package/esm2022/pipes/smart-field/index.mjs +0 -2
  169. package/esm2022/pipes/smart-field/ng-atomic-common-pipes-smart-field.mjs +0 -5
  170. package/esm2022/pipes/smart-field/smart-field.pipe.mjs +0 -44
  171. package/esm2022/pipes/sort/index.mjs +0 -2
  172. package/esm2022/pipes/sort/ng-atomic-common-pipes-sort.mjs +0 -5
  173. package/esm2022/pipes/sort/sort.pipe.mjs +0 -14
  174. package/esm2022/pipes/sort-by/index.mjs +0 -2
  175. package/esm2022/pipes/sort-by/ng-atomic-common-pipes-sort-by.mjs +0 -5
  176. package/esm2022/pipes/sort-by/sort-by.pipe.mjs +0 -32
  177. package/esm2022/pipes/style/index.mjs +0 -2
  178. package/esm2022/pipes/style/ng-atomic-common-pipes-style.mjs +0 -5
  179. package/esm2022/pipes/style/style.pipe.mjs +0 -41
  180. package/esm2022/pipes/yen/index.mjs +0 -2
  181. package/esm2022/pipes/yen/ng-atomic-common-pipes-yen.mjs +0 -5
  182. package/esm2022/pipes/yen/yen.pipe.mjs +0 -20
  183. package/esm2022/services/app/app.service.mjs +0 -78
  184. package/esm2022/services/app/index.mjs +0 -2
  185. package/esm2022/services/app/ng-atomic-common-services-app.mjs +0 -5
  186. package/esm2022/services/auth/auth.service.mjs +0 -66
  187. package/esm2022/services/auth/index.mjs +0 -2
  188. package/esm2022/services/auth/ng-atomic-common-services-auth.mjs +0 -5
  189. package/esm2022/services/breakpoint/breakpoint.service.mjs +0 -57
  190. package/esm2022/services/breakpoint/index.mjs +0 -2
  191. package/esm2022/services/breakpoint/ng-atomic-common-services-breakpoint.mjs +0 -5
  192. package/esm2022/services/chips-manager/chips.manager.mjs +0 -29
  193. package/esm2022/services/chips-manager/index.mjs +0 -2
  194. package/esm2022/services/chips-manager/ng-atomic-common-services-chips-manager.mjs +0 -5
  195. package/esm2022/services/csv/csv.service.mjs +0 -25
  196. package/esm2022/services/csv/index.mjs +0 -2
  197. package/esm2022/services/csv/ng-atomic-common-services-csv.mjs +0 -5
  198. package/esm2022/services/fab/fab.service.mjs +0 -46
  199. package/esm2022/services/fab/index.mjs +0 -2
  200. package/esm2022/services/fab/ng-atomic-common-services-fab.mjs +0 -5
  201. package/esm2022/services/form/_index/index.mjs +0 -2
  202. package/esm2022/services/form/_index/index.service.mjs +0 -51
  203. package/esm2022/services/form/_index/ng-atomic-common-services-form-_index.mjs +0 -5
  204. package/esm2022/services/form/columns/columns.service.mjs +0 -145
  205. package/esm2022/services/form/columns/index.mjs +0 -2
  206. package/esm2022/services/form/columns/ng-atomic-common-services-form-columns.mjs +0 -5
  207. package/esm2022/services/form/form.service.mjs +0 -38
  208. package/esm2022/services/form/index.mjs +0 -2
  209. package/esm2022/services/form/json-schema/index.mjs +0 -2
  210. package/esm2022/services/form/json-schema/json-schema.mjs +0 -51
  211. package/esm2022/services/form/json-schema/json-schema.service.mjs +0 -178
  212. package/esm2022/services/form/json-schema/ng-atomic-common-services-form-json-schema.mjs +0 -5
  213. package/esm2022/services/form/ng-atomic-common-services-form.mjs +0 -5
  214. package/esm2022/services/form/pagination/index.mjs +0 -2
  215. package/esm2022/services/form/pagination/ng-atomic-common-services-form-pagination.mjs +0 -5
  216. package/esm2022/services/form/pagination/pagination.service.mjs +0 -24
  217. package/esm2022/services/form/sort/index.mjs +0 -2
  218. package/esm2022/services/form/sort/ng-atomic-common-services-form-sort.mjs +0 -5
  219. package/esm2022/services/form/sort/sort.service.mjs +0 -33
  220. package/esm2022/services/initializer/index.mjs +0 -2
  221. package/esm2022/services/initializer/initializer.service.mjs +0 -44
  222. package/esm2022/services/initializer/ng-atomic-common-services-initializer.mjs +0 -5
  223. package/esm2022/services/language/index.mjs +0 -2
  224. package/esm2022/services/language/language.service.mjs +0 -39
  225. package/esm2022/services/language/ng-atomic-common-services-language.mjs +0 -5
  226. package/esm2022/services/loading/index.mjs +0 -2
  227. package/esm2022/services/loading/loading.service.mjs +0 -62
  228. package/esm2022/services/loading/ng-atomic-common-services-loading.mjs +0 -5
  229. package/esm2022/services/navigation-history/index.mjs +0 -2
  230. package/esm2022/services/navigation-history/navigation-history.service.mjs +0 -50
  231. package/esm2022/services/navigation-history/ng-atomic-common-services-navigation-history.mjs +0 -5
  232. package/esm2022/services/query-resolver/index.mjs +0 -2
  233. package/esm2022/services/query-resolver/ng-atomic-common-services-query-resolver.mjs +0 -5
  234. package/esm2022/services/query-resolver/query-resolver.service.mjs +0 -94
  235. package/esm2022/services/root-property/index.mjs +0 -3
  236. package/esm2022/services/root-property/ng-atomic-common-services-root-property.mjs +0 -5
  237. package/esm2022/services/root-property/root-property.di.mjs +0 -15
  238. package/esm2022/services/root-property/root-property.service.mjs +0 -169
  239. package/esm2022/services/router/index.mjs +0 -2
  240. package/esm2022/services/router/ng-atomic-common-services-router.mjs +0 -5
  241. package/esm2022/services/router/router.service.mjs +0 -25
  242. package/esm2022/services/secret/index.mjs +0 -2
  243. package/esm2022/services/secret/ng-atomic-common-services-secret.mjs +0 -5
  244. package/esm2022/services/secret/secret.service.mjs +0 -16
  245. package/esm2022/services/sheets/actions/actions.sheet.mjs +0 -45
  246. package/esm2022/services/sheets/actions/index.mjs +0 -2
  247. package/esm2022/services/sheets/actions/ng-atomic-common-services-sheets-actions.mjs +0 -5
  248. package/esm2022/services/sheets/index.mjs +0 -3
  249. package/esm2022/services/sheets/ng-atomic-common-services-sheets.mjs +0 -5
  250. package/esm2022/services/sheets/sheets.module.mjs +0 -25
  251. package/esm2022/services/sheets/sheets.service.mjs +0 -22
  252. package/esm2022/services/side-app/index.mjs +0 -2
  253. package/esm2022/services/side-app/ng-atomic-common-services-side-app.mjs +0 -5
  254. package/esm2022/services/side-app/side-app.service.mjs +0 -55
  255. package/esm2022/services/side-nav-mode/index.mjs +0 -2
  256. package/esm2022/services/side-nav-mode/ng-atomic-common-services-side-nav-mode.mjs +0 -5
  257. package/esm2022/services/side-nav-mode/side-nav-mode.service.mjs +0 -27
  258. package/esm2022/services/snack-bar/index.mjs +0 -3
  259. package/esm2022/services/snack-bar/ng-atomic-common-services-snack-bar.mjs +0 -5
  260. package/esm2022/services/snack-bar/snack-bar.module.mjs +0 -22
  261. package/esm2022/services/snack-bar/snack-bar.service.mjs +0 -41
  262. package/esm2022/services/spreadsheet/directives/grid-cell.directive.mjs +0 -124
  263. package/esm2022/services/spreadsheet/directives/index.mjs +0 -2
  264. package/esm2022/services/spreadsheet/features/clipboard.service.mjs +0 -71
  265. package/esm2022/services/spreadsheet/features/data.service.mjs +0 -63
  266. package/esm2022/services/spreadsheet/features/editor.service.mjs +0 -65
  267. package/esm2022/services/spreadsheet/features/grid.service.mjs +0 -54
  268. package/esm2022/services/spreadsheet/features/index.mjs +0 -8
  269. package/esm2022/services/spreadsheet/features/navigation.service.mjs +0 -71
  270. package/esm2022/services/spreadsheet/features/protection.service.mjs +0 -25
  271. package/esm2022/services/spreadsheet/features/selection.service.mjs +0 -129
  272. package/esm2022/services/spreadsheet/index.mjs +0 -5
  273. package/esm2022/services/spreadsheet/models/cell.model.mjs +0 -2
  274. package/esm2022/services/spreadsheet/models/index.mjs +0 -2
  275. package/esm2022/services/spreadsheet/ng-atomic-common-services-spreadsheet.mjs +0 -5
  276. package/esm2022/services/spreadsheet/spreadsheet.service.mjs +0 -183
  277. package/esm2022/services/ui/index.mjs +0 -3
  278. package/esm2022/services/ui/ng-atomic-common-services-ui.mjs +0 -5
  279. package/esm2022/services/ui/ui.helpers.mjs +0 -241
  280. package/esm2022/services/ui/ui.service.mjs +0 -30
  281. package/esm2022/stores/entities/di.mjs +0 -64
  282. package/esm2022/stores/entities/entity-store-adapter.mjs +0 -34
  283. package/esm2022/stores/entities/entity-store-manager.mjs +0 -25
  284. package/esm2022/stores/entities/entity-store.mjs +0 -121
  285. package/esm2022/stores/entities/index.mjs +0 -7
  286. package/esm2022/stores/entities/ng-atomic-common-stores-entities.mjs +0 -5
  287. package/esm2022/stores/entities/proxy-id.service.mjs +0 -29
  288. package/esm2022/stores/entities/task-composer.mjs +0 -71
  289. package/esm2022/stores/entity/entity.store.mjs +0 -34
  290. package/esm2022/stores/entity/index.mjs +0 -2
  291. package/esm2022/stores/entity/ng-atomic-common-stores-entity.mjs +0 -5
  292. package/esm2022/stores/pagination/index.mjs +0 -2
  293. package/esm2022/stores/pagination/ng-atomic-common-stores-pagination.mjs +0 -5
  294. package/esm2022/stores/pagination/pagination.store.mjs +0 -23
  295. package/esm2022/stores/query/index.mjs +0 -2
  296. package/esm2022/stores/query/ng-atomic-common-stores-query.mjs +0 -5
  297. package/esm2022/stores/query/query.store.mjs +0 -31
  298. package/esm2022/stores/selection/index.mjs +0 -2
  299. package/esm2022/stores/selection/ng-atomic-common-stores-selection.mjs +0 -5
  300. package/esm2022/stores/selection/selection.store.mjs +0 -29
  301. package/esm2022/stores/sort/index.mjs +0 -2
  302. package/esm2022/stores/sort/ng-atomic-common-stores-sort.mjs +0 -5
  303. package/esm2022/stores/sort/sort.store.mjs +0 -27
  304. package/esm2022/utils/comma/comma.mjs +0 -4
  305. package/esm2022/utils/comma/index.mjs +0 -2
  306. package/esm2022/utils/compare-by-id/compare-by-id.mjs +0 -5
  307. package/esm2022/utils/compare-by-id/index.mjs +0 -2
  308. package/esm2022/utils/date-utils/date-utils.mjs +0 -13
  309. package/esm2022/utils/date-utils/index.mjs +0 -2
  310. package/esm2022/utils/diff/diff.mjs +0 -7
  311. package/esm2022/utils/diff/index.mjs +0 -2
  312. package/esm2022/utils/expression/expression.transformer.mjs +0 -38
  313. package/esm2022/utils/expression/index.mjs +0 -2
  314. package/esm2022/utils/form/form.mjs +0 -26
  315. package/esm2022/utils/form/index.mjs +0 -2
  316. package/esm2022/utils/get/get.mjs +0 -6
  317. package/esm2022/utils/get/index.mjs +0 -2
  318. package/esm2022/utils/index.mjs +0 -15
  319. package/esm2022/utils/inject/index.mjs +0 -2
  320. package/esm2022/utils/inject/inject.mjs +0 -177
  321. package/esm2022/utils/mat-dayjs-date/dayjs-date.adapter.mjs +0 -191
  322. package/esm2022/utils/mat-dayjs-date/dayjs-date.formats.mjs +0 -15
  323. package/esm2022/utils/mat-dayjs-date/dayjs-date.module.mjs +0 -37
  324. package/esm2022/utils/mat-dayjs-date/dayjs-jp-providers.mjs +0 -20
  325. package/esm2022/utils/mat-dayjs-date/index.mjs +0 -5
  326. package/esm2022/utils/ng-atomic-common-utils.mjs +0 -5
  327. package/esm2022/utils/page/index.mjs +0 -2
  328. package/esm2022/utils/page/page.mjs +0 -20
  329. package/esm2022/utils/router/index.mjs +0 -2
  330. package/esm2022/utils/router/router.mjs +0 -54
  331. package/esm2022/utils/time.mjs +0 -8
  332. package/esm2022/utils/to-object/index.mjs +0 -2
  333. package/esm2022/utils/to-object/to-object.mjs +0 -10
@@ -5,10 +5,10 @@ class SecretService {
5
5
  constructor() {
6
6
  this.isSecret = signal(false);
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SecretService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SecretService, providedIn: 'root' }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SecretService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SecretService, providedIn: 'root' }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SecretService, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SecretService, decorators: [{
12
12
  type: Injectable,
13
13
  args: [{
14
14
  providedIn: 'root'
@@ -18,8 +18,8 @@ class ActionsSheet extends NgAtomicComponent {
18
18
  this.dispatch(action, 'root');
19
19
  this.sheetRef.dismiss(action);
20
20
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ActionsSheet, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: ActionsSheet, isStandalone: true, selector: "sheets-actions", usesInheritance: true, ngImport: i0, template: `
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ActionsSheet, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.4", type: ActionsSheet, isStandalone: true, selector: "sheets-actions", usesInheritance: true, ngImport: i0, template: `
23
23
  <mat-action-list>
24
24
  <button mat-list-item *ngFor="let action of actions" (click)="onItemClick(action)">
25
25
  <!-- <atoms-icon matListItemIcon [name]="action.icon" [color]="action.color"></atoms-icon> -->
@@ -28,9 +28,9 @@ class ActionsSheet extends NgAtomicComponent {
28
28
  </mat-action-list>
29
29
  `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2.MatActionList, selector: "mat-action-list", exportAs: ["matActionList"] }, { kind: "component", type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2.MatListItemTitle, selector: "[matListItemTitle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ActionsSheet, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ActionsSheet, decorators: [{
32
32
  type: Component,
33
- args: [{ selector: 'sheets-actions', standalone: true, imports: [
33
+ args: [{ selector: 'sheets-actions', imports: [
34
34
  CommonModule,
35
35
  MatListModule,
36
36
  // IconAtom,
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-sheets-actions.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/sheets/actions/actions.sheet.ts","../../../../../packages/@ng-atomic/common/src/lib/services/sheets/actions/ng-atomic-common-services-sheets-actions.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from '@angular/material/bottom-sheet';\nimport { MatListModule } from '@angular/material/list';\nimport { Action, NgAtomicComponent } from '@ng-atomic/core';\n// import { IconAtom } from '@ng-atomic/components/atoms/icon';\n\n@Component({\n selector: 'sheets-actions',\n standalone: true,\n imports: [\n CommonModule,\n MatListModule,\n // IconAtom,\n ],\n template: `\n <mat-action-list>\n <button mat-list-item *ngFor=\"let action of actions\" (click)=\"onItemClick(action)\">\n <!-- <atoms-icon matListItemIcon [name]=\"action.icon\" [color]=\"action.color\"></atoms-icon> -->\n <div matListItemTitle [style.color]=\"action.color\">{{ action.name }}</div>\n </button>\n </mat-action-list>\n `,\n styleUrls: ['./actions.sheet.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionsSheet extends NgAtomicComponent {\n protected actions = inject<Action[]>(MAT_BOTTOM_SHEET_DATA);\n private sheetRef = inject(MatBottomSheetRef<ActionsSheet>);\n\n protected onItemClick(action: Action): void {\n this.dispatch(action, 'root');\n this.sheetRef.dismiss(action);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAKA;AAqBM,MAAO,YAAa,SAAQ,iBAAiB,CAAA;AAnBnD,IAAA,WAAA,GAAA;;AAoBY,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAW,qBAAqB,CAAC;AACnD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAC,iBAA+B,EAAC;AAM3D;AAJW,IAAA,WAAW,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;;8GANpB,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAXb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;GAOT,EAXC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2JACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAcJ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAnBxB,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,aAAa;;qBAEd,EACS,QAAA,EAAA;;;;;;;GAOT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA;;;ACxBjD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-services-sheets-actions.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/sheets/actions/actions.sheet.ts","../../../../../packages/@ng-atomic/common/src/lib/services/sheets/actions/ng-atomic-common-services-sheets-actions.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from '@angular/material/bottom-sheet';\nimport { MatListModule } from '@angular/material/list';\nimport { Action, NgAtomicComponent } from '@ng-atomic/core';\n// import { IconAtom } from '@ng-atomic/components/atoms/icon';\n\n@Component({\n selector: 'sheets-actions',\n imports: [\n CommonModule,\n MatListModule,\n // IconAtom,\n ],\n template: `\n <mat-action-list>\n <button mat-list-item *ngFor=\"let action of actions\" (click)=\"onItemClick(action)\">\n <!-- <atoms-icon matListItemIcon [name]=\"action.icon\" [color]=\"action.color\"></atoms-icon> -->\n <div matListItemTitle [style.color]=\"action.color\">{{ action.name }}</div>\n </button>\n </mat-action-list>\n `,\n styleUrls: ['./actions.sheet.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionsSheet extends NgAtomicComponent {\n protected actions = inject<Action[]>(MAT_BOTTOM_SHEET_DATA);\n private sheetRef = inject(MatBottomSheetRef<ActionsSheet>);\n\n protected onItemClick(action: Action): void {\n this.dispatch(action, 'root');\n this.sheetRef.dismiss(action);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAKA;AAoBM,MAAO,YAAa,SAAQ,iBAAiB,CAAA;AAlBnD,IAAA,WAAA,GAAA;;AAmBY,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAW,qBAAqB,CAAC;AACnD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAC,iBAA+B,EAAC;AAM3D;AAJW,IAAA,WAAW,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;;8GANpB,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAXX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;GAOX,EAXK,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2JACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAcR,YAAY,EAAA,UAAA,EAAA,CAAA;kBAlBxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EACjB,OAAA,EAAA;wBACL,YAAY;wBACZ,aAAa;;qBAEhB,EACS,QAAA,EAAA;;;;;;;GAOX,EAEkB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA;;;ACvBnD;;AAEG;;;;"}
@@ -14,10 +14,10 @@ class SheetService {
14
14
  return ref.afterDismissed().toPromise();
15
15
  });
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SheetService, deps: [{ token: i1.MatBottomSheet }], target: i0.ɵɵFactoryTarget.Injectable }); }
18
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SheetService }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SheetService, deps: [{ token: i1.MatBottomSheet }], target: i0.ɵɵFactoryTarget.Injectable }); }
18
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SheetService }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SheetService, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SheetService, decorators: [{
21
21
  type: Injectable
22
22
  }], ctorParameters: () => [{ type: i1.MatBottomSheet }] });
23
23
 
@@ -28,11 +28,11 @@ class NgAtomicSheetsModule {
28
28
  providers: [],
29
29
  };
30
30
  }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicSheetsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
32
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicSheetsModule, imports: [MatBottomSheetModule] }); }
33
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicSheetsModule, providers: [SheetService], imports: [MatBottomSheetModule] }); }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgAtomicSheetsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
32
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.4", ngImport: i0, type: NgAtomicSheetsModule, imports: [MatBottomSheetModule] }); }
33
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgAtomicSheetsModule, providers: [SheetService], imports: [MatBottomSheetModule] }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicSheetsModule, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgAtomicSheetsModule, decorators: [{
36
36
  type: NgModule,
37
37
  args: [{
38
38
  imports: [
@@ -22,10 +22,10 @@ class SideAppRouter extends Router {
22
22
  return res;
23
23
  });
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SideAppRouter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
26
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SideAppRouter, providedIn: 'root' }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SideAppRouter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SideAppRouter, providedIn: 'root' }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SideAppRouter, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SideAppRouter, decorators: [{
29
29
  type: Injectable,
30
30
  args: [{ providedIn: 'root' }]
31
31
  }] });
@@ -44,10 +44,10 @@ class SideAppService {
44
44
  expand() {
45
45
  this.opened.set(true);
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SideAppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SideAppService, providedIn: 'root' }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SideAppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SideAppService, providedIn: 'root' }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SideAppService, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SideAppService, decorators: [{
51
51
  type: Injectable,
52
52
  args: [{
53
53
  providedIn: 'root'
@@ -18,10 +18,10 @@ class SideNavModeService {
18
18
  expand() {
19
19
  this.sideNavMode.set('expanded');
20
20
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SideNavModeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
22
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SideNavModeService, providedIn: 'root' }); }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SideNavModeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
22
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SideNavModeService, providedIn: 'root' }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SideNavModeService, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SideNavModeService, decorators: [{
25
25
  type: Injectable,
26
26
  args: [{ providedIn: 'root' }]
27
27
  }] });
@@ -24,10 +24,10 @@ class SnackBarService {
24
24
  this.clipboard.copy(copyJson);
25
25
  });
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
28
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarService, providedIn: 'root' }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SnackBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
28
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SnackBarService, providedIn: 'root' }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarService, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SnackBarService, decorators: [{
31
31
  type: Injectable,
32
32
  args: [{ providedIn: 'root' }]
33
33
  }] });
@@ -42,13 +42,13 @@ function errorMessageResolver(error) {
42
42
  }
43
43
 
44
44
  class SnackBarModule {
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
46
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: SnackBarModule, imports: [CommonModule,
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SnackBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
46
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.4", ngImport: i0, type: SnackBarModule, imports: [CommonModule,
47
47
  MatSnackBarModule] }); }
48
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarModule, imports: [CommonModule,
48
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SnackBarModule, imports: [CommonModule,
49
49
  MatSnackBarModule] }); }
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarModule, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SnackBarModule, decorators: [{
52
52
  type: NgModule,
53
53
  args: [{
54
54
  declarations: [],
@@ -53,10 +53,10 @@ class GridService {
53
53
  buildKey(position) {
54
54
  return `(${position.row}, ${position.col})`;
55
55
  }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: GridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
57
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: GridService }); }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: GridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
57
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: GridService }); }
58
58
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: GridService, decorators: [{
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: GridService, decorators: [{
60
60
  type: Injectable
61
61
  }] });
62
62
 
@@ -120,10 +120,10 @@ class NavigationService {
120
120
  }
121
121
  return { row, col };
122
122
  }
123
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NavigationService, deps: [{ token: GridService }], target: i0.ɵɵFactoryTarget.Injectable }); }
124
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NavigationService }); }
123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NavigationService, deps: [{ token: GridService }], target: i0.ɵɵFactoryTarget.Injectable }); }
124
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NavigationService }); }
125
125
  }
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NavigationService, decorators: [{
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NavigationService, decorators: [{
127
127
  type: Injectable
128
128
  }], ctorParameters: () => [{ type: GridService }] });
129
129
 
@@ -245,10 +245,10 @@ class SelectionService {
245
245
  buildKey(position) {
246
246
  return `(${position.row}, ${position.col})`;
247
247
  }
248
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
249
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SelectionService }); }
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
249
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SelectionService }); }
250
250
  }
251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SelectionService, decorators: [{
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SelectionService, decorators: [{
252
252
  type: Injectable
253
253
  }], ctorParameters: () => [] });
254
254
 
@@ -307,10 +307,10 @@ class ClipboardService {
307
307
  console.error('Failed to read data from clipboard', err);
308
308
  }
309
309
  }
310
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ClipboardService, deps: [{ token: GridService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
311
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ClipboardService }); }
310
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ClipboardService, deps: [{ token: GridService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
311
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ClipboardService }); }
312
312
  }
313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ClipboardService, decorators: [{
313
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ClipboardService, decorators: [{
314
314
  type: Injectable
315
315
  }], ctorParameters: () => [{ type: GridService }, { type: SelectionService }] });
316
316
 
@@ -330,10 +330,10 @@ class ProtectionService {
330
330
  return true;
331
331
  return this.protectors.every((protector) => protector(value, context));
332
332
  }
333
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ProtectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
334
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ProtectionService }); }
333
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ProtectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
334
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ProtectionService }); }
335
335
  }
336
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ProtectionService, decorators: [{
336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ProtectionService, decorators: [{
337
337
  type: Injectable
338
338
  }] });
339
339
 
@@ -390,10 +390,10 @@ class EditorService {
390
390
  buildKey(position) {
391
391
  return `(${position.row}, ${position.col})`;
392
392
  }
393
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: EditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
394
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: EditorService }); }
393
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: EditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
394
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: EditorService }); }
395
395
  }
396
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: EditorService, decorators: [{
396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: EditorService, decorators: [{
397
397
  type: Injectable
398
398
  }] });
399
399
 
@@ -448,10 +448,10 @@ class SpreadSheetDataService {
448
448
  // return CryptoJS.MD5(JSON.stringify(obj)).toString(CryptoJS.enc.Base64).slice(0, 10);
449
449
  return JSON.stringify(obj);
450
450
  }
451
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
452
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetDataService }); }
451
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
452
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetDataService }); }
453
453
  }
454
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetDataService, decorators: [{
454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetDataService, decorators: [{
455
455
  type: Injectable
456
456
  }] });
457
457
 
@@ -610,10 +610,10 @@ class SpreadSheetService {
610
610
  this.editor.startEditing(position);
611
611
  }
612
612
  }
613
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
614
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetService }); }
613
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
614
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetService }); }
615
615
  }
616
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetService, decorators: [{
616
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetService, decorators: [{
617
617
  type: Injectable
618
618
  }] });
619
619
  function provideSpreadSheetService() {
@@ -658,7 +658,7 @@ class SpreadSheetCell {
658
658
  frame?.remove();
659
659
  this.frameEl.set(null);
660
660
  }
661
- }, { allowSignalWrites: true });
661
+ });
662
662
  }
663
663
  onDbClick() {
664
664
  if (!this.editable())
@@ -700,10 +700,10 @@ class SpreadSheetCell {
700
700
  el.style.whiteSpace = 'nowrap';
701
701
  this.el.nativeElement.appendChild(el);
702
702
  }
703
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
704
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: SpreadSheetCell, isStandalone: true, selector: "[ssCell]", inputs: { position: { classPropertyName: "position", publicName: "ssCell", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "ssCellEditable", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "ssCellContext", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousedown": "ss.selection.handleMouseDown(position(), $event)", "mouseup": "ss.selection.handleMouseUp()", "mouseenter": "ss.selection.handleMouseEnter(position())", "click": "ss.selection.handleClick(position(), $event)", "dblclick": "onDbClick()" }, properties: { "class.selected": "ss.selection.isSelected(position())", "class.editing": "ss.editor.isEditing(position())" } }, ngImport: i0 }); }
703
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
704
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: SpreadSheetCell, isStandalone: true, selector: "[ssCell]", inputs: { position: { classPropertyName: "position", publicName: "ssCell", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "ssCellEditable", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "ssCellContext", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousedown": "ss.selection.handleMouseDown(position(), $event)", "mouseup": "ss.selection.handleMouseUp()", "mouseenter": "ss.selection.handleMouseEnter(position())", "click": "ss.selection.handleClick(position(), $event)", "dblclick": "onDbClick()" }, properties: { "class.selected": "ss.selection.isSelected(position())", "class.editing": "ss.editor.isEditing(position())" } }, ngImport: i0 }); }
705
705
  }
706
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetCell, decorators: [{
706
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetCell, decorators: [{
707
707
  type: Directive,
708
708
  args: [{
709
709
  standalone: true,
@@ -736,10 +736,10 @@ class SpreadSheetCellInput {
736
736
  stopEditing() {
737
737
  this.ss.editor.stopEditing();
738
738
  }
739
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetCellInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
740
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: SpreadSheetCellInput, isStandalone: true, selector: "[ssCellInput]", inputs: { position: { classPropertyName: "position", publicName: "ssCellInput", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "blur": "stopEditing()" } }, ngImport: i0 }); }
739
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetCellInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
740
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: SpreadSheetCellInput, isStandalone: true, selector: "[ssCellInput]", inputs: { position: { classPropertyName: "position", publicName: "ssCellInput", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "blur": "stopEditing()" } }, ngImport: i0 }); }
741
741
  }
742
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetCellInput, decorators: [{
742
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SpreadSheetCellInput, decorators: [{
743
743
  type: Directive,
744
744
  args: [{
745
745
  standalone: true,
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-spreadsheet.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/grid.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/navigation.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/selection.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/clipboard.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/protection.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/editor.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/data.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/spreadsheet.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/directives/grid-cell.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/ng-atomic-common-services-spreadsheet.ts"],"sourcesContent":["import { computed, Injectable, signal } from '@angular/core';\nimport { Cell, CellContext, Position } from '../models/cell.model';\n\n@Injectable()\nexport class GridService {\n readonly data = signal<Cell[][]>([[]]);\n readonly columns = computed(() => Array.from({ length: this.data()[0].length }, (_, i) => String.fromCharCode(65 + i)));\n protected readonly contextMap = new Map<string, CellContext>();\n\n updateCell(row: number, col: number, value: any): void {\n this.data.update(data => {\n data[row][col] = {\n dataValue: value,\n expressionValue: value,\n }\n return [...data];\n });\n }\n\n getValue(position: Position): any | null {\n return this.getCell(position)?.dataValue ?? null;\n }\n\n getExpressionValue(position: Position): any | null {\n return this.getCell(position)?.expressionValue ?? null;\n }\n\n protected getCell(position: Position): Cell | null {\n return this.data()[position.row]?.[position.col] ?? null;\n }\n\n updateAllCells(predicate: (cell: Cell) => boolean, updates: Partial<Cell>): void {\n this.data.update(data => {\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[0].length; j++) {\n if (predicate(data[i][j])) {\n data[i][j] = { ...data[i][j], ...updates };\n }\n }\n }\n return [...data];\n }); \n }\n\n setContext(context: CellContext): void {\n this.contextMap.set(this.buildKey(context.position), context);\n }\n\n getContext(position: Position): CellContext | null {\n return this.contextMap.get(this.buildKey(position)) ?? null;\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { Injectable } from '@angular/core';\nimport { Position } from '../models/cell.model';\nimport { GridService } from './grid.service';\n\n@Injectable()\nexport class NavigationService {\n constructor(private gridService: GridService) {}\n\n moveToNextCell({row, col}: Position): Position {\n const columns = this.gridService.columns();\n if (col < columns.length - 1) {\n return { row, col: col + 1 };\n } else if (row < this.gridService.data().length - 1) {\n return { row: row + 1, col: 0 };\n }\n return { row, col };\n }\n\n moveToPreviousCell({row, col}: Position): Position {\n const columns = this.gridService.columns();\n if (col > 0) {\n return { row, col: col - 1 };\n } else if (row > 0) {\n return { row: row - 1, col: columns.length - 1 };\n }\n return { row, col };\n }\n\n moveToNextRow({row, col}: Position): Position {\n if (row < this.gridService.data().length - 1) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n\n moveToPreviousRow({row, col}: Position): Position {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n\n moveRight({row, col}: Position): Position {\n if (col < this.gridService.columns().length - 1) {\n return { row, col: col + 1 };\n }\n return { row, col };\n }\n\n moveLeft({row, col}: Position): Position {\n if (col > 0) {\n return { row, col: col - 1 };\n }\n return { row, col };\n }\n\n moveUp({row, col}: Position): Position {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n\n moveDown({row, col}: Position): Position {\n if (row < this.gridService.data().length - 1) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n}","import { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { Selection, Position } from '../models/cell.model';\nimport { GridService } from './grid.service';\nimport { isEqual } from 'lodash-es';\n\n@Injectable()\nexport class SelectionService {\n private readonly selection = signal<Selection>({ start: { row: 1, col: 0}, end: null });\n private readonly selectionStart = computed(() => this.selection().start, { equal: isEqual });\n private readonly isMouseDown = signal(false);\n private readonly grid = inject(GridService);\n private readonly cellElMap = new Map<string, HTMLTableCellElement>();\n\n constructor() {\n effect(() => {\n const position = this.selectionStart();\n if (position) this.focus(position);\n });\n }\n\n isSelected(position: Position): boolean {\n // selectionの範囲に含まれているかどうかを返す\n const selection = this.selection();\n if (!selection) return false;\n\n const { start, end } = selection;\n const minRow = Math.min(start.row, end?.row ?? start.row);\n const maxRow = Math.max(start.row, end?.row ?? start.row);\n const minCol = Math.min(start.col, end?.col ?? start.col);\n const maxCol = Math.max(start.col, end?.col ?? start.col);\n const { row, col } = position;\n return row >= minRow && row <= maxRow && col >= minCol && col <= maxCol;\n }\n\n isCursorPosition(position: Position): boolean {\n return isEqual(this.selection().start, position);\n }\n\n handleMouseDown(position: Position, event?: MouseEvent): void {\n this.isMouseDown.set(true);\n if (!event?.shiftKey) {\n this.startSelection(position);\n }\n }\n\n handleMouseUp(): void {\n this.isMouseDown.set(false);\n }\n\n handleMouseEnter(position: Position): void {\n if (this.isMouseDown()) {\n this.updateSelection(position);\n }\n }\n\n handleClick(position: Position, event?: MouseEvent): void {\n if (!this.isMouseDown()) {\n if (event?.shiftKey) {\n this.updateSelectionEnd(position);\n } else {\n this.startSelection(position);\n }\n }\n }\n\n clearSelection(): void {\n this.selection.update((selection) => ({...selection, start: selection.start, end: null}));\n }\n\n setStartPosition(position: Position): void {\n this.selection.update((selection) => ({...selection, start: position, end: null}));\n }\n\n getSelection(): Selection | null {\n return this.selection();\n }\n\n getSelectionEndOrStart(): Position {\n return this.selection()?.end || this.selection()?.start;\n }\n\n findSelectedCell(): Position | null {\n const data = this.grid.data();\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n if (this.isSelected({row: i, col: j})) {\n return { row: i, col: j };\n }\n }\n }\n return null;\n }\n\n updateSelectionEnd(position: Position): void {\n this.selection.update((selection) => ({...selection, end: position}));\n }\n\n private startSelection(position: Position): void {\n this.selection.set({ start: position, end: null });\n }\n\n private updateSelection(position: Position): void {\n if (this.selection()) {\n this.selection.update((selection) => ({...selection, end: position}));\n }\n }\n\n clearSelectedRange(selection: { start: { row: number; col: number }; end: { row: number; col: number } }): void {\n const minRow = Math.min(selection.start.row, selection.end.row);\n const maxRow = Math.max(selection.start.row, selection.end.row);\n const minCol = Math.min(selection.start.col, selection.end.col);\n const maxCol = Math.max(selection.start.col, selection.end.col);\n\n for (let i = minRow; i <= maxRow; i++) {\n for (let j = minCol; j <= maxCol; j++) {\n this.grid.updateCell(i, j, {\n dataValue: '',\n expressionValue: ''\n });\n }\n }\n }\n\n setCell(position: Position, el: HTMLTableCellElement): void {\n this.cellElMap.set(`${this.buildKey(position)}`, el);\n }\n\n getCell(position: Position): HTMLTableCellElement | null {\n return this.cellElMap.get(this.buildKey(position)) ?? null;\n }\n\n focus(position: Position): void {\n setTimeout(() => {\n const el = this.getCell(position);\n if (el && el !== document.activeElement) {\n el.focus();\n }\n });\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { inject, Injectable } from '@angular/core';\nimport { GridService } from './grid.service';\nimport { SelectionService } from './selection.service';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport papaparse from 'papaparse';\nimport { SnackBarService } from '@ng-atomic/common/services/snack-bar';\n\n@Injectable()\nexport class ClipboardService {\n private clipboard = inject(Clipboard);\n private snackBar = inject(SnackBarService);\n\n constructor(\n private gridService: GridService,\n private selectionService: SelectionService,\n ) { }\n\n async copy(): Promise<void> {\n const selection = this.selectionService.getSelection();\n if (!selection) return;\n\n const { start, end } = selection;\n\n if (!end) {\n this.copyText(this.gridService.data()[start.row][start.col].dataValue);\n return;\n }\n\n const minRow = Math.min(start.row, end.row);\n const maxRow = Math.max(start.row, end.row);\n const minCol = Math.min(start.col, end.col);\n const maxCol = Math.max(start.col, end.col);\n\n const data = this.gridService.data();\n const clipboardData: string[][] = [];\n\n for (let i = minRow; i <= maxRow; i++) {\n const row: string[] = [];\n for (let j = minCol; j <= maxCol; j++) {\n row.push(data[i][j].dataValue);\n }\n clipboardData.push(row);\n }\n\n const tsv = papaparse.unparse(clipboardData, \n { delimiter: '\\t', newline: '\\n', header: false }\n );\n this.clipboard.copy(tsv);\n }\n\n protected copyText(text: string) {\n this.clipboard.copy(text);\n this.snackBar.open('クリップボードにコピーしました。');\n }\n\n async paste(targetRow: number, targetCol: number): Promise<void> {\n try {\n const clipboardText = await navigator.clipboard.readText();\n const rows = clipboardText.split('\\n');\n const data = this.gridService.data();\n\n const rowCount = Math.min(rows.length, data.length - targetRow);\n\n for (let i = 0; i < rowCount; i++) {\n const cells = rows[i].split('\\t');\n const colCount = Math.min(cells.length, this.gridService.columns().length - targetCol);\n\n for (let j = 0; j < colCount; j++) {\n this.gridService.updateCell(targetRow + i, targetCol + j, cells[j]);\n }\n }\n\n console.log('Data pasted from clipboard as TSV');\n } catch (err) {\n console.error('Failed to read data from clipboard', err);\n }\n }\n}","import { inject, Injectable, InjectionToken } from \"@angular/core\";\n\ninterface CellContext<T> {\n item: T;\n name: string;\n position: {\n row: number;\n col: number;\n }\n}\n\nexport type CellProtector = (value: any, context: CellContext<any>) => boolean;\nexport const COLUMN_PROTECTOR = new InjectionToken<CellProtector[]>('COLUMN_PROTECTOR', {\n providedIn: 'root',\n factory: () => [],\n});\nexport function provideCellProtector(useFactory: () => CellProtector) {\n return { provide: COLUMN_PROTECTOR, useFactory, multi: true };\n}\n\n@Injectable()\nexport class ProtectionService {\n readonly protectors = inject(COLUMN_PROTECTOR, {optional: true});\n\n isEditable(value: any, context: CellContext<any>): boolean {\n if (!this.protectors) return true;\n return this.protectors.every((protector) => protector(value, context));\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { GridService } from './grid.service';\nimport { SelectionService } from './selection.service';\nimport { ProtectionService } from './protection.service';\nimport { Position } from '../models/cell.model';\n\n@Injectable()\nexport class EditorService {\n private grid = inject(GridService);\n private selection = inject(SelectionService);\n private protection = inject(ProtectionService);\n readonly editinngCell = signal<{ row: number, col: number } | null>(null);\n protected readonly inputMap = new Map<string, HTMLInputElement>();\n\n isEditing(position: Position): boolean {\n return this.editinngCell()?.row === position.row && this.editinngCell()?.col === position.col;\n }\n\n startEditing(position: Position): void {\n const context = this.grid.getContext(position);\n console.debug('context:', context);\n if (!this.protection.isEditable(null, context)) {\n return;\n }\n this.selection.clearSelection();\n this.editinngCell.set(position);\n this.focus(position);\n }\n\n stopEditing(): void {\n this.editinngCell.set(null);\n }\n\n focus(position: Position): void {\n setTimeout(() => {\n const input = this.getInput(position);\n if (input && input !== document.activeElement) {\n input.focus();\n input.select();\n }\n });\n }\n\n getEditingCell(): Position | null {\n const data = this.grid.data();\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n if (this.isEditing({row: i, col: j})) {\n return { row: i, col: j };\n }\n }\n }\n return null;\n }\n\n setInput(input: HTMLInputElement, position: Position): void {\n this.inputMap.set(`${this.buildKey(position)}`, input);\n }\n\n getInput(position: Position): HTMLInputElement | null {\n return this.inputMap.get(this.buildKey(position)) ?? null;\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { inject, Injectable } from \"@angular/core\";\nimport { Cell } from \"../models\";\nimport { LanguageService } from \"@ng-atomic/common/services/language\";\nimport { injectDataAccessor } from \"@ng-atomic/common/pipes/data-accessor\";\nimport { EXPRESSION_TRANSFORMER } from \"@ng-atomic/common/utils\";\nimport CryptoJS from \"crypto-js\";\n\n@Injectable()\nexport class SpreadSheetDataService {\n readonly cache = new Map<string, Cell | Cell[]>();\n readonly language = inject(LanguageService);\n readonly dataAccessor = injectDataAccessor();\n readonly expression = inject(EXPRESSION_TRANSFORMER);\n\n buildGridData(items: any[], displayedColumns: string[]): Cell[][] {\n return [\n this.buildGridHeaderRow(displayedColumns),\n ...items.map((item) => this.buildGridRow(item, displayedColumns))\n ];\n }\n\n protected buildGridHeaderRow(columns: string[]): Cell[] {\n const key = this.buildKey({columns});\n const cached = this.cache.get(key);\n if (cached) return cached as Cell[];\n const row = columns.map((column) => ({\n dataValue: this.language.transform(column),\n expressionValue: this.language.transform(column),\n isHeader: true\n }));\n this.cache.set(key, row);\n return row;\n }\n\n protected buildGridRow(item: object, displayedColumns: string[]): Cell[] {\n const key = this.buildKey({item, displayedColumns});\n const cached = this.cache.get(key);\n if (cached) return cached as Cell[];\n const row = displayedColumns.map((column) => this.buildGridCell(item, column));\n this.cache.set(key, row);\n return row;\n }\n\n protected buildGridCell(item: object, column: string): Cell {\n const key = this.buildKey({item, column});\n const cached = this.cache.get(key);\n if (cached) return cached as Cell;\n const cell = {\n dataValue: this.dataAccessor(item, column),\n expressionValue: this.expression(this.dataAccessor(item, column), {item, name: column}),\n };\n this.cache.set(key, cell);\n return cell;\n }\n\n protected buildKey(obj: object): string {\n // return CryptoJS.MD5(JSON.stringify(obj)).toString(CryptoJS.enc.Base64).slice(0, 10);\n return JSON.stringify(obj);\n }\n\n}","import { inject, Injectable, Provider } from '@angular/core';\nimport { Position } from './models/cell.model';\nimport { GridService } from './features/grid.service';\nimport { NavigationService } from './features/navigation.service';\nimport { SelectionService } from './features/selection.service';\nimport { ClipboardService } from './features/clipboard.service';\nimport { EditorService } from './features/editor.service';\nimport { ProtectionService } from './features/protection.service';\nimport { SpreadSheetDataService } from './features/data.service';\n\n@Injectable()\nexport class SpreadSheetService {\n readonly config = { paste: false };\n readonly grid = inject(GridService);\n readonly data = inject(SpreadSheetDataService);\n readonly navigation = inject(NavigationService);\n readonly selection = inject(SelectionService);\n readonly clipboard = inject(ClipboardService);\n readonly editor = inject(EditorService);\n readonly protection = inject(ProtectionService);\n\n handleKeyDown(event: KeyboardEvent): void {\n if (this.editor.editinngCell()) {\n this.handleKeyDownOnEditing(event);\n } else {\n this.handleKeyDownOnSelecting(event);\n }\n }\n\n protected handleKeyDownOnEditing(event: KeyboardEvent): void {\n const cell = this.editor.editinngCell();\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'left', 'select');\n } else {\n this.move(cell, 'right', 'select');\n }\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'top', 'select');\n } else {\n this.move(cell, 'bottom', 'select');\n }\n }\n }\n\n protected handleKeyDownOnSelecting(event: KeyboardEvent): void {\n if (event.key === 'Tab') {\n const selectedCell = this.selection.findSelectedCell();\n event.preventDefault();\n event.stopPropagation();\n if (event.shiftKey) {\n this.move(selectedCell, 'left', 'select');\n } else {\n this.move(selectedCell, 'right', 'select');\n }\n return;\n } else if (event.key === 'Enter') {\n const selectedCell = this.selection.findSelectedCell();\n if (selectedCell) {\n this.editor.startEditing(selectedCell);\n event.preventDefault();\n }\n } else if (event.ctrlKey || event.metaKey) {\n if (event.key === 'c') {\n this.clipboard.copy();\n event.preventDefault();\n } else if (event.key === 'v') {\n if (!this.config.paste) return;\n const target = this.selection.findSelectedCell();\n if (target) {\n this.clipboard.paste(target.row, target.col);\n }\n event.preventDefault();\n }\n return;\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const selection = this.selection.getSelection();\n if (selection) {\n this.selection.clearSelectedRange(selection);\n event.preventDefault();\n return;\n }\n } else {\n const selectedCell = this.selection.findSelectedCell();\n let newPosition: Position;\n if (event.shiftKey) {\n const selectionEnd = this.selection.getSelectionEndOrStart();\n switch (event.key) {\n case 'ArrowRight':\n newPosition = this.navigation.moveRight(selectionEnd);\n break;\n case 'ArrowLeft':\n newPosition = this.navigation.moveLeft(selectionEnd);\n break;\n case 'ArrowUp':\n newPosition = this.navigation.moveUp(selectionEnd);\n break;\n case 'ArrowDown':\n newPosition = this.navigation.moveDown(selectionEnd);\n break;\n default:\n return;\n }\n if (newPosition) {\n event.preventDefault();\n this.selection.updateSelectionEnd(newPosition);\n }\n } else {\n switch (event.key) {\n case 'ArrowRight':\n newPosition = this.navigation.moveRight(selectedCell);\n break;\n case 'ArrowLeft':\n newPosition = this.navigation.moveLeft(selectedCell);\n break;\n case 'ArrowUp':\n newPosition = this.navigation.moveUp(selectedCell);\n break;\n case 'ArrowDown':\n newPosition = this.navigation.moveDown(selectedCell);\n break;\n default:\n return;\n }\n if (newPosition) {\n event.preventDefault();\n this.selection.clearSelection();\n this.selection.handleClick(newPosition);\n }\n }\n }\n }\n\n protected move(_position: Position, dest: 'top' | 'bottom' | 'left' | 'right', mode: 'edit' | 'select') {\n this.editor.stopEditing();\n let position: Position;\n if (dest === 'top') {\n position = this.navigation.moveToPreviousRow(_position);\n } else if (dest === 'bottom') {\n position = this.navigation.moveToNextRow(_position);\n } else if (dest === 'left') {\n position = this.navigation.moveToPreviousCell(_position);\n } else if (dest === 'right') {\n position = this.navigation.moveToNextCell(_position);\n }\n\n this.selection.setStartPosition(position);\n\n if (mode === 'edit') {\n this.editor.startEditing(position);\n }\n }\n}\n\nexport function provideSpreadSheetService(): Provider[] {\n return [\n ClipboardService,\n SpreadSheetDataService,\n EditorService,\n SpreadSheetService,\n GridService,\n NavigationService,\n SelectionService,\n ProtectionService\n ];\n}\n","import { computed, Directive, effect, ElementRef, inject, input, signal } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport { CellContext } from \"../models/cell.model\";\n\n@Directive({\n standalone: true,\n selector: '[ssCell]',\n host: {\n '[class.selected]': 'ss.selection.isSelected(position())',\n '[class.editing]': 'ss.editor.isEditing(position())',\n '(mousedown)': 'ss.selection.handleMouseDown(position(), $event)',\n '(mouseup)': 'ss.selection.handleMouseUp()',\n '(mouseenter)': 'ss.selection.handleMouseEnter(position())',\n '(click)': 'ss.selection.handleClick(position(), $event)',\n '(dblclick)': 'onDbClick()',\n }\n})\nexport class SpreadSheetCell {\n protected ss = inject(SpreadSheetService);\n readonly el = inject<ElementRef<HTMLTableCellElement>>(ElementRef);\n\n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'ssCell'});\n readonly editable = input<boolean>(false, {alias: 'ssCellEditable'});\n readonly context = input<CellContext>(null, {alias: 'ssCellContext'});\n readonly isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n readonly isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n readonly frameEl = signal<HTMLDivElement | null>(null);\n\n constructor() {\n effect(() => {\n if (!this.context()) return;\n this.ss.grid.setContext(this.context());\n });\n\n effect(() => {\n const isCursor = this.ss.selection.isCursorPosition(this.position());\n let frame = this.frameEl();\n\n if (isCursor) {\n if (!frame) {\n frame = this.buildOutlineFrame();\n this.el.nativeElement.appendChild(frame);\n this.frameEl.set(frame);\n }\n } else {\n frame?.remove();\n this.frameEl.set(null);\n }\n }, {allowSignalWrites: true});\n }\n\n onDbClick(): void {\n if (!this.editable()) return;\n this.ss.editor.startEditing(this.position());\n }\n\n ngAfterViewInit(): void {\n this.ss.selection.setCell(this.position(), this.el.nativeElement);\n if (this.isSelected() && !this.isEditing()) {\n this.ss.selection.focus(this.position());\n }\n }\n\n protected buildOutlineFrame(): HTMLDivElement {\n const frame = document.createElement('div');\n frame.classList.add('selection-frame');\n frame.style.position = 'absolute';\n frame.style.top = '0';\n frame.style.left = '0';\n frame.style.width = '100%';\n frame.style.height = '100%';\n frame.style.border = '2px solid #2196f3';\n frame.style.borderRadius = '4px';\n frame.style.pointerEvents = 'none';\n frame.style.boxSizing = 'border-box';\n return frame;\n }\n\n protected createLabelElement(options: {\n label: string\n color: string\n }) {\n const el = document.createElement('span');\n el.textContent = options.label;\n el.style.backgroundColor = `${options.color}`;\n el.style.color = '#fff';\n el.style.padding = '2px 4px';\n el.style.position = 'absolute';\n el.style.fontSize = '10px';\n el.style.top = '0';\n el.style.left = '0';\n el.style.zIndex = '9999';\n el.style.lineHeight = '1.5em';\n el.style.whiteSpace = 'nowrap';\n this.el.nativeElement.appendChild(el);\n }\n}\n\n\n@Directive({\n standalone: true,\n selector: '[ssCellInput]',\n host: {\n '(blur)': 'stopEditing()',\n }\n})\nexport class SpreadSheetCellInput {\n protected ss = inject(SpreadSheetService);\n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'ssCellInput'});\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n readonly isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n readonly isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n\n ngAfterViewInit(): void {\n this.ss.editor.setInput(this.el.nativeElement, this.position());\n if (this.isSelected() && this.isEditing()) {\n this.ss.editor.focus(this.position());\n }\n }\n\n protected stopEditing(): void {\n this.ss.editor.stopEditing();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GridService","i2.SelectionService"],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-services-spreadsheet.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/grid.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/navigation.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/selection.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/clipboard.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/protection.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/editor.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/data.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/spreadsheet.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/directives/grid-cell.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/ng-atomic-common-services-spreadsheet.ts"],"sourcesContent":["import { computed, Injectable, signal } from '@angular/core';\nimport { Cell, CellContext, Position } from '../models/cell.model';\n\n@Injectable()\nexport class GridService {\n readonly data = signal<Cell[][]>([[]]);\n readonly columns = computed(() => Array.from({ length: this.data()[0].length }, (_, i) => String.fromCharCode(65 + i)));\n protected readonly contextMap = new Map<string, CellContext>();\n\n updateCell(row: number, col: number, value: any): void {\n this.data.update(data => {\n data[row][col] = {\n dataValue: value,\n expressionValue: value,\n }\n return [...data];\n });\n }\n\n getValue(position: Position): any | null {\n return this.getCell(position)?.dataValue ?? null;\n }\n\n getExpressionValue(position: Position): any | null {\n return this.getCell(position)?.expressionValue ?? null;\n }\n\n protected getCell(position: Position): Cell | null {\n return this.data()[position.row]?.[position.col] ?? null;\n }\n\n updateAllCells(predicate: (cell: Cell) => boolean, updates: Partial<Cell>): void {\n this.data.update(data => {\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[0].length; j++) {\n if (predicate(data[i][j])) {\n data[i][j] = { ...data[i][j], ...updates };\n }\n }\n }\n return [...data];\n }); \n }\n\n setContext(context: CellContext): void {\n this.contextMap.set(this.buildKey(context.position), context);\n }\n\n getContext(position: Position): CellContext | null {\n return this.contextMap.get(this.buildKey(position)) ?? null;\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { Injectable } from '@angular/core';\nimport { Position } from '../models/cell.model';\nimport { GridService } from './grid.service';\n\n@Injectable()\nexport class NavigationService {\n constructor(private gridService: GridService) {}\n\n moveToNextCell({row, col}: Position): Position {\n const columns = this.gridService.columns();\n if (col < columns.length - 1) {\n return { row, col: col + 1 };\n } else if (row < this.gridService.data().length - 1) {\n return { row: row + 1, col: 0 };\n }\n return { row, col };\n }\n\n moveToPreviousCell({row, col}: Position): Position {\n const columns = this.gridService.columns();\n if (col > 0) {\n return { row, col: col - 1 };\n } else if (row > 0) {\n return { row: row - 1, col: columns.length - 1 };\n }\n return { row, col };\n }\n\n moveToNextRow({row, col}: Position): Position {\n if (row < this.gridService.data().length - 1) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n\n moveToPreviousRow({row, col}: Position): Position {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n\n moveRight({row, col}: Position): Position {\n if (col < this.gridService.columns().length - 1) {\n return { row, col: col + 1 };\n }\n return { row, col };\n }\n\n moveLeft({row, col}: Position): Position {\n if (col > 0) {\n return { row, col: col - 1 };\n }\n return { row, col };\n }\n\n moveUp({row, col}: Position): Position {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n\n moveDown({row, col}: Position): Position {\n if (row < this.gridService.data().length - 1) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n}","import { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { Selection, Position } from '../models/cell.model';\nimport { GridService } from './grid.service';\nimport { isEqual } from 'lodash-es';\n\n@Injectable()\nexport class SelectionService {\n private readonly selection = signal<Selection>({ start: { row: 1, col: 0}, end: null });\n private readonly selectionStart = computed(() => this.selection().start, { equal: isEqual });\n private readonly isMouseDown = signal(false);\n private readonly grid = inject(GridService);\n private readonly cellElMap = new Map<string, HTMLTableCellElement>();\n\n constructor() {\n effect(() => {\n const position = this.selectionStart();\n if (position) this.focus(position);\n });\n }\n\n isSelected(position: Position): boolean {\n // selectionの範囲に含まれているかどうかを返す\n const selection = this.selection();\n if (!selection) return false;\n\n const { start, end } = selection;\n const minRow = Math.min(start.row, end?.row ?? start.row);\n const maxRow = Math.max(start.row, end?.row ?? start.row);\n const minCol = Math.min(start.col, end?.col ?? start.col);\n const maxCol = Math.max(start.col, end?.col ?? start.col);\n const { row, col } = position;\n return row >= minRow && row <= maxRow && col >= minCol && col <= maxCol;\n }\n\n isCursorPosition(position: Position): boolean {\n return isEqual(this.selection().start, position);\n }\n\n handleMouseDown(position: Position, event?: MouseEvent): void {\n this.isMouseDown.set(true);\n if (!event?.shiftKey) {\n this.startSelection(position);\n }\n }\n\n handleMouseUp(): void {\n this.isMouseDown.set(false);\n }\n\n handleMouseEnter(position: Position): void {\n if (this.isMouseDown()) {\n this.updateSelection(position);\n }\n }\n\n handleClick(position: Position, event?: MouseEvent): void {\n if (!this.isMouseDown()) {\n if (event?.shiftKey) {\n this.updateSelectionEnd(position);\n } else {\n this.startSelection(position);\n }\n }\n }\n\n clearSelection(): void {\n this.selection.update((selection) => ({...selection, start: selection.start, end: null}));\n }\n\n setStartPosition(position: Position): void {\n this.selection.update((selection) => ({...selection, start: position, end: null}));\n }\n\n getSelection(): Selection | null {\n return this.selection();\n }\n\n getSelectionEndOrStart(): Position {\n return this.selection()?.end || this.selection()?.start;\n }\n\n findSelectedCell(): Position | null {\n const data = this.grid.data();\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n if (this.isSelected({row: i, col: j})) {\n return { row: i, col: j };\n }\n }\n }\n return null;\n }\n\n updateSelectionEnd(position: Position): void {\n this.selection.update((selection) => ({...selection, end: position}));\n }\n\n private startSelection(position: Position): void {\n this.selection.set({ start: position, end: null });\n }\n\n private updateSelection(position: Position): void {\n if (this.selection()) {\n this.selection.update((selection) => ({...selection, end: position}));\n }\n }\n\n clearSelectedRange(selection: { start: { row: number; col: number }; end: { row: number; col: number } }): void {\n const minRow = Math.min(selection.start.row, selection.end.row);\n const maxRow = Math.max(selection.start.row, selection.end.row);\n const minCol = Math.min(selection.start.col, selection.end.col);\n const maxCol = Math.max(selection.start.col, selection.end.col);\n\n for (let i = minRow; i <= maxRow; i++) {\n for (let j = minCol; j <= maxCol; j++) {\n this.grid.updateCell(i, j, {\n dataValue: '',\n expressionValue: ''\n });\n }\n }\n }\n\n setCell(position: Position, el: HTMLTableCellElement): void {\n this.cellElMap.set(`${this.buildKey(position)}`, el);\n }\n\n getCell(position: Position): HTMLTableCellElement | null {\n return this.cellElMap.get(this.buildKey(position)) ?? null;\n }\n\n focus(position: Position): void {\n setTimeout(() => {\n const el = this.getCell(position);\n if (el && el !== document.activeElement) {\n el.focus();\n }\n });\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { inject, Injectable } from '@angular/core';\nimport { GridService } from './grid.service';\nimport { SelectionService } from './selection.service';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport papaparse from 'papaparse';\nimport { SnackBarService } from '@ng-atomic/common/services/snack-bar';\n\n@Injectable()\nexport class ClipboardService {\n private clipboard = inject(Clipboard);\n private snackBar = inject(SnackBarService);\n\n constructor(\n private gridService: GridService,\n private selectionService: SelectionService,\n ) { }\n\n async copy(): Promise<void> {\n const selection = this.selectionService.getSelection();\n if (!selection) return;\n\n const { start, end } = selection;\n\n if (!end) {\n this.copyText(this.gridService.data()[start.row][start.col].dataValue);\n return;\n }\n\n const minRow = Math.min(start.row, end.row);\n const maxRow = Math.max(start.row, end.row);\n const minCol = Math.min(start.col, end.col);\n const maxCol = Math.max(start.col, end.col);\n\n const data = this.gridService.data();\n const clipboardData: string[][] = [];\n\n for (let i = minRow; i <= maxRow; i++) {\n const row: string[] = [];\n for (let j = minCol; j <= maxCol; j++) {\n row.push(data[i][j].dataValue);\n }\n clipboardData.push(row);\n }\n\n const tsv = papaparse.unparse(clipboardData, \n { delimiter: '\\t', newline: '\\n', header: false }\n );\n this.clipboard.copy(tsv);\n }\n\n protected copyText(text: string) {\n this.clipboard.copy(text);\n this.snackBar.open('クリップボードにコピーしました。');\n }\n\n async paste(targetRow: number, targetCol: number): Promise<void> {\n try {\n const clipboardText = await navigator.clipboard.readText();\n const rows = clipboardText.split('\\n');\n const data = this.gridService.data();\n\n const rowCount = Math.min(rows.length, data.length - targetRow);\n\n for (let i = 0; i < rowCount; i++) {\n const cells = rows[i].split('\\t');\n const colCount = Math.min(cells.length, this.gridService.columns().length - targetCol);\n\n for (let j = 0; j < colCount; j++) {\n this.gridService.updateCell(targetRow + i, targetCol + j, cells[j]);\n }\n }\n\n console.log('Data pasted from clipboard as TSV');\n } catch (err) {\n console.error('Failed to read data from clipboard', err);\n }\n }\n}","import { inject, Injectable, InjectionToken } from \"@angular/core\";\n\ninterface CellContext<T> {\n item: T;\n name: string;\n position: {\n row: number;\n col: number;\n }\n}\n\nexport type CellProtector = (value: any, context: CellContext<any>) => boolean;\nexport const COLUMN_PROTECTOR = new InjectionToken<CellProtector[]>('COLUMN_PROTECTOR', {\n providedIn: 'root',\n factory: () => [],\n});\nexport function provideCellProtector(useFactory: () => CellProtector) {\n return { provide: COLUMN_PROTECTOR, useFactory, multi: true };\n}\n\n@Injectable()\nexport class ProtectionService {\n readonly protectors = inject(COLUMN_PROTECTOR, {optional: true});\n\n isEditable(value: any, context: CellContext<any>): boolean {\n if (!this.protectors) return true;\n return this.protectors.every((protector) => protector(value, context));\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { GridService } from './grid.service';\nimport { SelectionService } from './selection.service';\nimport { ProtectionService } from './protection.service';\nimport { Position } from '../models/cell.model';\n\n@Injectable()\nexport class EditorService {\n private grid = inject(GridService);\n private selection = inject(SelectionService);\n private protection = inject(ProtectionService);\n readonly editinngCell = signal<{ row: number, col: number } | null>(null);\n protected readonly inputMap = new Map<string, HTMLInputElement>();\n\n isEditing(position: Position): boolean {\n return this.editinngCell()?.row === position.row && this.editinngCell()?.col === position.col;\n }\n\n startEditing(position: Position): void {\n const context = this.grid.getContext(position);\n console.debug('context:', context);\n if (!this.protection.isEditable(null, context)) {\n return;\n }\n this.selection.clearSelection();\n this.editinngCell.set(position);\n this.focus(position);\n }\n\n stopEditing(): void {\n this.editinngCell.set(null);\n }\n\n focus(position: Position): void {\n setTimeout(() => {\n const input = this.getInput(position);\n if (input && input !== document.activeElement) {\n input.focus();\n input.select();\n }\n });\n }\n\n getEditingCell(): Position | null {\n const data = this.grid.data();\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n if (this.isEditing({row: i, col: j})) {\n return { row: i, col: j };\n }\n }\n }\n return null;\n }\n\n setInput(input: HTMLInputElement, position: Position): void {\n this.inputMap.set(`${this.buildKey(position)}`, input);\n }\n\n getInput(position: Position): HTMLInputElement | null {\n return this.inputMap.get(this.buildKey(position)) ?? null;\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { inject, Injectable } from \"@angular/core\";\nimport { Cell } from \"../models\";\nimport { LanguageService } from \"@ng-atomic/common/services/language\";\nimport { injectDataAccessor } from \"@ng-atomic/common/pipes/data-accessor\";\nimport { EXPRESSION_TRANSFORMER } from \"@ng-atomic/common/utils\";\nimport CryptoJS from \"crypto-js\";\n\n@Injectable()\nexport class SpreadSheetDataService {\n readonly cache = new Map<string, Cell | Cell[]>();\n readonly language = inject(LanguageService);\n readonly dataAccessor = injectDataAccessor();\n readonly expression = inject(EXPRESSION_TRANSFORMER);\n\n buildGridData(items: any[], displayedColumns: string[]): Cell[][] {\n return [\n this.buildGridHeaderRow(displayedColumns),\n ...items.map((item) => this.buildGridRow(item, displayedColumns))\n ];\n }\n\n protected buildGridHeaderRow(columns: string[]): Cell[] {\n const key = this.buildKey({columns});\n const cached = this.cache.get(key);\n if (cached) return cached as Cell[];\n const row = columns.map((column) => ({\n dataValue: this.language.transform(column),\n expressionValue: this.language.transform(column),\n isHeader: true\n }));\n this.cache.set(key, row);\n return row;\n }\n\n protected buildGridRow(item: object, displayedColumns: string[]): Cell[] {\n const key = this.buildKey({item, displayedColumns});\n const cached = this.cache.get(key);\n if (cached) return cached as Cell[];\n const row = displayedColumns.map((column) => this.buildGridCell(item, column));\n this.cache.set(key, row);\n return row;\n }\n\n protected buildGridCell(item: object, column: string): Cell {\n const key = this.buildKey({item, column});\n const cached = this.cache.get(key);\n if (cached) return cached as Cell;\n const cell = {\n dataValue: this.dataAccessor(item, column),\n expressionValue: this.expression(this.dataAccessor(item, column), {item, name: column}),\n };\n this.cache.set(key, cell);\n return cell;\n }\n\n protected buildKey(obj: object): string {\n // return CryptoJS.MD5(JSON.stringify(obj)).toString(CryptoJS.enc.Base64).slice(0, 10);\n return JSON.stringify(obj);\n }\n\n}","import { inject, Injectable, Provider } from '@angular/core';\nimport { Position } from './models/cell.model';\nimport { GridService } from './features/grid.service';\nimport { NavigationService } from './features/navigation.service';\nimport { SelectionService } from './features/selection.service';\nimport { ClipboardService } from './features/clipboard.service';\nimport { EditorService } from './features/editor.service';\nimport { ProtectionService } from './features/protection.service';\nimport { SpreadSheetDataService } from './features/data.service';\n\n@Injectable()\nexport class SpreadSheetService {\n readonly config = { paste: false };\n readonly grid = inject(GridService);\n readonly data = inject(SpreadSheetDataService);\n readonly navigation = inject(NavigationService);\n readonly selection = inject(SelectionService);\n readonly clipboard = inject(ClipboardService);\n readonly editor = inject(EditorService);\n readonly protection = inject(ProtectionService);\n\n handleKeyDown(event: KeyboardEvent): void {\n if (this.editor.editinngCell()) {\n this.handleKeyDownOnEditing(event);\n } else {\n this.handleKeyDownOnSelecting(event);\n }\n }\n\n protected handleKeyDownOnEditing(event: KeyboardEvent): void {\n const cell = this.editor.editinngCell();\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'left', 'select');\n } else {\n this.move(cell, 'right', 'select');\n }\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'top', 'select');\n } else {\n this.move(cell, 'bottom', 'select');\n }\n }\n }\n\n protected handleKeyDownOnSelecting(event: KeyboardEvent): void {\n if (event.key === 'Tab') {\n const selectedCell = this.selection.findSelectedCell();\n event.preventDefault();\n event.stopPropagation();\n if (event.shiftKey) {\n this.move(selectedCell, 'left', 'select');\n } else {\n this.move(selectedCell, 'right', 'select');\n }\n return;\n } else if (event.key === 'Enter') {\n const selectedCell = this.selection.findSelectedCell();\n if (selectedCell) {\n this.editor.startEditing(selectedCell);\n event.preventDefault();\n }\n } else if (event.ctrlKey || event.metaKey) {\n if (event.key === 'c') {\n this.clipboard.copy();\n event.preventDefault();\n } else if (event.key === 'v') {\n if (!this.config.paste) return;\n const target = this.selection.findSelectedCell();\n if (target) {\n this.clipboard.paste(target.row, target.col);\n }\n event.preventDefault();\n }\n return;\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const selection = this.selection.getSelection();\n if (selection) {\n this.selection.clearSelectedRange(selection);\n event.preventDefault();\n return;\n }\n } else {\n const selectedCell = this.selection.findSelectedCell();\n let newPosition: Position;\n if (event.shiftKey) {\n const selectionEnd = this.selection.getSelectionEndOrStart();\n switch (event.key) {\n case 'ArrowRight':\n newPosition = this.navigation.moveRight(selectionEnd);\n break;\n case 'ArrowLeft':\n newPosition = this.navigation.moveLeft(selectionEnd);\n break;\n case 'ArrowUp':\n newPosition = this.navigation.moveUp(selectionEnd);\n break;\n case 'ArrowDown':\n newPosition = this.navigation.moveDown(selectionEnd);\n break;\n default:\n return;\n }\n if (newPosition) {\n event.preventDefault();\n this.selection.updateSelectionEnd(newPosition);\n }\n } else {\n switch (event.key) {\n case 'ArrowRight':\n newPosition = this.navigation.moveRight(selectedCell);\n break;\n case 'ArrowLeft':\n newPosition = this.navigation.moveLeft(selectedCell);\n break;\n case 'ArrowUp':\n newPosition = this.navigation.moveUp(selectedCell);\n break;\n case 'ArrowDown':\n newPosition = this.navigation.moveDown(selectedCell);\n break;\n default:\n return;\n }\n if (newPosition) {\n event.preventDefault();\n this.selection.clearSelection();\n this.selection.handleClick(newPosition);\n }\n }\n }\n }\n\n protected move(_position: Position, dest: 'top' | 'bottom' | 'left' | 'right', mode: 'edit' | 'select') {\n this.editor.stopEditing();\n let position: Position;\n if (dest === 'top') {\n position = this.navigation.moveToPreviousRow(_position);\n } else if (dest === 'bottom') {\n position = this.navigation.moveToNextRow(_position);\n } else if (dest === 'left') {\n position = this.navigation.moveToPreviousCell(_position);\n } else if (dest === 'right') {\n position = this.navigation.moveToNextCell(_position);\n }\n\n this.selection.setStartPosition(position);\n\n if (mode === 'edit') {\n this.editor.startEditing(position);\n }\n }\n}\n\nexport function provideSpreadSheetService(): Provider[] {\n return [\n ClipboardService,\n SpreadSheetDataService,\n EditorService,\n SpreadSheetService,\n GridService,\n NavigationService,\n SelectionService,\n ProtectionService\n ];\n}\n","import { computed, Directive, effect, ElementRef, inject, input, signal, AfterViewInit } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport { CellContext } from \"../models/cell.model\";\n\n@Directive({\n standalone: true,\n selector: '[ssCell]',\n host: {\n '[class.selected]': 'ss.selection.isSelected(position())',\n '[class.editing]': 'ss.editor.isEditing(position())',\n '(mousedown)': 'ss.selection.handleMouseDown(position(), $event)',\n '(mouseup)': 'ss.selection.handleMouseUp()',\n '(mouseenter)': 'ss.selection.handleMouseEnter(position())',\n '(click)': 'ss.selection.handleClick(position(), $event)',\n '(dblclick)': 'onDbClick()',\n }\n})\nexport class SpreadSheetCell implements AfterViewInit {\n protected ss = inject(SpreadSheetService);\n readonly el = inject<ElementRef<HTMLTableCellElement>>(ElementRef);\n\n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'ssCell'});\n readonly editable = input<boolean>(false, {alias: 'ssCellEditable'});\n readonly context = input<CellContext>(null, {alias: 'ssCellContext'});\n readonly isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n readonly isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n readonly frameEl = signal<HTMLDivElement | null>(null);\n\n constructor() {\n effect(() => {\n if (!this.context()) return;\n this.ss.grid.setContext(this.context());\n });\n\n effect(() => {\n const isCursor = this.ss.selection.isCursorPosition(this.position());\n let frame = this.frameEl();\n\n if (isCursor) {\n if (!frame) {\n frame = this.buildOutlineFrame();\n this.el.nativeElement.appendChild(frame);\n this.frameEl.set(frame);\n }\n } else {\n frame?.remove();\n this.frameEl.set(null);\n }\n });\n }\n\n onDbClick(): void {\n if (!this.editable()) return;\n this.ss.editor.startEditing(this.position());\n }\n\n ngAfterViewInit(): void {\n this.ss.selection.setCell(this.position(), this.el.nativeElement);\n if (this.isSelected() && !this.isEditing()) {\n this.ss.selection.focus(this.position());\n }\n }\n\n protected buildOutlineFrame(): HTMLDivElement {\n const frame = document.createElement('div');\n frame.classList.add('selection-frame');\n frame.style.position = 'absolute';\n frame.style.top = '0';\n frame.style.left = '0';\n frame.style.width = '100%';\n frame.style.height = '100%';\n frame.style.border = '2px solid #2196f3';\n frame.style.borderRadius = '4px';\n frame.style.pointerEvents = 'none';\n frame.style.boxSizing = 'border-box';\n return frame;\n }\n\n protected createLabelElement(options: {\n label: string\n color: string\n }) {\n const el = document.createElement('span');\n el.textContent = options.label;\n el.style.backgroundColor = `${options.color}`;\n el.style.color = '#fff';\n el.style.padding = '2px 4px';\n el.style.position = 'absolute';\n el.style.fontSize = '10px';\n el.style.top = '0';\n el.style.left = '0';\n el.style.zIndex = '9999';\n el.style.lineHeight = '1.5em';\n el.style.whiteSpace = 'nowrap';\n this.el.nativeElement.appendChild(el);\n }\n}\n\n\n@Directive({\n standalone: true,\n selector: '[ssCellInput]',\n host: {\n '(blur)': 'stopEditing()',\n }\n})\nexport class SpreadSheetCellInput implements AfterViewInit {\n protected ss = inject(SpreadSheetService);\n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'ssCellInput'});\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n readonly isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n readonly isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n\n ngAfterViewInit(): void {\n this.ss.editor.setInput(this.el.nativeElement, this.position());\n if (this.isSelected() && this.isEditing()) {\n this.ss.editor.focus(this.position());\n }\n }\n\n protected stopEditing(): void {\n this.ss.editor.stopEditing();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GridService","i2.SelectionService"],"mappings":"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"}