@aquera/nile-elements 1.5.5 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/README.md +4 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +465 -238
  5. package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js +1 -1
  6. package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js.map +1 -1
  7. package/dist/nile-auto-complete/nile-auto-complete.css.esm.js +13 -2
  8. package/dist/nile-button/nile-button.cjs.js +1 -1
  9. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  10. package/dist/nile-button/nile-button.css.cjs.js +1 -1
  11. package/dist/nile-button/nile-button.css.cjs.js.map +1 -1
  12. package/dist/nile-button/nile-button.css.esm.js +89 -33
  13. package/dist/nile-button/nile-button.esm.js +2 -2
  14. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  15. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  16. package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
  17. package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
  18. package/dist/nile-calendar/nile-calendar.css.esm.js +59 -2
  19. package/dist/nile-calendar/nile-calendar.esm.js +16 -10
  20. package/dist/nile-checkbox/nile-checkbox.css.cjs.js +1 -1
  21. package/dist/nile-checkbox/nile-checkbox.css.cjs.js.map +1 -1
  22. package/dist/nile-checkbox/nile-checkbox.css.esm.js +4 -5
  23. package/dist/nile-chip/nile-chip.css.cjs.js +1 -1
  24. package/dist/nile-chip/nile-chip.css.cjs.js.map +1 -1
  25. package/dist/nile-chip/nile-chip.css.esm.js +37 -23
  26. package/dist/nile-code-editor/nile-code-editor.cjs.js +1 -1
  27. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  28. package/dist/nile-code-editor/nile-code-editor.css.cjs.js +1 -1
  29. package/dist/nile-code-editor/nile-code-editor.css.cjs.js.map +1 -1
  30. package/dist/nile-code-editor/nile-code-editor.css.esm.js +7 -6
  31. package/dist/nile-code-editor/nile-code-editor.esm.js +1 -1
  32. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  33. package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
  34. package/dist/nile-date-picker/nile-date-picker.esm.js +4 -4
  35. package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
  36. package/dist/nile-dropdown/nile-dropdown.cjs.js.map +1 -1
  37. package/dist/nile-dropdown/nile-dropdown.esm.js +1 -1
  38. package/dist/nile-file-upload/utils/file-validation.util.cjs.js +2 -2
  39. package/dist/nile-file-upload/utils/file-validation.util.cjs.js.map +1 -1
  40. package/dist/nile-file-upload/utils/file-validation.util.esm.js +1 -1
  41. package/dist/nile-filter-chip/nile-filter-chip.cjs.js +1 -1
  42. package/dist/nile-filter-chip/nile-filter-chip.cjs.js.map +1 -1
  43. package/dist/nile-filter-chip/nile-filter-chip.css.cjs.js +1 -1
  44. package/dist/nile-filter-chip/nile-filter-chip.css.cjs.js.map +1 -1
  45. package/dist/nile-filter-chip/nile-filter-chip.css.esm.js +24 -2
  46. package/dist/nile-filter-chip/nile-filter-chip.esm.js +2 -2
  47. package/dist/nile-inline-edit/nile-inline-edit.cjs.js +1 -1
  48. package/dist/nile-inline-edit/nile-inline-edit.cjs.js.map +1 -1
  49. package/dist/nile-inline-edit/nile-inline-edit.css.cjs.js +1 -1
  50. package/dist/nile-inline-edit/nile-inline-edit.css.cjs.js.map +1 -1
  51. package/dist/nile-inline-edit/nile-inline-edit.css.esm.js +15 -6
  52. package/dist/nile-inline-edit/nile-inline-edit.esm.js +2 -2
  53. package/dist/nile-input/nile-input.css.cjs.js +1 -1
  54. package/dist/nile-input/nile-input.css.cjs.js.map +1 -1
  55. package/dist/nile-input/nile-input.css.esm.js +4 -4
  56. package/dist/nile-link/nile-link.cjs.js +1 -1
  57. package/dist/nile-link/nile-link.cjs.js.map +1 -1
  58. package/dist/nile-link/nile-link.css.cjs.js +1 -1
  59. package/dist/nile-link/nile-link.css.cjs.js.map +1 -1
  60. package/dist/nile-link/nile-link.css.esm.js +3 -4
  61. package/dist/nile-link/nile-link.esm.js +2 -2
  62. package/dist/nile-qr-code/index.cjs.js +2 -0
  63. package/dist/nile-qr-code/index.cjs.js.map +1 -0
  64. package/dist/nile-qr-code/index.esm.js +1 -0
  65. package/dist/nile-qr-code/nile-qr-code-utils.cjs.js +2 -0
  66. package/dist/nile-qr-code/nile-qr-code-utils.cjs.js.map +1 -0
  67. package/dist/nile-qr-code/nile-qr-code-utils.esm.js +1 -0
  68. package/dist/nile-qr-code/nile-qr-code.cjs.js +2 -0
  69. package/dist/nile-qr-code/nile-qr-code.cjs.js.map +1 -0
  70. package/dist/nile-qr-code/nile-qr-code.css.cjs.js +2 -0
  71. package/dist/nile-qr-code/nile-qr-code.css.cjs.js.map +1 -0
  72. package/dist/nile-qr-code/nile-qr-code.css.esm.js +12 -0
  73. package/dist/nile-qr-code/nile-qr-code.esm.js +9 -0
  74. package/dist/nile-radio/nile-radio.css.cjs.js +1 -1
  75. package/dist/nile-radio/nile-radio.css.cjs.js.map +1 -1
  76. package/dist/nile-radio/nile-radio.css.esm.js +1 -1
  77. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js +1 -1
  78. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js.map +1 -1
  79. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js +1 -1
  80. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js.map +1 -1
  81. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.esm.js +25 -6
  82. package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -1
  83. package/dist/nile-rich-text-editor/nile-rte-select.cjs.js +1 -1
  84. package/dist/nile-rich-text-editor/nile-rte-select.cjs.js.map +1 -1
  85. package/dist/nile-rich-text-editor/nile-rte-select.esm.js +4 -3
  86. package/dist/nile-select/nile-select.css.cjs.js +1 -1
  87. package/dist/nile-select/nile-select.css.cjs.js.map +1 -1
  88. package/dist/nile-select/nile-select.css.esm.js +7 -4
  89. package/dist/nile-slide-toggle/nile-slide-toggle.css.cjs.js +1 -1
  90. package/dist/nile-slide-toggle/nile-slide-toggle.css.cjs.js.map +1 -1
  91. package/dist/nile-slide-toggle/nile-slide-toggle.css.esm.js +5 -1
  92. package/dist/nile-textarea/nile-textarea.css.cjs.js +1 -1
  93. package/dist/nile-textarea/nile-textarea.css.cjs.js.map +1 -1
  94. package/dist/nile-textarea/nile-textarea.css.esm.js +10 -5
  95. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js +1 -1
  96. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js.map +1 -1
  97. package/dist/nile-virtual-select/nile-virtual-select.css.esm.js +5 -3
  98. package/dist/src/index.d.ts +1 -0
  99. package/dist/src/index.js +1 -0
  100. package/dist/src/index.js.map +1 -1
  101. package/dist/src/nile-auto-complete/nile-auto-complete.css.js +11 -0
  102. package/dist/src/nile-auto-complete/nile-auto-complete.css.js.map +1 -1
  103. package/dist/src/nile-button/nile-button.css.js +89 -33
  104. package/dist/src/nile-button/nile-button.css.js.map +1 -1
  105. package/dist/src/nile-button/nile-button.js +5 -5
  106. package/dist/src/nile-button/nile-button.js.map +1 -1
  107. package/dist/src/nile-calendar/nile-calendar.css.js +57 -0
  108. package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
  109. package/dist/src/nile-calendar/nile-calendar.d.ts +1 -0
  110. package/dist/src/nile-calendar/nile-calendar.js +24 -6
  111. package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
  112. package/dist/src/nile-checkbox/nile-checkbox.css.js +4 -5
  113. package/dist/src/nile-checkbox/nile-checkbox.css.js.map +1 -1
  114. package/dist/src/nile-chip/nile-chip.css.js +35 -21
  115. package/dist/src/nile-chip/nile-chip.css.js.map +1 -1
  116. package/dist/src/nile-code-editor/nile-code-editor.css.js +7 -6
  117. package/dist/src/nile-code-editor/nile-code-editor.css.js.map +1 -1
  118. package/dist/src/nile-code-editor/nile-code-editor.d.ts +1 -1
  119. package/dist/src/nile-code-editor/nile-code-editor.js +7 -1
  120. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  121. package/dist/src/nile-date-picker/nile-date-picker.d.ts +3 -0
  122. package/dist/src/nile-date-picker/nile-date-picker.js +22 -2
  123. package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  124. package/dist/src/nile-dropdown/nile-dropdown.d.ts +1 -0
  125. package/dist/src/nile-dropdown/nile-dropdown.js +11 -0
  126. package/dist/src/nile-dropdown/nile-dropdown.js.map +1 -1
  127. package/dist/src/nile-file-upload/utils/file-validation.util.js +11 -6
  128. package/dist/src/nile-file-upload/utils/file-validation.util.js.map +1 -1
  129. package/dist/src/nile-filter-chip/nile-filter-chip.css.js +22 -0
  130. package/dist/src/nile-filter-chip/nile-filter-chip.css.js.map +1 -1
  131. package/dist/src/nile-filter-chip/nile-filter-chip.d.ts +1 -0
  132. package/dist/src/nile-filter-chip/nile-filter-chip.js +6 -0
  133. package/dist/src/nile-filter-chip/nile-filter-chip.js.map +1 -1
  134. package/dist/src/nile-inline-edit/nile-inline-edit.css.js +15 -6
  135. package/dist/src/nile-inline-edit/nile-inline-edit.css.js.map +1 -1
  136. package/dist/src/nile-inline-edit/nile-inline-edit.d.ts +2 -0
  137. package/dist/src/nile-inline-edit/nile-inline-edit.js +7 -0
  138. package/dist/src/nile-inline-edit/nile-inline-edit.js.map +1 -1
  139. package/dist/src/nile-input/nile-input.css.js +4 -4
  140. package/dist/src/nile-input/nile-input.css.js.map +1 -1
  141. package/dist/src/nile-link/nile-link.css.js +1 -2
  142. package/dist/src/nile-link/nile-link.css.js.map +1 -1
  143. package/dist/src/nile-link/nile-link.js +1 -0
  144. package/dist/src/nile-link/nile-link.js.map +1 -1
  145. package/dist/src/nile-qr-code/index.d.ts +1 -0
  146. package/dist/src/nile-qr-code/index.js +2 -0
  147. package/dist/src/nile-qr-code/index.js.map +1 -0
  148. package/dist/src/nile-qr-code/nile-qr-code-utils.d.ts +15 -0
  149. package/dist/src/nile-qr-code/nile-qr-code-utils.js +678 -0
  150. package/dist/src/nile-qr-code/nile-qr-code-utils.js.map +1 -0
  151. package/dist/src/nile-qr-code/nile-qr-code.css.d.ts +12 -0
  152. package/dist/src/nile-qr-code/nile-qr-code.css.js +24 -0
  153. package/dist/src/nile-qr-code/nile-qr-code.css.js.map +1 -0
  154. package/dist/src/nile-qr-code/nile-qr-code.d.ts +127 -0
  155. package/dist/src/nile-qr-code/nile-qr-code.js +381 -0
  156. package/dist/src/nile-qr-code/nile-qr-code.js.map +1 -0
  157. package/dist/src/nile-qr-code/nile-qr-code.test.d.ts +1 -0
  158. package/dist/src/nile-qr-code/nile-qr-code.test.js +719 -0
  159. package/dist/src/nile-qr-code/nile-qr-code.test.js.map +1 -0
  160. package/dist/src/nile-radio/nile-radio.css.js +1 -1
  161. package/dist/src/nile-radio/nile-radio.css.js.map +1 -1
  162. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +25 -6
  163. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js.map +1 -1
  164. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.d.ts +1 -0
  165. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +17 -6
  166. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -1
  167. package/dist/src/nile-rich-text-editor/nile-rte-select.d.ts +1 -0
  168. package/dist/src/nile-rich-text-editor/nile-rte-select.js +7 -2
  169. package/dist/src/nile-rich-text-editor/nile-rte-select.js.map +1 -1
  170. package/dist/src/nile-select/nile-select.css.js +7 -4
  171. package/dist/src/nile-select/nile-select.css.js.map +1 -1
  172. package/dist/src/nile-slide-toggle/nile-slide-toggle.css.js +5 -1
  173. package/dist/src/nile-slide-toggle/nile-slide-toggle.css.js.map +1 -1
  174. package/dist/src/nile-textarea/nile-textarea.css.js +10 -5
  175. package/dist/src/nile-textarea/nile-textarea.css.js.map +1 -1
  176. package/dist/src/nile-virtual-select/nile-virtual-select.css.js +5 -3
  177. package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +1 -1
  178. package/dist/src/version.js +1 -1
  179. package/dist/src/version.js.map +1 -1
  180. package/dist/tsconfig.tsbuildinfo +1 -1
  181. package/package.json +3 -2
  182. package/src/index.ts +2 -1
  183. package/src/nile-auto-complete/nile-auto-complete.css.ts +11 -0
  184. package/src/nile-button/nile-button.css.ts +89 -33
  185. package/src/nile-button/nile-button.ts +6 -5
  186. package/src/nile-calendar/nile-calendar.css.ts +57 -0
  187. package/src/nile-calendar/nile-calendar.ts +17 -6
  188. package/src/nile-checkbox/nile-checkbox.css.ts +4 -5
  189. package/src/nile-chip/nile-chip.css.ts +35 -21
  190. package/src/nile-code-editor/nile-code-editor.css.ts +7 -6
  191. package/src/nile-code-editor/nile-code-editor.ts +7 -1
  192. package/src/nile-date-picker/nile-date-picker.ts +22 -2
  193. package/src/nile-dropdown/nile-dropdown.ts +11 -0
  194. package/src/nile-file-upload/utils/file-validation.util.ts +10 -5
  195. package/src/nile-filter-chip/nile-filter-chip.css.ts +22 -0
  196. package/src/nile-filter-chip/nile-filter-chip.ts +2 -0
  197. package/src/nile-inline-edit/nile-inline-edit.css.ts +15 -6
  198. package/src/nile-inline-edit/nile-inline-edit.ts +4 -0
  199. package/src/nile-input/nile-input.css.ts +4 -4
  200. package/src/nile-link/nile-link.css.ts +1 -2
  201. package/src/nile-link/nile-link.ts +1 -0
  202. package/src/nile-qr-code/index.ts +1 -0
  203. package/src/nile-qr-code/nile-qr-code-utils.ts +733 -0
  204. package/src/nile-qr-code/nile-qr-code.css.ts +26 -0
  205. package/src/nile-qr-code/nile-qr-code.test.ts +879 -0
  206. package/src/nile-qr-code/nile-qr-code.ts +431 -0
  207. package/src/nile-radio/nile-radio.css.ts +1 -1
  208. package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +25 -6
  209. package/src/nile-rich-text-editor/nile-rich-text-editor.ts +14 -6
  210. package/src/nile-rich-text-editor/nile-rte-select.ts +5 -2
  211. package/src/nile-select/nile-select.css.ts +7 -4
  212. package/src/nile-slide-toggle/nile-slide-toggle.css.ts +5 -1
  213. package/src/nile-textarea/nile-textarea.css.ts +10 -5
  214. package/src/nile-virtual-select/nile-virtual-select.css.ts +5 -3
  215. package/vscode-html-custom-data.json +108 -6
  216. package/web-test-runner.config.mjs +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-qr-code-utils.js","sourceRoot":"","sources":["../../../src/nile-qr-code/nile-qr-code-utils.ts"],"names":[],"mappings":"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AC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IAC3D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IAC1D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IAC3D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IAC/D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IAChE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IAC/D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IAChE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACjE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IAC/D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IAC9D,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IAClE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IACjE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACjE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IACjE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACjE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IAClE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACjE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACpE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IAClE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IAClE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACpE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IAClE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACpE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IAClE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACpE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACpE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;IACnE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;CACrE,CAAC;AAEF;;GAEG;AACH,MAAM,gBAAgB,GAAe;IACnC,EAAE;IACF,CAAC,CAAC,EAAE,EAAE,CAAC;IACP,CAAC,CAAC,EAAE,EAAE,CAAC;IACP,CAAC,CAAC,EAAE,EAAE,CAAC;IACP,CAAC,CAAC,EAAE,EAAE,CAAC;IACP,CAAC,CAAC,EAAE,EAAE,CAAC;IACP,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACnB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACnB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACxB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACzB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACzB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACzB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACzB,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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n \n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type ErrorCorrectionLevel = 'L' | 'M' | 'Q' | 'H';\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Error-correction level ordinals used as array indices. */\nconst EC_ORDINALS: Record<ErrorCorrectionLevel, number> = { L: 0, M: 1, Q: 2, H: 3 };\n\n/**\n * Maximum number of *data* codewords for each (version, ecl) combination.\n * Index: [version-1][ecl ordinal] (versions 1–40).\n * Source: ISO/IEC 18004 Table 7.\n */\nconst DATA_CODEWORDS: number[][] = [\n [19, 16, 13, 9],\n [34, 28, 22, 16],\n [55, 44, 34, 26],\n [80, 64, 48, 36],\n [108, 86, 62, 46],\n [136, 108, 76, 60],\n [156, 124, 88, 66],\n [194, 154, 110, 86],\n [232, 182, 132, 100],\n [274, 216, 154, 122],\n [324, 254, 180, 140],\n [370, 290, 206, 158],\n [428, 334, 244, 180],\n [461, 365, 261, 197],\n [523, 415, 295, 223],\n [589, 453, 325, 253],\n [647, 507, 367, 283],\n [721, 563, 397, 313],\n [795, 627, 445, 341],\n [861, 669, 485, 385],\n [932, 714, 512, 406],\n [1006, 782, 568, 442],\n [1094, 860, 614, 464],\n [1174, 914, 664, 514],\n [1276, 1000, 718, 538],\n [1370, 1062, 754, 596],\n [1468, 1128, 808, 628],\n [1531, 1193, 871, 661],\n [1631, 1267, 911, 701],\n [1735, 1373, 985, 745],\n [1843, 1455, 1033, 793],\n [1955, 1541, 1115, 845],\n [2071, 1631, 1171, 901],\n [2191, 1725, 1231, 961],\n [2306, 1812, 1286, 986],\n [2434, 1914, 1354, 1054],\n [2566, 1992, 1426, 1096],\n [2702, 2102, 1502, 1142],\n [2812, 2216, 1582, 1222],\n [2956, 2334, 1666, 1276],\n];\n\n/**\n * Total codewords per version (data + EC).\n */\nconst TOTAL_CODEWORDS: number[] = [\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706,\n];\n\n/**\n * Number of EC blocks (group-1 count, group-1 data-cw, group-2 count, group-2 data-cw)\n * for each (version, ecl).\n * Index: [version-1][ecl ordinal] → [g1Count, g1DataCw, g2Count, g2DataCw]\n */\nconst EC_BLOCKS: number[][][] = [\n /* v1 */ [[1,19,0,0],[1,16,0,0],[1,13,0,0],[1,9,0,0]],\n /* v2 */ [[1,34,0,0],[1,28,0,0],[1,22,0,0],[1,16,0,0]],\n /* v3 */ [[1,55,0,0],[1,44,0,0],[2,17,0,0],[2,13,0,0]],\n /* v4 */ [[1,80,0,0],[2,32,0,0],[2,24,0,0],[4,9,0,0]],\n /* v5 */ [[1,108,0,0],[2,43,0,0],[2,15,2,16],[2,11,2,12]],\n /* v6 */ [[2,68,0,0],[4,27,0,0],[4,19,0,0],[4,15,0,0]],\n /* v7 */ [[2,78,0,0],[4,31,0,0],[2,14,4,15],[4,13,1,14]],\n /* v8 */ [[2,97,0,0],[2,38,2,39],[4,18,2,19],[4,14,2,15]],\n /* v9 */ [[2,116,0,0],[3,36,2,37],[4,16,4,17],[4,12,4,13]],\n /* v10 */ [[2,68,2,69],[4,43,1,44],[6,19,2,20],[6,15,2,16]],\n /* v11 */ [[4,81,0,0],[1,50,4,51],[4,22,4,23],[3,12,8,13]],\n /* v12 */ [[2,92,2,93],[6,36,2,37],[4,20,6,21],[7,14,4,15]],\n /* v13 */ [[4,107,0,0],[8,37,1,38],[8,20,4,21],[12,11,4,12]],\n /* v14 */ [[3,115,1,116],[4,40,5,41],[11,16,5,17],[11,12,5,13]],\n /* v15 */ [[5,87,1,88],[5,41,5,42],[5,24,7,25],[11,12,7,13]],\n /* v16 */ [[5,98,1,99],[7,45,3,46],[15,19,2,20],[3,15,13,16]],\n /* v17 */ [[1,107,5,108],[10,46,1,47],[1,22,15,23],[2,14,17,15]],\n /* v18 */ [[5,120,1,121],[9,43,4,44],[17,22,1,23],[2,14,19,15]],\n /* v19 */ [[3,113,4,114],[3,44,11,45],[17,21,4,22],[9,13,16,14]],\n /* v20 */ [[3,107,5,108],[3,41,13,42],[15,24,5,25],[15,15,10,16]],\n /* v21 */ [[4,116,4,117],[17,42,0,0],[17,22,6,23],[19,16,6,17]],\n /* v22 */ [[2,111,7,112],[17,46,0,0],[7,24,16,25],[34,13,0,0]],\n /* v23 */ [[4,121,5,122],[4,47,14,48],[11,24,14,25],[16,15,14,16]],\n /* v24 */ [[6,117,4,118],[6,45,14,46],[11,24,16,25],[30,16,2,17]],\n /* v25 */ [[8,106,4,107],[8,47,13,48],[7,24,22,25],[22,15,13,16]],\n /* v26 */ [[10,114,2,115],[19,46,4,47],[28,22,6,23],[33,16,4,17]],\n /* v27 */ [[8,122,4,123],[22,45,3,46],[8,23,26,24],[12,15,28,16]],\n /* v28 */ [[3,117,10,118],[3,45,23,46],[4,24,31,25],[11,15,31,16]],\n /* v29 */ [[7,116,7,117],[21,45,7,46],[1,23,37,24],[19,15,26,16]],\n /* v30 */ [[5,115,10,116],[19,47,10,48],[15,24,25,25],[23,15,25,16]],\n /* v31 */ [[13,115,3,116],[2,46,29,47],[42,24,1,25],[23,15,28,16]],\n /* v32 */ [[17,115,0,0],[10,46,23,47],[10,24,35,25],[19,15,35,16]],\n /* v33 */ [[17,115,1,116],[14,46,21,47],[29,24,19,25],[11,15,46,16]],\n /* v34 */ [[13,115,6,116],[14,46,23,47],[44,24,7,25],[59,16,1,17]],\n /* v35 */ [[12,121,7,122],[12,47,26,48],[39,24,14,25],[22,15,41,16]],\n /* v36 */ [[6,121,14,122],[6,47,34,48],[46,24,10,25],[2,15,64,16]],\n /* v37 */ [[17,122,4,123],[29,46,14,47],[49,24,10,25],[24,15,46,16]],\n /* v38 */ [[4,122,18,123],[13,46,32,47],[48,24,14,25],[42,15,32,16]],\n /* v39 */ [[20,117,4,118],[40,47,7,48],[43,24,22,25],[10,15,67,16]],\n /* v40 */ [[19,118,6,119],[18,47,31,48],[34,24,34,25],[20,15,61,16]],\n];\n\n/**\n * Alignment-pattern center coordinates per version (empty for v1).\n */\nconst ALIGNMENT_COORDS: number[][] = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170],\n];\n\n/** Format information bits (15-bit BCH) for each (ecl, mask) pair. */\nconst FORMAT_INFO: number[][] = [\n /* L */ [0x77C4, 0x72F3, 0x7DAA, 0x789D, 0x662F, 0x6318, 0x6C41, 0x6976],\n /* M */ [0x5412, 0x5125, 0x5E7C, 0x5B4B, 0x45F9, 0x40CE, 0x4F97, 0x4AA0],\n /* Q */ [0x355F, 0x3068, 0x3F31, 0x3A06, 0x24B4, 0x2183, 0x2EDA, 0x2BED],\n /* H */ [0x1689, 0x13BE, 0x1CE7, 0x19D0, 0x0762, 0x0255, 0x0D0C, 0x083B],\n];\n\n/** Version information bits (18-bit BCH) for versions 7–40. */\nconst VERSION_INFO: number[] = [\n 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, 0x0E60D,\n 0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683, 0x168C9,\n 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75,\n 0x1F250, 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B, 0x2542E, 0x26A64,\n 0x27541, 0x28C69,\n];\n\n// ---------------------------------------------------------------------------\n// GF(256) arithmetic for Reed-Solomon\n// ---------------------------------------------------------------------------\n\nconst GF_EXP = new Uint8Array(512);\nconst GF_LOG = new Uint8Array(256);\n\n(function initGF() {\n let x = 1;\n for (let i = 0; i < 255; i++) {\n GF_EXP[i] = x;\n GF_LOG[x] = i;\n x <<= 1;\n if (x >= 256) x ^= 0x11D; // primitive polynomial\n }\n for (let i = 255; i < 512; i++) {\n GF_EXP[i] = GF_EXP[i - 255];\n }\n})();\n\nfunction gfMul(a: number, b: number): number {\n if (a === 0 || b === 0) return 0;\n return GF_EXP[GF_LOG[a] + GF_LOG[b]];\n}\n\n// ---------------------------------------------------------------------------\n// Reed-Solomon EC codeword generation\n// ---------------------------------------------------------------------------\n\nfunction rsGeneratorPoly(degree: number): Uint8Array {\n const gen = new Uint8Array(degree + 1);\n gen[0] = 1;\n for (let i = 0; i < degree; i++) {\n for (let j = degree; j >= 1; j--) {\n gen[j] = gen[j] ^ gfMul(gen[j - 1], GF_EXP[i]);\n }\n // gen[0] stays 1 (leading coeff)\n }\n return gen;\n}\n\nfunction rsEncode(data: Uint8Array, ecCount: number): Uint8Array {\n const gen = rsGeneratorPoly(ecCount);\n const result = new Uint8Array(ecCount);\n for (let i = 0; i < data.length; i++) {\n const coeff = data[i] ^ result[0];\n // shift result left\n for (let j = 0; j < ecCount - 1; j++) {\n result[j] = result[j + 1] ^ gfMul(gen[j + 1], coeff);\n }\n result[ecCount - 1] = gfMul(gen[ecCount], coeff);\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Data encoding (Byte mode only)\n// ---------------------------------------------------------------------------\n\nfunction encodeData(text: string, version: number, ecl: ErrorCorrectionLevel): Uint8Array {\n const eclOrd = EC_ORDINALS[ecl];\n const totalDataCw = DATA_CODEWORDS[version - 1][eclOrd];\n const bytes = new TextEncoder().encode(text);\n\n // Build bit stream\n const bits: number[] = [];\n const pushBits = (value: number, length: number) => {\n for (let i = length - 1; i >= 0; i--) {\n bits.push((value >>> i) & 1);\n }\n };\n\n // Mode indicator: byte = 0100\n pushBits(0b0100, 4);\n\n // Character count indicator\n const ccBits = version <= 9 ? 8 : 16;\n pushBits(bytes.length, ccBits);\n\n // Data\n for (const b of bytes) {\n pushBits(b, 8);\n }\n\n // Terminator (up to 4 bits of zeros)\n const totalDataBits = totalDataCw * 8;\n const terminatorLen = Math.min(4, totalDataBits - bits.length);\n pushBits(0, terminatorLen);\n\n // Pad to byte boundary\n while (bits.length % 8 !== 0) {\n bits.push(0);\n }\n\n // Pad codewords\n const padBytes = [0xEC, 0x11];\n let padIdx = 0;\n while (bits.length < totalDataBits) {\n pushBits(padBytes[padIdx], 8);\n padIdx ^= 1;\n }\n\n // Convert to byte array\n const codewords = new Uint8Array(totalDataCw);\n for (let i = 0; i < totalDataCw; i++) {\n let byte = 0;\n for (let b = 0; b < 8; b++) {\n byte = (byte << 1) | bits[i * 8 + b];\n }\n codewords[i] = byte;\n }\n\n return codewords;\n}\n\n// ---------------------------------------------------------------------------\n// Interleave data + EC blocks\n// ---------------------------------------------------------------------------\n\nfunction buildFinalMessage(data: Uint8Array, version: number, ecl: ErrorCorrectionLevel): Uint8Array {\n const eclOrd = EC_ORDINALS[ecl];\n const [g1Count, g1DataCw, g2Count, g2DataCw] = EC_BLOCKS[version - 1][eclOrd];\n const totalCw = TOTAL_CODEWORDS[version - 1];\n const totalBlocks = g1Count + g2Count;\n const ecCwPerBlock = Math.floor((totalCw - DATA_CODEWORDS[version - 1][eclOrd]) / totalBlocks);\n\n // Split data into blocks\n const dataBlocks: Uint8Array[] = [];\n const ecBlocks: Uint8Array[] = [];\n let offset = 0;\n\n for (let i = 0; i < g1Count; i++) {\n const block = data.slice(offset, offset + g1DataCw);\n dataBlocks.push(block);\n ecBlocks.push(rsEncode(block, ecCwPerBlock));\n offset += g1DataCw;\n }\n for (let i = 0; i < g2Count; i++) {\n const block = data.slice(offset, offset + g2DataCw);\n dataBlocks.push(block);\n ecBlocks.push(rsEncode(block, ecCwPerBlock));\n offset += g2DataCw;\n }\n\n // Interleave data codewords\n const result: number[] = [];\n const maxDataCw = Math.max(g1DataCw, g2DataCw);\n for (let i = 0; i < maxDataCw; i++) {\n for (let j = 0; j < totalBlocks; j++) {\n if (i < dataBlocks[j].length) {\n result.push(dataBlocks[j][i]);\n }\n }\n }\n\n // Interleave EC codewords\n for (let i = 0; i < ecCwPerBlock; i++) {\n for (let j = 0; j < totalBlocks; j++) {\n result.push(ecBlocks[j][i]);\n }\n }\n\n return new Uint8Array(result);\n}\n\n// ---------------------------------------------------------------------------\n// QR matrix construction\n// ---------------------------------------------------------------------------\n\n/** Module size = 4 * version + 17 */\nfunction getModuleCount(version: number): number {\n return version * 4 + 17;\n}\n\n/** Create a blank matrix (-1 = unset). */\nfunction createMatrix(size: number): number[][] {\n return Array.from({ length: size }, () => Array(size).fill(-1));\n}\n\nfunction setModule(matrix: number[][], row: number, col: number, value: number): void {\n if (row >= 0 && row < matrix.length && col >= 0 && col < matrix.length) {\n matrix[row][col] = value;\n }\n}\n\n/** Place a finder pattern with its separator. */\nfunction placeFinderPattern(matrix: number[][], row: number, col: number): void {\n for (let r = -1; r <= 7; r++) {\n for (let c = -1; c <= 7; c++) {\n const isPattern = r >= 0 && r <= 6 && c >= 0 && c <= 6;\n let value = 0;\n if (isPattern) {\n if (r === 0 || r === 6 || c === 0 || c === 6 ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n value = 1;\n }\n }\n setModule(matrix, row + r, col + c, value);\n }\n }\n}\n\n/** Place alignment patterns. */\nfunction placeAlignmentPatterns(matrix: number[][], version: number): void {\n if (version < 2) return;\n const coords = ALIGNMENT_COORDS[version - 1];\n for (const r of coords) {\n for (const c of coords) {\n // Skip if overlapping finder patterns\n if (matrix[r][c] !== -1) continue;\n for (let dr = -2; dr <= 2; dr++) {\n for (let dc = -2; dc <= 2; dc++) {\n const value = (Math.abs(dr) === 2 || Math.abs(dc) === 2 ||\n (dr === 0 && dc === 0)) ? 1 : 0;\n setModule(matrix, r + dr, c + dc, value);\n }\n }\n }\n }\n}\n\n/** Place timing patterns. */\nfunction placeTimingPatterns(matrix: number[][]): void {\n const size = matrix.length;\n for (let i = 8; i < size - 8; i++) {\n if (matrix[6][i] === -1) matrix[6][i] = (i + 1) % 2;\n if (matrix[i][6] === -1) matrix[i][6] = (i + 1) % 2;\n }\n}\n\n/** Reserve format info areas (filled later). */\nfunction reserveFormatAreas(matrix: number[][]): void {\n const size = matrix.length;\n // Around top-left finder\n for (let i = 0; i <= 8; i++) {\n if (matrix[8][i] === -1) matrix[8][i] = 0;\n if (matrix[i][8] === -1) matrix[i][8] = 0;\n }\n // Around top-right finder\n for (let i = 0; i <= 7; i++) {\n if (matrix[8][size - 1 - i] === -1) matrix[8][size - 1 - i] = 0;\n }\n // Around bottom-left finder\n for (let i = 0; i <= 7; i++) {\n if (matrix[size - 1 - i][8] === -1) matrix[size - 1 - i][8] = 0;\n }\n // Dark module\n matrix[size - 8][8] = 1;\n}\n\n/** Reserve version info areas (versions >= 7). */\nfunction reserveVersionAreas(matrix: number[][], version: number): void {\n if (version < 7) return;\n const size = matrix.length;\n for (let i = 0; i < 6; i++) {\n for (let j = 0; j < 3; j++) {\n if (matrix[i][size - 11 + j] === -1) matrix[i][size - 11 + j] = 0;\n if (matrix[size - 11 + j][i] === -1) matrix[size - 11 + j][i] = 0;\n }\n }\n}\n\n/** Place data bits in the matrix using the zigzag pattern. */\nfunction placeDataBits(matrix: number[][], data: Uint8Array): void {\n const size = matrix.length;\n let bitIndex = 0;\n const totalBits = data.length * 8;\n let upward = true;\n\n for (let right = size - 1; right >= 1; right -= 2) {\n // Skip timing pattern column\n if (right === 6) right = 5;\n\n for (let vert = 0; vert < size; vert++) {\n const row = upward ? size - 1 - vert : vert;\n for (let colOffset = 0; colOffset <= 1; colOffset++) {\n const col = right - colOffset;\n if (matrix[row][col] !== -1) continue;\n if (bitIndex < totalBits) {\n const byteIdx = bitIndex >>> 3;\n const bitIdx = 7 - (bitIndex & 7);\n matrix[row][col] = (data[byteIdx] >>> bitIdx) & 1;\n bitIndex++;\n } else {\n matrix[row][col] = 0;\n }\n }\n }\n upward = !upward;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Masking\n// ---------------------------------------------------------------------------\n\ntype MaskFn = (row: number, col: number) => boolean;\n\nconst MASK_FUNCTIONS: MaskFn[] = [\n (r, c) => (r + c) % 2 === 0,\n (r, _c) => r % 2 === 0,\n (_r, c) => c % 3 === 0,\n (r, c) => (r + c) % 3 === 0,\n (r, c) => (Math.floor(r / 2) + Math.floor(c / 3)) % 2 === 0,\n (r, c) => ((r * c) % 2 + (r * c) % 3) === 0,\n (r, c) => ((r * c) % 2 + (r * c) % 3) % 2 === 0,\n (r, c) => ((r + c) % 2 + (r * c) % 3) % 2 === 0,\n];\n\n/** Check if a module is a function pattern (not data). */\nfunction isFunctionModule(matrix: number[][], reserved: number[][], row: number, col: number): boolean {\n return reserved[row][col] !== -1;\n}\n\nfunction applyMask(matrix: number[][], reserved: number[][], maskIdx: number): number[][] {\n const size = matrix.length;\n const result = matrix.map(row => [...row]);\n const fn = MASK_FUNCTIONS[maskIdx];\n for (let r = 0; r < size; r++) {\n for (let c = 0; c < size; c++) {\n if (!isFunctionModule(result, reserved, r, c) && fn(r, c)) {\n result[r][c] ^= 1;\n }\n }\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Format & version info writing\n// ---------------------------------------------------------------------------\n\nfunction writeFormatInfo(matrix: number[][], ecl: ErrorCorrectionLevel, maskIdx: number): void {\n const eclOrd = EC_ORDINALS[ecl];\n const bits = FORMAT_INFO[eclOrd][maskIdx];\n const size = matrix.length;\n\n for (let i = 0; i <= 5; i++) {\n matrix[8][i] = (bits >>> (14 - i)) & 1;\n }\n matrix[8][7] = (bits >>> 8) & 1;\n matrix[8][8] = (bits >>> 7) & 1;\n matrix[7][8] = (bits >>> 6) & 1;\n for (let i = 0; i <= 5; i++) {\n matrix[5 - i][8] = (bits >>> (i)) & 1;\n }\n\n for (let i = 0; i <= 7; i++) {\n matrix[8][size - 1 - i] = (bits >>> i) & 1;\n }\n for (let i = 0; i <= 6; i++) {\n matrix[size - 1 - i][8] = (bits >>> (14 - i)) & 1;\n }\n\n matrix[size - 8][8] = 1; // dark module\n}\n\nfunction writeVersionInfo(matrix: number[][], version: number): void {\n if (version < 7) return;\n const bits = VERSION_INFO[version - 7];\n const size = matrix.length;\n for (let i = 0; i < 6; i++) {\n for (let j = 0; j < 3; j++) {\n const bitIdx = i * 3 + j;\n const bit = (bits >>> bitIdx) & 1;\n matrix[i][size - 11 + j] = bit;\n matrix[size - 11 + j][i] = bit;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Penalty scoring\n// ---------------------------------------------------------------------------\n\nfunction penaltyScore(matrix: number[][]): number {\n const size = matrix.length;\n let score = 0;\n\n // Rule 1: 5+ consecutive same-color modules in row/col\n for (let r = 0; r < size; r++) {\n let count = 1;\n for (let c = 1; c < size; c++) {\n if (matrix[r][c] === matrix[r][c - 1]) {\n count++;\n } else {\n if (count >= 5) score += count - 2;\n count = 1;\n }\n }\n if (count >= 5) score += count - 2;\n }\n for (let c = 0; c < size; c++) {\n let count = 1;\n for (let r = 1; r < size; r++) {\n if (matrix[r][c] === matrix[r - 1][c]) {\n count++;\n } else {\n if (count >= 5) score += count - 2;\n count = 1;\n }\n }\n if (count >= 5) score += count - 2;\n }\n\n // Rule 2: 2x2 blocks of same color\n for (let r = 0; r < size - 1; r++) {\n for (let c = 0; c < size - 1; c++) {\n const val = matrix[r][c];\n if (val === matrix[r][c + 1] && val === matrix[r + 1][c] && val === matrix[r + 1][c + 1]) {\n score += 3;\n }\n }\n }\n\n // Rule 3: Finder-like patterns\n const pattern1 = [1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0];\n const pattern2 = [0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1];\n for (let r = 0; r < size; r++) {\n for (let c = 0; c <= size - 11; c++) {\n let match1 = true;\n let match2 = true;\n for (let i = 0; i < 11; i++) {\n if (matrix[r][c + i] !== pattern1[i]) match1 = false;\n if (matrix[r][c + i] !== pattern2[i]) match2 = false;\n }\n if (match1 || match2) score += 40;\n }\n }\n for (let c = 0; c < size; c++) {\n for (let r = 0; r <= size - 11; r++) {\n let match1 = true;\n let match2 = true;\n for (let i = 0; i < 11; i++) {\n if (matrix[r + i][c] !== pattern1[i]) match1 = false;\n if (matrix[r + i][c] !== pattern2[i]) match2 = false;\n }\n if (match1 || match2) score += 40;\n }\n }\n\n // Rule 4: Proportion of dark modules\n let dark = 0;\n for (let r = 0; r < size; r++) {\n for (let c = 0; c < size; c++) {\n if (matrix[r][c] === 1) dark++;\n }\n }\n const total = size * size;\n const percent = (dark / total) * 100;\n const prev5 = Math.floor(percent / 5) * 5;\n const next5 = prev5 + 5;\n score += Math.min(Math.abs(prev5 - 50) / 5, Math.abs(next5 - 50) / 5) * 10;\n\n return score;\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Find the minimum version that can hold the given data.\n */\nfunction findMinVersion(text: string, ecl: ErrorCorrectionLevel): number {\n const bytes = new TextEncoder().encode(text);\n const dataLen = bytes.length;\n const eclOrd = EC_ORDINALS[ecl];\n\n for (let v = 1; v <= 40; v++) {\n const ccBits = v <= 9 ? 8 : 16;\n const totalBits = 4 + ccBits + dataLen * 8;\n const capacity = DATA_CODEWORDS[v - 1][eclOrd] * 8;\n if (totalBits <= capacity) return v;\n }\n throw new Error('Data too long for any QR version');\n}\n\n/**\n * Generate a QR code matrix from a string.\n *\n * @param text The text to encode.\n * @param ecl Error-correction level (L, M, Q, H).\n * @returns A 2-D boolean-like matrix where `1` = dark module.\n */\nexport function generateQR(text: string, ecl: ErrorCorrectionLevel = 'H'): number[][] {\n if (!text) {\n // Return a minimal empty 21x21 (version 1) blank grid\n return Array.from({ length: 21 }, () => Array(21).fill(0));\n }\n\n const version = findMinVersion(text, ecl);\n const moduleCount = getModuleCount(version);\n\n // 1. Build function-pattern matrix (reserved areas)\n const reserved = createMatrix(moduleCount);\n placeFinderPattern(reserved, 0, 0);\n placeFinderPattern(reserved, 0, moduleCount - 7);\n placeFinderPattern(reserved, moduleCount - 7, 0);\n placeAlignmentPatterns(reserved, version);\n placeTimingPatterns(reserved);\n reserveFormatAreas(reserved);\n reserveVersionAreas(reserved, version);\n\n // 2. Build actual matrix with function patterns\n const matrix = createMatrix(moduleCount);\n placeFinderPattern(matrix, 0, 0);\n placeFinderPattern(matrix, 0, moduleCount - 7);\n placeFinderPattern(matrix, moduleCount - 7, 0);\n placeAlignmentPatterns(matrix, version);\n placeTimingPatterns(matrix);\n reserveFormatAreas(matrix);\n reserveVersionAreas(matrix, version);\n\n // 3. Encode & place data\n const dataCw = encodeData(text, version, ecl);\n const finalMsg = buildFinalMessage(dataCw, version, ecl);\n placeDataBits(matrix, finalMsg);\n\n // 4. Try all 8 masks, pick the best\n let bestMask = 0;\n let bestScore = Infinity;\n let bestMatrix = matrix;\n\n for (let mask = 0; mask < 8; mask++) {\n const candidate = applyMask(matrix, reserved, mask);\n writeFormatInfo(candidate, ecl, mask);\n writeVersionInfo(candidate, version);\n const score = penaltyScore(candidate);\n if (score < bestScore) {\n bestScore = score;\n bestMask = mask;\n bestMatrix = candidate;\n }\n }\n\n // Re-apply best mask (already stored)\n writeFormatInfo(bestMatrix, ecl, bestMask);\n writeVersionInfo(bestMatrix, version);\n\n return bestMatrix;\n}\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * QR Code CSS
