@hmlr/govuk-react-components-library 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/.nvmrc +1 -0
  2. package/.stylelintrc.json +8 -0
  3. package/LICENCE +21 -0
  4. package/README.md +636 -0
  5. package/assets/Advance-submodule-behaviours.png +0 -0
  6. package/assets/logo.png +0 -0
  7. package/assets/uml-diagram.svg +2541 -0
  8. package/bundle-analysis-main.html +4951 -0
  9. package/bundle-analysis-pdfvc.html +4949 -0
  10. package/dist/PDFViewerCanvas.cjs.css +86 -0
  11. package/dist/PDFViewerCanvas.cjs.js +243 -0
  12. package/dist/PDFViewerCanvas.cjs.js.map +1 -0
  13. package/dist/PDFViewerCanvas.d.ts +19 -0
  14. package/dist/PDFViewerCanvas.esm.css +86 -0
  15. package/dist/PDFViewerCanvas.esm.js +241 -0
  16. package/dist/PDFViewerCanvas.esm.js.map +1 -0
  17. package/dist/index.cjs.css +11962 -0
  18. package/dist/index.cjs.js +1362 -0
  19. package/dist/index.cjs.js.map +1 -0
  20. package/dist/index.d.ts +743 -0
  21. package/dist/index.esm.css +11962 -0
  22. package/dist/index.esm.js +1284 -0
  23. package/dist/index.esm.js.map +1 -0
  24. package/dist/types/JestSetup.d.ts +1 -0
  25. package/dist/types/PDFViewerCanvas.d.ts +1 -0
  26. package/dist/types/components/Accordion/Accordion.config.d.ts +5 -0
  27. package/dist/types/components/Accordion/Accordion.d.ts +4 -0
  28. package/dist/types/components/Accordion/Accordion.types.d.ts +20 -0
  29. package/dist/types/components/Accordion/index.d.ts +2 -0
  30. package/dist/types/components/ActionLink/ActionLink.d.ts +4 -0
  31. package/dist/types/components/ActionLink/ActionLink.types.d.ts +13 -0
  32. package/dist/types/components/ActionLink/index.d.ts +1 -0
  33. package/dist/types/components/BackLink/BackLink.d.ts +4 -0
  34. package/dist/types/components/BackLink/BackLink.types.d.ts +9 -0
  35. package/dist/types/components/BackLink/index.d.ts +1 -0
  36. package/dist/types/components/Boolean/Boolean.d.ts +4 -0
  37. package/dist/types/components/Boolean/Boolean.types.d.ts +39 -0
  38. package/dist/types/components/Boolean/OmitKey.d.ts +5 -0
  39. package/dist/types/components/Boolean/index.d.ts +1 -0
  40. package/dist/types/components/Breadcrumbs/Breadcrumbs.d.ts +4 -0
  41. package/dist/types/components/Breadcrumbs/Breadcrumbs.types.d.ts +13 -0
  42. package/dist/types/components/Breadcrumbs/index.d.ts +1 -0
  43. package/dist/types/components/Button/Button.config.d.ts +2 -0
  44. package/dist/types/components/Button/Button.d.ts +4 -0
  45. package/dist/types/components/Button/Button.types.d.ts +13 -0
  46. package/dist/types/components/Button/index.d.ts +2 -0
  47. package/dist/types/components/CardColumn/CardColumn.d.ts +5 -0
  48. package/dist/types/components/CardColumn/CardColumn.types.d.ts +5 -0
  49. package/dist/types/components/CardColumn/index.d.ts +1 -0
  50. package/dist/types/components/CardLayout/CardLayout.d.ts +4 -0
  51. package/dist/types/components/CardLayout/CardLayout.types.d.ts +5 -0
  52. package/dist/types/components/CardLayout/index.d.ts +1 -0
  53. package/dist/types/components/CharacterCount/CharacterCount.config.d.ts +2 -0
  54. package/dist/types/components/CharacterCount/CharacterCount.d.ts +4 -0
  55. package/dist/types/components/CharacterCount/CharacterCount.types.d.ts +12 -0
  56. package/dist/types/components/CharacterCount/index.d.ts +1 -0
  57. package/dist/types/components/Checkboxes/Checkboxes.config.d.ts +1 -0
  58. package/dist/types/components/Checkboxes/Checkboxes.d.ts +4 -0
  59. package/dist/types/components/Checkboxes/Checkboxes.types.d.ts +3 -0
  60. package/dist/types/components/Checkboxes/index.d.ts +2 -0
  61. package/dist/types/components/CookieBanner/CookieBanner.d.ts +4 -0
  62. package/dist/types/components/CookieBanner/CookieBanner.types.d.ts +21 -0
  63. package/dist/types/components/CookieBanner/index.d.ts +1 -0
  64. package/dist/types/components/DataNavigation/DataNavigation.d.ts +4 -0
  65. package/dist/types/components/DataNavigation/DataNavigation.types.d.ts +9 -0
  66. package/dist/types/components/DataNavigation/index.d.ts +1 -0
  67. package/dist/types/components/DateInput/DateInput.d.ts +4 -0
  68. package/dist/types/components/DateInput/DateInput.types.d.ts +29 -0
  69. package/dist/types/components/DateInput/index.d.ts +1 -0
  70. package/dist/types/components/Details/Details.d.ts +4 -0
  71. package/dist/types/components/Details/Details.types.d.ts +5 -0
  72. package/dist/types/components/Details/index.d.ts +1 -0
  73. package/dist/types/components/DifferenceNavigation/DifferenceNavigation.d.ts +4 -0
  74. package/dist/types/components/DifferenceNavigation/DifferenceNavigation.types.d.ts +7 -0
  75. package/dist/types/components/DifferenceNavigation/index.d.ts +1 -0
  76. package/dist/types/components/ErrorBoundary/ErrorBoundary.d.ts +9 -0
  77. package/dist/types/components/ErrorBoundary/ErrorBoundary.types.d.ts +11 -0
  78. package/dist/types/components/ErrorBoundary/index.d.ts +1 -0
  79. package/dist/types/components/ErrorMessage/ErrorMessage.d.ts +4 -0
  80. package/dist/types/components/ErrorMessage/ErrorMessage.types.d.ts +6 -0
  81. package/dist/types/components/ErrorMessage/index.d.ts +1 -0
  82. package/dist/types/components/ErrorSummary/ErrorSummary.config.d.ts +2 -0
  83. package/dist/types/components/ErrorSummary/ErrorSummary.d.ts +4 -0
  84. package/dist/types/components/ErrorSummary/ErrorSummary.types.d.ts +13 -0
  85. package/dist/types/components/ErrorSummary/index.d.ts +2 -0
  86. package/dist/types/components/Fieldset/Fieldset.d.ts +4 -0
  87. package/dist/types/components/Fieldset/Fieldset.types.d.ts +12 -0
  88. package/dist/types/components/Fieldset/index.d.ts +1 -0
  89. package/dist/types/components/FileUpload/FileUpload.d.ts +4 -0
  90. package/dist/types/components/FileUpload/FileUpload.types.d.ts +15 -0
  91. package/dist/types/components/FileUpload/index.d.ts +1 -0
  92. package/dist/types/components/Footer/Footer.d.ts +4 -0
  93. package/dist/types/components/Footer/Footer.types.d.ts +33 -0
  94. package/dist/types/components/Footer/index.d.ts +1 -0
  95. package/dist/types/components/Header/Header.config.d.ts +1 -0
  96. package/dist/types/components/Header/Header.d.ts +4 -0
  97. package/dist/types/components/Header/Header.types.d.ts +28 -0
  98. package/dist/types/components/Header/index.d.ts +2 -0
  99. package/dist/types/components/Hint/Hint.d.ts +4 -0
  100. package/dist/types/components/Hint/Hint.types.d.ts +4 -0
  101. package/dist/types/components/Hint/index.d.ts +1 -0
  102. package/dist/types/components/Input/Input.d.ts +4 -0
  103. package/dist/types/components/Input/Input.types.d.ts +22 -0
  104. package/dist/types/components/Input/index.d.ts +1 -0
  105. package/dist/types/components/InsetText/InsetText.d.ts +4 -0
  106. package/dist/types/components/InsetText/InsetText.types.d.ts +4 -0
  107. package/dist/types/components/InsetText/index.d.ts +1 -0
  108. package/dist/types/components/Label/Label.d.ts +4 -0
  109. package/dist/types/components/Label/Label.types.d.ts +6 -0
  110. package/dist/types/components/Label/index.d.ts +1 -0
  111. package/dist/types/components/Landing/Landing.d.ts +4 -0
  112. package/dist/types/components/Landing/Landing.types.d.ts +4 -0
  113. package/dist/types/components/Landing/index.d.ts +1 -0
  114. package/dist/types/components/LinkWithRef/LinkWithRef.d.ts +4 -0
  115. package/dist/types/components/LinkWithRef/LinkWithRef.types.d.ts +9 -0
  116. package/dist/types/components/LinkWithRef/index.d.ts +1 -0
  117. package/dist/types/components/Loading/Loading.d.ts +5 -0
  118. package/dist/types/components/Loading/Loading.types.d.ts +4 -0
  119. package/dist/types/components/Loading/index.d.ts +1 -0
  120. package/dist/types/components/Main/Main.d.ts +4 -0
  121. package/dist/types/components/Main/Main.types.d.ts +5 -0
  122. package/dist/types/components/Main/index.d.ts +1 -0
  123. package/dist/types/components/NotFoundPage/NotFoundPage.d.ts +3 -0
  124. package/dist/types/components/NotFoundPage/index.d.ts +1 -0
  125. package/dist/types/components/NotificationBanner/NotificationBanner.config.d.ts +2 -0
  126. package/dist/types/components/NotificationBanner/NotificationBanner.d.ts +4 -0
  127. package/dist/types/components/NotificationBanner/NotificationBanner.types.d.ts +12 -0
  128. package/dist/types/components/NotificationBanner/index.d.ts +1 -0
  129. package/dist/types/components/PDFViewer/ObjectToQueryString.d.ts +1 -0
  130. package/dist/types/components/PDFViewer/PDFViewer.d.ts +4 -0
  131. package/dist/types/components/PDFViewer/PDFViewer.types.d.ts +25 -0
  132. package/dist/types/components/PDFViewer/PDFViewerBackend.d.ts +2 -0
  133. package/dist/types/components/PDFViewer/ResolvePDFSource.d.ts +4 -0
  134. package/dist/types/components/PDFViewer/Slugify.d.ts +1 -0
  135. package/dist/types/components/PDFViewer/index.d.ts +2 -0
  136. package/dist/types/components/PDFViewer/testutilities/SampleBase64.d.ts +44 -0
  137. package/dist/types/components/PDFViewerCanvas/PDFViewerCanvas.d.ts +9 -0
  138. package/dist/types/components/PDFViewerCanvas/PDFViewerCanvas.types.d.ts +8 -0
  139. package/dist/types/components/PDFViewerCanvas/index.d.ts +1 -0
  140. package/dist/types/components/Pagination/NavigationButton.d.ts +3 -0
  141. package/dist/types/components/Pagination/Pagination.d.ts +4 -0
  142. package/dist/types/components/Pagination/Pagination.types.d.ts +22 -0
  143. package/dist/types/components/Pagination/SvgIcon.d.ts +3 -0
  144. package/dist/types/components/Pagination/UsePagination.d.ts +9 -0
  145. package/dist/types/components/Pagination/index.d.ts +1 -0
  146. package/dist/types/components/Panel/Panel.d.ts +4 -0
  147. package/dist/types/components/Panel/Panel.types.d.ts +7 -0
  148. package/dist/types/components/Panel/index.d.ts +1 -0
  149. package/dist/types/components/PhaseBanner/PhaseBanner.d.ts +4 -0
  150. package/dist/types/components/PhaseBanner/PhaseBanner.types.d.ts +6 -0
  151. package/dist/types/components/PhaseBanner/index.d.ts +1 -0
  152. package/dist/types/components/ProblemWithService/ProblemWithService.d.ts +4 -0
  153. package/dist/types/components/ProblemWithService/ProblemWithService.types.d.ts +7 -0
  154. package/dist/types/components/ProblemWithService/index.d.ts +1 -0
  155. package/dist/types/components/Radios/Radios.config.d.ts +1 -0
  156. package/dist/types/components/Radios/Radios.d.ts +4 -0
  157. package/dist/types/components/Radios/Radios.types.d.ts +7 -0
  158. package/dist/types/components/Radios/index.d.ts +2 -0
  159. package/dist/types/components/Select/Select.d.ts +4 -0
  160. package/dist/types/components/Select/Select.types.d.ts +21 -0
  161. package/dist/types/components/Select/index.d.ts +1 -0
  162. package/dist/types/components/ServiceNavigation/ServiceNavigation.d.ts +4 -0
  163. package/dist/types/components/ServiceNavigation/ServiceNavigation.types.d.ts +21 -0
  164. package/dist/types/components/ServiceNavigation/index.d.ts +1 -0
  165. package/dist/types/components/SkipLink/SkipLink.config.d.ts +1 -0
  166. package/dist/types/components/SkipLink/SkipLink.d.ts +4 -0
  167. package/dist/types/components/SkipLink/SkipLink.types.d.ts +5 -0
  168. package/dist/types/components/SkipLink/index.d.ts +2 -0
  169. package/dist/types/components/SummaryList/SummaryList.d.ts +4 -0
  170. package/dist/types/components/SummaryList/SummaryList.types.d.ts +22 -0
  171. package/dist/types/components/SummaryList/index.d.ts +1 -0
  172. package/dist/types/components/Table/Table.d.ts +4 -0
  173. package/dist/types/components/Table/Table.types.d.ts +21 -0
  174. package/dist/types/components/Table/index.d.ts +1 -0
  175. package/dist/types/components/Tabs/Tabs.config.d.ts +1 -0
  176. package/dist/types/components/Tabs/Tabs.d.ts +4 -0
  177. package/dist/types/components/Tabs/Tabs.types.d.ts +14 -0
  178. package/dist/types/components/Tabs/index.d.ts +2 -0
  179. package/dist/types/components/Tag/Tag.d.ts +4 -0
  180. package/dist/types/components/Tag/Tag.types.d.ts +4 -0
  181. package/dist/types/components/Tag/index.d.ts +1 -0
  182. package/dist/types/components/TaskList/TaskList.d.ts +4 -0
  183. package/dist/types/components/TaskList/TaskList.types.d.ts +21 -0
  184. package/dist/types/components/TaskList/index.d.ts +1 -0
  185. package/dist/types/components/Textarea/Textarea.d.ts +4 -0
  186. package/dist/types/components/Textarea/Textarea.types.d.ts +14 -0
  187. package/dist/types/components/Textarea/index.d.ts +1 -0
  188. package/dist/types/components/WarningInfo/WarningInfo.d.ts +4 -0
  189. package/dist/types/components/WarningInfo/WarningInfo.types.d.ts +8 -0
  190. package/dist/types/components/WarningInfo/index.d.ts +1 -0
  191. package/dist/types/components/WarningText/WarningText.d.ts +4 -0
  192. package/dist/types/components/WarningText/WarningText.types.d.ts +4 -0
  193. package/dist/types/components/WarningText/index.d.ts +1 -0
  194. package/dist/types/components/index.d.ts +49 -0
  195. package/dist/types/dynamics/index.d.ts +3 -0
  196. package/dist/types/dynamics/types.d.ts +37 -0
  197. package/dist/types/index.d.ts +1 -0
  198. package/dist/types/utils/ProcessExampleData.d.ts +3 -0
  199. package/dist/types/utils/StoriesFromFixtures.d.ts +5 -0
  200. package/dist/types/utils/TitleCase.d.ts +2 -0
  201. package/dist/types/utils/WithReference.d.ts +5 -0
  202. package/dist/types/utils/WithReference.types.d.ts +10 -0
  203. package/package.json +180 -0
