@tfw.in/structura-lib 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/PRODUCTION_ARCHITECTURE.md +511 -0
  2. package/README.md +379 -0
  3. package/SAVE_FUNCTIONALITY_COMPLETE.md +448 -0
  4. package/dist/cjs/EditableContent.js +150 -0
  5. package/dist/cjs/HtmlViewer.js +587 -0
  6. package/dist/cjs/PdfComponents.js +16 -0
  7. package/dist/cjs/PdfDocumentViewer.js +281 -0
  8. package/dist/cjs/Structura.js +806 -0
  9. package/dist/cjs/Table.js +164 -0
  10. package/dist/cjs/TableCell.js +115 -0
  11. package/dist/cjs/accuracyMetrics.js +39 -0
  12. package/dist/cjs/helpers/preprocessData.js +143 -0
  13. package/dist/cjs/index.js +7 -0
  14. package/dist/cjs/lib/polyfills.js +15 -0
  15. package/dist/cjs/lib/utils.js +10 -0
  16. package/dist/cjs/node_modules/react-icons/fa/index.esm.js +14 -0
  17. package/dist/cjs/node_modules/react-icons/lib/esm/iconBase.js +69 -0
  18. package/dist/cjs/node_modules/react-icons/lib/esm/iconContext.js +15 -0
  19. package/dist/cjs/polyfills.js +19 -0
  20. package/dist/cjs/route.js +102 -0
  21. package/dist/cjs/styles.css +7 -0
  22. package/dist/cjs/styles.css.map +1 -0
  23. package/dist/cjs/ui/badge.js +34 -0
  24. package/dist/cjs/ui/button.js +71 -0
  25. package/dist/cjs/ui/card.js +86 -0
  26. package/dist/cjs/ui/progress.js +45 -0
  27. package/dist/cjs/ui/scroll-area.js +62 -0
  28. package/dist/cjs/ui/tabs.js +60 -0
  29. package/dist/cjs/worker.js +36 -0
  30. package/dist/esm/EditableContent.js +161 -0
  31. package/dist/esm/HtmlViewer.js +640 -0
  32. package/dist/esm/PdfComponents.js +21 -0
  33. package/dist/esm/PdfDocumentViewer.js +294 -0
  34. package/dist/esm/Structura.js +951 -0
  35. package/dist/esm/Table.js +182 -0
  36. package/dist/esm/TableCell.js +122 -0
  37. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +305 -0
  38. package/dist/esm/accuracyMetrics.js +41 -0
  39. package/dist/esm/helpers/preprocessData.js +152 -0
  40. package/dist/esm/index.js +1 -0
  41. package/dist/esm/lib/polyfills.js +13 -0
  42. package/dist/esm/lib/utils.js +8 -0
  43. package/dist/esm/node_modules/react-icons/fa/index.esm.js +11 -0
  44. package/dist/esm/node_modules/react-icons/lib/esm/iconBase.js +66 -0
  45. package/dist/esm/node_modules/react-icons/lib/esm/iconContext.js +12 -0
  46. package/dist/esm/polyfills.js +17 -0
  47. package/dist/esm/route.js +154 -0
  48. package/dist/esm/styles.css +7 -0
  49. package/dist/esm/styles.css.map +1 -0
  50. package/dist/esm/types/EditableContent.d.ts +9 -0
  51. package/dist/esm/types/HtmlViewer.d.ts +10 -0
  52. package/dist/esm/types/PdfComponents.d.ts +35 -0
  53. package/dist/esm/types/PdfDocumentViewer.d.ts +22 -0
  54. package/dist/esm/types/Structura.d.ts +11 -0
  55. package/dist/esm/types/Table.d.ts +12 -0
  56. package/dist/esm/types/TableCell.d.ts +13 -0
  57. package/dist/esm/types/accuracy.d.ts +23 -0
  58. package/dist/esm/types/accuracyMetrics.d.ts +5 -0
  59. package/dist/esm/types/helpers/flattenJSON.d.ts +1 -0
  60. package/dist/esm/types/helpers/hardMerging.d.ts +2 -0
  61. package/dist/esm/types/helpers/index.d.ts +6 -0
  62. package/dist/esm/types/helpers/jsonToHtml.d.ts +40 -0
  63. package/dist/esm/types/helpers/preprocessData.d.ts +3 -0
  64. package/dist/esm/types/helpers/removeMetadata.d.ts +1 -0
  65. package/dist/esm/types/helpers/tableProcessor.d.ts +1 -0
  66. package/dist/esm/types/index.d.ts +3 -0
  67. package/dist/esm/types/lib/polyfills.d.ts +1 -0
  68. package/dist/esm/types/lib/utils.d.ts +2 -0
  69. package/dist/esm/types/polyfills.d.ts +1 -0
  70. package/dist/esm/types/route.d.ts +45 -0
  71. package/dist/esm/types/test-app/src/App.d.ts +4 -0
  72. package/dist/esm/types/test-app/src/main.d.ts +1 -0
  73. package/dist/esm/types/test-app/vite.config.d.ts +2 -0
  74. package/dist/esm/types/types.d.ts +23 -0
  75. package/dist/esm/types/ui/alert.d.ts +8 -0
  76. package/dist/esm/types/ui/badge.d.ts +9 -0
  77. package/dist/esm/types/ui/button.d.ts +11 -0
  78. package/dist/esm/types/ui/card.d.ts +8 -0
  79. package/dist/esm/types/ui/progress.d.ts +6 -0
  80. package/dist/esm/types/ui/scroll-area.d.ts +5 -0
  81. package/dist/esm/types/ui/skeleton.d.ts +2 -0
  82. package/dist/esm/types/ui/tabs.d.ts +7 -0
  83. package/dist/esm/types/worker.d.ts +1 -0
  84. package/dist/esm/ui/badge.js +31 -0
  85. package/dist/esm/ui/button.js +50 -0
  86. package/dist/esm/ui/card.js +67 -0
  87. package/dist/esm/ui/progress.js +26 -0
  88. package/dist/esm/ui/scroll-area.js +45 -0
  89. package/dist/esm/ui/tabs.js +39 -0
  90. package/dist/esm/worker.js +50 -0
  91. package/dist/index.d.ts +38 -0
  92. package/package.json +85 -0
  93. package/server/README.md +203 -0
  94. package/server/db.js +142 -0
  95. package/server/server.js +165 -0
