react-native-nitro-xlsx 0.1.4 → 0.2.6

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 (428) hide show
  1. package/NitroXlsx.podspec +27 -27
  2. package/Package.swift +35 -10
  3. package/README.md +220 -58
  4. package/android/CMakeLists.txt +24 -27
  5. package/android/cpp-adapter.cpp +12 -0
  6. package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +9 -0
  7. package/cpp/HybridNitroXlsx.cpp +25 -179
  8. package/cpp/HybridNitroXlsx.hpp +2 -2
  9. package/cpp/HybridXlsxConditionalFormat.cpp +252 -0
  10. package/cpp/HybridXlsxConditionalFormat.hpp +62 -0
  11. package/cpp/HybridXlsxConditionalFormats.cpp +46 -0
  12. package/cpp/HybridXlsxConditionalFormats.hpp +28 -0
  13. package/cpp/HybridXlsxWorkbook.cpp +159 -196
  14. package/cpp/HybridXlsxWorkbook.hpp +7 -2
  15. package/cpp/HybridXlsxWorksheet.cpp +433 -62
  16. package/cpp/HybridXlsxWorksheet.hpp +73 -26
  17. package/cpp/XlsxCacheDir.cpp +76 -0
  18. package/cpp/XlsxCacheDir.hpp +27 -0
  19. package/cpp/XlsxError.hpp +68 -0
  20. package/cpp/XlsxJson.cpp +185 -0
  21. package/cpp/XlsxJson.hpp +36 -0
  22. package/ios/XlsxCacheDir.mm +60 -0
  23. package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +2 -0
  24. package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +5 -3
  25. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.cpp +54 -0
  26. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.hpp +95 -0
  27. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.cpp +24 -0
  28. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.hpp +68 -0
  29. package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +3 -0
  30. package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +6 -1
  31. package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +47 -19
  32. package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +52 -20
  33. package/package.json +3 -3
  34. package/scripts/run-cpp-tests.sh +14 -0
  35. package/src/__mocks__/react-native-nitro-modules.ts +1 -0
  36. package/src/__tests__/index.test.ts +76 -7
  37. package/src/index.ts +107 -18
  38. package/src/specs/NitroXlsx.nitro.ts +141 -44
  39. package/thirdparty/OpenXLSX/.clang-format +118 -0
  40. package/thirdparty/OpenXLSX/.clang-tidy +28 -0
  41. package/thirdparty/OpenXLSX/.gitignore +130 -0
  42. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
  43. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
  44. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
  45. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
  46. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
  47. package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
  48. package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
  49. package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
  50. package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
  51. package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
  52. package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
  53. package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
  54. package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
  55. package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
  56. package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
  57. package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
  58. package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
  59. package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
  60. package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
  61. package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
  62. package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
  63. package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
  64. package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
  65. package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
  66. package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
  67. package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
  68. package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
  69. package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
  70. package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
  71. package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
  72. package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
  73. package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
  74. package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
  75. package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
  76. package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
  77. package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
  78. package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
  79. package/thirdparty/OpenXLSX/LICENSE.md +29 -0
  80. package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
  81. package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
  82. package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
  83. package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
  84. package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
  85. package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
  86. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
  87. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
  88. package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
  89. package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
  90. package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
  91. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
  92. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
  93. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
  94. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
  95. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
  96. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
  97. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
  98. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
  99. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
  100. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
  101. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
  102. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
  103. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
  104. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
  105. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
  106. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
  107. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
  108. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
  109. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
  110. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
  111. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
  112. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
  113. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
  114. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
  115. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
  116. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
  117. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
  118. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
  119. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
  120. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
  121. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
  122. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
  123. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
  124. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
  125. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
  126. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
  127. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
  128. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
  129. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
  130. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
  131. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
  132. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
  133. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
  134. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
  135. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
  136. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
  137. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
  138. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
  139. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
  140. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
  141. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
  142. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
  143. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
  144. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
  145. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
  146. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
  147. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
  148. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
  149. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
  150. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
  151. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
  152. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
  153. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
  154. package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
  155. package/thirdparty/OpenXLSX/README.md +1279 -0
  156. package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
  157. package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
  158. package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
  159. package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
  160. package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
  161. package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
  162. package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
  163. package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
  164. package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
  165. package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
  166. package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
  167. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
  168. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
  169. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
  170. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
  171. package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
  172. package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
  173. package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
  174. package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
  175. package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
  176. package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
  177. package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
  178. package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
  179. package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
  180. package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
  181. package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
  182. package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
  183. package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
  184. package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
  185. package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
  186. package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
  187. package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
  188. package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
  189. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
  190. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
  191. package/thirdparty/OpenXLSX/vcpkg.json +24 -0
  192. package/thirdparty/README.md +42 -0
  193. package/thirdparty/miniz/.clang-format +47 -0
  194. package/thirdparty/miniz/.travis.yml +2 -0
  195. package/thirdparty/miniz/CMakeLists.txt +333 -0
  196. package/thirdparty/miniz/CMakePresets.json +31 -0
  197. package/thirdparty/miniz/ChangeLog.md +272 -0
  198. package/thirdparty/miniz/Config.cmake.in +1 -0
  199. package/thirdparty/miniz/LICENSE +22 -0
  200. package/thirdparty/miniz/amalgamate.sh +57 -0
  201. package/thirdparty/miniz/examples/example1.c +105 -0
  202. package/thirdparty/miniz/examples/example2.c +164 -0
  203. package/thirdparty/miniz/examples/example3.c +269 -0
  204. package/thirdparty/miniz/examples/example4.c +102 -0
  205. package/thirdparty/miniz/examples/example5.c +327 -0
  206. package/thirdparty/miniz/examples/example6.c +189 -0
  207. package/thirdparty/miniz/meson.build +21 -0
  208. package/thirdparty/miniz/miniz.c +646 -0
  209. package/thirdparty/miniz/miniz.h +615 -0
  210. package/thirdparty/miniz/miniz.pc.in +13 -0
  211. package/thirdparty/miniz/miniz_common.h +89 -0
  212. package/thirdparty/miniz/miniz_export.h +20 -0
  213. package/thirdparty/miniz/miniz_tdef.c +1602 -0
  214. package/thirdparty/miniz/miniz_tdef.h +199 -0
  215. package/thirdparty/miniz/miniz_tinfl.c +778 -0
  216. package/thirdparty/miniz/miniz_tinfl.h +150 -0
  217. package/thirdparty/miniz/miniz_zip.c +4895 -0
  218. package/thirdparty/miniz/miniz_zip.h +454 -0
  219. package/thirdparty/miniz/readme.md +46 -0
  220. package/thirdparty/miniz/test.sh +36 -0
  221. package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
  222. package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
  223. package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
  224. package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
  225. package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
  226. package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
  227. package/thirdparty/miniz/tests/fuzz_main.c +55 -0
  228. package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
  229. package/thirdparty/miniz/tests/main.cpp +185 -0
  230. package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
  231. package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
  232. package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
  233. package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
  234. package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
  235. package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
  236. package/thirdparty/miniz/tests/timer.cpp +152 -0
  237. package/thirdparty/miniz/tests/timer.h +40 -0
  238. package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
  239. package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
  240. package/thirdparty/miniz/tests/zip.dict +9 -0
  241. package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
  242. package/thirdparty/pugixml/.codecov.yml +7 -0
  243. package/thirdparty/pugixml/.gitattributes +1 -0
  244. package/thirdparty/pugixml/CMakeLists.txt +330 -0
  245. package/thirdparty/pugixml/LICENSE.md +24 -0
  246. package/thirdparty/pugixml/Makefile +98 -0
  247. package/thirdparty/pugixml/README.md +81 -0
  248. package/thirdparty/pugixml/SECURITY.md +9 -0
  249. package/thirdparty/pugixml/appveyor.yml +50 -0
  250. package/thirdparty/pugixml/docs/config.adoc +7 -0
  251. package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
  252. package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
  253. package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
  254. package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
  255. package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
  256. package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
  257. package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
  258. package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
  259. package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
  260. package/thirdparty/pugixml/docs/manual.adoc +3326 -0
  261. package/thirdparty/pugixml/docs/manual.html +6395 -0
  262. package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
  263. package/thirdparty/pugixml/docs/quickstart.html +1107 -0
  264. package/thirdparty/pugixml/docs/samples/character.xml +8 -0
  265. package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
  266. package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
  267. package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
  268. package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
  269. package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
  270. package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
  271. package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
  272. package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
  273. package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
  274. package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
  275. package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
  276. package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
  277. package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
  278. package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
  279. package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
  280. package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
  281. package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
  282. package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
  283. package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
  284. package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
  285. package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
  286. package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
  287. package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
  288. package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
  289. package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
  290. package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
  291. package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
  292. package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
  293. package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
  294. package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
  295. package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
  296. package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
  297. package/thirdparty/pugixml/readme.txt +50 -0
  298. package/thirdparty/pugixml/scripts/archive.py +54 -0
  299. package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
  300. package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
  301. package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
  302. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
  303. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
  304. package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
  305. package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
  306. package/thirdparty/pugixml/scripts/premake4.lua +92 -0
  307. package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
  308. package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
  309. package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
  310. package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
  311. package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
  312. package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
  313. package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
  314. package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
  315. package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
  316. package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
  317. package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
  318. package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
  319. package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
  320. package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
  321. package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
  322. package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
  323. package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
  324. package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
  325. package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
  326. package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
  327. package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
  328. package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
  329. package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
  330. package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
  331. package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
  332. package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
  333. package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
  334. package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
  335. package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
  336. package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
  337. package/thirdparty/pugixml/tests/allocator.cpp +175 -0
  338. package/thirdparty/pugixml/tests/allocator.hpp +10 -0
  339. package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
  340. package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
  341. package/thirdparty/pugixml/tests/data/empty.xml +0 -0
  342. package/thirdparty/pugixml/tests/data/large.xml +1 -0
  343. package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
  344. package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
  345. package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
  346. package/thirdparty/pugixml/tests/data/small.xml +1 -0
  347. package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
  348. package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
  349. package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
  350. package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
  351. package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
  352. package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
  353. package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
  354. package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
  355. package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
  356. package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
  357. package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
  358. package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
  359. package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
  360. package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
  361. package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
  362. package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
  363. package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
  364. package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
  365. package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
  366. package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
  367. package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
  368. package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
  369. package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
  370. package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
  371. package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
  372. package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
  373. package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
  374. package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
  375. package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
  376. package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
  377. package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
  378. package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
  379. package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
  380. package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
  381. package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
  382. package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
  383. package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
  384. package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
  385. package/thirdparty/pugixml/tests/helpers.hpp +114 -0
  386. package/thirdparty/pugixml/tests/main.cpp +218 -0
  387. package/thirdparty/pugixml/tests/test.cpp +220 -0
  388. package/thirdparty/pugixml/tests/test.hpp +175 -0
  389. package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
  390. package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
  391. package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
  392. package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
  393. package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
  394. package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
  395. package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
  396. package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
  397. package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
  398. package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
  399. package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
  400. package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
  401. package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
  402. package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
  403. package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
  404. package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
  405. package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
  406. package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
  407. package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
  408. package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
  409. package/thirdparty/pugixml/tests/test_version.cpp +5 -0
  410. package/thirdparty/pugixml/tests/test_write.cpp +757 -0
  411. package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
  412. package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
  413. package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
  414. package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
  415. package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
  416. package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
  417. package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
  418. package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
  419. package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
  420. package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
  421. package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
  422. package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
  423. package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
  424. package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
  425. package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
  426. package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
  427. package/ios/dummy.swift +0 -2
  428. package/scripts/prepare-openxlsx.js +0 -109
