react-native-nitro-xlsx 0.1.2 → 0.2.5
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.
- package/NOTICE +8 -35
- package/NitroXlsx.podspec +21 -57
- package/Package.swift +35 -0
- package/README.md +243 -36
- package/android/CMakeLists.txt +17 -23
- package/android/build.gradle +6 -0
- package/android/cpp-adapter.cpp +12 -0
- package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +9 -0
- package/cpp/HybridNitroXlsx.cpp +32 -9
- package/cpp/HybridNitroXlsx.hpp +2 -1
- package/cpp/HybridXlsxConditionalFormat.cpp +252 -0
- package/cpp/HybridXlsxConditionalFormat.hpp +62 -0
- package/cpp/HybridXlsxConditionalFormats.cpp +46 -0
- package/cpp/HybridXlsxConditionalFormats.hpp +28 -0
- package/cpp/HybridXlsxWorkbook.cpp +162 -87
- package/cpp/HybridXlsxWorkbook.hpp +7 -1
- package/cpp/HybridXlsxWorksheet.cpp +456 -61
- package/cpp/HybridXlsxWorksheet.hpp +73 -26
- package/cpp/XlsxCacheDir.cpp +76 -0
- package/cpp/XlsxCacheDir.hpp +27 -0
- package/cpp/XlsxError.hpp +68 -0
- package/cpp/XlsxJson.cpp +185 -0
- package/cpp/XlsxJson.hpp +36 -0
- package/ios/XlsxCacheDir.mm +60 -0
- package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +2 -0
- package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +5 -2
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.cpp +54 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.hpp +95 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +4 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +7 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +47 -19
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +52 -20
- package/package.json +5 -2
- package/scripts/prepare-openxlsx.js +126 -0
- package/scripts/run-cpp-tests.sh +14 -0
- package/src/__mocks__/react-native-nitro-modules.ts +1 -0
- package/src/__tests__/index.test.ts +76 -7
- package/src/index.ts +110 -9
- package/src/specs/NitroXlsx.nitro.ts +141 -42
|
@@ -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,8 +19,12 @@ 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);
|
|
27
|
+
prototype.registerHybridMethod("toJSON", &HybridXlsxWorkbookSpec::toJSON);
|
|
24
28
|
});
|
|
25
29
|
}
|
|
26
30
|
|
|
@@ -25,6 +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>
|
|
29
|
+
#include <vector>
|
|
30
|
+
#include <unordered_map>
|
|
28
31
|
|
|
29
32
|
namespace margelo::nitro::xlsx {
|
|
30
33
|
|
|
@@ -62,8 +65,12 @@ namespace margelo::nitro::xlsx {
|
|
|
62
65
|
virtual std::shared_ptr<HybridXlsxWorksheetSpec> getWorksheetByName(const std::string& name) = 0;
|
|
63
66
|
virtual std::shared_ptr<HybridXlsxWorksheetSpec> getOrAddWorksheet(const std::string& name) = 0;
|
|
64
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;
|
|
65
71
|
virtual std::shared_ptr<HybridXlsxCellFormatSpec> addCellFormat() = 0;
|
|
66
72
|
virtual std::shared_ptr<Promise<std::shared_ptr<ArrayBuffer>>> getBuffer() = 0;
|
|
73
|
+
virtual std::unordered_map<std::string, std::vector<std::shared_ptr<AnyMap>>> toJSON() = 0;
|
|
67
74
|
|
|
68
75
|
protected:
|
|
69
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("
|
|
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("
|
|
43
|
-
prototype.registerHybridMethod("
|
|
44
|
-
prototype.registerHybridMethod("
|
|
45
|
-
prototype.registerHybridMethod("
|
|
46
|
-
prototype.registerHybridMethod("
|
|
47
|
-
prototype.registerHybridMethod("
|
|
48
|
-
prototype.registerHybridMethod("
|
|
49
|
-
prototype.registerHybridMethod("
|
|
50
|
-
prototype.registerHybridMethod("
|
|
51
|
-
prototype.registerHybridMethod("
|
|
52
|
-
prototype.registerHybridMethod("
|
|
53
|
-
prototype.registerHybridMethod("
|
|
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
|
|
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
|
|
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
|
|
87
|
-
virtual void
|
|
88
|
-
virtual void
|
|
89
|
-
virtual void
|
|
90
|
-
virtual void
|
|
91
|
-
virtual void
|
|
92
|
-
virtual void
|
|
93
|
-
virtual void
|
|
94
|
-
virtual void
|
|
95
|
-
virtual void
|
|
96
|
-
virtual void
|
|
97
|
-
virtual void
|
|
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.
|
|
3
|
+
"version": "0.2.5",
|
|
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,9 +10,10 @@
|
|
|
10
10
|
"types": "src/index.ts",
|
|
11
11
|
"source": "src/index.ts",
|
|
12
12
|
"scripts": {
|
|
13
|
+
"postinstall": "node scripts/prepare-openxlsx.js",
|
|
13
14
|
"specs": "nitrogen",
|
|
14
15
|
"test": "jest",
|
|
15
|
-
"test:cpp": "
|
|
16
|
+
"test:cpp": "bash scripts/run-cpp-tests.sh",
|
|
16
17
|
"test:cpp:clean": "rm -rf cpp/tests/build"
|
|
17
18
|
},
|
|
18
19
|
"peerDependencies": {
|
|
@@ -36,6 +37,8 @@
|
|
|
36
37
|
"!cpp/tests",
|
|
37
38
|
"android",
|
|
38
39
|
"ios",
|
|
40
|
+
"scripts",
|
|
41
|
+
"Package.swift",
|
|
39
42
|
"nitro.json",
|
|
40
43
|
"nitrogen",
|
|
41
44
|
"NitroXlsx.podspec",
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import { existsSync, mkdirSync, writeFileSync, symlinkSync, readFileSync, lstatSync, unlinkSync } from 'fs';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = dirname(__filename);
|
|
8
|
+
const rootDir = dirname(__dirname);
|
|
9
|
+
|
|
10
|
+
function run(command, options = {}) {
|
|
11
|
+
console.log(`> ${command}`);
|
|
12
|
+
execSync(command, { stdio: 'inherit', ...options });
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function ensureDir(dir) {
|
|
16
|
+
if (!existsSync(dir)) {
|
|
17
|
+
mkdirSync(dir, { recursive: true });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function cloneRepo(url, tag, dest) {
|
|
22
|
+
if (existsSync(dest)) {
|
|
23
|
+
console.log(`Already exists: ${dest}`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
run(`git clone --depth 1 --branch ${tag} ${url} ${dest}`);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function writeFileIfNotExists(path, content) {
|
|
30
|
+
if (existsSync(path)) {
|
|
31
|
+
console.log(`Already exists: ${path}`);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
writeFileSync(path, content);
|
|
35
|
+
console.log(`Created: ${path}`);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function createSymlinkIfNotExists(target, link) {
|
|
39
|
+
// lstat does NOT follow symlinks, so a broken link still counts as "exists".
|
|
40
|
+
// existsSync would return false for a broken link and then symlinkSync throws EEXIST.
|
|
41
|
+
try {
|
|
42
|
+
lstatSync(link);
|
|
43
|
+
if (existsSync(link)) {
|
|
44
|
+
console.log(`Already exists: ${link}`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Path exists but is a broken symlink — replace it below.
|
|
48
|
+
unlinkSync(link);
|
|
49
|
+
} catch {
|
|
50
|
+
// not present — fall through and create
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
symlinkSync(target, link);
|
|
54
|
+
console.log(`Created symlink: ${link} -> ${target}`);
|
|
55
|
+
} catch (e) {
|
|
56
|
+
if (e.code === 'EEXIST') {
|
|
57
|
+
console.log(`Already exists: ${link}`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
throw e;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function getPackageVersion() {
|
|
65
|
+
const packageJsonPath = join(rootDir, 'package.json');
|
|
66
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
|
|
67
|
+
return packageJson.version || '0.1.0';
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const openxlsxDir = join(rootDir, 'OpenXLSX');
|
|
71
|
+
const thirdPartyDir = join(openxlsxDir, 'ThirdParty');
|
|
72
|
+
const pugixmlDir = join(thirdPartyDir, 'pugixml');
|
|
73
|
+
const minizDir = join(thirdPartyDir, 'miniz');
|
|
74
|
+
|
|
75
|
+
// Clone OpenXLSX and dependencies
|
|
76
|
+
cloneRepo('https://github.com/troldal/OpenXLSX.git', 'v0.5.1', openxlsxDir);
|
|
77
|
+
ensureDir(thirdPartyDir);
|
|
78
|
+
cloneRepo('https://github.com/zeux/pugixml.git', 'v1.16', pugixmlDir);
|
|
79
|
+
cloneRepo('https://github.com/richgel999/miniz.git', '3.1.2', minizDir);
|
|
80
|
+
|
|
81
|
+
// Generate miniz_export.h
|
|
82
|
+
const minizExportHeader = `#ifndef MINIZ_EXPORT_H
|
|
83
|
+
#define MINIZ_EXPORT_H
|
|
84
|
+
|
|
85
|
+
#ifndef MINIZ_EXPORT
|
|
86
|
+
#define MINIZ_EXPORT
|
|
87
|
+
#endif
|
|
88
|
+
|
|
89
|
+
#ifndef MINIZ_DEPRECATED
|
|
90
|
+
#define MINIZ_DEPRECATED
|
|
91
|
+
#endif
|
|
92
|
+
|
|
93
|
+
#ifndef MINIZ_DEPRECATED_EXPORT
|
|
94
|
+
#define MINIZ_DEPRECATED_EXPORT MINIZ_EXPORT MINIZ_DEPRECATED
|
|
95
|
+
#endif
|
|
96
|
+
|
|
97
|
+
#ifndef MINIZ_NO_EXPORT
|
|
98
|
+
#define MINIZ_NO_EXPORT
|
|
99
|
+
#endif
|
|
100
|
+
|
|
101
|
+
#endif
|
|
102
|
+
`;
|
|
103
|
+
writeFileIfNotExists(join(minizDir, 'miniz_export.h'), minizExportHeader);
|
|
104
|
+
|
|
105
|
+
// Generate OpenXLSX-Exports.hpp
|
|
106
|
+
const openxlsxExportsHeader = `#ifndef OPENXLSX_EXPORTS_HPP
|
|
107
|
+
#define OPENXLSX_EXPORTS_HPP
|
|
108
|
+
|
|
109
|
+
#ifndef OPENXLSX_EXPORT
|
|
110
|
+
#define OPENXLSX_EXPORT
|
|
111
|
+
#endif
|
|
112
|
+
|
|
113
|
+
#ifndef OPENXLSX_HIDDEN
|
|
114
|
+
#define OPENXLSX_HIDDEN
|
|
115
|
+
#endif
|
|
116
|
+
|
|
117
|
+
#endif
|
|
118
|
+
`;
|
|
119
|
+
const headersDir = join(openxlsxDir, 'OpenXLSX', 'headers');
|
|
120
|
+
ensureDir(headersDir);
|
|
121
|
+
writeFileIfNotExists(join(headersDir, 'OpenXLSX-Exports.hpp'), openxlsxExportsHeader);
|
|
122
|
+
|
|
123
|
+
// Create symlink for #include <OpenXLSX/XXX.hpp> resolution
|
|
124
|
+
createSymlinkIfNotExists('.', join(headersDir, 'OpenXLSX'));
|
|
125
|
+
|
|
126
|
+
console.log(`OpenXLSX dependencies prepared successfully for react-native-nitro-xlsx v${getPackageVersion()}.`);
|