snice 7.8.0 → 7.9.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 (302) hide show
  1. package/README.md +1 -1
  2. package/adapters/react/SniceProvider.js +1 -1
  3. package/adapters/react/SniceRouter.js +1 -1
  4. package/adapters/react/matchRoute.js +1 -1
  5. package/adapters/react/table.d.ts +1 -0
  6. package/adapters/react/table.d.ts.map +1 -1
  7. package/adapters/react/table.js +1 -1
  8. package/adapters/react/table.js.map +1 -1
  9. package/adapters/react/table.tsx +2 -1
  10. package/adapters/react/useRequestHandler.js +1 -1
  11. package/bin/analyzer-contracts.js +17 -1
  12. package/custom-elements.json +57 -3
  13. package/dist/cdn/accordion/snice-accordion.js +1 -1
  14. package/dist/cdn/action-bar/snice-action-bar.js +1 -1
  15. package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
  16. package/dist/cdn/alert/snice-alert.js +1 -1
  17. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  18. package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
  19. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  20. package/dist/cdn/availability/snice-availability.js +1 -1
  21. package/dist/cdn/avatar/snice-avatar.js +1 -1
  22. package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
  23. package/dist/cdn/badge/snice-badge.js +1 -1
  24. package/dist/cdn/banner/snice-banner.js +1 -1
  25. package/dist/cdn/binpack/snice-binpack.js +1 -1
  26. package/dist/cdn/book/snice-book.js +1 -1
  27. package/dist/cdn/booking/snice-booking.js +1 -1
  28. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  29. package/dist/cdn/button/snice-button.js +1 -1
  30. package/dist/cdn/calendar/README.md +2 -2
  31. package/dist/cdn/calendar/snice-calendar.js +537 -44
  32. package/dist/cdn/calendar/snice-calendar.js.map +1 -1
  33. package/dist/cdn/calendar/snice-calendar.min.js +2 -2
  34. package/dist/cdn/calendar/snice-calendar.min.js.map +1 -1
  35. package/dist/cdn/camera/snice-camera.js +1 -1
  36. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  37. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  38. package/dist/cdn/card/snice-card.js +1 -1
  39. package/dist/cdn/carousel/snice-carousel.js +1 -1
  40. package/dist/cdn/cart/snice-cart.js +1 -1
  41. package/dist/cdn/chart/snice-chart.js +1 -1
  42. package/dist/cdn/chat/snice-chat.js +1 -1
  43. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  44. package/dist/cdn/chip/snice-chip.js +1 -1
  45. package/dist/cdn/code-block/README.md +2 -2
  46. package/dist/cdn/code-block/snice-code-block.js +177 -167
  47. package/dist/cdn/code-block/snice-code-block.js.map +1 -1
  48. package/dist/cdn/code-block/snice-code-block.min.js +2 -2
  49. package/dist/cdn/code-block/snice-code-block.min.js.map +1 -1
  50. package/dist/cdn/color-display/snice-color-display.js +1 -1
  51. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  52. package/dist/cdn/command-palette/README.md +1 -1
  53. package/dist/cdn/command-palette/snice-command-palette.js +2 -2
  54. package/dist/cdn/command-palette/snice-command-palette.js.map +1 -1
  55. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  56. package/dist/cdn/command-palette/snice-command-palette.min.js.map +1 -1
  57. package/dist/cdn/comments/snice-comments.js +1 -1
  58. package/dist/cdn/countdown/snice-countdown.js +1 -1
  59. package/dist/cdn/cropper/snice-cropper.js +1 -1
  60. package/dist/cdn/data-card/snice-data-card.js +1 -1
  61. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  62. package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
  63. package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
  64. package/dist/cdn/diff/snice-diff.js +1 -1
  65. package/dist/cdn/divider/snice-divider.js +1 -1
  66. package/dist/cdn/doc/snice-doc.js +1 -1
  67. package/dist/cdn/draw/snice-draw.js +1 -1
  68. package/dist/cdn/drawer/snice-drawer.js +1 -1
  69. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  70. package/dist/cdn/estimate/snice-estimate.js +1 -1
  71. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  72. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  73. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  74. package/dist/cdn/flow/snice-flow.js +1 -1
  75. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  76. package/dist/cdn/funnel/snice-funnel.js +1 -1
  77. package/dist/cdn/gantt/snice-gantt.js +1 -1
  78. package/dist/cdn/gauge/snice-gauge.js +1 -1
  79. package/dist/cdn/grid/snice-grid.js +1 -1
  80. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  81. package/dist/cdn/image/snice-image.js +1 -1
  82. package/dist/cdn/input/snice-input.js +1 -1
  83. package/dist/cdn/invoice/snice-invoice.js +1 -1
  84. package/dist/cdn/kanban/snice-kanban.js +1 -1
  85. package/dist/cdn/key-value/snice-key-value.js +1 -1
  86. package/dist/cdn/kpi/snice-kpi.js +1 -1
  87. package/dist/cdn/layout/snice-layout.js +1 -1
  88. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  89. package/dist/cdn/link/snice-link.js +1 -1
  90. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  91. package/dist/cdn/list/snice-list.js +1 -1
  92. package/dist/cdn/location/snice-location.js +1 -1
  93. package/dist/cdn/login/snice-login.js +1 -1
  94. package/dist/cdn/map/snice-map.js +1 -1
  95. package/dist/cdn/markdown/snice-markdown.js +1 -1
  96. package/dist/cdn/masonry/snice-masonry.js +1 -1
  97. package/dist/cdn/menu/snice-menu.js +1 -1
  98. package/dist/cdn/message-strip/snice-message-strip.js +1 -1
  99. package/dist/cdn/modal/snice-modal.js +1 -1
  100. package/dist/cdn/music-player/snice-music-player.js +1 -1
  101. package/dist/cdn/nav/snice-nav.js +1 -1
  102. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  103. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  104. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  105. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  106. package/dist/cdn/pagination/snice-pagination.js +1 -1
  107. package/dist/cdn/paint/snice-paint.js +1 -1
  108. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  109. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  110. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  111. package/dist/cdn/popover/snice-popover.js +1 -1
  112. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  113. package/dist/cdn/product-card/snice-product-card.js +1 -1
  114. package/dist/cdn/progress/snice-progress.js +2 -2
  115. package/dist/cdn/progress/snice-progress.js.map +1 -1
  116. package/dist/cdn/progress/snice-progress.min.js +1 -1
  117. package/dist/cdn/progress/snice-progress.min.js.map +1 -1
  118. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  119. package/dist/cdn/qr-code/README.md +2 -2
  120. package/dist/cdn/qr-code/snice-qr-code.js +19 -3
  121. package/dist/cdn/qr-code/snice-qr-code.js.map +1 -1
  122. package/dist/cdn/qr-code/snice-qr-code.min.js +2 -2
  123. package/dist/cdn/qr-code/snice-qr-code.min.js.map +1 -1
  124. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  125. package/dist/cdn/radio/snice-radio.js +1 -1
  126. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  127. package/dist/cdn/rating/snice-rating.js +1 -1
  128. package/dist/cdn/receipt/snice-receipt.js +5 -2
  129. package/dist/cdn/receipt/snice-receipt.js.map +1 -1
  130. package/dist/cdn/receipt/snice-receipt.min.js +1 -1
  131. package/dist/cdn/receipt/snice-receipt.min.js.map +1 -1
  132. package/dist/cdn/recipe/snice-recipe.js +1 -1
  133. package/dist/cdn/runtime/snice-runtime.esm.js +4 -4
  134. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  135. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  136. package/dist/cdn/runtime/snice-runtime.js +4 -4
  137. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  138. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  139. package/dist/cdn/sankey/snice-sankey.js +1 -1
  140. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  141. package/dist/cdn/select/README.md +2 -2
  142. package/dist/cdn/select/snice-select.js +6 -9
  143. package/dist/cdn/select/snice-select.js.map +1 -1
  144. package/dist/cdn/select/snice-select.min.js +2 -2
  145. package/dist/cdn/select/snice-select.min.js.map +1 -1
  146. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  147. package/dist/cdn/slider/snice-slider.js +1 -1
  148. package/dist/cdn/sortable/snice-sortable.js +1 -1
  149. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  150. package/dist/cdn/spinner/snice-spinner.js +1 -1
  151. package/dist/cdn/split-button/snice-split-button.js +1 -1
  152. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  153. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  154. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  155. package/dist/cdn/step-input/snice-step-input.js +1 -1
  156. package/dist/cdn/stepper/snice-stepper.js +1 -1
  157. package/dist/cdn/switch/snice-switch.js +1 -1
  158. package/dist/cdn/table/README.md +2 -2
  159. package/dist/cdn/table/snice-table.esm.js +1940 -407
  160. package/dist/cdn/table/snice-table.esm.js.map +1 -1
  161. package/dist/cdn/table/snice-table.esm.min.js +242 -53
  162. package/dist/cdn/table/snice-table.esm.min.js.map +1 -1
  163. package/dist/cdn/table/snice-table.js +1940 -407
  164. package/dist/cdn/table/snice-table.js.map +1 -1
  165. package/dist/cdn/table/snice-table.min.js +234 -45
  166. package/dist/cdn/table/snice-table.min.js.map +1 -1
  167. package/dist/cdn/tabs/snice-tabs.js +1 -1
  168. package/dist/cdn/tag/snice-tag.js +1 -1
  169. package/dist/cdn/tag-input/snice-tag-input.js +1 -1
  170. package/dist/cdn/terminal/snice-terminal.js +1 -1
  171. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  172. package/dist/cdn/textarea/snice-textarea.js +1 -1
  173. package/dist/cdn/time-picker/snice-time-picker.js +1 -1
  174. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  175. package/dist/cdn/timeline/snice-timeline.js +1 -1
  176. package/dist/cdn/timer/snice-timer.js +1 -1
  177. package/dist/cdn/toast/snice-toast.js +1 -1
  178. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  179. package/dist/cdn/tree/snice-tree.js +1 -1
  180. package/dist/cdn/treemap/snice-treemap.js +1 -1
  181. package/dist/cdn/user-card/snice-user-card.js +1 -1
  182. package/dist/cdn/video-player/snice-video-player.js +1 -1
  183. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  184. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  185. package/dist/cdn/weather/snice-weather.js +1 -1
  186. package/dist/cdn/work-order/snice-work-order.js +1 -1
  187. package/dist/components/calendar/snice-calendar.d.ts +187 -5
  188. package/dist/components/calendar/snice-calendar.js +537 -44
  189. package/dist/components/calendar/snice-calendar.js.map +1 -1
  190. package/dist/components/calendar/snice-calendar.types.d.ts +2 -1
  191. package/dist/components/code-block/formatter.d.ts +6 -0
  192. package/dist/components/code-block/formatter.js +174 -164
  193. package/dist/components/code-block/formatter.js.map +1 -1
  194. package/dist/components/code-block/grammars/snice.json +1 -1
  195. package/dist/components/code-block/grammars/typescript.json +1 -1
  196. package/dist/components/command-palette/snice-command-palette.js +1 -1
  197. package/dist/components/command-palette/snice-command-palette.js.map +1 -1
  198. package/dist/components/progress/snice-progress.js +1 -1
  199. package/dist/components/progress/snice-progress.js.map +1 -1
  200. package/dist/components/qr-code/qrcode.d.ts +1 -1
  201. package/dist/components/qr-code/qrcode.js +18 -2
  202. package/dist/components/qr-code/qrcode.js.map +1 -1
  203. package/dist/components/receipt/snice-receipt.js +4 -1
  204. package/dist/components/receipt/snice-receipt.js.map +1 -1
  205. package/dist/components/select/snice-select.d.ts +1 -1
  206. package/dist/components/select/snice-select.js +5 -8
  207. package/dist/components/select/snice-select.js.map +1 -1
  208. package/dist/components/table/snice-cell-actions.js +1 -1
  209. package/dist/components/table/snice-cell-actions.js.map +1 -1
  210. package/dist/components/table/snice-cell-color.js +1 -1
  211. package/dist/components/table/snice-cell-color.js.map +1 -1
  212. package/dist/components/table/snice-cell-date.js +20 -8
  213. package/dist/components/table/snice-cell-date.js.map +1 -1
  214. package/dist/components/table/snice-cell-email.js +1 -1
  215. package/dist/components/table/snice-cell-email.js.map +1 -1
  216. package/dist/components/table/snice-cell-image.js +1 -1
  217. package/dist/components/table/snice-cell-image.js.map +1 -1
  218. package/dist/components/table/snice-cell-json.js +1 -1
  219. package/dist/components/table/snice-cell-json.js.map +1 -1
  220. package/dist/components/table/snice-cell-link.js +1 -1
  221. package/dist/components/table/snice-cell-link.js.map +1 -1
  222. package/dist/components/table/snice-cell-location.js +1 -1
  223. package/dist/components/table/snice-cell-location.js.map +1 -1
  224. package/dist/components/table/snice-cell-phone.js +1 -1
  225. package/dist/components/table/snice-cell-phone.js.map +1 -1
  226. package/dist/components/table/snice-cell-status.js +1 -1
  227. package/dist/components/table/snice-cell-status.js.map +1 -1
  228. package/dist/components/table/snice-cell.d.ts +10 -0
  229. package/dist/components/table/snice-cell.js +59 -13
  230. package/dist/components/table/snice-cell.js.map +1 -1
  231. package/dist/components/table/snice-row.d.ts +0 -1
  232. package/dist/components/table/snice-row.js +4 -10
  233. package/dist/components/table/snice-row.js.map +1 -1
  234. package/dist/components/table/snice-table.d.ts +170 -2
  235. package/dist/components/table/snice-table.js +868 -189
  236. package/dist/components/table/snice-table.js.map +1 -1
  237. package/dist/components/table/snice-table.types.d.ts +17 -0
  238. package/dist/components/table/table-cell-presentation.d.ts +17 -4
  239. package/dist/components/table/table-cell-presentation.js +37 -11
  240. package/dist/components/table/table-cell-presentation.js.map +1 -1
  241. package/dist/components/table/table-column-manager.d.ts +153 -2
  242. package/dist/components/table/table-column-manager.js +364 -43
  243. package/dist/components/table/table-column-manager.js.map +1 -1
  244. package/dist/components/table/table-date.d.ts +29 -0
  245. package/dist/components/table/table-date.js +78 -0
  246. package/dist/components/table/table-date.js.map +1 -0
  247. package/dist/components/table/table-export.js +6 -2
  248. package/dist/components/table/table-export.js.map +1 -1
  249. package/dist/components/table/table-filter-engine.d.ts +9 -0
  250. package/dist/components/table/table-filter-engine.js +58 -14
  251. package/dist/components/table/table-filter-engine.js.map +1 -1
  252. package/dist/components/table/table-keyboard.d.ts +8 -0
  253. package/dist/components/table/table-keyboard.js +14 -3
  254. package/dist/components/table/table-keyboard.js.map +1 -1
  255. package/dist/components/table/table-toolbar.js +1 -0
  256. package/dist/components/table/table-toolbar.js.map +1 -1
  257. package/dist/components/table/table-tree-data.d.ts +2 -0
  258. package/dist/components/table/table-tree-data.js +35 -9
  259. package/dist/components/table/table-tree-data.js.map +1 -1
  260. package/dist/components/table/table-virtualizer.d.ts +44 -7
  261. package/dist/components/table/table-virtualizer.js +101 -54
  262. package/dist/components/table/table-virtualizer.js.map +1 -1
  263. package/dist/components/theme/theme.css +9 -0
  264. package/dist/index.cjs +1 -1
  265. package/dist/index.esm.js +1 -1
  266. package/dist/index.iife.js +1 -1
  267. package/dist/react/SniceProvider.js +1 -1
  268. package/dist/react/SniceRouter.js +1 -1
  269. package/dist/react/index.js +1 -1
  270. package/dist/react/matchRoute.js +1 -1
  271. package/dist/react/useRequestHandler.js +1 -1
  272. package/dist/symbols.cjs +1 -1
  273. package/dist/symbols.esm.js +1 -1
  274. package/dist/testing-dom.cjs +1 -1
  275. package/dist/testing-dom.esm.js +1 -1
  276. package/dist/transitions.cjs +1 -1
  277. package/dist/transitions.esm.js +1 -1
  278. package/docs/ai/DEVELOPMENT.md +93 -2
  279. package/docs/ai/components/calendar.md +113 -10
  280. package/docs/ai/components/code-block.md +4 -0
  281. package/docs/ai/components/doc.md +1 -1
  282. package/docs/ai/components/progress.md +1 -0
  283. package/docs/ai/components/receipt.md +1 -1
  284. package/docs/ai/components/table.md +29 -30
  285. package/docs/ai/components/theme.md +1 -0
  286. package/docs/ai/events.md +30 -0
  287. package/docs/ai/theme.md +1 -0
  288. package/docs/components/calendar.md +171 -11
  289. package/docs/components/code-block.md +2 -0
  290. package/docs/components/doc.md +1 -1
  291. package/docs/components/progress.md +13 -0
  292. package/docs/components/receipt.md +1 -0
  293. package/docs/components/table.md +274 -15
  294. package/docs/components/theme.md +5 -0
  295. package/docs/events.md +49 -0
  296. package/docs/plans/2026-03-06-date-range-picker-plan.md +4 -4
  297. package/docs/plans/2026-03-07-table-mui-parity-design.md +1 -1
  298. package/docs/plans/2026-03-09-action-bar-plan.md +11 -11
  299. package/docs/superpowers/specs/2026-07-09-table-incredible-design.md +1 -1
  300. package/docs/superpowers/specs/2026-07-09-table-phase0-implementation.md +2 -2
  301. package/package.json +3 -1
  302. package/vscode.html-custom-data.json +13 -1