@@ -0,0 +1,152 @@
1
+ import { slicedToArray as _slicedToArray } from '../_virtual/_rollupPluginBabelHelpers.js';
2
+
3
+ // Helper function to sort table cells by page number and bounding box coordinates
4
+ function sortTableCells(tableCells) {
5
+ // console.log("Table cells to sort:", tableCells);
6
+ // Helper function to extract page number and block number from ID (e.g., '/page/2/TableCell/10')
7
+ var getPageAndBlockNumber = function getPageAndBlockNumber(id) {
8
+ var match = id.match(/^\/page\/(\d+)\/TableCell\/(\d+)$/);
9
+ if (match) {
10
+ return [parseInt(match[1]), parseInt(match[2])];
11
+ }
12
+ return [0, 0]; // Default to (0,0) if pattern not found
13
+ };
14
+ // Sort by page number first, then by block number
15
+ tableCells.sort(function (a, b) {
16
+ var _getPageAndBlockNumbe = getPageAndBlockNumber(a.id),
17
+ _getPageAndBlockNumbe2 = _slicedToArray(_getPageAndBlockNumbe, 2),
18
+ pageA = _getPageAndBlockNumbe2[0],
19
+ blockA = _getPageAndBlockNumbe2[1];
20
+ var _getPageAndBlockNumbe3 = getPageAndBlockNumber(b.id),
21
+ _getPageAndBlockNumbe4 = _slicedToArray(_getPageAndBlockNumbe3, 2),
22
+ pageB = _getPageAndBlockNumbe4[0],
23
+ blockB = _getPageAndBlockNumbe4[1];
24
+ return pageA !== pageB ? pageA - pageB : blockA - blockB;
25
+ });
26
+ // console.log("Table cells sorted:", tableCells);
27
+ return tableCells;
28
+ }
29
+ // Strikethrough correction function
30
+ function strikethroughCorrection(jsonData) {
31
+ // Deep clone to avoid mutating the original
32
+ var modifiedJson = JSON.parse(JSON.stringify(jsonData));
33
+ // Helper function to process HTML content
34
+ var processHtml = function processHtml(html) {
35
+ if (!html) return html;
36
+ return html.replace(/<strikethrough>/g, "<del>").replace(/<\/strikethrough>/g, "</del>");
37
+ };
38
+ // Helper function to recursively process nodes
39
+ var _processNode = function processNode(node) {
40
+ // Process HTML content if it exists
41
+ if (node.html) {
42
+ node.html = processHtml(node.html);
43
+ }
44
+ // Process LLM table HTML if it exists
45
+ if (node.llm_table_html) {
46
+ node.llm_table_html = processHtml(node.llm_table_html);
47
+ }
48
+ // Process children recursively
49
+ if (node.children && Array.isArray(node.children)) {
50
+ node.children.forEach(_processNode);
51
+ }
52
+ };
53
+ // Start processing from the root
54
+ _processNode(modifiedJson);
55
+ return modifiedJson;
56
+ }
57
+ // Remove picture nodes function
58
+ function removePictureNodes(jsonData) {
59
+ // Deep clone to avoid mutating the original
60
+ var modifiedJson = JSON.parse(JSON.stringify(jsonData));
61
+ // Helper function to recursively filter out picture nodes
62
+ var _processPictureNodes = function processPictureNodes(node) {
63
+ // If the node has children, filter out Picture nodes and process remaining children
64
+ if (node.children && Array.isArray(node.children)) {
65
+ node.children = node.children.filter(function (child) {
66
+ return child.block_type !== "Picture";
67
+ }).map(_processPictureNodes);
68
+ }
69
+ return node;
70
+ };
71
+ // Start processing from the root
72
+ _processPictureNodes(modifiedJson);
73
+ return modifiedJson;
74
+ }
75
+ // MAP 'html' and 'llm_table_html' (if present) of block_type 'Table' to their respective children i.e 'TableCell'
76
+ function mapTableChildren(jsonData) {
77
+ // Skip if there's no JSON data or no pages
78
+ if (!jsonData || !jsonData.children) {
79
+ console.log("No valid JSON data to process");
80
+ return jsonData;
81
+ }
82
+ // Create a deep copy to avoid modifying the original
83
+ var modifiedJsonData = JSON.parse(JSON.stringify(jsonData));
84
+ // Process each page in the document
85
+ modifiedJsonData.children = modifiedJsonData.children.map(function (page) {
86
+ // Skip if page has no children
87
+ if (!page.children) {
88
+ return page;
89
+ }
90
+ // Process each block in the page
91
+ page.children = page.children.map(function (block) {
92
+ // Only process Table and TableOfContents blocks
93
+ if (block.block_type === "Table" || block.block_type === "TableOfContents") {
94
+ // Skip if block has no children or no HTML
95
+ if (!block.children || !block.html) {
96
+ return block;
97
+ }
98
+ // Get all TableCell children and sort them by position
99
+ var tableCells = sortTableCells(block.children.filter(function (cell) {
100
+ return cell.block_type === "TableCell";
101
+ }));
102
+ // Skip if no table cells found
103
+ if (tableCells.length === 0) {
104
+ return block;
105
+ }
106
+ // Create DOM parser to extract td/th elements from table HTML
107
+ var parser = new DOMParser();
108
+ // Process main HTML
109
+ var htmlDoc = parser.parseFromString(block.html, "text/html");
110
+ var htmlCells = Array.from(htmlDoc.querySelectorAll("td, th"));
111
+ // Process LLM table HTML if it exists
112
+ var llmHtmlCells = [];
113
+ if (block.llm_table_html) {
114
+ var llmHtmlDoc = parser.parseFromString(block.llm_table_html, "text/html");
115
+ llmHtmlCells = Array.from(llmHtmlDoc.querySelectorAll("td, th"));
116
+ }
117
+ // Safety check: log warning if HTML cells count doesn't match TableCell nodes
118
+ if (htmlCells.length !== tableCells.length) {
119
+ console.warn("Warning: Cell count mismatch in ".concat(block.block_type, " ").concat(block.id, ". ") + "JSON has ".concat(tableCells.length, " cells, HTML has ").concat(htmlCells.length, " cells."));
120
+ }
121
+ // Map HTML content to table cells
122
+ var maxCells = Math.min(tableCells.length, htmlCells.length);
123
+ for (var i = 0; i < maxCells; i++) {
124
+ // Update the table cell's HTML with content from the HTML table
125
+ tableCells[i].html = htmlCells[i].outerHTML;
126
+ // If LLM table HTML exists and has matching cell, update that too
127
+ if (block.llm_table_html && i < llmHtmlCells.length) {
128
+ tableCells[i].llm_table_html = llmHtmlCells[i].outerHTML;
129
+ }
130
+ }
131
+ }
132
+ return block;
133
+ });
134
+ return page;
135
+ });
136
+ console.log("Finished mapping table HTML to table cells");
137
+ return modifiedJsonData;
138
+ }
139
+ function preprocessData(jsonData) {
140
+ // Replace 'strikethrough' with 'del'
141
+ var processedJson = strikethroughCorrection(jsonData);
142
+ // Remove picture nodes
143
+ processedJson = removePictureNodes(processedJson);
144
+ // TODO: Uncomment this after correcting the the table enrichment and mapping.
145
+ // // Enrich tables with missing cells
146
+ // processedJson = processTablesForEnrichment(processedJson);
147
+ // // Map table HTML to table cells
148
+ processedJson = mapTableChildren(processedJson);
149
+ return processedJson;
150
+ }
151
+
152
+ export { preprocessData, sortTableCells };
@@ -0,0 +1 @@
1
+ export { default as Structura } from './Structura.js';
@@ -0,0 +1,13 @@
1
+ // Polyfill for Promise.withResolvers
2
+ // This is needed for Next.js build compatibility
3
+ if (typeof Promise.withResolvers !== 'function') {
4
+ Promise.withResolvers = function () {
5
+ let resolve;
6
+ let reject;
7
+ const promise = new Promise((res, rej) => {
8
+ resolve = res;
9
+ reject = rej;
10
+ });
11
+ return { promise, resolve, reject };
12
+ };
13
+ }
@@ -0,0 +1,8 @@
1
+ import clsx from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ function cn(...inputs) {
5
+ return twMerge(clsx(inputs));
6
+ }
7
+
8
+ export { cn };
@@ -0,0 +1,11 @@
1
+ import { GenIcon } from '../lib/esm/iconBase.js';
2
+ import '../lib/esm/iconContext.js';
3
+
4
+ // THIS FILE IS AUTO GENERATED
5
+ function FaChartBar (props) {
6
+ return GenIcon({"attr":{"viewBox":"0 0 512 512"},"child":[{"tag":"path","attr":{"d":"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"}}]})(props);
7
+ }function FaFileDownload (props) {
8
+ return GenIcon({"attr":{"viewBox":"0 0 384 512"},"child":[{"tag":"path","attr":{"d":"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"}}]})(props);
9
+ }
10
+
11
+ export { FaChartBar, FaFileDownload };
@@ -0,0 +1,66 @@
1
+ import React__default from 'react';
2
+ import { IconContext, DefaultContext } from './iconContext.js';
3
+
4
+ var __assign = undefined && undefined.__assign || function () {
5
+ __assign = Object.assign || function (t) {
6
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
7
+ s = arguments[i];
8
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
9
+ }
10
+ return t;
11
+ };
12
+ return __assign.apply(this, arguments);
13
+ };
14
+ var __rest = undefined && undefined.__rest || function (s, e) {
15
+ var t = {};
16
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
22
+ function Tree2Element(tree) {
23
+ return tree && tree.map(function (node, i) {
24
+ return React__default.createElement(node.tag, __assign({
25
+ key: i
26
+ }, node.attr), Tree2Element(node.child));
27
+ });
28
+ }
29
+ function GenIcon(data) {
30
+ // eslint-disable-next-line react/display-name
31
+ return function (props) {
32
+ return React__default.createElement(IconBase, __assign({
33
+ attr: __assign({}, data.attr)
34
+ }, props), Tree2Element(data.child));
35
+ };
36
+ }
37
+ function IconBase(props) {
38
+ var elem = function (conf) {
39
+ var attr = props.attr,
40
+ size = props.size,
41
+ title = props.title,
42
+ svgProps = __rest(props, ["attr", "size", "title"]);
43
+ var computedSize = size || conf.size || "1em";
44
+ var className;
45
+ if (conf.className) className = conf.className;
46
+ if (props.className) className = (className ? className + " " : "") + props.className;
47
+ return React__default.createElement("svg", __assign({
48
+ stroke: "currentColor",
49
+ fill: "currentColor",
50
+ strokeWidth: "0"
51
+ }, conf.attr, attr, svgProps, {
52
+ className: className,
53
+ style: __assign(__assign({
54
+ color: props.color || conf.color
55
+ }, conf.style), props.style),
56
+ height: computedSize,
57
+ width: computedSize,
58
+ xmlns: "http://www.w3.org/2000/svg"
59
+ }), title && React__default.createElement("title", null, title), props.children);
60
+ };
61
+ return IconContext !== undefined ? React__default.createElement(IconContext.Consumer, null, function (conf) {
62
+ return elem(conf);
63
+ }) : elem(DefaultContext);
64
+ }
65
+
66
+ export { GenIcon, IconBase };
@@ -0,0 +1,12 @@
1
+ import React__default from 'react';
2
+
3
+ var DefaultContext = {
4
+ color: undefined,
5
+ size: undefined,
6
+ className: undefined,
7
+ style: undefined,
8
+ attr: undefined
9
+ };
10
+ var IconContext = React__default.createContext && React__default.createContext(DefaultContext);
11
+
12
+ export { DefaultContext, IconContext };
@@ -0,0 +1,17 @@
1
+ // Polyfill for Promise.withResolvers
2
+ // This is needed for Next.js build compatibility
3
+ if (typeof Promise.withResolvers !== 'function') {
4
+ Promise.withResolvers = function () {
5
+ var resolve;
6
+ var reject;
7
+ var promise = new Promise(function (res, rej) {
8
+ resolve = res;
9
+ reject = rej;
10
+ });
11
+ return {
12
+ promise: promise,
13
+ resolve: resolve,
14
+ reject: reject
15
+ };
16
+ };
17
+ }
@@ -0,0 +1,154 @@
1
+ import { asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from './_virtual/_rollupPluginBabelHelpers.js';
2
+
3
+ function POST(_x, _x2) {
4
+ return _POST.apply(this, arguments);
5
+ }
6
+ function _POST() {
7
+ _POST = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(request, config) {
8
+ var baseUrl, apiKey, response, errorText, data, _t, _t2;
9
+ return _regenerator().w(function (_context) {
10
+ while (1) switch (_context.n) {
11
+ case 0:
12
+ _context.p = 0;
13
+ baseUrl = config.baseUrl || 'https://structura.theflywheel.in';
14
+ apiKey = config.apiKey; // Ensure required configuration is set
15
+ if (apiKey) {
16
+ _context.n = 1;
17
+ break;
18
+ }
19
+ console.error("Missing required API key");
20
+ return _context.a(2, {
21
+ error: "Missing API key",
22
+ status: 401
23
+ });
24
+ case 1:
25
+ _context.p = 1;
26
+ _context.n = 2;
27
+ return fetch("".concat(baseUrl, "/api/v2/convert"), {
28
+ method: "POST",
29
+ headers: {
30
+ "X-Api-Key": apiKey
31
+ },
32
+ body: request
33
+ });
34
+ case 2:
35
+ response = _context.v;
36
+ if (response.ok) {
37
+ _context.n = 4;
38
+ break;
39
+ }
40
+ _context.n = 3;
41
+ return response.text().catch(function () {
42
+ return "Could not read error response";
43
+ });
44
+ case 3:
45
+ errorText = _context.v;
46
+ console.error("Backend returned error: Status ".concat(response.status, ", Message: ").concat(errorText));
47
+ return _context.a(2, {
48
+ error: "Backend error: ".concat(response.status, " ").concat(response.statusText),
49
+ details: errorText,
50
+ status: response.status
51
+ });
52
+ case 4:
53
+ _context.n = 5;
54
+ return response.json();
55
+ case 5:
56
+ data = _context.v;
57
+ return _context.a(2, {
58
+ data: data,
59
+ status: 200
60
+ });
61
+ case 6:
62
+ _context.p = 6;
63
+ _t = _context.v;
64
+ console.error("Connection error to backend:", _t);
65
+ return _context.a(2, {
66
+ error: "Failed to connect to backend service",
67
+ details: "Could not connect to ".concat(baseUrl, ". Make sure the backend server is running."),
68
+ message: _t instanceof Error ? _t.message : String(_t),
69
+ status: 503
70
+ });
71
+ case 7:
72
+ _context.n = 9;
73
+ break;
74
+ case 8:
75
+ _context.p = 8;
76
+ _t2 = _context.v;
77
+ console.error("Error in generate API:", _t2);
78
+ return _context.a(2, {
79
+ error: "Internal server error",
80
+ message: _t2 instanceof Error ? _t2.message : String(_t2),
81
+ status: 500
82
+ });
83
+ }
84
+ }, _callee, null, [[1, 6], [0, 8]]);
85
+ }));
86
+ return _POST.apply(this, arguments);
87
+ }
88
+ function GET(_x3, _x4) {
89
+ return _GET.apply(this, arguments);
90
+ }
91
+ function _GET() {
92
+ _GET = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(taskId, config) {
93
+ var baseUrl, apiKey, backendUrl, response, data, _t3;
94
+ return _regenerator().w(function (_context2) {
95
+ while (1) switch (_context2.n) {
96
+ case 0:
97
+ _context2.p = 0;
98
+ baseUrl = config.baseUrl || 'https://structura.theflywheel.in';
99
+ apiKey = config.apiKey;
100
+ if (apiKey) {
101
+ _context2.n = 1;
102
+ break;
103
+ }
104
+ console.error("Missing required API key");
105
+ return _context2.a(2, {
106
+ error: "Missing API key",
107
+ status: 401
108
+ });
109
+ case 1:
110
+ // Forward GET request to backend
111
+ // console.log("Getting conversion result for taskId", taskId);
112
+ backendUrl = "".concat(baseUrl, "/api/v2/convert/").concat(taskId);
113
+ _context2.n = 2;
114
+ return fetch(backendUrl, {
115
+ method: "GET",
116
+ headers: {
117
+ "X-Api-Key": apiKey,
118
+ Accept: "application/json"
119
+ }
120
+ });
121
+ case 2:
122
+ response = _context2.v;
123
+ if (response.ok) {
124
+ _context2.n = 3;
125
+ break;
126
+ }
127
+ return _context2.a(2, {
128
+ error: "Failed to get conversion result",
129
+ status: response.status
130
+ });
131
+ case 3:
132
+ _context2.n = 4;
133
+ return response.json();
134
+ case 4:
135
+ data = _context2.v;
136
+ return _context2.a(2, {
137
+ data: data,
138
+ status: 200
139
+ });
140
+ case 5:
141
+ _context2.p = 5;
142
+ _t3 = _context2.v;
143
+ console.error("Error in generate API GET:", _t3);
144
+ return _context2.a(2, {
145
+ error: "Internal server error",
146
+ status: 500
147
+ });
148
+ }
149
+ }, _callee2, null, [[0, 5]]);
150
+ }));
151
+ return _GET.apply(this, arguments);
152
+ }
153
+
154
+ export { GET, POST };
@@ -0,0 +1,7 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=Figtree:wght@300;400;500;600;700;800;900&display=swap");@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@300;400;500;600;700;800&display=swap");*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
2
+
3
+
4
+ /*
5
+ ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
6
+ */*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}*{border-color:hsl(var(--border))}body,html{height:100%;overflow-y:auto;body{background-color:hsl(var(--background));color:hsl(var(--foreground))}}:root{--background:0 0% 100%;--foreground:222.2 84% 4.9%;--card:0 0% 100%;--card-foreground:222.2 84% 4.9%;--popover:0 0% 100%;--popover-foreground:222.2 84% 4.9%;--primary:222.2 47.4% 11.2%;--primary-foreground:210 40% 98%;--secondary:210 40% 96.1%;--secondary-foreground:222.2 47.4% 11.2%;--muted:210 40% 96.1%;--muted-foreground:215.4 16.3% 46.9%;--accent:210 40% 96.1%;--accent-foreground:222.2 47.4% 11.2%;--destructive:0 84.2% 60.2%;--destructive-foreground:210 40% 98%;--border:214.3 31.8% 91.4%;--input:214.3 31.8% 91.4%;--ring:222.2 84% 4.9%;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%;--radius:0.5rem}.dark{--background:222.2 84% 4.9%;--foreground:210 40% 98%;--card:222.2 84% 4.9%;--card-foreground:210 40% 98%;--popover:222.2 84% 4.9%;--popover-foreground:210 40% 98%;--primary:210 40% 98%;--primary-foreground:222.2 47.4% 11.2%;--secondary:217.2 32.6% 17.5%;--secondary-foreground:210 40% 98%;--muted:217.2 32.6% 17.5%;--muted-foreground:215 20.2% 65.1%;--accent:217.2 32.6% 17.5%;--accent-foreground:210 40% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:210 40% 98%;--border:217.2 32.6% 17.5%;--input:217.2 32.6% 17.5%;--ring:212.7 26.8% 83.9%;--chart-1:220 70% 50%;--chart-2:160 60% 45%;--chart-3:30 80% 55%;--chart-4:280 65% 60%;--chart-5:340 75% 55%}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.top-0{top:0}.top-2{top:.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.float-right{float:right}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem}.mb-1,.my-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.ms-3{margin-inline-start:.75rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.\!block{display:block!important}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[calc\(100\%-56px\)\]{height:calc(100% - 56px)}.h-\[calc\(100vh-220px\)\]{height:calc(100vh - 220px)}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[80vh\]{max-height:80vh}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-full{min-height:100%}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}.scale-110,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[hsl\(var\(--border\)\)\]{border-color:hsl(var(--border))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-border{border-color:hsl(var(--border))}.border-destructive\/50{border-color:hsl(var(--destructive)/.5)}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-input{border-color:hsl(var(--input))}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground)/.5)}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[hsl\(var\(--background\)\)\],.bg-background{background-color:hsl(var(--background))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/30{background-color:hsl(var(--muted)/.3)}.bg-muted\/40{background-color:hsl(var(--muted)/.4)}.bg-muted\/50{background-color:hsl(var(--muted)/.5)}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary)/.1)}.bg-primary\/5{background-color:hsl(var(--primary)/.05)}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-opacity-50{--tw-bg-opacity:0.5}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.pl-4{padding-left:1rem}.pt-0{padding-top:0}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-\[hsl\(var\(--foreground\)\)\]{color:hsl(var(--foreground))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-200{animation-duration:.2s}.running{animation-play-state:running}@reference "tailwindcss";.font-figtree{font-family:Figtree,sans-serif}h1{font-size:1.875rem;font-weight:700;line-height:2.25rem;margin-bottom:1rem}.font-nunito{font-family:Nunito,sans-serif}h2{font-size:1.5rem;font-weight:700;line-height:2rem;margin-bottom:.75rem}h3{font-size:1.25rem}h3,h4{font-weight:700;line-height:1.75rem;margin-bottom:.5rem}h4{font-size:1.125rem}ul{list-style-type:disc}ol,ul{margin-bottom:1rem;margin-left:1.5rem}ol{list-style-type:decimal}p{margin-bottom:1rem}strong{font-weight:700}em{font-style:italic}table,td,th{border:1px solid #000;padding:10px}table,td,th{border-collapse:collapse}table{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity,1));border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);margin-bottom:1.5rem;overflow:hidden;width:100%}th{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1));border-bottom-width:2px;border-color:rgb(191 219 254/var(--tw-border-opacity,1));color:rgb(31 41 55/var(--tw-text-opacity,1));font-size:1rem;font-weight:700;letter-spacing:.05em;line-height:1.5rem;text-align:left}td,th{padding:1rem 1.5rem}td{--tw-border-opacity:1;--tw-text-opacity:1;border-bottom-width:1px;border-color:rgb(229 231 235/var(--tw-border-opacity,1));color:rgb(55 65 81/var(--tw-text-opacity,1));font-size:.875rem;line-height:1.25rem;vertical-align:middle}tr{animation-duration:.2s;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}tr:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}tr:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}td:first-child,th:first-child{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1));border-right-width:1px;font-weight:600}tr:last-child td{border-bottom-width:0}td.numeric{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;text-align:right}td.completed,td.done{color:rgb(22 163 74/var(--tw-text-opacity,1))}td.completed,td.done,td.pending{--tw-text-opacity:1;font-weight:500}td.pending{color:rgb(202 138 4/var(--tw-text-opacity,1))}caption{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1));color:rgb(55 65 81/var(--tw-text-opacity,1));font-size:1.125rem;font-weight:600;line-height:1.75rem;padding:1rem}@media (max-width:640px){table{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border-radius:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}td,th{padding:.75rem 1rem}}.table-wrapper{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1));border-radius:var(--radius);border-width:1px}th.sortable{cursor:pointer}th.sortable:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity,1))}tr.selected{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}del{background-color:#fbb;color:#555;text-decoration:line-through}.pdf-container{height:100%;position:relative;width:100%}.react-pdf__Page__annotations,.react-pdf__Page__textContent{display:none!important}.react-pdf__Page__textContent.textLayer{opacity:0!important;pointer-events:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:start-\[2px\]:after{content:var(--tw-content);inset-inline-start:2px}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:h-5:after{content:var(--tw-content);height:1.25rem}.after\:w-5:after{content:var(--tw-content);width:1.25rem}.after\:rounded-full:after{border-radius:9999px;content:var(--tw-content)}.after\:border:after{border-width:1px;content:var(--tw-content)}.after\:border-gray-300:after{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1));content:var(--tw-content)}.after\:bg-white:after{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));content:var(--tw-content)}.after\:transition-all:after{content:var(--tw-content);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive)/.8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.hover\:bg-primary\/20:hover{background-color:hsl(var(--primary)/.2)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary)/.8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\:ring-green-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity,1))}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.peer:checked~.peer-checked\:bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.peer:checked~.peer-checked\:after\:translate-x-full:after{--tw-translate-x:100%;content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:after\:border-white:after{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1));content:var(--tw-content)}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}.peer:focus~.peer-focus\:ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.peer:focus~.peer-focus\:ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity,1))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}@media (min-width:768px){.md\:block{display:block}.md\:hidden{display:none}}.peer:checked~.rtl\:peer-checked\:after\:-translate-x-full:where([dir=rtl],[dir=rtl] *):after{--tw-translate-x:-100%;content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{height:1rem;width:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}
7
+ /*# sourceMappingURL=styles.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["styles.css"],"names":[],"mappings":"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","file":"styles.css","sourcesContent":["@import url('https://fonts.googleapis.com/css2?family=Figtree:wght@300;400;500;600;700;800;900&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@300;400;500;600;700;800&display=swap');\n\n\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@reference \"tailwindcss\";\n\n@layer base {\n * {\n @apply border-[hsl(var(--border))];\n }\n html {\n @apply h-full overflow-y-auto;\n }\n body {\n @apply h-full overflow-y-auto; /* Allow body to scroll if content overflows */\n body {\n @apply bg-[hsl(var(--background))] text-[hsl(var(--foreground))];\n }\n }\n}\n\n\n.font-figtree {\n font-family: 'Figtree', sans-serif;\n}\n\nh1 {\n @apply text-3xl font-bold mb-4;\n}\n\n\n.font-nunito {\n font-family: 'Nunito', sans-serif;\n}\n\nh2 {\n @apply text-2xl font-bold mb-3;\n}\n\nh3 {\n @apply text-xl font-bold mb-2;\n}\n\nh4 {\n @apply text-lg font-bold mb-2;\n}\n\nul {\n @apply list-disc ml-6 mb-4;\n}\n\nol {\n @apply list-decimal ml-6 mb-4;\n}\n\np {\n @apply mb-4;\n}\n\nstrong {\n @apply font-bold;\n}\n\nem {\n @apply italic;\n}\n\ntable,\nth,\ntd {\n\tborder: 1px solid black;\n\tborder-collapse: collapse;\n padding: 10px;\n}\n\n/* Enhanced Table Styles */\ntable {\n @apply w-full border-collapse bg-white shadow-lg rounded-lg overflow-hidden mb-6;\n}\n\n/* Header cells */\nth {\n @apply bg-blue-50\n px-6 py-4 \n text-left font-bold tracking-wider text-base\n border-b-2 border-blue-200\n text-gray-800;\n}\n\n/* Regular cells */\ntd {\n @apply px-6 py-4 \n text-gray-700 text-sm\n border-b border-gray-200\n align-middle;\n}\n\n/* Row styling */\ntr {\n @apply transition-colors duration-200;\n}\n\n/* Zebra striping with subtle colors */\ntr:nth-child(even) {\n @apply bg-blue-50;\n}\n\n/* Hover effect on rows */\ntr:hover {\n @apply bg-blue-100;\n}\n\n/* First column emphasis */\ntd:first-child,\nth:first-child {\n @apply font-semibold border-r border-gray-200;\n}\n\n/* Last row styling */\ntr:last-child td {\n @apply border-b-0;\n}\n\n/* Specific cell types */\ntd.numeric {\n @apply text-right font-mono text-gray-800;\n}\n\n/* Status-like cells */\ntd.completed,\ntd.done {\n @apply text-green-600 font-medium;\n}\n\ntd.pending {\n @apply text-yellow-600 font-medium;\n}\n\n/* Table caption if present */\ncaption {\n @apply text-lg font-semibold text-gray-700 p-4 bg-gray-50;\n}\n\n/* Responsive design */\n@media (max-width: 640px) {\n table {\n @apply rounded-none shadow-none;\n }\n \n th, td {\n @apply px-4 py-3;\n }\n}\n\n/* Optional: Add a subtle border around the entire table */\n.table-wrapper {\n @apply border border-gray-200 rounded-lg;\n}\n\n/* Optional: Style for sortable headers */\nth.sortable {\n @apply cursor-pointer hover:bg-blue-800;\n}\n\n/* Optional: Style for selected rows */\ntr.selected {\n @apply bg-blue-200;\n}\n\ndel {\n text-decoration: line-through;\n background-color: #fbb;\n color: #555;\n}\n\n/* PDF Viewer Styles */\n.pdf-container {\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.react-pdf__Page__textContent {\n display: none !important;\n}\n\n.react-pdf__Page__annotations {\n display: none !important;\n}\n\n/* Alternative method using opacity */\n.react-pdf__Page__textContent.textLayer {\n opacity: 0 !important;\n pointer-events: none !important;\n user-select: none !important;\n}\n\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n --muted: 210 40% 96.1%;\n --muted-foreground: 215.4 16.3% 46.9%;\n --accent: 210 40% 96.1%;\n --accent-foreground: 222.2 47.4% 11.2%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n --chart-1: 12 76% 61%;\n --chart-2: 173 58% 39%;\n --chart-3: 197 37% 24%;\n --chart-4: 43 74% 66%;\n --chart-5: 27 87% 67%;\n --radius: 0.5rem;\n }\n .dark {\n --background: 222.2 84% 4.9%;\n --foreground: 210 40% 98%;\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n --muted: 217.2 32.6% 17.5%;\n --muted-foreground: 215 20.2% 65.1%;\n --accent: 217.2 32.6% 17.5%;\n --accent-foreground: 210 40% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n --chart-1: 220 70% 50%;\n --chart-2: 160 60% 45%;\n --chart-3: 30 80% 55%;\n --chart-4: 280 65% 60%;\n --chart-5: 340 75% 55%;\n }\n}\n\n"]}
@@ -0,0 +1,9 @@
1
+ interface EditableContentProps {
2
+ id: string;
3
+ content: string;
4
+ onContentChange?: (nodeId: string, newContent: string) => void;
5
+ isHeading?: boolean;
6
+ onNodeClick?: () => void;
7
+ }
8
+ export default function EditableContent({ id, content, onContentChange, isHeading, onNodeClick, }: EditableContentProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,10 @@
1
+ interface HtmlViewerProps {
2
+ jsonData: any;
3
+ selectedBboxId: string | null;
4
+ isLoading?: boolean;
5
+ onNodeClick?: (nodeId: string) => void;
6
+ onSave?: (editedData: any) => void | Promise<void>;
7
+ }
8
+ export default function HtmlViewer({ //NOSONAR
9
+ jsonData, selectedBboxId, isLoading, onNodeClick, onSave, }: HtmlViewerProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import './lib/polyfills';
3
+ declare const Document: React.LazyExoticComponent<React.ForwardRefExoticComponent<{
4
+ children?: React.ReactNode;
5
+ className?: import("react-pdf/dist/cjs/shared/types").ClassName;
6
+ error?: import("react-pdf/dist/cjs/shared/types").NodeOrRenderer;
7
+ externalLinkRel?: import("react-pdf/dist/cjs/shared/types").ExternalLinkRel;
8
+ externalLinkTarget?: import("react-pdf/dist/cjs/shared/types").ExternalLinkTarget;
9
+ file?: import("react-pdf/dist/cjs/shared/types").File;
10
+ imageResourcesPath?: import("react-pdf/dist/cjs/shared/types").ImageResourcesPath;
11
+ inputRef?: React.Ref<HTMLDivElement | null>;
12
+ loading?: import("react-pdf/dist/cjs/shared/types").NodeOrRenderer;
13
+ noData?: import("react-pdf/dist/cjs/shared/types").NodeOrRenderer;
14
+ onItemClick?: (args: import("react-pdf/dist/cjs/shared/types").OnItemClickArgs) => void;
15
+ onLoadError?: import("react-pdf/dist/cjs/shared/types").OnDocumentLoadError;
16
+ onLoadProgress?: import("react-pdf/dist/cjs/shared/types").OnDocumentLoadProgress;
17
+ onLoadSuccess?: import("react-pdf/dist/cjs/shared/types").OnDocumentLoadSuccess;
18
+ onPassword?: (callback: import("react-pdf/dist/cjs/shared/types").OnPasswordCallback, reason: import("react-pdf/dist/cjs/shared/types").PasswordResponse) => void;
19
+ onSourceError?: import("react-pdf/dist/cjs/shared/types").OnError;
20
+ onSourceSuccess?: () => void;
21
+ options?: import("react-pdf/dist/cjs/shared/types").Options;
22
+ renderMode?: import("react-pdf/dist/cjs/shared/types").RenderMode;
23
+ rotate?: number | null;
24
+ } & import("make-event-props").EventProps<false | import("pdfjs-dist/types/src/display/api").PDFDocumentProxy | undefined> & React.RefAttributes<{
25
+ linkService: React.RefObject<import("react-pdf/dist/cjs/LinkService").default>;
26
+ pages: React.RefObject<HTMLDivElement[]>;
27
+ viewer: React.RefObject<{
28
+ scrollPageIntoView: (args: import("react-pdf/dist/cjs/shared/types").ScrollPageIntoViewArgs) => void;
29
+ }>;
30
+ }>>>;
31
+ declare const Page: React.LazyExoticComponent<typeof import("react-pdf").Page>;
32
+ export declare const PDFDocument: React.FC<React.ComponentProps<typeof Document>>;
33
+ export declare const PDFPage: React.FC<React.ComponentProps<typeof Page>>;
34
+ export { Document, Page };
35
+ export default function PdfComponents(): null;
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import "./polyfills";
3
+ import { Document } from "./PdfComponents";
4
+ import "./worker";
5
+ type DocumentOutput = any;
6
+ interface PdfDocumentViewerProps {
7
+ fileUrl: string | null;
8
+ allowedPages: number[];
9
+ onLoadSuccess: (numPages: number) => void;
10
+ onFileUpload: (file: File) => void;
11
+ onRemovePDF?: () => void;
12
+ jsonData?: DocumentOutput | null;
13
+ selectedBboxId?: string | null;
14
+ onPdfBboxClick?: (blockId: string) => void;
15
+ }
16
+ interface PDFViewerProps extends React.ComponentProps<typeof Document> {
17
+ hideTextLayer?: boolean;
18
+ hideAnnotationLayer?: boolean;
19
+ }
20
+ export declare const PDFViewer: React.FC<PDFViewerProps>;
21
+ export default function PdfDocumentViewer({ fileUrl, allowedPages, onLoadSuccess, onFileUpload, onRemovePDF, jsonData, selectedBboxId, onPdfBboxClick, }: PdfDocumentViewerProps): import("react/jsx-runtime").JSX.Element;
22
+ export {};