@wordpress/edit-site 6.33.3-next.36001005c.0 → 6.34.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 (667) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-editor/use-site-editor-settings.js +14 -2
  3. package/build/components/block-editor/use-site-editor-settings.js.map +3 -3
  4. package/build/components/canvas-loader/index.js +5 -8
  5. package/build/components/canvas-loader/index.js.map +3 -3
  6. package/build/components/dataviews-actions/index.js +8 -6
  7. package/build/components/dataviews-actions/index.js.map +2 -2
  8. package/build/components/editor/index.js +2 -40
  9. package/build/components/editor/index.js.map +3 -3
  10. package/build/components/layout/index.js +5 -7
  11. package/build/components/layout/index.js.map +3 -3
  12. package/build/components/page-patterns/fields.js +4 -3
  13. package/build/components/page-patterns/fields.js.map +3 -3
  14. package/build/components/page-templates/fields.js +21 -28
  15. package/build/components/page-templates/fields.js.map +3 -3
  16. package/build/components/page-templates/index.js +41 -31
  17. package/build/components/page-templates/index.js.map +2 -2
  18. package/build/components/{sidebar-global-styles-wrapper → sidebar-global-styles}/index.js +22 -46
  19. package/build/components/sidebar-global-styles/index.js.map +7 -0
  20. package/build/components/sidebar-navigation-screen-global-styles/content.js +38 -16
  21. package/build/components/sidebar-navigation-screen-global-styles/content.js.map +3 -3
  22. package/build/components/sidebar-navigation-screen-global-styles/index.js +6 -7
  23. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +3 -3
  24. package/build/components/sidebar-navigation-screen-main/index.js +0 -9
  25. package/build/components/sidebar-navigation-screen-main/index.js.map +3 -3
  26. package/build/components/sidebar-navigation-screen-templates-browse/content.js +8 -9
  27. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +2 -2
  28. package/build/components/site-editor-routes/stylebook.js +5 -3
  29. package/build/components/site-editor-routes/stylebook.js.map +3 -3
  30. package/build/components/site-editor-routes/styles.js +33 -11
  31. package/build/components/site-editor-routes/styles.js.map +3 -3
  32. package/build/components/welcome-guide/index.js +0 -2
  33. package/build/components/welcome-guide/index.js.map +3 -3
  34. package/build/hooks/commands/use-common-commands.js +10 -12
  35. package/build/hooks/commands/use-common-commands.js.map +3 -3
  36. package/build/hooks/commands/use-set-command-context.js +0 -5
  37. package/build/hooks/commands/use-set-command-context.js.map +2 -2
  38. package/build/index.js +0 -1
  39. package/build/index.js.map +2 -2
  40. package/build/posts.js +0 -1
  41. package/build/posts.js.map +2 -2
  42. package/build/store/private-actions.js +0 -8
  43. package/build/store/private-actions.js.map +2 -2
  44. package/build/store/private-selectors.js +0 -5
  45. package/build/store/private-selectors.js.map +2 -2
  46. package/build/store/reducer.js +0 -8
  47. package/build/store/reducer.js.map +2 -2
  48. package/build-module/components/block-editor/use-site-editor-settings.js +14 -2
  49. package/build-module/components/block-editor/use-site-editor-settings.js.map +2 -2
  50. package/build-module/components/canvas-loader/index.js +5 -8
  51. package/build-module/components/canvas-loader/index.js.map +2 -2
  52. package/build-module/components/dataviews-actions/index.js +8 -6
  53. package/build-module/components/dataviews-actions/index.js.map +2 -2
  54. package/build-module/components/editor/index.js +4 -46
  55. package/build-module/components/editor/index.js.map +2 -2
  56. package/build-module/components/layout/index.js +5 -7
  57. package/build-module/components/layout/index.js.map +2 -2
  58. package/build-module/components/page-patterns/fields.js +5 -7
  59. package/build-module/components/page-patterns/fields.js.map +2 -2
  60. package/build-module/components/page-templates/fields.js +25 -32
  61. package/build-module/components/page-templates/fields.js.map +2 -2
  62. package/build-module/components/page-templates/index.js +41 -31
  63. package/build-module/components/page-templates/index.js.map +2 -2
  64. package/build-module/components/{sidebar-global-styles-wrapper → sidebar-global-styles}/index.js +21 -41
  65. package/build-module/components/sidebar-global-styles/index.js.map +7 -0
  66. package/build-module/components/sidebar-navigation-screen-global-styles/content.js +42 -6
  67. package/build-module/components/sidebar-navigation-screen-global-styles/content.js.map +2 -2
  68. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +5 -6
  69. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +2 -2
  70. package/build-module/components/sidebar-navigation-screen-main/index.js +1 -10
  71. package/build-module/components/sidebar-navigation-screen-main/index.js.map +2 -2
  72. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +9 -10
  73. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +2 -2
  74. package/build-module/components/site-editor-routes/stylebook.js +3 -1
  75. package/build-module/components/site-editor-routes/stylebook.js.map +2 -2
  76. package/build-module/components/site-editor-routes/styles.js +31 -9
  77. package/build-module/components/site-editor-routes/styles.js.map +2 -2
  78. package/build-module/components/welcome-guide/index.js +0 -2
  79. package/build-module/components/welcome-guide/index.js.map +2 -2
  80. package/build-module/hooks/commands/use-common-commands.js +13 -12
  81. package/build-module/hooks/commands/use-common-commands.js.map +2 -2
  82. package/build-module/hooks/commands/use-set-command-context.js +0 -5
  83. package/build-module/hooks/commands/use-set-command-context.js.map +2 -2
  84. package/build-module/index.js +0 -1
  85. package/build-module/index.js.map +2 -2
  86. package/build-module/posts.js +0 -1
  87. package/build-module/posts.js.map +2 -2
  88. package/build-module/store/private-actions.js +0 -7
  89. package/build-module/store/private-actions.js.map +2 -2
  90. package/build-module/store/private-selectors.js +0 -4
  91. package/build-module/store/private-selectors.js.map +2 -2
  92. package/build-module/store/reducer.js +0 -8
  93. package/build-module/store/reducer.js.map +2 -2
  94. package/build-style/posts-rtl.css +0 -37
  95. package/build-style/posts.css +0 -37
  96. package/build-style/style-rtl.css +702 -706
  97. package/build-style/style.css +702 -706
  98. package/package.json +49 -45
  99. package/src/components/block-editor/use-site-editor-settings.js +21 -2
  100. package/src/components/canvas-loader/index.js +5 -9
  101. package/src/components/dataviews-actions/index.js +12 -10
  102. package/src/components/editor/index.js +2 -50
  103. package/src/components/layout/index.js +6 -10
  104. package/src/components/page-patterns/fields.js +5 -7
  105. package/src/components/page-templates/fields.js +29 -35
  106. package/src/components/page-templates/index.js +51 -38
  107. package/src/components/{sidebar-global-styles-wrapper → sidebar-global-styles}/index.js +16 -48
  108. package/src/components/{sidebar-global-styles-wrapper → sidebar-global-styles}/style.scss +3 -3
  109. package/src/components/sidebar-navigation-screen/style.scss +5 -12
  110. package/src/components/sidebar-navigation-screen-global-styles/content.js +34 -6
  111. package/src/components/sidebar-navigation-screen-global-styles/index.js +6 -9
  112. package/src/components/sidebar-navigation-screen-main/index.js +1 -12
  113. package/src/components/sidebar-navigation-screen-templates-browse/content.js +9 -10
  114. package/src/components/site-editor-routes/stylebook.js +4 -1
  115. package/src/components/site-editor-routes/styles.js +35 -9
  116. package/src/components/welcome-guide/index.js +0 -2
  117. package/src/components/welcome-guide/style.scss +1 -2
  118. package/src/hooks/commands/use-common-commands.js +19 -12
  119. package/src/hooks/commands/use-set-command-context.js +0 -11
  120. package/src/index.js +0 -1
  121. package/src/posts.js +0 -1
  122. package/src/posts.scss +0 -1
  123. package/src/store/private-actions.js +0 -14
  124. package/src/store/private-selectors.js +0 -11
  125. package/src/store/reducer.js +0 -18
  126. package/src/style.scss +2 -9
  127. package/tsconfig.json +2 -11
  128. package/build/components/editor-canvas-container/index.js +0 -139
  129. package/build/components/editor-canvas-container/index.js.map +0 -7
  130. package/build/components/global-styles/background-panel.js +0 -62
  131. package/build/components/global-styles/background-panel.js.map +0 -7
  132. package/build/components/global-styles/block-preview-panel.js +0 -87
  133. package/build/components/global-styles/block-preview-panel.js.map +0 -7
  134. package/build/components/global-styles/color-indicator-wrapper.js +0 -50
  135. package/build/components/global-styles/color-indicator-wrapper.js.map +0 -7
  136. package/build/components/global-styles/color-palette-panel.js +0 -133
  137. package/build/components/global-styles/color-palette-panel.js.map +0 -7
  138. package/build/components/global-styles/confirm-reset-shadow-dialog.js +0 -55
  139. package/build/components/global-styles/confirm-reset-shadow-dialog.js.map +0 -7
  140. package/build/components/global-styles/dimensions-panel.js +0 -92
  141. package/build/components/global-styles/dimensions-panel.js.map +0 -7
  142. package/build/components/global-styles/font-families.js +0 -114
  143. package/build/components/global-styles/font-families.js.map +0 -7
  144. package/build/components/global-styles/font-family-item.js +0 -48
  145. package/build/components/global-styles/font-family-item.js.map +0 -7
  146. package/build/components/global-styles/font-library-modal/collection-font-variant.js +0 -75
  147. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +0 -7
  148. package/build/components/global-styles/font-library-modal/context.js +0 -386
  149. package/build/components/global-styles/font-library-modal/context.js.map +0 -7
  150. package/build/components/global-styles/font-library-modal/font-card.js +0 -76
  151. package/build/components/global-styles/font-library-modal/font-card.js.map +0 -7
  152. package/build/components/global-styles/font-library-modal/font-collection.js +0 -504
  153. package/build/components/global-styles/font-library-modal/font-collection.js.map +0 -7
  154. package/build/components/global-styles/font-library-modal/font-demo.js +0 -108
  155. package/build/components/global-styles/font-library-modal/font-demo.js.map +0 -7
  156. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +0 -58
  157. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +0 -7
  158. package/build/components/global-styles/font-library-modal/index.js +0 -110
  159. package/build/components/global-styles/font-library-modal/index.js.map +0 -7
  160. package/build/components/global-styles/font-library-modal/installed-fonts.js +0 -455
  161. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +0 -7
  162. package/build/components/global-styles/font-library-modal/library-font-details.js +0 -63
  163. package/build/components/global-styles/font-library-modal/library-font-details.js.map +0 -7
  164. package/build/components/global-styles/font-library-modal/library-font-variant.js +0 -78
  165. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +0 -7
  166. package/build/components/global-styles/font-library-modal/resolvers.js +0 -115
  167. package/build/components/global-styles/font-library-modal/resolvers.js.map +0 -7
  168. package/build/components/global-styles/font-library-modal/upload-fonts.js +0 -205
  169. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +0 -7
  170. package/build/components/global-styles/font-library-modal/utils/constants.js +0 -49
  171. package/build/components/global-styles/font-library-modal/utils/constants.js.map +0 -7
  172. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js +0 -39
  173. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +0 -7
  174. package/build/components/global-styles/font-library-modal/utils/fonts-outline.js +0 -51
  175. package/build/components/global-styles/font-library-modal/utils/fonts-outline.js.map +0 -7
  176. package/build/components/global-styles/font-library-modal/utils/index.js +0 -277
  177. package/build/components/global-styles/font-library-modal/utils/index.js.map +0 -7
  178. package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js +0 -42
  179. package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +0 -7
  180. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +0 -117
  181. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +0 -7
  182. package/build/components/global-styles/font-library-modal/utils/sort-font-faces.js +0 -56
  183. package/build/components/global-styles/font-library-modal/utils/sort-font-faces.js.map +0 -7
  184. package/build/components/global-styles/font-library-modal/utils/toggleFont.js +0 -63
  185. package/build/components/global-styles/font-library-modal/utils/toggleFont.js.map +0 -7
  186. package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +0 -60
  187. package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +0 -7
  188. package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +0 -55
  189. package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +0 -7
  190. package/build/components/global-styles/font-sizes/font-size-preview.js +0 -51
  191. package/build/components/global-styles/font-sizes/font-size-preview.js.map +0 -7
  192. package/build/components/global-styles/font-sizes/font-size.js +0 -260
  193. package/build/components/global-styles/font-sizes/font-size.js.map +0 -7
  194. package/build/components/global-styles/font-sizes/font-sizes-count.js +0 -50
  195. package/build/components/global-styles/font-sizes/font-sizes-count.js.map +0 -7
  196. package/build/components/global-styles/font-sizes/font-sizes.js +0 -220
  197. package/build/components/global-styles/font-sizes/font-sizes.js.map +0 -7
  198. package/build/components/global-styles/font-sizes/rename-font-size-dialog.js +0 -90
  199. package/build/components/global-styles/font-sizes/rename-font-size-dialog.js.map +0 -7
  200. package/build/components/global-styles/gradients-palette-panel.js +0 -144
  201. package/build/components/global-styles/gradients-palette-panel.js.map +0 -7
  202. package/build/components/global-styles/header.js +0 -54
  203. package/build/components/global-styles/header.js.map +0 -7
  204. package/build/components/global-styles/highlighted-colors.js +0 -57
  205. package/build/components/global-styles/highlighted-colors.js.map +0 -7
  206. package/build/components/global-styles/hooks.js +0 -113
  207. package/build/components/global-styles/hooks.js.map +0 -7
  208. package/build/components/global-styles/icon-with-current-color.js +0 -53
  209. package/build/components/global-styles/icon-with-current-color.js.map +0 -7
  210. package/build/components/global-styles/index.js +0 -39
  211. package/build/components/global-styles/index.js.map +0 -7
  212. package/build/components/global-styles/navigation-button.js +0 -48
  213. package/build/components/global-styles/navigation-button.js.map +0 -7
  214. package/build/components/global-styles/palette.js +0 -86
  215. package/build/components/global-styles/palette.js.map +0 -7
  216. package/build/components/global-styles/preset-colors.js +0 -40
  217. package/build/components/global-styles/preset-colors.js.map +0 -7
  218. package/build/components/global-styles/preview-colors.js +0 -82
  219. package/build/components/global-styles/preview-colors.js.map +0 -7
  220. package/build/components/global-styles/preview-styles.js +0 -214
  221. package/build/components/global-styles/preview-styles.js.map +0 -7
  222. package/build/components/global-styles/preview-typography.js +0 -68
  223. package/build/components/global-styles/preview-typography.js.map +0 -7
  224. package/build/components/global-styles/preview-wrapper.js +0 -101
  225. package/build/components/global-styles/preview-wrapper.js.map +0 -7
  226. package/build/components/global-styles/root-menu.js +0 -72
  227. package/build/components/global-styles/root-menu.js.map +0 -7
  228. package/build/components/global-styles/screen-background.js +0 -59
  229. package/build/components/global-styles/screen-background.js.map +0 -7
  230. package/build/components/global-styles/screen-block-list.js +0 -170
  231. package/build/components/global-styles/screen-block-list.js.map +0 -7
  232. package/build/components/global-styles/screen-block.js +0 -316
  233. package/build/components/global-styles/screen-block.js.map +0 -7
  234. package/build/components/global-styles/screen-color-palette.js +0 -64
  235. package/build/components/global-styles/screen-color-palette.js.map +0 -7
  236. package/build/components/global-styles/screen-colors.js +0 -81
  237. package/build/components/global-styles/screen-colors.js.map +0 -7
  238. package/build/components/global-styles/screen-css.js +0 -92
  239. package/build/components/global-styles/screen-css.js.map +0 -7
  240. package/build/components/global-styles/screen-layout.js +0 -51
  241. package/build/components/global-styles/screen-layout.js.map +0 -7
  242. package/build/components/global-styles/screen-revisions/index.js +0 -179
  243. package/build/components/global-styles/screen-revisions/index.js.map +0 -7
  244. package/build/components/global-styles/screen-revisions/revisions-buttons.js +0 -192
  245. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +0 -7
  246. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -148
  247. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +0 -7
  248. package/build/components/global-styles/screen-root.js +0 -99
  249. package/build/components/global-styles/screen-root.js.map +0 -7
  250. package/build/components/global-styles/screen-shadows.js +0 -49
  251. package/build/components/global-styles/screen-shadows.js.map +0 -7
  252. package/build/components/global-styles/screen-style-variations.js +0 -70
  253. package/build/components/global-styles/screen-style-variations.js.map +0 -7
  254. package/build/components/global-styles/screen-typography-element.js +0 -167
  255. package/build/components/global-styles/screen-typography-element.js.map +0 -7
  256. package/build/components/global-styles/screen-typography.js +0 -68
  257. package/build/components/global-styles/screen-typography.js.map +0 -7
  258. package/build/components/global-styles/shadow-utils.js +0 -125
  259. package/build/components/global-styles/shadow-utils.js.map +0 -7
  260. package/build/components/global-styles/shadows-edit-panel.js +0 -501
  261. package/build/components/global-styles/shadows-edit-panel.js.map +0 -7
  262. package/build/components/global-styles/shadows-panel.js +0 -206
  263. package/build/components/global-styles/shadows-panel.js.map +0 -7
  264. package/build/components/global-styles/size-control/index.js +0 -80
  265. package/build/components/global-styles/size-control/index.js.map +0 -7
  266. package/build/components/global-styles/style-variations-container.js +0 -124
  267. package/build/components/global-styles/style-variations-container.js.map +0 -7
  268. package/build/components/global-styles/subtitle.js +0 -37
  269. package/build/components/global-styles/subtitle.js.map +0 -7
  270. package/build/components/global-styles/typeset.js +0 -78
  271. package/build/components/global-styles/typeset.js.map +0 -7
  272. package/build/components/global-styles/typography-elements.js +0 -123
  273. package/build/components/global-styles/typography-elements.js.map +0 -7
  274. package/build/components/global-styles/typography-example.js +0 -81
  275. package/build/components/global-styles/typography-example.js.map +0 -7
  276. package/build/components/global-styles/typography-panel.js +0 -69
  277. package/build/components/global-styles/typography-panel.js.map +0 -7
  278. package/build/components/global-styles/typography-preview.js +0 -80
  279. package/build/components/global-styles/typography-preview.js.map +0 -7
  280. package/build/components/global-styles/ui.js +0 -355
  281. package/build/components/global-styles/ui.js.map +0 -7
  282. package/build/components/global-styles/utils.js +0 -92
  283. package/build/components/global-styles/utils.js.map +0 -7
  284. package/build/components/global-styles/variations/variation.js +0 -118
  285. package/build/components/global-styles/variations/variation.js.map +0 -7
  286. package/build/components/global-styles/variations/variations-color.js +0 -61
  287. package/build/components/global-styles/variations/variations-color.js.map +0 -7
  288. package/build/components/global-styles/variations/variations-panel.js +0 -71
  289. package/build/components/global-styles/variations/variations-panel.js.map +0 -7
  290. package/build/components/global-styles/variations/variations-typography.js +0 -75
  291. package/build/components/global-styles/variations/variations-typography.js.map +0 -7
  292. package/build/components/global-styles-renderer/index.js +0 -55
  293. package/build/components/global-styles-renderer/index.js.map +0 -7
  294. package/build/components/global-styles-sidebar/default-sidebar.js +0 -68
  295. package/build/components/global-styles-sidebar/default-sidebar.js.map +0 -7
  296. package/build/components/global-styles-sidebar/index.js +0 -202
  297. package/build/components/global-styles-sidebar/index.js.map +0 -7
  298. package/build/components/revisions/index.js +0 -120
  299. package/build/components/revisions/index.js.map +0 -7
  300. package/build/components/sidebar-global-styles-wrapper/index.js.map +0 -7
  301. package/build/components/style-book/categories.js +0 -86
  302. package/build/components/style-book/categories.js.map +0 -7
  303. package/build/components/style-book/color-examples.js +0 -65
  304. package/build/components/style-book/color-examples.js.map +0 -7
  305. package/build/components/style-book/constants.js +0 -319
  306. package/build/components/style-book/constants.js.map +0 -7
  307. package/build/components/style-book/duotone-examples.js +0 -69
  308. package/build/components/style-book/duotone-examples.js.map +0 -7
  309. package/build/components/style-book/examples.js +0 -237
  310. package/build/components/style-book/examples.js.map +0 -7
  311. package/build/components/style-book/index.js +0 -640
  312. package/build/components/style-book/index.js.map +0 -7
  313. package/build/components/style-book/types.js +0 -17
  314. package/build/components/style-book/types.js.map +0 -7
  315. package/build/components/welcome-guide/styles.js +0 -145
  316. package/build/components/welcome-guide/styles.js.map +0 -7
  317. package/build/hooks/index.js +0 -3
  318. package/build/hooks/index.js.map +0 -7
  319. package/build/hooks/push-changes-to-global-styles/index.js +0 -319
  320. package/build/hooks/push-changes-to-global-styles/index.js.map +0 -7
  321. package/build/hooks/use-global-styles-output.js +0 -77
  322. package/build/hooks/use-global-styles-output.js.map +0 -7
  323. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +0 -126
  324. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +0 -7
  325. package/build/utils/set-nested-value.js +0 -43
  326. package/build/utils/set-nested-value.js.map +0 -7
  327. package/build-module/components/editor-canvas-container/index.js +0 -120
  328. package/build-module/components/editor-canvas-container/index.js.map +0 -7
  329. package/build-module/components/global-styles/background-panel.js +0 -38
  330. package/build-module/components/global-styles/background-panel.js.map +0 -7
  331. package/build-module/components/global-styles/block-preview-panel.js +0 -67
  332. package/build-module/components/global-styles/block-preview-panel.js.map +0 -7
  333. package/build-module/components/global-styles/color-indicator-wrapper.js +0 -20
  334. package/build-module/components/global-styles/color-indicator-wrapper.js.map +0 -7
  335. package/build-module/components/global-styles/color-palette-panel.js +0 -107
  336. package/build-module/components/global-styles/color-palette-panel.js.map +0 -7
  337. package/build-module/components/global-styles/confirm-reset-shadow-dialog.js +0 -35
  338. package/build-module/components/global-styles/confirm-reset-shadow-dialog.js.map +0 -7
  339. package/build-module/components/global-styles/dimensions-panel.js +0 -72
  340. package/build-module/components/global-styles/dimensions-panel.js.map +0 -7
  341. package/build-module/components/global-styles/font-families.js +0 -92
  342. package/build-module/components/global-styles/font-families.js.map +0 -7
  343. package/build-module/components/global-styles/font-family-item.js +0 -32
  344. package/build-module/components/global-styles/font-family-item.js.map +0 -7
  345. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +0 -45
  346. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +0 -7
  347. package/build-module/components/global-styles/font-library-modal/context.js +0 -372
  348. package/build-module/components/global-styles/font-library-modal/context.js.map +0 -7
  349. package/build-module/components/global-styles/font-library-modal/font-card.js +0 -53
  350. package/build-module/components/global-styles/font-library-modal/font-card.js.map +0 -7
  351. package/build-module/components/global-styles/font-library-modal/font-collection.js +0 -505
  352. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +0 -7
  353. package/build-module/components/global-styles/font-library-modal/font-demo.js +0 -91
  354. package/build-module/components/global-styles/font-library-modal/font-demo.js.map +0 -7
  355. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +0 -45
  356. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +0 -7
  357. package/build-module/components/global-styles/font-library-modal/index.js +0 -83
  358. package/build-module/components/global-styles/font-library-modal/index.js.map +0 -7
  359. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +0 -444
  360. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +0 -7
  361. package/build-module/components/global-styles/font-library-modal/library-font-details.js +0 -36
  362. package/build-module/components/global-styles/font-library-modal/library-font-details.js.map +0 -7
  363. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +0 -48
  364. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +0 -7
  365. package/build-module/components/global-styles/font-library-modal/resolvers.js +0 -76
  366. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +0 -7
  367. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +0 -185
  368. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +0 -7
  369. package/build-module/components/global-styles/font-library-modal/utils/constants.js +0 -23
  370. package/build-module/components/global-styles/font-library-modal/utils/constants.js.map +0 -7
  371. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +0 -19
  372. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +0 -7
  373. package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js +0 -26
  374. package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js.map +0 -7
  375. package/build-module/components/global-styles/font-library-modal/utils/index.js +0 -241
  376. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +0 -7
  377. package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js +0 -22
  378. package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +0 -7
  379. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +0 -90
  380. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +0 -7
  381. package/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js +0 -32
  382. package/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js.map +0 -7
  383. package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js +0 -39
  384. package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js.map +0 -7
  385. package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +0 -40
  386. package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +0 -7
  387. package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +0 -35
  388. package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +0 -7
  389. package/build-module/components/global-styles/font-sizes/font-size-preview.js +0 -34
  390. package/build-module/components/global-styles/font-sizes/font-size-preview.js.map +0 -7
  391. package/build-module/components/global-styles/font-sizes/font-size.js +0 -240
  392. package/build-module/components/global-styles/font-sizes/font-size.js.map +0 -7
  393. package/build-module/components/global-styles/font-sizes/font-sizes-count.js +0 -25
  394. package/build-module/components/global-styles/font-sizes/font-sizes-count.js.map +0 -7
  395. package/build-module/components/global-styles/font-sizes/font-sizes.js +0 -205
  396. package/build-module/components/global-styles/font-sizes/font-sizes.js.map +0 -7
  397. package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js +0 -76
  398. package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js.map +0 -7
  399. package/build-module/components/global-styles/gradients-palette-panel.js +0 -119
  400. package/build-module/components/global-styles/gradients-palette-panel.js.map +0 -7
  401. package/build-module/components/global-styles/header.js +0 -41
  402. package/build-module/components/global-styles/header.js.map +0 -7
  403. package/build-module/components/global-styles/highlighted-colors.js +0 -37
  404. package/build-module/components/global-styles/highlighted-colors.js.map +0 -7
  405. package/build-module/components/global-styles/hooks.js +0 -77
  406. package/build-module/components/global-styles/hooks.js.map +0 -7
  407. package/build-module/components/global-styles/icon-with-current-color.js +0 -19
  408. package/build-module/components/global-styles/icon-with-current-color.js.map +0 -7
  409. package/build-module/components/global-styles/index.js +0 -5
  410. package/build-module/components/global-styles/index.js.map +0 -7
  411. package/build-module/components/global-styles/navigation-button.js +0 -28
  412. package/build-module/components/global-styles/navigation-button.js.map +0 -7
  413. package/build-module/components/global-styles/palette.js +0 -63
  414. package/build-module/components/global-styles/palette.js.map +0 -7
  415. package/build-module/components/global-styles/preset-colors.js +0 -20
  416. package/build-module/components/global-styles/preset-colors.js.map +0 -7
  417. package/build-module/components/global-styles/preview-colors.js +0 -55
  418. package/build-module/components/global-styles/preview-colors.js.map +0 -7
  419. package/build-module/components/global-styles/preview-styles.js +0 -188
  420. package/build-module/components/global-styles/preview-styles.js.map +0 -7
  421. package/build-module/components/global-styles/preview-typography.js +0 -38
  422. package/build-module/components/global-styles/preview-typography.js.map +0 -7
  423. package/build-module/components/global-styles/preview-wrapper.js +0 -85
  424. package/build-module/components/global-styles/preview-wrapper.js.map +0 -7
  425. package/build-module/components/global-styles/root-menu.js +0 -58
  426. package/build-module/components/global-styles/root-menu.js.map +0 -7
  427. package/build-module/components/global-styles/screen-background.js +0 -29
  428. package/build-module/components/global-styles/screen-background.js.map +0 -7
  429. package/build-module/components/global-styles/screen-block-list.js +0 -150
  430. package/build-module/components/global-styles/screen-block-list.js.map +0 -7
  431. package/build-module/components/global-styles/screen-block.js +0 -293
  432. package/build-module/components/global-styles/screen-block.js.map +0 -7
  433. package/build-module/components/global-styles/screen-color-palette.js +0 -34
  434. package/build-module/components/global-styles/screen-color-palette.js.map +0 -7
  435. package/build-module/components/global-styles/screen-colors.js +0 -51
  436. package/build-module/components/global-styles/screen-colors.js.map +0 -7
  437. package/build-module/components/global-styles/screen-css.js +0 -62
  438. package/build-module/components/global-styles/screen-css.js.map +0 -7
  439. package/build-module/components/global-styles/screen-layout.js +0 -21
  440. package/build-module/components/global-styles/screen-layout.js.map +0 -7
  441. package/build-module/components/global-styles/screen-revisions/index.js +0 -155
  442. package/build-module/components/global-styles/screen-revisions/index.js.map +0 -7
  443. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +0 -172
  444. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +0 -7
  445. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -128
  446. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +0 -7
  447. package/build-module/components/global-styles/screen-root.js +0 -79
  448. package/build-module/components/global-styles/screen-root.js.map +0 -7
  449. package/build-module/components/global-styles/screen-shadows.js +0 -14
  450. package/build-module/components/global-styles/screen-shadows.js.map +0 -7
  451. package/build-module/components/global-styles/screen-style-variations.js +0 -43
  452. package/build-module/components/global-styles/screen-style-variations.js.map +0 -7
  453. package/build-module/components/global-styles/screen-typography-element.js +0 -141
  454. package/build-module/components/global-styles/screen-typography-element.js.map +0 -7
  455. package/build-module/components/global-styles/screen-typography.js +0 -38
  456. package/build-module/components/global-styles/screen-typography.js.map +0 -7
  457. package/build-module/components/global-styles/shadow-utils.js +0 -98
  458. package/build-module/components/global-styles/shadow-utils.js.map +0 -7
  459. package/build-module/components/global-styles/shadows-edit-panel.js +0 -500
  460. package/build-module/components/global-styles/shadows-edit-panel.js.map +0 -7
  461. package/build-module/components/global-styles/shadows-panel.js +0 -185
  462. package/build-module/components/global-styles/shadows-panel.js.map +0 -7
  463. package/build-module/components/global-styles/size-control/index.js +0 -70
  464. package/build-module/components/global-styles/size-control/index.js.map +0 -7
  465. package/build-module/components/global-styles/style-variations-container.js +0 -94
  466. package/build-module/components/global-styles/style-variations-container.js.map +0 -7
  467. package/build-module/components/global-styles/subtitle.js +0 -17
  468. package/build-module/components/global-styles/subtitle.js.map +0 -7
  469. package/build-module/components/global-styles/typeset.js +0 -54
  470. package/build-module/components/global-styles/typeset.js.map +0 -7
  471. package/build-module/components/global-styles/typography-elements.js +0 -98
  472. package/build-module/components/global-styles/typography-elements.js.map +0 -7
  473. package/build-module/components/global-styles/typography-example.js +0 -61
  474. package/build-module/components/global-styles/typography-example.js.map +0 -7
  475. package/build-module/components/global-styles/typography-panel.js +0 -49
  476. package/build-module/components/global-styles/typography-panel.js.map +0 -7
  477. package/build-module/components/global-styles/typography-preview.js +0 -60
  478. package/build-module/components/global-styles/typography-preview.js.map +0 -7
  479. package/build-module/components/global-styles/ui.js +0 -334
  480. package/build-module/components/global-styles/ui.js.map +0 -7
  481. package/build-module/components/global-styles/utils.js +0 -66
  482. package/build-module/components/global-styles/utils.js.map +0 -7
  483. package/build-module/components/global-styles/variations/variation.js +0 -88
  484. package/build-module/components/global-styles/variations/variation.js.map +0 -7
  485. package/build-module/components/global-styles/variations/variations-color.js +0 -34
  486. package/build-module/components/global-styles/variations/variations-color.js.map +0 -7
  487. package/build-module/components/global-styles/variations/variations-panel.js +0 -46
  488. package/build-module/components/global-styles/variations/variations-panel.js.map +0 -7
  489. package/build-module/components/global-styles/variations/variations-typography.js +0 -48
  490. package/build-module/components/global-styles/variations/variations-typography.js.map +0 -7
  491. package/build-module/components/global-styles-renderer/index.js +0 -31
  492. package/build-module/components/global-styles-renderer/index.js.map +0 -7
  493. package/build-module/components/global-styles-sidebar/default-sidebar.js +0 -48
  494. package/build-module/components/global-styles-sidebar/default-sidebar.js.map +0 -7
  495. package/build-module/components/global-styles-sidebar/index.js +0 -175
  496. package/build-module/components/global-styles-sidebar/index.js.map +0 -7
  497. package/build-module/components/revisions/index.js +0 -96
  498. package/build-module/components/revisions/index.js.map +0 -7
  499. package/build-module/components/sidebar-global-styles-wrapper/index.js.map +0 -7
  500. package/build-module/components/style-book/categories.js +0 -64
  501. package/build-module/components/style-book/categories.js.map +0 -7
  502. package/build-module/components/style-book/color-examples.js +0 -38
  503. package/build-module/components/style-book/color-examples.js.map +0 -7
  504. package/build-module/components/style-book/constants.js +0 -290
  505. package/build-module/components/style-book/constants.js.map +0 -7
  506. package/build-module/components/style-book/duotone-examples.js +0 -49
  507. package/build-module/components/style-book/duotone-examples.js.map +0 -7
  508. package/build-module/components/style-book/examples.js +0 -208
  509. package/build-module/components/style-book/examples.js.map +0 -7
  510. package/build-module/components/style-book/index.js +0 -631
  511. package/build-module/components/style-book/index.js.map +0 -7
  512. package/build-module/components/style-book/types.js +0 -1
  513. package/build-module/components/style-book/types.js.map +0 -7
  514. package/build-module/components/welcome-guide/styles.js +0 -115
  515. package/build-module/components/welcome-guide/styles.js.map +0 -7
  516. package/build-module/hooks/index.js +0 -2
  517. package/build-module/hooks/index.js.map +0 -7
  518. package/build-module/hooks/push-changes-to-global-styles/index.js +0 -305
  519. package/build-module/hooks/push-changes-to-global-styles/index.js.map +0 -7
  520. package/build-module/hooks/use-global-styles-output.js +0 -52
  521. package/build-module/hooks/use-global-styles-output.js.map +0 -7
  522. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +0 -99
  523. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +0 -7
  524. package/build-module/utils/set-nested-value.js +0 -23
  525. package/build-module/utils/set-nested-value.js.map +0 -7
  526. package/build-types/components/style-book/categories.d.ts +0 -18
  527. package/build-types/components/style-book/categories.d.ts.map +0 -1
  528. package/build-types/components/style-book/color-examples.d.ts +0 -7
  529. package/build-types/components/style-book/color-examples.d.ts.map +0 -1
  530. package/build-types/components/style-book/constants.d.ts +0 -11
  531. package/build-types/components/style-book/constants.d.ts.map +0 -1
  532. package/build-types/components/style-book/duotone-examples.d.ts +0 -9
  533. package/build-types/components/style-book/duotone-examples.d.ts.map +0 -1
  534. package/build-types/components/style-book/examples.d.ts +0 -12
  535. package/build-types/components/style-book/examples.d.ts.map +0 -1
  536. package/build-types/components/style-book/types.d.ts +0 -72
  537. package/build-types/components/style-book/types.d.ts.map +0 -1
  538. package/lib/inflate.js +0 -3333
  539. package/lib/lib-font.browser.js +0 -3861
  540. package/lib/unbrotli.js +0 -2039
  541. package/src/components/editor-canvas-container/index.js +0 -149
  542. package/src/components/editor-canvas-container/style.scss +0 -43
  543. package/src/components/global-styles/README.md +0 -17
  544. package/src/components/global-styles/background-panel.js +0 -55
  545. package/src/components/global-styles/block-preview-panel.js +0 -81
  546. package/src/components/global-styles/color-indicator-wrapper.js +0 -23
  547. package/src/components/global-styles/color-palette-panel.js +0 -110
  548. package/src/components/global-styles/confirm-reset-shadow-dialog.js +0 -37
  549. package/src/components/global-styles/dimensions-panel.js +0 -86
  550. package/src/components/global-styles/font-families.js +0 -128
  551. package/src/components/global-styles/font-family-item.js +0 -47
  552. package/src/components/global-styles/font-library-modal/collection-font-variant.js +0 -51
  553. package/src/components/global-styles/font-library-modal/context.js +0 -540
  554. package/src/components/global-styles/font-library-modal/font-card.js +0 -67
  555. package/src/components/global-styles/font-library-modal/font-collection.js +0 -575
  556. package/src/components/global-styles/font-library-modal/font-demo.js +0 -116
  557. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +0 -57
  558. package/src/components/global-styles/font-library-modal/index.js +0 -106
  559. package/src/components/global-styles/font-library-modal/installed-fonts.js +0 -518
  560. package/src/components/global-styles/font-library-modal/library-font-details.js +0 -45
  561. package/src/components/global-styles/font-library-modal/library-font-variant.js +0 -60
  562. package/src/components/global-styles/font-library-modal/resolvers.js +0 -78
  563. package/src/components/global-styles/font-library-modal/style.scss +0 -220
  564. package/src/components/global-styles/font-library-modal/upload-fonts.js +0 -253
  565. package/src/components/global-styles/font-library-modal/utils/constants.js +0 -23
  566. package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +0 -35
  567. package/src/components/global-styles/font-library-modal/utils/fonts-outline.js +0 -22
  568. package/src/components/global-styles/font-library-modal/utils/index.js +0 -333
  569. package/src/components/global-styles/font-library-modal/utils/make-families-from-faces.js +0 -27
  570. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +0 -152
  571. package/src/components/global-styles/font-library-modal/utils/sort-font-faces.js +0 -37
  572. package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +0 -99
  573. package/src/components/global-styles/font-library-modal/utils/test/fonts-outline.spec.js +0 -109
  574. package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +0 -42
  575. package/src/components/global-styles/font-library-modal/utils/test/getFontFaceVariantName.spec.js +0 -30
  576. package/src/components/global-styles/font-library-modal/utils/test/isUrlEncoded.spec.js +0 -31
  577. package/src/components/global-styles/font-library-modal/utils/test/makeFamiliesFromFaces.spec.js +0 -57
  578. package/src/components/global-styles/font-library-modal/utils/test/mergeFontFaces.spec.js +0 -56
  579. package/src/components/global-styles/font-library-modal/utils/test/mergeFontFamilies.spec.js +0 -108
  580. package/src/components/global-styles/font-library-modal/utils/test/preview-styles.spec.js +0 -216
  581. package/src/components/global-styles/font-library-modal/utils/test/setUIValuesNeeded.spec.js +0 -41
  582. package/src/components/global-styles/font-library-modal/utils/test/sort-font-faces.js +0 -74
  583. package/src/components/global-styles/font-library-modal/utils/test/toggleFont.spec.js +0 -141
  584. package/src/components/global-styles/font-library-modal/utils/toggleFont.js +0 -90
  585. package/src/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +0 -43
  586. package/src/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +0 -37
  587. package/src/components/global-styles/font-sizes/font-size-preview.js +0 -43
  588. package/src/components/global-styles/font-sizes/font-size.js +0 -265
  589. package/src/components/global-styles/font-sizes/font-sizes-count.js +0 -37
  590. package/src/components/global-styles/font-sizes/font-sizes.js +0 -261
  591. package/src/components/global-styles/font-sizes/rename-font-size-dialog.js +0 -70
  592. package/src/components/global-styles/gradients-palette-panel.js +0 -123
  593. package/src/components/global-styles/header.js +0 -48
  594. package/src/components/global-styles/highlighted-colors.js +0 -39
  595. package/src/components/global-styles/hooks.js +0 -111
  596. package/src/components/global-styles/icon-with-current-color.js +0 -21
  597. package/src/components/global-styles/index.js +0 -1
  598. package/src/components/global-styles/navigation-button.js +0 -38
  599. package/src/components/global-styles/palette.js +0 -90
  600. package/src/components/global-styles/preset-colors.js +0 -18
  601. package/src/components/global-styles/preview-colors.js +0 -58
  602. package/src/components/global-styles/preview-styles.js +0 -185
  603. package/src/components/global-styles/preview-typography.js +0 -39
  604. package/src/components/global-styles/preview-wrapper.js +0 -126
  605. package/src/components/global-styles/root-menu.js +0 -84
  606. package/src/components/global-styles/screen-background.js +0 -37
  607. package/src/components/global-styles/screen-block-list.js +0 -187
  608. package/src/components/global-styles/screen-block.js +0 -358
  609. package/src/components/global-styles/screen-color-palette.js +0 -42
  610. package/src/components/global-styles/screen-colors.js +0 -55
  611. package/src/components/global-styles/screen-css.js +0 -67
  612. package/src/components/global-styles/screen-layout.js +0 -30
  613. package/src/components/global-styles/screen-revisions/index.js +0 -202
  614. package/src/components/global-styles/screen-revisions/revisions-buttons.js +0 -238
  615. package/src/components/global-styles/screen-revisions/style.scss +0 -194
  616. package/src/components/global-styles/screen-revisions/test/use-global-styles-revisions.js +0 -228
  617. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -159
  618. package/src/components/global-styles/screen-root.js +0 -102
  619. package/src/components/global-styles/screen-shadows.js +0 -13
  620. package/src/components/global-styles/screen-style-variations.js +0 -52
  621. package/src/components/global-styles/screen-typography-element.js +0 -121
  622. package/src/components/global-styles/screen-typography.js +0 -45
  623. package/src/components/global-styles/shadow-utils.js +0 -158
  624. package/src/components/global-styles/shadows-edit-panel.js +0 -525
  625. package/src/components/global-styles/shadows-panel.js +0 -196
  626. package/src/components/global-styles/size-control/index.js +0 -89
  627. package/src/components/global-styles/stories/index.story.js +0 -427
  628. package/src/components/global-styles/style-variations-container.js +0 -132
  629. package/src/components/global-styles/style.scss +0 -265
  630. package/src/components/global-styles/subtitle.js +0 -17
  631. package/src/components/global-styles/test/shadow-utils.spec.js +0 -251
  632. package/src/components/global-styles/test/utils.spec.js +0 -59
  633. package/src/components/global-styles/typeset.js +0 -73
  634. package/src/components/global-styles/typography-elements.js +0 -102
  635. package/src/components/global-styles/typography-example.js +0 -76
  636. package/src/components/global-styles/typography-panel.js +0 -54
  637. package/src/components/global-styles/typography-preview.js +0 -70
  638. package/src/components/global-styles/ui.js +0 -448
  639. package/src/components/global-styles/utils.js +0 -88
  640. package/src/components/global-styles/variations/style.scss +0 -43
  641. package/src/components/global-styles/variations/variation.js +0 -108
  642. package/src/components/global-styles/variations/variations-color.js +0 -45
  643. package/src/components/global-styles/variations/variations-panel.js +0 -65
  644. package/src/components/global-styles/variations/variations-typography.js +0 -54
  645. package/src/components/global-styles-renderer/index.js +0 -39
  646. package/src/components/global-styles-sidebar/default-sidebar.js +0 -51
  647. package/src/components/global-styles-sidebar/index.js +0 -206
  648. package/src/components/global-styles-sidebar/style.scss +0 -80
  649. package/src/components/revisions/index.js +0 -109
  650. package/src/components/style-book/categories.ts +0 -97
  651. package/src/components/style-book/color-examples.tsx +0 -57
  652. package/src/components/style-book/constants.ts +0 -308
  653. package/src/components/style-book/duotone-examples.tsx +0 -57
  654. package/src/components/style-book/examples.tsx +0 -273
  655. package/src/components/style-book/index.js +0 -801
  656. package/src/components/style-book/style.scss +0 -44
  657. package/src/components/style-book/test/categories.js +0 -166
  658. package/src/components/style-book/types.ts +0 -80
  659. package/src/components/welcome-guide/styles.js +0 -139
  660. package/src/hooks/index.js +0 -4
  661. package/src/hooks/push-changes-to-global-styles/index.js +0 -388
  662. package/src/hooks/push-changes-to-global-styles/style.scss +0 -4
  663. package/src/hooks/use-global-styles-output.js +0 -80
  664. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +0 -271
  665. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +0 -175
  666. package/src/utils/set-nested-value.js +0 -39
  667. package/tsconfig.tsbuildinfo +0 -1