@@ -0,0 +1,241 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { useState, useRef, useCallback, useEffect } from 'react';
3
+ import { getDocument } from 'pdfjs-dist/webpack.mjs';
4
+ import { Link } from 'react-router-dom';
5
+ import 'govuk-frontend';
6
+
7
+ const Loading = ({ message = null, html = null }) => {
8
+ return (jsx("div", { className: "govuk-grid-row", children: jsxs("div", { className: "govuk-grid-column-full", children: [message || html ? (jsx("div", { className: "govuk-grid-row", children: jsx("div", { className: "govuk-grid-column-full head-space", children: html ? (html) : (jsx("h2", { className: "govuk-heading-m govuk-!-text-align-centre", children: message })) }) })) : null, jsx("div", { className: "govuk-hint govuk-grid-column-full", children: jsx("div", { className: "centered-wheel", "data-testid": "centered-wheel-identifier", children: jsx("div", { className: "loading-wheel-2", "data-testid": "loading-wheel-2-identifier" }) }) })] }) }));
9
+ };
10
+
11
+ function Slugify(str) {
12
+ str = str.replace(/^\s+|\s+$/g, ""); // trim leading/trailing white space
13
+ str = str.toLowerCase(); // convert string to lowercase
14
+ str = str
15
+ .replace(/[^a-z0-9 -]/g, "") // remove any non-alphanumeric characters
16
+ .replace(/\s+/g, "-") // replace spaces with hyphens
17
+ .replace(/-+/g, "-"); // remove consecutive hyphens
18
+ return str;
19
+ }
20
+
21
+ const _base64ToArrayBuffer = (base64) => {
22
+ const binaryString = window.atob(base64);
23
+ const len = binaryString.length;
24
+ const bytes = new Uint8Array(len);
25
+ for (let i = 0; i < len; i++) {
26
+ bytes[i] = binaryString.charCodeAt(i);
27
+ }
28
+ return bytes.buffer;
29
+ };
30
+ const isBase64 = (value) => /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/.test(value);
31
+ const ResolvePDFSource = (source) => {
32
+ const isBase64Source = isBase64(source);
33
+ if (!isBase64Source) {
34
+ return { isBase64Source, source };
35
+ }
36
+ const blob = new Blob([_base64ToArrayBuffer(source)], {
37
+ type: "application/pdf",
38
+ });
39
+ return { isBase64Source, source: URL.createObjectURL(blob) };
40
+ };
41
+
42
+ const LinkWithRef = ({ children, to, href, forwardedRef = null, ...attributes }) => {
43
+ if (to) {
44
+ return (jsx(Link, { ref: forwardedRef, to: to, ...attributes, children: children }));
45
+ }
46
+ return (jsx("a", { ref: forwardedRef, href: href || "#", ...attributes, children: children }));
47
+ };
48
+
49
+ const Button = (props) => {
50
+ const { element, href, to, isStartButton, disabled, className, preventDoubleClick, name, type, children, ...attributes } = props;
51
+ let el = "";
52
+ let buttonAttributes = {
53
+ name,
54
+ type,
55
+ ...attributes,
56
+ "data-module": "govuk-button",
57
+ };
58
+ let buttonElement = null;
59
+ if (element) {
60
+ el = element;
61
+ }
62
+ else if (href || to) {
63
+ el = "a";
64
+ }
65
+ else {
66
+ el = "button";
67
+ }
68
+ let iconHtml;
69
+ if (isStartButton) {
70
+ iconHtml = (jsx("svg", { className: "govuk-button__start-icon", xmlns: "http://www.w3.org/2000/svg", width: "17.5", height: "19", viewBox: "0 0 33 40", "aria-hidden": "true", focusable: "false", children: jsx("path", { fill: "currentColor", d: "M0 0h13l20 20-20 20H0l20-20z" }) }));
71
+ }
72
+ const commonAttributes = {
73
+ className: `govuk-button ${className || ""}${disabled ? " govuk-button--disabled" : ""} ${isStartButton ? "govuk-button--start" : ""}`,
74
+ // ref: buttonRef,
75
+ };
76
+ if (preventDoubleClick) {
77
+ buttonAttributes["data-prevent-double-click"] = preventDoubleClick;
78
+ }
79
+ if (disabled) {
80
+ buttonAttributes = {
81
+ ...buttonAttributes,
82
+ "aria-disabled": "true",
83
+ disabled: true,
84
+ };
85
+ }
86
+ if (el === "a") {
87
+ const linkAttributes = {
88
+ ...commonAttributes,
89
+ role: "button",
90
+ draggable: "false",
91
+ ...attributes,
92
+ "data-module": "govuk-button",
93
+ href,
94
+ to,
95
+ };
96
+ buttonElement = (jsxs(LinkWithRef, { ...linkAttributes, children: [children, iconHtml] }));
97
+ }
98
+ else if (el === "button") {
99
+ buttonElement = (jsxs("button", { ...buttonAttributes, ...commonAttributes, children: [children, iconHtml] }));
100
+ }
101
+ else if (el === "input") {
102
+ if (!type) {
103
+ buttonAttributes.type = "submit";
104
+ }
105
+ buttonElement = (jsx("input", { value: children, ...buttonAttributes, ...commonAttributes }));
106
+ }
107
+ return buttonElement;
108
+ };
109
+ Button.displayName = "Button";
110
+
111
+ function titleCase(str) {
112
+ return str
113
+ .toLowerCase()
114
+ .split(" ")
115
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
116
+ .join(" ");
117
+ }
118
+
119
+ const Label = ({ className = "", htmlFor, children, isPageHeading, ...attributes }) => {
120
+ if (!children)
121
+ return null;
122
+ const label = (jsx("label", { className: `govuk-label ${className}`, htmlFor: htmlFor, ...attributes, children: children }));
123
+ return isPageHeading ? (jsx("h1", { className: "govuk-label-wrapper", children: label })) : (label);
124
+ };
125
+
126
+ const DifferenceNavigation = ({ differenceId, setDifferenceFocus, totalDifferences, keyword = "variation", plural = "variations", }) => {
127
+ if (totalDifferences === 0) {
128
+ return (jsxs("p", { className: "govuk-body govuk-!-font-size-20 govuk-!-text-align-centre", children: ["No ", `${plural}`, " found"] }));
129
+ }
130
+ const isPreviousDisabled = differenceId <= 1;
131
+ const isNextDisabled = differenceId === totalDifferences;
132
+ const renderButton = (id, onClick, disabled, content) => (jsx(Button, { id: id, onClick: onClick, "data-testid": id, disabled: disabled, children: content }));
133
+ return (jsxs("div", { className: "govuk-grid-row", children: [jsx("div", { className: "govuk-grid-column-one-third", children: jsx("div", { className: "govuk-!-text-align-left", children: renderButton(`previous-${keyword}`, () => setDifferenceFocus(differenceId - 1), isPreviousDisabled, jsxs(Fragment, { children: [" ", jsx("svg", { className: "govuk-button__start-icon back-button", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", transform: "rotate(180)", children: jsx("path", { fill: "currentColor", d: "M8.122 24l-4.122-4 8-8-8-8 4.122-4 11.878 12z" }) }), "\u00A0Previous", " "] })) }) }), jsx("div", { className: "govuk-grid-column-one-third", children: jsxs(Label, { className: "govuk-!-text-align-centre", children: [titleCase(keyword), " ", differenceId, " of ", totalDifferences] }) }), jsx("div", { className: "govuk-grid-column-one-third", children: jsx("div", { className: "govuk-!-text-align-right", children: renderButton(`next-${keyword}`, () => setDifferenceFocus(differenceId + 1), isNextDisabled, jsxs(Fragment, { children: [" ", "Next", jsx("svg", { className: "govuk-button__start-icon back-button", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", children: jsx("path", { fill: "currentColor", d: "M8.122 24l-4.122-4 8-8-8-8 4.122-4 11.878 12z" }) })] })) }) })] }));
134
+ };
135
+
136
+ const ErrorMessage = ({ className, children, visuallyHiddenText = "Error", ...attributes }) => {
137
+ let visuallyHiddenTextComponent = null;
138
+ if (visuallyHiddenText) {
139
+ visuallyHiddenTextComponent = (jsxs("span", { className: "govuk-visually-hidden", children: [visuallyHiddenText, ": "] }));
140
+ }
141
+ return (jsxs("p", { className: `govuk-error-message ${className || ""}`, ...attributes, children: [visuallyHiddenTextComponent, children] }));
142
+ };
143
+
144
+ /**
145
+ * PDFViewerCanvas component for rendering PDF documents on a canvas.
146
+ * @param {PDFViewerCanvasProps} props - The component props
147
+ * @returns {JSX.Element} The rendered component
148
+ */
149
+ const PDFViewerCanvas = ({ src, className, documentName, pageNumber = 1, showNavigation = true, ...attributes }) => {
150
+ const [pdfState, setPdfState] = useState({
151
+ loading: true,
152
+ numberOfPages: 0,
153
+ currentPage: pageNumber,
154
+ errorMessage: "",
155
+ });
156
+ const canvasRef = useRef(null);
157
+ const pdfDocumentRef = useRef(null);
158
+ const pageRenderingRef = useRef(false);
159
+ const pageNumberPendingRef = useRef(null);
160
+ const scale = 1;
161
+ const renderPage = useCallback((pageNum) => {
162
+ const pdfDocument = pdfDocumentRef.current;
163
+ const canvas = canvasRef.current;
164
+ if (!pdfDocument || !canvas)
165
+ return;
166
+ pageRenderingRef.current = true;
167
+ pdfDocument.getPage(pageNum).then((page) => {
168
+ const viewport = page.getViewport({ scale });
169
+ canvas.height = viewport.height;
170
+ canvas.width = viewport.width;
171
+ const context = canvas.getContext("2d");
172
+ if (context) {
173
+ const renderContext = {
174
+ canvasContext: context,
175
+ viewport,
176
+ annotationMode: 3,
177
+ };
178
+ const renderTask = page.render(renderContext);
179
+ renderTask.promise.then(() => {
180
+ pageRenderingRef.current = false;
181
+ if (pageNumberPendingRef.current !== null) {
182
+ renderPage(pageNumberPendingRef.current);
183
+ pageNumberPendingRef.current = null;
184
+ }
185
+ });
186
+ }
187
+ });
188
+ }, [scale]);
189
+ const queueRenderPage = useCallback((pageNum) => {
190
+ if (pageRenderingRef.current) {
191
+ pageNumberPendingRef.current = pageNum;
192
+ }
193
+ else {
194
+ renderPage(pageNum);
195
+ }
196
+ }, [renderPage]);
197
+ const setDifferenceFocus = useCallback((pageNum) => {
198
+ if (pageNum < 1 || pageNum > pdfState.numberOfPages)
199
+ return;
200
+ setPdfState((prevState) => ({
201
+ ...prevState,
202
+ currentPage: pageNum,
203
+ }));
204
+ queueRenderPage(pageNum);
205
+ }, [pdfState.numberOfPages, queueRenderPage]);
206
+ useEffect(() => {
207
+ const loadPDF = async (file) => {
208
+ try {
209
+ setPdfState((prevState) => ({ ...prevState, loading: true }));
210
+ const source = ResolvePDFSource(file).source;
211
+ const pdf = await getDocument(source).promise;
212
+ pdfDocumentRef.current = pdf;
213
+ const initialPageNumber = pdf.numPages >= pageNumber ? pageNumber : 1;
214
+ setPdfState({
215
+ loading: false,
216
+ numberOfPages: pdf.numPages,
217
+ currentPage: initialPageNumber,
218
+ errorMessage: "",
219
+ });
220
+ renderPage(initialPageNumber);
221
+ }
222
+ catch (error) {
223
+ console.error("Error loading PDF:", error);
224
+ setPdfState((prevState) => ({
225
+ ...prevState,
226
+ loading: false,
227
+ errorMessage: documentName
228
+ ? `There was an error loading the PDF document called "${documentName}".`
229
+ : "There was an error loading the PDF document.",
230
+ }));
231
+ }
232
+ };
233
+ if (src) {
234
+ loadPDF(src);
235
+ }
236
+ }, [src, pageNumber, renderPage]);
237
+ return (jsxs(Fragment, { children: [pdfState.loading && jsx(Loading, { message: "Loading PDF Document on Canvas" }), pdfState.errorMessage && (jsx(ErrorMessage, { className: "govuk-!-text-align-centre", children: pdfState.errorMessage })), showNavigation && pdfState.numberOfPages > 1 && (jsx("div", { style: { margin: "0 auto" }, children: jsx(DifferenceNavigation, { differenceId: pdfState.currentPage, setDifferenceFocus: setDifferenceFocus, totalDifferences: pdfState.numberOfPages, keyword: "page", plural: "Pages" }) })), jsx("canvas", { className: className, ref: canvasRef, id: `viewer-${Slugify(documentName || "")}`, "data-testid": "viewer", style: { width: "100%", height: "100%" }, ...attributes })] }));
238
+ };
239
+
240
+ export { PDFViewerCanvas };
241
+ //# sourceMappingURL=PDFViewerCanvas.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PDFViewerCanvas.esm.js","sources":["../src/components/Loading/Loading.tsx","../src/components/PDFViewer/Slugify.tsx","../src/components/PDFViewer/ResolvePDFSource.tsx","../src/components/LinkWithRef/LinkWithRef.tsx","../src/components/Button/Button.tsx","../src/utils/TitleCase.tsx","../src/components/Label/Label.tsx","../src/components/DifferenceNavigation/DifferenceNavigation.tsx","../src/components/ErrorMessage/ErrorMessage.tsx","../src/components/PDFViewerCanvas/PDFViewerCanvas.tsx"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":["_jsx","_jsxs","_Fragment","pdfjsLib.getDocument"],"mappings":";;;;;;AAIA,MAAM,OAAO,GAA2B,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,KAAI;AAC1E,IAAA,QACEA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gBAAgB,YAC7BC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wBAAwB,aACpC,OAAO,IAAI,IAAI,IACdD,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAC7BA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAC/C,IAAI,IACH,IAAI,KAEJA,GAAI,CAAA,IAAA,EAAA,EAAA,SAAS,EAAC,2CAA2C,EAAA,QAAA,EACtD,OAAO,EAAA,CACL,CACN,EACG,CAAA,EAAA,CACF,IACJ,IAAI,EACRA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAChDA,GACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gBAAgB,EAAA,aAAA,EACd,2BAA2B,EAAA,QAAA,EAEvCA,aACE,SAAS,EAAC,iBAAiB,EAAA,aAAA,EACf,4BAA4B,EACxC,CAAA,EAAA,CACE,GACF,CACF,EAAA,CAAA,EAAA,CACF;AAEV,CAAC;;ACnCK,SAAU,OAAO,CAAC,GAAW,EAAA;IACjC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACpC,IAAA,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AACxB,IAAA,GAAG,GAAG;AACH,SAAA,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;AAC3B,SAAA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACpB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvB,IAAA,OAAO,GAAG;AACZ;;ACNO,MAAM,oBAAoB,GAAG,CAAC,MAAc,KAAiB;IAClE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACxC,IAAA,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM;AAC/B,IAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AACjC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;;IAEvC,OAAO,KAAK,CAAC,MAAM;AACrB,CAAC;AAEM,MAAM,QAAQ,GAAG,CAAC,KAAa,KACpC,kFAAkF,CAAC,IAAI,CACrF,KAAK,CACN;AAEI,MAAM,gBAAgB,GAAG,CAAC,MAAc,KAAsB;AACnE,IAAA,MAAM,cAAc,GAAY,QAAQ,CAAC,MAAM,CAAC;IAChD,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE;;IAEnC,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1D,QAAA,IAAI,EAAE,iBAAiB;AACxB,KAAA,CAAC;AACF,IAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAC9D,CAAC;;ACtBD,MAAM,WAAW,GAA+B,CAAC,EAC/C,QAAQ,EACR,EAAE,EACF,IAAI,EACJ,YAAY,GAAG,IAAI,EACnB,GAAG,UAAU,EACd,KAAI;IACH,IAAI,EAAE,EAAE;AACN,QAAA,QACEA,GAAC,CAAA,IAAI,EAAC,EAAA,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAM,GAAA,UAAU,YAC5C,QAAQ,EAAA,CACJ;;AAGX,IAAA,QACEA,GAAG,CAAA,GAAA,EAAA,EAAA,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,EAAM,GAAA,UAAU,YACpD,QAAQ,EAAA,CACP;AAER,CAAC;;ACnBD,MAAM,MAAM,GAIR,CAAC,KAAK,KAAI;IACZ,MAAM,EACJ,OAAO,EACP,IAAI,EACJ,EAAE,EACF,aAAa,EACb,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,GAAG,UAAU,EACd,GAAG,KAAK;IAET,IAAI,EAAE,GAAW,EAAE;AACnB,IAAA,IAAI,gBAAgB,GAA+B;QACjD,IAAI;QACJ,IAAI;AACJ,QAAA,GAAG,UAAU;AACb,QAAA,aAAa,EAAE,cAAc;KAC9B;IACD,IAAI,aAAa,GAAuB,IAAI;IAE5C,IAAI,OAAO,EAAE;QACX,EAAE,GAAG,OAAO;;AACP,SAAA,IAAI,IAAI,IAAI,EAAE,EAAE;QACrB,EAAE,GAAG,GAAG;;SACH;QACL,EAAE,GAAG,QAAQ;;AAGf,IAAA,IAAI,QAAiC;IACrC,IAAI,aAAa,EAAE;AACjB,QAAA,QAAQ,IACNA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,0BAA0B,EACpC,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,iBACP,MAAM,EAClB,SAAS,EAAC,OAAO,YAEjBA,GAAM,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,cAAc,EAAC,CAAC,EAAC,8BAA8B,EAAG,CAAA,EAAA,CACzD,CACP;;AAGH,IAAA,MAAM,gBAAgB,GAAG;QACvB,SAAS,EAAE,CAAgB,aAAA,EAAA,SAAS,IAAI,EAAE,GAAG,QAAQ,GAAG,yBAAyB,GAAG,EAAE,CAAI,CAAA,EAAA,aAAa,GAAG,qBAAqB,GAAG,EAAE,CAAE,CAAA;;KAEvI;IAED,IAAI,kBAAkB,EAAE;AACtB,QAAA,gBAAgB,CAAC,2BAA2B,CAAC,GAAG,kBAAkB;;IAGpE,IAAI,QAAQ,EAAE;AACZ,QAAA,gBAAgB,GAAG;AACjB,YAAA,GAAG,gBAAgB;AACnB,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,QAAQ,EAAE,IAAI;SACf;;AAGH,IAAA,IAAI,EAAE,KAAK,GAAG,EAAE;AACd,QAAA,MAAM,cAAc,GAA+B;AACjD,YAAA,GAAG,gBAAgB;AACnB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,GAAG,UAAU;AACb,YAAA,aAAa,EAAE,cAAc;YAC7B,IAAI;YACJ,EAAE;SACH;AAED,QAAA,aAAa,IACXC,IAAC,CAAA,WAAW,EAAK,EAAA,GAAA,cAAc,EAC5B,QAAA,EAAA,CAAA,QAAQ,EACR,QAAQ,CACG,EAAA,CAAA,CACf;;AACI,SAAA,IAAI,EAAE,KAAK,QAAQ,EAAE;AAC1B,QAAA,aAAa,IACXA,IAAY,CAAA,QAAA,EAAA,EAAA,GAAA,gBAAgB,EAAM,GAAA,gBAAgB,EAC/C,QAAA,EAAA,CAAA,QAAQ,EACR,QAAQ,CACF,EAAA,CAAA,CACV;;AACI,SAAA,IAAI,EAAE,KAAK,OAAO,EAAE;QACzB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,gBAAgB,CAAC,IAAI,GAAG,QAAQ;;AAElC,QAAA,aAAa,IACXD,GACE,CAAA,OAAA,EAAA,EAAA,KAAK,EAAE,QAAkB,EACrB,GAAA,gBAAgB,EAChB,GAAA,gBAAgB,EACpB,CAAA,CACH;;AAGH,IAAA,OAAO,aAAa;AACtB,CAAC;AAED,MAAM,CAAC,WAAW,GAAG,QAAQ;;AClHvB,SAAU,SAAS,CAAC,GAAW,EAAA;AACnC,IAAA,OAAO;AACJ,SAAA,WAAW;SACX,KAAK,CAAC,GAAG;SACT,GAAG,CAAC,CAAC,IAAY,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAClE,IAAI,CAAC,GAAG,CAAC;AACd;;ACHA,MAAM,KAAK,GAAkE,CAAC,EAC5E,SAAS,GAAG,EAAE,EACd,OAAO,EACP,QAAQ,EACR,aAAa,EACb,GAAG,UAAU,EACd,KAAI;AACH,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,IAAI;AAE1B,IAAA,MAAM,KAAK,IACTA,eACE,SAAS,EAAE,eAAe,SAAS,CAAA,CAAE,EACrC,OAAO,EAAE,OAAO,EACZ,GAAA,UAAU,YAEb,QAAQ,EAAA,CACH,CACT;AAED,IAAA,OAAO,aAAa,IAClBA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,qBAAqB,YAAE,KAAK,EAAA,CAAM,KAEhD,KAAK,CACN;AACH,CAAC;;ACrBD,MAAM,oBAAoB,GAAwC,CAAC,EACjE,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,GAAG,WAAW,EACrB,MAAM,GAAG,YAAY,GACtB,KAAI;AACH,IAAA,IAAI,gBAAgB,KAAK,CAAC,EAAE;QAC1B,QACEC,IAAG,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,2DAA2D,EAClE,QAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAG,MAAM,CAAA,CAAE,EACb,QAAA,CAAA,EAAA,CAAA;;AAIR,IAAA,MAAM,kBAAkB,GAAG,YAAY,IAAI,CAAC;AAC5C,IAAA,MAAM,cAAc,GAAG,YAAY,KAAK,gBAAgB;AAExD,IAAA,MAAM,YAAY,GAAG,CACnB,EAAU,EACV,OAAmB,EACnB,QAAiB,EACjB,OAAwB,MAExBD,IAAC,MAAM,EAAA,EAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAe,aAAA,EAAA,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAClE,OAAO,EAAA,CACD,CACV;AAED,IAAA,QACEC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BD,aAAK,SAAS,EAAC,6BAA6B,EAC1C,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,YACrC,YAAY,CACX,YAAY,OAAO,CAAA,CAAE,EACrB,MAAM,kBAAkB,CAAC,YAAY,GAAG,CAAC,CAAC,EAC1C,kBAAkB,EAClBC,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACG,GAAG,EACJF,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,sCAAsC,EAChD,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EAAA,aAAA,EACP,MAAM,EAClB,SAAS,EAAC,OAAO,EACjB,SAAS,EAAC,aAAa,YAEvBA,GACE,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,+CAA+C,GACjD,EACE,CAAA,EAAA,gBAAA,EACS,GAAG,CACjB,EAAA,CAAA,CACJ,GACG,EACF,CAAA,EACNA,aAAK,SAAS,EAAC,6BAA6B,EAC1C,QAAA,EAAAC,IAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,2BAA2B,aACzC,SAAS,CAAC,OAAO,CAAC,EAAA,GAAA,EAAG,YAAY,EAAM,MAAA,EAAA,gBAAgB,IAClD,EACJ,CAAA,EAEND,aAAK,SAAS,EAAC,6BAA6B,EAC1C,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EACtC,QAAA,EAAA,YAAY,CACX,CAAQ,KAAA,EAAA,OAAO,EAAE,EACjB,MAAM,kBAAkB,CAAC,YAAY,GAAG,CAAC,CAAC,EAC1C,cAAc,EACdC,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACG,GAAG,EAAA,MAAA,EAEJF,aACE,SAAS,EAAC,sCAAsC,EAChD,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EAAA,aAAA,EACP,MAAM,EAClB,SAAS,EAAC,OAAO,EAAA,QAAA,EAEjBA,cACE,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,+CAA+C,EAAA,CACjD,GACE,CACL,EAAA,CAAA,CACJ,GACG,EACF,CAAA,CAAA,EAAA,CACF;AAEV,CAAC;;ACjGD,MAAM,YAAY,GAAgC,CAAC,EACjD,SAAS,EACT,QAAQ,EACR,kBAAkB,GAAG,OAAO,EAC5B,GAAG,UAAU,EACd,KAAI;IACH,IAAI,2BAA2B,GAAuB,IAAI;IAC1D,IAAI,kBAAkB,EAAE;QACtB,2BAA2B,IACzBC,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,uBAAuB,EAAE,QAAA,EAAA,CAAA,kBAAkB,EAAU,IAAA,CAAA,EAAA,CAAA,CACtE;;AAGH,IAAA,QACEA,IAAG,CAAA,GAAA,EAAA,EAAA,SAAS,EAAE,CAAA,oBAAA,EAAuB,SAAS,IAAI,EAAE,CAAE,CAAA,EAAA,GAAM,UAAU,EACnE,QAAA,EAAA,CAAA,2BAA2B,EAC3B,QAAQ,CAAA,EAAA,CACP;AAER,CAAC;;ACbD;;;;AAIG;AACG,MAAA,eAAe,GAAmC,CAAC,EACvD,GAAG,EACH,SAAS,EACT,YAAY,EACZ,UAAU,GAAG,CAAC,EACd,cAAc,GAAG,IAAI,EACrB,GAAG,UAAU,EACd,KAAI;AACH,IAAA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC;AACvC,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,YAAY,EAAE,EAAE;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,MAAM,CAA2B,IAAI,CAAC;AACxD,IAAA,MAAM,cAAc,GAAG,MAAM,CAAmC,IAAI,CAAC;AACrE,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC;AAC/C,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAgB,IAAI,CAAC;IACxD,MAAM,KAAK,GAAG,CAAC;AAEf,IAAA,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,OAAe,KAAI;AAClB,QAAA,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO;AAC1C,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO;AAChC,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM;YAAE;AAE7B,QAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI;QAE/B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAA2B,KAAI;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC5C,YAAA,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;AAC/B,YAAA,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;YAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;YACvC,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,aAAa,GAAG;AACpB,oBAAA,aAAa,EAAE,OAAO;oBACtB,QAAQ;AACR,oBAAA,cAAc,EAAE,CAAC;iBAClB;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AAC7C,gBAAA,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAK;AAC3B,oBAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK;AAChC,oBAAA,IAAI,oBAAoB,CAAC,OAAO,KAAK,IAAI,EAAE;AACzC,wBAAA,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACxC,wBAAA,oBAAoB,CAAC,OAAO,GAAG,IAAI;;AAEvC,iBAAC,CAAC;;AAEN,SAAC,CAAC;AACJ,KAAC,EACD,CAAC,KAAK,CAAC,CACR;AAED,IAAA,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,OAAe,KAAI;AAClB,QAAA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC5B,YAAA,oBAAoB,CAAC,OAAO,GAAG,OAAO;;aACjC;YACL,UAAU,CAAC,OAAO,CAAC;;AAEvB,KAAC,EACD,CAAC,UAAU,CAAC,CACb;AAED,IAAA,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,OAAe,KAAI;QAClB,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa;YAAE;AACrD,QAAA,WAAW,CAAC,CAAC,SAAS,MAAM;AAC1B,YAAA,GAAG,SAAS;AACZ,YAAA,WAAW,EAAE,OAAO;AACrB,SAAA,CAAC,CAAC;QACH,eAAe,CAAC,OAAO,CAAC;KACzB,EACD,CAAC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,CAC1C;IAED,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,OAAO,GAAG,OAAO,IAAY,KAAI;AACrC,YAAA,IAAI;AACF,gBAAA,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;gBAC5C,MAAM,GAAG,GAAG,MAAME,WAAoB,CAAC,MAAM,CAAC,CAAC,OAAO;AACtD,gBAAA,cAAc,CAAC,OAAO,GAAG,GAAG;AAE5B,gBAAA,MAAM,iBAAiB,GAAG,GAAG,CAAC,QAAQ,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC;AAErE,gBAAA,WAAW,CAAC;AACV,oBAAA,OAAO,EAAE,KAAK;oBACd,aAAa,EAAE,GAAG,CAAC,QAAQ;AAC3B,oBAAA,WAAW,EAAE,iBAAiB;AAC9B,oBAAA,YAAY,EAAE,EAAE;AACjB,iBAAA,CAAC;gBAEF,UAAU,CAAC,iBAAiB,CAAC;;YAC7B,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAC1C,gBAAA,WAAW,CAAC,CAAC,SAAS,MAAM;AAC1B,oBAAA,GAAG,SAAS;AACZ,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,YAAY,EAAE;0BACV,CAAuD,oDAAA,EAAA,YAAY,CAAI,EAAA;AACzE,0BAAE,8CAA8C;AACnD,iBAAA,CAAC,CAAC;;AAEP,SAAC;QAED,IAAI,GAAG,EAAE;YACP,OAAO,CAAC,GAAG,CAAC;;KAEf,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEjC,QACEF,IACG,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,QAAQ,CAAC,OAAO,IAAIF,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAC,gCAAgC,EAAA,CAAG,EACxE,QAAQ,CAAC,YAAY,KACpBA,GAAA,CAAC,YAAY,EAAA,EAAC,SAAS,EAAC,2BAA2B,EAAA,QAAA,EAChD,QAAQ,CAAC,YAAY,EACT,CAAA,CAChB,EACA,cAAc,IAAI,QAAQ,CAAC,aAAa,GAAG,CAAC,KAC3CA,GAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAC9B,QAAA,EAAAA,GAAA,CAAC,oBAAoB,EAAA,EACnB,YAAY,EAAE,QAAQ,CAAC,WAAW,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,QAAQ,CAAC,aAAa,EACxC,OAAO,EAAC,MAAM,EACd,MAAM,EAAC,OAAO,EAAA,CACd,EACE,CAAA,CACP,EACDA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,SAAS,EACd,EAAE,EAAE,CAAA,OAAA,EAAU,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAE,CAAA,EAAA,aAAA,EAC/B,QAAQ,EACpB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,GACpC,UAAU,EAAA,CACd,CACD,EAAA,CAAA;AAEP;;;;"}