@@ -1 +1 @@
1
- {"version":3,"file":"qrcode.js","sources":["../../../../components/qr-code/qrcode.ts"],"sourcesContent":["// QR Code generation utilities\n// Supports canvas and SVG rendering modes\n\ntype ErrorCorrectionLevel = 'L' | 'M' | 'Q' | 'H';\ntype DotStyle = 'square' | 'rounded' | 'dots';\n\ninterface QRCodeOptions {\n width?: number;\n height?: number;\n typeNumber?: number;\n colorDark?: string;\n colorLight?: string;\n correctLevel?: ErrorCorrectionLevel;\n useSVG?: boolean;\n dotStyle?: DotStyle;\n margin?: number;\n}\n\n// Mode indicators for different data types\nconst MODE_NUMBER = 1 << 0;\nconst MODE_ALPHA_NUM = 1 << 1;\nconst MODE_8BIT_BYTE = 1 << 2;\nconst MODE_KANJI = 1 << 3;\n\n// Error correction level mapping\nconst ErrorLevel = { L: 1, M: 0, Q: 3, H: 2 };\n\n// Galois field mathematics for error correction\nconst GaloisField = (() => {\n const EXP_TABLE = new Array(256);\n const LOG_TABLE = new Array(256);\n\n for (let i = 0; i < 8; i++) {\n EXP_TABLE[i] = 1 << i;\n }\n for (let i = 8; i < 256; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 4] ^ EXP_TABLE[i - 5] ^ EXP_TABLE[i - 6] ^ EXP_TABLE[i - 8];\n }\n for (let i = 0; i < 255; i++) {\n LOG_TABLE[EXP_TABLE[i]] = i;\n }\n\n return {\n log: (n: number) => {\n if (n < 1) throw new Error('Invalid input');\n return LOG_TABLE[n];\n },\n exp: (n: number) => {\n while (n < 0) n += 255;\n while (n >= 256) n -= 255;\n return EXP_TABLE[n];\n }\n };\n})();\n\nclass Polynomial {\n num: number[];\n\n constructor(num: number[], shift: number) {\n if (num.length === undefined) throw new Error('Invalid polynomial');\n let offset = 0;\n while (offset < num.length && num[offset] === 0) offset++;\n this.num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i++) {\n this.num[i] = num[i + offset];\n }\n }\n\n get(index: number): number {\n return this.num[index];\n }\n\n getLength(): number {\n return this.num.length;\n }\n\n multiply(e: Polynomial): Polynomial {\n const num = new Array(this.getLength() + e.getLength() - 1);\n for (let i = 0; i < this.getLength(); i++) {\n for (let j = 0; j < e.getLength(); j++) {\n num[i + j] ^= GaloisField.exp(GaloisField.log(this.get(i)) + GaloisField.log(e.get(j)));\n }\n }\n return new Polynomial(num, 0);\n }\n\n mod(e: Polynomial): Polynomial {\n if (this.getLength() - e.getLength() < 0) return this;\n const ratio = GaloisField.log(this.get(0)) - GaloisField.log(e.get(0));\n const num = new Array(this.getLength());\n for (let i = 0; i < this.getLength(); i++) {\n num[i] = this.get(i);\n }\n for (let i = 0; i < e.getLength(); i++) {\n num[i] ^= GaloisField.exp(GaloisField.log(e.get(i)) + ratio);\n }\n return new Polynomial(num, 0).mod(e);\n }\n}\n\nclass BitBuffer {\n buffer: number[] = [];\n length: number = 0;\n\n get(index: number): boolean {\n const bufIndex = Math.floor(index / 8);\n return ((this.buffer[bufIndex] >>> (7 - (index % 8))) & 1) === 1;\n }\n\n put(num: number, length: number): void {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1);\n }\n }\n\n getLengthInBits(): number {\n return this.length;\n }\n\n putBit(bit: boolean): void {\n const bufIndex = Math.floor(this.length / 8);\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0);\n }\n if (bit) {\n this.buffer[bufIndex] |= 0x80 >>> (this.length % 8);\n }\n this.length++;\n }\n}\n\nclass ByteData {\n mode: number = MODE_8BIT_BYTE;\n data: string;\n parsedData: number[];\n\n constructor(data: string) {\n this.data = data;\n this.parsedData = [];\n\n // UTF-8 encoding\n for (let i = 0, l = this.data.length; i < l; i++) {\n const byteArray: number[] = [];\n const code = this.data.charCodeAt(i);\n\n if (code > 0x10000) {\n byteArray[0] = 0xf0 | ((code & 0x1c0000) >>> 18);\n byteArray[1] = 0x80 | ((code & 0x3f000) >>> 12);\n byteArray[2] = 0x80 | ((code & 0xfc0) >>> 6);\n byteArray[3] = 0x80 | (code & 0x3f);\n } else if (code > 0x800) {\n byteArray[0] = 0xe0 | ((code & 0xf000) >>> 12);\n byteArray[1] = 0x80 | ((code & 0xfc0) >>> 6);\n byteArray[2] = 0x80 | (code & 0x3f);\n } else if (code > 0x80) {\n byteArray[0] = 0xc0 | ((code & 0x7c0) >>> 6);\n byteArray[1] = 0x80 | (code & 0x3f);\n } else {\n byteArray[0] = code;\n }\n\n this.parsedData.push(...byteArray);\n }\n\n if (this.parsedData.length !== this.data.length) {\n this.parsedData.unshift(239, 187, 191); // UTF-8 BOM\n }\n }\n\n getLength(): number {\n return this.parsedData.length;\n }\n\n write(buffer: BitBuffer): void {\n for (let i = 0, l = this.parsedData.length; i < l; i++) {\n buffer.put(this.parsedData[i], 8);\n }\n }\n}\n\n// Reed-Solomon block structure\nconst RS_BLOCK_TABLE = [\n [1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9],\n [1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16],\n [1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13],\n [1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9],\n [1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12],\n [2, 86, 68], [4, 43, 27], [4, 43, 19], [4, 43, 15],\n [2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14],\n [2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15],\n [2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13],\n [2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16],\n [4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13],\n [2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15],\n [4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12],\n [3, 145, 115, 1, 146, 116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13],\n [5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12],\n [5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16],\n [1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15],\n [5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15],\n [3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14],\n [3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15, 43, 15, 10, 44, 16],\n [4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17],\n [2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13],\n [4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16],\n [6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17],\n [8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16],\n [10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17],\n [8, 152, 122, 4, 153, 123], [22, 73, 45, 3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16],\n [3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16],\n [7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16],\n [5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16],\n [13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16],\n [17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16],\n [17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19, 55, 25], [11, 45, 15, 46, 46, 16],\n [13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17],\n [12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16],\n [6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16],\n [17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16],\n [4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16],\n [20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10, 45, 15, 67, 46, 16],\n [19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16]\n];\n\nclass RSBlock {\n totalCount: number;\n dataCount: number;\n\n constructor(totalCount: number, dataCount: number) {\n this.totalCount = totalCount;\n this.dataCount = dataCount;\n }\n\n static getRSBlocks(typeNumber: number, errorCorrectLevel: number): RSBlock[] {\n const rsBlock = this.getRsBlockTable(typeNumber, errorCorrectLevel);\n if (rsBlock === undefined) {\n throw new Error('Invalid type number or error correction level');\n }\n\n const length = rsBlock.length / 3;\n const list: RSBlock[] = [];\n\n for (let i = 0; i < length; i++) {\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n\n for (let j = 0; j < count; j++) {\n list.push(new RSBlock(totalCount, dataCount));\n }\n }\n\n return list;\n }\n\n static getRsBlockTable(typeNumber: number, errorCorrectLevel: number): number[] | undefined {\n switch (errorCorrectLevel) {\n case ErrorLevel.L: return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case ErrorLevel.M: return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case ErrorLevel.Q: return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case ErrorLevel.H: return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default: return undefined;\n }\n }\n}\n\n// Pattern position tables\nconst PATTERN_POSITION_TABLE = [\n [], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34],\n [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54],\n [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74],\n [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90],\n [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]\n];\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\nconst Utils = {\n getBCHTypeInfo(data: number): number {\n let d = data << 10;\n while (this.getBCHDigit(d) - this.getBCHDigit(G15) >= 0) {\n d ^= G15 << (this.getBCHDigit(d) - this.getBCHDigit(G15));\n }\n return ((data << 10) | d) ^ G15_MASK;\n },\n\n getBCHTypeNumber(data: number): number {\n let d = data << 12;\n while (this.getBCHDigit(d) - this.getBCHDigit(G18) >= 0) {\n d ^= G18 << (this.getBCHDigit(d) - this.getBCHDigit(G18));\n }\n return (data << 12) | d;\n },\n\n getBCHDigit(data: number): number {\n let digit = 0;\n while (data !== 0) {\n digit++;\n data >>>= 1;\n }\n return digit;\n },\n\n getPatternPosition(typeNumber: number): number[] {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask(maskPattern: number, i: number, j: number): boolean {\n switch (maskPattern) {\n case 0: return (i + j) % 2 === 0;\n case 1: return i % 2 === 0;\n case 2: return j % 3 === 0;\n case 3: return (i + j) % 3 === 0;\n case 4: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0;\n case 5: return ((i * j) % 2) + ((i * j) % 3) === 0;\n case 6: return (((i * j) % 2) + ((i * j) % 3)) % 2 === 0;\n case 7: return (((i * j) % 3) + ((i + j) % 2)) % 2 === 0;\n default: throw new Error('Invalid mask pattern');\n }\n },\n\n getErrorCorrectPolynomial(errorCorrectLength: number): Polynomial {\n let a = new Polynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new Polynomial([1, GaloisField.exp(i)], 0));\n }\n return a;\n },\n\n getLengthInBits(mode: number, type: number): number {\n if (type >= 1 && type < 10) {\n switch (mode) {\n case MODE_NUMBER: return 10;\n case MODE_ALPHA_NUM: return 9;\n case MODE_8BIT_BYTE: return 8;\n case MODE_KANJI: return 8;\n default: throw new Error('Invalid mode');\n }\n } else if (type < 27) {\n switch (mode) {\n case MODE_NUMBER: return 12;\n case MODE_ALPHA_NUM: return 11;\n case MODE_8BIT_BYTE: return 16;\n case MODE_KANJI: return 10;\n default: throw new Error('Invalid mode');\n }\n } else if (type < 41) {\n switch (mode) {\n case MODE_NUMBER: return 14;\n case MODE_ALPHA_NUM: return 13;\n case MODE_8BIT_BYTE: return 16;\n case MODE_KANJI: return 12;\n default: throw new Error('Invalid mode');\n }\n } else {\n throw new Error('Invalid type');\n }\n },\n\n getLostPoint(qrCode: QRCodeModel): number {\n const moduleCount = qrCode.getModuleCount();\n let lostPoint = 0;\n\n // Adjacent modules in row/column\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount; col++) {\n let sameCount = 0;\n const dark = qrCode.isDark(row, col);\n\n for (let r = -1; r <= 1; r++) {\n if (row + r < 0 || moduleCount <= row + r) continue;\n for (let c = -1; c <= 1; c++) {\n if (col + c < 0 || moduleCount <= col + c) continue;\n if (r === 0 && c === 0) continue;\n if (dark === qrCode.isDark(row + r, col + c)) {\n sameCount++;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5;\n }\n }\n }\n\n // Block patterns\n for (let row = 0; row < moduleCount - 1; row++) {\n for (let col = 0; col < moduleCount - 1; col++) {\n let count = 0;\n if (qrCode.isDark(row, col)) count++;\n if (qrCode.isDark(row + 1, col)) count++;\n if (qrCode.isDark(row, col + 1)) count++;\n if (qrCode.isDark(row + 1, col + 1)) count++;\n if (count === 0 || count === 4) {\n lostPoint += 3;\n }\n }\n }\n\n // Finder-like patterns\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount - 6; col++) {\n if (\n qrCode.isDark(row, col) &&\n !qrCode.isDark(row, col + 1) &&\n qrCode.isDark(row, col + 2) &&\n qrCode.isDark(row, col + 3) &&\n qrCode.isDark(row, col + 4) &&\n !qrCode.isDark(row, col + 5) &&\n qrCode.isDark(row, col + 6)\n ) {\n lostPoint += 40;\n }\n }\n }\n\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount - 6; row++) {\n if (\n qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col)\n ) {\n lostPoint += 40;\n }\n }\n }\n\n // Balance of dark/light modules\n let darkCount = 0;\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col)) {\n darkCount++;\n }\n }\n }\n\n const ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n }\n};\n\n// Data capacity limits for QR versions\nconst CODE_LIMIT_LENGTH = [\n [17, 14, 11, 7], [32, 26, 20, 14], [53, 42, 32, 24], [78, 62, 46, 34],\n [106, 84, 60, 44], [134, 106, 74, 58], [154, 122, 86, 64], [192, 152, 108, 84],\n [230, 180, 130, 98], [271, 213, 151, 119], [321, 251, 177, 137], [367, 287, 203, 155],\n [425, 331, 241, 177], [458, 362, 258, 194], [520, 412, 292, 220], [586, 450, 322, 250],\n [644, 504, 364, 280], [718, 560, 394, 310], [792, 624, 442, 338], [858, 666, 482, 382],\n [929, 711, 509, 403], [1003, 779, 565, 439], [1091, 857, 611, 461], [1171, 911, 661, 511],\n [1273, 997, 715, 535], [1367, 1059, 751, 593], [1465, 1125, 805, 625], [1528, 1190, 868, 658],\n [1628, 1264, 908, 698], [1732, 1370, 982, 742], [1840, 1452, 1030, 790], [1952, 1538, 1112, 842],\n [2068, 1628, 1168, 898], [2188, 1722, 1228, 958], [2303, 1809, 1283, 983], [2431, 1911, 1351, 1051],\n [2563, 1989, 1423, 1093], [2699, 2099, 1499, 1139], [2809, 2213, 1579, 1219], [2953, 2331, 1663, 1273]\n];\n\nfunction getTypeNumber(sText: string, nCorrectLevel: number): number {\n let nType = 1;\n const length = getUTF8Length(sText);\n\n for (let i = 0, len = CODE_LIMIT_LENGTH.length; i <= len; i++) {\n let nLimit = 0;\n\n switch (nCorrectLevel) {\n case ErrorLevel.L: nLimit = CODE_LIMIT_LENGTH[i][0]; break;\n case ErrorLevel.M: nLimit = CODE_LIMIT_LENGTH[i][1]; break;\n case ErrorLevel.Q: nLimit = CODE_LIMIT_LENGTH[i][2]; break;\n case ErrorLevel.H: nLimit = CODE_LIMIT_LENGTH[i][3]; break;\n }\n\n if (length <= nLimit) {\n break;\n } else {\n nType++;\n }\n }\n\n if (nType > CODE_LIMIT_LENGTH.length) {\n throw new Error('Data too long');\n }\n\n return nType;\n}\n\nfunction getUTF8Length(sText: string): number {\n const replacedText = encodeURI(sText).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n return replacedText.length + (replacedText.length !== sText.length ? 3 : 0);\n}\n\nclass QRCodeModel {\n typeNumber: number;\n errorCorrectLevel: number;\n modules: (boolean | null)[][] | null = null;\n moduleCount: number = 0;\n dataCache: number[] | null = null;\n dataList: ByteData[] = [];\n\n constructor(typeNumber: number, errorCorrectLevel: number) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n }\n\n addData(data: string): void {\n const newData = new ByteData(data);\n this.dataList.push(newData);\n this.dataCache = null;\n }\n\n isDark(row: number, col: number): boolean {\n if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n throw new Error(`Invalid position: ${row},${col}`);\n }\n return this.modules![row][col] ?? false;\n }\n\n getModuleCount(): number {\n return this.moduleCount;\n }\n\n make(): void {\n this.makeImpl(false, this.getBestMaskPattern());\n }\n\n makeImpl(test: boolean, maskPattern: number): void {\n this.moduleCount = this.typeNumber * 4 + 17;\n this.modules = new Array(this.moduleCount);\n\n for (let row = 0; row < this.moduleCount; row++) {\n this.modules[row] = new Array(this.moduleCount);\n for (let col = 0; col < this.moduleCount; col++) {\n this.modules[row][col] = null as any;\n }\n }\n\n this.setupPositionProbePattern(0, 0);\n this.setupPositionProbePattern(this.moduleCount - 7, 0);\n this.setupPositionProbePattern(0, this.moduleCount - 7);\n this.setupPositionAdjustPattern();\n this.setupTimingPattern();\n this.setupTypeInfo(test, maskPattern);\n\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test);\n }\n\n if (this.dataCache === null) {\n this.dataCache = QRCodeModel.createData(\n this.typeNumber,\n this.errorCorrectLevel,\n this.dataList\n );\n }\n\n this.mapData(this.dataCache, maskPattern);\n }\n\n setupPositionProbePattern(row: number, col: number): void {\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || this.moduleCount <= row + r) continue;\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || this.moduleCount <= col + c) continue;\n\n if (\n (r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)\n ) {\n this.modules![row + r][col + c] = true;\n } else {\n this.modules![row + r][col + c] = false;\n }\n }\n }\n }\n\n getBestMaskPattern(): number {\n let minLostPoint = 0;\n let pattern = 0;\n\n for (let i = 0; i < 8; i++) {\n this.makeImpl(true, i);\n const lostPoint = Utils.getLostPoint(this);\n\n if (i === 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n }\n\n setupTimingPattern(): void {\n for (let r = 8; r < this.moduleCount - 8; r++) {\n if (this.modules![r][6] !== null) {\n continue;\n }\n this.modules![r][6] = r % 2 === 0;\n }\n\n for (let c = 8; c < this.moduleCount - 8; c++) {\n if (this.modules![6][c] !== null) {\n continue;\n }\n this.modules![6][c] = c % 2 === 0;\n }\n }\n\n setupPositionAdjustPattern(): void {\n const pos = Utils.getPatternPosition(this.typeNumber);\n\n for (let i = 0; i < pos.length; i++) {\n for (let j = 0; j < pos.length; j++) {\n const row = pos[i];\n const col = pos[j];\n\n if (this.modules![row][col] !== null) {\n continue;\n }\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (\n r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)\n ) {\n this.modules![row + r][col + c] = true;\n } else {\n this.modules![row + r][col + c] = false;\n }\n }\n }\n }\n }\n }\n\n setupTypeNumber(test: boolean): void {\n const bits = Utils.getBCHTypeNumber(this.typeNumber);\n\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) === 1;\n this.modules![Math.floor(i / 3)][(i % 3) + this.moduleCount - 8 - 3] = mod;\n }\n\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) === 1;\n this.modules![(i % 3) + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n }\n\n setupTypeInfo(test: boolean, maskPattern: number): void {\n const data = (this.errorCorrectLevel << 3) | maskPattern;\n const bits = Utils.getBCHTypeInfo(data);\n\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) === 1;\n\n if (i < 6) {\n this.modules![i][8] = mod;\n } else if (i < 8) {\n this.modules![i + 1][8] = mod;\n } else {\n this.modules![this.moduleCount - 15 + i][8] = mod;\n }\n }\n\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) === 1;\n\n if (i < 8) {\n this.modules![8][this.moduleCount - i - 1] = mod;\n } else if (i < 9) {\n this.modules![8][15 - i - 1 + 1] = mod;\n } else {\n this.modules![8][15 - i - 1] = mod;\n }\n }\n\n this.modules![this.moduleCount - 8][8] = !test;\n }\n\n mapData(data: number[], maskPattern: number): void {\n let inc = -1;\n let row = this.moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n\n for (let col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col === 6) col--;\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (this.modules![row][col - c] === null) {\n let dark = false;\n\n if (byteIndex < data.length) {\n dark = ((data[byteIndex] >>> bitIndex) & 1) === 1;\n }\n\n const mask = Utils.getMask(maskPattern, row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n this.modules![row][col - c] = dark;\n bitIndex--;\n\n if (bitIndex === -1) {\n byteIndex++;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || this.moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n }\n\n static PAD0 = 0xec;\n static PAD1 = 0x11;\n\n static createData(\n typeNumber: number,\n errorCorrectLevel: number,\n dataList: ByteData[]\n ): number[] {\n const rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n const buffer = new BitBuffer();\n\n for (let i = 0; i < dataList.length; i++) {\n const data = dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), Utils.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw new Error(\n `Code length overflow. (${buffer.getLengthInBits()}>${totalDataCount * 8})`\n );\n }\n\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(false);\n }\n\n while (true) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCodeModel.PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCodeModel.PAD1, 8);\n }\n\n return QRCodeModel.createBytes(buffer, rsBlocks);\n }\n\n static createBytes(buffer: BitBuffer, rsBlocks: RSBlock[]): number[] {\n let offset = 0;\n\n let maxDcCount = 0;\n let maxEcCount = 0;\n\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n\n for (let r = 0; r < rsBlocks.length; r++) {\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (let i = 0; i < dcdata[r].length; i++) {\n dcdata[r][i] = 0xff & buffer.buffer[i + offset];\n }\n offset += dcCount;\n\n const rsPoly = Utils.getErrorCorrectPolynomial(ecCount);\n const rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n\n for (let i = 0; i < ecdata[r].length; i++) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;\n }\n }\n\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n const data = new Array(totalCodeCount);\n let index = 0;\n\n for (let i = 0; i < maxDcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < dcdata[r].length) {\n data[index++] = dcdata[r][i];\n }\n }\n }\n\n for (let i = 0; i < maxEcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < ecdata[r].length) {\n data[index++] = ecdata[r][i];\n }\n }\n }\n\n return data;\n }\n}\n\n// SVG rendering backend\nclass SVGDrawing {\n private element: HTMLElement;\n private options: Required<QRCodeOptions>;\n\n constructor(el: HTMLElement, options: Required<QRCodeOptions>) {\n this.element = el;\n this.options = options;\n }\n\n draw(qrCode: QRCodeModel): void {\n const opts = this.options;\n const nCount = qrCode.getModuleCount();\n const margin = opts.margin || 0;\n const totalSize = nCount + margin * 2;\n\n this.clear();\n\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', `0 0 ${totalSize} ${totalSize}`);\n svg.setAttribute('width', '100%');\n svg.setAttribute('height', '100%');\n svg.setAttribute('fill', opts.colorLight);\n svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n this.element.appendChild(svg);\n\n svg.appendChild(this.createSVGElement('rect', {\n fill: opts.colorLight,\n width: '100%',\n height: '100%'\n }));\n\n svg.appendChild(this.createSVGElement('rect', {\n fill: opts.colorDark,\n width: '1',\n height: '1',\n id: 'template'\n }));\n\n for (let row = 0; row < nCount; row++) {\n for (let col = 0; col < nCount; col++) {\n if (qrCode.isDark(row, col)) {\n const use = this.createSVGElement('use', {\n x: String(margin + col),\n y: String(margin + row)\n });\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#template');\n svg.appendChild(use);\n }\n }\n }\n }\n\n clear(): void {\n while (this.element.hasChildNodes()) {\n this.element.removeChild(this.element.lastChild!);\n }\n }\n\n private createSVGElement(tag: string, attrs: Record<string, string>): SVGElement {\n const el = document.createElementNS('http://www.w3.org/2000/svg', tag);\n for (const k in attrs) {\n if (attrs.hasOwnProperty(k)) {\n el.setAttribute(k, attrs[k]);\n }\n }\n return el;\n }\n}\n\n// Canvas rendering backend\nclass CanvasDrawing {\n private element: HTMLElement;\n private options: Required<QRCodeOptions>;\n private canvas: HTMLCanvasElement;\n private context: CanvasRenderingContext2D | null;\n private painted: boolean = false;\n\n constructor(el: HTMLElement, options: Required<QRCodeOptions>) {\n this.element = el;\n this.options = options;\n\n this.canvas = document.createElement('canvas');\n this.canvas.width = options.width;\n this.canvas.height = options.height;\n el.appendChild(this.canvas);\n\n try {\n this.context = this.canvas.getContext('2d');\n } catch (e) {\n // Canvas not supported in test environment\n this.context = null;\n }\n }\n\n draw(qrCode: QRCodeModel): void {\n if (!this.context) return;\n\n const opts = this.options;\n const ctx = this.context;\n const margin = opts.margin || 0;\n\n const nCount = qrCode.getModuleCount();\n const drawSize = Math.min(opts.width, opts.height) - margin * 2;\n const nWidth = drawSize / nCount;\n const nHeight = drawSize / nCount;\n const nRoundedWidth = Math.round(nWidth);\n const nRoundedHeight = Math.round(nHeight);\n\n this.clear();\n\n // Fill background including quiet zone\n ctx.fillStyle = opts.colorLight;\n ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\n for (let row = 0; row < nCount; row++) {\n for (let col = 0; col < nCount; col++) {\n const bIsDark = qrCode.isDark(row, col);\n const nLeft = margin + col * nWidth;\n const nTop = margin + row * nHeight;\n const color = bIsDark ? opts.colorDark : opts.colorLight;\n\n ctx.fillStyle = color;\n\n if (opts.dotStyle === 'dots') {\n // Draw circles\n if (bIsDark) {\n const centerX = nLeft + nWidth / 2;\n const centerY = nTop + nHeight / 2;\n const radius = Math.min(nWidth, nHeight) / 2.2;\n ctx.beginPath();\n ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);\n ctx.fill();\n } else {\n ctx.fillRect(nLeft, nTop, nWidth, nHeight);\n }\n } else if (opts.dotStyle === 'rounded') {\n // Draw rounded rectangles\n if (bIsDark) {\n const radius = Math.min(nWidth, nHeight) / 4;\n ctx.beginPath();\n ctx.roundRect(nLeft, nTop, nWidth, nHeight, radius);\n ctx.fill();\n } else {\n ctx.fillRect(nLeft, nTop, nWidth, nHeight);\n }\n } else {\n // Square (default)\n ctx.fillRect(nLeft, nTop, nWidth, nHeight);\n\n ctx.strokeStyle = color;\n ctx.lineWidth = 1;\n ctx.strokeRect(\n Math.floor(nLeft) + 0.5,\n Math.floor(nTop) + 0.5,\n nRoundedWidth,\n nRoundedHeight\n );\n\n ctx.strokeRect(\n Math.ceil(nLeft) - 0.5,\n Math.ceil(nTop) - 0.5,\n nRoundedWidth,\n nRoundedHeight\n );\n }\n }\n }\n\n this.painted = true;\n }\n\n clear(): void {\n if (!this.context) return;\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.painted = false;\n }\n\n isPainted(): boolean {\n return this.painted;\n }\n}\n\n// Main QRCode class\nexport class QRCode {\n private element: HTMLElement;\n private options: Required<QRCodeOptions>;\n private qrCodeModel: QRCodeModel | null = null;\n private drawing: SVGDrawing | CanvasDrawing;\n\n static CorrectLevel = ErrorLevel;\n\n constructor(el: HTMLElement | string, vOption: QRCodeOptions | string) {\n this.options = {\n width: 256,\n height: 256,\n typeNumber: 4,\n colorDark: '#000000',\n colorLight: '#ffffff',\n correctLevel: 'H' as ErrorCorrectionLevel,\n useSVG: false,\n dotStyle: 'square',\n margin: 4\n };\n\n let opts = vOption;\n if (typeof opts === 'string') {\n opts = { text: opts } as any;\n }\n\n if (opts && typeof opts === 'object') {\n for (const i in opts) {\n (this.options as any)[i] = (opts as any)[i];\n }\n }\n\n if (typeof el === 'string') {\n el = document.getElementById(el)!;\n }\n\n this.element = el;\n\n const Drawing = this.options.useSVG ? SVGDrawing : CanvasDrawing;\n this.drawing = new Drawing(this.element, this.options);\n\n if ((vOption as any)?.text) {\n this.makeCode((vOption as any).text);\n }\n }\n\n makeCode(sText: string): void {\n const correctLevel = (this.options as any).correctLevel || ErrorLevel.H;\n this.qrCodeModel = new QRCodeModel(\n getTypeNumber(sText, correctLevel),\n correctLevel\n );\n this.qrCodeModel.addData(sText);\n this.qrCodeModel.make();\n this.element.title = sText;\n this.drawing.draw(this.qrCodeModel);\n }\n\n clear(): void {\n this.drawing.clear();\n }\n}\n"],"names":[],"mappings":"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AE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjD,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAClD,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAClD,IAAA,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClD,IAAA,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1E,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAClD,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACxE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACpF,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACrF,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IAC9F,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACpF,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IAChG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACtF,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACpG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtF,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAClG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACrG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACpG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACrG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1F,IAAA,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC/E,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACzG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC5F,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACzG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACzG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACzG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,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,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3E,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAClE,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAC9D,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAChE,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AACzE,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE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"}
1
+ {"version":3,"file":"qrcode.js","sources":["../../../../components/qr-code/qrcode.ts"],"sourcesContent":["// QR Code generation utilities\n// Supports canvas and SVG rendering modes\n\ntype ErrorCorrectionLevel = 'L' | 'M' | 'Q' | 'H';\ntype DotStyle = 'square' | 'rounded' | 'dots';\n\ninterface QRCodeOptions {\n width?: number;\n height?: number;\n typeNumber?: number;\n colorDark?: string;\n colorLight?: string;\n correctLevel?: ErrorCorrectionLevel | number;\n useSVG?: boolean;\n dotStyle?: DotStyle;\n margin?: number;\n}\n\n// Mode indicators for different data types\nconst MODE_NUMBER = 1 << 0;\nconst MODE_ALPHA_NUM = 1 << 1;\nconst MODE_8BIT_BYTE = 1 << 2;\nconst MODE_KANJI = 1 << 3;\n\n// Error correction level mapping — the values are the QR standard's format-info\n// bits, so M is legitimately 0 and must never be treated as \"unset\".\nconst ErrorLevel = { L: 1, M: 0, Q: 3, H: 2 };\nconst ERROR_LEVEL_VALUES = [ErrorLevel.L, ErrorLevel.M, ErrorLevel.Q, ErrorLevel.H];\n\n/**\n * Accept either a documented level letter ('L'|'M'|'Q'|'H') or an already\n * mapped format-info value and return the format-info value. Anything\n * unrecognised falls back to H, the safest level.\n */\nfunction normalizeCorrectLevel(level: ErrorCorrectionLevel | number | undefined | null): number {\n if (typeof level === 'string') {\n const mapped = ErrorLevel[level as ErrorCorrectionLevel];\n return mapped === undefined ? ErrorLevel.H : mapped;\n }\n if (typeof level === 'number' && ERROR_LEVEL_VALUES.includes(level)) return level;\n return ErrorLevel.H;\n}\n\n// Galois field mathematics for error correction\nconst GaloisField = (() => {\n const EXP_TABLE = new Array(256);\n const LOG_TABLE = new Array(256);\n\n for (let i = 0; i < 8; i++) {\n EXP_TABLE[i] = 1 << i;\n }\n for (let i = 8; i < 256; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 4] ^ EXP_TABLE[i - 5] ^ EXP_TABLE[i - 6] ^ EXP_TABLE[i - 8];\n }\n for (let i = 0; i < 255; i++) {\n LOG_TABLE[EXP_TABLE[i]] = i;\n }\n\n return {\n log: (n: number) => {\n if (n < 1) throw new Error('Invalid input');\n return LOG_TABLE[n];\n },\n exp: (n: number) => {\n while (n < 0) n += 255;\n while (n >= 256) n -= 255;\n return EXP_TABLE[n];\n }\n };\n})();\n\nclass Polynomial {\n num: number[];\n\n constructor(num: number[], shift: number) {\n if (num.length === undefined) throw new Error('Invalid polynomial');\n let offset = 0;\n while (offset < num.length && num[offset] === 0) offset++;\n this.num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i++) {\n this.num[i] = num[i + offset];\n }\n }\n\n get(index: number): number {\n return this.num[index];\n }\n\n getLength(): number {\n return this.num.length;\n }\n\n multiply(e: Polynomial): Polynomial {\n const num = new Array(this.getLength() + e.getLength() - 1);\n for (let i = 0; i < this.getLength(); i++) {\n for (let j = 0; j < e.getLength(); j++) {\n num[i + j] ^= GaloisField.exp(GaloisField.log(this.get(i)) + GaloisField.log(e.get(j)));\n }\n }\n return new Polynomial(num, 0);\n }\n\n mod(e: Polynomial): Polynomial {\n if (this.getLength() - e.getLength() < 0) return this;\n const ratio = GaloisField.log(this.get(0)) - GaloisField.log(e.get(0));\n const num = new Array(this.getLength());\n for (let i = 0; i < this.getLength(); i++) {\n num[i] = this.get(i);\n }\n for (let i = 0; i < e.getLength(); i++) {\n num[i] ^= GaloisField.exp(GaloisField.log(e.get(i)) + ratio);\n }\n return new Polynomial(num, 0).mod(e);\n }\n}\n\nclass BitBuffer {\n buffer: number[] = [];\n length: number = 0;\n\n get(index: number): boolean {\n const bufIndex = Math.floor(index / 8);\n return ((this.buffer[bufIndex] >>> (7 - (index % 8))) & 1) === 1;\n }\n\n put(num: number, length: number): void {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1);\n }\n }\n\n getLengthInBits(): number {\n return this.length;\n }\n\n putBit(bit: boolean): void {\n const bufIndex = Math.floor(this.length / 8);\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0);\n }\n if (bit) {\n this.buffer[bufIndex] |= 0x80 >>> (this.length % 8);\n }\n this.length++;\n }\n}\n\nclass ByteData {\n mode: number = MODE_8BIT_BYTE;\n data: string;\n parsedData: number[];\n\n constructor(data: string) {\n this.data = data;\n this.parsedData = [];\n\n // UTF-8 encoding\n for (let i = 0, l = this.data.length; i < l; i++) {\n const byteArray: number[] = [];\n const code = this.data.charCodeAt(i);\n\n if (code > 0x10000) {\n byteArray[0] = 0xf0 | ((code & 0x1c0000) >>> 18);\n byteArray[1] = 0x80 | ((code & 0x3f000) >>> 12);\n byteArray[2] = 0x80 | ((code & 0xfc0) >>> 6);\n byteArray[3] = 0x80 | (code & 0x3f);\n } else if (code > 0x800) {\n byteArray[0] = 0xe0 | ((code & 0xf000) >>> 12);\n byteArray[1] = 0x80 | ((code & 0xfc0) >>> 6);\n byteArray[2] = 0x80 | (code & 0x3f);\n } else if (code > 0x80) {\n byteArray[0] = 0xc0 | ((code & 0x7c0) >>> 6);\n byteArray[1] = 0x80 | (code & 0x3f);\n } else {\n byteArray[0] = code;\n }\n\n this.parsedData.push(...byteArray);\n }\n\n if (this.parsedData.length !== this.data.length) {\n this.parsedData.unshift(239, 187, 191); // UTF-8 BOM\n }\n }\n\n getLength(): number {\n return this.parsedData.length;\n }\n\n write(buffer: BitBuffer): void {\n for (let i = 0, l = this.parsedData.length; i < l; i++) {\n buffer.put(this.parsedData[i], 8);\n }\n }\n}\n\n// Reed-Solomon block structure\nconst RS_BLOCK_TABLE = [\n [1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9],\n [1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16],\n [1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13],\n [1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9],\n [1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12],\n [2, 86, 68], [4, 43, 27], [4, 43, 19], [4, 43, 15],\n [2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14],\n [2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15],\n [2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13],\n [2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16],\n [4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13],\n [2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15],\n [4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12],\n [3, 145, 115, 1, 146, 116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13],\n [5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12],\n [5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16],\n [1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15],\n [5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15],\n [3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14],\n [3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15, 43, 15, 10, 44, 16],\n [4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17],\n [2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13],\n [4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16],\n [6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17],\n [8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16],\n [10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17],\n [8, 152, 122, 4, 153, 123], [22, 73, 45, 3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16],\n [3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16],\n [7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16],\n [5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16],\n [13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16],\n [17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16],\n [17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19, 55, 25], [11, 45, 15, 46, 46, 16],\n [13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17],\n [12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16],\n [6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16],\n [17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16],\n [4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16],\n [20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10, 45, 15, 67, 46, 16],\n [19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16]\n];\n\nclass RSBlock {\n totalCount: number;\n dataCount: number;\n\n constructor(totalCount: number, dataCount: number) {\n this.totalCount = totalCount;\n this.dataCount = dataCount;\n }\n\n static getRSBlocks(typeNumber: number, errorCorrectLevel: number): RSBlock[] {\n const rsBlock = this.getRsBlockTable(typeNumber, errorCorrectLevel);\n if (rsBlock === undefined) {\n throw new Error('Invalid type number or error correction level');\n }\n\n const length = rsBlock.length / 3;\n const list: RSBlock[] = [];\n\n for (let i = 0; i < length; i++) {\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n\n for (let j = 0; j < count; j++) {\n list.push(new RSBlock(totalCount, dataCount));\n }\n }\n\n return list;\n }\n\n static getRsBlockTable(typeNumber: number, errorCorrectLevel: number): number[] | undefined {\n switch (errorCorrectLevel) {\n case ErrorLevel.L: return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case ErrorLevel.M: return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case ErrorLevel.Q: return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case ErrorLevel.H: return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default: return undefined;\n }\n }\n}\n\n// Pattern position tables\nconst PATTERN_POSITION_TABLE = [\n [], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34],\n [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54],\n [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74],\n [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90],\n [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]\n];\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\nconst Utils = {\n getBCHTypeInfo(data: number): number {\n let d = data << 10;\n while (this.getBCHDigit(d) - this.getBCHDigit(G15) >= 0) {\n d ^= G15 << (this.getBCHDigit(d) - this.getBCHDigit(G15));\n }\n return ((data << 10) | d) ^ G15_MASK;\n },\n\n getBCHTypeNumber(data: number): number {\n let d = data << 12;\n while (this.getBCHDigit(d) - this.getBCHDigit(G18) >= 0) {\n d ^= G18 << (this.getBCHDigit(d) - this.getBCHDigit(G18));\n }\n return (data << 12) | d;\n },\n\n getBCHDigit(data: number): number {\n let digit = 0;\n while (data !== 0) {\n digit++;\n data >>>= 1;\n }\n return digit;\n },\n\n getPatternPosition(typeNumber: number): number[] {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask(maskPattern: number, i: number, j: number): boolean {\n switch (maskPattern) {\n case 0: return (i + j) % 2 === 0;\n case 1: return i % 2 === 0;\n case 2: return j % 3 === 0;\n case 3: return (i + j) % 3 === 0;\n case 4: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0;\n case 5: return ((i * j) % 2) + ((i * j) % 3) === 0;\n case 6: return (((i * j) % 2) + ((i * j) % 3)) % 2 === 0;\n case 7: return (((i * j) % 3) + ((i + j) % 2)) % 2 === 0;\n default: throw new Error('Invalid mask pattern');\n }\n },\n\n getErrorCorrectPolynomial(errorCorrectLength: number): Polynomial {\n let a = new Polynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new Polynomial([1, GaloisField.exp(i)], 0));\n }\n return a;\n },\n\n getLengthInBits(mode: number, type: number): number {\n if (type >= 1 && type < 10) {\n switch (mode) {\n case MODE_NUMBER: return 10;\n case MODE_ALPHA_NUM: return 9;\n case MODE_8BIT_BYTE: return 8;\n case MODE_KANJI: return 8;\n default: throw new Error('Invalid mode');\n }\n } else if (type < 27) {\n switch (mode) {\n case MODE_NUMBER: return 12;\n case MODE_ALPHA_NUM: return 11;\n case MODE_8BIT_BYTE: return 16;\n case MODE_KANJI: return 10;\n default: throw new Error('Invalid mode');\n }\n } else if (type < 41) {\n switch (mode) {\n case MODE_NUMBER: return 14;\n case MODE_ALPHA_NUM: return 13;\n case MODE_8BIT_BYTE: return 16;\n case MODE_KANJI: return 12;\n default: throw new Error('Invalid mode');\n }\n } else {\n throw new Error('Invalid type');\n }\n },\n\n getLostPoint(qrCode: QRCodeModel): number {\n const moduleCount = qrCode.getModuleCount();\n let lostPoint = 0;\n\n // Adjacent modules in row/column\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount; col++) {\n let sameCount = 0;\n const dark = qrCode.isDark(row, col);\n\n for (let r = -1; r <= 1; r++) {\n if (row + r < 0 || moduleCount <= row + r) continue;\n for (let c = -1; c <= 1; c++) {\n if (col + c < 0 || moduleCount <= col + c) continue;\n if (r === 0 && c === 0) continue;\n if (dark === qrCode.isDark(row + r, col + c)) {\n sameCount++;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5;\n }\n }\n }\n\n // Block patterns\n for (let row = 0; row < moduleCount - 1; row++) {\n for (let col = 0; col < moduleCount - 1; col++) {\n let count = 0;\n if (qrCode.isDark(row, col)) count++;\n if (qrCode.isDark(row + 1, col)) count++;\n if (qrCode.isDark(row, col + 1)) count++;\n if (qrCode.isDark(row + 1, col + 1)) count++;\n if (count === 0 || count === 4) {\n lostPoint += 3;\n }\n }\n }\n\n // Finder-like patterns\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount - 6; col++) {\n if (\n qrCode.isDark(row, col) &&\n !qrCode.isDark(row, col + 1) &&\n qrCode.isDark(row, col + 2) &&\n qrCode.isDark(row, col + 3) &&\n qrCode.isDark(row, col + 4) &&\n !qrCode.isDark(row, col + 5) &&\n qrCode.isDark(row, col + 6)\n ) {\n lostPoint += 40;\n }\n }\n }\n\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount - 6; row++) {\n if (\n qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col)\n ) {\n lostPoint += 40;\n }\n }\n }\n\n // Balance of dark/light modules\n let darkCount = 0;\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col)) {\n darkCount++;\n }\n }\n }\n\n const ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n }\n};\n\n// Data capacity limits for QR versions\nconst CODE_LIMIT_LENGTH = [\n [17, 14, 11, 7], [32, 26, 20, 14], [53, 42, 32, 24], [78, 62, 46, 34],\n [106, 84, 60, 44], [134, 106, 74, 58], [154, 122, 86, 64], [192, 152, 108, 84],\n [230, 180, 130, 98], [271, 213, 151, 119], [321, 251, 177, 137], [367, 287, 203, 155],\n [425, 331, 241, 177], [458, 362, 258, 194], [520, 412, 292, 220], [586, 450, 322, 250],\n [644, 504, 364, 280], [718, 560, 394, 310], [792, 624, 442, 338], [858, 666, 482, 382],\n [929, 711, 509, 403], [1003, 779, 565, 439], [1091, 857, 611, 461], [1171, 911, 661, 511],\n [1273, 997, 715, 535], [1367, 1059, 751, 593], [1465, 1125, 805, 625], [1528, 1190, 868, 658],\n [1628, 1264, 908, 698], [1732, 1370, 982, 742], [1840, 1452, 1030, 790], [1952, 1538, 1112, 842],\n [2068, 1628, 1168, 898], [2188, 1722, 1228, 958], [2303, 1809, 1283, 983], [2431, 1911, 1351, 1051],\n [2563, 1989, 1423, 1093], [2699, 2099, 1499, 1139], [2809, 2213, 1579, 1219], [2953, 2331, 1663, 1273]\n];\n\nfunction getTypeNumber(sText: string, nCorrectLevel: number): number {\n let nType = 1;\n const length = getUTF8Length(sText);\n\n for (let i = 0, len = CODE_LIMIT_LENGTH.length; i <= len; i++) {\n let nLimit = 0;\n\n switch (nCorrectLevel) {\n case ErrorLevel.L: nLimit = CODE_LIMIT_LENGTH[i][0]; break;\n case ErrorLevel.M: nLimit = CODE_LIMIT_LENGTH[i][1]; break;\n case ErrorLevel.Q: nLimit = CODE_LIMIT_LENGTH[i][2]; break;\n case ErrorLevel.H: nLimit = CODE_LIMIT_LENGTH[i][3]; break;\n }\n\n if (length <= nLimit) {\n break;\n } else {\n nType++;\n }\n }\n\n if (nType > CODE_LIMIT_LENGTH.length) {\n throw new Error('Data too long');\n }\n\n return nType;\n}\n\nfunction getUTF8Length(sText: string): number {\n const replacedText = encodeURI(sText).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n return replacedText.length + (replacedText.length !== sText.length ? 3 : 0);\n}\n\nclass QRCodeModel {\n typeNumber: number;\n errorCorrectLevel: number;\n modules: (boolean | null)[][] | null = null;\n moduleCount: number = 0;\n dataCache: number[] | null = null;\n dataList: ByteData[] = [];\n\n constructor(typeNumber: number, errorCorrectLevel: number) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n }\n\n addData(data: string): void {\n const newData = new ByteData(data);\n this.dataList.push(newData);\n this.dataCache = null;\n }\n\n isDark(row: number, col: number): boolean {\n if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n throw new Error(`Invalid position: ${row},${col}`);\n }\n return this.modules![row][col] ?? false;\n }\n\n getModuleCount(): number {\n return this.moduleCount;\n }\n\n make(): void {\n this.makeImpl(false, this.getBestMaskPattern());\n }\n\n makeImpl(test: boolean, maskPattern: number): void {\n this.moduleCount = this.typeNumber * 4 + 17;\n this.modules = new Array(this.moduleCount);\n\n for (let row = 0; row < this.moduleCount; row++) {\n this.modules[row] = new Array(this.moduleCount);\n for (let col = 0; col < this.moduleCount; col++) {\n this.modules[row][col] = null as any;\n }\n }\n\n this.setupPositionProbePattern(0, 0);\n this.setupPositionProbePattern(this.moduleCount - 7, 0);\n this.setupPositionProbePattern(0, this.moduleCount - 7);\n this.setupPositionAdjustPattern();\n this.setupTimingPattern();\n this.setupTypeInfo(test, maskPattern);\n\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test);\n }\n\n if (this.dataCache === null) {\n this.dataCache = QRCodeModel.createData(\n this.typeNumber,\n this.errorCorrectLevel,\n this.dataList\n );\n }\n\n this.mapData(this.dataCache, maskPattern);\n }\n\n setupPositionProbePattern(row: number, col: number): void {\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || this.moduleCount <= row + r) continue;\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || this.moduleCount <= col + c) continue;\n\n if (\n (r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)\n ) {\n this.modules![row + r][col + c] = true;\n } else {\n this.modules![row + r][col + c] = false;\n }\n }\n }\n }\n\n getBestMaskPattern(): number {\n let minLostPoint = 0;\n let pattern = 0;\n\n for (let i = 0; i < 8; i++) {\n this.makeImpl(true, i);\n const lostPoint = Utils.getLostPoint(this);\n\n if (i === 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n }\n\n setupTimingPattern(): void {\n for (let r = 8; r < this.moduleCount - 8; r++) {\n if (this.modules![r][6] !== null) {\n continue;\n }\n this.modules![r][6] = r % 2 === 0;\n }\n\n for (let c = 8; c < this.moduleCount - 8; c++) {\n if (this.modules![6][c] !== null) {\n continue;\n }\n this.modules![6][c] = c % 2 === 0;\n }\n }\n\n setupPositionAdjustPattern(): void {\n const pos = Utils.getPatternPosition(this.typeNumber);\n\n for (let i = 0; i < pos.length; i++) {\n for (let j = 0; j < pos.length; j++) {\n const row = pos[i];\n const col = pos[j];\n\n if (this.modules![row][col] !== null) {\n continue;\n }\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (\n r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)\n ) {\n this.modules![row + r][col + c] = true;\n } else {\n this.modules![row + r][col + c] = false;\n }\n }\n }\n }\n }\n }\n\n setupTypeNumber(test: boolean): void {\n const bits = Utils.getBCHTypeNumber(this.typeNumber);\n\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) === 1;\n this.modules![Math.floor(i / 3)][(i % 3) + this.moduleCount - 8 - 3] = mod;\n }\n\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) === 1;\n this.modules![(i % 3) + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n }\n\n setupTypeInfo(test: boolean, maskPattern: number): void {\n const data = (this.errorCorrectLevel << 3) | maskPattern;\n const bits = Utils.getBCHTypeInfo(data);\n\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) === 1;\n\n if (i < 6) {\n this.modules![i][8] = mod;\n } else if (i < 8) {\n this.modules![i + 1][8] = mod;\n } else {\n this.modules![this.moduleCount - 15 + i][8] = mod;\n }\n }\n\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) === 1;\n\n if (i < 8) {\n this.modules![8][this.moduleCount - i - 1] = mod;\n } else if (i < 9) {\n this.modules![8][15 - i - 1 + 1] = mod;\n } else {\n this.modules![8][15 - i - 1] = mod;\n }\n }\n\n this.modules![this.moduleCount - 8][8] = !test;\n }\n\n mapData(data: number[], maskPattern: number): void {\n let inc = -1;\n let row = this.moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n\n for (let col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col === 6) col--;\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (this.modules![row][col - c] === null) {\n let dark = false;\n\n if (byteIndex < data.length) {\n dark = ((data[byteIndex] >>> bitIndex) & 1) === 1;\n }\n\n const mask = Utils.getMask(maskPattern, row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n this.modules![row][col - c] = dark;\n bitIndex--;\n\n if (bitIndex === -1) {\n byteIndex++;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || this.moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n }\n\n static PAD0 = 0xec;\n static PAD1 = 0x11;\n\n static createData(\n typeNumber: number,\n errorCorrectLevel: number,\n dataList: ByteData[]\n ): number[] {\n const rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n const buffer = new BitBuffer();\n\n for (let i = 0; i < dataList.length; i++) {\n const data = dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), Utils.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw new Error(\n `Code length overflow. (${buffer.getLengthInBits()}>${totalDataCount * 8})`\n );\n }\n\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(false);\n }\n\n while (true) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCodeModel.PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCodeModel.PAD1, 8);\n }\n\n return QRCodeModel.createBytes(buffer, rsBlocks);\n }\n\n static createBytes(buffer: BitBuffer, rsBlocks: RSBlock[]): number[] {\n let offset = 0;\n\n let maxDcCount = 0;\n let maxEcCount = 0;\n\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n\n for (let r = 0; r < rsBlocks.length; r++) {\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (let i = 0; i < dcdata[r].length; i++) {\n dcdata[r][i] = 0xff & buffer.buffer[i + offset];\n }\n offset += dcCount;\n\n const rsPoly = Utils.getErrorCorrectPolynomial(ecCount);\n const rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n\n for (let i = 0; i < ecdata[r].length; i++) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;\n }\n }\n\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n const data = new Array(totalCodeCount);\n let index = 0;\n\n for (let i = 0; i < maxDcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < dcdata[r].length) {\n data[index++] = dcdata[r][i];\n }\n }\n }\n\n for (let i = 0; i < maxEcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < ecdata[r].length) {\n data[index++] = ecdata[r][i];\n }\n }\n }\n\n return data;\n }\n}\n\n// SVG rendering backend\nclass SVGDrawing {\n private element: HTMLElement;\n private options: Required<QRCodeOptions>;\n\n constructor(el: HTMLElement, options: Required<QRCodeOptions>) {\n this.element = el;\n this.options = options;\n }\n\n draw(qrCode: QRCodeModel): void {\n const opts = this.options;\n const nCount = qrCode.getModuleCount();\n const margin = opts.margin || 0;\n const totalSize = nCount + margin * 2;\n\n this.clear();\n\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', `0 0 ${totalSize} ${totalSize}`);\n svg.setAttribute('width', '100%');\n svg.setAttribute('height', '100%');\n svg.setAttribute('fill', opts.colorLight);\n svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n this.element.appendChild(svg);\n\n svg.appendChild(this.createSVGElement('rect', {\n fill: opts.colorLight,\n width: '100%',\n height: '100%'\n }));\n\n svg.appendChild(this.createSVGElement('rect', {\n fill: opts.colorDark,\n width: '1',\n height: '1',\n id: 'template'\n }));\n\n for (let row = 0; row < nCount; row++) {\n for (let col = 0; col < nCount; col++) {\n if (qrCode.isDark(row, col)) {\n const use = this.createSVGElement('use', {\n x: String(margin + col),\n y: String(margin + row)\n });\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#template');\n svg.appendChild(use);\n }\n }\n }\n }\n\n clear(): void {\n while (this.element.hasChildNodes()) {\n this.element.removeChild(this.element.lastChild!);\n }\n }\n\n private createSVGElement(tag: string, attrs: Record<string, string>): SVGElement {\n const el = document.createElementNS('http://www.w3.org/2000/svg', tag);\n for (const k in attrs) {\n if (attrs.hasOwnProperty(k)) {\n el.setAttribute(k, attrs[k]);\n }\n }\n return el;\n }\n}\n\n// Canvas rendering backend\nclass CanvasDrawing {\n private element: HTMLElement;\n private options: Required<QRCodeOptions>;\n private canvas: HTMLCanvasElement;\n private context: CanvasRenderingContext2D | null;\n private painted: boolean = false;\n\n constructor(el: HTMLElement, options: Required<QRCodeOptions>) {\n this.element = el;\n this.options = options;\n\n this.canvas = document.createElement('canvas');\n this.canvas.width = options.width;\n this.canvas.height = options.height;\n el.appendChild(this.canvas);\n\n try {\n this.context = this.canvas.getContext('2d');\n } catch (e) {\n // Canvas not supported in test environment\n this.context = null;\n }\n }\n\n draw(qrCode: QRCodeModel): void {\n if (!this.context) return;\n\n const opts = this.options;\n const ctx = this.context;\n const margin = opts.margin || 0;\n\n const nCount = qrCode.getModuleCount();\n const drawSize = Math.min(opts.width, opts.height) - margin * 2;\n const nWidth = drawSize / nCount;\n const nHeight = drawSize / nCount;\n const nRoundedWidth = Math.round(nWidth);\n const nRoundedHeight = Math.round(nHeight);\n\n this.clear();\n\n // Fill background including quiet zone\n ctx.fillStyle = opts.colorLight;\n ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\n for (let row = 0; row < nCount; row++) {\n for (let col = 0; col < nCount; col++) {\n const bIsDark = qrCode.isDark(row, col);\n const nLeft = margin + col * nWidth;\n const nTop = margin + row * nHeight;\n const color = bIsDark ? opts.colorDark : opts.colorLight;\n\n ctx.fillStyle = color;\n\n if (opts.dotStyle === 'dots') {\n // Draw circles\n if (bIsDark) {\n const centerX = nLeft + nWidth / 2;\n const centerY = nTop + nHeight / 2;\n const radius = Math.min(nWidth, nHeight) / 2.2;\n ctx.beginPath();\n ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);\n ctx.fill();\n } else {\n ctx.fillRect(nLeft, nTop, nWidth, nHeight);\n }\n } else if (opts.dotStyle === 'rounded') {\n // Draw rounded rectangles\n if (bIsDark) {\n const radius = Math.min(nWidth, nHeight) / 4;\n ctx.beginPath();\n ctx.roundRect(nLeft, nTop, nWidth, nHeight, radius);\n ctx.fill();\n } else {\n ctx.fillRect(nLeft, nTop, nWidth, nHeight);\n }\n } else {\n // Square (default)\n ctx.fillRect(nLeft, nTop, nWidth, nHeight);\n\n ctx.strokeStyle = color;\n ctx.lineWidth = 1;\n ctx.strokeRect(\n Math.floor(nLeft) + 0.5,\n Math.floor(nTop) + 0.5,\n nRoundedWidth,\n nRoundedHeight\n );\n\n ctx.strokeRect(\n Math.ceil(nLeft) - 0.5,\n Math.ceil(nTop) - 0.5,\n nRoundedWidth,\n nRoundedHeight\n );\n }\n }\n }\n\n this.painted = true;\n }\n\n clear(): void {\n if (!this.context) return;\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.painted = false;\n }\n\n isPainted(): boolean {\n return this.painted;\n }\n}\n\n// Main QRCode class\nexport class QRCode {\n private element: HTMLElement;\n private options: Required<QRCodeOptions>;\n private qrCodeModel: QRCodeModel | null = null;\n private drawing: SVGDrawing | CanvasDrawing;\n\n static CorrectLevel = ErrorLevel;\n\n constructor(el: HTMLElement | string, vOption: QRCodeOptions | string) {\n this.options = {\n width: 256,\n height: 256,\n typeNumber: 4,\n colorDark: '#000000',\n colorLight: '#ffffff',\n correctLevel: 'H' as ErrorCorrectionLevel,\n useSVG: false,\n dotStyle: 'square',\n margin: 4\n };\n\n let opts = vOption;\n if (typeof opts === 'string') {\n opts = { text: opts } as any;\n }\n\n if (opts && typeof opts === 'object') {\n for (const i in opts) {\n (this.options as any)[i] = (opts as any)[i];\n }\n }\n\n if (typeof el === 'string') {\n el = document.getElementById(el)!;\n }\n\n this.element = el;\n\n const Drawing = this.options.useSVG ? SVGDrawing : CanvasDrawing;\n this.drawing = new Drawing(this.element, this.options);\n\n if ((vOption as any)?.text) {\n this.makeCode((vOption as any).text);\n }\n }\n\n makeCode(sText: string): void {\n const correctLevel = normalizeCorrectLevel(this.options.correctLevel);\n this.qrCodeModel = new QRCodeModel(\n getTypeNumber(sText, correctLevel),\n correctLevel\n );\n this.qrCodeModel.addData(sText);\n this.qrCodeModel.make();\n this.element.title = sText;\n this.drawing.draw(this.qrCodeModel);\n }\n\n clear(): void {\n this.drawing.clear();\n }\n}\n"],"names":[],"mappings":"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EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1E,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAClD,IAAA,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACxE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACpF,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACrF,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IAC9F,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACpF,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IAChG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACtF,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACpG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtF,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAClG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACrG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACpG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACrG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1F,IAAA,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC/E,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACzG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC5F,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACzG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACzG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC,EAAE,EAAE,GAAG,EAA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"}
@@ -234,11 +234,14 @@ let SniceReceipt = (() => {
234
234
  }
235
235
  renderItem(item) {
236
236
  const lineTotal = item.quantity * item.price;
237
- const hasDiscount = (item.discount || 0) > 0;
238
237
  const showQty = item.quantity !== 1;
239
238
  const isDetailed = this.variant === 'detailed';
240
239
  const hasSku = isDetailed && item.sku;
241
240
  const hasNote = isDetailed && item.note;
241
+ // SKU, notes, and per-item discounts are `detailed`-only (receipt.md).
242
+ // The discount still counts toward the subtotal in every variant; only its
243
+ // per-line rendering is gated.
244
+ const hasDiscount = isDetailed && (item.discount || 0) > 0;
242
245
  return html /*html*/ `
243
246
  <div class="receipt__item" part="item">
244
247
  <div class="receipt__item-info">