package/lib/unbrotli.js DELETED
@@ -1,2039 +0,0 @@
1
- /**
2
- * Credits:
3
- *
4
- * lib-font
5
- * https://github.com/Pomax/lib-font
6
- * https://github.com/Pomax/lib-font/blob/master/lib/unbrotli.js
7
- *
8
- * The MIT License (MIT)
9
- *
10
- * Copyright (c) 2020 pomax@nihongoresources.com
11
- *
12
- * Permission is hereby granted, free of charge, to any person obtaining a copy
13
- * of this software and associated documentation files (the "Software"), to deal
14
- * in the Software without restriction, including without limitation the rights
15
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
- * copies of the Software, and to permit persons to whom the Software is
17
- * furnished to do so, subject to the following conditions:
18
- *
19
- * The above copyright notice and this permission notice shall be included in all
20
- * copies or substantial portions of the Software.
21
- *
22
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
- * SOFTWARE.
29
- */
30
-
31
- /* eslint eslint-comments/no-unlimited-disable: 0 */
32
- /* eslint-disable */
33
- (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.unbrotli = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
34
- /* Copyright 2013 Google Inc. All Rights Reserved.
35
-
36
- Licensed under the Apache License, Version 2.0 (the "License");
37
- you may not use this file except in compliance with the License.
38
- You may obtain a copy of the License at
39
-
40
- http://www.apache.org/licenses/LICENSE-2.0
41
-
42
- Unless required by applicable law or agreed to in writing, software
43
- distributed under the License is distributed on an "AS IS" BASIS,
44
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
45
- See the License for the specific language governing permissions and
46
- limitations under the License.
47
-
48
- Bit reading helpers
49
- */
50
-
51
- var BROTLI_READ_SIZE = 4096;
52
- var BROTLI_IBUF_SIZE = (2 * BROTLI_READ_SIZE + 32);
53
- var BROTLI_IBUF_MASK = (2 * BROTLI_READ_SIZE - 1);
54
-
55
- var kBitMask = new Uint32Array([
56
- 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,
57
- 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215
58
- ]);
59
-
60
- /* Input byte buffer, consist of a ringbuffer and a "slack" region where */
61
- /* bytes from the start of the ringbuffer are copied. */
62
- function BrotliBitReader(input) {
63
- this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);
64
- this.input_ = input; /* input callback */
65
-
66
- this.reset();
67
- }
68
-
69
- BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;
70
- BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;
71
-
72
- BrotliBitReader.prototype.reset = function() {
73
- this.buf_ptr_ = 0; /* next input will write here */
74
- this.val_ = 0; /* pre-fetched bits */
75
- this.pos_ = 0; /* byte position in stream */
76
- this.bit_pos_ = 0; /* current bit-reading position in val_ */
77
- this.bit_end_pos_ = 0; /* bit-reading end position from LSB of val_ */
78
- this.eos_ = 0; /* input stream is finished */
79
-
80
- this.readMoreInput();
81
- for (var i = 0; i < 4; i++) {
82
- this.val_ |= this.buf_[this.pos_] << (8 * i);
83
- ++this.pos_;
84
- }
85
-
86
- return this.bit_end_pos_ > 0;
87
- };
88
-
89
- /* Fills up the input ringbuffer by calling the input callback.
90
-
91
- Does nothing if there are at least 32 bytes present after current position.
92
-
93
- Returns 0 if either:
94
- - the input callback returned an error, or
95
- - there is no more input and the position is past the end of the stream.
96
-
97
- After encountering the end of the input stream, 32 additional zero bytes are
98
- copied to the ringbuffer, therefore it is safe to call this function after
99
- every 32 bytes of input is read.
100
- */
101
- BrotliBitReader.prototype.readMoreInput = function() {
102
- if (this.bit_end_pos_ > 256) {
103
- return;
104
- } else if (this.eos_) {
105
- if (this.bit_pos_ > this.bit_end_pos_)
106
- throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);
107
- } else {
108
- var dst = this.buf_ptr_;
109
- var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);
110
- if (bytes_read < 0) {
111
- throw new Error('Unexpected end of input');
112
- }
113
-
114
- if (bytes_read < BROTLI_READ_SIZE) {
115
- this.eos_ = 1;
116
- /* Store 32 bytes of zero after the stream end. */
117
- for (var p = 0; p < 32; p++)
118
- this.buf_[dst + bytes_read + p] = 0;
119
- }
120
-
121
- if (dst === 0) {
122
- /* Copy the head of the ringbuffer to the slack region. */
123
- for (var p = 0; p < 32; p++)
124
- this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];
125
-
126
- this.buf_ptr_ = BROTLI_READ_SIZE;
127
- } else {
128
- this.buf_ptr_ = 0;
129
- }
130
-
131
- this.bit_end_pos_ += bytes_read << 3;
132
- }
133
- };
134
-
135
- /* Guarantees that there are at least 24 bits in the buffer. */
136
- BrotliBitReader.prototype.fillBitWindow = function() {
137
- while (this.bit_pos_ >= 8) {
138
- this.val_ >>>= 8;
139
- this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;
140
- ++this.pos_;
141
- this.bit_pos_ = this.bit_pos_ - 8 >>> 0;
142
- this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;
143
- }
144
- };
145
-
146
- /* Reads the specified number of bits from Read Buffer. */
147
- BrotliBitReader.prototype.readBits = function(n_bits) {
148
- if (32 - this.bit_pos_ < n_bits) {
149
- this.fillBitWindow();
150
- }
151
-
152
- var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);
153
- this.bit_pos_ += n_bits;
154
- return val;
155
- };
156
-
157
- module.exports = BrotliBitReader;
158
-
159
- },{}],2:[function(require,module,exports){
160
- /* Copyright 2013 Google Inc. All Rights Reserved.
161
-
162
- Licensed under the Apache License, Version 2.0 (the "License");
163
- you may not use this file except in compliance with the License.
164
- You may obtain a copy of the License at
165
-
166
- http://www.apache.org/licenses/LICENSE-2.0
167
-
168
- Unless required by applicable law or agreed to in writing, software
169
- distributed under the License is distributed on an "AS IS" BASIS,
170
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
171
- See the License for the specific language governing permissions and
172
- limitations under the License.
173
-
174
- Lookup table to map the previous two bytes to a context id.
175
-
176
- There are four different context modeling modes defined here:
177
- CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,
178
- CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,
179
- CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,
180
- CONTEXT_SIGNED: second-order context model tuned for signed integers.
181
-
182
- The context id for the UTF8 context model is calculated as follows. If p1
183
- and p2 are the previous two bytes, we calcualte the context as
184
-
185
- context = kContextLookup[p1] | kContextLookup[p2 + 256].
186
-
187
- If the previous two bytes are ASCII characters (i.e. < 128), this will be
188
- equivalent to
189
-
190
- context = 4 * context1(p1) + context2(p2),
191
-
192
- where context1 is based on the previous byte in the following way:
193
-
194
- 0 : non-ASCII control
195
- 1 : \t, \n, \r
196
- 2 : space
197
- 3 : other punctuation
198
- 4 : " '
199
- 5 : %
200
- 6 : ( < [ {
201
- 7 : ) > ] }
202
- 8 : , ; :
203
- 9 : .
204
- 10 : =
205
- 11 : number
206
- 12 : upper-case vowel
207
- 13 : upper-case consonant
208
- 14 : lower-case vowel
209
- 15 : lower-case consonant
210
-
211
- and context2 is based on the second last byte:
212
-
213
- 0 : control, space
214
- 1 : punctuation
215
- 2 : upper-case letter, number
216
- 3 : lower-case letter
217
-
218
- If the last byte is ASCII, and the second last byte is not (in a valid UTF8
219
- stream it will be a continuation byte, value between 128 and 191), the
220
- context is the same as if the second last byte was an ASCII control or space.
221
-
222
- If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
223
- be a continuation byte and the context id is 2 or 3 depending on the LSB of
224
- the last byte and to a lesser extent on the second last byte if it is ASCII.
225
-
226
- If the last byte is a UTF8 continuation byte, the second last byte can be:
227
- - continuation byte: the next byte is probably ASCII or lead byte (assuming
228
- 4-byte UTF8 characters are rare) and the context id is 0 or 1.
229
- - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
230
- - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
231
-
232
- The possible value combinations of the previous two bytes, the range of
233
- context ids and the type of the next byte is summarized in the table below:
234
-
235
- |--------\-----------------------------------------------------------------|
236
- | \ Last byte |
237
- | Second \---------------------------------------------------------------|
238
- | last byte \ ASCII | cont. byte | lead byte |
239
- | \ (0-127) | (128-191) | (192-) |
240
- |=============|===================|=====================|==================|
241
- | ASCII | next: ASCII/lead | not valid | next: cont. |
242
- | (0-127) | context: 4 - 63 | | context: 2 - 3 |
243
- |-------------|-------------------|---------------------|------------------|
244
- | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. |
245
- | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 |
246
- |-------------|-------------------|---------------------|------------------|
247
- | lead byte | not valid | next: ASCII/lead | not valid |
248
- | (192-207) | | context: 0 - 1 | |
249
- |-------------|-------------------|---------------------|------------------|
250
- | lead byte | not valid | next: cont. | not valid |
251
- | (208-) | | context: 2 - 3 | |
252
- |-------------|-------------------|---------------------|------------------|
253
-
254
- The context id for the signed context mode is calculated as:
255
-
256
- context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].
257
-
258
- For any context modeling modes, the context ids can be calculated by |-ing
259
- together two lookups from one table using context model dependent offsets:
260
-
261
- context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].
262
-
263
- where offset1 and offset2 are dependent on the context mode.
264
- */
265
-
266
- var CONTEXT_LSB6 = 0;
267
- var CONTEXT_MSB6 = 1;
268
- var CONTEXT_UTF8 = 2;
269
- var CONTEXT_SIGNED = 3;
270
-
271
- /* Common context lookup table for all context modes. */
272
- exports.lookup = new Uint8Array([
273
- /* CONTEXT_UTF8, last byte. */
274
- /* ASCII range. */
275
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,
276
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
277
- 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,
278
- 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
279
- 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,
280
- 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,
281
- 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,
282
- 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,
283
- /* UTF8 continuation byte range. */
284
- 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
285
- 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
286
- 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
287
- 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
288
- /* UTF8 lead byte range. */
289
- 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
290
- 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
291
- 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
292
- 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
293
- /* CONTEXT_UTF8 second last byte. */
294
- /* ASCII range. */
295
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
296
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
297
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
298
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
299
- 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
300
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
301
- 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
302
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
303
- /* UTF8 continuation byte range. */
304
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
305
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
306
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
307
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
308
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
309
- /* UTF8 lead byte range. */
310
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
311
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
312
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
313
- /* CONTEXT_SIGNED, second last byte. */
314
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
315
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
316
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
317
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
318
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
319
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
320
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
321
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
322
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
323
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
324
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
325
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
326
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
327
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
328
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
329
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
330
- /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
331
- 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
332
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
333
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
334
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
335
- 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
336
- 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
337
- 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
338
- 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
339
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
340
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
341
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
342
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
343
- 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
344
- 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
345
- 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
346
- 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
347
- /* CONTEXT_LSB6, last byte. */
348
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
349
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
350
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
351
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
352
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
353
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
354
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
355
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
356
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
357
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
358
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
359
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
360
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
361
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
362
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
363
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
364
- /* CONTEXT_MSB6, last byte. */
365
- 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,
366
- 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
367
- 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11,
368
- 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
369
- 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,
370
- 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,
371
- 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,
372
- 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,
373
- 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,
374
- 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,
375
- 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,
376
- 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,
377
- 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,
378
- 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,
379
- 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,
380
- 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,
381
- /* CONTEXT_{M,L}SB6, second last byte, */
382
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
383
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
384
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
385
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
386
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
387
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
388
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
389
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
390
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
392
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
393
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
394
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
395
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
396
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
397
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
398
- ]);
399
-
400
- exports.lookupOffsets = new Uint16Array([
401
- /* CONTEXT_LSB6 */
402
- 1024, 1536,
403
- /* CONTEXT_MSB6 */
404
- 1280, 1536,
405
- /* CONTEXT_UTF8 */
406
- 0, 256,
407
- /* CONTEXT_SIGNED */
408
- 768, 512,
409
- ]);
410
-
411
- },{}],3:[function(require,module,exports){
412
- /* Copyright 2013 Google Inc. All Rights Reserved.
413
-
414
- Licensed under the Apache License, Version 2.0 (the "License");
415
- you may not use this file except in compliance with the License.
416
- You may obtain a copy of the License at
417
-
418
- http://www.apache.org/licenses/LICENSE-2.0
419
-
420
- Unless required by applicable law or agreed to in writing, software
421
- distributed under the License is distributed on an "AS IS" BASIS,
422
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
423
- See the License for the specific language governing permissions and
424
- limitations under the License.
425
- */
426
-
427
- var BrotliInput = require('./streams').BrotliInput;
428
- var BrotliOutput = require('./streams').BrotliOutput;
429
- var BrotliBitReader = require('./bit_reader');
430
- var BrotliDictionary = require('./dictionary');
431
- var HuffmanCode = require('./huffman').HuffmanCode;
432
- var BrotliBuildHuffmanTable = require('./huffman').BrotliBuildHuffmanTable;
433
- var Context = require('./context');
434
- var Prefix = require('./prefix');
435
- var Transform = require('./transform');
436
-
437
- var kDefaultCodeLength = 8;
438
- var kCodeLengthRepeatCode = 16;
439
- var kNumLiteralCodes = 256;
440
- var kNumInsertAndCopyCodes = 704;
441
- var kNumBlockLengthCodes = 26;
442
- var kLiteralContextBits = 6;
443
- var kDistanceContextBits = 2;
444
-
445
- var HUFFMAN_TABLE_BITS = 8;
446
- var HUFFMAN_TABLE_MASK = 0xff;
447
- /* Maximum possible Huffman table size for an alphabet size of 704, max code
448
- * length 15 and root table bits 8. */
449
- var HUFFMAN_MAX_TABLE_SIZE = 1080;
450
-
451
- var CODE_LENGTH_CODES = 18;
452
- var kCodeLengthCodeOrder = new Uint8Array([
453
- 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,
454
- ]);
455
-
456
- var NUM_DISTANCE_SHORT_CODES = 16;
457
- var kDistanceShortCodeIndexOffset = new Uint8Array([
458
- 3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2
459
- ]);
460
-
461
- var kDistanceShortCodeValueOffset = new Int8Array([
462
- 0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3
463
- ]);
464
-
465
- var kMaxHuffmanTableSize = new Uint16Array([
466
- 256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,
467
- 854, 886, 920, 952, 984, 1016, 1048, 1080
468
- ]);
469
-
470
- function DecodeWindowBits(br) {
471
- var n;
472
- if (br.readBits(1) === 0) {
473
- return 16;
474
- }
475
-
476
- n = br.readBits(3);
477
- if (n > 0) {
478
- return 17 + n;
479
- }
480
-
481
- n = br.readBits(3);
482
- if (n > 0) {
483
- return 8 + n;
484
- }
485
-
486
- return 17;
487
- }
488
-
489
- /* Decodes a number in the range [0..255], by reading 1 - 11 bits. */
490
- function DecodeVarLenUint8(br) {
491
- if (br.readBits(1)) {
492
- var nbits = br.readBits(3);
493
- if (nbits === 0) {
494
- return 1;
495
- } else {
496
- return br.readBits(nbits) + (1 << nbits);
497
- }
498
- }
499
- return 0;
500
- }
501
-
502
- function MetaBlockLength() {
503
- this.meta_block_length = 0;
504
- this.input_end = 0;
505
- this.is_uncompressed = 0;
506
- this.is_metadata = false;
507
- }
508
-
509
- function DecodeMetaBlockLength(br) {
510
- var out = new MetaBlockLength;
511
- var size_nibbles;
512
- var size_bytes;
513
- var i;
514
-
515
- out.input_end = br.readBits(1);
516
- if (out.input_end && br.readBits(1)) {
517
- return out;
518
- }
519
-
520
- size_nibbles = br.readBits(2) + 4;
521
- if (size_nibbles === 7) {
522
- out.is_metadata = true;
523
-
524
- if (br.readBits(1) !== 0)
525
- throw new Error('Invalid reserved bit');
526
-
527
- size_bytes = br.readBits(2);
528
- if (size_bytes === 0)
529
- return out;
530
-
531
- for (i = 0; i < size_bytes; i++) {
532
- var next_byte = br.readBits(8);
533
- if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)
534
- throw new Error('Invalid size byte');
535
-
536
- out.meta_block_length |= next_byte << (i * 8);
537
- }
538
- } else {
539
- for (i = 0; i < size_nibbles; ++i) {
540
- var next_nibble = br.readBits(4);
541
- if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)
542
- throw new Error('Invalid size nibble');
543
-
544
- out.meta_block_length |= next_nibble << (i * 4);
545
- }
546
- }
547
-
548
- ++out.meta_block_length;
549
-
550
- if (!out.input_end && !out.is_metadata) {
551
- out.is_uncompressed = br.readBits(1);
552
- }
553
-
554
- return out;
555
- }
556
-
557
- /* Decodes the next Huffman code from bit-stream. */
558
- function ReadSymbol(table, index, br) {
559
- var start_index = index;
560
-
561
- var nbits;
562
- br.fillBitWindow();
563
- index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;
564
- nbits = table[index].bits - HUFFMAN_TABLE_BITS;
565
- if (nbits > 0) {
566
- br.bit_pos_ += HUFFMAN_TABLE_BITS;
567
- index += table[index].value;
568
- index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);
569
- }
570
- br.bit_pos_ += table[index].bits;
571
- return table[index].value;
572
- }
573
-
574
- function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {
575
- var symbol = 0;
576
- var prev_code_len = kDefaultCodeLength;
577
- var repeat = 0;
578
- var repeat_code_len = 0;
579
- var space = 32768;
580
-
581
- var table = [];
582
- for (var i = 0; i < 32; i++)
583
- table.push(new HuffmanCode(0, 0));
584
-
585
- BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);
586
-
587
- while (symbol < num_symbols && space > 0) {
588
- var p = 0;
589
- var code_len;
590
-
591
- br.readMoreInput();
592
- br.fillBitWindow();
593
- p += (br.val_ >>> br.bit_pos_) & 31;
594
- br.bit_pos_ += table[p].bits;
595
- code_len = table[p].value & 0xff;
596
- if (code_len < kCodeLengthRepeatCode) {
597
- repeat = 0;
598
- code_lengths[symbol++] = code_len;
599
- if (code_len !== 0) {
600
- prev_code_len = code_len;
601
- space -= 32768 >> code_len;
602
- }
603
- } else {
604
- var extra_bits = code_len - 14;
605
- var old_repeat;
606
- var repeat_delta;
607
- var new_len = 0;
608
- if (code_len === kCodeLengthRepeatCode) {
609
- new_len = prev_code_len;
610
- }
611
- if (repeat_code_len !== new_len) {
612
- repeat = 0;
613
- repeat_code_len = new_len;
614
- }
615
- old_repeat = repeat;
616
- if (repeat > 0) {
617
- repeat -= 2;
618
- repeat <<= extra_bits;
619
- }
620
- repeat += br.readBits(extra_bits) + 3;
621
- repeat_delta = repeat - old_repeat;
622
- if (symbol + repeat_delta > num_symbols) {
623
- throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');
624
- }
625
-
626
- for (var x = 0; x < repeat_delta; x++)
627
- code_lengths[symbol + x] = repeat_code_len;
628
-
629
- symbol += repeat_delta;
630
-
631
- if (repeat_code_len !== 0) {
632
- space -= repeat_delta << (15 - repeat_code_len);
633
- }
634
- }
635
- }
636
- if (space !== 0) {
637
- throw new Error("[ReadHuffmanCodeLengths] space = " + space);
638
- }
639
-
640
- for (; symbol < num_symbols; symbol++)
641
- code_lengths[symbol] = 0;
642
- }
643
-
644
- function ReadHuffmanCode(alphabet_size, tables, table, br) {
645
- var table_size = 0;
646
- var simple_code_or_skip;
647
- var code_lengths = new Uint8Array(alphabet_size);
648
-
649
- br.readMoreInput();
650
-
651
- /* simple_code_or_skip is used as follows:
652
- 1 for simple code;
653
- 0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */
654
- simple_code_or_skip = br.readBits(2);
655
- if (simple_code_or_skip === 1) {
656
- /* Read symbols, codes & code lengths directly. */
657
- var i;
658
- var max_bits_counter = alphabet_size - 1;
659
- var max_bits = 0;
660
- var symbols = new Int32Array(4);
661
- var num_symbols = br.readBits(2) + 1;
662
- while (max_bits_counter) {
663
- max_bits_counter >>= 1;
664
- ++max_bits;
665
- }
666
-
667
- for (i = 0; i < num_symbols; ++i) {
668
- symbols[i] = br.readBits(max_bits) % alphabet_size;
669
- code_lengths[symbols[i]] = 2;
670
- }
671
- code_lengths[symbols[0]] = 1;
672
- switch (num_symbols) {
673
- case 1:
674
- break;
675
- case 3:
676
- if ((symbols[0] === symbols[1]) ||
677
- (symbols[0] === symbols[2]) ||
678
- (symbols[1] === symbols[2])) {
679
- throw new Error('[ReadHuffmanCode] invalid symbols');
680
- }
681
- break;
682
- case 2:
683
- if (symbols[0] === symbols[1]) {
684
- throw new Error('[ReadHuffmanCode] invalid symbols');
685
- }
686
-
687
- code_lengths[symbols[1]] = 1;
688
- break;
689
- case 4:
690
- if ((symbols[0] === symbols[1]) ||
691
- (symbols[0] === symbols[2]) ||
692
- (symbols[0] === symbols[3]) ||
693
- (symbols[1] === symbols[2]) ||
694
- (symbols[1] === symbols[3]) ||
695
- (symbols[2] === symbols[3])) {
696
- throw new Error('[ReadHuffmanCode] invalid symbols');
697
- }
698
-
699
- if (br.readBits(1)) {
700
- code_lengths[symbols[2]] = 3;
701
- code_lengths[symbols[3]] = 3;
702
- } else {
703
- code_lengths[symbols[0]] = 2;
704
- }
705
- break;
706
- }
707
- } else { /* Decode Huffman-coded code lengths. */
708
- var i;
709
- var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);
710
- var space = 32;
711
- var num_codes = 0;
712
- /* Static Huffman code for the code length code lengths */
713
- var huff = [
714
- new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),
715
- new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),
716
- new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),
717
- new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)
718
- ];
719
- for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {
720
- var code_len_idx = kCodeLengthCodeOrder[i];
721
- var p = 0;
722
- var v;
723
- br.fillBitWindow();
724
- p += (br.val_ >>> br.bit_pos_) & 15;
725
- br.bit_pos_ += huff[p].bits;
726
- v = huff[p].value;
727
- code_length_code_lengths[code_len_idx] = v;
728
- if (v !== 0) {
729
- space -= (32 >> v);
730
- ++num_codes;
731
- }
732
- }
733
-
734
- if (!(num_codes === 1 || space === 0))
735
- throw new Error('[ReadHuffmanCode] invalid num_codes or space');
736
-
737
- ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);
738
- }
739
-
740
- table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);
741
-
742
- if (table_size === 0) {
743
- throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");
744
- }
745
-
746
- return table_size;
747
- }
748
-
749
- function ReadBlockLength(table, index, br) {
750
- var code;
751
- var nbits;
752
- code = ReadSymbol(table, index, br);
753
- nbits = Prefix.kBlockLengthPrefixCode[code].nbits;
754
- return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);
755
- }
756
-
757
- function TranslateShortCodes(code, ringbuffer, index) {
758
- var val;
759
- if (code < NUM_DISTANCE_SHORT_CODES) {
760
- index += kDistanceShortCodeIndexOffset[code];
761
- index &= 3;
762
- val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];
763
- } else {
764
- val = code - NUM_DISTANCE_SHORT_CODES + 1;
765
- }
766
- return val;
767
- }
768
-
769
- function MoveToFront(v, index) {
770
- var value = v[index];
771
- var i = index;
772
- for (; i; --i) v[i] = v[i - 1];
773
- v[0] = value;
774
- }
775
-
776
- function InverseMoveToFrontTransform(v, v_len) {
777
- var mtf = new Uint8Array(256);
778
- var i;
779
- for (i = 0; i < 256; ++i) {
780
- mtf[i] = i;
781
- }
782
- for (i = 0; i < v_len; ++i) {
783
- var index = v[i];
784
- v[i] = mtf[index];
785
- if (index) MoveToFront(mtf, index);
786
- }
787
- }
788
-
789
- /* Contains a collection of huffman trees with the same alphabet size. */
790
- function HuffmanTreeGroup(alphabet_size, num_htrees) {
791
- this.alphabet_size = alphabet_size;
792
- this.num_htrees = num_htrees;
793
- this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]);
794
- this.htrees = new Uint32Array(num_htrees);
795
- }
796
-
797
- HuffmanTreeGroup.prototype.decode = function(br) {
798
- var i;
799
- var table_size;
800
- var next = 0;
801
- for (i = 0; i < this.num_htrees; ++i) {
802
- this.htrees[i] = next;
803
- table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);
804
- next += table_size;
805
- }
806
- };
807
-
808
- function DecodeContextMap(context_map_size, br) {
809
- var out = { num_htrees: null, context_map: null };
810
- var use_rle_for_zeros;
811
- var max_run_length_prefix = 0;
812
- var table;
813
- var i;
814
-
815
- br.readMoreInput();
816
- var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;
817
-
818
- var context_map = out.context_map = new Uint8Array(context_map_size);
819
- if (num_htrees <= 1) {
820
- return out;
821
- }
822
-
823
- use_rle_for_zeros = br.readBits(1);
824
- if (use_rle_for_zeros) {
825
- max_run_length_prefix = br.readBits(4) + 1;
826
- }
827
-
828
- table = [];
829
- for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {
830
- table[i] = new HuffmanCode(0, 0);
831
- }
832
-
833
- ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);
834
-
835
- for (i = 0; i < context_map_size;) {
836
- var code;
837
-
838
- br.readMoreInput();
839
- code = ReadSymbol(table, 0, br);
840
- if (code === 0) {
841
- context_map[i] = 0;
842
- ++i;
843
- } else if (code <= max_run_length_prefix) {
844
- var reps = 1 + (1 << code) + br.readBits(code);
845
- while (--reps) {
846
- if (i >= context_map_size) {
847
- throw new Error("[DecodeContextMap] i >= context_map_size");
848
- }
849
- context_map[i] = 0;
850
- ++i;
851
- }
852
- } else {
853
- context_map[i] = code - max_run_length_prefix;
854
- ++i;
855
- }
856
- }
857
- if (br.readBits(1)) {
858
- InverseMoveToFrontTransform(context_map, context_map_size);
859
- }
860
-
861
- return out;
862
- }
863
-
864
- function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {
865
- var ringbuffer = tree_type * 2;
866
- var index = tree_type;
867
- var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);
868
- var block_type;
869
- if (type_code === 0) {
870
- block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];
871
- } else if (type_code === 1) {
872
- block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;
873
- } else {
874
- block_type = type_code - 2;
875
- }
876
- if (block_type >= max_block_type) {
877
- block_type -= max_block_type;
878
- }
879
- block_types[tree_type] = block_type;
880
- ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;
881
- ++indexes[index];
882
- }
883
-
884
- function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {
885
- var rb_size = ringbuffer_mask + 1;
886
- var rb_pos = pos & ringbuffer_mask;
887
- var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;
888
- var nbytes;
889
-
890
- /* For short lengths copy byte-by-byte */
891
- if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {
892
- while (len-- > 0) {
893
- br.readMoreInput();
894
- ringbuffer[rb_pos++] = br.readBits(8);
895
- if (rb_pos === rb_size) {
896
- output.write(ringbuffer, rb_size);
897
- rb_pos = 0;
898
- }
899
- }
900
- return;
901
- }
902
-
903
- if (br.bit_end_pos_ < 32) {
904
- throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');
905
- }
906
-
907
- /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */
908
- while (br.bit_pos_ < 32) {
909
- ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);
910
- br.bit_pos_ += 8;
911
- ++rb_pos;
912
- --len;
913
- }
914
-
915
- /* Copy remaining bytes from br.buf_ to ringbuffer. */
916
- nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;
917
- if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {
918
- var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;
919
- for (var x = 0; x < tail; x++)
920
- ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
921
-
922
- nbytes -= tail;
923
- rb_pos += tail;
924
- len -= tail;
925
- br_pos = 0;
926
- }
927
-
928
- for (var x = 0; x < nbytes; x++)
929
- ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
930
-
931
- rb_pos += nbytes;
932
- len -= nbytes;
933
-
934
- /* If we wrote past the logical end of the ringbuffer, copy the tail of the
935
- ringbuffer to its beginning and flush the ringbuffer to the output. */
936
- if (rb_pos >= rb_size) {
937
- output.write(ringbuffer, rb_size);
938
- rb_pos -= rb_size;
939
- for (var x = 0; x < rb_pos; x++)
940
- ringbuffer[x] = ringbuffer[rb_size + x];
941
- }
942
-
943
- /* If we have more to copy than the remaining size of the ringbuffer, then we
944
- first fill the ringbuffer from the input and then flush the ringbuffer to
945
- the output */
946
- while (rb_pos + len >= rb_size) {
947
- nbytes = rb_size - rb_pos;
948
- if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {
949
- throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
950
- }
951
- output.write(ringbuffer, rb_size);
952
- len -= nbytes;
953
- rb_pos = 0;
954
- }
955
-
956
- /* Copy straight from the input onto the ringbuffer. The ringbuffer will be
957
- flushed to the output at a later time. */
958
- if (br.input_.read(ringbuffer, rb_pos, len) < len) {
959
- throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
960
- }
961
-
962
- /* Restore the state of the bit reader. */
963
- br.reset();
964
- }
965
-
966
- /* Advances the bit reader position to the next byte boundary and verifies
967
- that any skipped bits are set to zero. */
968
- function JumpToByteBoundary(br) {
969
- var new_bit_pos = (br.bit_pos_ + 7) & ~7;
970
- var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);
971
- return pad_bits == 0;
972
- }
973
-
974
- function BrotliDecompressedSize(buffer) {
975
- var input = new BrotliInput(buffer);
976
- var br = new BrotliBitReader(input);
977
- DecodeWindowBits(br);
978
- var out = DecodeMetaBlockLength(br);
979
- return out.meta_block_length;
980
- }
981
-
982
- exports.BrotliDecompressedSize = BrotliDecompressedSize;
983
-
984
- function BrotliDecompressBuffer(buffer, output_size) {
985
- var input = new BrotliInput(buffer);
986
-
987
- if (output_size == null) {
988
- output_size = BrotliDecompressedSize(buffer);
989
- }
990
-
991
- var output_buffer = new Uint8Array(output_size);
992
- var output = new BrotliOutput(output_buffer);
993
-
994
- BrotliDecompress(input, output);
995
-
996
- if (output.pos < output.buffer.length) {
997
- output.buffer = output.buffer.subarray(0, output.pos);
998
- }
999
-
1000
- return output.buffer;
1001
- }
1002
-
1003
- exports.BrotliDecompressBuffer = BrotliDecompressBuffer;
1004
-
1005
- function BrotliDecompress(input, output) {
1006
- var i;
1007
- var pos = 0;
1008
- var input_end = 0;
1009
- var window_bits = 0;
1010
- var max_backward_distance;
1011
- var max_distance = 0;
1012
- var ringbuffer_size;
1013
- var ringbuffer_mask;
1014
- var ringbuffer;
1015
- var ringbuffer_end;
1016
- /* This ring buffer holds a few past copy distances that will be used by */
1017
- /* some special distance codes. */
1018
- var dist_rb = [ 16, 15, 11, 4 ];
1019
- var dist_rb_idx = 0;
1020
- /* The previous 2 bytes used for context. */
1021
- var prev_byte1 = 0;
1022
- var prev_byte2 = 0;
1023
- var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];
1024
- var block_type_trees;
1025
- var block_len_trees;
1026
- var br;
1027
-
1028
- /* We need the slack region for the following reasons:
1029
- - always doing two 8-byte copies for fast backward copying
1030
- - transforms
1031
- - flushing the input ringbuffer when decoding uncompressed blocks */
1032
- var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;
1033
-
1034
- br = new BrotliBitReader(input);
1035
-
1036
- /* Decode window size. */
1037
- window_bits = DecodeWindowBits(br);
1038
- max_backward_distance = (1 << window_bits) - 16;
1039
-
1040
- ringbuffer_size = 1 << window_bits;
1041
- ringbuffer_mask = ringbuffer_size - 1;
1042
- ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);
1043
- ringbuffer_end = ringbuffer_size;
1044
-
1045
- block_type_trees = [];
1046
- block_len_trees = [];
1047
- for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {
1048
- block_type_trees[x] = new HuffmanCode(0, 0);
1049
- block_len_trees[x] = new HuffmanCode(0, 0);
1050
- }
1051
-
1052
- while (!input_end) {
1053
- var meta_block_remaining_len = 0;
1054
- var is_uncompressed;
1055
- var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];
1056
- var block_type = [ 0 ];
1057
- var num_block_types = [ 1, 1, 1 ];
1058
- var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];
1059
- var block_type_rb_index = [ 0 ];
1060
- var distance_postfix_bits;
1061
- var num_direct_distance_codes;
1062
- var distance_postfix_mask;
1063
- var num_distance_codes;
1064
- var context_map = null;
1065
- var context_modes = null;
1066
- var num_literal_htrees;
1067
- var dist_context_map = null;
1068
- var num_dist_htrees;
1069
- var context_offset = 0;
1070
- var context_map_slice = null;
1071
- var literal_htree_index = 0;
1072
- var dist_context_offset = 0;
1073
- var dist_context_map_slice = null;
1074
- var dist_htree_index = 0;
1075
- var context_lookup_offset1 = 0;
1076
- var context_lookup_offset2 = 0;
1077
- var context_mode;
1078
- var htree_command;
1079
-
1080
- for (i = 0; i < 3; ++i) {
1081
- hgroup[i].codes = null;
1082
- hgroup[i].htrees = null;
1083
- }
1084
-
1085
- br.readMoreInput();
1086
-
1087
- var _out = DecodeMetaBlockLength(br);
1088
- meta_block_remaining_len = _out.meta_block_length;
1089
- if (pos + meta_block_remaining_len > output.buffer.length) {
1090
- /* We need to grow the output buffer to fit the additional data. */
1091
- var tmp = new Uint8Array( pos + meta_block_remaining_len );
1092
- tmp.set( output.buffer );
1093
- output.buffer = tmp;
1094
- }
1095
- input_end = _out.input_end;
1096
- is_uncompressed = _out.is_uncompressed;
1097
-
1098
- if (_out.is_metadata) {
1099
- JumpToByteBoundary(br);
1100
-
1101
- for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {
1102
- br.readMoreInput();
1103
- /* Read one byte and ignore it. */
1104
- br.readBits(8);
1105
- }
1106
-
1107
- continue;
1108
- }
1109
-
1110
- if (meta_block_remaining_len === 0) {
1111
- continue;
1112
- }
1113
-
1114
- if (is_uncompressed) {
1115
- br.bit_pos_ = (br.bit_pos_ + 7) & ~7;
1116
- CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,
1117
- ringbuffer, ringbuffer_mask, br);
1118
- pos += meta_block_remaining_len;
1119
- continue;
1120
- }
1121
-
1122
- for (i = 0; i < 3; ++i) {
1123
- num_block_types[i] = DecodeVarLenUint8(br) + 1;
1124
- if (num_block_types[i] >= 2) {
1125
- ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
1126
- ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
1127
- block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
1128
- block_type_rb_index[i] = 1;
1129
- }
1130
- }
1131
-
1132
- br.readMoreInput();
1133
-
1134
- distance_postfix_bits = br.readBits(2);
1135
- num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);
1136
- distance_postfix_mask = (1 << distance_postfix_bits) - 1;
1137
- num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));
1138
- context_modes = new Uint8Array(num_block_types[0]);
1139
-
1140
- for (i = 0; i < num_block_types[0]; ++i) {
1141
- br.readMoreInput();
1142
- context_modes[i] = (br.readBits(2) << 1);
1143
- }
1144
-
1145
- var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);
1146
- num_literal_htrees = _o1.num_htrees;
1147
- context_map = _o1.context_map;
1148
-
1149
- var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);
1150
- num_dist_htrees = _o2.num_htrees;
1151
- dist_context_map = _o2.context_map;
1152
-
1153
- hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);
1154
- hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);
1155
- hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);
1156
-
1157
- for (i = 0; i < 3; ++i) {
1158
- hgroup[i].decode(br);
1159
- }
1160
-
1161
- context_map_slice = 0;
1162
- dist_context_map_slice = 0;
1163
- context_mode = context_modes[block_type[0]];
1164
- context_lookup_offset1 = Context.lookupOffsets[context_mode];
1165
- context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
1166
- htree_command = hgroup[1].htrees[0];
1167
-
1168
- while (meta_block_remaining_len > 0) {
1169
- var cmd_code;
1170
- var range_idx;
1171
- var insert_code;
1172
- var copy_code;
1173
- var insert_length;
1174
- var copy_length;
1175
- var distance_code;
1176
- var distance;
1177
- var context;
1178
- var j;
1179
- var copy_dst;
1180
-
1181
- br.readMoreInput();
1182
-
1183
- if (block_length[1] === 0) {
1184
- DecodeBlockType(num_block_types[1],
1185
- block_type_trees, 1, block_type, block_type_rb,
1186
- block_type_rb_index, br);
1187
- block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);
1188
- htree_command = hgroup[1].htrees[block_type[1]];
1189
- }
1190
- --block_length[1];
1191
- cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);
1192
- range_idx = cmd_code >> 6;
1193
- if (range_idx >= 2) {
1194
- range_idx -= 2;
1195
- distance_code = -1;
1196
- } else {
1197
- distance_code = 0;
1198
- }
1199
- insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);
1200
- copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);
1201
- insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +
1202
- br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);
1203
- copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +
1204
- br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);
1205
- prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];
1206
- prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];
1207
- for (j = 0; j < insert_length; ++j) {
1208
- br.readMoreInput();
1209
-
1210
- if (block_length[0] === 0) {
1211
- DecodeBlockType(num_block_types[0],
1212
- block_type_trees, 0, block_type, block_type_rb,
1213
- block_type_rb_index, br);
1214
- block_length[0] = ReadBlockLength(block_len_trees, 0, br);
1215
- context_offset = block_type[0] << kLiteralContextBits;
1216
- context_map_slice = context_offset;
1217
- context_mode = context_modes[block_type[0]];
1218
- context_lookup_offset1 = Context.lookupOffsets[context_mode];
1219
- context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
1220
- }
1221
- context = (Context.lookup[context_lookup_offset1 + prev_byte1] |
1222
- Context.lookup[context_lookup_offset2 + prev_byte2]);
1223
- literal_htree_index = context_map[context_map_slice + context];
1224
- --block_length[0];
1225
- prev_byte2 = prev_byte1;
1226
- prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);
1227
- ringbuffer[pos & ringbuffer_mask] = prev_byte1;
1228
- if ((pos & ringbuffer_mask) === ringbuffer_mask) {
1229
- output.write(ringbuffer, ringbuffer_size);
1230
- }
1231
- ++pos;
1232
- }
1233
- meta_block_remaining_len -= insert_length;
1234
- if (meta_block_remaining_len <= 0) break;
1235
-
1236
- if (distance_code < 0) {
1237
- var context;
1238
-
1239
- br.readMoreInput();
1240
- if (block_length[2] === 0) {
1241
- DecodeBlockType(num_block_types[2],
1242
- block_type_trees, 2, block_type, block_type_rb,
1243
- block_type_rb_index, br);
1244
- block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);
1245
- dist_context_offset = block_type[2] << kDistanceContextBits;
1246
- dist_context_map_slice = dist_context_offset;
1247
- }
1248
- --block_length[2];
1249
- context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;
1250
- dist_htree_index = dist_context_map[dist_context_map_slice + context];
1251
- distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);
1252
- if (distance_code >= num_direct_distance_codes) {
1253
- var nbits;
1254
- var postfix;
1255
- var offset;
1256
- distance_code -= num_direct_distance_codes;
1257
- postfix = distance_code & distance_postfix_mask;
1258
- distance_code >>= distance_postfix_bits;
1259
- nbits = (distance_code >> 1) + 1;
1260
- offset = ((2 + (distance_code & 1)) << nbits) - 4;
1261
- distance_code = num_direct_distance_codes +
1262
- ((offset + br.readBits(nbits)) <<
1263
- distance_postfix_bits) + postfix;
1264
- }
1265
- }
1266
-
1267
- /* Convert the distance code to the actual distance by possibly looking */
1268
- /* up past distnaces from the ringbuffer. */
1269
- distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);
1270
- if (distance < 0) {
1271
- throw new Error('[BrotliDecompress] invalid distance');
1272
- }
1273
-
1274
- if (pos < max_backward_distance &&
1275
- max_distance !== max_backward_distance) {
1276
- max_distance = pos;
1277
- } else {
1278
- max_distance = max_backward_distance;
1279
- }
1280
-
1281
- copy_dst = pos & ringbuffer_mask;
1282
-
1283
- if (distance > max_distance) {
1284
- if (copy_length >= BrotliDictionary.minDictionaryWordLength &&
1285
- copy_length <= BrotliDictionary.maxDictionaryWordLength) {
1286
- var offset = BrotliDictionary.offsetsByLength[copy_length];
1287
- var word_id = distance - max_distance - 1;
1288
- var shift = BrotliDictionary.sizeBitsByLength[copy_length];
1289
- var mask = (1 << shift) - 1;
1290
- var word_idx = word_id & mask;
1291
- var transform_idx = word_id >> shift;
1292
- offset += word_idx * copy_length;
1293
- if (transform_idx < Transform.kNumTransforms) {
1294
- var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);
1295
- copy_dst += len;
1296
- pos += len;
1297
- meta_block_remaining_len -= len;
1298
- if (copy_dst >= ringbuffer_end) {
1299
- output.write(ringbuffer, ringbuffer_size);
1300
-
1301
- for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)
1302
- ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];
1303
- }
1304
- } else {
1305
- throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
1306
- " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
1307
- }
1308
- } else {
1309
- throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
1310
- " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
1311
- }
1312
- } else {
1313
- if (distance_code > 0) {
1314
- dist_rb[dist_rb_idx & 3] = distance;
1315
- ++dist_rb_idx;
1316
- }
1317
-
1318
- if (copy_length > meta_block_remaining_len) {
1319
- throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
1320
- " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
1321
- }
1322
-
1323
- for (j = 0; j < copy_length; ++j) {
1324
- ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];
1325
- if ((pos & ringbuffer_mask) === ringbuffer_mask) {
1326
- output.write(ringbuffer, ringbuffer_size);
1327
- }
1328
- ++pos;
1329
- --meta_block_remaining_len;
1330
- }
1331
- }
1332
-
1333
- /* When we get here, we must have inserted at least one literal and */
1334
- /* made a copy of at least length two, therefore accessing the last 2 */
1335
- /* bytes is valid. */
1336
- prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];
1337
- prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];
1338
- }
1339
-
1340
- /* Protect pos from overflow, wrap it around at every GB of input data */
1341
- pos &= 0x3fffffff;
1342
- }
1343
-
1344
- output.write(ringbuffer, pos & ringbuffer_mask);
1345
- }
1346
-
1347
- exports.BrotliDecompress = BrotliDecompress;
1348
-
1349
- BrotliDictionary.init();
1350
-
1351
- },{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(require,module,exports){
1352
- var base64 = require('base64-js');
1353
- //var fs = require('fs');
1354
-
1355
- /**
1356
- * The normal dictionary-data.js is quite large, which makes it
1357
- * unsuitable for browser usage. In order to make it smaller,
1358
- * we read dictionary.bin, which is a compressed version of
1359
- * the dictionary, and on initial load, Brotli decompresses
1360
- * it's own dictionary. 😜
1361
- */
1362
- exports.init = function() {
1363
- var BrotliDecompressBuffer = require('./decode').BrotliDecompressBuffer;
1364
- var compressed = base64.toByteArray(require('./dictionary.bin.js'));
1365
- return BrotliDecompressBuffer(compressed);
1366
- };
1367
-
1368
- },{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(require,module,exports){
1369
- module.exports="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";
1370
-
1371
- },{}],6:[function(require,module,exports){
1372
- /* Copyright 2013 Google Inc. All Rights Reserved.
1373
-
1374
- Licensed under the Apache License, Version 2.0 (the "License");
1375
- you may not use this file except in compliance with the License.
1376
- You may obtain a copy of the License at
1377
-
1378
- http://www.apache.org/licenses/LICENSE-2.0
1379
-
1380
- Unless required by applicable law or agreed to in writing, software
1381
- distributed under the License is distributed on an "AS IS" BASIS,
1382
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1383
- See the License for the specific language governing permissions and
1384
- limitations under the License.
1385
-
1386
- Collection of static dictionary words.
1387
- */
1388
-
1389
- var data = require('./dictionary-browser');
1390
- exports.init = function() {
1391
- exports.dictionary = data.init();
1392
- };
1393
-
1394
- exports.offsetsByLength = new Uint32Array([
1395
- 0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032,
1396
- 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,
1397
- 115968, 118528, 119872, 121280, 122016,
1398
- ]);
1399
-
1400
- exports.sizeBitsByLength = new Uint8Array([
1401
- 0, 0, 0, 0, 10, 10, 11, 11, 10, 10,
1402
- 10, 10, 10, 9, 9, 8, 7, 7, 8, 7,
1403
- 7, 6, 6, 5, 5,
1404
- ]);
1405
-
1406
- exports.minDictionaryWordLength = 4;
1407
- exports.maxDictionaryWordLength = 24;
1408
-
1409
- },{"./dictionary-browser":4}],7:[function(require,module,exports){
1410
- function HuffmanCode(bits, value) {
1411
- this.bits = bits; /* number of bits used for this symbol */
1412
- this.value = value; /* symbol value or table offset */
1413
- }
1414
-
1415
- exports.HuffmanCode = HuffmanCode;
1416
-
1417
- var MAX_LENGTH = 15;
1418
-
1419
- /* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the
1420
- bit-wise reversal of the len least significant bits of key. */
1421
- function GetNextKey(key, len) {
1422
- var step = 1 << (len - 1);
1423
- while (key & step) {
1424
- step >>= 1;
1425
- }
1426
- return (key & (step - 1)) + step;
1427
- }
1428
-
1429
- /* Stores code in table[0], table[step], table[2*step], ..., table[end] */
1430
- /* Assumes that end is an integer multiple of step */
1431
- function ReplicateValue(table, i, step, end, code) {
1432
- do {
1433
- end -= step;
1434
- table[i + end] = new HuffmanCode(code.bits, code.value);
1435
- } while (end > 0);
1436
- }
1437
-
1438
- /* Returns the table width of the next 2nd level table. count is the histogram
1439
- of bit lengths for the remaining symbols, len is the code length of the next
1440
- processed symbol */
1441
- function NextTableBitSize(count, len, root_bits) {
1442
- var left = 1 << (len - root_bits);
1443
- while (len < MAX_LENGTH) {
1444
- left -= count[len];
1445
- if (left <= 0) break;
1446
- ++len;
1447
- left <<= 1;
1448
- }
1449
- return len - root_bits;
1450
- }
1451
-
1452
- exports.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {
1453
- var start_table = table;
1454
- var code; /* current table entry */
1455
- var len; /* current code length */
1456
- var symbol; /* symbol index in original or sorted table */
1457
- var key; /* reversed prefix code */
1458
- var step; /* step size to replicate values in current table */
1459
- var low; /* low bits for current root entry */
1460
- var mask; /* mask for low bits */
1461
- var table_bits; /* key length of current table */
1462
- var table_size; /* size of current table */
1463
- var total_size; /* sum of root table size and 2nd level table sizes */
1464
- var sorted; /* symbols sorted by code length */
1465
- var count = new Int32Array(MAX_LENGTH + 1); /* number of codes of each length */
1466
- var offset = new Int32Array(MAX_LENGTH + 1); /* offsets in sorted table for each length */
1467
-
1468
- sorted = new Int32Array(code_lengths_size);
1469
-
1470
- /* build histogram of code lengths */
1471
- for (symbol = 0; symbol < code_lengths_size; symbol++) {
1472
- count[code_lengths[symbol]]++;
1473
- }
1474
-
1475
- /* generate offsets into sorted symbol table by code length */
1476
- offset[1] = 0;
1477
- for (len = 1; len < MAX_LENGTH; len++) {
1478
- offset[len + 1] = offset[len] + count[len];
1479
- }
1480
-
1481
- /* sort symbols by length, by symbol order within each length */
1482
- for (symbol = 0; symbol < code_lengths_size; symbol++) {
1483
- if (code_lengths[symbol] !== 0) {
1484
- sorted[offset[code_lengths[symbol]]++] = symbol;
1485
- }
1486
- }
1487
-
1488
- table_bits = root_bits;
1489
- table_size = 1 << table_bits;
1490
- total_size = table_size;
1491
-
1492
- /* special case code with only one value */
1493
- if (offset[MAX_LENGTH] === 1) {
1494
- for (key = 0; key < total_size; ++key) {
1495
- root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);
1496
- }
1497
-
1498
- return total_size;
1499
- }
1500
-
1501
- /* fill in root table */
1502
- key = 0;
1503
- symbol = 0;
1504
- for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {
1505
- for (; count[len] > 0; --count[len]) {
1506
- code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);
1507
- ReplicateValue(root_table, table + key, step, table_size, code);
1508
- key = GetNextKey(key, len);
1509
- }
1510
- }
1511
-
1512
- /* fill in 2nd level tables and add pointers to root table */
1513
- mask = total_size - 1;
1514
- low = -1;
1515
- for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {
1516
- for (; count[len] > 0; --count[len]) {
1517
- if ((key & mask) !== low) {
1518
- table += table_size;
1519
- table_bits = NextTableBitSize(count, len, root_bits);
1520
- table_size = 1 << table_bits;
1521
- total_size += table_size;
1522
- low = key & mask;
1523
- root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);
1524
- }
1525
- code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);
1526
- ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);
1527
- key = GetNextKey(key, len);
1528
- }
1529
- }
1530
-
1531
- return total_size;
1532
- }
1533
-
1534
- },{}],8:[function(require,module,exports){
1535
- 'use strict'
1536
-
1537
- exports.byteLength = byteLength
1538
- exports.toByteArray = toByteArray
1539
- exports.fromByteArray = fromByteArray
1540
-
1541
- var lookup = []
1542
- var revLookup = []
1543
- var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
1544
-
1545
- var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
1546
- for (var i = 0, len = code.length; i < len; ++i) {
1547
- lookup[i] = code[i]
1548
- revLookup[code.charCodeAt(i)] = i
1549
- }
1550
-
1551
- // Support decoding URL-safe base64 strings, as Node.js does.
1552
- // See: https://en.wikipedia.org/wiki/Base64#URL_applications
1553
- revLookup['-'.charCodeAt(0)] = 62
1554
- revLookup['_'.charCodeAt(0)] = 63
1555
-
1556
- function getLens (b64) {
1557
- var len = b64.length
1558
-
1559
- if (len % 4 > 0) {
1560
- throw new Error('Invalid string. Length must be a multiple of 4')
1561
- }
1562
-
1563
- // Trim off extra bytes after placeholder bytes are found
1564
- // See: https://github.com/beatgammit/base64-js/issues/42
1565
- var validLen = b64.indexOf('=')
1566
- if (validLen === -1) validLen = len
1567
-
1568
- var placeHoldersLen = validLen === len
1569
- ? 0
1570
- : 4 - (validLen % 4)
1571
-
1572
- return [validLen, placeHoldersLen]
1573
- }
1574
-
1575
- // base64 is 4/3 + up to two characters of the original data
1576
- function byteLength (b64) {
1577
- var lens = getLens(b64)
1578
- var validLen = lens[0]
1579
- var placeHoldersLen = lens[1]
1580
- return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
1581
- }
1582
-
1583
- function _byteLength (b64, validLen, placeHoldersLen) {
1584
- return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
1585
- }
1586
-
1587
- function toByteArray (b64) {
1588
- var tmp
1589
- var lens = getLens(b64)
1590
- var validLen = lens[0]
1591
- var placeHoldersLen = lens[1]
1592
-
1593
- var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
1594
-
1595
- var curByte = 0
1596
-
1597
- // if there are placeholders, only get up to the last complete 4 chars
1598
- var len = placeHoldersLen > 0
1599
- ? validLen - 4
1600
- : validLen
1601
-
1602
- for (var i = 0; i < len; i += 4) {
1603
- tmp =
1604
- (revLookup[b64.charCodeAt(i)] << 18) |
1605
- (revLookup[b64.charCodeAt(i + 1)] << 12) |
1606
- (revLookup[b64.charCodeAt(i + 2)] << 6) |
1607
- revLookup[b64.charCodeAt(i + 3)]
1608
- arr[curByte++] = (tmp >> 16) & 0xFF
1609
- arr[curByte++] = (tmp >> 8) & 0xFF
1610
- arr[curByte++] = tmp & 0xFF
1611
- }
1612
-
1613
- if (placeHoldersLen === 2) {
1614
- tmp =
1615
- (revLookup[b64.charCodeAt(i)] << 2) |
1616
- (revLookup[b64.charCodeAt(i + 1)] >> 4)
1617
- arr[curByte++] = tmp & 0xFF
1618
- }
1619
-
1620
- if (placeHoldersLen === 1) {
1621
- tmp =
1622
- (revLookup[b64.charCodeAt(i)] << 10) |
1623
- (revLookup[b64.charCodeAt(i + 1)] << 4) |
1624
- (revLookup[b64.charCodeAt(i + 2)] >> 2)
1625
- arr[curByte++] = (tmp >> 8) & 0xFF
1626
- arr[curByte++] = tmp & 0xFF
1627
- }
1628
-
1629
- return arr
1630
- }
1631
-
1632
- function tripletToBase64 (num) {
1633
- return lookup[num >> 18 & 0x3F] +
1634
- lookup[num >> 12 & 0x3F] +
1635
- lookup[num >> 6 & 0x3F] +
1636
- lookup[num & 0x3F]
1637
- }
1638
-
1639
- function encodeChunk (uint8, start, end) {
1640
- var tmp
1641
- var output = []
1642
- for (var i = start; i < end; i += 3) {
1643
- tmp =
1644
- ((uint8[i] << 16) & 0xFF0000) +
1645
- ((uint8[i + 1] << 8) & 0xFF00) +
1646
- (uint8[i + 2] & 0xFF)
1647
- output.push(tripletToBase64(tmp))
1648
- }
1649
- return output.join('')
1650
- }
1651
-
1652
- function fromByteArray (uint8) {
1653
- var tmp
1654
- var len = uint8.length
1655
- var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
1656
- var parts = []
1657
- var maxChunkLength = 16383 // must be multiple of 3
1658
-
1659
- // go through the array every three bytes, we'll deal with trailing stuff later
1660
- for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
1661
- parts.push(encodeChunk(
1662
- uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
1663
- ))
1664
- }
1665
-
1666
- // pad the end with zeros, but make sure to not forget the extra bytes
1667
- if (extraBytes === 1) {
1668
- tmp = uint8[len - 1]
1669
- parts.push(
1670
- lookup[tmp >> 2] +
1671
- lookup[(tmp << 4) & 0x3F] +
1672
- '=='
1673
- )
1674
- } else if (extraBytes === 2) {
1675
- tmp = (uint8[len - 2] << 8) + uint8[len - 1]
1676
- parts.push(
1677
- lookup[tmp >> 10] +
1678
- lookup[(tmp >> 4) & 0x3F] +
1679
- lookup[(tmp << 2) & 0x3F] +
1680
- '='
1681
- )
1682
- }
1683
-
1684
- return parts.join('')
1685
- }
1686
-
1687
- },{}],9:[function(require,module,exports){
1688
- /* Copyright 2013 Google Inc. All Rights Reserved.
1689
-
1690
- Licensed under the Apache License, Version 2.0 (the "License");
1691
- you may not use this file except in compliance with the License.
1692
- You may obtain a copy of the License at
1693
-
1694
- http://www.apache.org/licenses/LICENSE-2.0
1695
-
1696
- Unless required by applicable law or agreed to in writing, software
1697
- distributed under the License is distributed on an "AS IS" BASIS,
1698
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1699
- See the License for the specific language governing permissions and
1700
- limitations under the License.
1701
-
1702
- Lookup tables to map prefix codes to value ranges. This is used during
1703
- decoding of the block lengths, literal insertion lengths and copy lengths.
1704
- */
1705
-
1706
- /* Represents the range of values belonging to a prefix code: */
1707
- /* [offset, offset + 2^nbits) */
1708
- function PrefixCodeRange(offset, nbits) {
1709
- this.offset = offset;
1710
- this.nbits = nbits;
1711
- }
1712
-
1713
- exports.kBlockLengthPrefixCode = [
1714
- new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),
1715
- new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),
1716
- new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),
1717
- new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),
1718
- new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),
1719
- new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),
1720
- new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)
1721
- ];
1722
-
1723
- exports.kInsertLengthPrefixCode = [
1724
- new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),
1725
- new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),
1726
- new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),
1727
- new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),
1728
- new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),
1729
- new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),
1730
- ];
1731
-
1732
- exports.kCopyLengthPrefixCode = [
1733
- new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),
1734
- new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),
1735
- new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),
1736
- new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),
1737
- new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),
1738
- new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),
1739
- ];
1740
-
1741
- exports.kInsertRangeLut = [
1742
- 0, 0, 8, 8, 0, 16, 8, 16, 16,
1743
- ];
1744
-
1745
- exports.kCopyRangeLut = [
1746
- 0, 8, 0, 8, 16, 0, 16, 8, 16,
1747
- ];
1748
-
1749
- },{}],10:[function(require,module,exports){
1750
- function BrotliInput(buffer) {
1751
- this.buffer = buffer;
1752
- this.pos = 0;
1753
- }
1754
-
1755
- BrotliInput.prototype.read = function(buf, i, count) {
1756
- if (this.pos + count > this.buffer.length) {
1757
- count = this.buffer.length - this.pos;
1758
- }
1759
-
1760
- for (var p = 0; p < count; p++)
1761
- buf[i + p] = this.buffer[this.pos + p];
1762
-
1763
- this.pos += count;
1764
- return count;
1765
- }
1766
-
1767
- exports.BrotliInput = BrotliInput;
1768
-
1769
- function BrotliOutput(buf) {
1770
- this.buffer = buf;
1771
- this.pos = 0;
1772
- }
1773
-
1774
- BrotliOutput.prototype.write = function(buf, count) {
1775
- if (this.pos + count > this.buffer.length)
1776
- throw new Error('Output buffer is not large enough');
1777
-
1778
- this.buffer.set(buf.subarray(0, count), this.pos);
1779
- this.pos += count;
1780
- return count;
1781
- };
1782
-
1783
- exports.BrotliOutput = BrotliOutput;
1784
-
1785
- },{}],11:[function(require,module,exports){
1786
- /* Copyright 2013 Google Inc. All Rights Reserved.
1787
-
1788
- Licensed under the Apache License, Version 2.0 (the "License");
1789
- you may not use this file except in compliance with the License.
1790
- You may obtain a copy of the License at
1791
-
1792
- http://www.apache.org/licenses/LICENSE-2.0
1793
-
1794
- Unless required by applicable law or agreed to in writing, software
1795
- distributed under the License is distributed on an "AS IS" BASIS,
1796
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1797
- See the License for the specific language governing permissions and
1798
- limitations under the License.
1799
-
1800
- Transformations on dictionary words.
1801
- */
1802
-
1803
- var BrotliDictionary = require('./dictionary');
1804
-
1805
- var kIdentity = 0;
1806
- var kOmitLast1 = 1;
1807
- var kOmitLast2 = 2;
1808
- var kOmitLast3 = 3;
1809
- var kOmitLast4 = 4;
1810
- var kOmitLast5 = 5;
1811
- var kOmitLast6 = 6;
1812
- var kOmitLast7 = 7;
1813
- var kOmitLast8 = 8;
1814
- var kOmitLast9 = 9;
1815
- var kUppercaseFirst = 10;
1816
- var kUppercaseAll = 11;
1817
- var kOmitFirst1 = 12;
1818
- var kOmitFirst2 = 13;
1819
- var kOmitFirst3 = 14;
1820
- var kOmitFirst4 = 15;
1821
- var kOmitFirst5 = 16;
1822
- var kOmitFirst6 = 17;
1823
- var kOmitFirst7 = 18;
1824
- var kOmitFirst8 = 19;
1825
- var kOmitFirst9 = 20;
1826
-
1827
- function Transform(prefix, transform, suffix) {
1828
- this.prefix = new Uint8Array(prefix.length);
1829
- this.transform = transform;
1830
- this.suffix = new Uint8Array(suffix.length);
1831
-
1832
- for (var i = 0; i < prefix.length; i++)
1833
- this.prefix[i] = prefix.charCodeAt(i);
1834
-
1835
- for (var i = 0; i < suffix.length; i++)
1836
- this.suffix[i] = suffix.charCodeAt(i);
1837
- }
1838
-
1839
- var kTransforms = [
1840
- new Transform( "", kIdentity, "" ),
1841
- new Transform( "", kIdentity, " " ),
1842
- new Transform( " ", kIdentity, " " ),
1843
- new Transform( "", kOmitFirst1, "" ),
1844
- new Transform( "", kUppercaseFirst, " " ),
1845
- new Transform( "", kIdentity, " the " ),
1846
- new Transform( " ", kIdentity, "" ),
1847
- new Transform( "s ", kIdentity, " " ),
1848
- new Transform( "", kIdentity, " of " ),
1849
- new Transform( "", kUppercaseFirst, "" ),
1850
- new Transform( "", kIdentity, " and " ),
1851
- new Transform( "", kOmitFirst2, "" ),
1852
- new Transform( "", kOmitLast1, "" ),
1853
- new Transform( ", ", kIdentity, " " ),
1854
- new Transform( "", kIdentity, ", " ),
1855
- new Transform( " ", kUppercaseFirst, " " ),
1856
- new Transform( "", kIdentity, " in " ),
1857
- new Transform( "", kIdentity, " to " ),
1858
- new Transform( "e ", kIdentity, " " ),
1859
- new Transform( "", kIdentity, "\"" ),
1860
- new Transform( "", kIdentity, "." ),
1861
- new Transform( "", kIdentity, "\">" ),
1862
- new Transform( "", kIdentity, "\n" ),
1863
- new Transform( "", kOmitLast3, "" ),
1864
- new Transform( "", kIdentity, "]" ),
1865
- new Transform( "", kIdentity, " for " ),
1866
- new Transform( "", kOmitFirst3, "" ),
1867
- new Transform( "", kOmitLast2, "" ),
1868
- new Transform( "", kIdentity, " a " ),
1869
- new Transform( "", kIdentity, " that " ),
1870
- new Transform( " ", kUppercaseFirst, "" ),
1871
- new Transform( "", kIdentity, ". " ),
1872
- new Transform( ".", kIdentity, "" ),
1873
- new Transform( " ", kIdentity, ", " ),
1874
- new Transform( "", kOmitFirst4, "" ),
1875
- new Transform( "", kIdentity, " with " ),
1876
- new Transform( "", kIdentity, "'" ),
1877
- new Transform( "", kIdentity, " from " ),
1878
- new Transform( "", kIdentity, " by " ),
1879
- new Transform( "", kOmitFirst5, "" ),
1880
- new Transform( "", kOmitFirst6, "" ),
1881
- new Transform( " the ", kIdentity, "" ),
1882
- new Transform( "", kOmitLast4, "" ),
1883
- new Transform( "", kIdentity, ". The " ),
1884
- new Transform( "", kUppercaseAll, "" ),
1885
- new Transform( "", kIdentity, " on " ),
1886
- new Transform( "", kIdentity, " as " ),
1887
- new Transform( "", kIdentity, " is " ),
1888
- new Transform( "", kOmitLast7, "" ),
1889
- new Transform( "", kOmitLast1, "ing " ),
1890
- new Transform( "", kIdentity, "\n\t" ),
1891
- new Transform( "", kIdentity, ":" ),
1892
- new Transform( " ", kIdentity, ". " ),
1893
- new Transform( "", kIdentity, "ed " ),
1894
- new Transform( "", kOmitFirst9, "" ),
1895
- new Transform( "", kOmitFirst7, "" ),
1896
- new Transform( "", kOmitLast6, "" ),
1897
- new Transform( "", kIdentity, "(" ),
1898
- new Transform( "", kUppercaseFirst, ", " ),
1899
- new Transform( "", kOmitLast8, "" ),
1900
- new Transform( "", kIdentity, " at " ),
1901
- new Transform( "", kIdentity, "ly " ),
1902
- new Transform( " the ", kIdentity, " of " ),
1903
- new Transform( "", kOmitLast5, "" ),
1904
- new Transform( "", kOmitLast9, "" ),
1905
- new Transform( " ", kUppercaseFirst, ", " ),
1906
- new Transform( "", kUppercaseFirst, "\"" ),
1907
- new Transform( ".", kIdentity, "(" ),
1908
- new Transform( "", kUppercaseAll, " " ),
1909
- new Transform( "", kUppercaseFirst, "\">" ),
1910
- new Transform( "", kIdentity, "=\"" ),
1911
- new Transform( " ", kIdentity, "." ),
1912
- new Transform( ".com/", kIdentity, "" ),
1913
- new Transform( " the ", kIdentity, " of the " ),
1914
- new Transform( "", kUppercaseFirst, "'" ),
1915
- new Transform( "", kIdentity, ". This " ),
1916
- new Transform( "", kIdentity, "," ),
1917
- new Transform( ".", kIdentity, " " ),
1918
- new Transform( "", kUppercaseFirst, "(" ),
1919
- new Transform( "", kUppercaseFirst, "." ),
1920
- new Transform( "", kIdentity, " not " ),
1921
- new Transform( " ", kIdentity, "=\"" ),
1922
- new Transform( "", kIdentity, "er " ),
1923
- new Transform( " ", kUppercaseAll, " " ),
1924
- new Transform( "", kIdentity, "al " ),
1925
- new Transform( " ", kUppercaseAll, "" ),
1926
- new Transform( "", kIdentity, "='" ),
1927
- new Transform( "", kUppercaseAll, "\"" ),
1928
- new Transform( "", kUppercaseFirst, ". " ),
1929
- new Transform( " ", kIdentity, "(" ),
1930
- new Transform( "", kIdentity, "ful " ),
1931
- new Transform( " ", kUppercaseFirst, ". " ),
1932
- new Transform( "", kIdentity, "ive " ),
1933
- new Transform( "", kIdentity, "less " ),
1934
- new Transform( "", kUppercaseAll, "'" ),
1935
- new Transform( "", kIdentity, "est " ),
1936
- new Transform( " ", kUppercaseFirst, "." ),
1937
- new Transform( "", kUppercaseAll, "\">" ),
1938
- new Transform( " ", kIdentity, "='" ),
1939
- new Transform( "", kUppercaseFirst, "," ),
1940
- new Transform( "", kIdentity, "ize " ),
1941
- new Transform( "", kUppercaseAll, "." ),
1942
- new Transform( "\xc2\xa0", kIdentity, "" ),
1943
- new Transform( " ", kIdentity, "," ),
1944
- new Transform( "", kUppercaseFirst, "=\"" ),
1945
- new Transform( "", kUppercaseAll, "=\"" ),
1946
- new Transform( "", kIdentity, "ous " ),
1947
- new Transform( "", kUppercaseAll, ", " ),
1948
- new Transform( "", kUppercaseFirst, "='" ),
1949
- new Transform( " ", kUppercaseFirst, "," ),
1950
- new Transform( " ", kUppercaseAll, "=\"" ),
1951
- new Transform( " ", kUppercaseAll, ", " ),
1952
- new Transform( "", kUppercaseAll, "," ),
1953
- new Transform( "", kUppercaseAll, "(" ),
1954
- new Transform( "", kUppercaseAll, ". " ),
1955
- new Transform( " ", kUppercaseAll, "." ),
1956
- new Transform( "", kUppercaseAll, "='" ),
1957
- new Transform( " ", kUppercaseAll, ". " ),
1958
- new Transform( " ", kUppercaseFirst, "=\"" ),
1959
- new Transform( " ", kUppercaseAll, "='" ),
1960
- new Transform( " ", kUppercaseFirst, "='" )
1961
- ];
1962
-
1963
- exports.kTransforms = kTransforms;
1964
- exports.kNumTransforms = kTransforms.length;
1965
-
1966
- function ToUpperCase(p, i) {
1967
- if (p[i] < 0xc0) {
1968
- if (p[i] >= 97 && p[i] <= 122) {
1969
- p[i] ^= 32;
1970
- }
1971
- return 1;
1972
- }
1973
-
1974
- /* An overly simplified uppercasing model for utf-8. */
1975
- if (p[i] < 0xe0) {
1976
- p[i + 1] ^= 32;
1977
- return 2;
1978
- }
1979
-
1980
- /* An arbitrary transform for three byte characters. */
1981
- p[i + 2] ^= 5;
1982
- return 3;
1983
- }
1984
-
1985
- exports.transformDictionaryWord = function(dst, idx, word, len, transform) {
1986
- var prefix = kTransforms[transform].prefix;
1987
- var suffix = kTransforms[transform].suffix;
1988
- var t = kTransforms[transform].transform;
1989
- var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);
1990
- var i = 0;
1991
- var start_idx = idx;
1992
- var uppercase;
1993
-
1994
- if (skip > len) {
1995
- skip = len;
1996
- }
1997
-
1998
- var prefix_pos = 0;
1999
- while (prefix_pos < prefix.length) {
2000
- dst[idx++] = prefix[prefix_pos++];
2001
- }
2002
-
2003
- word += skip;
2004
- len -= skip;
2005
-
2006
- if (t <= kOmitLast9) {
2007
- len -= t;
2008
- }
2009
-
2010
- for (i = 0; i < len; i++) {
2011
- dst[idx++] = BrotliDictionary.dictionary[word + i];
2012
- }
2013
-
2014
- uppercase = idx - len;
2015
-
2016
- if (t === kUppercaseFirst) {
2017
- ToUpperCase(dst, uppercase);
2018
- } else if (t === kUppercaseAll) {
2019
- while (len > 0) {
2020
- var step = ToUpperCase(dst, uppercase);
2021
- uppercase += step;
2022
- len -= step;
2023
- }
2024
- }
2025
-
2026
- var suffix_pos = 0;
2027
- while (suffix_pos < suffix.length) {
2028
- dst[idx++] = suffix[suffix_pos++];
2029
- }
2030
-
2031
- return idx - start_idx;
2032
- }
2033
-
2034
- },{"./dictionary":6}],12:[function(require,module,exports){
2035
- module.exports = require('./dec/decode').BrotliDecompressBuffer;
2036
-
2037
- },{"./dec/decode":3}]},{},[12])(12)
2038
- });
2039
- /* eslint-enable */