@@ -0,0 +1,54 @@
1
+ ///
2
+ /// HybridXlsxConditionalFormatSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridXlsxConditionalFormatSpec.hpp"
9
+
10
+ namespace margelo::nitro::xlsx {
11
+
12
+ void HybridXlsxConditionalFormatSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridMethod("getSqref", &HybridXlsxConditionalFormatSpec::getSqref);
18
+ prototype.registerHybridMethod("setSqref", &HybridXlsxConditionalFormatSpec::setSqref);
19
+ prototype.registerHybridMethod("getRuleCount", &HybridXlsxConditionalFormatSpec::getRuleCount);
20
+ prototype.registerHybridMethod("createRule", &HybridXlsxConditionalFormatSpec::createRule);
21
+ prototype.registerHybridMethod("deleteRule", &HybridXlsxConditionalFormatSpec::deleteRule);
22
+ prototype.registerHybridMethod("getRuleType", &HybridXlsxConditionalFormatSpec::getRuleType);
23
+ prototype.registerHybridMethod("setRuleType", &HybridXlsxConditionalFormatSpec::setRuleType);
24
+ prototype.registerHybridMethod("getRuleDxfId", &HybridXlsxConditionalFormatSpec::getRuleDxfId);
25
+ prototype.registerHybridMethod("setRuleDxfId", &HybridXlsxConditionalFormatSpec::setRuleDxfId);
26
+ prototype.registerHybridMethod("getRuleFormula", &HybridXlsxConditionalFormatSpec::getRuleFormula);
27
+ prototype.registerHybridMethod("setRuleFormula", &HybridXlsxConditionalFormatSpec::setRuleFormula);
28
+ prototype.registerHybridMethod("getRuleOperator", &HybridXlsxConditionalFormatSpec::getRuleOperator);
29
+ prototype.registerHybridMethod("setRuleOperator", &HybridXlsxConditionalFormatSpec::setRuleOperator);
30
+ prototype.registerHybridMethod("getRuleText", &HybridXlsxConditionalFormatSpec::getRuleText);
31
+ prototype.registerHybridMethod("setRuleText", &HybridXlsxConditionalFormatSpec::setRuleText);
32
+ prototype.registerHybridMethod("getRulePriority", &HybridXlsxConditionalFormatSpec::getRulePriority);
33
+ prototype.registerHybridMethod("setRulePriority", &HybridXlsxConditionalFormatSpec::setRulePriority);
34
+ prototype.registerHybridMethod("getRuleStopIfTrue", &HybridXlsxConditionalFormatSpec::getRuleStopIfTrue);
35
+ prototype.registerHybridMethod("setRuleStopIfTrue", &HybridXlsxConditionalFormatSpec::setRuleStopIfTrue);
36
+ prototype.registerHybridMethod("getRuleTimePeriod", &HybridXlsxConditionalFormatSpec::getRuleTimePeriod);
37
+ prototype.registerHybridMethod("setRuleTimePeriod", &HybridXlsxConditionalFormatSpec::setRuleTimePeriod);
38
+ prototype.registerHybridMethod("getRuleRank", &HybridXlsxConditionalFormatSpec::getRuleRank);
39
+ prototype.registerHybridMethod("setRuleRank", &HybridXlsxConditionalFormatSpec::setRuleRank);
40
+ prototype.registerHybridMethod("getRuleStdDev", &HybridXlsxConditionalFormatSpec::getRuleStdDev);
41
+ prototype.registerHybridMethod("setRuleStdDev", &HybridXlsxConditionalFormatSpec::setRuleStdDev);
42
+ prototype.registerHybridMethod("getRuleAboveAverage", &HybridXlsxConditionalFormatSpec::getRuleAboveAverage);
43
+ prototype.registerHybridMethod("setRuleAboveAverage", &HybridXlsxConditionalFormatSpec::setRuleAboveAverage);
44
+ prototype.registerHybridMethod("getRulePercent", &HybridXlsxConditionalFormatSpec::getRulePercent);
45
+ prototype.registerHybridMethod("setRulePercent", &HybridXlsxConditionalFormatSpec::setRulePercent);
46
+ prototype.registerHybridMethod("getRuleBottom", &HybridXlsxConditionalFormatSpec::getRuleBottom);
47
+ prototype.registerHybridMethod("setRuleBottom", &HybridXlsxConditionalFormatSpec::setRuleBottom);
48
+ prototype.registerHybridMethod("getRuleEqualAverage", &HybridXlsxConditionalFormatSpec::getRuleEqualAverage);
49
+ prototype.registerHybridMethod("setRuleEqualAverage", &HybridXlsxConditionalFormatSpec::setRuleEqualAverage);
50
+ prototype.registerHybridMethod("summary", &HybridXlsxConditionalFormatSpec::summary);
51
+ });
52
+ }
53
+
54
+ } // namespace margelo::nitro::xlsx
@@ -0,0 +1,95 @@
1
+ ///
2
+ /// HybridXlsxConditionalFormatSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/HybridObject.hpp>)
11
+ #include <NitroModules/HybridObject.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+
16
+
17
+
18
+ #include <string>
19
+
20
+ namespace margelo::nitro::xlsx {
21
+
22
+ using namespace margelo::nitro;
23
+
24
+ /**
25
+ * An abstract base class for `XlsxConditionalFormat`
26
+ * Inherit this class to create instances of `HybridXlsxConditionalFormatSpec` in C++.
27
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
28
+ * @example
29
+ * ```cpp
30
+ * class HybridXlsxConditionalFormat: public HybridXlsxConditionalFormatSpec {
31
+ * public:
32
+ * HybridXlsxConditionalFormat(...): HybridObject(TAG) { ... }
33
+ * // ...
34
+ * };
35
+ * ```
36
+ */
37
+ class HybridXlsxConditionalFormatSpec: public virtual HybridObject {
38
+ public:
39
+ // Constructor
40
+ explicit HybridXlsxConditionalFormatSpec(): HybridObject(TAG) { }
41
+
42
+ // Destructor
43
+ ~HybridXlsxConditionalFormatSpec() override = default;
44
+
45
+ public:
46
+ // Properties
47
+
48
+
49
+ public:
50
+ // Methods
51
+ virtual std::string getSqref() = 0;
52
+ virtual void setSqref(const std::string& sqref) = 0;
53
+ virtual double getRuleCount() = 0;
54
+ virtual double createRule() = 0;
55
+ virtual bool deleteRule(double index) = 0;
56
+ virtual double getRuleType(double index) = 0;
57
+ virtual void setRuleType(double index, double type) = 0;
58
+ virtual double getRuleDxfId(double index) = 0;
59
+ virtual void setRuleDxfId(double index, double dxfId) = 0;
60
+ virtual std::string getRuleFormula(double index, double formulaIndex) = 0;
61
+ virtual void setRuleFormula(double index, double formulaIndex, const std::string& formula) = 0;
62
+ virtual double getRuleOperator(double index) = 0;
63
+ virtual void setRuleOperator(double index, double op) = 0;
64
+ virtual std::string getRuleText(double index) = 0;
65
+ virtual void setRuleText(double index, const std::string& text) = 0;
66
+ virtual double getRulePriority(double index) = 0;
67
+ virtual void setRulePriority(double index, double priority) = 0;
68
+ virtual bool getRuleStopIfTrue(double index) = 0;
69
+ virtual void setRuleStopIfTrue(double index, bool stop) = 0;
70
+ virtual double getRuleTimePeriod(double index) = 0;
71
+ virtual void setRuleTimePeriod(double index, double period) = 0;
72
+ virtual double getRuleRank(double index) = 0;
73
+ virtual void setRuleRank(double index, double rank) = 0;
74
+ virtual double getRuleStdDev(double index) = 0;
75
+ virtual void setRuleStdDev(double index, double stdDev) = 0;
76
+ virtual bool getRuleAboveAverage(double index) = 0;
77
+ virtual void setRuleAboveAverage(double index, bool set) = 0;
78
+ virtual bool getRulePercent(double index) = 0;
79
+ virtual void setRulePercent(double index, bool set) = 0;
80
+ virtual bool getRuleBottom(double index) = 0;
81
+ virtual void setRuleBottom(double index, bool set) = 0;
82
+ virtual bool getRuleEqualAverage(double index) = 0;
83
+ virtual void setRuleEqualAverage(double index, bool set) = 0;
84
+ virtual std::string summary() = 0;
85
+
86
+ protected:
87
+ // Hybrid Setup
88
+ void loadHybridMethods() override;
89
+
90
+ protected:
91
+ // Tag for logging
92
+ static constexpr auto TAG = "XlsxConditionalFormat";
93
+ };
94
+
95
+ } // namespace margelo::nitro::xlsx
@@ -0,0 +1,24 @@
1
+ ///
2
+ /// HybridXlsxConditionalFormatsSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridXlsxConditionalFormatsSpec.hpp"
9
+
10
+ namespace margelo::nitro::xlsx {
11
+
12
+ void HybridXlsxConditionalFormatsSpec::loadHybridMethods() {
13
+ // load base methods/properties
14
+ HybridObject::loadHybridMethods();
15
+ // load custom methods/properties
16
+ registerHybrids(this, [](Prototype& prototype) {
17
+ prototype.registerHybridMethod("getCount", &HybridXlsxConditionalFormatsSpec::getCount);
18
+ prototype.registerHybridMethod("create", &HybridXlsxConditionalFormatsSpec::create);
19
+ prototype.registerHybridMethod("getByIndex", &HybridXlsxConditionalFormatsSpec::getByIndex);
20
+ prototype.registerHybridMethod("summary", &HybridXlsxConditionalFormatsSpec::summary);
21
+ });
22
+ }
23
+
24
+ } // namespace margelo::nitro::xlsx
@@ -0,0 +1,68 @@
1
+ ///
2
+ /// HybridXlsxConditionalFormatsSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/HybridObject.hpp>)
11
+ #include <NitroModules/HybridObject.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+
16
+ // Forward declaration of `HybridXlsxConditionalFormatSpec` to properly resolve imports.
17
+ namespace margelo::nitro::xlsx { class HybridXlsxConditionalFormatSpec; }
18
+
19
+ #include <memory>
20
+ #include "HybridXlsxConditionalFormatSpec.hpp"
21
+ #include <string>
22
+
23
+ namespace margelo::nitro::xlsx {
24
+
25
+ using namespace margelo::nitro;
26
+
27
+ /**
28
+ * An abstract base class for `XlsxConditionalFormats`
29
+ * Inherit this class to create instances of `HybridXlsxConditionalFormatsSpec` in C++.
30
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
31
+ * @example
32
+ * ```cpp
33
+ * class HybridXlsxConditionalFormats: public HybridXlsxConditionalFormatsSpec {
34
+ * public:
35
+ * HybridXlsxConditionalFormats(...): HybridObject(TAG) { ... }
36
+ * // ...
37
+ * };
38
+ * ```
39
+ */
40
+ class HybridXlsxConditionalFormatsSpec: public virtual HybridObject {
41
+ public:
42
+ // Constructor
43
+ explicit HybridXlsxConditionalFormatsSpec(): HybridObject(TAG) { }
44
+
45
+ // Destructor
46
+ ~HybridXlsxConditionalFormatsSpec() override = default;
47
+
48
+ public:
49
+ // Properties
50
+
51
+
52
+ public:
53
+ // Methods
54
+ virtual double getCount() = 0;
55
+ virtual std::shared_ptr<HybridXlsxConditionalFormatSpec> create(const std::string& sqref) = 0;
56
+ virtual std::shared_ptr<HybridXlsxConditionalFormatSpec> getByIndex(double index) = 0;
57
+ virtual std::string summary() = 0;
58
+
59
+ protected:
60
+ // Hybrid Setup
61
+ void loadHybridMethods() override;
62
+
63
+ protected:
64
+ // Tag for logging
65
+ static constexpr auto TAG = "XlsxConditionalFormats";
66
+ };
67
+
68
+ } // namespace margelo::nitro::xlsx
@@ -19,6 +19,9 @@ namespace margelo::nitro::xlsx {
19
19
  prototype.registerHybridMethod("getWorksheetByName", &HybridXlsxWorkbookSpec::getWorksheetByName);
20
20
  prototype.registerHybridMethod("getOrAddWorksheet", &HybridXlsxWorkbookSpec::getOrAddWorksheet);
21
21
  prototype.registerHybridMethod("getWorksheetCount", &HybridXlsxWorkbookSpec::getWorksheetCount);
22
+ prototype.registerHybridMethod("deleteSheet", &HybridXlsxWorkbookSpec::deleteSheet);
23
+ prototype.registerHybridMethod("updateSheetName", &HybridXlsxWorkbookSpec::updateSheetName);
24
+ prototype.registerHybridMethod("clone", &HybridXlsxWorkbookSpec::clone);
22
25
  prototype.registerHybridMethod("addCellFormat", &HybridXlsxWorkbookSpec::addCellFormat);
23
26
  prototype.registerHybridMethod("getBuffer", &HybridXlsxWorkbookSpec::getBuffer);
24
27
  prototype.registerHybridMethod("toJSON", &HybridXlsxWorkbookSpec::toJSON);
@@ -25,7 +25,9 @@ namespace margelo::nitro::xlsx { class HybridXlsxCellFormatSpec; }
25
25
  #include "HybridXlsxCellFormatSpec.hpp"
26
26
  #include <NitroModules/ArrayBuffer.hpp>
27
27
  #include <NitroModules/Promise.hpp>
28
+ #include <NitroModules/AnyMap.hpp>
28
29
  #include <vector>
30
+ #include <unordered_map>
29
31
 
30
32
  namespace margelo::nitro::xlsx {
31
33
 
@@ -63,9 +65,12 @@ namespace margelo::nitro::xlsx {
63
65
  virtual std::shared_ptr<HybridXlsxWorksheetSpec> getWorksheetByName(const std::string& name) = 0;
64
66
  virtual std::shared_ptr<HybridXlsxWorksheetSpec> getOrAddWorksheet(const std::string& name) = 0;
65
67
  virtual double getWorksheetCount() = 0;
68
+ virtual void deleteSheet(const std::string& name) = 0;
69
+ virtual void updateSheetName(const std::string& oldName, const std::string& newName) = 0;
70
+ virtual std::shared_ptr<HybridXlsxWorksheetSpec> clone(const std::string& existingName, const std::string& newName) = 0;
66
71
  virtual std::shared_ptr<HybridXlsxCellFormatSpec> addCellFormat() = 0;
67
72
  virtual std::shared_ptr<Promise<std::shared_ptr<ArrayBuffer>>> getBuffer() = 0;
68
- virtual std::string toJSON(const std::optional<std::vector<std::string>>& keys) = 0;
73
+ virtual std::unordered_map<std::string, std::vector<std::shared_ptr<AnyMap>>> toJSON() = 0;
69
74
 
70
75
  protected:
71
76
  // Hybrid Setup
@@ -27,42 +27,70 @@ namespace margelo::nitro::xlsx {
27
27
  prototype.registerHybridMethod("writeURL", &HybridXlsxWorksheetSpec::writeURL);
28
28
  prototype.registerHybridMethod("setColumn", &HybridXlsxWorksheetSpec::setColumn);
29
29
  prototype.registerHybridMethod("setRow", &HybridXlsxWorksheetSpec::setRow);
30
+ prototype.registerHybridMethod("deleteRow", &HybridXlsxWorksheetSpec::deleteRow);
31
+ prototype.registerHybridMethod("deleteColumn", &HybridXlsxWorksheetSpec::deleteColumn);
30
32
  prototype.registerHybridMethod("mergeRange", &HybridXlsxWorksheetSpec::mergeRange);
31
33
  prototype.registerHybridMethod("mergeRangeNum", &HybridXlsxWorksheetSpec::mergeRangeNum);
32
- prototype.registerHybridMethod("insertImage", &HybridXlsxWorksheetSpec::insertImage);
33
- prototype.registerHybridMethod("insertImageBuffer", &HybridXlsxWorksheetSpec::insertImageBuffer);
34
- prototype.registerHybridMethod("autofilter", &HybridXlsxWorksheetSpec::autofilter);
35
- prototype.registerHybridMethod("freezePanes", &HybridXlsxWorksheetSpec::freezePanes);
36
- prototype.registerHybridMethod("splitPanes", &HybridXlsxWorksheetSpec::splitPanes);
37
- prototype.registerHybridMethod("setTabColor", &HybridXlsxWorksheetSpec::setTabColor);
34
+ prototype.registerHybridMethod("unmergeCells", &HybridXlsxWorksheetSpec::unmergeCells);
38
35
  prototype.registerHybridMethod("hide", &HybridXlsxWorksheetSpec::hide);
39
36
  prototype.registerHybridMethod("activate", &HybridXlsxWorksheetSpec::activate);
40
- prototype.registerHybridMethod("setFirstSheet", &HybridXlsxWorksheetSpec::setFirstSheet);
41
37
  prototype.registerHybridMethod("protect", &HybridXlsxWorksheetSpec::protect);
42
- prototype.registerHybridMethod("setPortrait", &HybridXlsxWorksheetSpec::setPortrait);
43
- prototype.registerHybridMethod("setLandscape", &HybridXlsxWorksheetSpec::setLandscape);
44
- prototype.registerHybridMethod("setPaper", &HybridXlsxWorksheetSpec::setPaper);
45
- prototype.registerHybridMethod("setHeader", &HybridXlsxWorksheetSpec::setHeader);
46
- prototype.registerHybridMethod("setFooter", &HybridXlsxWorksheetSpec::setFooter);
47
- prototype.registerHybridMethod("setPrintArea", &HybridXlsxWorksheetSpec::setPrintArea);
48
- prototype.registerHybridMethod("fitToPages", &HybridXlsxWorksheetSpec::fitToPages);
49
- prototype.registerHybridMethod("setZoom", &HybridXlsxWorksheetSpec::setZoom);
50
- prototype.registerHybridMethod("setGridlines", &HybridXlsxWorksheetSpec::setGridlines);
51
- prototype.registerHybridMethod("centerHorizontally", &HybridXlsxWorksheetSpec::centerHorizontally);
52
- prototype.registerHybridMethod("centerVertically", &HybridXlsxWorksheetSpec::centerVertically);
53
- prototype.registerHybridMethod("setOutline", &HybridXlsxWorksheetSpec::setOutline);
38
+ prototype.registerHybridMethod("protectSheet", &HybridXlsxWorksheetSpec::protectSheet);
39
+ prototype.registerHybridMethod("protectObjects", &HybridXlsxWorksheetSpec::protectObjects);
40
+ prototype.registerHybridMethod("protectScenarios", &HybridXlsxWorksheetSpec::protectScenarios);
41
+ prototype.registerHybridMethod("setPassword", &HybridXlsxWorksheetSpec::setPassword);
42
+ prototype.registerHybridMethod("setPasswordHash", &HybridXlsxWorksheetSpec::setPasswordHash);
43
+ prototype.registerHybridMethod("clearPassword", &HybridXlsxWorksheetSpec::clearPassword);
44
+ prototype.registerHybridMethod("clearSheetProtection", &HybridXlsxWorksheetSpec::clearSheetProtection);
45
+ prototype.registerHybridMethod("allowInsertColumns", &HybridXlsxWorksheetSpec::allowInsertColumns);
46
+ prototype.registerHybridMethod("allowInsertRows", &HybridXlsxWorksheetSpec::allowInsertRows);
47
+ prototype.registerHybridMethod("allowDeleteColumns", &HybridXlsxWorksheetSpec::allowDeleteColumns);
48
+ prototype.registerHybridMethod("allowDeleteRows", &HybridXlsxWorksheetSpec::allowDeleteRows);
49
+ prototype.registerHybridMethod("allowSelectLockedCells", &HybridXlsxWorksheetSpec::allowSelectLockedCells);
50
+ prototype.registerHybridMethod("allowSelectUnlockedCells", &HybridXlsxWorksheetSpec::allowSelectUnlockedCells);
51
+ prototype.registerHybridMethod("denyInsertColumns", &HybridXlsxWorksheetSpec::denyInsertColumns);
52
+ prototype.registerHybridMethod("denyInsertRows", &HybridXlsxWorksheetSpec::denyInsertRows);
53
+ prototype.registerHybridMethod("denyDeleteColumns", &HybridXlsxWorksheetSpec::denyDeleteColumns);
54
+ prototype.registerHybridMethod("denyDeleteRows", &HybridXlsxWorksheetSpec::denyDeleteRows);
55
+ prototype.registerHybridMethod("denySelectLockedCells", &HybridXlsxWorksheetSpec::denySelectLockedCells);
56
+ prototype.registerHybridMethod("denySelectUnlockedCells", &HybridXlsxWorksheetSpec::denySelectUnlockedCells);
57
+ prototype.registerHybridMethod("sheetProtected", &HybridXlsxWorksheetSpec::sheetProtected);
58
+ prototype.registerHybridMethod("objectsProtected", &HybridXlsxWorksheetSpec::objectsProtected);
59
+ prototype.registerHybridMethod("scenariosProtected", &HybridXlsxWorksheetSpec::scenariosProtected);
60
+ prototype.registerHybridMethod("insertColumnsAllowed", &HybridXlsxWorksheetSpec::insertColumnsAllowed);
61
+ prototype.registerHybridMethod("insertRowsAllowed", &HybridXlsxWorksheetSpec::insertRowsAllowed);
62
+ prototype.registerHybridMethod("deleteColumnsAllowed", &HybridXlsxWorksheetSpec::deleteColumnsAllowed);
63
+ prototype.registerHybridMethod("deleteRowsAllowed", &HybridXlsxWorksheetSpec::deleteRowsAllowed);
64
+ prototype.registerHybridMethod("selectLockedCellsAllowed", &HybridXlsxWorksheetSpec::selectLockedCellsAllowed);
65
+ prototype.registerHybridMethod("selectUnlockedCellsAllowed", &HybridXlsxWorksheetSpec::selectUnlockedCellsAllowed);
66
+ prototype.registerHybridMethod("passwordIsSet", &HybridXlsxWorksheetSpec::passwordIsSet);
67
+ prototype.registerHybridMethod("passwordHash", &HybridXlsxWorksheetSpec::passwordHash);
68
+ prototype.registerHybridMethod("sheetProtectionSummary", &HybridXlsxWorksheetSpec::sheetProtectionSummary);
54
69
  prototype.registerHybridMethod("setColumnHidden", &HybridXlsxWorksheetSpec::setColumnHidden);
55
70
  prototype.registerHybridMethod("setRowHidden", &HybridXlsxWorksheetSpec::setRowHidden);
71
+ prototype.registerHybridMethod("setComment", &HybridXlsxWorksheetSpec::setComment);
72
+ prototype.registerHybridMethod("getComment", &HybridXlsxWorksheetSpec::getComment);
73
+ prototype.registerHybridMethod("hasComment", &HybridXlsxWorksheetSpec::hasComment);
74
+ prototype.registerHybridMethod("deleteComment", &HybridXlsxWorksheetSpec::deleteComment);
75
+ prototype.registerHybridMethod("getCommentCount", &HybridXlsxWorksheetSpec::getCommentCount);
76
+ prototype.registerHybridMethod("addCommentAuthor", &HybridXlsxWorksheetSpec::addCommentAuthor);
77
+ prototype.registerHybridMethod("getCommentAuthor", &HybridXlsxWorksheetSpec::getCommentAuthor);
78
+ prototype.registerHybridMethod("getConditionalFormats", &HybridXlsxWorksheetSpec::getConditionalFormats);
56
79
  prototype.registerHybridMethod("getCellValue", &HybridXlsxWorksheetSpec::getCellValue);
57
80
  prototype.registerHybridMethod("getCellString", &HybridXlsxWorksheetSpec::getCellString);
58
81
  prototype.registerHybridMethod("getCellRawValue", &HybridXlsxWorksheetSpec::getCellRawValue);
59
82
  prototype.registerHybridMethod("getCellType", &HybridXlsxWorksheetSpec::getCellType);
60
83
  prototype.registerHybridMethod("getCellFormat", &HybridXlsxWorksheetSpec::getCellFormat);
84
+ prototype.registerHybridMethod("hasFormula", &HybridXlsxWorksheetSpec::hasFormula);
85
+ prototype.registerHybridMethod("formula", &HybridXlsxWorksheetSpec::formula);
86
+ prototype.registerHybridMethod("findCell", &HybridXlsxWorksheetSpec::findCell);
61
87
  prototype.registerHybridMethod("getRowCount", &HybridXlsxWorksheetSpec::getRowCount);
62
88
  prototype.registerHybridMethod("getColumnCount", &HybridXlsxWorksheetSpec::getColumnCount);
63
89
  prototype.registerHybridMethod("getLastRow", &HybridXlsxWorksheetSpec::getLastRow);
64
90
  prototype.registerHybridMethod("getLastColumn", &HybridXlsxWorksheetSpec::getLastColumn);
65
91
  prototype.registerHybridMethod("getName", &HybridXlsxWorksheetSpec::getName);
92
+ prototype.registerHybridMethod("toJSON", &HybridXlsxWorksheetSpec::toJSON);
93
+ prototype.registerHybridMethod("fromJSON", &HybridXlsxWorksheetSpec::fromJSON);
66
94
  });
67
95
  }
68
96
 
@@ -15,6 +15,8 @@
15
15
 
16
16
  // Forward declaration of `HybridXlsxCellFormatSpec` to properly resolve imports.
17
17
  namespace margelo::nitro::xlsx { class HybridXlsxCellFormatSpec; }
18
+ // Forward declaration of `HybridXlsxConditionalFormatsSpec` to properly resolve imports.
19
+ namespace margelo::nitro::xlsx { class HybridXlsxConditionalFormatsSpec; }
18
20
  // Forward declaration of `CellType` to properly resolve imports.
19
21
  namespace margelo::nitro::xlsx { enum class CellType; }
20
22
 
@@ -22,10 +24,12 @@ namespace margelo::nitro::xlsx { enum class CellType; }
22
24
  #include <memory>
23
25
  #include "HybridXlsxCellFormatSpec.hpp"
24
26
  #include <optional>
25
- #include <NitroModules/ArrayBuffer.hpp>
27
+ #include "HybridXlsxConditionalFormatsSpec.hpp"
26
28
  #include <NitroModules/Null.hpp>
27
29
  #include <variant>
28
30
  #include "CellType.hpp"
31
+ #include <NitroModules/AnyMap.hpp>
32
+ #include <vector>
29
33
 
30
34
  namespace margelo::nitro::xlsx {
31
35
 
@@ -71,42 +75,70 @@ namespace margelo::nitro::xlsx {
71
75
  virtual void writeURL(double row, double col, const std::string& url, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
72
76
  virtual void setColumn(double firstCol, double lastCol, double width, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
73
77
  virtual void setRow(double row, double height, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
78
+ virtual bool deleteRow(double row) = 0;
79
+ virtual bool deleteColumn(double col) = 0;
74
80
  virtual void mergeRange(double firstRow, double firstCol, double lastRow, double lastCol, const std::string& value, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
75
81
  virtual void mergeRangeNum(double firstRow, double firstCol, double lastRow, double lastCol, double value, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
76
- virtual void insertImage(double row, double col, const std::string& path, std::optional<double> xOffset, std::optional<double> yOffset, std::optional<double> xScale, std::optional<double> yScale) = 0;
77
- virtual void insertImageBuffer(double row, double col, const std::shared_ptr<ArrayBuffer>& buffer, const std::string& extension, std::optional<double> xOffset, std::optional<double> yOffset, std::optional<double> xScale, std::optional<double> yScale) = 0;
78
- virtual void autofilter(double firstRow, double firstCol, double lastRow, double lastCol) = 0;
79
- virtual void freezePanes(double row, double col) = 0;
80
- virtual void splitPanes(double row, double col) = 0;
81
- virtual void setTabColor(double color) = 0;
82
+ virtual void unmergeCells(double firstRow, double firstCol, double lastRow, double lastCol) = 0;
82
83
  virtual void hide() = 0;
83
84
  virtual void activate() = 0;
84
- virtual void setFirstSheet() = 0;
85
85
  virtual void protect(const std::optional<std::string>& password) = 0;
86
- virtual void setPortrait() = 0;
87
- virtual void setLandscape() = 0;
88
- virtual void setPaper(double paperType) = 0;
89
- virtual void setHeader(const std::string& header) = 0;
90
- virtual void setFooter(const std::string& footer) = 0;
91
- virtual void setPrintArea(double firstRow, double firstCol, double lastRow, double lastCol) = 0;
92
- virtual void fitToPages(double width, double height) = 0;
93
- virtual void setZoom(double scale) = 0;
94
- virtual void setGridlines(double option) = 0;
95
- virtual void centerHorizontally() = 0;
96
- virtual void centerVertically() = 0;
97
- virtual void setOutline(double level) = 0;
86
+ virtual void protectSheet(std::optional<bool> set) = 0;
87
+ virtual void protectObjects(std::optional<bool> set) = 0;
88
+ virtual void protectScenarios(std::optional<bool> set) = 0;
89
+ virtual void setPassword(const std::string& password) = 0;
90
+ virtual void setPasswordHash(const std::string& hash) = 0;
91
+ virtual void clearPassword() = 0;
92
+ virtual void clearSheetProtection() = 0;
93
+ virtual void allowInsertColumns(std::optional<bool> set) = 0;
94
+ virtual void allowInsertRows(std::optional<bool> set) = 0;
95
+ virtual void allowDeleteColumns(std::optional<bool> set) = 0;
96
+ virtual void allowDeleteRows(std::optional<bool> set) = 0;
97
+ virtual void allowSelectLockedCells(std::optional<bool> set) = 0;
98
+ virtual void allowSelectUnlockedCells(std::optional<bool> set) = 0;
99
+ virtual void denyInsertColumns() = 0;
100
+ virtual void denyInsertRows() = 0;
101
+ virtual void denyDeleteColumns() = 0;
102
+ virtual void denyDeleteRows() = 0;
103
+ virtual void denySelectLockedCells() = 0;
104
+ virtual void denySelectUnlockedCells() = 0;
105
+ virtual bool sheetProtected() = 0;
106
+ virtual bool objectsProtected() = 0;
107
+ virtual bool scenariosProtected() = 0;
108
+ virtual bool insertColumnsAllowed() = 0;
109
+ virtual bool insertRowsAllowed() = 0;
110
+ virtual bool deleteColumnsAllowed() = 0;
111
+ virtual bool deleteRowsAllowed() = 0;
112
+ virtual bool selectLockedCellsAllowed() = 0;
113
+ virtual bool selectUnlockedCellsAllowed() = 0;
114
+ virtual bool passwordIsSet() = 0;
115
+ virtual std::string passwordHash() = 0;
116
+ virtual std::string sheetProtectionSummary() = 0;
98
117
  virtual void setColumnHidden(double firstCol, double lastCol, bool hidden) = 0;
99
118
  virtual void setRowHidden(double row, bool hidden) = 0;
119
+ virtual void setComment(double row, double col, const std::string& text, std::optional<double> authorId) = 0;
120
+ virtual std::string getComment(double row, double col) = 0;
121
+ virtual bool hasComment(double row, double col) = 0;
122
+ virtual bool deleteComment(double row, double col) = 0;
123
+ virtual double getCommentCount() = 0;
124
+ virtual double addCommentAuthor(const std::string& author) = 0;
125
+ virtual std::string getCommentAuthor(double authorId) = 0;
126
+ virtual std::shared_ptr<HybridXlsxConditionalFormatsSpec> getConditionalFormats() = 0;
100
127
  virtual std::variant<bool, nitro::NullType, std::string, double> getCellValue(double row, double col) = 0;
101
128
  virtual std::string getCellString(double row, double col) = 0;
102
129
  virtual std::string getCellRawValue(double row, double col) = 0;
103
130
  virtual CellType getCellType(double row, double col) = 0;
104
131
  virtual std::shared_ptr<HybridXlsxCellFormatSpec> getCellFormat(double row, double col) = 0;
132
+ virtual bool hasFormula(double row, double col) = 0;
133
+ virtual std::string formula(double row, double col) = 0;
134
+ virtual bool findCell(double row, double col) = 0;
105
135
  virtual double getRowCount() = 0;
106
136
  virtual double getColumnCount() = 0;
107
137
  virtual double getLastRow() = 0;
108
138
  virtual double getLastColumn() = 0;
109
139
  virtual std::string getName() = 0;
140
+ virtual std::vector<std::shared_ptr<AnyMap>> toJSON(const std::optional<std::vector<std::string>>& keys) = 0;
141
+ virtual void fromJSON(const std::vector<std::shared_ptr<AnyMap>>& data) = 0;
110
142
 
111
143
  protected:
112
144
  // Hybrid Setup
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nitro-xlsx",
3
- "version": "0.1.4",
3
+ "version": "0.2.6",
4
4
  "description": "Fast XLSX file reading and writing for React Native using OpenXLSX and Nitro Modules",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/zydbkqf/react-native-nitro-xlsx",
@@ -10,10 +10,9 @@
10
10
  "types": "src/index.ts",
11
11
  "source": "src/index.ts",
12
12
  "scripts": {
13
- "postinstall": "node scripts/prepare-openxlsx.js",
14
13
  "specs": "nitrogen",
15
14
  "test": "jest",
16
- "test:cpp": "cd cpp/tests && [ -n \"$OPENXLSX_PATH\" ] || OPENXLSX_PATH=$HOME/OpenXLSX; cmake -B build -DOPENXLSX_PATH=$OPENXLSX_PATH && cmake --build build && cd build && ctest --output-on-failure",
15
+ "test:cpp": "bash scripts/run-cpp-tests.sh",
17
16
  "test:cpp:clean": "rm -rf cpp/tests/build"
18
17
  },
19
18
  "peerDependencies": {
@@ -35,6 +34,7 @@
35
34
  "src",
36
35
  "cpp",
37
36
  "!cpp/tests",
37
+ "thirdparty",
38
38
  "android",
39
39
  "ios",
40
40
  "scripts",
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ ROOT="$(cd "$(dirname "$0")/.." && pwd)"
5
+ cd "$ROOT/cpp/tests"
6
+
7
+ if [ -z "${OPENXLSX_PATH:-}" ]; then
8
+ OPENXLSX_PATH="$ROOT/thirdparty/OpenXLSX"
9
+ fi
10
+
11
+ cmake -B build -DOPENXLSX_PATH="$OPENXLSX_PATH"
12
+ cmake --build build
13
+ cd build
14
+ ctest --output-on-failure
@@ -24,5 +24,6 @@ export const NitroModules = {
24
24
  createWorkbook: jest.fn(),
25
25
  openWorkbook: jest.fn(),
26
26
  openWorkbookFromBuffer: jest.fn(),
27
+ fromJSON: jest.fn(),
27
28
  }),
28
29
  };
@@ -10,7 +10,11 @@ import {
10
10
  Gridlines,
11
11
  Colors,
12
12
  NumFormat,
13
- ImagePosition,
13
+ XlsxError,
14
+ XlsxErrorCode,
15
+ CfType,
16
+ CfOperator,
17
+ CfTimePeriod,
14
18
  } from '../index';
15
19
 
16
20
  describe('NitroXlsx', () => {
@@ -33,6 +37,14 @@ describe('NitroXlsx', () => {
33
37
  expect(NitroXlsx.openWorkbookFromBuffer).toBeDefined();
34
38
  expect(typeof NitroXlsx.openWorkbookFromBuffer).toBe('function');
35
39
  });
40
+
41
+ it('should have fromJSON method that accepts a Record of sheet rows', () => {
42
+ expect(NitroXlsx.fromJSON).toBeDefined();
43
+ expect(typeof NitroXlsx.fromJSON).toBe('function');
44
+ expect(() =>
45
+ NitroXlsx.fromJSON({ Sheet1: [{ Name: 'Alice', Age: 30 }] })
46
+ ).not.toThrow();
47
+ });
36
48
  });
37
49
 
38
50
  describe('Constants', () => {
@@ -130,12 +142,69 @@ describe('Constants', () => {
130
142
  });
131
143
  });
132
144
 
133
- describe('ImagePosition', () => {
134
- it('should export ImagePosition constants', () => {
135
- expect(ImagePosition).toBeDefined();
136
- expect(ImagePosition.MOVE_AND_SIZE).toBe(1);
137
- expect(ImagePosition.MOVE_DONT_SIZE).toBe(2);
138
- expect(ImagePosition.DONT_MOVE_DONT_SIZE).toBe(3);
145
+ describe('CfType', () => {
146
+ it('should export CfType constants', () => {
147
+ expect(CfType).toBeDefined();
148
+ expect(CfType.EXPRESSION).toBe(0);
149
+ expect(CfType.CELL_IS).toBe(1);
150
+ expect(CfType.TOP10).toBe(5);
151
+ expect(CfType.CONTAINS_TEXT).toBe(8);
152
+ expect(CfType.TIME_PERIOD).toBe(16);
153
+ });
154
+ });
155
+
156
+ describe('CfOperator', () => {
157
+ it('should export CfOperator constants', () => {
158
+ expect(CfOperator).toBeDefined();
159
+ expect(CfOperator.LESS_THAN).toBe(0);
160
+ expect(CfOperator.EQUAL).toBe(2);
161
+ expect(CfOperator.GREATER_THAN).toBe(5);
162
+ expect(CfOperator.BETWEEN).toBe(6);
139
163
  });
140
164
  });
165
+
166
+ describe('CfTimePeriod', () => {
167
+ it('should export CfTimePeriod constants', () => {
168
+ expect(CfTimePeriod).toBeDefined();
169
+ expect(CfTimePeriod.TODAY).toBe(0);
170
+ expect(CfTimePeriod.YESTERDAY).toBe(1);
171
+ expect(CfTimePeriod.THIS_WEEK).toBe(7);
172
+ });
173
+ });
174
+ });
175
+
176
+ describe('XlsxError', () => {
177
+ it('should export XlsxErrorCode constants', () => {
178
+ expect(XlsxErrorCode.INVALID_ARGUMENT).toBe('INVALID_ARGUMENT');
179
+ expect(XlsxErrorCode.SHEET_NOT_FOUND).toBe('SHEET_NOT_FOUND');
180
+ expect(XlsxErrorCode.INDEX_OUT_OF_RANGE).toBe('INDEX_OUT_OF_RANGE');
181
+ expect(XlsxErrorCode.UNSUPPORTED).toBe('UNSUPPORTED');
182
+ expect(XlsxErrorCode.XLSX_ERROR).toBe('XLSX_ERROR');
183
+ });
184
+
185
+ it('should create XlsxError with code and message', () => {
186
+ const err = new XlsxError(XlsxErrorCode.SHEET_NOT_FOUND, 'Sheet missing');
187
+ expect(err).toBeInstanceOf(Error);
188
+ expect(err.name).toBe('XlsxError');
189
+ expect(err.code).toBe('SHEET_NOT_FOUND');
190
+ expect(err.message).toContain('SHEET_NOT_FOUND');
191
+ expect(err.message).toContain('Sheet missing');
192
+ });
193
+
194
+ it('should parse native error message into XlsxError', () => {
195
+ const native = new Error('deleteSheet: SHEET_NOT_FOUND: Worksheet not found: Foo');
196
+ const err = XlsxError.from(native);
197
+ expect(err.code).toBe('SHEET_NOT_FOUND');
198
+ expect(err.message).toContain('Worksheet not found: Foo');
199
+ });
200
+
201
+ it('should wrap unknown errors with INTERNAL_ERROR', () => {
202
+ const err = XlsxError.from(new Error('something odd'));
203
+ expect(err.code).toBe('INTERNAL_ERROR');
204
+ });
205
+
206
+ it('should return the same instance if already XlsxError', () => {
207
+ const original = new XlsxError(XlsxErrorCode.IO_ERROR, 'disk');
208
+ expect(XlsxError.from(original)).toBe(original);
209
+ });
141
210
  });