9
+ */
10
+ export declare const styles: import("lit").CSSResult;
11
+ declare const _default: import("lit").CSSResult[];
12
+ export default _default;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { css } from 'lit';
8
+ /**
9
+ * QR Code CSS
10
+ */
11
+ export const styles = css `
12
+ :host {
13
+ display: inline-block;
14
+ -webkit-font-smoothing: var(--nile-webkit-font-smoothing, var(--ng-webkit-font-smoothing));
15
+ -moz-osx-font-smoothing: var(--nile-moz-osx-font-smoothing, var(--ng-moz-osx-font-smoothing));
16
+ text-rendering: var(--nile-text-rendering, var(--ng-text-rendering));
17
+ }
18
+
19
+ canvas {
20
+ display: block;
21
+ }
22
+ `;
23
+ export default [styles];
24
+ //# sourceMappingURL=nile-qr-code.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-qr-code.css.js","sourceRoot":"","sources":["../../../src/nile-qr-code/nile-qr-code.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;CAWxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * QR Code CSS\n */\nexport const styles = css`\n :host {\n display: inline-block;\n -webkit-font-smoothing: var(--nile-webkit-font-smoothing, var(--ng-webkit-font-smoothing));\n -moz-osx-font-smoothing: var(--nile-moz-osx-font-smoothing, var(--ng-moz-osx-font-smoothing));\n text-rendering: var(--nile-text-rendering, var(--ng-text-rendering));\n }\n\n canvas {\n display: block;\n }\n`;\n\nexport default [styles];\n"]}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { CSSResultArray, TemplateResult, PropertyValues } from 'lit';
8
+ import { ErrorCorrectionLevel } from './nile-qr-code-utils.js';
9
+ import NileElement from '../internal/nile-element.js';
10
+ /**
11
+ * Nile QR Code component.
12
+ *
13
+
14
+ * @tag nile-qr-code
15
+ *
16
+ * @csspart base - The canvas element used to draw the QR code.
17
+ *
18
+ * @fires nile-qr-image-error - Emitted when the center image fails to load.
19
+ *
20
+ * @example
21
+
22
+ *
23
+
24
+ */
25
+ export declare class NileQrCode extends NileElement {
26
+ /**
27
+ * The styles for QR Code.
28
+ * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
29
+ */
30
+ static get styles(): CSSResultArray;
31
+ /**
32
+ * The QR code's value — the text or URL to encode.
33
+ */
34
+ value: string;
35
+ /**
36
+ * The size of the QR code, in pixels.
37
+ */
38
+ size: number;
39
+ /**
40
+ * The fill color. This can be any valid CSS color, but not a CSS custom property.
41
+ */
42
+ fill: string;
43
+ /**
44
+ * The background color. This can be any valid CSS color or `'transparent'`.
45
+ * It cannot be a CSS custom property.
46
+ */
47
+ background: string;
48
+ /**
49
+ * The edge radius of each module. Must be between 0 and 0.5.
50
+ * Use this to create a rounded effect.
51
+ */
52
+ radius: number;
53
+ /**
54
+ * The level of error correction to use.
55
+ * - `'L'` — Low (~7%)
56
+ * - `'M'` — Medium (~15%)
57
+ * - `'Q'` — Quartile (~25%)
58
+ * - `'H'` — High (~30%)
59
+ *
60
+ * When using an image overlay, `'H'` is recommended so the QR remains scannable.
61
+ */
62
+ errorCorrection: ErrorCorrectionLevel;
63
+ /**
64
+ * The label for assistive devices to announce.
65
+ * If unspecified, the `value` will be used instead.
66
+ */
67
+ label: string;
68
+ /**
69
+ * URL of an image to overlay in the center of the QR code (e.g. a logo).
70
+ * The image is drawn on top of the QR modules, so use `error-correction="H"`
71
+ * to ensure the code remains scannable.
72
+ */
73
+ image: string;
74
+ /**
75
+ * Size of the center image as a fraction of the overall QR code size
76
+ * (0.1 – 0.4). Defaults to 0.25 (25% of the QR code).
77
+ */
78
+ imageSize: number;
79
+ /**
80
+ * Padding around the center image in pixels. Creates a clear area
81
+ * between the image and the surrounding QR modules.
82
+ */
83
+ imagePadding: number;
84
+ /**
85
+ * Optional border radius for the center image in pixels.
86
+ * Set to a high value for a circular mask.
87
+ */
88
+ imageRadius: number;
89
+ /**
90
+ * Apply a linear gradient to the QR modules instead of a flat color.
91
+ * Format: `"direction, color1, color2[, ...]"` where direction is an
92
+ * angle in degrees (e.g. `"135, #6366f1, #ec4899"`).
93
+ * When set, this overrides the `fill` property for module rendering.
94
+ */
95
+ fillGradient: string;
96
+ private _loadedImage;
97
+ private _imageLoadPromise;
98
+ private canvas;
99
+ protected updated(changedProperties: PropertyValues): void;
100
+ render(): TemplateResult;
101
+ /**
102
+ * Downloads the QR code as a PNG image.
103
+ * @param filename - The name of the downloaded file (defaults to `'qr-code.png'`).
104
+ */
105
+ download(filename?: string): void;
106
+ /**
107
+ * Returns the QR code canvas content as a data URL.
108
+ * @param type - MIME type (defaults to `'image/png'`).
109
+ */
110
+ toDataURL(type?: string): string;
111
+ private loadImage;
112
+ private drawQrCode;
113
+ /**
114
+ * Returns the fill style for QR modules — either a gradient or the flat fill color.
115
+ */
116
+ private resolveModuleFill;
117
+ private drawCenterImage;
118
+ private drawRoundedModule;
119
+ private drawRoundedRect;
120
+ private clipRoundedRect;
121
+ }
122
+ export default NileQrCode;
123
+ declare global {
124
+ interface HTMLElementTagNameMap {
125
+ 'nile-qr-code': NileQrCode;
126
+ }
127
+ }