@reltio/remotes 1.4.1387 → 1.4.1389

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 (130) hide show
  1. package/1219.js +2 -0
  2. package/1219.js.map +1 -0
  3. package/1375.js +1 -1
  4. package/1375.js.map +1 -1
  5. package/1689.css +636 -0
  6. package/1689.css.map +1 -0
  7. package/1689.js +2 -0
  8. package/1689.js.map +1 -0
  9. package/2114.js +1 -1
  10. package/2114.js.map +1 -1
  11. package/2443.js +3 -0
  12. package/{8782.js.LICENSE.txt → 2443.js.LICENSE.txt} +0 -0
  13. package/2443.js.map +1 -0
  14. package/2890.js +1 -1
  15. package/2890.js.map +1 -1
  16. package/3149.js +2 -0
  17. package/3149.js.map +1 -0
  18. package/3213.js +3 -0
  19. package/{3723.js.LICENSE.txt → 3213.js.LICENSE.txt} +0 -0
  20. package/3213.js.map +1 -0
  21. package/3273.js +2 -0
  22. package/3273.js.map +1 -0
  23. package/3540.js +1 -1
  24. package/3540.js.map +1 -1
  25. package/3602.js +2 -0
  26. package/3602.js.map +1 -0
  27. package/4015.js +2 -0
  28. package/4015.js.map +1 -0
  29. package/447.js +1 -1
  30. package/447.js.map +1 -1
  31. package/461.js +1 -1
  32. package/461.js.map +1 -1
  33. package/4678.js +2 -0
  34. package/4678.js.map +1 -0
  35. package/4843.js +1 -1
  36. package/{7880.css → 4881.css} +1 -1
  37. package/{7880.css.map → 4881.css.map} +1 -1
  38. package/4881.js +2 -0
  39. package/4881.js.map +1 -0
  40. package/4889.js +1 -1
  41. package/4889.js.map +1 -1
  42. package/5400.js +1 -1
  43. package/5400.js.map +1 -1
  44. package/5601.js +2 -0
  45. package/5601.js.map +1 -0
  46. package/5709.js +1 -1
  47. package/5709.js.map +1 -1
  48. package/5720.js +1 -1
  49. package/5720.js.map +1 -1
  50. package/5937.js +1 -1
  51. package/5937.js.map +1 -1
  52. package/6103.js +1 -1
  53. package/6103.js.map +1 -1
  54. package/6312.js +1 -1
  55. package/6312.js.map +1 -1
  56. package/6413.js +3 -0
  57. package/{5312.js.LICENSE.txt → 6413.js.LICENSE.txt} +0 -0
  58. package/6413.js.map +1 -0
  59. package/6617.js +2 -0
  60. package/6617.js.map +1 -0
  61. package/6669.js +2 -0
  62. package/6669.js.map +1 -0
  63. package/6710.js +2 -0
  64. package/6710.js.map +1 -0
  65. package/6913.js +2 -0
  66. package/6913.js.map +1 -0
  67. package/7584.js +2 -0
  68. package/7584.js.map +1 -0
  69. package/7937.js +1 -1
  70. package/7937.js.map +1 -1
  71. package/8051.js +2 -0
  72. package/8051.js.map +1 -0
  73. package/8183.js +2 -0
  74. package/8183.js.map +1 -0
  75. package/8443.js +2 -0
  76. package/8443.js.map +1 -0
  77. package/9043.js +1 -1
  78. package/9043.js.map +1 -1
  79. package/9211.js +1 -1
  80. package/9211.js.map +1 -1
  81. package/9431.js +1 -1
  82. package/9431.js.map +1 -1
  83. package/9630.js +1 -1
  84. package/9630.js.map +1 -1
  85. package/9754.js +3 -0
  86. package/{9396.js.LICENSE.txt → 9754.js.LICENSE.txt} +0 -0
  87. package/9754.js.map +1 -0
  88. package/99.js +2 -0
  89. package/99.js.map +1 -0
  90. package/package.json +1 -1
  91. package/remoteEntry.js +1 -1
  92. package/remoteEntry.js.map +1 -1
  93. package/162.js +0 -2
  94. package/162.js.map +0 -1
  95. package/1807.js +0 -2
  96. package/1807.js.map +0 -1
  97. package/3723.js +0 -3
  98. package/3723.js.map +0 -1
  99. package/376.js +0 -2
  100. package/376.js.map +0 -1
  101. package/3760.js +0 -2
  102. package/3760.js.map +0 -1
  103. package/39.js +0 -2
  104. package/39.js.map +0 -1
  105. package/4038.js +0 -2
  106. package/4038.js.map +0 -1
  107. package/4312.js +0 -2
  108. package/4312.js.map +0 -1
  109. package/4689.js +0 -2
  110. package/4689.js.map +0 -1
  111. package/4713.js +0 -2
  112. package/4713.js.map +0 -1
  113. package/5312.js +0 -3
  114. package/5312.js.map +0 -1
  115. package/7861.js +0 -2
  116. package/7861.js.map +0 -1
  117. package/7880.js +0 -2
  118. package/7880.js.map +0 -1
  119. package/8782.js +0 -3
  120. package/8782.js.map +0 -1
  121. package/8922.js +0 -2
  122. package/8922.js.map +0 -1
  123. package/9396.js +0 -3
  124. package/9396.js.map +0 -1
  125. package/9606.css +0 -3
  126. package/9606.css.map +0 -1
  127. package/9606.js +0 -2
  128. package/9606.js.map +0 -1
  129. package/9992.js +0 -2
  130. package/9992.js.map +0 -1
package/9396.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"9396.js","mappings":"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","sources":["webpack://@reltio/remotes/../../node_modules/@material-ui/icons/ArrowRightAlt.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/DragIndicator.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Flag.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/KeyboardArrowLeft.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/KeyboardArrowRight.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Person.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Send.js","webpack://@reltio/remotes/../../node_modules/@material-ui/icons/Visibility.js","webpack://@reltio/remotes/../../node_modules/frontend-collective-react-dnd-scrollzone/lib/index.js","webpack://@reltio/remotes/../../node_modules/frontend-collective-react-dnd-scrollzone/lib/util.js","webpack://@reltio/remotes/../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://@reltio/remotes/../../node_modules/parse-srcset/src/parse-srcset.js","webpack://@reltio/remotes/../../node_modules/picocolors/picocolors.browser.js","webpack://@reltio/remotes/../../node_modules/react-display-name/lib/getDisplayName.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Grid/utils/CellSizeAndPositionManager.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Grid/utils/maxElementSize.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/utils/createCallbackMemoizer.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Grid/utils/updateScrollIndexHelper.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/node_modules/dom-helpers/esm/canUseDOM.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/node_modules/dom-helpers/esm/scrollbarSize.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/utils/animationFrame.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Grid/Grid.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/utils/requestAnimationTimeout.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Grid/defaultOverscanIndicesGetter.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Grid/defaultCellRangeRenderer.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Grid/accessibilityOverscanIndicesGetter.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/ArrowKeyStepper/types.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/ArrowKeyStepper/ArrowKeyStepper.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/AutoSizer/AutoSizer.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/vendor/detectElementResize.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurer.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurerCache.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Collection/CollectionView.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Collection/types.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Collection/Section.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Collection/SectionManager.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/utils/getUpdatedOffsetForIndex.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Collection/Collection.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Collection/utils/calculateSizeAndPositionData.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/ColumnSizer/ColumnSizer.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/InfiniteLoader/InfiniteLoader.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/List/types.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/List/List.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/vendor/binarySearchBounds.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/vendor/intervalTree.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Masonry/PositionCache.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Masonry/Masonry.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/MultiGrid/CellMeasurerCacheDecorator.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/MultiGrid/MultiGrid.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Table/defaultHeaderRowRenderer.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/ScrollSync/ScrollSync.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Table/SortDirection.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Table/SortIndicator.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Table/defaultHeaderRenderer.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Table/defaultRowRenderer.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Table/Column.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Table/Table.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Table/defaultCellDataGetter.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/Table/defaultCellRenderer.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/WindowScroller/utils/dimensions.js","webpack://@reltio/remotes/../../node_modules/react-virtualized/dist/es/WindowScroller/WindowScroller.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/index.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/deepmerge/dist/cjs.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/dom-serializer/lib/foreignNames.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/dom-serializer/lib/index.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domelementtype/lib/index.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domhandler/lib/index.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domhandler/lib/node.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domutils/lib/feeds.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domutils/lib/helpers.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domutils/lib/index.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domutils/lib/legacy.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domutils/lib/manipulation.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domutils/lib/querying.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domutils/lib/stringify.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/domutils/lib/traversal.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/entities/lib/decode.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/entities/lib/decode_codepoint.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/entities/lib/encode.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/entities/lib/index.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/escape-string-regexp/index.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/htmlparser2/lib/FeedHandler.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/htmlparser2/lib/Parser.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/htmlparser2/lib/Tokenizer.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/htmlparser2/lib/index.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/is-plain-object/dist/is-plain-object.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/at-rule.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/comment.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/container.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/css-syntax-error.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/declaration.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/document.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/fromJSON.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/input.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/lazy-result.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/list.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/map-generator.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/no-work-result.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/node.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/parse.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/parser.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/postcss.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/previous-map.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/processor.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/result.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/root.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/rule.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/stringifier.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/stringify.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/symbols.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/tokenize.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/warn-once.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/postcss/lib/warning.js","webpack://@reltio/remotes/../../node_modules/sanitize-html/node_modules/nanoid/non-secure/index.cjs"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M16.01 11H4v2h12.01v3L20 12l-3.99-4z\"\n}), 'ArrowRightAlt');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'DragIndicator');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6z\"\n}), 'Flag');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'KeyboardArrowLeft');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'Person');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\"\n}), 'Send');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'Visibility');\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createHorizontalStrength = createHorizontalStrength;\nexports.createVerticalStrength = createVerticalStrength;\nexports.createScrollingComponent = createScrollingComponent;\nexports.default = createScrollingComponentWithConsumer;\nexports.defaultVerticalStrength = exports.defaultHorizontalStrength = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _lodash = _interopRequireDefault(require(\"lodash.throttle\"));\n\nvar _raf = _interopRequireDefault(require(\"raf\"));\n\nvar _reactDisplayName = _interopRequireDefault(require(\"react-display-name\"));\n\nvar _reactDnd = require(\"react-dnd\");\n\nvar _hoistNonReactStatics = _interopRequireDefault(require(\"hoist-non-react-statics\"));\n\nvar _util = require(\"./util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DEFAULT_BUFFER = 150;\n\nfunction createHorizontalStrength(_buffer) {\n return function defaultHorizontalStrength(_ref, point) {\n var x = _ref.x,\n w = _ref.w,\n y = _ref.y,\n h = _ref.h;\n var buffer = Math.min(w / 2, _buffer);\n var inRange = point.x >= x && point.x <= x + w;\n var inBox = inRange && point.y >= y && point.y <= y + h;\n\n if (inBox) {\n if (point.x < x + buffer) {\n return (point.x - x - buffer) / buffer;\n }\n\n if (point.x > x + w - buffer) {\n return -(x + w - point.x - buffer) / buffer;\n }\n }\n\n return 0;\n };\n}\n\nfunction createVerticalStrength(_buffer) {\n return function defaultVerticalStrength(_ref2, point) {\n var y = _ref2.y,\n h = _ref2.h,\n x = _ref2.x,\n w = _ref2.w;\n var buffer = Math.min(h / 2, _buffer);\n var inRange = point.y >= y && point.y <= y + h;\n var inBox = inRange && point.x >= x && point.x <= x + w;\n\n if (inBox) {\n if (point.y < y + buffer) {\n return (point.y - y - buffer) / buffer;\n }\n\n if (point.y > y + h - buffer) {\n return -(y + h - point.y - buffer) / buffer;\n }\n }\n\n return 0;\n };\n}\n\nvar defaultHorizontalStrength = createHorizontalStrength(DEFAULT_BUFFER);\nexports.defaultHorizontalStrength = defaultHorizontalStrength;\nvar defaultVerticalStrength = createVerticalStrength(DEFAULT_BUFFER);\nexports.defaultVerticalStrength = defaultVerticalStrength;\n\nfunction createScrollingComponent(WrappedComponent) {\n var ScrollingComponent =\n /*#__PURE__*/\n function (_Component) {\n _inherits(ScrollingComponent, _Component);\n\n // Update scaleX and scaleY every 100ms or so\n // and start scrolling if necessary\n function ScrollingComponent(props, ctx) {\n var _this;\n\n _classCallCheck(this, ScrollingComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollingComponent).call(this, props, ctx));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateScrolling\", (0, _lodash.default)(function (evt) {\n var _this$container$getBo = _this.container.getBoundingClientRect(),\n x = _this$container$getBo.left,\n y = _this$container$getBo.top,\n w = _this$container$getBo.width,\n h = _this$container$getBo.height;\n\n var box = {\n x: x,\n y: y,\n w: w,\n h: h\n };\n var coords = (0, _util.getCoords)(evt); // calculate strength\n\n var _this$props = _this.props,\n horizontalStrength = _this$props.horizontalStrength,\n verticalStrength = _this$props.verticalStrength;\n _this.scaleX = horizontalStrength(box, coords);\n _this.scaleY = verticalStrength(box, coords); // start scrolling if we need to\n\n if (!_this.frame && (_this.scaleX || _this.scaleY)) {\n _this.startScrolling();\n }\n }, 100, {\n trailing: false\n }));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEvent\", function (evt) {\n if (_this.dragging && !_this.attached) {\n _this.attach();\n\n _this.updateScrolling(evt);\n }\n });\n\n _this.wrappedInstance = _react.default.createRef();\n _this.scaleX = 0;\n _this.scaleY = 0;\n _this.frame = null;\n _this.attached = false;\n _this.dragging = false;\n return _this;\n }\n\n _createClass(ScrollingComponent, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n // eslint-disable-next-line react/no-find-dom-node\n this.container = (0, _reactDom.findDOMNode)(this.wrappedInstance.current);\n\n if (this.container && typeof this.container.addEventListener === 'function') {\n this.container.addEventListener('dragover', this.handleEvent);\n } // touchmove events don't seem to work across siblings, so we unfortunately\n // have to attach the listeners to the body\n\n\n window.document.body.addEventListener('touchmove', this.handleEvent);\n var dragDropManager = this.props.dragDropManager;\n this.clearMonitorSubscription = dragDropManager.getMonitor().subscribeToStateChange(function () {\n return _this2.handleMonitorChange();\n });\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.container && typeof this.container.removeEventListener === 'function') {\n this.container.removeEventListener('dragover', this.handleEvent);\n }\n\n window.document.body.removeEventListener('touchmove', this.handleEvent);\n this.clearMonitorSubscription();\n this.stopScrolling();\n }\n }, {\n key: \"handleMonitorChange\",\n value: function handleMonitorChange() {\n var dragDropManager = this.props.dragDropManager;\n var isDragging = dragDropManager.getMonitor().isDragging();\n\n if (!this.dragging && isDragging) {\n this.dragging = true;\n } else if (this.dragging && !isDragging) {\n this.dragging = false;\n this.stopScrolling();\n }\n }\n }, {\n key: \"attach\",\n value: function attach() {\n this.attached = true;\n window.document.body.addEventListener('dragover', this.updateScrolling);\n window.document.body.addEventListener('touchmove', this.updateScrolling);\n }\n }, {\n key: \"detach\",\n value: function detach() {\n this.attached = false;\n window.document.body.removeEventListener('dragover', this.updateScrolling);\n window.document.body.removeEventListener('touchmove', this.updateScrolling);\n }\n }, {\n key: \"startScrolling\",\n value: function startScrolling() {\n var _this3 = this;\n\n var i = 0;\n\n var tick = function tick() {\n var scaleX = _this3.scaleX,\n scaleY = _this3.scaleY,\n container = _this3.container;\n var _this3$props = _this3.props,\n strengthMultiplier = _this3$props.strengthMultiplier,\n onScrollChange = _this3$props.onScrollChange; // stop scrolling if there's nothing to do\n\n if (strengthMultiplier === 0 || scaleX + scaleY === 0) {\n _this3.stopScrolling();\n\n return;\n } // there's a bug in safari where it seems like we can't get\n // mousemove events from a container that also emits a scroll\n // event that same frame. So we double the strengthMultiplier and only adjust\n // the scroll position at 30fps\n\n\n i += 1;\n\n if (i % 2) {\n var scrollLeft = container.scrollLeft,\n scrollTop = container.scrollTop,\n scrollWidth = container.scrollWidth,\n scrollHeight = container.scrollHeight,\n clientWidth = container.clientWidth,\n clientHeight = container.clientHeight;\n var newLeft = scaleX ? container.scrollLeft = (0, _util.intBetween)(0, scrollWidth - clientWidth, scrollLeft + scaleX * strengthMultiplier) : scrollLeft;\n var newTop = scaleY ? container.scrollTop = (0, _util.intBetween)(0, scrollHeight - clientHeight, scrollTop + scaleY * strengthMultiplier) : scrollTop;\n onScrollChange(newLeft, newTop);\n }\n\n _this3.frame = (0, _raf.default)(tick);\n };\n\n tick();\n }\n }, {\n key: \"stopScrolling\",\n value: function stopScrolling() {\n this.detach();\n this.scaleX = 0;\n this.scaleY = 0;\n\n if (this.frame) {\n _raf.default.cancel(this.frame);\n\n this.frame = null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n strengthMultiplier = _this$props2.strengthMultiplier,\n verticalStrength = _this$props2.verticalStrength,\n horizontalStrength = _this$props2.horizontalStrength,\n onScrollChange = _this$props2.onScrollChange,\n props = _objectWithoutProperties(_this$props2, [\"strengthMultiplier\", \"verticalStrength\", \"horizontalStrength\", \"onScrollChange\"]);\n\n return _react.default.createElement(WrappedComponent, _extends({\n ref: this.wrappedInstance\n }, props));\n }\n }]);\n\n return ScrollingComponent;\n }(_react.Component);\n\n _defineProperty(ScrollingComponent, \"displayName\", \"Scrolling(\".concat((0, _reactDisplayName.default)(WrappedComponent), \")\"));\n\n _defineProperty(ScrollingComponent, \"propTypes\", {\n // eslint-disable-next-line react/forbid-prop-types\n dragDropManager: _propTypes.default.object.isRequired,\n onScrollChange: _propTypes.default.func,\n verticalStrength: _propTypes.default.func,\n horizontalStrength: _propTypes.default.func,\n strengthMultiplier: _propTypes.default.number\n });\n\n _defineProperty(ScrollingComponent, \"defaultProps\", {\n onScrollChange: _util.noop,\n verticalStrength: defaultVerticalStrength,\n horizontalStrength: defaultHorizontalStrength,\n strengthMultiplier: 30\n });\n\n return (0, _hoistNonReactStatics.default)(ScrollingComponent, WrappedComponent);\n}\n\nfunction createScrollingComponentWithConsumer(WrappedComponent) {\n var ScrollingComponent = createScrollingComponent(WrappedComponent);\n return function (props) {\n return _react.default.createElement(_reactDnd.DragDropContextConsumer, null, function (_ref3) {\n var dragDropManager = _ref3.dragDropManager;\n return dragDropManager === undefined ? null : _react.default.createElement(ScrollingComponent, _extends({}, props, {\n dragDropManager: dragDropManager\n }));\n });\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.noop = noop;\nexports.intBetween = intBetween;\nexports.getCoords = getCoords;\n\nfunction noop() {}\n\nfunction intBetween(min, max, val) {\n return Math.floor(Math.min(max, Math.max(min, val)));\n}\n\nfunction getCoords(evt) {\n if (evt.type === 'touchmove') {\n return {\n x: evt.changedTouches[0].clientX,\n y: evt.changedTouches[0].clientY\n };\n }\n\n return {\n x: evt.clientX,\n y: evt.clientY\n };\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * Srcset Parser\n *\n * By Alex Bell | MIT License\n *\n * JS Parser for the string value that appears in markup <img srcset=\"here\">\n *\n * @returns Array [{url: _, d: _, w: _, h:_}, ...]\n *\n * Based super duper closely on the reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n *\n * Most comments are copied in directly from the spec\n * (except for comments in parens).\n */\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof module === 'object' && module.exports) {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.parseSrcset = factory();\n\t}\n}(this, function () {\n\n\t// 1. Let input be the value passed to this algorithm.\n\treturn function (input) {\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// Manual is faster than RegEx\n\t\t// http://bjorn.tipling.com/state-and-regular-expressions-in-javascript\n\t\t// http://jsperf.com/whitespace-character/5\n\t\tfunction isSpace(c) {\n\t\t\treturn (c === \"\\u0020\" || // space\n\t\t\tc === \"\\u0009\" || // horizontal tab\n\t\t\tc === \"\\u000A\" || // new line\n\t\t\tc === \"\\u000C\" || // form feed\n\t\t\tc === \"\\u000D\"); // carriage return\n\t\t}\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t\tmatch = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\n\t\t\t// (Don't use \\s, to avoid matching non-breaking space)\n\t\t\tregexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t\t\tregexTrailingCommas = /[,]+$/,\n\t\t\tregexNonNegativeInteger = /^\\d+$/,\n\n\t\t\t// ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t\t\t// Must include at least one digit.\n\t\t\t// According to spec tests any decimal point must be followed by a digit.\n\t\t\t// No leading plus sign is allowed.)\n\t\t\t// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t\t\tregexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,\n\n\t\t\turl,\n\t\t\tdescriptors,\n\t\t\tcurrentDescriptor,\n\t\t\tstate,\n\t\t\tc,\n\n\t\t\t// 2. Let position be a pointer into input, initially pointing at the start\n\t\t\t// of the string.\n\t\t\tpos = 0,\n\n\t\t\t// 3. Let candidates be an initially empty source set.\n\t\t\tcandidates = [];\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\n\t\t/**\n\t\t * Tokenizes descriptor properties prior to parsing\n\t\t * Returns undefined.\n\t\t */\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t\t// Space character\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors and let current descriptor be the empty string.\n\t\t\t\t\t// Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t/**\n\t\t * Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t * @return undefined\n\t\t */\n\t\t// Declared outside of the while loop so that it's only created once.\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t\t// 10. Let width be absent.\n\t\t\t\t// 11. Let density be absent.\n\t\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t\tw, d, h, i,\n\t\t\t\tcandidate = {},\n\t\t\t\tdesc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tcandidates.push(candidate);\n\t\t\t} else if (console && console.log) {\n\t\t\t\tconsole.log(\"Invalid srcset descriptor found in '\" +\n\t\t\t\t\tinput + \"' at '\" + desc + \"'.\");\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t}\n}));\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getDisplayName;\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","/**\n * Helper method that determines when to recalculate row or column metadata.\n */\nexport default function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) {\n var cellCount = _ref.cellCount,\n cellSize = _ref.cellSize,\n computeMetadataCallback = _ref.computeMetadataCallback,\n computeMetadataCallbackProps = _ref.computeMetadataCallbackProps,\n nextCellsCount = _ref.nextCellsCount,\n nextCellSize = _ref.nextCellSize,\n nextScrollToIndex = _ref.nextScrollToIndex,\n scrollToIndex = _ref.scrollToIndex,\n updateScrollOffsetForScrollToIndex = _ref.updateScrollOffsetForScrollToIndex;\n\n // Don't compare cell sizes if they are functions because inline functions would cause infinite loops.\n // In that event users should use the manual recompute methods to inform of changes.\n if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {\n computeMetadataCallback(computeMetadataCallbackProps); // Updated cell metadata may have hidden the previous scrolled-to item.\n // In this case we should also update the scrollTop to ensure it stays visible.\n\n if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {\n updateScrollOffsetForScrollToIndex();\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\n/**\n * Just-in-time calculates and caches size and position information for a collection of cells.\n */\nvar CellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n // Cache of size and position data for cells, mapped by cell index.\n // Note that invalid values may exist in this map so only rely on cells up to this._lastMeasuredIndex\n // Measurements for cells up to this index can be trusted; cells afterward should be estimated.\n // Used in deferred mode to track which cells have been queued for measurement.\n function CellSizeAndPositionManager(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeGetter = _ref.cellSizeGetter,\n estimatedCellSize = _ref.estimatedCellSize;\n\n _classCallCheck(this, CellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionData\", {});\n\n _defineProperty(this, \"_lastMeasuredIndex\", -1);\n\n _defineProperty(this, \"_lastBatchedIndex\", -1);\n\n _defineProperty(this, \"_cellCount\", void 0);\n\n _defineProperty(this, \"_cellSizeGetter\", void 0);\n\n _defineProperty(this, \"_estimatedCellSize\", void 0);\n\n this._cellSizeGetter = cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n }\n\n _createClass(CellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return false;\n }\n }, {\n key: \"configure\",\n value: function configure(_ref2) {\n var cellCount = _ref2.cellCount,\n estimatedCellSize = _ref2.estimatedCellSize,\n cellSizeGetter = _ref2.cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n this._cellSizeGetter = cellSizeGetter;\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellCount;\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._estimatedCellSize;\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._lastMeasuredIndex;\n }\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment() {\n return 0;\n }\n /**\n * This method returns the size and position for the cell at the specified index.\n * It just-in-time calculates (or used cached values) for cells leading up to the index.\n */\n\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n if (index < 0 || index >= this._cellCount) {\n throw Error(\"Requested index \".concat(index, \" is outside of range 0..\").concat(this._cellCount));\n }\n\n if (index > this._lastMeasuredIndex) {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var offset = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n\n for (var i = this._lastMeasuredIndex + 1; i <= index; i++) {\n var size = this._cellSizeGetter({\n index: i\n }); // undefined or NaN probably means a logic error in the size getter.\n // null means we're using CellMeasurer and haven't yet measured a given index.\n\n\n if (size === undefined || isNaN(size)) {\n throw Error(\"Invalid size returned for cell \".concat(i, \" of value \").concat(size));\n } else if (size === null) {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: 0\n };\n this._lastBatchedIndex = index;\n } else {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n this._lastMeasuredIndex = index;\n }\n }\n }\n\n return this._cellSizeAndPositionData[index];\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._lastMeasuredIndex >= 0 ? this._cellSizeAndPositionData[this._lastMeasuredIndex] : {\n offset: 0,\n size: 0\n };\n }\n /**\n * Total size of all cells being measured.\n * This value will be completely estimated initially.\n * As cells are measured, the estimate will be updated.\n */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var totalSizeOfMeasuredCells = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n var numUnmeasuredCells = this._cellCount - this._lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredCells = numUnmeasuredCells * this._estimatedCellSize;\n return totalSizeOfMeasuredCells + totalSizeOfUnmeasuredCells;\n }\n /**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param containerSize Size (width or height) of the container viewport\n * @param currentOffset Container's current (x or y) offset\n * @param totalSize Total size (width or height) of all cells\n * @return Offset to use to ensure the specified cell is visible\n */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n\n if (containerSize <= 0) {\n return 0;\n }\n\n var datum = this.getSizeAndPositionOfCell(targetIndex);\n var maxOffset = datum.offset;\n var minOffset = maxOffset - containerSize + datum.size;\n var idealOffset;\n\n switch (align) {\n case 'start':\n idealOffset = maxOffset;\n break;\n\n case 'end':\n idealOffset = minOffset;\n break;\n\n case 'center':\n idealOffset = maxOffset - (containerSize - datum.size) / 2;\n break;\n\n default:\n idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n break;\n }\n\n var totalSize = this.getTotalSize();\n return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n }\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(params) {\n var containerSize = params.containerSize,\n offset = params.offset;\n var totalSize = this.getTotalSize();\n\n if (totalSize === 0) {\n return {};\n }\n\n var maxOffset = offset + containerSize;\n\n var start = this._findNearestCell(offset);\n\n var datum = this.getSizeAndPositionOfCell(start);\n offset = datum.offset + datum.size;\n var stop = start;\n\n while (offset < maxOffset && stop < this._cellCount - 1) {\n stop++;\n offset += this.getSizeAndPositionOfCell(stop).size;\n }\n\n return {\n start: start,\n stop: stop\n };\n }\n /**\n * Clear all cached values for cells after the specified index.\n * This method should be called for any cell that has changed its size.\n * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionOfCell() is called.\n */\n\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._lastMeasuredIndex = Math.min(this._lastMeasuredIndex, index - 1);\n }\n }, {\n key: \"_binarySearch\",\n value: function _binarySearch(high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = this.getSizeAndPositionOfCell(middle).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n }\n }, {\n key: \"_exponentialSearch\",\n value: function _exponentialSearch(index, offset) {\n var interval = 1;\n\n while (index < this._cellCount && this.getSizeAndPositionOfCell(index).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return this._binarySearch(Math.min(index, this._cellCount - 1), Math.floor(index / 2), offset);\n }\n /**\n * Searches for the cell (index) nearest the specified offset.\n *\n * If no exact match is found the next lowest cell index will be returned.\n * This allows partially visible cells (with offsets just before/above the fold) to be visible.\n */\n\n }, {\n key: \"_findNearestCell\",\n value: function _findNearestCell(offset) {\n if (isNaN(offset)) {\n throw Error(\"Invalid offset \".concat(offset, \" specified\"));\n } // Our search algorithms find the nearest match at or below the specified offset.\n // So make sure the offset is at least 0 or no match will be found.\n\n\n offset = Math.max(0, offset);\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var lastMeasuredIndex = Math.max(0, this._lastMeasuredIndex);\n\n if (lastMeasuredCellSizeAndPosition.offset >= offset) {\n // If we've already measured cells within this range just use a binary search as it's faster.\n return this._binarySearch(lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of cells as a binary search would.\n // The overall complexity for this approach is O(log n).\n return this._exponentialSearch(lastMeasuredIndex, offset);\n }\n }\n }]);\n\n return CellSizeAndPositionManager;\n}();\n\nexport { CellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport CellSizeAndPositionManager from './CellSizeAndPositionManager';\nimport { getMaxElementSize } from './maxElementSize.js';\n\n/**\n * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.\n */\nvar ScalingCellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n function ScalingCellSizeAndPositionManager(_ref) {\n var _ref$maxScrollSize = _ref.maxScrollSize,\n maxScrollSize = _ref$maxScrollSize === void 0 ? getMaxElementSize() : _ref$maxScrollSize,\n params = _objectWithoutProperties(_ref, [\"maxScrollSize\"]);\n\n _classCallCheck(this, ScalingCellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionManager\", void 0);\n\n _defineProperty(this, \"_maxScrollSize\", void 0);\n\n // Favor composition over inheritance to simplify IE10 support\n this._cellSizeAndPositionManager = new CellSizeAndPositionManager(params);\n this._maxScrollSize = maxScrollSize;\n }\n\n _createClass(ScalingCellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;\n }\n }, {\n key: \"configure\",\n value: function configure(params) {\n this._cellSizeAndPositionManager.configure(params);\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellSizeAndPositionManager.getCellCount();\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._cellSizeAndPositionManager.getEstimatedCellSize();\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._cellSizeAndPositionManager.getLastMeasuredIndex();\n }\n /**\n * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.\n * The offset passed to this function is scaled (safe) as well.\n */\n\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment(_ref2) {\n var containerSize = _ref2.containerSize,\n offset = _ref2.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - totalSize));\n }\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();\n }\n /** See CellSizeAndPositionManager#getTotalSize */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());\n }\n /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n currentOffset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: currentOffset\n });\n\n var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: align,\n containerSize: containerSize,\n currentOffset: currentOffset,\n targetIndex: targetIndex\n });\n\n return this._offsetToSafeOffset({\n containerSize: containerSize,\n offset: offset\n });\n }\n /** See CellSizeAndPositionManager#getVisibleCellRange */\n\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(_ref4) {\n var containerSize = _ref4.containerSize,\n offset = _ref4.offset;\n offset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: offset\n });\n return this._cellSizeAndPositionManager.getVisibleCellRange({\n containerSize: containerSize,\n offset: offset\n });\n }\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._cellSizeAndPositionManager.resetCell(index);\n }\n }, {\n key: \"_getOffsetPercentage\",\n value: function _getOffsetPercentage(_ref5) {\n var containerSize = _ref5.containerSize,\n offset = _ref5.offset,\n totalSize = _ref5.totalSize;\n return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);\n }\n }, {\n key: \"_offsetToSafeOffset\",\n value: function _offsetToSafeOffset(_ref6) {\n var containerSize = _ref6.containerSize,\n offset = _ref6.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: totalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - containerSize));\n }\n }\n }, {\n key: \"_safeOffsetToOffset\",\n value: function _safeOffsetToOffset(_ref7) {\n var containerSize = _ref7.containerSize,\n offset = _ref7.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (totalSize - containerSize));\n }\n }\n }]);\n\n return ScalingCellSizeAndPositionManager;\n}();\n\nexport { ScalingCellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","var DEFAULT_MAX_ELEMENT_SIZE = 1500000;\nvar CHROME_MAX_ELEMENT_SIZE = 1.67771e7;\n\nvar isBrowser = function isBrowser() {\n return typeof window !== 'undefined';\n};\n\nvar isChrome = function isChrome() {\n return !!window.chrome;\n};\n\nexport var getMaxElementSize = function getMaxElementSize() {\n if (isBrowser()) {\n if (isChrome()) {\n return CHROME_MAX_ELEMENT_SIZE;\n }\n }\n\n return DEFAULT_MAX_ELEMENT_SIZE;\n};","/**\n * Helper utility that updates the specified callback whenever any of the specified indices have changed.\n */\nexport default function createCallbackMemoizer() {\n var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var cachedIndices = {};\n return function (_ref) {\n var callback = _ref.callback,\n indices = _ref.indices;\n var keys = Object.keys(indices);\n var allInitialized = !requireAllKeys || keys.every(function (key) {\n var value = indices[key];\n return Array.isArray(value) ? value.length > 0 : value >= 0;\n });\n var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) {\n var cachedValue = cachedIndices[key];\n var value = indices[key];\n return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;\n });\n cachedIndices = indices;\n\n if (allInitialized && indexChanged) {\n callback(indices);\n }\n };\n}","import ScalingCellSizeAndPositionManager from './ScalingCellSizeAndPositionManager.js';\n/**\n * Helper function that determines when to update scroll offsets to ensure that a scroll-to-index remains visible.\n * This function also ensures that the scroll ofset isn't past the last column/row of cells.\n */\n\nexport default function updateScrollIndexHelper(_ref) {\n var cellSize = _ref.cellSize,\n cellSizeAndPositionManager = _ref.cellSizeAndPositionManager,\n previousCellsCount = _ref.previousCellsCount,\n previousCellSize = _ref.previousCellSize,\n previousScrollToAlignment = _ref.previousScrollToAlignment,\n previousScrollToIndex = _ref.previousScrollToIndex,\n previousSize = _ref.previousSize,\n scrollOffset = _ref.scrollOffset,\n scrollToAlignment = _ref.scrollToAlignment,\n scrollToIndex = _ref.scrollToIndex,\n size = _ref.size,\n sizeJustIncreasedFromZero = _ref.sizeJustIncreasedFromZero,\n updateScrollIndexCallback = _ref.updateScrollIndexCallback;\n var cellCount = cellSizeAndPositionManager.getCellCount();\n var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;\n var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize; // If we have a new scroll target OR if height/row-height has changed,\n // We should ensure that the scroll target is visible.\n\n if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {\n updateScrollIndexCallback(scrollToIndex); // If we don't have a selected item but list size or number of children have decreased,\n // Make sure we aren't scrolled too far past the current content.\n } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {\n // We need to ensure that the current scroll offset is still within the collection's range.\n // To do this, we don't need to measure everything; CellMeasurer would perform poorly.\n // Just check to make sure we're still okay.\n // Only adjust the scroll position if we've scrolled below the last set of rows.\n if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {\n updateScrollIndexCallback(cellCount - 1);\n }\n }\n}\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSize } from \"../types\";","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","// Properly handle server-side rendering.\nvar win;\n\nif (typeof window !== 'undefined') {\n win = window;\n} else if (typeof self !== 'undefined') {\n win = self;\n} else {\n win = {};\n} // requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\nvar request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback) {\n return win.setTimeout(callback, 1000 / 60);\n};\n\nvar cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id) {\n win.clearTimeout(id);\n};\n\nexport var raf = request;\nexport var caf = cancel;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport calculateSizeAndPositionDataAndUpdateScrollOffset from './utils/calculateSizeAndPositionDataAndUpdateScrollOffset';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport defaultOverscanIndicesGetter, { SCROLL_DIRECTION_BACKWARD, SCROLL_DIRECTION_FORWARD } from './defaultOverscanIndicesGetter';\nimport updateScrollIndexHelper from './utils/updateScrollIndexHelper';\nimport defaultCellRangeRenderer from './defaultCellRangeRenderer';\nimport scrollbarSize from 'dom-helpers/scrollbarSize';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n\nvar renderNull = function renderNull() {\n return null;\n};\n\n/**\n * Renders tabular data with virtualization along the vertical and horizontal axes.\n * Row heights and column widths must be known ahead of time and specified as properties.\n */\nvar Grid = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Grid, _React$PureComponent);\n\n // Invokes onSectionRendered callback only when start/stop row or column indices change\n function Grid(props) {\n var _this;\n\n _classCallCheck(this, Grid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Grid).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"_onGridRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollLeftFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollTopFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_horizontalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_verticalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollbarPresenceChanged\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollingContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_childrenToDisplay\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollTop\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollLeft\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_disablePointerEventsTimeoutId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_styleCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_cellCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceScrollEndedCallback\", function () {\n _this._disablePointerEventsTimeoutId = null; // isScrolling is used to determine if we reset styleCache\n\n _this.setState({\n isScrolling: false,\n needToResetStyleCache: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnGridRenderedHelper\", function () {\n var onSectionRendered = _this.props.onSectionRendered;\n\n _this._onGridRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n columnOverscanStartIndex: _this._columnStartIndex,\n columnOverscanStopIndex: _this._columnStopIndex,\n columnStartIndex: _this._renderedColumnStartIndex,\n columnStopIndex: _this._renderedColumnStopIndex,\n rowOverscanStartIndex: _this._rowStartIndex,\n rowOverscanStopIndex: _this._rowStopIndex,\n rowStartIndex: _this._renderedRowStartIndex,\n rowStopIndex: _this._renderedRowStopIndex\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target === _this._scrollingContainer) {\n _this.handleScrollEvent(event.target);\n }\n });\n\n var columnSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.columnCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.columnWidth)(params);\n },\n estimatedCellSize: Grid._getEstimatedColumnSize(props)\n });\n var rowSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.rowCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.rowHeight)(params);\n },\n estimatedCellSize: Grid._getEstimatedRowSize(props)\n });\n _this.state = {\n instanceProps: {\n columnSizeAndPositionManager: columnSizeAndPositionManager,\n rowSizeAndPositionManager: rowSizeAndPositionManager,\n prevColumnWidth: props.columnWidth,\n prevRowHeight: props.rowHeight,\n prevColumnCount: props.columnCount,\n prevRowCount: props.rowCount,\n prevIsScrolling: props.isScrolling === true,\n prevScrollToColumn: props.scrollToColumn,\n prevScrollToRow: props.scrollToRow,\n scrollbarSize: 0,\n scrollbarSizeMeasured: false\n },\n isScrolling: false,\n scrollDirectionHorizontal: SCROLL_DIRECTION_FORWARD,\n scrollDirectionVertical: SCROLL_DIRECTION_FORWARD,\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: null,\n needToResetStyleCache: false\n };\n\n if (props.scrollToRow > 0) {\n _this._initialScrollTop = _this._getCalculatedScrollTop(props, _this.state);\n }\n\n if (props.scrollToColumn > 0) {\n _this._initialScrollLeft = _this._getCalculatedScrollLeft(props, _this.state);\n }\n\n return _this;\n }\n /**\n * Gets offsets for a given cell and alignment.\n */\n\n\n _createClass(Grid, [{\n key: \"getOffsetForCell\",\n value: function getOffsetForCell() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$alignment = _ref.alignment,\n alignment = _ref$alignment === void 0 ? this.props.scrollToAlignment : _ref$alignment,\n _ref$columnIndex = _ref.columnIndex,\n columnIndex = _ref$columnIndex === void 0 ? this.props.scrollToColumn : _ref$columnIndex,\n _ref$rowIndex = _ref.rowIndex,\n rowIndex = _ref$rowIndex === void 0 ? this.props.scrollToRow : _ref$rowIndex;\n\n var offsetProps = _objectSpread({}, this.props, {\n scrollToAlignment: alignment,\n scrollToColumn: columnIndex,\n scrollToRow: rowIndex\n });\n\n return {\n scrollLeft: this._getCalculatedScrollLeft(offsetProps),\n scrollTop: this._getCalculatedScrollTop(offsetProps)\n };\n }\n /**\n * Gets estimated total rows' height.\n */\n\n }, {\n key: \"getTotalRowsHeight\",\n value: function getTotalRowsHeight() {\n return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize();\n }\n /**\n * Gets estimated total columns' width.\n */\n\n }, {\n key: \"getTotalColumnsWidth\",\n value: function getTotalColumnsWidth() {\n return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize();\n }\n /**\n * This method handles a scroll event originating from an external scroll control.\n * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.\n */\n\n }, {\n key: \"handleScrollEvent\",\n value: function handleScrollEvent(_ref2) {\n var _ref2$scrollLeft = _ref2.scrollLeft,\n scrollLeftParam = _ref2$scrollLeft === void 0 ? 0 : _ref2$scrollLeft,\n _ref2$scrollTop = _ref2.scrollTop,\n scrollTopParam = _ref2$scrollTop === void 0 ? 0 : _ref2$scrollTop;\n\n // On iOS, we can arrive at negative offsets by swiping past the start.\n // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.\n if (scrollTopParam < 0) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n this._debounceScrollEnded();\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n autoWidth = _this$props.autoWidth,\n height = _this$props.height,\n width = _this$props.width;\n var instanceProps = this.state.instanceProps; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollbarSize = instanceProps.scrollbarSize;\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);\n var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {\n // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.\n // Don't change direction for an axis unless scroll offset has changed.\n var scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionHorizontal;\n var scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical;\n var newState = {\n isScrolling: true,\n scrollDirectionHorizontal: scrollDirectionHorizontal,\n scrollDirectionVertical: scrollDirectionVertical,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED\n };\n\n if (!autoHeight) {\n newState.scrollTop = scrollTop;\n }\n\n if (!autoWidth) {\n newState.scrollLeft = scrollLeft;\n }\n\n newState.needToResetStyleCache = false;\n this.setState(newState);\n }\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n /**\n * Invalidate Grid size and recompute visible cells.\n * This is a deferred wrapper for recomputeGridSize().\n * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.\n * This method is intended for advanced use-cases like CellMeasurer.\n */\n // @TODO (bvaughn) Add automated test coverage for this.\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref3) {\n var columnIndex = _ref3.columnIndex,\n rowIndex = _ref3.rowIndex;\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /**\n * Pre-measure all columns and rows in a Grid.\n * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.\n * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).\n */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n rowCount = _this$props2.rowCount;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);\n instanceProps.rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);\n }\n /**\n * Forced recompute of row heights and column widths.\n * This function should be called if dynamic column or row sizes have changed but nothing else has.\n * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.\n */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$columnIndex = _ref4.columnIndex,\n columnIndex = _ref4$columnIndex === void 0 ? 0 : _ref4$columnIndex,\n _ref4$rowIndex = _ref4.rowIndex,\n rowIndex = _ref4$rowIndex === void 0 ? 0 : _ref4$rowIndex;\n\n var _this$props3 = this.props,\n scrollToColumn = _this$props3.scrollToColumn,\n scrollToRow = _this$props3.scrollToRow;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.resetCell(columnIndex);\n instanceProps.rowSizeAndPositionManager.resetCell(rowIndex); // Cell sizes may be determined by a function property.\n // In this case the cDU handler can't know if they changed.\n // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.\n\n this._recomputeScrollLeftFlag = scrollToColumn >= 0 && (this.state.scrollDirectionHorizontal === SCROLL_DIRECTION_FORWARD ? columnIndex <= scrollToColumn : columnIndex >= scrollToColumn);\n this._recomputeScrollTopFlag = scrollToRow >= 0 && (this.state.scrollDirectionVertical === SCROLL_DIRECTION_FORWARD ? rowIndex <= scrollToRow : rowIndex >= scrollToRow); // Clear cell cache in case we are scrolling;\n // Invalid row heights likely mean invalid cached content as well.\n\n this._styleCache = {};\n this._cellCache = {};\n this.forceUpdate();\n }\n /**\n * Ensure column and row are visible.\n */\n\n }, {\n key: \"scrollToCell\",\n value: function scrollToCell(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n var columnCount = this.props.columnCount;\n var props = this.props; // Don't adjust scroll offset for single-column grids (eg List, Table).\n // This can cause a funky scroll offset because of the vertical scrollbar width.\n\n if (columnCount > 1 && columnIndex !== undefined) {\n this._updateScrollLeftForScrollToColumn(_objectSpread({}, props, {\n scrollToColumn: columnIndex\n }));\n }\n\n if (rowIndex !== undefined) {\n this._updateScrollTopForScrollToRow(_objectSpread({}, props, {\n scrollToRow: rowIndex\n }));\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n getScrollbarSize = _this$props4.getScrollbarSize,\n height = _this$props4.height,\n scrollLeft = _this$props4.scrollLeft,\n scrollToColumn = _this$props4.scrollToColumn,\n scrollTop = _this$props4.scrollTop,\n scrollToRow = _this$props4.scrollToRow,\n width = _this$props4.width;\n var instanceProps = this.state.instanceProps; // Reset initial offsets to be ignored in browser\n\n this._initialScrollTop = 0;\n this._initialScrollLeft = 0; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n\n if (!instanceProps.scrollbarSizeMeasured) {\n this.setState(function (prevState) {\n var stateUpdate = _objectSpread({}, prevState, {\n needToResetStyleCache: false\n });\n\n stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();\n stateUpdate.instanceProps.scrollbarSizeMeasured = true;\n return stateUpdate;\n });\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n } // refs don't work in `react-test-renderer`\n\n\n if (this._scrollingContainer) {\n // setting the ref's scrollLeft and scrollTop.\n // Somehow in MultiGrid the main grid doesn't trigger a update on mount.\n if (this._scrollingContainer.scrollLeft !== this.state.scrollLeft) {\n this._scrollingContainer.scrollLeft = this.state.scrollLeft;\n }\n\n if (this._scrollingContainer.scrollTop !== this.state.scrollTop) {\n this._scrollingContainer.scrollTop = this.state.scrollTop;\n }\n } // Don't update scroll offset if the size is 0; we don't render any cells in this case.\n // Setting a state may cause us to later thing we've updated the offce when we haven't.\n\n\n var sizeIsBiggerThanZero = height > 0 && width > 0;\n\n if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollLeftForScrollToColumn();\n }\n\n if (scrollToRow >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollTopForScrollToRow();\n } // Update onRowsRendered callback\n\n\n this._invokeOnGridRenderedHelper(); // Initialize onScroll callback\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalColumnsWidth: instanceProps.columnSizeAndPositionManager.getTotalSize(),\n totalRowsHeight: instanceProps.rowSizeAndPositionManager.getTotalSize()\n });\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) New scroll-to-cell props have been set\n */\n\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _this$props5 = this.props,\n autoHeight = _this$props5.autoHeight,\n autoWidth = _this$props5.autoWidth,\n columnCount = _this$props5.columnCount,\n height = _this$props5.height,\n rowCount = _this$props5.rowCount,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToColumn = _this$props5.scrollToColumn,\n scrollToRow = _this$props5.scrollToRow,\n width = _this$props5.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollPositionChangeReason = _this$state.scrollPositionChangeReason,\n scrollTop = _this$state.scrollTop,\n instanceProps = _this$state.instanceProps; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // Handle edge case where column or row count has only just increased over 0.\n // In this case we may have to restore a previously-specified scroll offset.\n // For more info see bvaughn/react-virtualized/issues/218\n\n\n var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).\n // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.\n if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (!autoHeight && scrollTop >= 0 && (scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Special case where the previous size was 0:\n // In this case we don't show any windowed cells at all.\n // So we should always recalculate offset afterwards.\n\n\n var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0; // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it\n // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?\n\n if (this._recomputeScrollLeftFlag) {\n this._recomputeScrollLeftFlag = false;\n\n this._updateScrollLeftForScrollToColumn(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n previousCellsCount: prevProps.columnCount,\n previousCellSize: prevProps.columnWidth,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToColumn,\n previousSize: prevProps.width,\n scrollOffset: scrollLeft,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToColumn,\n size: width,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollLeftForScrollToColumn(_this2.props);\n }\n });\n }\n\n if (this._recomputeScrollTopFlag) {\n this._recomputeScrollTopFlag = false;\n\n this._updateScrollTopForScrollToRow(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n previousCellsCount: prevProps.rowCount,\n previousCellSize: prevProps.rowHeight,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToRow,\n previousSize: prevProps.height,\n scrollOffset: scrollTop,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToRow,\n size: height,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollTopForScrollToRow(_this2.props);\n }\n });\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnGridRenderedHelper(); // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners\n\n\n if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n /**\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoContainerWidth = _this$props6.autoContainerWidth,\n autoHeight = _this$props6.autoHeight,\n autoWidth = _this$props6.autoWidth,\n className = _this$props6.className,\n containerProps = _this$props6.containerProps,\n containerRole = _this$props6.containerRole,\n containerStyle = _this$props6.containerStyle,\n height = _this$props6.height,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n role = _this$props6.role,\n style = _this$props6.style,\n tabIndex = _this$props6.tabIndex,\n width = _this$props6.width;\n var _this$state2 = this.state,\n instanceProps = _this$state2.instanceProps,\n needToResetStyleCache = _this$state2.needToResetStyleCache;\n\n var isScrolling = this._isScrolling();\n\n var gridStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n width: autoWidth ? 'auto' : width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n };\n\n if (needToResetStyleCache) {\n this._styleCache = {};\n } // calculate _styleCache here\n // if state.isScrolling (not from _isScrolling) then reset\n\n\n if (!this.state.isScrolling) {\n this._resetStyleCache();\n } // calculate children to render here\n\n\n this._calculateChildrenToRender(this.props, this.state);\n\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize(); // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n var horizontalScrollBarSize = totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {\n this._horizontalScrollBarSize = horizontalScrollBarSize;\n this._verticalScrollBarSize = verticalScrollBarSize;\n this._scrollbarPresenceChanged = true;\n } // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n\n gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n var childrenToDisplay = this._childrenToDisplay;\n var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;\n return React.createElement(\"div\", _extends({\n ref: this._setScrollingContainerRef\n }, containerProps, {\n \"aria-label\": this.props['aria-label'],\n \"aria-readonly\": this.props['aria-readonly'],\n className: clsx('ReactVirtualized__Grid', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({}, gridStyle, {}, style),\n tabIndex: tabIndex\n }), childrenToDisplay.length > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Grid__innerScrollContainer\",\n role: containerRole,\n style: _objectSpread({\n width: autoContainerWidth ? 'auto' : totalColumnsWidth,\n height: totalRowsHeight,\n maxWidth: totalColumnsWidth,\n maxHeight: totalRowsHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }, containerStyle)\n }, childrenToDisplay), showNoContentRenderer && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n }, {\n key: \"_calculateChildrenToRender\",\n value: function _calculateChildrenToRender() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n var cellRenderer = props.cellRenderer,\n cellRangeRenderer = props.cellRangeRenderer,\n columnCount = props.columnCount,\n deferredMeasurementCache = props.deferredMeasurementCache,\n height = props.height,\n overscanColumnCount = props.overscanColumnCount,\n overscanIndicesGetter = props.overscanIndicesGetter,\n overscanRowCount = props.overscanRowCount,\n rowCount = props.rowCount,\n width = props.width,\n isScrollingOptOut = props.isScrollingOptOut;\n var scrollDirectionHorizontal = state.scrollDirectionHorizontal,\n scrollDirectionVertical = state.scrollDirectionVertical,\n instanceProps = state.instanceProps;\n var scrollTop = this._initialScrollTop > 0 ? this._initialScrollTop : state.scrollTop;\n var scrollLeft = this._initialScrollLeft > 0 ? this._initialScrollLeft : state.scrollLeft;\n\n var isScrolling = this._isScrolling(props, state);\n\n this._childrenToDisplay = []; // Render only enough columns and rows to cover the visible area of the grid.\n\n if (height > 0 && width > 0) {\n var visibleColumnIndices = instanceProps.columnSizeAndPositionManager.getVisibleCellRange({\n containerSize: width,\n offset: scrollLeft\n });\n var visibleRowIndices = instanceProps.rowSizeAndPositionManager.getVisibleCellRange({\n containerSize: height,\n offset: scrollTop\n });\n var horizontalOffsetAdjustment = instanceProps.columnSizeAndPositionManager.getOffsetAdjustment({\n containerSize: width,\n offset: scrollLeft\n });\n var verticalOffsetAdjustment = instanceProps.rowSizeAndPositionManager.getOffsetAdjustment({\n containerSize: height,\n offset: scrollTop\n }); // Store for _invokeOnGridRenderedHelper()\n\n this._renderedColumnStartIndex = visibleColumnIndices.start;\n this._renderedColumnStopIndex = visibleColumnIndices.stop;\n this._renderedRowStartIndex = visibleRowIndices.start;\n this._renderedRowStopIndex = visibleRowIndices.stop;\n var overscanColumnIndices = overscanIndicesGetter({\n direction: 'horizontal',\n cellCount: columnCount,\n overscanCellsCount: overscanColumnCount,\n scrollDirection: scrollDirectionHorizontal,\n startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,\n stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1\n });\n var overscanRowIndices = overscanIndicesGetter({\n direction: 'vertical',\n cellCount: rowCount,\n overscanCellsCount: overscanRowCount,\n scrollDirection: scrollDirectionVertical,\n startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,\n stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1\n }); // Store for _invokeOnGridRenderedHelper()\n\n var columnStartIndex = overscanColumnIndices.overscanStartIndex;\n var columnStopIndex = overscanColumnIndices.overscanStopIndex;\n var rowStartIndex = overscanRowIndices.overscanStartIndex;\n var rowStopIndex = overscanRowIndices.overscanStopIndex; // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.\n\n if (deferredMeasurementCache) {\n // If rows have a dynamic height, scan the rows we are about to render.\n // If any have not yet been measured, then we need to render all columns initially,\n // Because the height of the row is equal to the tallest cell within that row,\n // (And so we can't know the height without measuring all column-cells first).\n if (!deferredMeasurementCache.hasFixedHeight()) {\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n if (!deferredMeasurementCache.has(rowIndex, 0)) {\n columnStartIndex = 0;\n columnStopIndex = columnCount - 1;\n break;\n }\n }\n } // If columns have a dynamic width, scan the columns we are about to render.\n // If any have not yet been measured, then we need to render all rows initially,\n // Because the width of the column is equal to the widest cell within that column,\n // (And so we can't know the width without measuring all row-cells first).\n\n\n if (!deferredMeasurementCache.hasFixedWidth()) {\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n if (!deferredMeasurementCache.has(0, columnIndex)) {\n rowStartIndex = 0;\n rowStopIndex = rowCount - 1;\n break;\n }\n }\n }\n }\n\n this._childrenToDisplay = cellRangeRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n columnSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n columnStartIndex: columnStartIndex,\n columnStopIndex: columnStopIndex,\n deferredMeasurementCache: deferredMeasurementCache,\n horizontalOffsetAdjustment: horizontalOffsetAdjustment,\n isScrolling: isScrolling,\n isScrollingOptOut: isScrollingOptOut,\n parent: this,\n rowSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n rowStartIndex: rowStartIndex,\n rowStopIndex: rowStopIndex,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n styleCache: this._styleCache,\n verticalOffsetAdjustment: verticalOffsetAdjustment,\n visibleColumnIndices: visibleColumnIndices,\n visibleRowIndices: visibleRowIndices\n }); // update the indices\n\n this._columnStartIndex = columnStartIndex;\n this._columnStopIndex = columnStopIndex;\n this._rowStartIndex = rowStartIndex;\n this._rowStopIndex = rowStopIndex;\n }\n }\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Grid.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_debounceScrollEnded\",\n value: function _debounceScrollEnded() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = requestAnimationTimeout(this._debounceScrollEndedCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n\n /**\n * Check for batched CellMeasurer size invalidations.\n * This will occur the first time one or more previously unmeasured cells are rendered.\n */\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref6) {\n var _this3 = this;\n\n var scrollLeft = _ref6.scrollLeft,\n scrollTop = _ref6.scrollTop,\n totalColumnsWidth = _ref6.totalColumnsWidth,\n totalRowsHeight = _ref6.totalRowsHeight;\n\n this._onScrollMemoizer({\n callback: function callback(_ref7) {\n var scrollLeft = _ref7.scrollLeft,\n scrollTop = _ref7.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalRowsHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalColumnsWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_isScrolling\",\n value: function _isScrolling() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n // If isScrolling is defined in props, use it to override the value in state\n // This is a performance optimization for WindowScroller + Grid\n return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);\n }\n }, {\n key: \"_maybeCallOnScrollbarPresenceChange\",\n value: function _maybeCallOnScrollbarPresenceChange() {\n if (this._scrollbarPresenceChanged) {\n var onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;\n this._scrollbarPresenceChanged = false;\n onScrollbarPresenceChange({\n horizontal: this._horizontalScrollBarSize > 0,\n size: this.state.instanceProps.scrollbarSize,\n vertical: this._verticalScrollBarSize > 0\n });\n }\n }\n }, {\n key: \"scrollToPosition\",\n\n /**\n * Scroll to the specified offset(s).\n * Useful for animating position changes.\n */\n value: function scrollToPosition(_ref8) {\n var scrollLeft = _ref8.scrollLeft,\n scrollTop = _ref8.scrollTop;\n\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollLeft(props, state);\n }\n }, {\n key: \"_updateScrollLeftForScrollToColumn\",\n value: function _updateScrollLeftForScrollToColumn() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollLeftForScrollToColumnStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollTop(props, state);\n }\n }, {\n key: \"_resetStyleCache\",\n value: function _resetStyleCache() {\n var styleCache = this._styleCache;\n var cellCache = this._cellCache;\n var isScrollingOptOut = this.props.isScrollingOptOut; // Reset cell and style caches once scrolling stops.\n // This makes Grid simpler to use (since cells commonly change).\n // And it keeps the caches from growing too large.\n // Performance is most sensitive when a user is scrolling.\n // Don't clear visible cells from cellCache if isScrollingOptOut is specified.\n // This keeps the cellCache to a resonable size.\n\n this._cellCache = {};\n this._styleCache = {}; // Copy over the visible cell styles so avoid unnecessary re-render.\n\n for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {\n for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n this._styleCache[key] = styleCache[key];\n\n if (isScrollingOptOut) {\n this._cellCache[key] = cellCache[key];\n }\n }\n }\n }\n }, {\n key: \"_updateScrollTopForScrollToRow\",\n value: function _updateScrollTopForScrollToRow() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollTopForScrollToRowStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var newState = {};\n\n if (nextProps.columnCount === 0 && prevState.scrollLeft !== 0 || nextProps.rowCount === 0 && prevState.scrollTop !== 0) {\n newState.scrollLeft = 0;\n newState.scrollTop = 0; // only use scroll{Left,Top} from props if scrollTo{Column,Row} isn't specified\n // scrollTo{Column,Row} should override scroll{Left,Top}\n } else if (nextProps.scrollLeft !== prevState.scrollLeft && nextProps.scrollToColumn < 0 || nextProps.scrollTop !== prevState.scrollTop && nextProps.scrollToRow < 0) {\n Object.assign(newState, Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: nextProps.scrollLeft,\n scrollTop: nextProps.scrollTop\n }));\n }\n\n var instanceProps = prevState.instanceProps; // Initially we should not clearStyleCache\n\n newState.needToResetStyleCache = false;\n\n if (nextProps.columnWidth !== instanceProps.prevColumnWidth || nextProps.rowHeight !== instanceProps.prevRowHeight) {\n // Reset cache. set it to {} in render\n newState.needToResetStyleCache = true;\n }\n\n instanceProps.columnSizeAndPositionManager.configure({\n cellCount: nextProps.columnCount,\n estimatedCellSize: Grid._getEstimatedColumnSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.columnWidth)\n });\n instanceProps.rowSizeAndPositionManager.configure({\n cellCount: nextProps.rowCount,\n estimatedCellSize: Grid._getEstimatedRowSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.rowHeight)\n });\n\n if (instanceProps.prevColumnCount === 0 || instanceProps.prevRowCount === 0) {\n instanceProps.prevColumnCount = 0;\n instanceProps.prevRowCount = 0;\n } // If scrolling is controlled outside this component, clear cache when scrolling stops\n\n\n if (nextProps.autoHeight && nextProps.isScrolling === false && instanceProps.prevIsScrolling === true) {\n Object.assign(newState, {\n isScrolling: false\n });\n }\n\n var maybeStateA;\n var maybeStateB;\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevColumnCount,\n cellSize: typeof instanceProps.prevColumnWidth === 'number' ? instanceProps.prevColumnWidth : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.columnSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.columnCount,\n nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,\n nextScrollToIndex: nextProps.scrollToColumn,\n scrollToIndex: instanceProps.prevScrollToColumn,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateA = Grid._getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState);\n }\n });\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevRowCount,\n cellSize: typeof instanceProps.prevRowHeight === 'number' ? instanceProps.prevRowHeight : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.rowSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.rowCount,\n nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,\n nextScrollToIndex: nextProps.scrollToRow,\n scrollToIndex: instanceProps.prevScrollToRow,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateB = Grid._getScrollTopForScrollToRowStateUpdate(nextProps, prevState);\n }\n });\n instanceProps.prevColumnCount = nextProps.columnCount;\n instanceProps.prevColumnWidth = nextProps.columnWidth;\n instanceProps.prevIsScrolling = nextProps.isScrolling === true;\n instanceProps.prevRowCount = nextProps.rowCount;\n instanceProps.prevRowHeight = nextProps.rowHeight;\n instanceProps.prevScrollToColumn = nextProps.scrollToColumn;\n instanceProps.prevScrollToRow = nextProps.scrollToRow; // getting scrollBarSize (moved from componentWillMount)\n\n instanceProps.scrollbarSize = nextProps.getScrollbarSize();\n\n if (instanceProps.scrollbarSize === undefined) {\n instanceProps.scrollbarSizeMeasured = false;\n instanceProps.scrollbarSize = 0;\n } else {\n instanceProps.scrollbarSizeMeasured = true;\n }\n\n newState.instanceProps = instanceProps;\n return _objectSpread({}, newState, {}, maybeStateA, {}, maybeStateB);\n }\n }, {\n key: \"_getEstimatedColumnSize\",\n value: function _getEstimatedColumnSize(props) {\n return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;\n }\n }, {\n key: \"_getEstimatedRowSize\",\n value: function _getEstimatedRowSize(props) {\n return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;\n }\n }, {\n key: \"_getScrollToPositionStateUpdate\",\n\n /**\n * Get the updated state after scrolling to\n * scrollLeft and scrollTop\n */\n value: function _getScrollToPositionStateUpdate(_ref9) {\n var prevState = _ref9.prevState,\n scrollLeft = _ref9.scrollLeft,\n scrollTop = _ref9.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0) {\n newState.scrollDirectionHorizontal = scrollLeft > prevState.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollLeft = scrollLeft;\n }\n\n if (typeof scrollTop === 'number' && scrollTop >= 0) {\n newState.scrollDirectionVertical = scrollTop > prevState.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollTop = scrollTop;\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== prevState.scrollTop) {\n return newState;\n }\n\n return {};\n }\n }, {\n key: \"_wrapSizeGetter\",\n value: function _wrapSizeGetter(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft(nextProps, prevState) {\n var columnCount = nextProps.columnCount,\n height = nextProps.height,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToColumn = nextProps.scrollToColumn,\n width = nextProps.width;\n var scrollLeft = prevState.scrollLeft,\n instanceProps = prevState.instanceProps;\n\n if (columnCount > 0) {\n var finalColumn = columnCount - 1;\n var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n return instanceProps.columnSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: width - scrollBarSize,\n currentOffset: scrollLeft,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollLeftForScrollToColumnStateUpdate\",\n value: function _getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState) {\n var scrollLeft = prevState.scrollLeft;\n\n var calculatedScrollLeft = Grid._getCalculatedScrollLeft(nextProps, prevState);\n\n if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: calculatedScrollLeft,\n scrollTop: -1\n });\n }\n\n return {};\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop(nextProps, prevState) {\n var height = nextProps.height,\n rowCount = nextProps.rowCount,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToRow = nextProps.scrollToRow,\n width = nextProps.width;\n var scrollTop = prevState.scrollTop,\n instanceProps = prevState.instanceProps;\n\n if (rowCount > 0) {\n var finalRow = rowCount - 1;\n var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n return instanceProps.rowSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: height - scrollBarSize,\n currentOffset: scrollTop,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollTopForScrollToRowStateUpdate\",\n value: function _getScrollTopForScrollToRowStateUpdate(nextProps, prevState) {\n var scrollTop = prevState.scrollTop;\n\n var calculatedScrollTop = Grid._getCalculatedScrollTop(nextProps, prevState);\n\n if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: -1,\n scrollTop: calculatedScrollTop\n });\n }\n\n return {};\n }\n }]);\n\n return Grid;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string.isRequired,\n \"aria-readonly\": PropTypes.bool,\n\n /**\n * Set the width of the inner scrollable container to 'auto'.\n * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.\n */\n \"autoContainerWidth\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoWidth\": PropTypes.bool.isRequired,\n\n /** Responsible for rendering a cell given an row and column index. */\n \"cellRenderer\": function cellRenderer() {\n return (typeof bpfrpt_proptype_CellRenderer === \"function\" ? bpfrpt_proptype_CellRenderer.isRequired ? bpfrpt_proptype_CellRenderer.isRequired : bpfrpt_proptype_CellRenderer : PropTypes.shape(bpfrpt_proptype_CellRenderer).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a group of cells given their index ranges. */\n \"cellRangeRenderer\": function cellRangeRenderer() {\n return (typeof bpfrpt_proptype_CellRangeRenderer === \"function\" ? bpfrpt_proptype_CellRangeRenderer.isRequired ? bpfrpt_proptype_CellRangeRenderer.isRequired : bpfrpt_proptype_CellRangeRenderer : PropTypes.shape(bpfrpt_proptype_CellRangeRenderer).isRequired).apply(this, arguments);\n },\n\n /** Optional custom CSS class name to attach to root Grid element. */\n \"className\": PropTypes.string,\n\n /** Number of columns in grid. */\n \"columnCount\": PropTypes.number.isRequired,\n\n /** Either a fixed column width (number) or a function that returns the width of a column given its index. */\n \"columnWidth\": function columnWidth() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Unfiltered props for the Grid container. */\n \"containerProps\": PropTypes.object,\n\n /** ARIA role for the cell-container. */\n \"containerRole\": PropTypes.string.isRequired,\n\n /** Optional inline style applied to inner cell-container */\n \"containerStyle\": PropTypes.object.isRequired,\n\n /**\n * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.\n * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.\n */\n \"deferredMeasurementCache\": PropTypes.object,\n\n /**\n * Used to estimate the total width of a Grid before all of its columns have actually been measured.\n * The estimated total width is adjusted as columns are rendered.\n */\n \"estimatedColumnSize\": PropTypes.number.isRequired,\n\n /**\n * Used to estimate the total height of a Grid before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Exposed for testing purposes only. */\n \"getScrollbarSize\": PropTypes.func.isRequired,\n\n /** Height of Grid; this property determines the number of visible (vs virtualized) rows. */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional custom id to attach to root Grid element. */\n \"id\": PropTypes.string,\n\n /**\n * Override internal is-scrolling state tracking.\n * This property is primarily intended for use with the WindowScroller component.\n */\n \"isScrolling\": PropTypes.bool,\n\n /**\n * Opt-out of isScrolling param passed to cellRangeRenderer.\n * To avoid the extra render when scroll stops.\n */\n \"isScrollingOptOut\": PropTypes.bool.isRequired,\n\n /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0. */\n \"noContentRenderer\": function noContentRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /**\n * Called whenever a horizontal or vertical scrollbar is added or removed.\n * This prop is not intended for end-user use;\n * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.\n */\n \"onScrollbarPresenceChange\": PropTypes.func.isRequired,\n\n /** Callback invoked with information about the section of the Grid that was just rendered. */\n \"onSectionRendered\": PropTypes.func.isRequired,\n\n /**\n * Number of columns to render before/after the visible section of the grid.\n * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanColumnCount\": PropTypes.number.isRequired,\n\n /**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible section of the grid.\n * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** ARIA role for the grid element. */\n \"role\": PropTypes.string.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * Should implement the following interface: ({ index: number }): number\n */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in grid. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Horizontal offset. */\n \"scrollLeft\": PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Column index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToColumn\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToRow\": PropTypes.number.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of Grid; this property determines the number of visible (vs virtualized) columns. */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(Grid, \"defaultProps\", {\n 'aria-label': 'grid',\n 'aria-readonly': true,\n autoContainerWidth: false,\n autoHeight: false,\n autoWidth: false,\n cellRangeRenderer: defaultCellRangeRenderer,\n containerRole: 'rowgroup',\n containerStyle: {},\n estimatedColumnSize: 100,\n estimatedRowSize: 30,\n getScrollbarSize: scrollbarSize,\n noContentRenderer: renderNull,\n onScroll: function onScroll() {},\n onScrollbarPresenceChange: function onScrollbarPresenceChange() {},\n onSectionRendered: function onSectionRendered() {},\n overscanColumnCount: 0,\n overscanIndicesGetter: defaultOverscanIndicesGetter,\n overscanRowCount: 10,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n scrollToAlignment: 'auto',\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n tabIndex: 0,\n isScrollingOptOut: false\n});\n\npolyfill(Grid);\nexport default Grid;\nimport { bpfrpt_proptype_CellRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellRangeRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellPosition } from \"./types\";\nimport { bpfrpt_proptype_CellSize } from \"./types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"./types\";\nimport { bpfrpt_proptype_NoContentRenderer } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport { bpfrpt_proptype_ScrollbarPresenceChange } from \"./types\";\nimport { bpfrpt_proptype_RenderedSection } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"./types\";\nimport { bpfrpt_proptype_Alignment } from \"./types\";\nimport { bpfrpt_proptype_CellCache } from \"./types\";\nimport { bpfrpt_proptype_StyleCache } from \"./types\";\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";","import { caf, raf } from './animationFrame';\nvar bpfrpt_proptype_AnimationTimeoutId = process.env.NODE_ENV === 'production' ? null : {\n \"id\": PropTypes.number.isRequired\n};\nexport var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n return caf(frame.id);\n};\n/**\n * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.\n * When the delay time has been reached the function you're timing out will be called.\n *\n * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)\n */\n\nexport var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n var start; // wait for end of processing current event handler, because event handler may be long\n\n Promise.resolve().then(function () {\n start = Date.now();\n });\n\n var timeout = function timeout() {\n if (Date.now() - start >= delay) {\n callback.call();\n } else {\n frame.id = raf(timeout);\n }\n };\n\n var frame = {\n id: raf(timeout)\n };\n return frame;\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_AnimationTimeoutId };","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","/**\n * Default implementation of cellRangeRenderer used by Grid.\n * This renderer supports cell-caching while the user is scrolling.\n */\nexport default function defaultCellRangeRenderer(_ref) {\n var cellCache = _ref.cellCache,\n cellRenderer = _ref.cellRenderer,\n columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,\n columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n deferredMeasurementCache = _ref.deferredMeasurementCache,\n horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,\n isScrolling = _ref.isScrolling,\n isScrollingOptOut = _ref.isScrollingOptOut,\n parent = _ref.parent,\n rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex,\n styleCache = _ref.styleCache,\n verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,\n visibleColumnIndices = _ref.visibleColumnIndices,\n visibleRowIndices = _ref.visibleRowIndices;\n var renderedCells = []; // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).\n // User cannot scroll beyond these size limitations.\n // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.\n // We should never cache styles for compressed offsets though as this can lead to bugs.\n // See issue #576 for more.\n\n var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();\n var canCacheStyle = !isScrolling && !areOffsetsAdjusted;\n\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);\n\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);\n var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n var style = void 0; // Cache style objects so shallow-compare doesn't re-render unnecessarily.\n\n if (canCacheStyle && styleCache[key]) {\n style = styleCache[key];\n } else {\n // In deferred mode, cells will be initially rendered before we know their size.\n // Don't interfere with CellMeasurer's measurements by setting an invalid size.\n if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {\n // Position not-yet-measured cells at top/left 0,0,\n // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.\n // Positioning them further to the right/bottom influences their measured size.\n style = {\n height: 'auto',\n left: 0,\n position: 'absolute',\n top: 0,\n width: 'auto'\n };\n } else {\n style = {\n height: rowDatum.size,\n left: columnDatum.offset + horizontalOffsetAdjustment,\n position: 'absolute',\n top: rowDatum.offset + verticalOffsetAdjustment,\n width: columnDatum.size\n };\n styleCache[key] = style;\n }\n }\n\n var cellRendererParams = {\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent,\n rowIndex: rowIndex,\n style: style\n };\n var renderedCell = void 0; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling completes.\n // However if we are scaling scroll positions and sizes, we should also avoid caching.\n // This is because the offset changes slightly as scroll position changes and caching leads to stale values.\n // For more info refer to issue #395\n //\n // If isScrollingOptOut is specified, we always cache cells.\n // For more info refer to issue #1028\n\n if ((isScrollingOptOut || isScrolling) && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {\n if (!cellCache[key]) {\n cellCache[key] = cellRenderer(cellRendererParams);\n }\n\n renderedCell = cellCache[key]; // If the user is no longer scrolling, don't cache cells.\n // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.\n } else {\n renderedCell = cellRenderer(cellRendererParams);\n }\n\n if (renderedCell == null || renderedCell === false) {\n continue;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warnAboutMissingStyle(parent, renderedCell);\n }\n\n renderedCells.push(renderedCell);\n }\n }\n\n return renderedCells;\n}\n\nfunction warnAboutMissingStyle(parent, renderedCell) {\n if (process.env.NODE_ENV !== 'production') {\n if (renderedCell) {\n // If the direct child is a CellMeasurer, then we should check its child\n // See issue #611\n if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {\n renderedCell = renderedCell.props.children;\n }\n\n if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {\n parent.__warnedAboutMissingStyle = true;\n console.warn('Rendered cell should include style property for positioning.');\n }\n }\n }\n}\n\nimport { bpfrpt_proptype_CellRangeRendererParams } from \"./types\";","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n // Make sure we render at least 1 cell extra before and after (except near boundaries)\n // This is necessary in order to support keyboard navigation (TAB/SHIFT+TAB) in some cases\n // For more info see issues #625\n overscanCellsCount = Math.max(1, overscanCellsCount);\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex - 1),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + 1)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","var bpfrpt_proptype_ScrollIndices = process.env.NODE_ENV === 'production' ? null : {\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_ScrollIndices };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\n/**\n * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time.\n */\n\nvar ArrowKeyStepper = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ArrowKeyStepper, _React$PureComponent);\n\n function ArrowKeyStepper() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ArrowKeyStepper);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ArrowKeyStepper)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollToColumn: 0,\n scrollToRow: 0,\n instanceProps: {\n prevScrollToColumn: 0,\n prevScrollToRow: 0\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", function (event) {\n var _this$props = _this.props,\n columnCount = _this$props.columnCount,\n disabled = _this$props.disabled,\n mode = _this$props.mode,\n rowCount = _this$props.rowCount;\n\n if (disabled) {\n return;\n }\n\n var _this$_getScrollState = _this._getScrollState(),\n scrollToColumnPrevious = _this$_getScrollState.scrollToColumn,\n scrollToRowPrevious = _this$_getScrollState.scrollToRow;\n\n var _this$_getScrollState2 = _this._getScrollState(),\n scrollToColumn = _this$_getScrollState2.scrollToColumn,\n scrollToRow = _this$_getScrollState2.scrollToRow; // The above cases all prevent default event event behavior.\n // This is to keep the grid from scrolling after the snap-to update.\n\n\n switch (event.key) {\n case 'ArrowDown':\n scrollToRow = mode === 'cells' ? Math.min(scrollToRow + 1, rowCount - 1) : Math.min(_this._rowStopIndex + 1, rowCount - 1);\n break;\n\n case 'ArrowLeft':\n scrollToColumn = mode === 'cells' ? Math.max(scrollToColumn - 1, 0) : Math.max(_this._columnStartIndex - 1, 0);\n break;\n\n case 'ArrowRight':\n scrollToColumn = mode === 'cells' ? Math.min(scrollToColumn + 1, columnCount - 1) : Math.min(_this._columnStopIndex + 1, columnCount - 1);\n break;\n\n case 'ArrowUp':\n scrollToRow = mode === 'cells' ? Math.max(scrollToRow - 1, 0) : Math.max(_this._rowStartIndex - 1, 0);\n break;\n }\n\n if (scrollToColumn !== scrollToColumnPrevious || scrollToRow !== scrollToRowPrevious) {\n event.preventDefault();\n\n _this._updateScrollState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref) {\n var columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex;\n _this._columnStartIndex = columnStartIndex;\n _this._columnStopIndex = columnStopIndex;\n _this._rowStartIndex = rowStartIndex;\n _this._rowStopIndex = rowStopIndex;\n });\n\n return _this;\n }\n\n _createClass(ArrowKeyStepper, [{\n key: \"setScrollIndexes\",\n value: function setScrollIndexes(_ref2) {\n var scrollToColumn = _ref2.scrollToColumn,\n scrollToRow = _ref2.scrollToRow;\n this.setState({\n scrollToRow: scrollToRow,\n scrollToColumn: scrollToColumn\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n children = _this$props2.children;\n\n var _this$_getScrollState3 = this._getScrollState(),\n scrollToColumn = _this$_getScrollState3.scrollToColumn,\n scrollToRow = _this$_getScrollState3.scrollToRow;\n\n return React.createElement(\"div\", {\n className: className,\n onKeyDown: this._onKeyDown\n }, children({\n onSectionRendered: this._onSectionRendered,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n }));\n }\n }, {\n key: \"_getScrollState\",\n value: function _getScrollState() {\n return this.props.isControlled ? this.props : this.state;\n }\n }, {\n key: \"_updateScrollState\",\n value: function _updateScrollState(_ref3) {\n var scrollToColumn = _ref3.scrollToColumn,\n scrollToRow = _ref3.scrollToRow;\n var _this$props3 = this.props,\n isControlled = _this$props3.isControlled,\n onScrollToChange = _this$props3.onScrollToChange;\n\n if (typeof onScrollToChange === 'function') {\n onScrollToChange({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n\n if (!isControlled) {\n this.setState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.isControlled) {\n return {};\n }\n\n if (nextProps.scrollToColumn !== prevState.instanceProps.prevScrollToColumn || nextProps.scrollToRow !== prevState.instanceProps.prevScrollToRow) {\n return _objectSpread({}, prevState, {\n scrollToColumn: nextProps.scrollToColumn,\n scrollToRow: nextProps.scrollToRow,\n instanceProps: {\n prevScrollToColumn: nextProps.scrollToColumn,\n prevScrollToRow: nextProps.scrollToRow\n }\n });\n }\n\n return {};\n }\n }]);\n\n return ArrowKeyStepper;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"children\": PropTypes.func.isRequired,\n \"className\": PropTypes.string,\n \"columnCount\": PropTypes.number.isRequired,\n \"disabled\": PropTypes.bool.isRequired,\n \"isControlled\": PropTypes.bool.isRequired,\n \"mode\": PropTypes.oneOf([\"cells\", \"edges\"]).isRequired,\n \"onScrollToChange\": PropTypes.func,\n \"rowCount\": PropTypes.number.isRequired,\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(ArrowKeyStepper, \"defaultProps\", {\n disabled: false,\n isControlled: false,\n mode: 'edges',\n scrollToColumn: 0,\n scrollToRow: 0\n});\n\npolyfill(ArrowKeyStepper);\nexport default ArrowKeyStepper;\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_ScrollIndices } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport createDetectElementResize from '../vendor/detectElementResize';\nvar AutoSizer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(AutoSizer, _React$Component);\n\n function AutoSizer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AutoSizer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_parentNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_autoSizer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n var height = _this._parentNode.offsetHeight || 0;\n var width = _this._parentNode.offsetWidth || 0;\n var win = _this._window || window;\n var style = win.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(style.paddingRight, 10) || 0;\n var paddingTop = parseInt(style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n var newHeight = height - paddingTop - paddingBottom;\n var newWidth = width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: height - paddingTop - paddingBottom,\n width: width - paddingLeft - paddingRight\n });\n\n onResize({\n height: height,\n width: width\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (autoSizer) {\n _this._autoSizer = autoSizer;\n });\n\n return _this;\n }\n\n _createClass(AutoSizer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n this._window = this._autoSizer.parentNode.ownerDocument.defaultView; // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n\n this._detectElementResize = createDetectElementResize(nonce, this._window);\n\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n disableHeight = _this$props2.disableHeight,\n disableWidth = _this$props2.disableWidth,\n style = _this$props2.style;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width; // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = {\n overflow: 'visible'\n };\n var childParams = {};\n\n if (!disableHeight) {\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n outerStyle.width = 0;\n childParams.width = width;\n }\n /**\n * TODO: Avoid rendering children before the initial measurements have been collected.\n * At best this would just be wasting cycles.\n * Add this check into version 10 though as it could break too many ref callbacks in version 9.\n * Note that if default width/height props were provided this would still work with SSR.\n if (\n height !== 0 &&\n width !== 0\n ) {\n child = children({ height, width })\n }\n */\n\n\n return React.createElement(\"div\", {\n className: className,\n ref: this._setRef,\n style: _objectSpread({}, outerStyle, {}, style)\n }, children(childParams));\n }\n }]);\n\n return AutoSizer;\n}(React.Component), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /** Function responsible for rendering children.*/\n \"children\": PropTypes.func.isRequired,\n\n /** Optional custom CSS class name to attach to root AutoSizer element. */\n \"className\": PropTypes.string,\n\n /** Default height to use for initial render; useful for SSR */\n \"defaultHeight\": PropTypes.number,\n\n /** Default width to use for initial render; useful for SSR */\n \"defaultWidth\": PropTypes.number,\n\n /** Disable dynamic :height property */\n \"disableHeight\": PropTypes.bool.isRequired,\n\n /** Disable dynamic :width property */\n \"disableWidth\": PropTypes.bool.isRequired,\n\n /** Nonce of the inlined stylesheet for Content Security Policy */\n \"nonce\": PropTypes.string,\n\n /** Callback to be invoked on-resize */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object\n}), _temp);\n\n_defineProperty(AutoSizer, \"defaultProps\", {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n});\n\nexport { AutoSizer as default };\nimport PropTypes from \"prop-types\";","/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Added support for injecting custom window object\n **/\nexport default function createDetectElementResize(nonce, hostWindow) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n\n if (typeof hostWindow !== 'undefined') {\n _window = hostWindow;\n } else if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof _window.document !== 'undefined' && _window.document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n /* Detect CSS Animations support to detect element display/re-attach */\n\n\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = _window.document.createElement('fakeelement');\n\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n\n var elementStyle = _window.getComputedStyle(element);\n\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n var resizeTriggersHtml = '<div class=\"expand-trigger\"><div></div></div>' + '<div class=\"contract-trigger\"></div>';\n\n if (window.trustedTypes) {\n var staticPolicy = trustedTypes.createPolicy('react-virtualized-auto-sizer', {\n createHTML: function createHTML() {\n return resizeTriggersHtml;\n }\n });\n element.__resizeTriggers__.innerHTML = staticPolicy.createHTML('');\n } else {\n element.__resizeTriggers__.innerHTML = resizeTriggersHtml;\n }\n\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n /* Listen for a css animation to detect element display/re-attach */\n\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n\n element.__resizeTriggers__.__animationListener__ = null;\n }\n\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {// Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n\n/**\n * Wraps a cell and measures its rendered content.\n * Measurements are stored in a per-cell cache.\n * Cached-content is not be re-measured.\n */\nvar CellMeasurer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CellMeasurer, _React$PureComponent);\n\n function CellMeasurer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CellMeasurer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CellMeasurer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_measure\", function () {\n var _this$props = _this.props,\n cache = _this$props.cache,\n _this$props$columnInd = _this$props.columnIndex,\n columnIndex = _this$props$columnInd === void 0 ? 0 : _this$props$columnInd,\n parent = _this$props.parent,\n _this$props$rowIndex = _this$props.rowIndex,\n rowIndex = _this$props$rowIndex === void 0 ? _this.props.index || 0 : _this$props$rowIndex;\n\n var _this$_getCellMeasure = _this._getCellMeasurements(),\n height = _this$_getCellMeasure.height,\n width = _this$_getCellMeasure.width;\n\n if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {\n cache.set(rowIndex, columnIndex, width, height);\n\n if (parent && typeof parent.recomputeGridSize === 'function') {\n parent.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('CellMeasurer registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n if (element) {\n _this._maybeMeasureCell();\n }\n });\n\n return _this;\n }\n\n _createClass(CellMeasurer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return typeof children === 'function' ? children({\n measure: this._measure,\n registerChild: this._registerChild\n }) : children;\n }\n }, {\n key: \"_getCellMeasurements\",\n value: function _getCellMeasurements() {\n var cache = this.props.cache;\n var node = this._child || findDOMNode(this); // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height\n\n if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n var styleWidth = node.style.width;\n var styleHeight = node.style.height; // If we are re-measuring a cell that has already been measured,\n // It will have a hard-coded width/height from the previous measurement.\n // The fact that we are measuring indicates this measurement is probably stale,\n // So explicitly clear it out (eg set to \"auto\") so we can recalculate.\n // See issue #593 for more info.\n // Even if we are measuring initially- if we're inside of a MultiGrid component,\n // Explicitly clear width/height before measuring to avoid being tainted by another Grid.\n // eg top/left Grid renders before bottom/right Grid\n // Since the CellMeasurerCache is shared between them this taints derived cell size values.\n\n if (!cache.hasFixedWidth()) {\n node.style.width = 'auto';\n }\n\n if (!cache.hasFixedHeight()) {\n node.style.height = 'auto';\n }\n\n var height = Math.ceil(node.offsetHeight);\n var width = Math.ceil(node.offsetWidth); // Reset after measuring to avoid breaking styles; see #660\n\n if (styleWidth) {\n node.style.width = styleWidth;\n }\n\n if (styleHeight) {\n node.style.height = styleHeight;\n }\n\n return {\n height: height,\n width: width\n };\n } else {\n return {\n height: 0,\n width: 0\n };\n }\n }\n }, {\n key: \"_maybeMeasureCell\",\n value: function _maybeMeasureCell() {\n var _this$props2 = this.props,\n cache = _this$props2.cache,\n _this$props2$columnIn = _this$props2.columnIndex,\n columnIndex = _this$props2$columnIn === void 0 ? 0 : _this$props2$columnIn,\n parent = _this$props2.parent,\n _this$props2$rowIndex = _this$props2.rowIndex,\n rowIndex = _this$props2$rowIndex === void 0 ? this.props.index || 0 : _this$props2$rowIndex;\n\n if (!cache.has(rowIndex, columnIndex)) {\n var _this$_getCellMeasure2 = this._getCellMeasurements(),\n height = _this$_getCellMeasure2.height,\n width = _this$_getCellMeasure2.width;\n\n cache.set(rowIndex, columnIndex, width, height); // If size has changed, let Grid know to re-render.\n\n if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {\n parent.invalidateCellSizeAfterRender({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }\n }]);\n\n return CellMeasurer;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"cache\": function cache() {\n return (typeof bpfrpt_proptype_CellMeasureCache === \"function\" ? bpfrpt_proptype_CellMeasureCache.isRequired ? bpfrpt_proptype_CellMeasureCache.isRequired : bpfrpt_proptype_CellMeasureCache : PropTypes.shape(bpfrpt_proptype_CellMeasureCache).isRequired).apply(this, arguments);\n },\n \"children\": PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\n \"columnIndex\": PropTypes.number,\n \"index\": PropTypes.number,\n \"parent\": PropTypes.shape({\n invalidateCellSizeAfterRender: PropTypes.func,\n recomputeGridSize: PropTypes.func\n }).isRequired,\n \"rowIndex\": PropTypes.number\n}), _temp); // Used for DEV mode warning check\n\n_defineProperty(CellMeasurer, \"__internalCellMeasurerFlag\", false);\n\nexport { CellMeasurer as default };\n\nif (process.env.NODE_ENV !== 'production') {\n CellMeasurer.__internalCellMeasurerFlag = true;\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var DEFAULT_HEIGHT = 30;\nexport var DEFAULT_WIDTH = 100; // Enables more intelligent mapping of a given column and row index to an item ID.\n// This prevents a cell cache from being invalidated when its parent collection is modified.\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCache =\n/*#__PURE__*/\nfunction () {\n function CellMeasurerCache() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCache);\n\n _defineProperty(this, \"_cellHeightCache\", {});\n\n _defineProperty(this, \"_cellWidthCache\", {});\n\n _defineProperty(this, \"_columnWidthCache\", {});\n\n _defineProperty(this, \"_rowHeightCache\", {});\n\n _defineProperty(this, \"_defaultHeight\", void 0);\n\n _defineProperty(this, \"_defaultWidth\", void 0);\n\n _defineProperty(this, \"_minHeight\", void 0);\n\n _defineProperty(this, \"_minWidth\", void 0);\n\n _defineProperty(this, \"_keyMapper\", void 0);\n\n _defineProperty(this, \"_hasFixedHeight\", void 0);\n\n _defineProperty(this, \"_hasFixedWidth\", void 0);\n\n _defineProperty(this, \"_columnCount\", 0);\n\n _defineProperty(this, \"_rowCount\", 0);\n\n _defineProperty(this, \"columnWidth\", function (_ref) {\n var index = _ref.index;\n\n var key = _this._keyMapper(0, index);\n\n return _this._columnWidthCache[key] !== undefined ? _this._columnWidthCache[key] : _this._defaultWidth;\n });\n\n _defineProperty(this, \"rowHeight\", function (_ref2) {\n var index = _ref2.index;\n\n var key = _this._keyMapper(index, 0);\n\n return _this._rowHeightCache[key] !== undefined ? _this._rowHeightCache[key] : _this._defaultHeight;\n });\n\n var defaultHeight = params.defaultHeight,\n defaultWidth = params.defaultWidth,\n fixedHeight = params.fixedHeight,\n fixedWidth = params.fixedWidth,\n keyMapper = params.keyMapper,\n minHeight = params.minHeight,\n minWidth = params.minWidth;\n this._hasFixedHeight = fixedHeight === true;\n this._hasFixedWidth = fixedWidth === true;\n this._minHeight = minHeight || 0;\n this._minWidth = minWidth || 0;\n this._keyMapper = keyMapper || defaultKeyMapper;\n this._defaultHeight = Math.max(this._minHeight, typeof defaultHeight === 'number' ? defaultHeight : DEFAULT_HEIGHT);\n this._defaultWidth = Math.max(this._minWidth, typeof defaultWidth === 'number' ? defaultWidth : DEFAULT_WIDTH);\n\n if (process.env.NODE_ENV !== 'production') {\n if (this._hasFixedHeight === false && this._hasFixedWidth === false) {\n console.warn(\"CellMeasurerCache should only measure a cell's width or height. \" + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');\n }\n\n if (this._hasFixedHeight === false && this._defaultHeight === 0) {\n console.warn('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n }\n\n if (this._hasFixedWidth === false && this._defaultWidth === 0) {\n console.warn('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n }\n }\n }\n\n _createClass(CellMeasurerCache, [{\n key: \"clear\",\n value: function clear(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this._keyMapper(rowIndex, columnIndex);\n\n delete this._cellHeightCache[key];\n delete this._cellWidthCache[key];\n\n this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n }\n }, {\n key: \"clearAll\",\n value: function clearAll() {\n this._cellHeightCache = {};\n this._cellWidthCache = {};\n this._columnWidthCache = {};\n this._rowHeightCache = {};\n this._rowCount = 0;\n this._columnCount = 0;\n }\n }, {\n key: \"hasFixedHeight\",\n value: function hasFixedHeight() {\n return this._hasFixedHeight;\n }\n }, {\n key: \"hasFixedWidth\",\n value: function hasFixedWidth() {\n return this._hasFixedWidth;\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this._hasFixedHeight) {\n return this._defaultHeight;\n } else {\n var _key = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellHeightCache[_key] !== undefined ? Math.max(this._minHeight, this._cellHeightCache[_key]) : this._defaultHeight;\n }\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this._hasFixedWidth) {\n return this._defaultWidth;\n } else {\n var _key2 = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellWidthCache[_key2] !== undefined ? Math.max(this._minWidth, this._cellWidthCache[_key2]) : this._defaultWidth;\n }\n }\n }, {\n key: \"has\",\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellHeightCache[key] !== undefined;\n }\n }, {\n key: \"set\",\n value: function set(rowIndex, columnIndex, width, height) {\n var key = this._keyMapper(rowIndex, columnIndex);\n\n if (columnIndex >= this._columnCount) {\n this._columnCount = columnIndex + 1;\n }\n\n if (rowIndex >= this._rowCount) {\n this._rowCount = rowIndex + 1;\n } // Size is cached per cell so we don't have to re-measure if cells are re-ordered.\n\n\n this._cellHeightCache[key] = height;\n this._cellWidthCache[key] = width;\n\n this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n }\n }, {\n key: \"_updateCachedColumnAndRowSizes\",\n value: function _updateCachedColumnAndRowSizes(rowIndex, columnIndex) {\n // :columnWidth and :rowHeight are derived based on all cells in a column/row.\n // Pre-cache these derived values for faster lookup later.\n // Reads are expected to occur more frequently than writes in this case.\n // Only update non-fixed dimensions though to avoid doing unnecessary work.\n if (!this._hasFixedWidth) {\n var columnWidth = 0;\n\n for (var i = 0; i < this._rowCount; i++) {\n columnWidth = Math.max(columnWidth, this.getWidth(i, columnIndex));\n }\n\n var columnKey = this._keyMapper(0, columnIndex);\n\n this._columnWidthCache[columnKey] = columnWidth;\n }\n\n if (!this._hasFixedHeight) {\n var rowHeight = 0;\n\n for (var _i = 0; _i < this._columnCount; _i++) {\n rowHeight = Math.max(rowHeight, this.getHeight(rowIndex, _i));\n }\n\n var rowKey = this._keyMapper(rowIndex, 0);\n\n this._rowHeightCache[rowKey] = rowHeight;\n }\n }\n }, {\n key: \"defaultHeight\",\n get: function get() {\n return this._defaultHeight;\n }\n }, {\n key: \"defaultWidth\",\n get: function get() {\n return this._defaultWidth;\n }\n }]);\n\n return CellMeasurerCache;\n}();\n\nexport { CellMeasurerCache as default };\n\nfunction defaultKeyMapper(rowIndex, columnIndex) {\n return \"\".concat(rowIndex, \"-\").concat(columnIndex);\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize'; // @TODO Merge Collection and CollectionView\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nvar IS_SCROLLING_TIMEOUT = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n/**\n * Monitors changes in properties (eg. cellCount) and state (eg. scroll offsets) to determine when rendering needs to occur.\n * This component does not render any visible content itself; it defers to the specified :cellLayoutManager.\n */\n\nvar CollectionView =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CollectionView, _React$PureComponent);\n\n // Invokes callbacks only when their values have changed.\n function CollectionView() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CollectionView);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CollectionView)).call.apply(_getPrototypeOf2, [this].concat(args))); // If this component is being rendered server-side, getScrollbarSize() will return undefined.\n // We handle this case in componentDidMount()\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_calculateSizeAndPositionDataOnNextUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnSectionRenderedHelper\", function () {\n var _this$props = _this.props,\n cellLayoutManager = _this$props.cellLayoutManager,\n onSectionRendered = _this$props.onSectionRendered;\n\n _this._onSectionRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n indices: cellLayoutManager.getLastRenderedIndices()\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_updateScrollPositionForScrollToCell\", function () {\n var _this$props2 = _this.props,\n cellLayoutManager = _this$props2.cellLayoutManager,\n height = _this$props2.height,\n scrollToAlignment = _this$props2.scrollToAlignment,\n scrollToCell = _this$props2.scrollToCell,\n width = _this$props2.width;\n var _this$state = _this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n\n if (scrollToCell >= 0) {\n var scrollPosition = cellLayoutManager.getScrollPositionForCell({\n align: scrollToAlignment,\n cellIndex: scrollToCell,\n height: height,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n\n if (scrollPosition.scrollLeft !== scrollLeft || scrollPosition.scrollTop !== scrollTop) {\n _this._setScrollPosition(scrollPosition);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target !== _this._scrollingContainer) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._enablePointerEventsAfterDelay(); // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scrollTop never exceeds the total height.\n\n\n var _this$props3 = _this.props,\n cellLayoutManager = _this$props3.cellLayoutManager,\n height = _this$props3.height,\n isScrollingChange = _this$props3.isScrollingChange,\n width = _this$props3.width;\n var scrollbarSize = _this._scrollbarSize;\n\n var _cellLayoutManager$ge = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge.height,\n totalWidth = _cellLayoutManager$ge.width;\n\n var scrollLeft = Math.max(0, Math.min(totalWidth - width + scrollbarSize, event.target.scrollLeft));\n var scrollTop = Math.max(0, Math.min(totalHeight - height + scrollbarSize, event.target.scrollTop)); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (_this.state.scrollLeft !== scrollLeft || _this.state.scrollTop !== scrollTop) {\n // Browsers with cancelable scroll events (eg. Firefox) interrupt scrolling animations if scrollTop/scrollLeft is set.\n // Other browsers (eg. Safari) don't scroll as well without the help under certain conditions (DOM or style changes during scrolling).\n // All things considered, this seems to be the best current work around that I'm aware of.\n // For more information see https://github.com/bvaughn/react-virtualized/pull/124\n var scrollPositionChangeReason = event.cancelable ? SCROLL_POSITION_CHANGE_REASONS.OBSERVED : SCROLL_POSITION_CHANGE_REASONS.REQUESTED; // Synchronously set :isScrolling the first time (since _setNextState will reschedule its animation frame each time it's called)\n\n if (!_this.state.isScrolling) {\n isScrollingChange(true);\n }\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollPositionChangeReason: scrollPositionChangeReason,\n scrollTop: scrollTop\n });\n }\n\n _this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalWidth: totalWidth,\n totalHeight: totalHeight\n });\n });\n\n _this._scrollbarSize = getScrollbarSize();\n\n if (_this._scrollbarSize === undefined) {\n _this._scrollbarSizeMeasured = false;\n _this._scrollbarSize = 0;\n } else {\n _this._scrollbarSizeMeasured = true;\n }\n\n return _this;\n }\n /**\n * Forced recompute of cell sizes and positions.\n * This function should be called if cell sizes have changed but nothing else has.\n * Since cell positions are calculated by callbacks, the collection view has no way of detecting when the underlying data has changed.\n */\n\n\n _createClass(CollectionView, [{\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._calculateSizeAndPositionDataOnNextUpdate = true;\n this.forceUpdate();\n }\n /* ---------------------------- Component lifecycle methods ---------------------------- */\n\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n cellLayoutManager = _this$props4.cellLayoutManager,\n scrollLeft = _this$props4.scrollLeft,\n scrollToCell = _this$props4.scrollToCell,\n scrollTop = _this$props4.scrollTop; // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n if (!this._scrollbarSizeMeasured) {\n this._scrollbarSize = getScrollbarSize();\n this._scrollbarSizeMeasured = true;\n this.setState({});\n }\n\n if (scrollToCell >= 0) {\n this._updateScrollPositionForScrollToCell();\n } else if (scrollLeft >= 0 || scrollTop >= 0) {\n this._setScrollPosition({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n } // Update onSectionRendered callback.\n\n\n this._invokeOnSectionRenderedHelper();\n\n var _cellLayoutManager$ge2 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge2.height,\n totalWidth = _cellLayoutManager$ge2.width; // Initialize onScroll callback.\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalHeight: totalHeight,\n totalWidth: totalWidth\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props5 = this.props,\n height = _this$props5.height,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToCell = _this$props5.scrollToCell,\n width = _this$props5.width;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollPositionChangeReason = _this$state2.scrollPositionChangeReason,\n scrollTop = _this$state2.scrollTop; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n if (scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft && scrollLeft !== this._scrollingContainer.scrollLeft) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0 && scrollTop !== prevState.scrollTop && scrollTop !== this._scrollingContainer.scrollTop) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Update scroll offsets if the current :scrollToCell values requires it\n\n\n if (height !== prevProps.height || scrollToAlignment !== prevProps.scrollToAlignment || scrollToCell !== prevProps.scrollToCell || width !== prevProps.width) {\n this._updateScrollPositionForScrollToCell();\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnSectionRenderedHelper();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoHeight = _this$props6.autoHeight,\n cellCount = _this$props6.cellCount,\n cellLayoutManager = _this$props6.cellLayoutManager,\n className = _this$props6.className,\n height = _this$props6.height,\n horizontalOverscanSize = _this$props6.horizontalOverscanSize,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n style = _this$props6.style,\n verticalOverscanSize = _this$props6.verticalOverscanSize,\n width = _this$props6.width;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollLeft = _this$state3.scrollLeft,\n scrollTop = _this$state3.scrollTop; // Memoization reset\n\n if (this._lastRenderedCellCount !== cellCount || this._lastRenderedCellLayoutManager !== cellLayoutManager || this._calculateSizeAndPositionDataOnNextUpdate) {\n this._lastRenderedCellCount = cellCount;\n this._lastRenderedCellLayoutManager = cellLayoutManager;\n this._calculateSizeAndPositionDataOnNextUpdate = false;\n cellLayoutManager.calculateSizeAndPositionData();\n }\n\n var _cellLayoutManager$ge3 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge3.height,\n totalWidth = _cellLayoutManager$ge3.width; // Safely expand the rendered area by the specified overscan amount\n\n\n var left = Math.max(0, scrollLeft - horizontalOverscanSize);\n var top = Math.max(0, scrollTop - verticalOverscanSize);\n var right = Math.min(totalWidth, scrollLeft + width + horizontalOverscanSize);\n var bottom = Math.min(totalHeight, scrollTop + height + verticalOverscanSize);\n var childrenToDisplay = height > 0 && width > 0 ? cellLayoutManager.cellRenderers({\n height: bottom - top,\n isScrolling: isScrolling,\n width: right - left,\n x: left,\n y: top\n }) : [];\n var collectionStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n WebkitOverflowScrolling: 'touch',\n width: width,\n willChange: 'transform'\n }; // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalHeight > height ? this._scrollbarSize : 0;\n var horizontalScrollBarSize = totalWidth > width ? this._scrollbarSize : 0; // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n collectionStyle.overflowX = totalWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n collectionStyle.overflowY = totalHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Collection', className),\n id: id,\n onScroll: this._onScroll,\n role: \"grid\",\n style: _objectSpread({}, collectionStyle, {}, style),\n tabIndex: 0\n }, cellCount > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Collection__innerScrollContainer\",\n style: {\n height: totalHeight,\n maxHeight: totalHeight,\n maxWidth: totalWidth,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n width: totalWidth\n }\n }, childrenToDisplay), cellCount === 0 && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Collection.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_enablePointerEventsAfterDelay\",\n value: function _enablePointerEventsAfterDelay() {\n var _this2 = this;\n\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = setTimeout(function () {\n var isScrollingChange = _this2.props.isScrollingChange;\n isScrollingChange(false);\n _this2._disablePointerEventsTimeoutId = null;\n\n _this2.setState({\n isScrolling: false\n });\n }, IS_SCROLLING_TIMEOUT);\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref) {\n var _this3 = this;\n\n var scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n totalHeight = _ref.totalHeight,\n totalWidth = _ref.totalWidth;\n\n this._onScrollMemoizer({\n callback: function callback(_ref2) {\n var scrollLeft = _ref2.scrollLeft,\n scrollTop = _ref2.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_setScrollPosition\",\n value: function _setScrollPosition(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (scrollLeft >= 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0) {\n newState.scrollTop = scrollTop;\n }\n\n if (scrollLeft >= 0 && scrollLeft !== this.state.scrollLeft || scrollTop >= 0 && scrollTop !== this.state.scrollTop) {\n this.setState(newState);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.cellCount === 0 && (prevState.scrollLeft !== 0 || prevState.scrollTop !== 0)) {\n return {\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n } else if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null ? nextProps.scrollTop : prevState.scrollTop,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n }\n\n return null;\n }\n }]);\n\n return CollectionView;\n}(React.PureComponent);\n\n_defineProperty(CollectionView, \"defaultProps\", {\n 'aria-label': 'grid',\n horizontalOverscanSize: 0,\n noContentRenderer: function noContentRenderer() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n onSectionRendered: function onSectionRendered() {\n return null;\n },\n scrollToAlignment: 'auto',\n scrollToCell: -1,\n style: {},\n verticalOverscanSize: 0\n});\n\nCollectionView.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /**\n * Number of cells in collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Calculates cell sizes and positions and manages rendering the appropriate cells given a specified window.\n */\n cellLayoutManager: PropTypes.object.isRequired,\n\n /**\n * Optional custom CSS class name to attach to root Collection element.\n */\n className: PropTypes.string,\n\n /**\n * Height of Collection; this property determines the number of visible (vs virtualized) rows.\n */\n height: PropTypes.number.isRequired,\n\n /**\n * Optional custom id to attach to root Collection element.\n */\n id: PropTypes.string,\n\n /**\n * Enables the `Collection` to horiontally \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n horizontalOverscanSize: PropTypes.number.isRequired,\n isScrollingChange: PropTypes.func,\n\n /**\n * Optional renderer to be used in place of rows when either :rowCount or :cellCount is 0.\n */\n noContentRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /**\n * Callback invoked with information about the section of the Collection that was just rendered.\n * This callback is passed a named :indices parameter which is an Array of the most recently rendered section indices.\n */\n onSectionRendered: PropTypes.func.isRequired,\n\n /**\n * Horizontal offset.\n */\n scrollLeft: PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /**\n * Cell index to ensure visible (by forcefully scrolling if necessary).\n */\n scrollToCell: PropTypes.number.isRequired,\n\n /**\n * Vertical offset.\n */\n scrollTop: PropTypes.number,\n\n /**\n * Optional custom inline style to attach to root Collection element.\n */\n style: PropTypes.object,\n\n /**\n * Enables the `Collection` to vertically \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n verticalOverscanSize: PropTypes.number.isRequired,\n\n /**\n * Width of Collection; this property determines the number of visible (vs virtualized) columns.\n */\n width: PropTypes.number.isRequired\n} : {};\npolyfill(CollectionView);\nexport default CollectionView;","var bpfrpt_proptype_Index = process.env.NODE_ENV === 'production' ? null : {\n \"index\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_PositionInfo = process.env.NODE_ENV === 'production' ? null : {\n \"x\": PropTypes.number.isRequired,\n \"y\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_ScrollPosition = process.env.NODE_ENV === 'production' ? null : {\n \"scrollLeft\": PropTypes.number.isRequired,\n \"scrollTop\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_SizeAndPositionInfo = process.env.NODE_ENV === 'production' ? null : {\n \"height\": PropTypes.number.isRequired,\n \"width\": PropTypes.number.isRequired,\n \"x\": PropTypes.number.isRequired,\n \"y\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_SizeInfo = process.env.NODE_ENV === 'production' ? null : {\n \"height\": PropTypes.number.isRequired,\n \"width\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_Index };\nexport { bpfrpt_proptype_PositionInfo };\nexport { bpfrpt_proptype_ScrollPosition };\nexport { bpfrpt_proptype_SizeAndPositionInfo };\nexport { bpfrpt_proptype_SizeInfo };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * A section of the Window.\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * Sections have a fixed size and contain 0 to many cells (tracked by their indices).\n */\nvar Section =\n/*#__PURE__*/\nfunction () {\n function Section(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n\n _classCallCheck(this, Section);\n\n this.height = height;\n this.width = width;\n this.x = x;\n this.y = y;\n this._indexMap = {};\n this._indices = [];\n }\n /** Add a cell to this section. */\n\n\n _createClass(Section, [{\n key: \"addCellIndex\",\n value: function addCellIndex(_ref2) {\n var index = _ref2.index;\n\n if (!this._indexMap[index]) {\n this._indexMap[index] = true;\n\n this._indices.push(index);\n }\n }\n /** Get all cell indices that have been added to this section. */\n\n }, {\n key: \"getCellIndices\",\n value: function getCellIndices() {\n return this._indices;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.x, \",\").concat(this.y, \" \").concat(this.width, \"x\").concat(this.height);\n }\n }]);\n\n return Section;\n}();\n\nexport { Section as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * \n */\nimport Section from './Section';\nvar SECTION_SIZE = 100;\n\n/**\n * Contains 0 to many Sections.\n * Grows (and adds Sections) dynamically as cells are registered.\n * Automatically adds cells to the appropriate Section(s).\n */\nvar SectionManager =\n/*#__PURE__*/\nfunction () {\n function SectionManager() {\n var sectionSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SECTION_SIZE;\n\n _classCallCheck(this, SectionManager);\n\n this._sectionSize = sectionSize;\n this._cellMetadata = [];\n this._sections = {};\n }\n /**\n * Gets all cell indices contained in the specified region.\n * A region may encompass 1 or more Sections.\n */\n\n\n _createClass(SectionManager, [{\n key: \"getCellIndices\",\n value: function getCellIndices(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n var indices = {};\n this.getSections({\n height: height,\n width: width,\n x: x,\n y: y\n }).forEach(function (section) {\n return section.getCellIndices().forEach(function (index) {\n indices[index] = index;\n });\n }); // Object keys are strings; this function returns numbers\n\n return Object.keys(indices).map(function (index) {\n return indices[index];\n });\n }\n /** Get size and position information for the cell specified. */\n\n }, {\n key: \"getCellMetadata\",\n value: function getCellMetadata(_ref2) {\n var index = _ref2.index;\n return this._cellMetadata[index];\n }\n /** Get all Sections overlapping the specified region. */\n\n }, {\n key: \"getSections\",\n value: function getSections(_ref3) {\n var height = _ref3.height,\n width = _ref3.width,\n x = _ref3.x,\n y = _ref3.y;\n var sectionXStart = Math.floor(x / this._sectionSize);\n var sectionXStop = Math.floor((x + width - 1) / this._sectionSize);\n var sectionYStart = Math.floor(y / this._sectionSize);\n var sectionYStop = Math.floor((y + height - 1) / this._sectionSize);\n var sections = [];\n\n for (var sectionX = sectionXStart; sectionX <= sectionXStop; sectionX++) {\n for (var sectionY = sectionYStart; sectionY <= sectionYStop; sectionY++) {\n var key = \"\".concat(sectionX, \".\").concat(sectionY);\n\n if (!this._sections[key]) {\n this._sections[key] = new Section({\n height: this._sectionSize,\n width: this._sectionSize,\n x: sectionX * this._sectionSize,\n y: sectionY * this._sectionSize\n });\n }\n\n sections.push(this._sections[key]);\n }\n }\n\n return sections;\n }\n /** Total number of Sections based on the currently registered cells. */\n\n }, {\n key: \"getTotalSectionCount\",\n value: function getTotalSectionCount() {\n return Object.keys(this._sections).length;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n var _this = this;\n\n return Object.keys(this._sections).map(function (index) {\n return _this._sections[index].toString();\n });\n }\n /** Adds a cell to the appropriate Sections and registers it metadata for later retrievable. */\n\n }, {\n key: \"registerCell\",\n value: function registerCell(_ref4) {\n var cellMetadatum = _ref4.cellMetadatum,\n index = _ref4.index;\n this._cellMetadata[index] = cellMetadatum;\n this.getSections(cellMetadatum).forEach(function (section) {\n return section.addCellIndex({\n index: index\n });\n });\n }\n }]);\n\n return SectionManager;\n}();\n\nexport { SectionManager as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","/**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param cellOffset Offset (x or y) position for cell\n * @param cellSize Size (width or height) of cell\n * @param containerSize Total size (width or height) of the container\n * @param currentOffset Container's current (x or y) offset\n * @return Offset to use to ensure the specified cell is visible\n */\nexport default function getUpdatedOffsetForIndex(_ref) {\n var _ref$align = _ref.align,\n align = _ref$align === void 0 ? 'auto' : _ref$align,\n cellOffset = _ref.cellOffset,\n cellSize = _ref.cellSize,\n containerSize = _ref.containerSize,\n currentOffset = _ref.currentOffset;\n var maxOffset = cellOffset;\n var minOffset = maxOffset - containerSize + cellSize;\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return maxOffset - (containerSize - cellSize) / 2;\n\n default:\n return Math.max(minOffset, Math.min(maxOffset, currentOffset));\n }\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport CollectionView from './CollectionView';\nimport _calculateSizeAndPositionData from './utils/calculateSizeAndPositionData';\nimport getUpdatedOffsetForIndex from '../utils/getUpdatedOffsetForIndex';\n\n/**\n * Renders scattered or non-linear data.\n * Unlike Grid, which renders checkerboard data, Collection can render arbitrarily positioned- even overlapping- data.\n */\nvar Collection =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Collection, _React$PureComponent);\n\n function Collection(props, context) {\n var _this;\n\n _classCallCheck(this, Collection);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Collection).call(this, props, context));\n _this._cellMetadata = [];\n _this._lastRenderedCellIndices = []; // Cell cache during scroll (for performance)\n\n _this._cellCache = [];\n _this._isScrollingChange = _this._isScrollingChange.bind(_assertThisInitialized(_this));\n _this._setCollectionViewRef = _this._setCollectionViewRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Collection, [{\n key: \"forceUpdate\",\n value: function forceUpdate() {\n if (this._collectionView !== undefined) {\n this._collectionView.forceUpdate();\n }\n }\n /** See Collection#recomputeCellSizesAndPositions */\n\n }, {\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._cellCache = [];\n\n this._collectionView.recomputeCellSizesAndPositions();\n }\n /** React lifecycle methods */\n\n }, {\n key: \"render\",\n value: function render() {\n var props = _extends({}, this.props);\n\n return React.createElement(CollectionView, _extends({\n cellLayoutManager: this,\n isScrollingChange: this._isScrollingChange,\n ref: this._setCollectionViewRef\n }, props));\n }\n /** CellLayoutManager interface */\n\n }, {\n key: \"calculateSizeAndPositionData\",\n value: function calculateSizeAndPositionData() {\n var _this$props = this.props,\n cellCount = _this$props.cellCount,\n cellSizeAndPositionGetter = _this$props.cellSizeAndPositionGetter,\n sectionSize = _this$props.sectionSize;\n\n var data = _calculateSizeAndPositionData({\n cellCount: cellCount,\n cellSizeAndPositionGetter: cellSizeAndPositionGetter,\n sectionSize: sectionSize\n });\n\n this._cellMetadata = data.cellMetadata;\n this._sectionManager = data.sectionManager;\n this._height = data.height;\n this._width = data.width;\n }\n /**\n * Returns the most recently rendered set of cell indices.\n */\n\n }, {\n key: \"getLastRenderedIndices\",\n value: function getLastRenderedIndices() {\n return this._lastRenderedCellIndices;\n }\n /**\n * Calculates the minimum amount of change from the current scroll position to ensure the specified cell is (fully) visible.\n */\n\n }, {\n key: \"getScrollPositionForCell\",\n value: function getScrollPositionForCell(_ref) {\n var align = _ref.align,\n cellIndex = _ref.cellIndex,\n height = _ref.height,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n width = _ref.width;\n var cellCount = this.props.cellCount;\n\n if (cellIndex >= 0 && cellIndex < cellCount) {\n var cellMetadata = this._cellMetadata[cellIndex];\n scrollLeft = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.x,\n cellSize: cellMetadata.width,\n containerSize: width,\n currentOffset: scrollLeft,\n targetIndex: cellIndex\n });\n scrollTop = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.y,\n cellSize: cellMetadata.height,\n containerSize: height,\n currentOffset: scrollTop,\n targetIndex: cellIndex\n });\n }\n\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n }\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return {\n height: this._height,\n width: this._width\n };\n }\n }, {\n key: \"cellRenderers\",\n value: function cellRenderers(_ref2) {\n var _this2 = this;\n\n var height = _ref2.height,\n isScrolling = _ref2.isScrolling,\n width = _ref2.width,\n x = _ref2.x,\n y = _ref2.y;\n var _this$props2 = this.props,\n cellGroupRenderer = _this$props2.cellGroupRenderer,\n cellRenderer = _this$props2.cellRenderer; // Store for later calls to getLastRenderedIndices()\n\n this._lastRenderedCellIndices = this._sectionManager.getCellIndices({\n height: height,\n width: width,\n x: x,\n y: y\n });\n return cellGroupRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n cellSizeAndPositionGetter: function cellSizeAndPositionGetter(_ref3) {\n var index = _ref3.index;\n return _this2._sectionManager.getCellMetadata({\n index: index\n });\n },\n indices: this._lastRenderedCellIndices,\n isScrolling: isScrolling\n });\n }\n }, {\n key: \"_isScrollingChange\",\n value: function _isScrollingChange(isScrolling) {\n if (!isScrolling) {\n this._cellCache = [];\n }\n }\n }, {\n key: \"_setCollectionViewRef\",\n value: function _setCollectionViewRef(ref) {\n this._collectionView = ref;\n }\n }]);\n\n return Collection;\n}(React.PureComponent);\n\n_defineProperty(Collection, \"defaultProps\", {\n 'aria-label': 'grid',\n cellGroupRenderer: defaultCellGroupRenderer\n});\n\nexport { Collection as default };\nCollection.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Number of cells in Collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a group of cells given their indices.\n * Should implement the following interface: ({\n * cellSizeAndPositionGetter:Function,\n * indices: Array<number>,\n * cellRenderer: Function\n * }): Array<PropTypes.node>\n */\n cellGroupRenderer: PropTypes.func.isRequired,\n\n /**\n * Responsible for rendering a cell given an row and column index.\n * Should implement the following interface: ({ index: number, key: string, style: object }): PropTypes.element\n */\n cellRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback responsible for returning size and offset/position information for a given cell (index).\n * ({ index: number }): { height: number, width: number, x: number, y: number }\n */\n cellSizeAndPositionGetter: PropTypes.func.isRequired,\n\n /**\n * Optionally override the size of the sections a Collection's cells are split into.\n */\n sectionSize: PropTypes.number\n} : {};\n\nfunction defaultCellGroupRenderer(_ref4) {\n var cellCache = _ref4.cellCache,\n cellRenderer = _ref4.cellRenderer,\n cellSizeAndPositionGetter = _ref4.cellSizeAndPositionGetter,\n indices = _ref4.indices,\n isScrolling = _ref4.isScrolling;\n return indices.map(function (index) {\n var cellMetadata = cellSizeAndPositionGetter({\n index: index\n });\n var cellRendererProps = {\n index: index,\n isScrolling: isScrolling,\n key: index,\n style: {\n height: cellMetadata.height,\n left: cellMetadata.x,\n position: 'absolute',\n top: cellMetadata.y,\n width: cellMetadata.width\n }\n }; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling complets.\n\n if (isScrolling) {\n if (!(index in cellCache)) {\n cellCache[index] = cellRenderer(cellRendererProps);\n }\n\n return cellCache[index];\n } else {\n return cellRenderer(cellRendererProps);\n }\n }).filter(function (renderedCell) {\n return !!renderedCell;\n });\n}\n\nimport { bpfrpt_proptype_ScrollPosition } from \"./types\";\nimport { bpfrpt_proptype_SizeInfo } from \"./types\";","import SectionManager from '../SectionManager';\nexport default function calculateSizeAndPositionData(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,\n sectionSize = _ref.sectionSize;\n var cellMetadata = [];\n var sectionManager = new SectionManager(sectionSize);\n var height = 0;\n var width = 0;\n\n for (var index = 0; index < cellCount; index++) {\n var cellMetadatum = cellSizeAndPositionGetter({\n index: index\n });\n\n if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) {\n throw Error(\"Invalid metadata returned for cell \".concat(index, \":\\n x:\").concat(cellMetadatum.x, \", y:\").concat(cellMetadatum.y, \", width:\").concat(cellMetadatum.width, \", height:\").concat(cellMetadatum.height));\n }\n\n height = Math.max(height, cellMetadatum.y + cellMetadatum.height);\n width = Math.max(width, cellMetadatum.x + cellMetadatum.width);\n cellMetadata[index] = cellMetadatum;\n sectionManager.registerCell({\n cellMetadatum: cellMetadatum,\n index: index\n });\n }\n\n return {\n cellMetadata: cellMetadata,\n height: height,\n sectionManager: sectionManager,\n width: width\n };\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * High-order component that auto-calculates column-widths for `Grid` cells.\n */\n\nvar ColumnSizer =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ColumnSizer, _React$PureComponent);\n\n function ColumnSizer(props, context) {\n var _this;\n\n _classCallCheck(this, ColumnSizer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ColumnSizer).call(this, props, context));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ColumnSizer, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n columnMaxWidth = _this$props.columnMaxWidth,\n columnMinWidth = _this$props.columnMinWidth,\n columnCount = _this$props.columnCount,\n width = _this$props.width;\n\n if (columnMaxWidth !== prevProps.columnMaxWidth || columnMinWidth !== prevProps.columnMinWidth || columnCount !== prevProps.columnCount || width !== prevProps.width) {\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n columnMaxWidth = _this$props2.columnMaxWidth,\n columnMinWidth = _this$props2.columnMinWidth,\n columnCount = _this$props2.columnCount,\n width = _this$props2.width;\n var safeColumnMinWidth = columnMinWidth || 1;\n var safeColumnMaxWidth = columnMaxWidth ? Math.min(columnMaxWidth, width) : width;\n var columnWidth = width / columnCount;\n columnWidth = Math.max(safeColumnMinWidth, columnWidth);\n columnWidth = Math.min(safeColumnMaxWidth, columnWidth);\n columnWidth = Math.floor(columnWidth);\n var adjustedWidth = Math.min(width, columnWidth * columnCount);\n return children({\n adjustedWidth: adjustedWidth,\n columnWidth: columnWidth,\n getColumnWidth: function getColumnWidth() {\n return columnWidth;\n },\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(child) {\n if (child && typeof child.recomputeGridSize !== 'function') {\n throw Error('Unexpected child type registered; only Grid/MultiGrid children are supported.');\n }\n\n this._registeredChild = child;\n\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }]);\n\n return ColumnSizer;\n}(React.PureComponent);\n\nexport { ColumnSizer as default };\nColumnSizer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized Grid.\n * This function should implement the following signature:\n * ({ adjustedWidth, getColumnWidth, registerChild }) => PropTypes.element\n *\n * The specified :getColumnWidth function should be passed to the Grid's :columnWidth property.\n * The :registerChild should be passed to the Grid's :ref property.\n * The :adjustedWidth property is optional; it reflects the lesser of the overall width or the width of all columns.\n */\n children: PropTypes.func.isRequired,\n\n /** Optional maximum allowed column width */\n columnMaxWidth: PropTypes.number,\n\n /** Optional minimum allowed column width */\n columnMinWidth: PropTypes.number,\n\n /** Number of columns in Grid or Table child */\n columnCount: PropTypes.number.isRequired,\n\n /** Width of Grid or Table child */\n width: PropTypes.number.isRequired\n} : {};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\n/**\n * Higher-order component that manages lazy-loading for \"infinite\" data.\n * This component decorates a virtual component and just-in-time prefetches rows as a user scrolls.\n * It is intended as a convenience component; fork it if you'd like finer-grained control over data-loading.\n */\n\nvar InfiniteLoader =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(InfiniteLoader, _React$PureComponent);\n\n function InfiniteLoader(props, context) {\n var _this;\n\n _classCallCheck(this, InfiniteLoader);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InfiniteLoader).call(this, props, context));\n _this._loadMoreRowsMemoizer = createCallbackMemoizer();\n _this._onRowsRendered = _this._onRowsRendered.bind(_assertThisInitialized(_this));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(InfiniteLoader, [{\n key: \"resetLoadMoreRowsCache\",\n value: function resetLoadMoreRowsCache(autoReload) {\n this._loadMoreRowsMemoizer = createCallbackMemoizer();\n\n if (autoReload) {\n this._doStuff(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n onRowsRendered: this._onRowsRendered,\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_loadUnloadedRanges\",\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n var loadMoreRows = this.props.loadMoreRows;\n unloadedRanges.forEach(function (unloadedRange) {\n var promise = loadMoreRows(unloadedRange);\n\n if (promise) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: unloadedRange.startIndex,\n stopIndex: unloadedRange.stopIndex\n })) {\n if (_this2._registeredChild) {\n forceUpdateReactVirtualizedComponent(_this2._registeredChild, _this2._lastRenderedStartIndex);\n }\n }\n });\n }\n });\n }\n }, {\n key: \"_onRowsRendered\",\n value: function _onRowsRendered(_ref) {\n var startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n this._lastRenderedStartIndex = startIndex;\n this._lastRenderedStopIndex = stopIndex;\n\n this._doStuff(startIndex, stopIndex);\n }\n }, {\n key: \"_doStuff\",\n value: function _doStuff(startIndex, stopIndex) {\n var _ref2,\n _this3 = this;\n\n var _this$props = this.props,\n isRowLoaded = _this$props.isRowLoaded,\n minimumBatchSize = _this$props.minimumBatchSize,\n rowCount = _this$props.rowCount,\n threshold = _this$props.threshold;\n var unloadedRanges = scanForUnloadedRanges({\n isRowLoaded: isRowLoaded,\n minimumBatchSize: minimumBatchSize,\n rowCount: rowCount,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(rowCount - 1, stopIndex + threshold)\n }); // For memoize comparison\n\n var squashedUnloadedRanges = (_ref2 = []).concat.apply(_ref2, _toConsumableArray(unloadedRanges.map(function (_ref3) {\n var startIndex = _ref3.startIndex,\n stopIndex = _ref3.stopIndex;\n return [startIndex, stopIndex];\n })));\n\n this._loadMoreRowsMemoizer({\n callback: function callback() {\n _this3._loadUnloadedRanges(unloadedRanges);\n },\n indices: {\n squashedUnloadedRanges: squashedUnloadedRanges\n }\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(registeredChild) {\n this._registeredChild = registeredChild;\n }\n }]);\n\n return InfiniteLoader;\n}(React.PureComponent);\n/**\n * Determines if the specified start/stop range is visible based on the most recently rendered range.\n */\n\n\n_defineProperty(InfiniteLoader, \"defaultProps\", {\n minimumBatchSize: 10,\n rowCount: 0,\n threshold: 15\n});\n\nexport { InfiniteLoader as default };\nInfiniteLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized component.\n * This function should implement the following signature:\n * ({ onRowsRendered, registerChild }) => PropTypes.element\n *\n * The specified :onRowsRendered function should be passed through to the child's :onRowsRendered property.\n * The :registerChild callback should be set as the virtualized component's :ref.\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Function responsible for tracking the loaded state of each row.\n * It should implement the following signature: ({ index: number }): boolean\n */\n isRowLoaded: PropTypes.func.isRequired,\n\n /**\n * Callback to be invoked when more rows must be loaded.\n * It should implement the following signature: ({ startIndex, stopIndex }): Promise\n * The returned Promise should be resolved once row data has finished loading.\n * It will be used to determine when to refresh the list with the newly-loaded data.\n * This callback may be called multiple times in reaction to a single scroll event.\n */\n loadMoreRows: PropTypes.func.isRequired,\n\n /**\n * Minimum number of rows to be loaded at a time.\n * This property can be used to batch requests to reduce HTTP requests.\n */\n minimumBatchSize: PropTypes.number.isRequired,\n\n /**\n * Number of rows in list; can be arbitrary high number if actual number is unknown.\n */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Threshold at which to pre-fetch data.\n * A threshold X means that data will start loading when a user scrolls within X rows.\n * This value defaults to 15.\n */\n threshold: PropTypes.number.isRequired\n} : {};\nexport function isRangeVisible(_ref4) {\n var lastRenderedStartIndex = _ref4.lastRenderedStartIndex,\n lastRenderedStopIndex = _ref4.lastRenderedStopIndex,\n startIndex = _ref4.startIndex,\n stopIndex = _ref4.stopIndex;\n return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n/**\n * Returns all of the ranges within a larger range that contain unloaded rows.\n */\n\nexport function scanForUnloadedRanges(_ref5) {\n var isRowLoaded = _ref5.isRowLoaded,\n minimumBatchSize = _ref5.minimumBatchSize,\n rowCount = _ref5.rowCount,\n startIndex = _ref5.startIndex,\n stopIndex = _ref5.stopIndex;\n var unloadedRanges = [];\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var index = startIndex; index <= stopIndex; index++) {\n var loaded = isRowLoaded({\n index: index\n });\n\n if (!loaded) {\n rangeStopIndex = index;\n\n if (rangeStartIndex === null) {\n rangeStartIndex = index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n rangeStartIndex = rangeStopIndex = null;\n }\n } // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n\n\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), rowCount - 1);\n\n for (var _index = rangeStopIndex + 1; _index <= potentialStopIndex; _index++) {\n if (!isRowLoaded({\n index: _index\n })) {\n rangeStopIndex = _index;\n } else {\n break;\n }\n }\n\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n } // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n\n\n if (unloadedRanges.length) {\n var firstUnloadedRange = unloadedRanges[0];\n\n while (firstUnloadedRange.stopIndex - firstUnloadedRange.startIndex + 1 < minimumBatchSize && firstUnloadedRange.startIndex > 0) {\n var _index2 = firstUnloadedRange.startIndex - 1;\n\n if (!isRowLoaded({\n index: _index2\n })) {\n firstUnloadedRange.startIndex = _index2;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n/**\n * Since RV components use shallowCompare we need to force a render (even though props haven't changed).\n * However InfiniteLoader may wrap a Grid or it may wrap a Table or List.\n * In the first case the built-in React forceUpdate() method is sufficient to force a re-render,\n * But in the latter cases we need to use the RV-specific forceUpdateGrid() method.\n * Else the inner Grid will not be re-rendered and visuals may be stale.\n *\n * Additionally, while a Grid is scrolling the cells can be cached,\n * So it's important to invalidate that cache by recalculating sizes\n * before forcing a rerender.\n */\n\nexport function forceUpdateReactVirtualizedComponent(component) {\n var currentIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var recomputeSize = typeof component.recomputeGridSize === 'function' ? component.recomputeGridSize : component.recomputeRowHeights;\n\n if (recomputeSize) {\n recomputeSize.call(component, currentIndex);\n } else {\n component.forceUpdate();\n }\n}","import * as React from 'react';\nvar bpfrpt_proptype_RowRendererParams = process.env.NODE_ENV === 'production' ? null : {\n \"index\": PropTypes.number.isRequired,\n \"isScrolling\": PropTypes.bool.isRequired,\n \"isVisible\": PropTypes.bool.isRequired,\n \"key\": PropTypes.string.isRequired,\n \"parent\": PropTypes.object.isRequired,\n \"style\": PropTypes.object.isRequired\n};\nvar bpfrpt_proptype_RowRenderer = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_RenderedRows = process.env.NODE_ENV === 'production' ? null : {\n \"overscanStartIndex\": PropTypes.number.isRequired,\n \"overscanStopIndex\": PropTypes.number.isRequired,\n \"startIndex\": PropTypes.number.isRequired,\n \"stopIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_Scroll = process.env.NODE_ENV === 'production' ? null : {\n \"clientHeight\": PropTypes.number.isRequired,\n \"scrollHeight\": PropTypes.number.isRequired,\n \"scrollTop\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_RowRendererParams };\nexport { bpfrpt_proptype_RowRenderer };\nexport { bpfrpt_proptype_RenderedRows };\nexport { bpfrpt_proptype_Scroll };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport * as React from 'react';\nimport clsx from 'clsx';\n/**\n * It is inefficient to create and manage a large list of DOM elements within a scrolling container\n * if only a few of those elements are visible. The primary purpose of this component is to improve\n * performance by only rendering the DOM nodes that a user is able to see based on their current\n * scroll position.\n *\n * This component renders a virtualized list of elements with either fixed or dynamic heights.\n */\n\nvar List = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(List, _React$PureComponent);\n\n function List() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, List);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(List)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"Grid\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRenderer\", function (_ref) {\n var parent = _ref.parent,\n rowIndex = _ref.rowIndex,\n style = _ref.style,\n isScrolling = _ref.isScrolling,\n isVisible = _ref.isVisible,\n key = _ref.key;\n var rowRenderer = _this.props.rowRenderer; // TRICKY The style object is sometimes cached by Grid.\n // This prevents new style objects from bypassing shallowCompare().\n // However as of React 16, style props are auto-frozen (at least in dev mode)\n // Check to make sure we can still modify the style before proceeding.\n // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713\n\n var widthDescriptor = Object.getOwnPropertyDescriptor(style, 'width');\n\n if (widthDescriptor && widthDescriptor.writable) {\n // By default, List cells should be 100% width.\n // This prevents them from flowing under a scrollbar (if present).\n style.width = '100%';\n }\n\n return rowRenderer({\n index: rowIndex,\n style: style,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (ref) {\n _this.Grid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (_ref2) {\n var clientHeight = _ref2.clientHeight,\n scrollHeight = _ref2.scrollHeight,\n scrollTop = _ref2.scrollTop;\n var onScroll = _this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref3) {\n var rowOverscanStartIndex = _ref3.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref3.rowOverscanStopIndex,\n rowStartIndex = _ref3.rowStartIndex,\n rowStopIndex = _ref3.rowStopIndex;\n var onRowsRendered = _this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n });\n\n return _this;\n }\n\n _createClass(List, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref4) {\n var alignment = _ref4.alignment,\n index = _ref4.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index,\n columnIndex: 0\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref6$columnIndex = _ref6.columnIndex,\n columnIndex = _ref6$columnIndex === void 0 ? 0 : _ref6$columnIndex,\n _ref6$rowIndex = _ref6.rowIndex,\n rowIndex = _ref6$rowIndex === void 0 ? 0 : _ref6$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index,\n columnIndex: 0\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n noRowsRenderer = _this$props.noRowsRenderer,\n scrollToIndex = _this$props.scrollToIndex,\n width = _this$props.width;\n var classNames = clsx('ReactVirtualized__List', className);\n return React.createElement(Grid, _extends({}, this.props, {\n autoContainerWidth: true,\n cellRenderer: this._cellRenderer,\n className: classNames,\n columnWidth: width,\n columnCount: 1,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n scrollToRow: scrollToIndex\n }));\n }\n }]);\n\n return List;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /** Optional CSS class name */\n \"className\": PropTypes.string,\n\n /**\n * Used to estimate the total height of a List before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Height constraint for list (determines how many actual rows are rendered) */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional renderer to be used in place of rows when rowCount is 0 */\n \"noRowsRenderer\": function noRowsRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /** Callback invoked with information about the slice of rows that were just rendered. */\n \"onRowsRendered\": PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** Either a fixed row height (number) or a function that returns the height of a row given its index. */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a row given an index; ({ index: number }): node */\n \"rowRenderer\": function rowRenderer() {\n return (typeof bpfrpt_proptype_RowRenderer === \"function\" ? bpfrpt_proptype_RowRenderer.isRequired ? bpfrpt_proptype_RowRenderer.isRequired : bpfrpt_proptype_RowRenderer : PropTypes.shape(bpfrpt_proptype_RowRenderer).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in list. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** See Grid#scrollToAlignment */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToIndex\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of list */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(List, \"defaultProps\", {\n autoHeight: false,\n estimatedRowSize: 30,\n onScroll: function onScroll() {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {},\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { List as default };\nimport { bpfrpt_proptype_NoContentRenderer } from \"../Grid\";\nimport { bpfrpt_proptype_Alignment } from \"../Grid\";\nimport { bpfrpt_proptype_CellSize } from \"../Grid\";\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"../Grid\";\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_CellRendererParams } from \"../Grid\";\nimport { bpfrpt_proptype_Scroll as bpfrpt_proptype_GridScroll } from \"../Grid\";\nimport { bpfrpt_proptype_RowRenderer } from \"./types\";\nimport { bpfrpt_proptype_RenderedRows } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport PropTypes from \"prop-types\";","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/binary-search-bounds\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nfunction _GEA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x >= y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GEP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) >= 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _GTA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x > y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GTP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) > 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LTA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x < y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LTP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) < 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LEA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x <= y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LEP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) <= 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _EQA(a, l, h, y) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x === y) {\n return m;\n } else if (x <= y) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction _EQP(a, l, h, y, c) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n var p = c(x, y);\n\n if (p === 0) {\n return m;\n } else if (p <= 0) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction dispatchBsearchEQ(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _EQP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _EQA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nexport default {\n ge: dispatchBsearchGE,\n gt: dispatchBsearchGT,\n lt: dispatchBsearchLT,\n le: dispatchBsearchLE,\n eq: dispatchBsearchEQ\n};","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/interval-tree-1d\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax in an upstream dependency.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nimport bounds from './binarySearchBounds';\nvar NOT_FOUND = 0;\nvar SUCCESS = 1;\nvar EMPTY = 2;\n\nfunction IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {\n this.mid = mid;\n this.left = left;\n this.right = right;\n this.leftPoints = leftPoints;\n this.rightPoints = rightPoints;\n this.count = (left ? left.count : 0) + (right ? right.count : 0) + leftPoints.length;\n}\n\nvar proto = IntervalTreeNode.prototype;\n\nfunction copy(a, b) {\n a.mid = b.mid;\n a.left = b.left;\n a.right = b.right;\n a.leftPoints = b.leftPoints;\n a.rightPoints = b.rightPoints;\n a.count = b.count;\n}\n\nfunction rebuild(node, intervals) {\n var ntree = createIntervalTree(intervals);\n node.mid = ntree.mid;\n node.left = ntree.left;\n node.right = ntree.right;\n node.leftPoints = ntree.leftPoints;\n node.rightPoints = ntree.rightPoints;\n node.count = ntree.count;\n}\n\nfunction rebuildWithInterval(node, interval) {\n var intervals = node.intervals([]);\n intervals.push(interval);\n rebuild(node, intervals);\n}\n\nfunction rebuildWithoutInterval(node, interval) {\n var intervals = node.intervals([]);\n var idx = intervals.indexOf(interval);\n\n if (idx < 0) {\n return NOT_FOUND;\n }\n\n intervals.splice(idx, 1);\n rebuild(node, intervals);\n return SUCCESS;\n}\n\nproto.intervals = function (result) {\n result.push.apply(result, this.leftPoints);\n\n if (this.left) {\n this.left.intervals(result);\n }\n\n if (this.right) {\n this.right.intervals(result);\n }\n\n return result;\n};\n\nproto.insert = function (interval) {\n var weight = this.count - this.leftPoints.length;\n this.count += 1;\n\n if (interval[1] < this.mid) {\n if (this.left) {\n if (4 * (this.left.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.left.insert(interval);\n }\n } else {\n this.left = createIntervalTree([interval]);\n }\n } else if (interval[0] > this.mid) {\n if (this.right) {\n if (4 * (this.right.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.right.insert(interval);\n }\n } else {\n this.right = createIntervalTree([interval]);\n }\n } else {\n var l = bounds.ge(this.leftPoints, interval, compareBegin);\n var r = bounds.ge(this.rightPoints, interval, compareEnd);\n this.leftPoints.splice(l, 0, interval);\n this.rightPoints.splice(r, 0, interval);\n }\n};\n\nproto.remove = function (interval) {\n var weight = this.count - this.leftPoints;\n\n if (interval[1] < this.mid) {\n if (!this.left) {\n return NOT_FOUND;\n }\n\n var rw = this.right ? this.right.count : 0;\n\n if (4 * rw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.left.remove(interval);\n\n if (r === EMPTY) {\n this.left = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else if (interval[0] > this.mid) {\n if (!this.right) {\n return NOT_FOUND;\n }\n\n var lw = this.left ? this.left.count : 0;\n\n if (4 * lw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.right.remove(interval);\n\n if (r === EMPTY) {\n this.right = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else {\n if (this.count === 1) {\n if (this.leftPoints[0] === interval) {\n return EMPTY;\n } else {\n return NOT_FOUND;\n }\n }\n\n if (this.leftPoints.length === 1 && this.leftPoints[0] === interval) {\n if (this.left && this.right) {\n var p = this;\n var n = this.left;\n\n while (n.right) {\n p = n;\n n = n.right;\n }\n\n if (p === this) {\n n.right = this.right;\n } else {\n var l = this.left;\n var r = this.right;\n p.count -= n.count;\n p.right = n.left;\n n.left = l;\n n.right = r;\n }\n\n copy(this, n);\n this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;\n } else if (this.left) {\n copy(this, this.left);\n } else {\n copy(this, this.right);\n }\n\n return SUCCESS;\n }\n\n for (var l = bounds.ge(this.leftPoints, interval, compareBegin); l < this.leftPoints.length; ++l) {\n if (this.leftPoints[l][0] !== interval[0]) {\n break;\n }\n\n if (this.leftPoints[l] === interval) {\n this.count -= 1;\n this.leftPoints.splice(l, 1);\n\n for (var r = bounds.ge(this.rightPoints, interval, compareEnd); r < this.rightPoints.length; ++r) {\n if (this.rightPoints[r][1] !== interval[1]) {\n break;\n } else if (this.rightPoints[r] === interval) {\n this.rightPoints.splice(r, 1);\n return SUCCESS;\n }\n }\n }\n }\n\n return NOT_FOUND;\n }\n};\n\nfunction reportLeftRange(arr, hi, cb) {\n for (var i = 0; i < arr.length && arr[i][0] <= hi; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRightRange(arr, lo, cb) {\n for (var i = arr.length - 1; i >= 0 && arr[i][1] >= lo; --i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRange(arr, cb) {\n for (var i = 0; i < arr.length; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nproto.queryPoint = function (x, cb) {\n if (x < this.mid) {\n if (this.left) {\n var r = this.left.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportLeftRange(this.leftPoints, x, cb);\n } else if (x > this.mid) {\n if (this.right) {\n var r = this.right.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportRightRange(this.rightPoints, x, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nproto.queryInterval = function (lo, hi, cb) {\n if (lo < this.mid && this.left) {\n var r = this.left.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi > this.mid && this.right) {\n var r = this.right.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi < this.mid) {\n return reportLeftRange(this.leftPoints, hi, cb);\n } else if (lo > this.mid) {\n return reportRightRange(this.rightPoints, lo, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction compareBegin(a, b) {\n var d = a[0] - b[0];\n\n if (d) {\n return d;\n }\n\n return a[1] - b[1];\n}\n\nfunction compareEnd(a, b) {\n var d = a[1] - b[1];\n\n if (d) {\n return d;\n }\n\n return a[0] - b[0];\n}\n\nfunction createIntervalTree(intervals) {\n if (intervals.length === 0) {\n return null;\n }\n\n var pts = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n pts.push(intervals[i][0], intervals[i][1]);\n }\n\n pts.sort(compareNumbers);\n var mid = pts[pts.length >> 1];\n var leftIntervals = [];\n var rightIntervals = [];\n var centerIntervals = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n var s = intervals[i];\n\n if (s[1] < mid) {\n leftIntervals.push(s);\n } else if (mid < s[0]) {\n rightIntervals.push(s);\n } else {\n centerIntervals.push(s);\n }\n } //Split center intervals\n\n\n var leftPoints = centerIntervals;\n var rightPoints = centerIntervals.slice();\n leftPoints.sort(compareBegin);\n rightPoints.sort(compareEnd);\n return new IntervalTreeNode(mid, createIntervalTree(leftIntervals), createIntervalTree(rightIntervals), leftPoints, rightPoints);\n} //User friendly wrapper that makes it possible to support empty trees\n\n\nfunction IntervalTree(root) {\n this.root = root;\n}\n\nvar tproto = IntervalTree.prototype;\n\ntproto.insert = function (interval) {\n if (this.root) {\n this.root.insert(interval);\n } else {\n this.root = new IntervalTreeNode(interval[0], null, null, [interval], [interval]);\n }\n};\n\ntproto.remove = function (interval) {\n if (this.root) {\n var r = this.root.remove(interval);\n\n if (r === EMPTY) {\n this.root = null;\n }\n\n return r !== NOT_FOUND;\n }\n\n return false;\n};\n\ntproto.queryPoint = function (p, cb) {\n if (this.root) {\n return this.root.queryPoint(p, cb);\n }\n};\n\ntproto.queryInterval = function (lo, hi, cb) {\n if (lo <= hi && this.root) {\n return this.root.queryInterval(lo, hi, cb);\n }\n};\n\nObject.defineProperty(tproto, 'count', {\n get: function get() {\n if (this.root) {\n return this.root.count;\n }\n\n return 0;\n }\n});\nObject.defineProperty(tproto, 'intervals', {\n get: function get() {\n if (this.root) {\n return this.root.intervals([]);\n }\n\n return [];\n }\n});\nexport default function createWrapper(intervals) {\n if (!intervals || intervals.length === 0) {\n return new IntervalTree(null);\n }\n\n return new IntervalTree(createIntervalTree(intervals));\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport createIntervalTree from '../vendor/intervalTree';\n\n// Position cache requirements:\n// O(log(n)) lookup of cells to render for a given viewport size\n// O(1) lookup of shortest measured column (so we know when to enter phase 1)\nvar PositionCache =\n/*#__PURE__*/\nfunction () {\n function PositionCache() {\n _classCallCheck(this, PositionCache);\n\n _defineProperty(this, \"_columnSizeMap\", {});\n\n _defineProperty(this, \"_intervalTree\", createIntervalTree());\n\n _defineProperty(this, \"_leftMap\", {});\n }\n\n _createClass(PositionCache, [{\n key: \"estimateTotalHeight\",\n value: function estimateTotalHeight(cellCount, columnCount, defaultCellHeight) {\n var unmeasuredCellCount = cellCount - this.count;\n return this.tallestColumnSize + Math.ceil(unmeasuredCellCount / columnCount) * defaultCellHeight;\n } // Render all cells visible within the viewport range defined.\n\n }, {\n key: \"range\",\n value: function range(scrollTop, clientHeight, renderCallback) {\n var _this = this;\n\n this._intervalTree.queryInterval(scrollTop, scrollTop + clientHeight, function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n top = _ref2[0],\n _ = _ref2[1],\n index = _ref2[2];\n\n return renderCallback(index, _this._leftMap[index], top);\n });\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(index, left, top, height) {\n this._intervalTree.insert([top, top + height, index]);\n\n this._leftMap[index] = left;\n var columnSizeMap = this._columnSizeMap;\n var columnHeight = columnSizeMap[left];\n\n if (columnHeight === undefined) {\n columnSizeMap[left] = top + height;\n } else {\n columnSizeMap[left] = Math.max(columnHeight, top + height);\n }\n }\n }, {\n key: \"count\",\n get: function get() {\n return this._intervalTree.count;\n }\n }, {\n key: \"shortestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = size === 0 ? height : Math.min(size, height);\n }\n\n return size;\n }\n }, {\n key: \"tallestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = Math.max(size, height);\n }\n\n return size;\n }\n }]);\n\n return PositionCache;\n}();\n\nexport { PositionCache as default };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PositionCache from './PositionCache';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\nvar emptyObject = {};\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * This component efficiently displays arbitrarily positioned cells using windowing techniques.\n * Cell position is determined by an injected `cellPositioner` property.\n * Windowing is vertical; this component does not support horizontal scrolling.\n *\n * Rendering occurs in two phases:\n * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.\n * Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.\n * After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells\n * in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).\n * All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.\n * 2) Second pass uses the external `cellPositioner` to layout cells.\n * At this time the positioner has access to cached size measurements for all cells.\n * The positions it returns are cached by Masonry for fast access later.\n * Phase one is repeated if the user scrolls beyond the current layout's bounds.\n * If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.\n *\n * Animation constraints:\n * Simple animations are supported (eg translate/slide into place on initial reveal).\n * More complex animations are not (eg flying from one position to another on resize).\n *\n * Layout constraints:\n * This component supports multi-column layout.\n * The height of each item may vary.\n * The width of each item must not exceed the width of the column it is \"in\".\n * The left position of all items within a column must align.\n * (Items may not span multiple columns.)\n */\n\nvar Masonry = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Masonry, _React$PureComponent);\n\n function Masonry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Masonry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Masonry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStartIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionCache\", new PositionCache());\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingCallback\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n var height = _this.props.height;\n var eventScrollTop = event.currentTarget.scrollTop; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollTop = Math.min(Math.max(0, _this._getEstimatedTotalHeight() - height), eventScrollTop); // On iOS, we can arrive at negative offsets by swiping past the start or end.\n // Avoid re-rendering in this case as it can cause problems; see #532 for more.\n\n if (eventScrollTop !== scrollTop) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._debounceResetIsScrolling(); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n\n if (_this.state.scrollTop !== scrollTop) {\n _this.setState({\n isScrolling: true,\n scrollTop: scrollTop\n });\n }\n });\n\n return _this;\n }\n\n _createClass(Masonry, [{\n key: \"clearCellPositions\",\n value: function clearCellPositions() {\n this._positionCache = new PositionCache();\n this.forceUpdate();\n } // HACK This method signature was intended for Grid\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref) {\n var index = _ref.rowIndex;\n\n if (this._invalidateOnUpdateStartIndex === null) {\n this._invalidateOnUpdateStartIndex = index;\n this._invalidateOnUpdateStopIndex = index;\n } else {\n this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);\n this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);\n }\n }\n }, {\n key: \"recomputeCellPositions\",\n value: function recomputeCellPositions() {\n var stopIndex = this._positionCache.count - 1;\n this._positionCache = new PositionCache();\n\n this._populatePositionCache(0, stopIndex);\n\n this.forceUpdate();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n\n if (this.props.scrollTop !== prevProps.scrollTop) {\n this._debounceResetIsScrolling();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n cellCount = _this$props.cellCount,\n cellMeasurerCache = _this$props.cellMeasurerCache,\n cellRenderer = _this$props.cellRenderer,\n className = _this$props.className,\n height = _this$props.height,\n id = _this$props.id,\n keyMapper = _this$props.keyMapper,\n overscanByPixels = _this$props.overscanByPixels,\n role = _this$props.role,\n style = _this$props.style,\n tabIndex = _this$props.tabIndex,\n width = _this$props.width,\n rowDirection = _this$props.rowDirection;\n var _this$state = this.state,\n isScrolling = _this$state.isScrolling,\n scrollTop = _this$state.scrollTop;\n var children = [];\n\n var estimateTotalHeight = this._getEstimatedTotalHeight();\n\n var shortestColumnSize = this._positionCache.shortestColumnSize;\n var measuredCellCount = this._positionCache.count;\n var startIndex = 0;\n var stopIndex;\n\n this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index, left, top) {\n var _style;\n\n if (typeof stopIndex === 'undefined') {\n startIndex = index;\n stopIndex = index;\n } else {\n startIndex = Math.min(startIndex, index);\n stopIndex = Math.max(stopIndex, index);\n }\n\n children.push(cellRenderer({\n index: index,\n isScrolling: isScrolling,\n key: keyMapper(index),\n parent: _this2,\n style: (_style = {\n height: cellMeasurerCache.getHeight(index)\n }, _defineProperty(_style, rowDirection === 'ltr' ? 'left' : 'right', left), _defineProperty(_style, \"position\", 'absolute'), _defineProperty(_style, \"top\", top), _defineProperty(_style, \"width\", cellMeasurerCache.getWidth(index)), _style)\n }));\n }); // We need to measure additional cells for this layout\n\n\n if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {\n var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));\n\n for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {\n stopIndex = _index;\n children.push(cellRenderer({\n index: _index,\n isScrolling: isScrolling,\n key: keyMapper(_index),\n parent: this,\n style: {\n width: cellMeasurerCache.getWidth(_index)\n }\n }));\n }\n }\n\n this._startIndex = startIndex;\n this._stopIndex = stopIndex;\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Masonry', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n overflowX: 'hidden',\n overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',\n position: 'relative',\n width: width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n }, style),\n tabIndex: tabIndex\n }, React.createElement(\"div\", {\n className: \"ReactVirtualized__Masonry__innerScrollContainer\",\n style: {\n width: '100%',\n height: estimateTotalHeight,\n maxWidth: '100%',\n maxHeight: estimateTotalHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }\n }, children));\n }\n }, {\n key: \"_checkInvalidateOnUpdate\",\n value: function _checkInvalidateOnUpdate() {\n if (typeof this._invalidateOnUpdateStartIndex === 'number') {\n var startIndex = this._invalidateOnUpdateStartIndex;\n var stopIndex = this._invalidateOnUpdateStopIndex;\n this._invalidateOnUpdateStartIndex = null;\n this._invalidateOnUpdateStopIndex = null; // Query external layout logic for position of newly-measured cells\n\n this._populatePositionCache(startIndex, stopIndex);\n\n this.forceUpdate();\n }\n }\n }, {\n key: \"_debounceResetIsScrolling\",\n value: function _debounceResetIsScrolling() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n\n this._debounceResetIsScrollingId = requestAnimationTimeout(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_getEstimatedTotalHeight\",\n value: function _getEstimatedTotalHeight() {\n var _this$props2 = this.props,\n cellCount = _this$props2.cellCount,\n cellMeasurerCache = _this$props2.cellMeasurerCache,\n width = _this$props2.width;\n var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));\n return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);\n }\n }, {\n key: \"_invokeOnScrollCallback\",\n value: function _invokeOnScrollCallback() {\n var _this$props3 = this.props,\n height = _this$props3.height,\n onScroll = _this$props3.onScroll;\n var scrollTop = this.state.scrollTop;\n\n if (this._onScrollMemoized !== scrollTop) {\n onScroll({\n clientHeight: height,\n scrollHeight: this._getEstimatedTotalHeight(),\n scrollTop: scrollTop\n });\n this._onScrollMemoized = scrollTop;\n }\n }\n }, {\n key: \"_invokeOnCellsRenderedCallback\",\n value: function _invokeOnCellsRenderedCallback() {\n if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {\n var onCellsRendered = this.props.onCellsRendered;\n onCellsRendered({\n startIndex: this._startIndex,\n stopIndex: this._stopIndex\n });\n this._startIndexMemoized = this._startIndex;\n this._stopIndexMemoized = this._stopIndex;\n }\n }\n }, {\n key: \"_populatePositionCache\",\n value: function _populatePositionCache(startIndex, stopIndex) {\n var _this$props4 = this.props,\n cellMeasurerCache = _this$props4.cellMeasurerCache,\n cellPositioner = _this$props4.cellPositioner;\n\n for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {\n var _cellPositioner = cellPositioner(_index2),\n left = _cellPositioner.left,\n top = _cellPositioner.top;\n\n this._positionCache.setPosition(_index2, left, top, cellMeasurerCache.getHeight(_index2));\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollTop !== undefined && prevState.scrollTop !== nextProps.scrollTop) {\n return {\n isScrolling: true,\n scrollTop: nextProps.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return Masonry;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"autoHeight\": PropTypes.bool.isRequired,\n \"cellCount\": PropTypes.number.isRequired,\n \"cellMeasurerCache\": function cellMeasurerCache() {\n return (typeof CellMeasurerCache === \"function\" ? PropTypes.instanceOf(CellMeasurerCache).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellPositioner\": function cellPositioner() {\n return (typeof Positioner === \"function\" ? PropTypes.instanceOf(Positioner).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellRenderer\": function cellRenderer() {\n return (typeof CellRenderer === \"function\" ? PropTypes.instanceOf(CellRenderer).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"className\": PropTypes.string,\n \"height\": PropTypes.number.isRequired,\n \"id\": PropTypes.string,\n \"keyMapper\": function keyMapper() {\n return (typeof KeyMapper === \"function\" ? PropTypes.instanceOf(KeyMapper).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"onCellsRendered\": function onCellsRendered() {\n return (typeof OnCellsRenderedCallback === \"function\" ? PropTypes.instanceOf(OnCellsRenderedCallback) : PropTypes.any).apply(this, arguments);\n },\n \"onScroll\": function onScroll() {\n return (typeof OnScrollCallback === \"function\" ? PropTypes.instanceOf(OnScrollCallback) : PropTypes.any).apply(this, arguments);\n },\n \"overscanByPixels\": PropTypes.number.isRequired,\n \"role\": PropTypes.string.isRequired,\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n \"style\": function style(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n },\n \"tabIndex\": PropTypes.number.isRequired,\n \"width\": PropTypes.number.isRequired,\n \"rowDirection\": PropTypes.string.isRequired,\n \"scrollTop\": PropTypes.number\n}), _temp);\n\n_defineProperty(Masonry, \"defaultProps\", {\n autoHeight: false,\n keyMapper: identity,\n onCellsRendered: noop,\n onScroll: noop,\n overscanByPixels: 20,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n style: emptyObject,\n tabIndex: 0,\n rowDirection: 'ltr'\n});\n\nfunction identity(value) {\n return value;\n}\n\nfunction noop() {}\n\nvar bpfrpt_proptype_CellMeasurerCache = process.env.NODE_ENV === 'production' ? null : {\n \"defaultHeight\": PropTypes.number.isRequired,\n \"defaultWidth\": PropTypes.number.isRequired,\n \"getHeight\": PropTypes.func.isRequired,\n \"getWidth\": PropTypes.func.isRequired\n};\npolyfill(Masonry);\nexport default Masonry;\nvar bpfrpt_proptype_Positioner = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellMeasurerCache };\nexport { bpfrpt_proptype_Positioner };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { CellMeasurerCache } from '../CellMeasurer';\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCacheDecorator =\n/*#__PURE__*/\nfunction () {\n function CellMeasurerCacheDecorator() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCacheDecorator);\n\n _defineProperty(this, \"_cellMeasurerCache\", void 0);\n\n _defineProperty(this, \"_columnIndexOffset\", void 0);\n\n _defineProperty(this, \"_rowIndexOffset\", void 0);\n\n _defineProperty(this, \"columnWidth\", function (_ref) {\n var index = _ref.index;\n\n _this._cellMeasurerCache.columnWidth({\n index: index + _this._columnIndexOffset\n });\n });\n\n _defineProperty(this, \"rowHeight\", function (_ref2) {\n var index = _ref2.index;\n\n _this._cellMeasurerCache.rowHeight({\n index: index + _this._rowIndexOffset\n });\n });\n\n var cellMeasurerCache = params.cellMeasurerCache,\n _params$columnIndexOf = params.columnIndexOffset,\n columnIndexOffset = _params$columnIndexOf === void 0 ? 0 : _params$columnIndexOf,\n _params$rowIndexOffse = params.rowIndexOffset,\n rowIndexOffset = _params$rowIndexOffse === void 0 ? 0 : _params$rowIndexOffse;\n this._cellMeasurerCache = cellMeasurerCache;\n this._columnIndexOffset = columnIndexOffset;\n this._rowIndexOffset = rowIndexOffset;\n }\n\n _createClass(CellMeasurerCacheDecorator, [{\n key: \"clear\",\n value: function clear(rowIndex, columnIndex) {\n this._cellMeasurerCache.clear(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"clearAll\",\n value: function clearAll() {\n this._cellMeasurerCache.clearAll();\n }\n }, {\n key: \"hasFixedHeight\",\n value: function hasFixedHeight() {\n return this._cellMeasurerCache.hasFixedHeight();\n }\n }, {\n key: \"hasFixedWidth\",\n value: function hasFixedWidth() {\n return this._cellMeasurerCache.hasFixedWidth();\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getHeight(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getWidth(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"has\",\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.has(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"set\",\n value: function set(rowIndex, columnIndex, width, height) {\n this._cellMeasurerCache.set(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset, width, height);\n }\n }, {\n key: \"defaultHeight\",\n get: function get() {\n return this._cellMeasurerCache.defaultHeight;\n }\n }, {\n key: \"defaultWidth\",\n get: function get() {\n return this._cellMeasurerCache.defaultWidth;\n }\n }]);\n\n return CellMeasurerCacheDecorator;\n}();\n\nexport { CellMeasurerCacheDecorator as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport CellMeasurerCacheDecorator from './CellMeasurerCacheDecorator';\nimport Grid from '../Grid';\nvar SCROLLBAR_SIZE_BUFFER = 20;\n/**\n * Renders 1, 2, or 4 Grids depending on configuration.\n * A main (body) Grid will always be rendered.\n * Optionally, 1-2 Grids for sticky header rows will also be rendered.\n * If no sticky columns, only 1 sticky header Grid will be rendered.\n * If sticky columns, 2 sticky header Grids will be rendered.\n */\n\nvar MultiGrid =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(MultiGrid, _React$PureComponent);\n\n function MultiGrid(props, context) {\n var _this;\n\n _classCallCheck(this, MultiGrid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MultiGrid).call(this, props, context));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollLeft: 0,\n scrollTop: 0,\n scrollbarSize: 0,\n showHorizontalScrollbar: false,\n showVerticalScrollbar: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomLeftGridRef\", function (ref) {\n _this._bottomLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomRightGridRef\", function (ref) {\n _this._bottomRightGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomLeftGrid\", function (_ref) {\n var rowIndex = _ref.rowIndex,\n rest = _objectWithoutProperties(_ref, [\"rowIndex\"]);\n\n var _this$props = _this.props,\n cellRenderer = _this$props.cellRenderer,\n fixedRowCount = _this$props.fixedRowCount,\n rowCount = _this$props.rowCount;\n\n if (rowIndex === rowCount - fixedRowCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n height: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomRightGrid\", function (_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex,\n rest = _objectWithoutProperties(_ref2, [\"columnIndex\", \"rowIndex\"]);\n\n var _this$props2 = _this.props,\n cellRenderer = _this$props2.cellRenderer,\n fixedColumnCount = _this$props2.fixedColumnCount,\n fixedRowCount = _this$props2.fixedRowCount;\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererTopRightGrid\", function (_ref3) {\n var columnIndex = _ref3.columnIndex,\n rest = _objectWithoutProperties(_ref3, [\"columnIndex\"]);\n\n var _this$props3 = _this.props,\n cellRenderer = _this$props3.cellRenderer,\n columnCount = _this$props3.columnCount,\n fixedColumnCount = _this$props3.fixedColumnCount;\n\n if (columnIndex === columnCount - fixedColumnCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n width: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this)\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnWidthRightGrid\", function (_ref4) {\n var index = _ref4.index;\n var _this$props4 = _this.props,\n columnCount = _this$props4.columnCount,\n fixedColumnCount = _this$props4.fixedColumnCount,\n columnWidth = _this$props4.columnWidth;\n var _this$state = _this.state,\n scrollbarSize = _this$state.scrollbarSize,\n showHorizontalScrollbar = _this$state.showHorizontalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showHorizontalScrollbar && index === columnCount - fixedColumnCount) {\n return scrollbarSize;\n }\n\n return typeof columnWidth === 'function' ? columnWidth({\n index: index + fixedColumnCount\n }) : columnWidth;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft,\n scrollTop = scrollInfo.scrollTop;\n\n _this.setState({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n var onScroll = _this.props.onScroll;\n\n if (onScroll) {\n onScroll(scrollInfo);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollbarPresenceChange\", function (_ref5) {\n var horizontal = _ref5.horizontal,\n size = _ref5.size,\n vertical = _ref5.vertical;\n var _this$state2 = _this.state,\n showHorizontalScrollbar = _this$state2.showHorizontalScrollbar,\n showVerticalScrollbar = _this$state2.showVerticalScrollbar;\n\n if (horizontal !== showHorizontalScrollbar || vertical !== showVerticalScrollbar) {\n _this.setState({\n scrollbarSize: size,\n showHorizontalScrollbar: horizontal,\n showVerticalScrollbar: vertical\n });\n\n var onScrollbarPresenceChange = _this.props.onScrollbarPresenceChange;\n\n if (typeof onScrollbarPresenceChange === 'function') {\n onScrollbarPresenceChange({\n horizontal: horizontal,\n size: size,\n vertical: vertical\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollLeft\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft;\n\n _this._onScroll({\n scrollLeft: scrollLeft,\n scrollTop: _this.state.scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollTop\", function (scrollInfo) {\n var scrollTop = scrollInfo.scrollTop;\n\n _this._onScroll({\n scrollTop: scrollTop,\n scrollLeft: _this.state.scrollLeft\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_rowHeightBottomGrid\", function (_ref6) {\n var index = _ref6.index;\n var _this$props5 = _this.props,\n fixedRowCount = _this$props5.fixedRowCount,\n rowCount = _this$props5.rowCount,\n rowHeight = _this$props5.rowHeight;\n var _this$state3 = _this.state,\n scrollbarSize = _this$state3.scrollbarSize,\n showVerticalScrollbar = _this$state3.showVerticalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showVerticalScrollbar && index === rowCount - fixedRowCount) {\n return scrollbarSize;\n }\n\n return typeof rowHeight === 'function' ? rowHeight({\n index: index + fixedRowCount\n }) : rowHeight;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topLeftGridRef\", function (ref) {\n _this._topLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topRightGridRef\", function (ref) {\n _this._topRightGrid = ref;\n });\n\n var deferredMeasurementCache = props.deferredMeasurementCache,\n _fixedColumnCount = props.fixedColumnCount,\n _fixedRowCount = props.fixedRowCount;\n\n _this._maybeCalculateCachedStyles(true);\n\n if (deferredMeasurementCache) {\n _this._deferredMeasurementCacheBottomLeftGrid = _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: 0,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheBottomRightGrid = _fixedColumnCount > 0 || _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheTopRightGrid = _fixedColumnCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: 0\n }) : deferredMeasurementCache;\n }\n\n return _this;\n }\n\n _createClass(MultiGrid, [{\n key: \"forceUpdateGrids\",\n value: function forceUpdateGrids() {\n this._bottomLeftGrid && this._bottomLeftGrid.forceUpdate();\n this._bottomRightGrid && this._bottomRightGrid.forceUpdate();\n this._topLeftGrid && this._topLeftGrid.forceUpdate();\n this._topRightGrid && this._topRightGrid.forceUpdate();\n }\n /** See Grid#invalidateCellSizeAfterRender */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender() {\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$columnIndex = _ref7.columnIndex,\n columnIndex = _ref7$columnIndex === void 0 ? 0 : _ref7$columnIndex,\n _ref7$rowIndex = _ref7.rowIndex,\n rowIndex = _ref7$rowIndex === void 0 ? 0 : _ref7$rowIndex;\n\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n this._bottomLeftGrid && this._bottomLeftGrid.measureAllCells();\n this._bottomRightGrid && this._bottomRightGrid.measureAllCells();\n this._topLeftGrid && this._topLeftGrid.measureAllCells();\n this._topRightGrid && this._topRightGrid.measureAllCells();\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref8$columnIndex = _ref8.columnIndex,\n columnIndex = _ref8$columnIndex === void 0 ? 0 : _ref8$columnIndex,\n _ref8$rowIndex = _ref8.rowIndex,\n rowIndex = _ref8$rowIndex === void 0 ? 0 : _ref8$rowIndex;\n\n var _this$props6 = this.props,\n fixedColumnCount = _this$props6.fixedColumnCount,\n fixedRowCount = _this$props6.fixedRowCount;\n var adjustedColumnIndex = Math.max(0, columnIndex - fixedColumnCount);\n var adjustedRowIndex = Math.max(0, rowIndex - fixedRowCount);\n this._bottomLeftGrid && this._bottomLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: adjustedRowIndex\n });\n this._bottomRightGrid && this._bottomRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: adjustedRowIndex\n });\n this._topLeftGrid && this._topLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this._topRightGrid && this._topRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: rowIndex\n });\n this._leftGridWidth = null;\n this._topGridHeight = null;\n\n this._maybeCalculateCachedStyles(true);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props7 = this.props,\n scrollLeft = _this$props7.scrollLeft,\n scrollTop = _this$props7.scrollTop;\n\n if (scrollLeft > 0 || scrollTop > 0) {\n var newState = {};\n\n if (scrollLeft > 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop > 0) {\n newState.scrollTop = scrollTop;\n }\n\n this.setState(newState);\n }\n\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props8 = this.props,\n onScroll = _this$props8.onScroll,\n onSectionRendered = _this$props8.onSectionRendered,\n onScrollbarPresenceChange = _this$props8.onScrollbarPresenceChange,\n scrollLeftProp = _this$props8.scrollLeft,\n scrollToColumn = _this$props8.scrollToColumn,\n scrollTopProp = _this$props8.scrollTop,\n scrollToRow = _this$props8.scrollToRow,\n rest = _objectWithoutProperties(_this$props8, [\"onScroll\", \"onSectionRendered\", \"onScrollbarPresenceChange\", \"scrollLeft\", \"scrollToColumn\", \"scrollTop\", \"scrollToRow\"]);\n\n this._prepareForRender(); // Don't render any of our Grids if there are no cells.\n // This mirrors what Grid does,\n // And prevents us from recording inaccurage measurements when used with CellMeasurer.\n\n\n if (this.props.width === 0 || this.props.height === 0) {\n return null;\n } // scrollTop and scrollLeft props are explicitly filtered out and ignored\n\n\n var _this$state4 = this.state,\n scrollLeft = _this$state4.scrollLeft,\n scrollTop = _this$state4.scrollTop;\n return React.createElement(\"div\", {\n style: this._containerOuterStyle\n }, React.createElement(\"div\", {\n style: this._containerTopStyle\n }, this._renderTopLeftGrid(rest), this._renderTopRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollLeft: scrollLeft\n }))), React.createElement(\"div\", {\n style: this._containerBottomStyle\n }, this._renderBottomLeftGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollTop: scrollTop\n })), this._renderBottomRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n onSectionRendered: onSectionRendered,\n scrollLeft: scrollLeft,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow,\n scrollTop: scrollTop\n }))));\n }\n }, {\n key: \"_getBottomGridHeight\",\n value: function _getBottomGridHeight(props) {\n var height = props.height;\n\n var topGridHeight = this._getTopGridHeight(props);\n\n return height - topGridHeight;\n }\n }, {\n key: \"_getLeftGridWidth\",\n value: function _getLeftGridWidth(props) {\n var fixedColumnCount = props.fixedColumnCount,\n columnWidth = props.columnWidth;\n\n if (this._leftGridWidth == null) {\n if (typeof columnWidth === 'function') {\n var leftGridWidth = 0;\n\n for (var index = 0; index < fixedColumnCount; index++) {\n leftGridWidth += columnWidth({\n index: index\n });\n }\n\n this._leftGridWidth = leftGridWidth;\n } else {\n this._leftGridWidth = columnWidth * fixedColumnCount;\n }\n }\n\n return this._leftGridWidth;\n }\n }, {\n key: \"_getRightGridWidth\",\n value: function _getRightGridWidth(props) {\n var width = props.width;\n\n var leftGridWidth = this._getLeftGridWidth(props);\n\n return width - leftGridWidth;\n }\n }, {\n key: \"_getTopGridHeight\",\n value: function _getTopGridHeight(props) {\n var fixedRowCount = props.fixedRowCount,\n rowHeight = props.rowHeight;\n\n if (this._topGridHeight == null) {\n if (typeof rowHeight === 'function') {\n var topGridHeight = 0;\n\n for (var index = 0; index < fixedRowCount; index++) {\n topGridHeight += rowHeight({\n index: index\n });\n }\n\n this._topGridHeight = topGridHeight;\n } else {\n this._topGridHeight = rowHeight * fixedRowCount;\n }\n }\n\n return this._topGridHeight;\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this.forceUpdate();\n }\n }\n /**\n * Avoid recreating inline styles each render; this bypasses Grid's shallowCompare.\n * This method recalculates styles only when specific props change.\n */\n\n }, {\n key: \"_maybeCalculateCachedStyles\",\n value: function _maybeCalculateCachedStyles(resetAll) {\n var _this$props9 = this.props,\n columnWidth = _this$props9.columnWidth,\n enableFixedColumnScroll = _this$props9.enableFixedColumnScroll,\n enableFixedRowScroll = _this$props9.enableFixedRowScroll,\n height = _this$props9.height,\n fixedColumnCount = _this$props9.fixedColumnCount,\n fixedRowCount = _this$props9.fixedRowCount,\n rowHeight = _this$props9.rowHeight,\n style = _this$props9.style,\n styleBottomLeftGrid = _this$props9.styleBottomLeftGrid,\n styleBottomRightGrid = _this$props9.styleBottomRightGrid,\n styleTopLeftGrid = _this$props9.styleTopLeftGrid,\n styleTopRightGrid = _this$props9.styleTopRightGrid,\n width = _this$props9.width;\n var sizeChange = resetAll || height !== this._lastRenderedHeight || width !== this._lastRenderedWidth;\n var leftSizeChange = resetAll || columnWidth !== this._lastRenderedColumnWidth || fixedColumnCount !== this._lastRenderedFixedColumnCount;\n var topSizeChange = resetAll || fixedRowCount !== this._lastRenderedFixedRowCount || rowHeight !== this._lastRenderedRowHeight;\n\n if (resetAll || sizeChange || style !== this._lastRenderedStyle) {\n this._containerOuterStyle = _objectSpread({\n height: height,\n overflow: 'visible',\n // Let :focus outline show through\n width: width\n }, style);\n }\n\n if (resetAll || sizeChange || topSizeChange) {\n this._containerTopStyle = {\n height: this._getTopGridHeight(this.props),\n position: 'relative',\n width: width\n };\n this._containerBottomStyle = {\n height: height - this._getTopGridHeight(this.props),\n overflow: 'visible',\n // Let :focus outline show through\n position: 'relative',\n width: width\n };\n }\n\n if (resetAll || styleBottomLeftGrid !== this._lastRenderedStyleBottomLeftGrid) {\n this._bottomLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: enableFixedColumnScroll ? 'auto' : 'hidden',\n position: 'absolute'\n }, styleBottomLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleBottomRightGrid !== this._lastRenderedStyleBottomRightGrid) {\n this._bottomRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n position: 'absolute'\n }, styleBottomRightGrid);\n }\n\n if (resetAll || styleTopLeftGrid !== this._lastRenderedStyleTopLeftGrid) {\n this._topLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleTopRightGrid !== this._lastRenderedStyleTopRightGrid) {\n this._topRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n overflowX: enableFixedRowScroll ? 'auto' : 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopRightGrid);\n }\n\n this._lastRenderedColumnWidth = columnWidth;\n this._lastRenderedFixedColumnCount = fixedColumnCount;\n this._lastRenderedFixedRowCount = fixedRowCount;\n this._lastRenderedHeight = height;\n this._lastRenderedRowHeight = rowHeight;\n this._lastRenderedStyle = style;\n this._lastRenderedStyleBottomLeftGrid = styleBottomLeftGrid;\n this._lastRenderedStyleBottomRightGrid = styleBottomRightGrid;\n this._lastRenderedStyleTopLeftGrid = styleTopLeftGrid;\n this._lastRenderedStyleTopRightGrid = styleTopRightGrid;\n this._lastRenderedWidth = width;\n }\n }, {\n key: \"_prepareForRender\",\n value: function _prepareForRender() {\n if (this._lastRenderedColumnWidth !== this.props.columnWidth || this._lastRenderedFixedColumnCount !== this.props.fixedColumnCount) {\n this._leftGridWidth = null;\n }\n\n if (this._lastRenderedFixedRowCount !== this.props.fixedRowCount || this._lastRenderedRowHeight !== this.props.rowHeight) {\n this._topGridHeight = null;\n }\n\n this._maybeCalculateCachedStyles();\n\n this._lastRenderedColumnWidth = this.props.columnWidth;\n this._lastRenderedFixedColumnCount = this.props.fixedColumnCount;\n this._lastRenderedFixedRowCount = this.props.fixedRowCount;\n this._lastRenderedRowHeight = this.props.rowHeight;\n }\n }, {\n key: \"_renderBottomLeftGrid\",\n value: function _renderBottomLeftGrid(props) {\n var enableFixedColumnScroll = props.enableFixedColumnScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n hideBottomLeftGridScrollbar = props.hideBottomLeftGridScrollbar;\n var showVerticalScrollbar = this.state.showVerticalScrollbar;\n\n if (!fixedColumnCount) {\n return null;\n }\n\n var additionalRowCount = showVerticalScrollbar ? 1 : 0,\n height = this._getBottomGridHeight(props),\n width = this._getLeftGridWidth(props),\n scrollbarSize = this.state.showVerticalScrollbar ? this.state.scrollbarSize : 0,\n gridWidth = hideBottomLeftGridScrollbar ? width + scrollbarSize : width;\n\n var bottomLeftGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomLeftGrid,\n className: this.props.classNameBottomLeftGrid,\n columnCount: fixedColumnCount,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomLeftGrid,\n height: height,\n onScroll: enableFixedColumnScroll ? this._onScrollTop : undefined,\n ref: this._bottomLeftGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount) + additionalRowCount,\n rowHeight: this._rowHeightBottomGrid,\n style: this._bottomLeftGridStyle,\n tabIndex: null,\n width: gridWidth\n }));\n\n if (hideBottomLeftGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"BottomLeftGrid_ScrollWrapper\",\n style: _objectSpread({}, this._bottomLeftGridStyle, {\n height: height,\n width: width,\n overflowY: 'hidden'\n })\n }, bottomLeftGrid);\n }\n\n return bottomLeftGrid;\n }\n }, {\n key: \"_renderBottomRightGrid\",\n value: function _renderBottomRightGrid(props) {\n var columnCount = props.columnCount,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n scrollToColumn = props.scrollToColumn,\n scrollToRow = props.scrollToRow;\n return React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomRightGrid,\n className: this.props.classNameBottomRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount),\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomRightGrid,\n height: this._getBottomGridHeight(props),\n onScroll: this._onScroll,\n onScrollbarPresenceChange: this._onScrollbarPresenceChange,\n ref: this._bottomRightGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount),\n rowHeight: this._rowHeightBottomGrid,\n scrollToColumn: scrollToColumn - fixedColumnCount,\n scrollToRow: scrollToRow - fixedRowCount,\n style: this._bottomRightGridStyle,\n width: this._getRightGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopLeftGrid\",\n value: function _renderTopLeftGrid(props) {\n var fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount;\n\n if (!fixedColumnCount || !fixedRowCount) {\n return null;\n }\n\n return React.createElement(Grid, _extends({}, props, {\n className: this.props.classNameTopLeftGrid,\n columnCount: fixedColumnCount,\n height: this._getTopGridHeight(props),\n ref: this._topLeftGridRef,\n rowCount: fixedRowCount,\n style: this._topLeftGridStyle,\n tabIndex: null,\n width: this._getLeftGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopRightGrid\",\n value: function _renderTopRightGrid(props) {\n var columnCount = props.columnCount,\n enableFixedRowScroll = props.enableFixedRowScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n scrollLeft = props.scrollLeft,\n hideTopRightGridScrollbar = props.hideTopRightGridScrollbar;\n var _this$state5 = this.state,\n showHorizontalScrollbar = _this$state5.showHorizontalScrollbar,\n scrollbarSize = _this$state5.scrollbarSize;\n\n if (!fixedRowCount) {\n return null;\n }\n\n var additionalColumnCount = showHorizontalScrollbar ? 1 : 0,\n height = this._getTopGridHeight(props),\n width = this._getRightGridWidth(props),\n additionalHeight = showHorizontalScrollbar ? scrollbarSize : 0;\n\n var gridHeight = height,\n style = this._topRightGridStyle;\n\n if (hideTopRightGridScrollbar) {\n gridHeight = height + additionalHeight;\n style = _objectSpread({}, this._topRightGridStyle, {\n left: 0\n });\n }\n\n var topRightGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererTopRightGrid,\n className: this.props.classNameTopRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount) + additionalColumnCount,\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheTopRightGrid,\n height: gridHeight,\n onScroll: enableFixedRowScroll ? this._onScrollLeft : undefined,\n ref: this._topRightGridRef,\n rowCount: fixedRowCount,\n scrollLeft: scrollLeft,\n style: style,\n tabIndex: null,\n width: width\n }));\n\n if (hideTopRightGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"TopRightGrid_ScrollWrapper\",\n style: _objectSpread({}, this._topRightGridStyle, {\n height: height,\n width: width,\n overflowX: 'hidden'\n })\n }, topRightGrid);\n }\n\n return topRightGrid;\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null && nextProps.scrollLeft >= 0 ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null && nextProps.scrollTop >= 0 ? nextProps.scrollTop : prevState.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return MultiGrid;\n}(React.PureComponent);\n\n_defineProperty(MultiGrid, \"defaultProps\", {\n classNameBottomLeftGrid: '',\n classNameBottomRightGrid: '',\n classNameTopLeftGrid: '',\n classNameTopRightGrid: '',\n enableFixedColumnScroll: false,\n enableFixedRowScroll: false,\n fixedColumnCount: 0,\n fixedRowCount: 0,\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n styleBottomLeftGrid: {},\n styleBottomRightGrid: {},\n styleTopLeftGrid: {},\n styleTopRightGrid: {},\n hideTopRightGridScrollbar: false,\n hideBottomLeftGridScrollbar: false\n});\n\nMultiGrid.propTypes = process.env.NODE_ENV !== \"production\" ? {\n classNameBottomLeftGrid: PropTypes.string.isRequired,\n classNameBottomRightGrid: PropTypes.string.isRequired,\n classNameTopLeftGrid: PropTypes.string.isRequired,\n classNameTopRightGrid: PropTypes.string.isRequired,\n enableFixedColumnScroll: PropTypes.bool.isRequired,\n enableFixedRowScroll: PropTypes.bool.isRequired,\n fixedColumnCount: PropTypes.number.isRequired,\n fixedRowCount: PropTypes.number.isRequired,\n onScrollbarPresenceChange: PropTypes.func,\n style: PropTypes.object.isRequired,\n styleBottomLeftGrid: PropTypes.object.isRequired,\n styleBottomRightGrid: PropTypes.object.isRequired,\n styleTopLeftGrid: PropTypes.object.isRequired,\n styleTopRightGrid: PropTypes.object.isRequired,\n hideTopRightGridScrollbar: PropTypes.bool,\n hideBottomLeftGridScrollbar: PropTypes.bool\n} : {};\npolyfill(MultiGrid);\nexport default MultiGrid;","import * as React from 'react';\nexport default function defaultHeaderRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n style = _ref.style;\n return React.createElement(\"div\", {\n className: className,\n role: \"row\",\n style: style\n }, columns);\n}\ndefaultHeaderRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRowRendererParams;\nimport { bpfrpt_proptype_HeaderRowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * HOC that simplifies the process of synchronizing scrolling between two or more virtualized components.\n */\n\nvar ScrollSync =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ScrollSync, _React$PureComponent);\n\n function ScrollSync(props, context) {\n var _this;\n\n _classCallCheck(this, ScrollSync);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollSync).call(this, props, context));\n _this.state = {\n clientHeight: 0,\n clientWidth: 0,\n scrollHeight: 0,\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0\n };\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ScrollSync, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state = this.state,\n clientHeight = _this$state.clientHeight,\n clientWidth = _this$state.clientWidth,\n scrollHeight = _this$state.scrollHeight,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop,\n scrollWidth = _this$state.scrollWidth;\n return children({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n onScroll: this._onScroll,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref) {\n var clientHeight = _ref.clientHeight,\n clientWidth = _ref.clientWidth,\n scrollHeight = _ref.scrollHeight,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n scrollWidth = _ref.scrollWidth;\n this.setState({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }]);\n\n return ScrollSync;\n}(React.PureComponent);\n\nexport { ScrollSync as default };\nScrollSync.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering 2 or more virtualized components.\n * This function should implement the following signature:\n * ({ onScroll, scrollLeft, scrollTop }) => PropTypes.element\n */\n children: PropTypes.func.isRequired\n} : {};","var SortDirection = {\n /**\n * Sort items in ascending order.\n * This means arranging from the lowest value to the highest (e.g. a-z, 0-9).\n */\n ASC: 'ASC',\n\n /**\n * Sort items in descending order.\n * This means arranging from the highest value to the lowest (e.g. z-a, 9-0).\n */\n DESC: 'DESC'\n};\nexport default SortDirection;","import clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport SortDirection from './SortDirection';\n/**\n * Displayed beside a header to indicate that a Table is currently sorted by this column.\n */\n\nexport default function SortIndicator(_ref) {\n var sortDirection = _ref.sortDirection;\n var classNames = clsx('ReactVirtualized__Table__sortableHeaderIcon', {\n 'ReactVirtualized__Table__sortableHeaderIcon--ASC': sortDirection === SortDirection.ASC,\n 'ReactVirtualized__Table__sortableHeaderIcon--DESC': sortDirection === SortDirection.DESC\n });\n return React.createElement(\"svg\", {\n className: classNames,\n width: 18,\n height: 18,\n viewBox: \"0 0 24 24\"\n }, sortDirection === SortDirection.ASC ? React.createElement(\"path\", {\n d: \"M7 14l5-5 5 5z\"\n }) : React.createElement(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n }), React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n}\nSortIndicator.propTypes = process.env.NODE_ENV !== \"production\" ? {\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC])\n} : {};","import * as React from 'react';\nimport SortIndicator from './SortIndicator';\n\n/**\n * Default table header renderer.\n */\nexport default function defaultHeaderRenderer(_ref) {\n var dataKey = _ref.dataKey,\n label = _ref.label,\n sortBy = _ref.sortBy,\n sortDirection = _ref.sortDirection;\n var showSortIndicator = sortBy === dataKey;\n var children = [React.createElement(\"span\", {\n className: \"ReactVirtualized__Table__headerTruncatedText\",\n key: \"label\",\n title: typeof label === 'string' ? label : null\n }, label)];\n\n if (showSortIndicator) {\n children.push(React.createElement(SortIndicator, {\n key: \"SortIndicator\",\n sortDirection: sortDirection\n }));\n }\n\n return children;\n}\ndefaultHeaderRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRendererParams;\nimport { bpfrpt_proptype_HeaderRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\n\n/**\n * Default row renderer for Table.\n */\nexport default function defaultRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n index = _ref.index,\n key = _ref.key,\n onRowClick = _ref.onRowClick,\n onRowDoubleClick = _ref.onRowDoubleClick,\n onRowMouseOut = _ref.onRowMouseOut,\n onRowMouseOver = _ref.onRowMouseOver,\n onRowRightClick = _ref.onRowRightClick,\n rowData = _ref.rowData,\n style = _ref.style;\n var a11yProps = {\n 'aria-rowindex': index + 1\n };\n\n if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {\n a11yProps['aria-label'] = 'row';\n a11yProps.tabIndex = 0;\n\n if (onRowClick) {\n a11yProps.onClick = function (event) {\n return onRowClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowDoubleClick) {\n a11yProps.onDoubleClick = function (event) {\n return onRowDoubleClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOut) {\n a11yProps.onMouseOut = function (event) {\n return onRowMouseOut({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOver) {\n a11yProps.onMouseOver = function (event) {\n return onRowMouseOver({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowRightClick) {\n a11yProps.onContextMenu = function (event) {\n return onRowRightClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n }\n\n return React.createElement(\"div\", _extends({}, a11yProps, {\n className: className,\n key: key,\n role: \"row\",\n style: style\n }), columns);\n}\ndefaultRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_RowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_RowRendererParams;\nimport { bpfrpt_proptype_RowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport SortDirection from './SortDirection';\n/**\n * Describes the header and cell contents of a table column.\n */\n\nvar Column =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Column, _React$Component);\n\n function Column() {\n _classCallCheck(this, Column);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Column).apply(this, arguments));\n }\n\n return Column;\n}(React.Component);\n\n_defineProperty(Column, \"defaultProps\", {\n cellDataGetter: defaultCellDataGetter,\n cellRenderer: defaultCellRenderer,\n defaultSortDirection: SortDirection.ASC,\n flexGrow: 0,\n flexShrink: 1,\n headerRenderer: defaultHeaderRenderer,\n style: {}\n});\n\nexport { Column as default };\nColumn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Optional aria-label value to set on the column header */\n 'aria-label': PropTypes.string,\n\n /**\n * Callback responsible for returning a cell's data, given its :dataKey\n * ({ columnData: any, dataKey: string, rowData: any }): any\n */\n cellDataGetter: PropTypes.func,\n\n /**\n * Callback responsible for rendering a cell's contents.\n * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node\n */\n cellRenderer: PropTypes.func,\n\n /** Optional CSS class to apply to cell */\n className: PropTypes.string,\n\n /** Optional additional data passed to this column's :cellDataGetter */\n columnData: PropTypes.object,\n\n /** Uniquely identifies the row-data attribute corresponding to this cell */\n dataKey: PropTypes.any.isRequired,\n\n /** Optional direction to be used when clicked the first time */\n defaultSortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** If sort is enabled for the table at large, disable it for this column */\n disableSort: PropTypes.bool,\n\n /** Flex grow style; defaults to 0 */\n flexGrow: PropTypes.number,\n\n /** Flex shrink style; defaults to 1 */\n flexShrink: PropTypes.number,\n\n /** Optional CSS class to apply to this column's header */\n headerClassName: PropTypes.string,\n\n /**\n * Optional callback responsible for rendering a column header contents.\n * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node\n */\n headerRenderer: PropTypes.func.isRequired,\n\n /** Optional inline style to apply to this column's header */\n headerStyle: PropTypes.object,\n\n /** Optional id to set on the column header */\n id: PropTypes.string,\n\n /** Header label for this column */\n label: PropTypes.node,\n\n /** Maximum width of column; this property will only be used if :flexGrow is > 0. */\n maxWidth: PropTypes.number,\n\n /** Minimum width of column. */\n minWidth: PropTypes.number,\n\n /** Optional inline style to apply to cell */\n style: PropTypes.object,\n\n /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */\n width: PropTypes.number.isRequired\n} : {};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport Column from './Column';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer';\nimport SortDirection from './SortDirection';\n/**\n * Table component with fixed headers and virtualized rows for improved performance with large data sets.\n * This component expects explicit width, height, and padding parameters.\n */\n\nvar Table =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Table, _React$PureComponent);\n\n function Table(props) {\n var _this;\n\n _classCallCheck(this, Table);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Table).call(this, props));\n _this.state = {\n scrollbarWidth: 0\n };\n _this._createColumn = _this._createColumn.bind(_assertThisInitialized(_this));\n _this._createRow = _this._createRow.bind(_assertThisInitialized(_this));\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n _this._onSectionRendered = _this._onSectionRendered.bind(_assertThisInitialized(_this));\n _this._setRef = _this._setRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Table, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref) {\n var alignment = _ref.alignment,\n index = _ref.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$columnIndex = _ref3.columnIndex,\n columnIndex = _ref3$columnIndex === void 0 ? 0 : _ref3$columnIndex,\n _ref3$rowIndex = _ref3.rowIndex,\n rowIndex = _ref3$rowIndex === void 0 ? 0 : _ref3$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"getScrollbarWidth\",\n value: function getScrollbarWidth() {\n if (this.Grid) {\n var _Grid = findDOMNode(this.Grid);\n\n var clientWidth = _Grid.clientWidth || 0;\n var offsetWidth = _Grid.offsetWidth || 0;\n return offsetWidth - clientWidth;\n }\n\n return 0;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n disableHeader = _this$props.disableHeader,\n gridClassName = _this$props.gridClassName,\n gridStyle = _this$props.gridStyle,\n headerHeight = _this$props.headerHeight,\n headerRowRenderer = _this$props.headerRowRenderer,\n height = _this$props.height,\n id = _this$props.id,\n noRowsRenderer = _this$props.noRowsRenderer,\n rowClassName = _this$props.rowClassName,\n rowStyle = _this$props.rowStyle,\n scrollToIndex = _this$props.scrollToIndex,\n style = _this$props.style,\n width = _this$props.width;\n var scrollbarWidth = this.state.scrollbarWidth;\n var availableRowsHeight = disableHeader ? height : height - headerHeight;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: -1\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: -1\n }) : rowStyle; // Precompute and cache column styles before rendering rows and columns to speed things up\n\n this._cachedColumnStyles = [];\n React.Children.toArray(children).forEach(function (column, index) {\n var flexStyles = _this2._getFlexStyleForColumn(column, column.props.style);\n\n _this2._cachedColumnStyles[index] = _objectSpread({\n overflow: 'hidden'\n }, flexStyles);\n }); // Note that we specify :rowCount, :scrollbarWidth, :sortBy, and :sortDirection as properties on Grid even though these have nothing to do with Grid.\n // This is done because Grid is a pure component and won't update unless its properties or state has changed.\n // Any property that should trigger a re-render of Grid then is specified here to avoid a stale display.\n\n return React.createElement(\"div\", {\n \"aria-label\": this.props['aria-label'],\n \"aria-labelledby\": this.props['aria-labelledby'],\n \"aria-colcount\": React.Children.toArray(children).length,\n \"aria-rowcount\": this.props.rowCount,\n className: clsx('ReactVirtualized__Table', className),\n id: id,\n role: \"grid\",\n style: style\n }, !disableHeader && headerRowRenderer({\n className: clsx('ReactVirtualized__Table__headerRow', rowClass),\n columns: this._getHeaderColumns(),\n style: _objectSpread({\n height: headerHeight,\n overflow: 'hidden',\n paddingRight: scrollbarWidth,\n width: width\n }, rowStyleObject)\n }), React.createElement(Grid, _extends({}, this.props, {\n \"aria-readonly\": null,\n autoContainerWidth: true,\n className: clsx('ReactVirtualized__Table__Grid', gridClassName),\n cellRenderer: this._createRow,\n columnWidth: width,\n columnCount: 1,\n height: availableRowsHeight,\n id: undefined,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n role: \"rowgroup\",\n scrollbarWidth: scrollbarWidth,\n scrollToRow: scrollToIndex,\n style: _objectSpread({}, gridStyle, {\n overflowX: 'hidden'\n })\n })));\n }\n }, {\n key: \"_createColumn\",\n value: function _createColumn(_ref4) {\n var column = _ref4.column,\n columnIndex = _ref4.columnIndex,\n isScrolling = _ref4.isScrolling,\n parent = _ref4.parent,\n rowData = _ref4.rowData,\n rowIndex = _ref4.rowIndex;\n var onColumnClick = this.props.onColumnClick;\n var _column$props = column.props,\n cellDataGetter = _column$props.cellDataGetter,\n cellRenderer = _column$props.cellRenderer,\n className = _column$props.className,\n columnData = _column$props.columnData,\n dataKey = _column$props.dataKey,\n id = _column$props.id;\n var cellData = cellDataGetter({\n columnData: columnData,\n dataKey: dataKey,\n rowData: rowData\n });\n var renderedCell = cellRenderer({\n cellData: cellData,\n columnData: columnData,\n columnIndex: columnIndex,\n dataKey: dataKey,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: rowIndex\n });\n\n var onClick = function onClick(event) {\n onColumnClick && onColumnClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var style = this._cachedColumnStyles[columnIndex];\n var title = typeof renderedCell === 'string' ? renderedCell : null; // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n return React.createElement(\"div\", {\n \"aria-colindex\": columnIndex + 1,\n \"aria-describedby\": id,\n className: clsx('ReactVirtualized__Table__rowColumn', className),\n key: 'Row' + rowIndex + '-' + 'Col' + columnIndex,\n onClick: onClick,\n role: \"gridcell\",\n style: style,\n title: title\n }, renderedCell);\n }\n }, {\n key: \"_createHeader\",\n value: function _createHeader(_ref5) {\n var column = _ref5.column,\n index = _ref5.index;\n var _this$props2 = this.props,\n headerClassName = _this$props2.headerClassName,\n headerStyle = _this$props2.headerStyle,\n onHeaderClick = _this$props2.onHeaderClick,\n sort = _this$props2.sort,\n sortBy = _this$props2.sortBy,\n sortDirection = _this$props2.sortDirection;\n var _column$props2 = column.props,\n columnData = _column$props2.columnData,\n dataKey = _column$props2.dataKey,\n defaultSortDirection = _column$props2.defaultSortDirection,\n disableSort = _column$props2.disableSort,\n headerRenderer = _column$props2.headerRenderer,\n id = _column$props2.id,\n label = _column$props2.label;\n var sortEnabled = !disableSort && sort;\n var classNames = clsx('ReactVirtualized__Table__headerColumn', headerClassName, column.props.headerClassName, {\n ReactVirtualized__Table__sortableHeaderColumn: sortEnabled\n });\n\n var style = this._getFlexStyleForColumn(column, _objectSpread({}, headerStyle, {}, column.props.headerStyle));\n\n var renderedHeader = headerRenderer({\n columnData: columnData,\n dataKey: dataKey,\n disableSort: disableSort,\n label: label,\n sortBy: sortBy,\n sortDirection: sortDirection\n });\n var headerOnClick, headerOnKeyDown, headerTabIndex, headerAriaSort, headerAriaLabel;\n\n if (sortEnabled || onHeaderClick) {\n // If this is a sortable header, clicking it should update the table data's sorting.\n var isFirstTimeSort = sortBy !== dataKey; // If this is the firstTime sort of this column, use the column default sort order.\n // Otherwise, invert the direction of the sort.\n\n var newSortDirection = isFirstTimeSort ? defaultSortDirection : sortDirection === SortDirection.DESC ? SortDirection.ASC : SortDirection.DESC;\n\n var onClick = function onClick(event) {\n sortEnabled && sort({\n defaultSortDirection: defaultSortDirection,\n event: event,\n sortBy: dataKey,\n sortDirection: newSortDirection\n });\n onHeaderClick && onHeaderClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var onKeyDown = function onKeyDown(event) {\n if (event.key === 'Enter' || event.key === ' ') {\n onClick(event);\n }\n };\n\n headerAriaLabel = column.props['aria-label'] || label || dataKey;\n headerAriaSort = 'none';\n headerTabIndex = 0;\n headerOnClick = onClick;\n headerOnKeyDown = onKeyDown;\n }\n\n if (sortBy === dataKey) {\n headerAriaSort = sortDirection === SortDirection.ASC ? 'ascending' : 'descending';\n } // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n\n return React.createElement(\"div\", {\n \"aria-label\": headerAriaLabel,\n \"aria-sort\": headerAriaSort,\n className: classNames,\n id: id,\n key: 'Header-Col' + index,\n onClick: headerOnClick,\n onKeyDown: headerOnKeyDown,\n role: \"columnheader\",\n style: style,\n tabIndex: headerTabIndex\n }, renderedHeader);\n }\n }, {\n key: \"_createRow\",\n value: function _createRow(_ref6) {\n var _this3 = this;\n\n var index = _ref6.rowIndex,\n isScrolling = _ref6.isScrolling,\n key = _ref6.key,\n parent = _ref6.parent,\n style = _ref6.style;\n var _this$props3 = this.props,\n children = _this$props3.children,\n onRowClick = _this$props3.onRowClick,\n onRowDoubleClick = _this$props3.onRowDoubleClick,\n onRowRightClick = _this$props3.onRowRightClick,\n onRowMouseOver = _this$props3.onRowMouseOver,\n onRowMouseOut = _this$props3.onRowMouseOut,\n rowClassName = _this$props3.rowClassName,\n rowGetter = _this$props3.rowGetter,\n rowRenderer = _this$props3.rowRenderer,\n rowStyle = _this$props3.rowStyle;\n var scrollbarWidth = this.state.scrollbarWidth;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: index\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: index\n }) : rowStyle;\n var rowData = rowGetter({\n index: index\n });\n var columns = React.Children.toArray(children).map(function (column, columnIndex) {\n return _this3._createColumn({\n column: column,\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: index,\n scrollbarWidth: scrollbarWidth\n });\n });\n var className = clsx('ReactVirtualized__Table__row', rowClass);\n\n var flattenedStyle = _objectSpread({}, style, {\n height: this._getRowHeight(index),\n overflow: 'hidden',\n paddingRight: scrollbarWidth\n }, rowStyleObject);\n\n return rowRenderer({\n className: className,\n columns: columns,\n index: index,\n isScrolling: isScrolling,\n key: key,\n onRowClick: onRowClick,\n onRowDoubleClick: onRowDoubleClick,\n onRowRightClick: onRowRightClick,\n onRowMouseOver: onRowMouseOver,\n onRowMouseOut: onRowMouseOut,\n rowData: rowData,\n style: flattenedStyle\n });\n }\n /**\n * Determines the flex-shrink, flex-grow, and width values for a cell (header or column).\n */\n\n }, {\n key: \"_getFlexStyleForColumn\",\n value: function _getFlexStyleForColumn(column) {\n var customStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var flexValue = \"\".concat(column.props.flexGrow, \" \").concat(column.props.flexShrink, \" \").concat(column.props.width, \"px\");\n\n var style = _objectSpread({}, customStyle, {\n flex: flexValue,\n msFlex: flexValue,\n WebkitFlex: flexValue\n });\n\n if (column.props.maxWidth) {\n style.maxWidth = column.props.maxWidth;\n }\n\n if (column.props.minWidth) {\n style.minWidth = column.props.minWidth;\n }\n\n return style;\n }\n }, {\n key: \"_getHeaderColumns\",\n value: function _getHeaderColumns() {\n var _this4 = this;\n\n var _this$props4 = this.props,\n children = _this$props4.children,\n disableHeader = _this$props4.disableHeader;\n var items = disableHeader ? [] : React.Children.toArray(children);\n return items.map(function (column, index) {\n return _this4._createHeader({\n column: column,\n index: index\n });\n });\n }\n }, {\n key: \"_getRowHeight\",\n value: function _getRowHeight(rowIndex) {\n var rowHeight = this.props.rowHeight;\n return typeof rowHeight === 'function' ? rowHeight({\n index: rowIndex\n }) : rowHeight;\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref7) {\n var clientHeight = _ref7.clientHeight,\n scrollHeight = _ref7.scrollHeight,\n scrollTop = _ref7.scrollTop;\n var onScroll = this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n }\n }, {\n key: \"_onSectionRendered\",\n value: function _onSectionRendered(_ref8) {\n var rowOverscanStartIndex = _ref8.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref8.rowOverscanStopIndex,\n rowStartIndex = _ref8.rowStartIndex,\n rowStopIndex = _ref8.rowStopIndex;\n var onRowsRendered = this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n }\n }, {\n key: \"_setRef\",\n value: function _setRef(ref) {\n this.Grid = ref;\n }\n }, {\n key: \"_setScrollbarWidth\",\n value: function _setScrollbarWidth() {\n var scrollbarWidth = this.getScrollbarWidth();\n this.setState({\n scrollbarWidth: scrollbarWidth\n });\n }\n }]);\n\n return Table;\n}(React.PureComponent);\n\n_defineProperty(Table, \"defaultProps\", {\n disableHeader: false,\n estimatedRowSize: 30,\n headerHeight: 0,\n headerStyle: {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n rowRenderer: defaultRowRenderer,\n headerRowRenderer: defaultHeaderRowRenderer,\n rowStyle: {},\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { Table as default };\nTable.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** This is just set on the grid top element. */\n 'aria-label': PropTypes.string,\n\n /** This is just set on the grid top element. */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /** One or more Columns describing the data displayed in this row */\n children: function children(props) {\n var children = React.Children.toArray(props.children);\n\n for (var i = 0; i < children.length; i++) {\n var childType = children[i].type;\n\n if (childType !== Column && !(childType.prototype instanceof Column)) {\n return new Error('Table only accepts children of type Column');\n }\n }\n },\n\n /** Optional CSS class name */\n className: PropTypes.string,\n\n /** Disable rendering the header at all */\n disableHeader: PropTypes.bool,\n\n /**\n * Used to estimate the total height of a Table before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n estimatedRowSize: PropTypes.number.isRequired,\n\n /** Optional custom CSS class name to attach to inner Grid element. */\n gridClassName: PropTypes.string,\n\n /** Optional inline style to attach to inner Grid element. */\n gridStyle: PropTypes.object,\n\n /** Optional CSS class to apply to all column headers */\n headerClassName: PropTypes.string,\n\n /** Fixed height of header row */\n headerHeight: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: any[],\n * style: any\n * }): PropTypes.node\n */\n headerRowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table header columns. */\n headerStyle: PropTypes.object,\n\n /** Fixed/available height for out DOM element */\n height: PropTypes.number.isRequired,\n\n /** Optional id */\n id: PropTypes.string,\n\n /** Optional renderer to be used in place of table body rows when rowCount is 0 */\n noRowsRenderer: PropTypes.func,\n\n /**\n * Optional callback when a column is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onColumnClick: PropTypes.func,\n\n /**\n * Optional callback when a column's header is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onHeaderClick: PropTypes.func,\n\n /**\n * Callback invoked when a user clicks on a table row.\n * ({ index: number }): void\n */\n onRowClick: PropTypes.func,\n\n /**\n * Callback invoked when a user double-clicks on a table row.\n * ({ index: number }): void\n */\n onRowDoubleClick: PropTypes.func,\n\n /**\n * Callback invoked when the mouse leaves a table row.\n * ({ index: number }): void\n */\n onRowMouseOut: PropTypes.func,\n\n /**\n * Callback invoked when a user moves the mouse over a table row.\n * ({ index: number }): void\n */\n onRowMouseOver: PropTypes.func,\n\n /**\n * Callback invoked when a user right-clicks on a table row.\n * ({ index: number }): void\n */\n onRowRightClick: PropTypes.func,\n\n /**\n * Callback invoked with information about the slice of rows that were just rendered.\n * ({ startIndex, stopIndex }): void\n */\n onRowsRendered: PropTypes.func,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, scrollHeight, scrollTop }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n overscanIndicesGetter: PropTypes.func.isRequired,\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n overscanRowCount: PropTypes.number.isRequired,\n\n /**\n * Optional CSS class to apply to all table rows (including the header row).\n * This property can be a CSS class name (string) or a function that returns a class name.\n * If a function is provided its signature should be: ({ index: number }): string\n */\n rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n\n /**\n * Callback responsible for returning a data row given an index.\n * ({ index: number }): any\n */\n rowGetter: PropTypes.func.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * ({ index: number }): number\n */\n rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired,\n\n /** Number of rows in table. */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: Array,\n * index: number,\n * isScrolling: boolean,\n * onRowClick: ?Function,\n * onRowDoubleClick: ?Function,\n * onRowMouseOver: ?Function,\n * onRowMouseOut: ?Function,\n * rowData: any,\n * style: any\n * }): PropTypes.node\n */\n rowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table rows. */\n rowStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\n\n /** See Grid#scrollToAlignment */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n scrollToIndex: PropTypes.number.isRequired,\n\n /** Vertical offset. */\n scrollTop: PropTypes.number,\n\n /**\n * Sort function to be called if a sortable header is clicked.\n * Should implement the following interface: ({\n * defaultSortDirection: 'ASC' | 'DESC',\n * event: MouseEvent,\n * sortBy: string,\n * sortDirection: SortDirection\n * }): void\n */\n sort: PropTypes.func,\n\n /** Table data is currently sorted by this :dataKey (if it is sorted at all) */\n sortBy: PropTypes.string,\n\n /** Table data is currently sorted in this direction (if it is sorted at all) */\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** Optional inline style */\n style: PropTypes.object,\n\n /** Tab index for focus */\n tabIndex: PropTypes.number,\n\n /** Width of list */\n width: PropTypes.number.isRequired\n} : {};\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";","/**\n * Default accessor for returning a cell value for a given attribute.\n * This function expects to operate on either a vanilla Object or an Immutable Map.\n * You should override the column's cellDataGetter if your data is some other type of object.\n */\nexport default function defaultCellDataGetter(_ref) {\n var dataKey = _ref.dataKey,\n rowData = _ref.rowData;\n\n if (typeof rowData.get === 'function') {\n return rowData.get(dataKey);\n } else {\n return rowData[dataKey];\n }\n}\nimport { bpfrpt_proptype_CellDataGetterParams } from \"./types\";","/**\n * Default cell renderer that displays an attribute as a simple string\n * You should override the column's cellRenderer if your data is some other type of object.\n */\nexport default function defaultCellRenderer(_ref) {\n var cellData = _ref.cellData;\n\n if (cellData == null) {\n return '';\n } else {\n return String(cellData);\n }\n}\nimport { bpfrpt_proptype_CellRendererParams } from \"./types\";","import { requestAnimationTimeout, cancelAnimationTimeout } from '../../utils/requestAnimationTimeout';\nvar mountedInstances = [];\nvar originalBodyPointerEvents = null;\nvar disablePointerEventsTimeoutId = null;\n\nfunction enablePointerEventsIfDisabled() {\n if (disablePointerEventsTimeoutId) {\n disablePointerEventsTimeoutId = null;\n\n if (document.body && originalBodyPointerEvents != null) {\n document.body.style.pointerEvents = originalBodyPointerEvents;\n }\n\n originalBodyPointerEvents = null;\n }\n}\n\nfunction enablePointerEventsAfterDelayCallback() {\n enablePointerEventsIfDisabled();\n mountedInstances.forEach(function (instance) {\n return instance.__resetIsScrolling();\n });\n}\n\nfunction enablePointerEventsAfterDelay() {\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n }\n\n var maximumTimeout = 0;\n mountedInstances.forEach(function (instance) {\n maximumTimeout = Math.max(maximumTimeout, instance.props.scrollingResetTimeInterval);\n });\n disablePointerEventsTimeoutId = requestAnimationTimeout(enablePointerEventsAfterDelayCallback, maximumTimeout);\n}\n\nfunction onScrollWindow(event) {\n if (event.currentTarget === window && originalBodyPointerEvents == null && document.body) {\n originalBodyPointerEvents = document.body.style.pointerEvents;\n document.body.style.pointerEvents = 'none';\n }\n\n enablePointerEventsAfterDelay();\n mountedInstances.forEach(function (instance) {\n if (instance.props.scrollElement === event.currentTarget) {\n instance.__handleWindowScrollEvent();\n }\n });\n}\n\nexport function registerScrollListener(component, element) {\n if (!mountedInstances.some(function (instance) {\n return instance.props.scrollElement === element;\n })) {\n element.addEventListener('scroll', onScrollWindow);\n }\n\n mountedInstances.push(component);\n}\nexport function unregisterScrollListener(component, element) {\n mountedInstances = mountedInstances.filter(function (instance) {\n return instance !== component;\n });\n\n if (!mountedInstances.length) {\n element.removeEventListener('scroll', onScrollWindow);\n\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n enablePointerEventsIfDisabled();\n }\n }\n}\nimport { bpfrpt_proptype_WindowScroller } from \"../WindowScroller.js\";","/**\n * Gets the dimensions of the element, accounting for API differences between\n * `window` and other DOM elements.\n */\n// TODO Move this into WindowScroller and import from there\nvar isWindow = function isWindow(element) {\n return element === window;\n};\n\nvar getBoundingBox = function getBoundingBox(element) {\n return element.getBoundingClientRect();\n};\n\nexport function getDimensions(scrollElement, props) {\n if (!scrollElement) {\n return {\n height: props.serverHeight,\n width: props.serverWidth\n };\n } else if (isWindow(scrollElement)) {\n var _window = window,\n innerHeight = _window.innerHeight,\n innerWidth = _window.innerWidth;\n return {\n height: typeof innerHeight === 'number' ? innerHeight : 0,\n width: typeof innerWidth === 'number' ? innerWidth : 0\n };\n } else {\n return getBoundingBox(scrollElement);\n }\n}\n/**\n * Gets the vertical and horizontal position of an element within its scroll container.\n * Elements that have been “scrolled past” return negative values.\n * Handles edge-case where a user is navigating back (history) from an already-scrolled page.\n * In this case the body’s top or left position will be a negative number and this element’s top or left will be increased (by that amount).\n */\n\nexport function getPositionOffset(element, container) {\n if (isWindow(container) && document.documentElement) {\n var containerElement = document.documentElement;\n var elementRect = getBoundingBox(element);\n var containerRect = getBoundingBox(containerElement);\n return {\n top: elementRect.top - containerRect.top,\n left: elementRect.left - containerRect.left\n };\n } else {\n var scrollOffset = getScrollOffset(container);\n\n var _elementRect = getBoundingBox(element);\n\n var _containerRect = getBoundingBox(container);\n\n return {\n top: _elementRect.top + scrollOffset.top - _containerRect.top,\n left: _elementRect.left + scrollOffset.left - _containerRect.left\n };\n }\n}\n/**\n * Gets the vertical and horizontal scroll amount of the element, accounting for IE compatibility\n * and API differences between `window` and other DOM elements.\n */\n\nexport function getScrollOffset(element) {\n if (isWindow(element) && document.documentElement) {\n return {\n top: 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop,\n left: 'scrollX' in window ? window.scrollX : document.documentElement.scrollLeft\n };\n } else {\n return {\n top: element.scrollTop,\n left: element.scrollLeft\n };\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { registerScrollListener, unregisterScrollListener } from './utils/onScroll';\nimport { getDimensions, getPositionOffset, getScrollOffset } from './utils/dimensions';\nimport createDetectElementResize from '../vendor/detectElementResize';\n\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nexport var IS_SCROLLING_TIMEOUT = 150;\n\nvar getWindow = function getWindow() {\n return typeof window !== 'undefined' ? window : undefined;\n};\n\nvar WindowScroller = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(WindowScroller, _React$PureComponent);\n\n function WindowScroller() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, WindowScroller);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WindowScroller)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", getWindow());\n\n _defineProperty(_assertThisInitialized(_this), \"_isMounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromTop\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromLeft\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", _objectSpread({}, getDimensions(_this.props.scrollElement, _this.props), {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('WindowScroller registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onChildScroll\", function (_ref) {\n var scrollTop = _ref.scrollTop;\n\n if (_this.state.scrollTop === scrollTop) {\n return;\n }\n\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n if (typeof scrollElement.scrollTo === 'function') {\n scrollElement.scrollTo(0, scrollTop + _this._positionFromTop);\n } else {\n scrollElement.scrollTop = scrollTop + _this._positionFromTop;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerResizeListener\", function (element) {\n if (element === window) {\n window.addEventListener('resize', _this._onResize, false);\n } else {\n _this._detectElementResize.addResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_unregisterResizeListener\", function (element) {\n if (element === window) {\n window.removeEventListener('resize', _this._onResize, false);\n } else if (element) {\n _this._detectElementResize.removeResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__handleWindowScrollEvent\", function () {\n if (!_this._isMounted) {\n return;\n }\n\n var onScroll = _this.props.onScroll;\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n var scrollOffset = getScrollOffset(scrollElement);\n var scrollLeft = Math.max(0, scrollOffset.left - _this._positionFromLeft);\n var scrollTop = Math.max(0, scrollOffset.top - _this._positionFromTop);\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n onScroll({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__resetIsScrolling\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n return _this;\n }\n\n _createClass(WindowScroller, [{\n key: \"updatePosition\",\n value: function updatePosition() {\n var scrollElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.scrollElement;\n var onResize = this.props.onResize;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width;\n var thisNode = this._child || ReactDOM.findDOMNode(this);\n\n if (thisNode instanceof Element && scrollElement) {\n var offset = getPositionOffset(thisNode, scrollElement);\n this._positionFromTop = offset.top;\n this._positionFromLeft = offset.left;\n }\n\n var dimensions = getDimensions(scrollElement, this.props);\n\n if (height !== dimensions.height || width !== dimensions.width) {\n this.setState({\n height: dimensions.height,\n width: dimensions.width\n });\n onResize({\n height: dimensions.height,\n width: dimensions.width\n });\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var scrollElement = this.props.scrollElement;\n this._detectElementResize = createDetectElementResize();\n this.updatePosition(scrollElement);\n\n if (scrollElement) {\n registerScrollListener(this, scrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n\n this._isMounted = true;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var scrollElement = this.props.scrollElement;\n var prevScrollElement = prevProps.scrollElement;\n\n if (prevScrollElement !== scrollElement && prevScrollElement != null && scrollElement != null) {\n this.updatePosition(scrollElement);\n unregisterScrollListener(this, prevScrollElement);\n registerScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(prevScrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var scrollElement = this.props.scrollElement;\n\n if (scrollElement) {\n unregisterScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(scrollElement);\n }\n\n this._isMounted = false;\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state2 = this.state,\n isScrolling = _this$state2.isScrolling,\n scrollTop = _this$state2.scrollTop,\n scrollLeft = _this$state2.scrollLeft,\n height = _this$state2.height,\n width = _this$state2.width;\n return children({\n onChildScroll: this._onChildScroll,\n registerChild: this._registerChild,\n height: height,\n isScrolling: isScrolling,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n }\n }]);\n\n return WindowScroller;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /**\n * Function responsible for rendering children.\n * This function should implement the following signature:\n * ({ height, isScrolling, scrollLeft, scrollTop, width }) => PropTypes.element\n */\n \"children\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-resize: ({ height, width }) */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-scroll: ({ scrollLeft, scrollTop }) */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** Element to attach scroll event listeners. Defaults to window. */\n \"scrollElement\": PropTypes.oneOfType([PropTypes.any, function () {\n return (typeof Element === \"function\" ? PropTypes.instanceOf(Element) : PropTypes.any).apply(this, arguments);\n }]),\n\n /**\n * Wait this amount of time after the last scroll event before resetting child `pointer-events`.\n */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Height used for server-side rendering */\n \"serverHeight\": PropTypes.number.isRequired,\n\n /** Width used for server-side rendering */\n \"serverWidth\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(WindowScroller, \"defaultProps\", {\n onResize: function onResize() {},\n onScroll: function onScroll() {},\n scrollingResetTimeInterval: IS_SCROLLING_TIMEOUT,\n scrollElement: getWindow(),\n serverHeight: 0,\n serverWidth: 0\n});\n\nexport { WindowScroller as default };\nimport PropTypes from \"prop-types\";","const htmlparser = require('htmlparser2');\nconst escapeStringRegexp = require('escape-string-regexp');\nconst { isPlainObject } = require('is-plain-object');\nconst deepmerge = require('deepmerge');\nconst parseSrcset = require('parse-srcset');\nconst { parse: postcssParse } = require('postcss');\n// Tags that can conceivably represent stand-alone media.\nconst mediaTags = [\n 'img', 'audio', 'video', 'picture', 'svg',\n 'object', 'map', 'iframe', 'embed'\n];\n// Tags that are inherently vulnerable to being used in XSS attacks.\nconst vulnerableTags = [ 'script', 'style' ];\n\nfunction each(obj, cb) {\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n cb(obj[key], key);\n });\n }\n}\n\n// Avoid false positives with .__proto__, .hasOwnProperty, etc.\nfunction has(obj, key) {\n return ({}).hasOwnProperty.call(obj, key);\n}\n\n// Returns those elements of `a` for which `cb(a)` returns truthy\nfunction filter(a, cb) {\n const n = [];\n each(a, function(v) {\n if (cb(v)) {\n n.push(v);\n }\n });\n return n;\n}\n\nfunction isEmptyObject(obj) {\n for (const key in obj) {\n if (has(obj, key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction stringifySrcset(parsedSrcset) {\n return parsedSrcset.map(function(part) {\n if (!part.url) {\n throw new Error('URL missing');\n }\n\n return (\n part.url +\n (part.w ? ` ${part.w}w` : '') +\n (part.h ? ` ${part.h}h` : '') +\n (part.d ? ` ${part.d}x` : '')\n );\n }).join(', ');\n}\n\nmodule.exports = sanitizeHtml;\n\n// A valid attribute name.\n// We use a tolerant definition based on the set of strings defined by\n// html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n// and html.spec.whatwg.org/multipage/parsing.html#attribute-name-state .\n// The characters accepted are ones which can be appended to the attribute\n// name buffer without triggering a parse error:\n// * unexpected-equals-sign-before-attribute-name\n// * unexpected-null-character\n// * unexpected-character-in-attribute-name\n// We exclude the empty string because it's impossible to get to the after\n// attribute name state with an empty attribute name buffer.\nconst VALID_HTML_ATTRIBUTE_NAME = /^[^\\0\\t\\n\\f\\r /<=>]+$/;\n\n// Ignore the _recursing flag; it's there for recursive\n// invocation as a guard against this exploit:\n// https://github.com/fb55/htmlparser2/issues/105\n\nfunction sanitizeHtml(html, options, _recursing) {\n if (html == null) {\n return '';\n }\n\n let result = '';\n // Used for hot swapping the result variable with an empty string in order to \"capture\" the text written to it.\n let tempResult = '';\n\n function Frame(tag, attribs) {\n const that = this;\n this.tag = tag;\n this.attribs = attribs || {};\n this.tagPosition = result.length;\n this.text = ''; // Node inner text\n this.mediaChildren = [];\n\n this.updateParentNodeText = function() {\n if (stack.length) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.text += that.text;\n }\n };\n\n this.updateParentNodeMediaChildren = function() {\n if (stack.length && mediaTags.includes(this.tag)) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.mediaChildren.push(this.tag);\n }\n };\n }\n\n options = Object.assign({}, sanitizeHtml.defaults, options);\n options.parser = Object.assign({}, htmlParserDefaults, options.parser);\n\n // vulnerableTags\n vulnerableTags.forEach(function (tag) {\n if (\n options.allowedTags && options.allowedTags.indexOf(tag) > -1 &&\n !options.allowVulnerableTags\n ) {\n console.warn(`\\n\\n⚠️ Your \\`allowedTags\\` option includes, \\`${tag}\\`, which is inherently\\nvulnerable to XSS attacks. Please remove it from \\`allowedTags\\`.\\nOr, to disable this warning, add the \\`allowVulnerableTags\\` option\\nand ensure you are accounting for this risk.\\n\\n`);\n }\n });\n\n // Tags that contain something other than HTML, or where discarding\n // the text when the tag is disallowed makes sense for other reasons.\n // If we are not allowing these tags, we should drop their content too.\n // For other tags you would drop the tag but keep its content.\n const nonTextTagsArray = options.nonTextTags || [\n 'script',\n 'style',\n 'textarea',\n 'option'\n ];\n let allowedAttributesMap;\n let allowedAttributesGlobMap;\n if (options.allowedAttributes) {\n allowedAttributesMap = {};\n allowedAttributesGlobMap = {};\n each(options.allowedAttributes, function(attributes, tag) {\n allowedAttributesMap[tag] = [];\n const globRegex = [];\n attributes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else {\n allowedAttributesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedAttributesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n });\n }\n const allowedClassesMap = {};\n const allowedClassesGlobMap = {};\n const allowedClassesRegexMap = {};\n each(options.allowedClasses, function(classes, tag) {\n // Implicitly allows the class attribute\n if (allowedAttributesMap) {\n if (!has(allowedAttributesMap, tag)) {\n allowedAttributesMap[tag] = [];\n }\n allowedAttributesMap[tag].push('class');\n }\n\n allowedClassesMap[tag] = [];\n allowedClassesRegexMap[tag] = [];\n const globRegex = [];\n classes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else if (obj instanceof RegExp) {\n allowedClassesRegexMap[tag].push(obj);\n } else {\n allowedClassesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedClassesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n });\n\n const transformTagsMap = {};\n let transformTagsAll;\n each(options.transformTags, function(transform, tag) {\n let transFun;\n if (typeof transform === 'function') {\n transFun = transform;\n } else if (typeof transform === 'string') {\n transFun = sanitizeHtml.simpleTransform(transform);\n }\n if (tag === '*') {\n transformTagsAll = transFun;\n } else {\n transformTagsMap[tag] = transFun;\n }\n });\n\n let depth;\n let stack;\n let skipMap;\n let transformMap;\n let skipText;\n let skipTextDepth;\n let addedText = false;\n\n initializeState();\n\n const parser = new htmlparser.Parser({\n onopentag: function(name, attribs) {\n // If `enforceHtmlBoundary` is `true` and this has found the opening\n // `html` tag, reset the state.\n if (options.enforceHtmlBoundary && name === 'html') {\n initializeState();\n }\n\n if (skipText) {\n skipTextDepth++;\n return;\n }\n const frame = new Frame(name, attribs);\n stack.push(frame);\n\n let skip = false;\n const hasText = !!frame.text;\n let transformedTag;\n if (has(transformTagsMap, name)) {\n transformedTag = transformTagsMap[name](name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n\n if (transformedTag.text !== undefined) {\n frame.innerText = transformedTag.text;\n }\n\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n if (transformTagsAll) {\n transformedTag = transformTagsAll(name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n\n if ((options.allowedTags && options.allowedTags.indexOf(name) === -1) || (options.disallowedTagsMode === 'recursiveEscape' && !isEmptyObject(skipMap)) || (options.nestingLimit != null && depth >= options.nestingLimit)) {\n skip = true;\n skipMap[depth] = true;\n if (options.disallowedTagsMode === 'discard') {\n if (nonTextTagsArray.indexOf(name) !== -1) {\n skipText = true;\n skipTextDepth = 1;\n }\n }\n skipMap[depth] = true;\n }\n depth++;\n if (skip) {\n if (options.disallowedTagsMode === 'discard') {\n // We want the contents but not this tag\n return;\n }\n tempResult = result;\n result = '';\n }\n result += '<' + name;\n\n if (name === 'script') {\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n frame.innerText = '';\n }\n }\n\n if (!allowedAttributesMap || has(allowedAttributesMap, name) || allowedAttributesMap['*']) {\n each(attribs, function(value, a) {\n if (!VALID_HTML_ATTRIBUTE_NAME.test(a)) {\n // This prevents part of an attribute name in the output from being\n // interpreted as the end of an attribute, or end of a tag.\n delete frame.attribs[a];\n return;\n }\n // check allowedAttributesMap for the element and attribute and modify the value\n // as necessary if there are specific values defined.\n let passedAllowedAttributesMapCheck = false;\n if (!allowedAttributesMap ||\n (has(allowedAttributesMap, name) && allowedAttributesMap[name].indexOf(a) !== -1) ||\n (allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1) ||\n (has(allowedAttributesGlobMap, name) && allowedAttributesGlobMap[name].test(a)) ||\n (allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a))) {\n passedAllowedAttributesMapCheck = true;\n } else if (allowedAttributesMap && allowedAttributesMap[name]) {\n for (const o of allowedAttributesMap[name]) {\n if (isPlainObject(o) && o.name && (o.name === a)) {\n passedAllowedAttributesMapCheck = true;\n let newValue = '';\n if (o.multiple === true) {\n // verify the values that are allowed\n const splitStrArray = value.split(' ');\n for (const s of splitStrArray) {\n if (o.values.indexOf(s) !== -1) {\n if (newValue === '') {\n newValue = s;\n } else {\n newValue += ' ' + s;\n }\n }\n }\n } else if (o.values.indexOf(value) >= 0) {\n // verified an allowed value matches the entire attribute value\n newValue = value;\n }\n value = newValue;\n }\n }\n }\n if (passedAllowedAttributesMapCheck) {\n if (options.allowedSchemesAppliedToAttributes.indexOf(a) !== -1) {\n if (naughtyHref(name, value)) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'script' && a === 'src') {\n\n let allowed = true;\n\n try {\n const parsed = parseUrl(value);\n\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n const allowedHostname = (options.allowedScriptHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedScriptDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n allowed = false;\n }\n\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'iframe' && a === 'src') {\n let allowed = true;\n try {\n const parsed = parseUrl(value);\n\n if (parsed.isRelativeUrl) {\n // default value of allowIframeRelativeUrls is true\n // unless allowedIframeHostnames or allowedIframeDomains specified\n allowed = has(options, 'allowIframeRelativeUrls')\n ? options.allowIframeRelativeUrls\n : (!options.allowedIframeHostnames && !options.allowedIframeDomains);\n } else if (options.allowedIframeHostnames || options.allowedIframeDomains) {\n const allowedHostname = (options.allowedIframeHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedIframeDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n // Unparseable iframe src\n allowed = false;\n }\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'srcset') {\n try {\n let parsed = parseSrcset(value);\n parsed.forEach(function(value) {\n if (naughtyHref('srcset', value.url)) {\n value.evil = true;\n }\n });\n parsed = filter(parsed, function(v) {\n return !v.evil;\n });\n if (!parsed.length) {\n delete frame.attribs[a];\n return;\n } else {\n value = stringifySrcset(filter(parsed, function(v) {\n return !v.evil;\n }));\n frame.attribs[a] = value;\n }\n } catch (e) {\n // Unparseable srcset\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'class') {\n const allowedSpecificClasses = allowedClassesMap[name];\n const allowedWildcardClasses = allowedClassesMap['*'];\n const allowedSpecificClassesGlob = allowedClassesGlobMap[name];\n const allowedSpecificClassesRegex = allowedClassesRegexMap[name];\n const allowedWildcardClassesGlob = allowedClassesGlobMap['*'];\n const allowedClassesGlobs = [\n allowedSpecificClassesGlob,\n allowedWildcardClassesGlob\n ]\n .concat(allowedSpecificClassesRegex)\n .filter(function (t) {\n return t;\n });\n if (allowedSpecificClasses && allowedWildcardClasses) {\n value = filterClasses(value, deepmerge(allowedSpecificClasses, allowedWildcardClasses), allowedClassesGlobs);\n } else {\n value = filterClasses(value, allowedSpecificClasses || allowedWildcardClasses, allowedClassesGlobs);\n }\n if (!value.length) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'style') {\n try {\n const abstractSyntaxTree = postcssParse(name + ' {' + value + '}');\n const filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);\n\n value = stringifyStyleAttributes(filteredAST);\n\n if (value.length === 0) {\n delete frame.attribs[a];\n return;\n }\n } catch (e) {\n delete frame.attribs[a];\n return;\n }\n }\n result += ' ' + a;\n if (value && value.length) {\n result += '=\"' + escapeHtml(value, true) + '\"';\n }\n } else {\n delete frame.attribs[a];\n }\n });\n }\n if (options.selfClosing.indexOf(name) !== -1) {\n result += ' />';\n } else {\n result += '>';\n if (frame.innerText && !hasText && !options.textFilter) {\n result += escapeHtml(frame.innerText);\n addedText = true;\n }\n }\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n },\n ontext: function(text) {\n if (skipText) {\n return;\n }\n const lastFrame = stack[stack.length - 1];\n let tag;\n\n if (lastFrame) {\n tag = lastFrame.tag;\n // If inner text was set by transform function then let's use it\n text = lastFrame.innerText !== undefined ? lastFrame.innerText : text;\n }\n\n if (options.disallowedTagsMode === 'discard' && ((tag === 'script') || (tag === 'style'))) {\n // htmlparser2 gives us these as-is. Escaping them ruins the content. Allowing\n // script tags is, by definition, game over for XSS protection, so if that's\n // your concern, don't allow them. The same is essentially true for style tags\n // which have their own collection of XSS vectors.\n result += text;\n } else {\n const escaped = escapeHtml(text, false);\n if (options.textFilter && !addedText) {\n result += options.textFilter(escaped, tag);\n } else if (!addedText) {\n result += escaped;\n }\n }\n if (stack.length) {\n const frame = stack[stack.length - 1];\n frame.text += text;\n }\n },\n onclosetag: function(name) {\n\n if (skipText) {\n skipTextDepth--;\n if (!skipTextDepth) {\n skipText = false;\n } else {\n return;\n }\n }\n\n const frame = stack.pop();\n if (!frame) {\n // Do not crash on bad markup\n return;\n }\n skipText = options.enforceHtmlBoundary ? name === 'html' : false;\n depth--;\n const skip = skipMap[depth];\n if (skip) {\n delete skipMap[depth];\n if (options.disallowedTagsMode === 'discard') {\n frame.updateParentNodeText();\n return;\n }\n tempResult = result;\n result = '';\n }\n\n if (transformMap[depth]) {\n name = transformMap[depth];\n delete transformMap[depth];\n }\n\n if (options.exclusiveFilter && options.exclusiveFilter(frame)) {\n result = result.substr(0, frame.tagPosition);\n return;\n }\n\n frame.updateParentNodeMediaChildren();\n frame.updateParentNodeText();\n\n if (options.selfClosing.indexOf(name) !== -1) {\n // Already output />\n if (skip) {\n result = tempResult;\n tempResult = '';\n }\n return;\n }\n\n result += '</' + name + '>';\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n addedText = false;\n }\n }, options.parser);\n parser.write(html);\n parser.end();\n\n return result;\n\n function initializeState() {\n result = '';\n depth = 0;\n stack = [];\n skipMap = {};\n transformMap = {};\n skipText = false;\n skipTextDepth = 0;\n }\n\n function escapeHtml(s, quote) {\n if (typeof (s) !== 'string') {\n s = s + '';\n }\n if (options.parser.decodeEntities) {\n s = s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n if (quote) {\n s = s.replace(/\"/g, '&quot;');\n }\n }\n // TODO: this is inadequate because it will pass `&0;`. This approach\n // will not work, each & must be considered with regard to whether it\n // is followed by a 100% syntactically valid entity or not, and escaped\n // if it is not. If this bothers you, don't set parser.decodeEntities\n // to false. (The default is true.)\n s = s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, '&amp;') // Match ampersands not part of existing HTML entity\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n if (quote) {\n s = s.replace(/\"/g, '&quot;');\n }\n return s;\n }\n\n function naughtyHref(name, href) {\n // Browsers ignore character codes of 32 (space) and below in a surprising\n // number of situations. Start reading here:\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Embedded_tab\n // eslint-disable-next-line no-control-regex\n href = href.replace(/[\\x00-\\x20]+/g, '');\n // Clobber any comments in URLs, which the browser might\n // interpret inside an XML data island, allowing\n // a javascript: URL to be snuck through\n while (true) {\n const firstIndex = href.indexOf('<!--');\n if (firstIndex === -1) {\n break;\n }\n const lastIndex = href.indexOf('-->', firstIndex + 4);\n if (lastIndex === -1) {\n break;\n }\n href = href.substring(0, firstIndex) + href.substring(lastIndex + 3);\n }\n // Case insensitive so we don't get faked out by JAVASCRIPT #1\n // Allow more characters after the first so we don't get faked\n // out by certain schemes browsers accept\n const matches = href.match(/^([a-zA-Z][a-zA-Z0-9.\\-+]*):/);\n if (!matches) {\n // Protocol-relative URL starting with any combination of '/' and '\\'\n if (href.match(/^[/\\\\]{2}/)) {\n return !options.allowProtocolRelative;\n }\n\n // No scheme\n return false;\n }\n const scheme = matches[1].toLowerCase();\n\n if (has(options.allowedSchemesByTag, name)) {\n return options.allowedSchemesByTag[name].indexOf(scheme) === -1;\n }\n\n return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;\n }\n\n function parseUrl(value) {\n value = value.replace(/^(\\w+:)?\\s*[\\\\/]\\s*[\\\\/]/, '$1//');\n if (value.startsWith('relative:')) {\n // An attempt to exploit our workaround for base URLs being\n // mandatory for relative URL validation in the WHATWG\n // URL parser, reject it\n throw new Error('relative: exploit attempt');\n }\n // naughtyHref is in charge of whether protocol relative URLs\n // are cool. Here we are concerned just with allowed hostnames and\n // whether to allow relative URLs.\n //\n // Build a placeholder \"base URL\" against which any reasonable\n // relative URL may be parsed successfully\n let base = 'relative://relative-site';\n for (let i = 0; (i < 100); i++) {\n base += `/${i}`;\n }\n\n const parsed = new URL(value, base);\n\n const isRelativeUrl = parsed && parsed.hostname === 'relative-site' && parsed.protocol === 'relative:';\n return {\n isRelativeUrl,\n url: parsed\n };\n }\n /**\n * Filters user input css properties by allowlisted regex attributes.\n * Modifies the abstractSyntaxTree object.\n *\n * @param {object} abstractSyntaxTree - Object representation of CSS attributes.\n * @property {array[Declaration]} abstractSyntaxTree.nodes[0] - Each object cointains prop and value key, i.e { prop: 'color', value: 'red' }.\n * @param {object} allowedStyles - Keys are properties (i.e color), value is list of permitted regex rules (i.e /green/i).\n * @return {object} - The modified tree.\n */\n function filterCss(abstractSyntaxTree, allowedStyles) {\n if (!allowedStyles) {\n return abstractSyntaxTree;\n }\n\n const astRules = abstractSyntaxTree.nodes[0];\n let selectedRule;\n\n // Merge global and tag-specific styles into new AST.\n if (allowedStyles[astRules.selector] && allowedStyles['*']) {\n selectedRule = deepmerge(\n allowedStyles[astRules.selector],\n allowedStyles['*']\n );\n } else {\n selectedRule = allowedStyles[astRules.selector] || allowedStyles['*'];\n }\n\n if (selectedRule) {\n abstractSyntaxTree.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);\n }\n\n return abstractSyntaxTree;\n }\n\n /**\n * Extracts the style attributes from an AbstractSyntaxTree and formats those\n * values in the inline style attribute format.\n *\n * @param {AbstractSyntaxTree} filteredAST\n * @return {string} - Example: \"color:yellow;text-align:center !important;font-family:helvetica;\"\n */\n function stringifyStyleAttributes(filteredAST) {\n return filteredAST.nodes[0].nodes\n .reduce(function(extractedAttributes, attrObject) {\n extractedAttributes.push(\n `${attrObject.prop}:${attrObject.value}${attrObject.important ? ' !important' : ''}`\n );\n return extractedAttributes;\n }, [])\n .join(';');\n }\n\n /**\n * Filters the existing attributes for the given property. Discards any attributes\n * which don't match the allowlist.\n *\n * @param {object} selectedRule - Example: { color: red, font-family: helvetica }\n * @param {array} allowedDeclarationsList - List of declarations which pass the allowlist.\n * @param {object} attributeObject - Object representing the current css property.\n * @property {string} attributeObject.type - Typically 'declaration'.\n * @property {string} attributeObject.prop - The CSS property, i.e 'color'.\n * @property {string} attributeObject.value - The corresponding value to the css property, i.e 'red'.\n * @return {function} - When used in Array.reduce, will return an array of Declaration objects\n */\n function filterDeclarations(selectedRule) {\n return function (allowedDeclarationsList, attributeObject) {\n // If this property is allowlisted...\n if (has(selectedRule, attributeObject.prop)) {\n const matchesRegex = selectedRule[attributeObject.prop].some(function(regularExpression) {\n return regularExpression.test(attributeObject.value);\n });\n\n if (matchesRegex) {\n allowedDeclarationsList.push(attributeObject);\n }\n }\n return allowedDeclarationsList;\n };\n }\n\n function filterClasses(classes, allowed, allowedGlobs) {\n if (!allowed) {\n // The class attribute is allowed without filtering on this tag\n return classes;\n }\n classes = classes.split(/\\s+/);\n return classes.filter(function(clss) {\n return allowed.indexOf(clss) !== -1 || allowedGlobs.some(function(glob) {\n return glob.test(clss);\n });\n }).join(' ');\n }\n}\n\n// Defaults are accessible to you so that you can use them as a starting point\n// programmatically if you wish\n\nconst htmlParserDefaults = {\n decodeEntities: true\n};\nsanitizeHtml.defaults = {\n allowedTags: [\n // Sections derived from MDN element categories and limited to the more\n // benign categories.\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n // Content sectioning\n 'address', 'article', 'aside', 'footer', 'header',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup',\n 'main', 'nav', 'section',\n // Text content\n 'blockquote', 'dd', 'div', 'dl', 'dt', 'figcaption', 'figure',\n 'hr', 'li', 'main', 'ol', 'p', 'pre', 'ul',\n // Inline text semantics\n 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'code', 'data', 'dfn',\n 'em', 'i', 'kbd', 'mark', 'q',\n 'rb', 'rp', 'rt', 'rtc', 'ruby',\n 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr',\n // Table content\n 'caption', 'col', 'colgroup', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'\n ],\n disallowedTagsMode: 'discard',\n allowedAttributes: {\n a: [ 'href', 'name', 'target' ],\n // We don't currently allow img itself by default, but\n // these attributes would make sense if we did.\n img: [ 'src', 'srcset', 'alt', 'title', 'width', 'height', 'loading' ]\n },\n // Lots of these won't come up by default because we don't allow them\n selfClosing: [ 'img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta' ],\n // URL schemes we permit\n allowedSchemes: [ 'http', 'https', 'ftp', 'mailto', 'tel' ],\n allowedSchemesByTag: {},\n allowedSchemesAppliedToAttributes: [ 'href', 'src', 'cite' ],\n allowProtocolRelative: true,\n enforceHtmlBoundary: false\n};\n\nsanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {\n merge = (merge === undefined) ? true : merge;\n newAttribs = newAttribs || {};\n\n return function(tagName, attribs) {\n let attrib;\n if (merge) {\n for (attrib in newAttribs) {\n attribs[attrib] = newAttribs[attrib];\n }\n } else {\n attribs = newAttribs;\n }\n\n return {\n tagName: newTagName,\n attribs: attribs\n };\n };\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n [\"altglyph\", \"altGlyph\"],\n [\"altglyphdef\", \"altGlyphDef\"],\n [\"altglyphitem\", \"altGlyphItem\"],\n [\"animatecolor\", \"animateColor\"],\n [\"animatemotion\", \"animateMotion\"],\n [\"animatetransform\", \"animateTransform\"],\n [\"clippath\", \"clipPath\"],\n [\"feblend\", \"feBlend\"],\n [\"fecolormatrix\", \"feColorMatrix\"],\n [\"fecomponenttransfer\", \"feComponentTransfer\"],\n [\"fecomposite\", \"feComposite\"],\n [\"feconvolvematrix\", \"feConvolveMatrix\"],\n [\"fediffuselighting\", \"feDiffuseLighting\"],\n [\"fedisplacementmap\", \"feDisplacementMap\"],\n [\"fedistantlight\", \"feDistantLight\"],\n [\"fedropshadow\", \"feDropShadow\"],\n [\"feflood\", \"feFlood\"],\n [\"fefunca\", \"feFuncA\"],\n [\"fefuncb\", \"feFuncB\"],\n [\"fefuncg\", \"feFuncG\"],\n [\"fefuncr\", \"feFuncR\"],\n [\"fegaussianblur\", \"feGaussianBlur\"],\n [\"feimage\", \"feImage\"],\n [\"femerge\", \"feMerge\"],\n [\"femergenode\", \"feMergeNode\"],\n [\"femorphology\", \"feMorphology\"],\n [\"feoffset\", \"feOffset\"],\n [\"fepointlight\", \"fePointLight\"],\n [\"fespecularlighting\", \"feSpecularLighting\"],\n [\"fespotlight\", \"feSpotLight\"],\n [\"fetile\", \"feTile\"],\n [\"feturbulence\", \"feTurbulence\"],\n [\"foreignobject\", \"foreignObject\"],\n [\"glyphref\", \"glyphRef\"],\n [\"lineargradient\", \"linearGradient\"],\n [\"radialgradient\", \"radialGradient\"],\n [\"textpath\", \"textPath\"],\n]);\nexports.attributeNames = new Map([\n [\"definitionurl\", \"definitionURL\"],\n [\"attributename\", \"attributeName\"],\n [\"attributetype\", \"attributeType\"],\n [\"basefrequency\", \"baseFrequency\"],\n [\"baseprofile\", \"baseProfile\"],\n [\"calcmode\", \"calcMode\"],\n [\"clippathunits\", \"clipPathUnits\"],\n [\"diffuseconstant\", \"diffuseConstant\"],\n [\"edgemode\", \"edgeMode\"],\n [\"filterunits\", \"filterUnits\"],\n [\"glyphref\", \"glyphRef\"],\n [\"gradienttransform\", \"gradientTransform\"],\n [\"gradientunits\", \"gradientUnits\"],\n [\"kernelmatrix\", \"kernelMatrix\"],\n [\"kernelunitlength\", \"kernelUnitLength\"],\n [\"keypoints\", \"keyPoints\"],\n [\"keysplines\", \"keySplines\"],\n [\"keytimes\", \"keyTimes\"],\n [\"lengthadjust\", \"lengthAdjust\"],\n [\"limitingconeangle\", \"limitingConeAngle\"],\n [\"markerheight\", \"markerHeight\"],\n [\"markerunits\", \"markerUnits\"],\n [\"markerwidth\", \"markerWidth\"],\n [\"maskcontentunits\", \"maskContentUnits\"],\n [\"maskunits\", \"maskUnits\"],\n [\"numoctaves\", \"numOctaves\"],\n [\"pathlength\", \"pathLength\"],\n [\"patterncontentunits\", \"patternContentUnits\"],\n [\"patterntransform\", \"patternTransform\"],\n [\"patternunits\", \"patternUnits\"],\n [\"pointsatx\", \"pointsAtX\"],\n [\"pointsaty\", \"pointsAtY\"],\n [\"pointsatz\", \"pointsAtZ\"],\n [\"preservealpha\", \"preserveAlpha\"],\n [\"preserveaspectratio\", \"preserveAspectRatio\"],\n [\"primitiveunits\", \"primitiveUnits\"],\n [\"refx\", \"refX\"],\n [\"refy\", \"refY\"],\n [\"repeatcount\", \"repeatCount\"],\n [\"repeatdur\", \"repeatDur\"],\n [\"requiredextensions\", \"requiredExtensions\"],\n [\"requiredfeatures\", \"requiredFeatures\"],\n [\"specularconstant\", \"specularConstant\"],\n [\"specularexponent\", \"specularExponent\"],\n [\"spreadmethod\", \"spreadMethod\"],\n [\"startoffset\", \"startOffset\"],\n [\"stddeviation\", \"stdDeviation\"],\n [\"stitchtiles\", \"stitchTiles\"],\n [\"surfacescale\", \"surfaceScale\"],\n [\"systemlanguage\", \"systemLanguage\"],\n [\"tablevalues\", \"tableValues\"],\n [\"targetx\", \"targetX\"],\n [\"targety\", \"targetY\"],\n [\"textlength\", \"textLength\"],\n [\"viewbox\", \"viewBox\"],\n [\"viewtarget\", \"viewTarget\"],\n [\"xchannelselector\", \"xChannelSelector\"],\n [\"ychannelselector\", \"yChannelSelector\"],\n [\"zoomandpan\", \"zoomAndPan\"],\n]);\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_1 = require(\"./foreignNames\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n if (!attributes)\n return;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return key + \"=\\\"\" + (opts.decodeEntities !== false\n ? entities_1.encodeXML(value)\n : value.replace(/\"/g, \"&quot;\")) + \"\\\"\";\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n case ElementType.Directive:\n case ElementType.Doctype:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\" + elem.name;\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \" + attribs;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"</\" + elem.name + \">\";\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\" + elem.data + \">\";\n}\nfunction renderText(elem, opts) {\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (opts.decodeEntities !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data = entities_1.encodeXML(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"<![CDATA[\" + elem.children[0].data + \"]]>\";\n}\nfunction renderComment(elem) {\n return \"<!--\" + elem.data + \"-->\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType = exports.ElementType || (exports.ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nfunction isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\nexports.isTag = isTag;\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexports.Root = ElementType.Root;\n/** Type for Text */\nexports.Text = ElementType.Text;\n/** Type for <? ... ?> */\nexports.Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexports.Comment = ElementType.Comment;\n/** Type for <script> tags */\nexports.Script = ElementType.Script;\n/** Type for <style> tags */\nexports.Style = ElementType.Style;\n/** Type for Any tag */\nexports.Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexports.CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexports.Doctype = ElementType.Doctype;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomHandler = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar node_1 = require(\"./node\");\n__exportStar(require(\"./node\"), exports);\nvar reWhitespace = /\\s+/g;\n// Default options\nvar defaultOpts = {\n normalizeWhitespace: false,\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nvar DomHandler = /** @class */ (function () {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n function DomHandler(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new node_1.Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n DomHandler.prototype.onparserinit = function (parser) {\n this.parser = parser;\n };\n // Resets the handler back to starting state\n DomHandler.prototype.onreset = function () {\n this.dom = [];\n this.root = new node_1.Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n };\n // Signals the handler that parsing is done\n DomHandler.prototype.onend = function () {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n };\n DomHandler.prototype.onerror = function (error) {\n this.handleCallback(error);\n };\n DomHandler.prototype.onclosetag = function () {\n this.lastNode = null;\n var elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n };\n DomHandler.prototype.onopentag = function (name, attribs) {\n var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;\n var element = new node_1.Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n };\n DomHandler.prototype.ontext = function (data) {\n var normalizeWhitespace = this.options.normalizeWhitespace;\n var lastNode = this.lastNode;\n if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n if (normalizeWhitespace) {\n lastNode.data = (lastNode.data + data).replace(reWhitespace, \" \");\n }\n else {\n lastNode.data += data;\n }\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n if (normalizeWhitespace) {\n data = data.replace(reWhitespace, \" \");\n }\n var node = new node_1.Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n };\n DomHandler.prototype.oncomment = function (data) {\n if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n var node = new node_1.Comment(data);\n this.addNode(node);\n this.lastNode = node;\n };\n DomHandler.prototype.oncommentend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.oncdatastart = function () {\n var text = new node_1.Text(\"\");\n var node = new node_1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n };\n DomHandler.prototype.oncdataend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.onprocessinginstruction = function (name, data) {\n var node = new node_1.ProcessingInstruction(name, data);\n this.addNode(node);\n };\n DomHandler.prototype.handleCallback = function (error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n };\n DomHandler.prototype.addNode = function (node) {\n var parent = this.tagStack[this.tagStack.length - 1];\n var previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n };\n return DomHandler;\n}());\nexports.DomHandler = DomHandler;\nexports.default = DomHandler;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar nodeTypes = new Map([\n [domelementtype_1.ElementType.Tag, 1],\n [domelementtype_1.ElementType.Script, 1],\n [domelementtype_1.ElementType.Style, 1],\n [domelementtype_1.ElementType.Directive, 1],\n [domelementtype_1.ElementType.Text, 3],\n [domelementtype_1.ElementType.CDATA, 4],\n [domelementtype_1.ElementType.Comment, 8],\n [domelementtype_1.ElementType.Root, 9],\n]);\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nvar Node = /** @class */ (function () {\n /**\n *\n * @param type The type of the node.\n */\n function Node(type) {\n this.type = type;\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n Object.defineProperty(Node.prototype, \"nodeType\", {\n // Read-only aliases\n /**\n * [DOM spec](https://dom.spec.whatwg.org/#dom-node-nodetype)-compatible\n * node {@link type}.\n */\n get: function () {\n var _a;\n return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"parentNode\", {\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.parent;\n },\n set: function (parent) {\n this.parent = parent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"previousSibling\", {\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.prev;\n },\n set: function (prev) {\n this.prev = prev;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.next;\n },\n set: function (next) {\n this.next = next;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n Node.prototype.cloneNode = function (recursive) {\n if (recursive === void 0) { recursive = false; }\n return cloneNode(this, recursive);\n };\n return Node;\n}());\nexports.Node = Node;\n/**\n * A node that contains some data.\n */\nvar DataNode = /** @class */ (function (_super) {\n __extends(DataNode, _super);\n /**\n * @param type The type of the node\n * @param data The content of the data node\n */\n function DataNode(type, data) {\n var _this = _super.call(this, type) || this;\n _this.data = data;\n return _this;\n }\n Object.defineProperty(DataNode.prototype, \"nodeValue\", {\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.data;\n },\n set: function (data) {\n this.data = data;\n },\n enumerable: false,\n configurable: true\n });\n return DataNode;\n}(Node));\nexports.DataNode = DataNode;\n/**\n * Text within the document.\n */\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text(data) {\n return _super.call(this, domelementtype_1.ElementType.Text, data) || this;\n }\n return Text;\n}(DataNode));\nexports.Text = Text;\n/**\n * Comments within the document.\n */\nvar Comment = /** @class */ (function (_super) {\n __extends(Comment, _super);\n function Comment(data) {\n return _super.call(this, domelementtype_1.ElementType.Comment, data) || this;\n }\n return Comment;\n}(DataNode));\nexports.Comment = Comment;\n/**\n * Processing instructions, including doc types.\n */\nvar ProcessingInstruction = /** @class */ (function (_super) {\n __extends(ProcessingInstruction, _super);\n function ProcessingInstruction(name, data) {\n var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this;\n _this.name = name;\n return _this;\n }\n return ProcessingInstruction;\n}(DataNode));\nexports.ProcessingInstruction = ProcessingInstruction;\n/**\n * A `Node` that can have children.\n */\nvar NodeWithChildren = /** @class */ (function (_super) {\n __extends(NodeWithChildren, _super);\n /**\n * @param type Type of the node.\n * @param children Children of the node. Only certain node types can have children.\n */\n function NodeWithChildren(type, children) {\n var _this = _super.call(this, type) || this;\n _this.children = children;\n return _this;\n }\n Object.defineProperty(NodeWithChildren.prototype, \"firstChild\", {\n // Aliases\n /** First child of the node. */\n get: function () {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"lastChild\", {\n /** Last child of the node. */\n get: function () {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"childNodes\", {\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.children;\n },\n set: function (children) {\n this.children = children;\n },\n enumerable: false,\n configurable: true\n });\n return NodeWithChildren;\n}(Node));\nexports.NodeWithChildren = NodeWithChildren;\n/**\n * The root node of the document.\n */\nvar Document = /** @class */ (function (_super) {\n __extends(Document, _super);\n function Document(children) {\n return _super.call(this, domelementtype_1.ElementType.Root, children) || this;\n }\n return Document;\n}(NodeWithChildren));\nexports.Document = Document;\n/**\n * An element within the DOM.\n */\nvar Element = /** @class */ (function (_super) {\n __extends(Element, _super);\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n function Element(name, attribs, children, type) {\n if (children === void 0) { children = []; }\n if (type === void 0) { type = name === \"script\"\n ? domelementtype_1.ElementType.Script\n : name === \"style\"\n ? domelementtype_1.ElementType.Style\n : domelementtype_1.ElementType.Tag; }\n var _this = _super.call(this, type, children) || this;\n _this.name = name;\n _this.attribs = attribs;\n return _this;\n }\n Object.defineProperty(Element.prototype, \"tagName\", {\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.name;\n },\n set: function (name) {\n this.name = name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"attributes\", {\n get: function () {\n var _this = this;\n return Object.keys(this.attribs).map(function (name) {\n var _a, _b;\n return ({\n name: name,\n value: _this.attribs[name],\n namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n },\n enumerable: false,\n configurable: true\n });\n return Element;\n}(NodeWithChildren));\nexports.Element = Element;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nfunction isTag(node) {\n return (0, domelementtype_1.isTag)(node);\n}\nexports.isTag = isTag;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nfunction isCDATA(node) {\n return node.type === domelementtype_1.ElementType.CDATA;\n}\nexports.isCDATA = isCDATA;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nfunction isText(node) {\n return node.type === domelementtype_1.ElementType.Text;\n}\nexports.isText = isText;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nfunction isComment(node) {\n return node.type === domelementtype_1.ElementType.Comment;\n}\nexports.isComment = isComment;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDirective(node) {\n return node.type === domelementtype_1.ElementType.Directive;\n}\nexports.isDirective = isDirective;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDocument(node) {\n return node.type === domelementtype_1.ElementType.Root;\n}\nexports.isDocument = isDocument;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `NodeWithChildren` (has children), `false` otherwise.\n */\nfunction hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nexports.hasChildren = hasChildren;\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nfunction cloneNode(node, recursive) {\n if (recursive === void 0) { recursive = false; }\n var result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_1 = new Element(node.name, __assign({}, node.attribs), children);\n children.forEach(function (child) { return (child.parent = clone_1); });\n if (node.namespace != null) {\n clone_1.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone_1[\"x-attribsNamespace\"] = __assign({}, node[\"x-attribsNamespace\"]);\n }\n if (node[\"x-attribsPrefix\"]) {\n clone_1[\"x-attribsPrefix\"] = __assign({}, node[\"x-attribsPrefix\"]);\n }\n result = clone_1;\n }\n else if (isCDATA(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children);\n children.forEach(function (child) { return (child.parent = clone_2); });\n result = clone_2;\n }\n else if (isDocument(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_3 = new Document(children);\n children.forEach(function (child) { return (child.parent = clone_3); });\n if (node[\"x-mode\"]) {\n clone_3[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone_3;\n }\n else if (isDirective(node)) {\n var instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(\"Not implemented yet: \".concat(node.type));\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nexports.cloneNode = cloneNode;\nfunction cloneChildren(childs) {\n var children = childs.map(function (child) { return cloneNode(child, true); });\n for (var i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFeed = void 0;\nvar stringify_1 = require(\"./stringify\");\nvar legacy_1 = require(\"./legacy\");\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nfunction getFeed(doc) {\n var feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\nexports.getFeed = getFeed;\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n var childs = feedRoot.children;\n var feed = {\n type: \"atom\",\n items: (0, legacy_1.getElementsByTagName)(\"entry\", childs).map(function (item) {\n var _a;\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n var href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs.href;\n if (href) {\n entry.link = href;\n }\n var description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n var pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n var href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs.href;\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n var updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n var childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n var feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: (0, legacy_1.getElementsByTagName)(\"item\", feedRoot.children).map(function (item) {\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n var pubDate = fetch(\"pubDate\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n var updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nvar MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nvar MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return (0, legacy_1.getElementsByTagName)(\"media:content\", where).map(function (elem) {\n var attribs = elem.attribs;\n var media = {\n medium: attribs.medium,\n isDefault: !!attribs.isDefault,\n };\n for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING; _i < MEDIA_KEYS_STRING_1.length; _i++) {\n var attrib = MEDIA_KEYS_STRING_1[_i];\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT; _a < MEDIA_KEYS_INT_1.length; _a++) {\n var attrib = MEDIA_KEYS_INT_1[_a];\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs.expression) {\n media.expression =\n attribs.expression;\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return (0, legacy_1.getElementsByTagName)(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n return (0, stringify_1.textContent)((0, legacy_1.getElementsByTagName)(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n var val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uniqueSort = exports.compareDocumentPosition = exports.removeSubsets = void 0;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Given an array of nodes, remove any member that is contained by another.\n *\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't subtrees of each other.\n */\nfunction removeSubsets(nodes) {\n var idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n var node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\nexports.removeSubsets = removeSubsets;\n/**\n * Compare the position of one node against another node in any other document.\n * The return value is a bitmask with the following values:\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent./\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nfunction compareDocumentPosition(nodeA, nodeB) {\n var aParents = [];\n var bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n var maxIdx = Math.min(aParents.length, bParents.length);\n var idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return 1 /* DISCONNECTED */;\n }\n var sharedParent = aParents[idx - 1];\n var siblings = sharedParent.children;\n var aSibling = aParents[idx];\n var bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return 4 /* FOLLOWING */ | 16 /* CONTAINED_BY */;\n }\n return 4 /* FOLLOWING */;\n }\n if (sharedParent === nodeA) {\n return 2 /* PRECEDING */ | 8 /* CONTAINS */;\n }\n return 2 /* PRECEDING */;\n}\nexports.compareDocumentPosition = compareDocumentPosition;\n/**\n * Sort an array of nodes based on their relative position in the document and\n * remove any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nfunction uniqueSort(nodes) {\n nodes = nodes.filter(function (node, i, arr) { return !arr.includes(node, i + 1); });\n nodes.sort(function (a, b) {\n var relative = compareDocumentPosition(a, b);\n if (relative & 2 /* PRECEDING */) {\n return -1;\n }\n else if (relative & 4 /* FOLLOWING */) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\nexports.uniqueSort = uniqueSort;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasChildren = exports.isDocument = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = void 0;\n__exportStar(require(\"./stringify\"), exports);\n__exportStar(require(\"./traversal\"), exports);\n__exportStar(require(\"./manipulation\"), exports);\n__exportStar(require(\"./querying\"), exports);\n__exportStar(require(\"./legacy\"), exports);\n__exportStar(require(\"./helpers\"), exports);\n__exportStar(require(\"./feeds\"), exports);\n/** @deprecated Use these methods from `domhandler` directly. */\nvar domhandler_1 = require(\"domhandler\");\nObject.defineProperty(exports, \"isTag\", { enumerable: true, get: function () { return domhandler_1.isTag; } });\nObject.defineProperty(exports, \"isCDATA\", { enumerable: true, get: function () { return domhandler_1.isCDATA; } });\nObject.defineProperty(exports, \"isText\", { enumerable: true, get: function () { return domhandler_1.isText; } });\nObject.defineProperty(exports, \"isComment\", { enumerable: true, get: function () { return domhandler_1.isComment; } });\nObject.defineProperty(exports, \"isDocument\", { enumerable: true, get: function () { return domhandler_1.isDocument; } });\nObject.defineProperty(exports, \"hasChildren\", { enumerable: true, get: function () { return domhandler_1.hasChildren; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getElementsByTagType = exports.getElementsByTagName = exports.getElementById = exports.getElements = exports.testElement = void 0;\nvar domhandler_1 = require(\"domhandler\");\nvar querying_1 = require(\"./querying\");\nvar Checks = {\n tag_name: function (name) {\n if (typeof name === \"function\") {\n return function (elem) { return (0, domhandler_1.isTag)(elem) && name(elem.name); };\n }\n else if (name === \"*\") {\n return domhandler_1.isTag;\n }\n return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.name === name; };\n },\n tag_type: function (type) {\n if (typeof type === \"function\") {\n return function (elem) { return type(elem.type); };\n }\n return function (elem) { return elem.type === type; };\n },\n tag_contains: function (data) {\n if (typeof data === \"function\") {\n return function (elem) { return (0, domhandler_1.isText)(elem) && data(elem.data); };\n }\n return function (elem) { return (0, domhandler_1.isText)(elem) && elem.data === data; };\n },\n};\n/**\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return function (elem) { return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]); };\n }\n return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value; };\n}\n/**\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either\n * of the input functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return function (elem) { return a(elem) || b(elem); };\n}\n/**\n * @param options An object describing nodes to look for.\n * @returns A function executing all checks in `options` and returning `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n var funcs = Object.keys(options).map(function (key) {\n var value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nfunction testElement(options, node) {\n var test = compileTest(options);\n return test ? test(node) : true;\n}\nexports.testElement = testElement;\n/**\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nfunction getElements(options, nodes, recurse, limit) {\n if (limit === void 0) { limit = Infinity; }\n var test = compileTest(options);\n return test ? (0, querying_1.filter)(test, nodes, recurse, limit) : [];\n}\nexports.getElements = getElements;\n/**\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nfunction getElementById(id, nodes, recurse) {\n if (recurse === void 0) { recurse = true; }\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return (0, querying_1.findOne)(getAttribCheck(\"id\", id), nodes, recurse);\n}\nexports.getElementById = getElementById;\n/**\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nfunction getElementsByTagName(tagName, nodes, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return (0, querying_1.filter)(Checks.tag_name(tagName), nodes, recurse, limit);\n}\nexports.getElementsByTagName = getElementsByTagName;\n/**\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nfunction getElementsByTagType(type, nodes, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return (0, querying_1.filter)(Checks.tag_type(type), nodes, recurse, limit);\n}\nexports.getElementsByTagType = getElementsByTagType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepend = exports.prependChild = exports.append = exports.appendChild = exports.replaceElement = exports.removeElement = void 0;\n/**\n * Remove an element from the dom\n *\n * @param elem The element to be removed\n */\nfunction removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n var childs = elem.parent.children;\n childs.splice(childs.lastIndexOf(elem), 1);\n }\n}\nexports.removeElement = removeElement;\n/**\n * Replace an element in the dom\n *\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nfunction replaceElement(elem, replacement) {\n var prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n var next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n var parent = (replacement.parent = elem.parent);\n if (parent) {\n var childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n }\n}\nexports.replaceElement = replaceElement;\n/**\n * Append a child to an element.\n *\n * @param elem The element to append to.\n * @param child The element to be added as a child.\n */\nfunction appendChild(elem, child) {\n removeElement(child);\n child.next = null;\n child.parent = elem;\n if (elem.children.push(child) > 1) {\n var sibling = elem.children[elem.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\nexports.appendChild = appendChild;\n/**\n * Append an element after another.\n *\n * @param elem The element to append after.\n * @param next The element be added.\n */\nfunction append(elem, next) {\n removeElement(next);\n var parent = elem.parent;\n var currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n var childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\nexports.append = append;\n/**\n * Prepend a child to an element.\n *\n * @param elem The element to prepend before.\n * @param child The element to be added as a child.\n */\nfunction prependChild(elem, child) {\n removeElement(child);\n child.parent = elem;\n child.prev = null;\n if (elem.children.unshift(child) !== 1) {\n var sibling = elem.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\nexports.prependChild = prependChild;\n/**\n * Prepend an element before another.\n *\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nfunction prepend(elem, prev) {\n removeElement(prev);\n var parent = elem.parent;\n if (parent) {\n var childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\nexports.prepend = prepend;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findAll = exports.existsOne = exports.findOne = exports.findOneChild = exports.find = exports.filter = void 0;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Search a node and its children for nodes passing a test function.\n *\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction filter(test, node, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n if (!Array.isArray(node))\n node = [node];\n return find(test, node, recurse, limit);\n}\nexports.filter = filter;\n/**\n * Search an array of node and its children for nodes passing a test function.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction find(test, nodes, recurse, limit) {\n var result = [];\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var elem = nodes_1[_i];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n break;\n }\n if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) {\n var children = find(test, elem.children, recurse, limit);\n result.push.apply(result, children);\n limit -= children.length;\n if (limit <= 0)\n break;\n }\n }\n return result;\n}\nexports.find = find;\n/**\n * Finds the first element inside of an array that matches a test function.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n */\nfunction findOneChild(test, nodes) {\n return nodes.find(test);\n}\nexports.findOneChild = findOneChild;\n/**\n * Finds one element in a tree that passes a test.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first child node that passes `test`.\n */\nfunction findOne(test, nodes, recurse) {\n if (recurse === void 0) { recurse = true; }\n var elem = null;\n for (var i = 0; i < nodes.length && !elem; i++) {\n var checked = nodes[i];\n if (!(0, domhandler_1.isTag)(checked)) {\n continue;\n }\n else if (test(checked)) {\n elem = checked;\n }\n else if (recurse && checked.children.length > 0) {\n elem = findOne(test, checked.children);\n }\n }\n return elem;\n}\nexports.findOne = findOne;\n/**\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing a test.\n */\nfunction existsOne(test, nodes) {\n return nodes.some(function (checked) {\n return (0, domhandler_1.isTag)(checked) &&\n (test(checked) ||\n (checked.children.length > 0 &&\n existsOne(test, checked.children)));\n });\n}\nexports.existsOne = existsOne;\n/**\n * Search and array of nodes and its children for nodes passing a test function.\n *\n * Same as `find`, only with less options, leading to reduced complexity.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nfunction findAll(test, nodes) {\n var _a;\n var result = [];\n var stack = nodes.filter(domhandler_1.isTag);\n var elem;\n while ((elem = stack.shift())) {\n var children = (_a = elem.children) === null || _a === void 0 ? void 0 : _a.filter(domhandler_1.isTag);\n if (children && children.length > 0) {\n stack.unshift.apply(stack, children);\n }\n if (test(elem))\n result.push(elem);\n }\n return result;\n}\nexports.findAll = findAll;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.innerText = exports.textContent = exports.getText = exports.getInnerHTML = exports.getOuterHTML = void 0;\nvar domhandler_1 = require(\"domhandler\");\nvar dom_serializer_1 = __importDefault(require(\"dom-serializer\"));\nvar domelementtype_1 = require(\"domelementtype\");\n/**\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @deprecated Use the `dom-serializer` module directly.\n * @returns `node`'s outer HTML.\n */\nfunction getOuterHTML(node, options) {\n return (0, dom_serializer_1.default)(node, options);\n}\nexports.getOuterHTML = getOuterHTML;\n/**\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @deprecated Use the `dom-serializer` module directly.\n * @returns `node`'s inner HTML.\n */\nfunction getInnerHTML(node, options) {\n return (0, domhandler_1.hasChildren)(node)\n ? node.children.map(function (node) { return getOuterHTML(node, options); }).join(\"\")\n : \"\";\n}\nexports.getInnerHTML = getInnerHTML;\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags.\n *\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nfunction getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if ((0, domhandler_1.isTag)(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if ((0, domhandler_1.isCDATA)(node))\n return getText(node.children);\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\nexports.getText = getText;\n/**\n * Get a node's text content.\n *\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nfunction textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) {\n return textContent(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\nexports.textContent = textContent;\n/**\n * Get a node's inner text.\n *\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nfunction innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) {\n return innerText(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\nexports.innerText = innerText;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prevElementSibling = exports.nextElementSibling = exports.getName = exports.hasAttrib = exports.getAttributeValue = exports.getSiblings = exports.getParent = exports.getChildren = void 0;\nvar domhandler_1 = require(\"domhandler\");\nvar emptyArray = [];\n/**\n * Get a node's children.\n *\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nfunction getChildren(elem) {\n var _a;\n return (_a = elem.children) !== null && _a !== void 0 ? _a : emptyArray;\n}\nexports.getChildren = getChildren;\n/**\n * Get a node's parent.\n *\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node.\n */\nfunction getParent(elem) {\n return elem.parent || null;\n}\nexports.getParent = getParent;\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first.\n * If we don't have a parent (the element is a root node),\n * we walk the element's `prev` & `next` to get all remaining nodes.\n *\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings.\n */\nfunction getSiblings(elem) {\n var _a, _b;\n var parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n var siblings = [elem];\n var prev = elem.prev, next = elem.next;\n while (prev != null) {\n siblings.unshift(prev);\n (_a = prev, prev = _a.prev);\n }\n while (next != null) {\n siblings.push(next);\n (_b = next, next = _b.next);\n }\n return siblings;\n}\nexports.getSiblings = getSiblings;\n/**\n * Gets an attribute from an element.\n *\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nfunction getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\nexports.getAttributeValue = getAttributeValue;\n/**\n * Checks whether an element has an attribute.\n *\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nfunction hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\nexports.hasAttrib = hasAttrib;\n/**\n * Get the tag name of an element.\n *\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nfunction getName(elem) {\n return elem.name;\n}\nexports.getName = getName;\n/**\n * Returns the next element sibling of a node.\n *\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag.\n */\nfunction nextElementSibling(elem) {\n var _a;\n var next = elem.next;\n while (next !== null && !(0, domhandler_1.isTag)(next))\n (_a = next, next = _a.next);\n return next;\n}\nexports.nextElementSibling = nextElementSibling;\n/**\n * Returns the previous element sibling of a node.\n *\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag.\n */\nfunction prevElementSibling(elem) {\n var _a;\n var prev = elem.prev;\n while (prev !== null && !(0, domhandler_1.isTag)(prev))\n (_a = prev, prev = _a.prev);\n return prev;\n}\nexports.prevElementSibling = prevElementSibling;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `&num;`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `&#xfc;`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseFeed = exports.FeedHandler = void 0;\nvar domhandler_1 = __importDefault(require(\"domhandler\"));\nvar DomUtils = __importStar(require(\"domutils\"));\nvar Parser_1 = require(\"./Parser\");\nvar FeedItemMediaMedium;\n(function (FeedItemMediaMedium) {\n FeedItemMediaMedium[FeedItemMediaMedium[\"image\"] = 0] = \"image\";\n FeedItemMediaMedium[FeedItemMediaMedium[\"audio\"] = 1] = \"audio\";\n FeedItemMediaMedium[FeedItemMediaMedium[\"video\"] = 2] = \"video\";\n FeedItemMediaMedium[FeedItemMediaMedium[\"document\"] = 3] = \"document\";\n FeedItemMediaMedium[FeedItemMediaMedium[\"executable\"] = 4] = \"executable\";\n})(FeedItemMediaMedium || (FeedItemMediaMedium = {}));\nvar FeedItemMediaExpression;\n(function (FeedItemMediaExpression) {\n FeedItemMediaExpression[FeedItemMediaExpression[\"sample\"] = 0] = \"sample\";\n FeedItemMediaExpression[FeedItemMediaExpression[\"full\"] = 1] = \"full\";\n FeedItemMediaExpression[FeedItemMediaExpression[\"nonstop\"] = 2] = \"nonstop\";\n})(FeedItemMediaExpression || (FeedItemMediaExpression = {}));\n// TODO: Consume data as it is coming in\nvar FeedHandler = /** @class */ (function (_super) {\n __extends(FeedHandler, _super);\n /**\n *\n * @param callback\n * @param options\n */\n function FeedHandler(callback, options) {\n var _this = this;\n if (typeof callback === \"object\") {\n callback = undefined;\n options = callback;\n }\n _this = _super.call(this, callback, options) || this;\n return _this;\n }\n FeedHandler.prototype.onend = function () {\n var _a, _b;\n var feedRoot = getOneElement(isValidFeed, this.dom);\n if (!feedRoot) {\n this.handleCallback(new Error(\"couldn't find root of feed\"));\n return;\n }\n var feed = {};\n if (feedRoot.name === \"feed\") {\n var childs = feedRoot.children;\n feed.type = \"atom\";\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n var href = getAttribute(\"href\", getOneElement(\"link\", childs));\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n var updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n feed.items = getElements(\"entry\", childs).map(function (item) {\n var entry = {};\n var children = item.children;\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n var href = getAttribute(\"href\", getOneElement(\"link\", children));\n if (href) {\n entry.link = href;\n }\n var description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n var pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n entry.media = getMediaElements(children);\n return entry;\n });\n }\n else {\n var childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n feed.type = feedRoot.name.substr(0, 3);\n feed.id = \"\";\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n var updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n feed.items = getElements(\"item\", feedRoot.children).map(function (item) {\n var entry = {};\n var children = item.children;\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n var pubDate = fetch(\"pubDate\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n entry.media = getMediaElements(children);\n return entry;\n });\n }\n this.feed = feed;\n this.handleCallback(null);\n };\n return FeedHandler;\n}(domhandler_1.default));\nexports.FeedHandler = FeedHandler;\nfunction getMediaElements(where) {\n return getElements(\"media:content\", where).map(function (elem) {\n var media = {\n medium: elem.attribs.medium,\n isDefault: !!elem.attribs.isDefault,\n };\n if (elem.attribs.url) {\n media.url = elem.attribs.url;\n }\n if (elem.attribs.fileSize) {\n media.fileSize = parseInt(elem.attribs.fileSize, 10);\n }\n if (elem.attribs.type) {\n media.type = elem.attribs.type;\n }\n if (elem.attribs.expression) {\n media.expression = elem.attribs\n .expression;\n }\n if (elem.attribs.bitrate) {\n media.bitrate = parseInt(elem.attribs.bitrate, 10);\n }\n if (elem.attribs.framerate) {\n media.framerate = parseInt(elem.attribs.framerate, 10);\n }\n if (elem.attribs.samplingrate) {\n media.samplingrate = parseInt(elem.attribs.samplingrate, 10);\n }\n if (elem.attribs.channels) {\n media.channels = parseInt(elem.attribs.channels, 10);\n }\n if (elem.attribs.duration) {\n media.duration = parseInt(elem.attribs.duration, 10);\n }\n if (elem.attribs.height) {\n media.height = parseInt(elem.attribs.height, 10);\n }\n if (elem.attribs.width) {\n media.width = parseInt(elem.attribs.width, 10);\n }\n if (elem.attribs.lang) {\n media.lang = elem.attribs.lang;\n }\n return media;\n });\n}\nfunction getElements(tagName, where) {\n return DomUtils.getElementsByTagName(tagName, where, true);\n}\nfunction getOneElement(tagName, node) {\n return DomUtils.getElementsByTagName(tagName, node, true, 1)[0];\n}\nfunction fetch(tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n return DomUtils.getText(DomUtils.getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\nfunction getAttribute(name, elem) {\n if (!elem) {\n return null;\n }\n var attribs = elem.attribs;\n return attribs[name];\n}\nfunction addConditionally(obj, prop, what, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n var tmp = fetch(what, where, recurse);\n if (tmp)\n obj[prop] = tmp;\n}\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this option, you should set `xmlMode` to `true`.\n */\nfunction parseFeed(feed, options) {\n if (options === void 0) { options = { xmlMode: true }; }\n var handler = new FeedHandler(options);\n new Parser_1.Parser(handler, options).end(feed);\n return handler.feed;\n}\nexports.parseFeed = parseFeed;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parser = void 0;\nvar Tokenizer_1 = __importDefault(require(\"./Tokenizer\"));\nvar formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nvar pTag = new Set([\"p\"]);\nvar openImpliesClose = {\n tr: new Set([\"tr\", \"th\", \"td\"]),\n th: new Set([\"th\"]),\n td: new Set([\"thead\", \"th\", \"td\"]),\n body: new Set([\"head\", \"link\", \"script\"]),\n li: new Set([\"li\"]),\n p: pTag,\n h1: pTag,\n h2: pTag,\n h3: pTag,\n h4: pTag,\n h5: pTag,\n h6: pTag,\n select: formTags,\n input: formTags,\n output: formTags,\n button: formTags,\n datalist: formTags,\n textarea: formTags,\n option: new Set([\"option\"]),\n optgroup: new Set([\"optgroup\", \"option\"]),\n dd: new Set([\"dt\", \"dd\"]),\n dt: new Set([\"dt\", \"dd\"]),\n address: pTag,\n article: pTag,\n aside: pTag,\n blockquote: pTag,\n details: pTag,\n div: pTag,\n dl: pTag,\n fieldset: pTag,\n figcaption: pTag,\n figure: pTag,\n footer: pTag,\n form: pTag,\n header: pTag,\n hr: pTag,\n main: pTag,\n nav: pTag,\n ol: pTag,\n pre: pTag,\n section: pTag,\n table: pTag,\n ul: pTag,\n rt: new Set([\"rt\", \"rp\"]),\n rp: new Set([\"rt\", \"rp\"]),\n tbody: new Set([\"thead\", \"tbody\"]),\n tfoot: new Set([\"thead\", \"tbody\"]),\n};\nvar voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nvar foreignContextElements = new Set([\"math\", \"svg\"]);\nvar htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar reNameEnd = /\\s|\\//;\nvar Parser = /** @class */ (function () {\n function Parser(cbs, options) {\n if (options === void 0) { options = {}; }\n var _a, _b, _c, _d, _e;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = null;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.foreignContext = [];\n this.options = options;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_1.default)(this.options, this);\n (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);\n }\n Parser.prototype.updatePosition = function (initialOffset) {\n if (this.endIndex === null) {\n if (this.tokenizer.sectionStart <= initialOffset) {\n this.startIndex = 0;\n }\n else {\n this.startIndex = this.tokenizer.sectionStart - initialOffset;\n }\n }\n else {\n this.startIndex = this.endIndex + 1;\n }\n this.endIndex = this.tokenizer.getAbsoluteIndex();\n };\n // Tokenizer event handlers\n Parser.prototype.ontext = function (data) {\n var _a, _b;\n this.updatePosition(1);\n this.endIndex--;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n };\n Parser.prototype.onopentagname = function (name) {\n var _a, _b;\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.tagname = name;\n if (!this.options.xmlMode &&\n Object.prototype.hasOwnProperty.call(openImpliesClose, name)) {\n var el = void 0;\n while (this.stack.length > 0 &&\n openImpliesClose[name].has((el = this.stack[this.stack.length - 1]))) {\n this.onclosetag(el);\n }\n }\n if (this.options.xmlMode || !voidElements.has(name)) {\n this.stack.push(name);\n if (foreignContextElements.has(name)) {\n this.foreignContext.push(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.push(false);\n }\n }\n (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n };\n Parser.prototype.onopentagend = function () {\n var _a, _b;\n this.updatePosition(1);\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs);\n this.attribs = null;\n }\n if (!this.options.xmlMode &&\n this.cbs.onclosetag &&\n voidElements.has(this.tagname)) {\n this.cbs.onclosetag(this.tagname);\n }\n this.tagname = \"\";\n };\n Parser.prototype.onclosetag = function (name) {\n this.updatePosition(1);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name)) {\n this.foreignContext.pop();\n }\n if (this.stack.length &&\n (this.options.xmlMode || !voidElements.has(name))) {\n var pos = this.stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this.cbs.onclosetag) {\n pos = this.stack.length - pos;\n while (pos--) {\n // We know the stack has sufficient elements.\n this.cbs.onclosetag(this.stack.pop());\n }\n }\n else\n this.stack.length = pos;\n }\n else if (name === \"p\" && !this.options.xmlMode) {\n this.onopentagname(name);\n this.closeCurrentTag();\n }\n }\n else if (!this.options.xmlMode && (name === \"br\" || name === \"p\")) {\n this.onopentagname(name);\n this.closeCurrentTag();\n }\n };\n Parser.prototype.onselfclosingtag = function () {\n if (this.options.xmlMode ||\n this.options.recognizeSelfClosing ||\n this.foreignContext[this.foreignContext.length - 1]) {\n this.closeCurrentTag();\n }\n else {\n this.onopentagend();\n }\n };\n Parser.prototype.closeCurrentTag = function () {\n var _a, _b;\n var name = this.tagname;\n this.onopentagend();\n /*\n * Self-closing tags will be on the top of the stack\n * (cheaper check than in onclosetag)\n */\n if (this.stack[this.stack.length - 1] === name) {\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name);\n this.stack.pop();\n }\n };\n Parser.prototype.onattribname = function (name) {\n if (this.lowerCaseAttributeNames) {\n name = name.toLowerCase();\n }\n this.attribname = name;\n };\n Parser.prototype.onattribdata = function (value) {\n this.attribvalue += value;\n };\n Parser.prototype.onattribend = function (quote) {\n var _a, _b;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribname = \"\";\n this.attribvalue = \"\";\n };\n Parser.prototype.getInstructionName = function (value) {\n var idx = value.search(reNameEnd);\n var name = idx < 0 ? value : value.substr(0, idx);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n };\n Parser.prototype.ondeclaration = function (value) {\n if (this.cbs.onprocessinginstruction) {\n var name_1 = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(\"!\" + name_1, \"!\" + value);\n }\n };\n Parser.prototype.onprocessinginstruction = function (value) {\n if (this.cbs.onprocessinginstruction) {\n var name_2 = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(\"?\" + name_2, \"?\" + value);\n }\n };\n Parser.prototype.oncomment = function (value) {\n var _a, _b, _c, _d;\n this.updatePosition(4);\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n };\n Parser.prototype.oncdata = function (value) {\n var _a, _b, _c, _d, _e, _f;\n this.updatePosition(1);\n if (this.options.xmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n this.oncomment(\"[CDATA[\" + value + \"]]\");\n }\n };\n Parser.prototype.onerror = function (err) {\n var _a, _b;\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n Parser.prototype.onend = function () {\n var _a, _b;\n if (this.cbs.onclosetag) {\n for (var i = this.stack.length; i > 0; this.cbs.onclosetag(this.stack[--i]))\n ;\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n Parser.prototype.reset = function () {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack = [];\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n };\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n Parser.prototype.parseComplete = function (data) {\n this.reset();\n this.end(data);\n };\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n Parser.prototype.write = function (chunk) {\n this.tokenizer.write(chunk);\n };\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n Parser.prototype.end = function (chunk) {\n this.tokenizer.end(chunk);\n };\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n Parser.prototype.pause = function () {\n this.tokenizer.pause();\n };\n /**\n * Resumes parsing after `pause` was called.\n */\n Parser.prototype.resume = function () {\n this.tokenizer.resume();\n };\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n Parser.prototype.parseChunk = function (chunk) {\n this.write(chunk);\n };\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n Parser.prototype.done = function (chunk) {\n this.end(chunk);\n };\n return Parser;\n}());\nexports.Parser = Parser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_codepoint_1 = __importDefault(require(\"entities/lib/decode_codepoint\"));\nvar entities_json_1 = __importDefault(require(\"entities/lib/maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"entities/lib/maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"entities/lib/maps/xml.json\"));\nfunction whitespace(c) {\n return c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\nfunction isASCIIAlpha(c) {\n return (c >= \"a\" && c <= \"z\") || (c >= \"A\" && c <= \"Z\");\n}\nfunction ifElseState(upper, SUCCESS, FAILURE) {\n var lower = upper.toLowerCase();\n if (upper === lower) {\n return function (t, c) {\n if (c === lower) {\n t._state = SUCCESS;\n }\n else {\n t._state = FAILURE;\n t._index--;\n }\n };\n }\n return function (t, c) {\n if (c === lower || c === upper) {\n t._state = SUCCESS;\n }\n else {\n t._state = FAILURE;\n t._index--;\n }\n };\n}\nfunction consumeSpecialNameChar(upper, NEXT_STATE) {\n var lower = upper.toLowerCase();\n return function (t, c) {\n if (c === lower || c === upper) {\n t._state = NEXT_STATE;\n }\n else {\n t._state = 3 /* InTagName */;\n t._index--; // Consume the token again\n }\n };\n}\nvar stateBeforeCdata1 = ifElseState(\"C\", 24 /* BeforeCdata2 */, 16 /* InDeclaration */);\nvar stateBeforeCdata2 = ifElseState(\"D\", 25 /* BeforeCdata3 */, 16 /* InDeclaration */);\nvar stateBeforeCdata3 = ifElseState(\"A\", 26 /* BeforeCdata4 */, 16 /* InDeclaration */);\nvar stateBeforeCdata4 = ifElseState(\"T\", 27 /* BeforeCdata5 */, 16 /* InDeclaration */);\nvar stateBeforeCdata5 = ifElseState(\"A\", 28 /* BeforeCdata6 */, 16 /* InDeclaration */);\nvar stateBeforeScript1 = consumeSpecialNameChar(\"R\", 35 /* BeforeScript2 */);\nvar stateBeforeScript2 = consumeSpecialNameChar(\"I\", 36 /* BeforeScript3 */);\nvar stateBeforeScript3 = consumeSpecialNameChar(\"P\", 37 /* BeforeScript4 */);\nvar stateBeforeScript4 = consumeSpecialNameChar(\"T\", 38 /* BeforeScript5 */);\nvar stateAfterScript1 = ifElseState(\"R\", 40 /* AfterScript2 */, 1 /* Text */);\nvar stateAfterScript2 = ifElseState(\"I\", 41 /* AfterScript3 */, 1 /* Text */);\nvar stateAfterScript3 = ifElseState(\"P\", 42 /* AfterScript4 */, 1 /* Text */);\nvar stateAfterScript4 = ifElseState(\"T\", 43 /* AfterScript5 */, 1 /* Text */);\nvar stateBeforeStyle1 = consumeSpecialNameChar(\"Y\", 45 /* BeforeStyle2 */);\nvar stateBeforeStyle2 = consumeSpecialNameChar(\"L\", 46 /* BeforeStyle3 */);\nvar stateBeforeStyle3 = consumeSpecialNameChar(\"E\", 47 /* BeforeStyle4 */);\nvar stateAfterStyle1 = ifElseState(\"Y\", 49 /* AfterStyle2 */, 1 /* Text */);\nvar stateAfterStyle2 = ifElseState(\"L\", 50 /* AfterStyle3 */, 1 /* Text */);\nvar stateAfterStyle3 = ifElseState(\"E\", 51 /* AfterStyle4 */, 1 /* Text */);\nvar stateBeforeSpecialT = consumeSpecialNameChar(\"I\", 54 /* BeforeTitle1 */);\nvar stateBeforeTitle1 = consumeSpecialNameChar(\"T\", 55 /* BeforeTitle2 */);\nvar stateBeforeTitle2 = consumeSpecialNameChar(\"L\", 56 /* BeforeTitle3 */);\nvar stateBeforeTitle3 = consumeSpecialNameChar(\"E\", 57 /* BeforeTitle4 */);\nvar stateAfterSpecialTEnd = ifElseState(\"I\", 58 /* AfterTitle1 */, 1 /* Text */);\nvar stateAfterTitle1 = ifElseState(\"T\", 59 /* AfterTitle2 */, 1 /* Text */);\nvar stateAfterTitle2 = ifElseState(\"L\", 60 /* AfterTitle3 */, 1 /* Text */);\nvar stateAfterTitle3 = ifElseState(\"E\", 61 /* AfterTitle4 */, 1 /* Text */);\nvar stateBeforeEntity = ifElseState(\"#\", 63 /* BeforeNumericEntity */, 64 /* InNamedEntity */);\nvar stateBeforeNumericEntity = ifElseState(\"X\", 66 /* InHexEntity */, 65 /* InNumericEntity */);\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(options, cbs) {\n var _a;\n /** The current state the tokenizer is in. */\n this._state = 1 /* Text */;\n /** The read buffer. */\n this.buffer = \"\";\n /** The beginning of the section that is currently being read. */\n this.sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n this._index = 0;\n /**\n * Data that has already been processed will be removed from the buffer occasionally.\n * `_bufferOffset` keeps track of how many characters have been removed, to make sure position information is accurate.\n */\n this.bufferOffset = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n this.baseState = 1 /* Text */;\n /** For special parsing behavior inside of script and style tags. */\n this.special = 1 /* None */;\n /** Indicates whether the tokenizer has been paused. */\n this.running = true;\n /** Indicates whether the tokenizer has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs;\n this.xmlMode = !!(options === null || options === void 0 ? void 0 : options.xmlMode);\n this.decodeEntities = (_a = options === null || options === void 0 ? void 0 : options.decodeEntities) !== null && _a !== void 0 ? _a : true;\n }\n Tokenizer.prototype.reset = function () {\n this._state = 1 /* Text */;\n this.buffer = \"\";\n this.sectionStart = 0;\n this._index = 0;\n this.bufferOffset = 0;\n this.baseState = 1 /* Text */;\n this.special = 1 /* None */;\n this.running = true;\n this.ended = false;\n };\n Tokenizer.prototype.write = function (chunk) {\n if (this.ended)\n this.cbs.onerror(Error(\".write() after done!\"));\n this.buffer += chunk;\n this.parse();\n };\n Tokenizer.prototype.end = function (chunk) {\n if (this.ended)\n this.cbs.onerror(Error(\".end() after done!\"));\n if (chunk)\n this.write(chunk);\n this.ended = true;\n if (this.running)\n this.finish();\n };\n Tokenizer.prototype.pause = function () {\n this.running = false;\n };\n Tokenizer.prototype.resume = function () {\n this.running = true;\n if (this._index < this.buffer.length) {\n this.parse();\n }\n if (this.ended) {\n this.finish();\n }\n };\n /**\n * The current index within all of the written data.\n */\n Tokenizer.prototype.getAbsoluteIndex = function () {\n return this.bufferOffset + this._index;\n };\n Tokenizer.prototype.stateText = function (c) {\n if (c === \"<\") {\n if (this._index > this.sectionStart) {\n this.cbs.ontext(this.getSection());\n }\n this._state = 2 /* BeforeTagName */;\n this.sectionStart = this._index;\n }\n else if (this.decodeEntities &&\n c === \"&\" &&\n (this.special === 1 /* None */ || this.special === 4 /* Title */)) {\n if (this._index > this.sectionStart) {\n this.cbs.ontext(this.getSection());\n }\n this.baseState = 1 /* Text */;\n this._state = 62 /* BeforeEntity */;\n this.sectionStart = this._index;\n }\n };\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n Tokenizer.prototype.isTagStartChar = function (c) {\n return (isASCIIAlpha(c) ||\n (this.xmlMode && !whitespace(c) && c !== \"/\" && c !== \">\"));\n };\n Tokenizer.prototype.stateBeforeTagName = function (c) {\n if (c === \"/\") {\n this._state = 5 /* BeforeClosingTagName */;\n }\n else if (c === \"<\") {\n this.cbs.ontext(this.getSection());\n this.sectionStart = this._index;\n }\n else if (c === \">\" ||\n this.special !== 1 /* None */ ||\n whitespace(c)) {\n this._state = 1 /* Text */;\n }\n else if (c === \"!\") {\n this._state = 15 /* BeforeDeclaration */;\n this.sectionStart = this._index + 1;\n }\n else if (c === \"?\") {\n this._state = 17 /* InProcessingInstruction */;\n this.sectionStart = this._index + 1;\n }\n else if (!this.isTagStartChar(c)) {\n this._state = 1 /* Text */;\n }\n else {\n this._state =\n !this.xmlMode && (c === \"s\" || c === \"S\")\n ? 32 /* BeforeSpecialS */\n : !this.xmlMode && (c === \"t\" || c === \"T\")\n ? 52 /* BeforeSpecialT */\n : 3 /* InTagName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInTagName = function (c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this.emitToken(\"onopentagname\");\n this._state = 8 /* BeforeAttributeName */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateBeforeClosingTagName = function (c) {\n if (whitespace(c)) {\n // Ignore\n }\n else if (c === \">\") {\n this._state = 1 /* Text */;\n }\n else if (this.special !== 1 /* None */) {\n if (this.special !== 4 /* Title */ && (c === \"s\" || c === \"S\")) {\n this._state = 33 /* BeforeSpecialSEnd */;\n }\n else if (this.special === 4 /* Title */ &&\n (c === \"t\" || c === \"T\")) {\n this._state = 53 /* BeforeSpecialTEnd */;\n }\n else {\n this._state = 1 /* Text */;\n this._index--;\n }\n }\n else if (!this.isTagStartChar(c)) {\n this._state = 20 /* InSpecialComment */;\n this.sectionStart = this._index;\n }\n else {\n this._state = 6 /* InClosingTagName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInClosingTagName = function (c) {\n if (c === \">\" || whitespace(c)) {\n this.emitToken(\"onclosetag\");\n this._state = 7 /* AfterClosingTagName */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateAfterClosingTagName = function (c) {\n // Skip everything until \">\"\n if (c === \">\") {\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeName = function (c) {\n if (c === \">\") {\n this.cbs.onopentagend();\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n else if (c === \"/\") {\n this._state = 4 /* InSelfClosingTag */;\n }\n else if (!whitespace(c)) {\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInSelfClosingTag = function (c) {\n if (c === \">\") {\n this.cbs.onselfclosingtag();\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n this.special = 1 /* None */; // Reset special state, in case of self-closing special tags\n }\n else if (!whitespace(c)) {\n this._state = 8 /* BeforeAttributeName */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateInAttributeName = function (c) {\n if (c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)) {\n this.cbs.onattribname(this.getSection());\n this.sectionStart = -1;\n this._state = 10 /* AfterAttributeName */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateAfterAttributeName = function (c) {\n if (c === \"=\") {\n this._state = 11 /* BeforeAttributeValue */;\n }\n else if (c === \"/\" || c === \">\") {\n this.cbs.onattribend(undefined);\n this._state = 8 /* BeforeAttributeName */;\n this._index--;\n }\n else if (!whitespace(c)) {\n this.cbs.onattribend(undefined);\n this._state = 9 /* InAttributeName */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeValue = function (c) {\n if (c === '\"') {\n this._state = 12 /* InAttributeValueDq */;\n this.sectionStart = this._index + 1;\n }\n else if (c === \"'\") {\n this._state = 13 /* InAttributeValueSq */;\n this.sectionStart = this._index + 1;\n }\n else if (!whitespace(c)) {\n this._state = 14 /* InAttributeValueNq */;\n this.sectionStart = this._index;\n this._index--; // Reconsume token\n }\n };\n Tokenizer.prototype.handleInAttributeValue = function (c, quote) {\n if (c === quote) {\n this.emitToken(\"onattribdata\");\n this.cbs.onattribend(quote);\n this._state = 8 /* BeforeAttributeName */;\n }\n else if (this.decodeEntities && c === \"&\") {\n this.emitToken(\"onattribdata\");\n this.baseState = this._state;\n this._state = 62 /* BeforeEntity */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {\n this.handleInAttributeValue(c, '\"');\n };\n Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {\n this.handleInAttributeValue(c, \"'\");\n };\n Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {\n if (whitespace(c) || c === \">\") {\n this.emitToken(\"onattribdata\");\n this.cbs.onattribend(null);\n this._state = 8 /* BeforeAttributeName */;\n this._index--;\n }\n else if (this.decodeEntities && c === \"&\") {\n this.emitToken(\"onattribdata\");\n this.baseState = this._state;\n this._state = 62 /* BeforeEntity */;\n this.sectionStart = this._index;\n }\n };\n Tokenizer.prototype.stateBeforeDeclaration = function (c) {\n this._state =\n c === \"[\"\n ? 23 /* BeforeCdata1 */\n : c === \"-\"\n ? 18 /* BeforeComment */\n : 16 /* InDeclaration */;\n };\n Tokenizer.prototype.stateInDeclaration = function (c) {\n if (c === \">\") {\n this.cbs.ondeclaration(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateInProcessingInstruction = function (c) {\n if (c === \">\") {\n this.cbs.onprocessinginstruction(this.getSection());\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeComment = function (c) {\n if (c === \"-\") {\n this._state = 19 /* InComment */;\n this.sectionStart = this._index + 1;\n }\n else {\n this._state = 16 /* InDeclaration */;\n }\n };\n Tokenizer.prototype.stateInComment = function (c) {\n if (c === \"-\")\n this._state = 21 /* AfterComment1 */;\n };\n Tokenizer.prototype.stateInSpecialComment = function (c) {\n if (c === \">\") {\n this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index));\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer.prototype.stateAfterComment1 = function (c) {\n if (c === \"-\") {\n this._state = 22 /* AfterComment2 */;\n }\n else {\n this._state = 19 /* InComment */;\n }\n };\n Tokenizer.prototype.stateAfterComment2 = function (c) {\n if (c === \">\") {\n // Remove 2 trailing chars\n this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index - 2));\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n else if (c !== \"-\") {\n this._state = 19 /* InComment */;\n }\n // Else: stay in AFTER_COMMENT_2 (`--->`)\n };\n Tokenizer.prototype.stateBeforeCdata6 = function (c) {\n if (c === \"[\") {\n this._state = 29 /* InCdata */;\n this.sectionStart = this._index + 1;\n }\n else {\n this._state = 16 /* InDeclaration */;\n this._index--;\n }\n };\n Tokenizer.prototype.stateInCdata = function (c) {\n if (c === \"]\")\n this._state = 30 /* AfterCdata1 */;\n };\n Tokenizer.prototype.stateAfterCdata1 = function (c) {\n if (c === \"]\")\n this._state = 31 /* AfterCdata2 */;\n else\n this._state = 29 /* InCdata */;\n };\n Tokenizer.prototype.stateAfterCdata2 = function (c) {\n if (c === \">\") {\n // Remove 2 trailing chars\n this.cbs.oncdata(this.buffer.substring(this.sectionStart, this._index - 2));\n this._state = 1 /* Text */;\n this.sectionStart = this._index + 1;\n }\n else if (c !== \"]\") {\n this._state = 29 /* InCdata */;\n }\n // Else: stay in AFTER_CDATA_2 (`]]]>`)\n };\n Tokenizer.prototype.stateBeforeSpecialS = function (c) {\n if (c === \"c\" || c === \"C\") {\n this._state = 34 /* BeforeScript1 */;\n }\n else if (c === \"t\" || c === \"T\") {\n this._state = 44 /* BeforeStyle1 */;\n }\n else {\n this._state = 3 /* InTagName */;\n this._index--; // Consume the token again\n }\n };\n Tokenizer.prototype.stateBeforeSpecialSEnd = function (c) {\n if (this.special === 2 /* Script */ && (c === \"c\" || c === \"C\")) {\n this._state = 39 /* AfterScript1 */;\n }\n else if (this.special === 3 /* Style */ && (c === \"t\" || c === \"T\")) {\n this._state = 48 /* AfterStyle1 */;\n }\n else\n this._state = 1 /* Text */;\n };\n Tokenizer.prototype.stateBeforeSpecialLast = function (c, special) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this.special = special;\n }\n this._state = 3 /* InTagName */;\n this._index--; // Consume the token again\n };\n Tokenizer.prototype.stateAfterSpecialLast = function (c, sectionStartOffset) {\n if (c === \">\" || whitespace(c)) {\n this.special = 1 /* None */;\n this._state = 6 /* InClosingTagName */;\n this.sectionStart = this._index - sectionStartOffset;\n this._index--; // Reconsume the token\n }\n else\n this._state = 1 /* Text */;\n };\n // For entities terminated with a semicolon\n Tokenizer.prototype.parseFixedEntity = function (map) {\n if (map === void 0) { map = this.xmlMode ? xml_json_1.default : entities_json_1.default; }\n // Offset = 1\n if (this.sectionStart + 1 < this._index) {\n var entity = this.buffer.substring(this.sectionStart + 1, this._index);\n if (Object.prototype.hasOwnProperty.call(map, entity)) {\n this.emitPartial(map[entity]);\n this.sectionStart = this._index + 1;\n }\n }\n };\n // Parses legacy entities (without trailing semicolon)\n Tokenizer.prototype.parseLegacyEntity = function () {\n var start = this.sectionStart + 1;\n // The max length of legacy entities is 6\n var limit = Math.min(this._index - start, 6);\n while (limit >= 2) {\n // The min length of legacy entities is 2\n var entity = this.buffer.substr(start, limit);\n if (Object.prototype.hasOwnProperty.call(legacy_json_1.default, entity)) {\n this.emitPartial(legacy_json_1.default[entity]);\n this.sectionStart += limit + 1;\n return;\n }\n limit--;\n }\n };\n Tokenizer.prototype.stateInNamedEntity = function (c) {\n if (c === \";\") {\n this.parseFixedEntity();\n // Retry as legacy entity if entity wasn't parsed\n if (this.baseState === 1 /* Text */ &&\n this.sectionStart + 1 < this._index &&\n !this.xmlMode) {\n this.parseLegacyEntity();\n }\n this._state = this.baseState;\n }\n else if ((c < \"0\" || c > \"9\") && !isASCIIAlpha(c)) {\n if (this.xmlMode || this.sectionStart + 1 === this._index) {\n // Ignore\n }\n else if (this.baseState !== 1 /* Text */) {\n if (c !== \"=\") {\n // Parse as legacy entity, without allowing additional characters.\n this.parseFixedEntity(legacy_json_1.default);\n }\n }\n else {\n this.parseLegacyEntity();\n }\n this._state = this.baseState;\n this._index--;\n }\n };\n Tokenizer.prototype.decodeNumericEntity = function (offset, base, strict) {\n var sectionStart = this.sectionStart + offset;\n if (sectionStart !== this._index) {\n // Parse entity\n var entity = this.buffer.substring(sectionStart, this._index);\n var parsed = parseInt(entity, base);\n this.emitPartial(decode_codepoint_1.default(parsed));\n this.sectionStart = strict ? this._index + 1 : this._index;\n }\n this._state = this.baseState;\n };\n Tokenizer.prototype.stateInNumericEntity = function (c) {\n if (c === \";\") {\n this.decodeNumericEntity(2, 10, true);\n }\n else if (c < \"0\" || c > \"9\") {\n if (!this.xmlMode) {\n this.decodeNumericEntity(2, 10, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n };\n Tokenizer.prototype.stateInHexEntity = function (c) {\n if (c === \";\") {\n this.decodeNumericEntity(3, 16, true);\n }\n else if ((c < \"a\" || c > \"f\") &&\n (c < \"A\" || c > \"F\") &&\n (c < \"0\" || c > \"9\")) {\n if (!this.xmlMode) {\n this.decodeNumericEntity(3, 16, false);\n }\n else {\n this._state = this.baseState;\n }\n this._index--;\n }\n };\n Tokenizer.prototype.cleanup = function () {\n if (this.sectionStart < 0) {\n this.buffer = \"\";\n this.bufferOffset += this._index;\n this._index = 0;\n }\n else if (this.running) {\n if (this._state === 1 /* Text */) {\n if (this.sectionStart !== this._index) {\n this.cbs.ontext(this.buffer.substr(this.sectionStart));\n }\n this.buffer = \"\";\n this.bufferOffset += this._index;\n this._index = 0;\n }\n else if (this.sectionStart === this._index) {\n // The section just started\n this.buffer = \"\";\n this.bufferOffset += this._index;\n this._index = 0;\n }\n else {\n // Remove everything unnecessary\n this.buffer = this.buffer.substr(this.sectionStart);\n this._index -= this.sectionStart;\n this.bufferOffset += this.sectionStart;\n }\n this.sectionStart = 0;\n }\n };\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n Tokenizer.prototype.parse = function () {\n while (this._index < this.buffer.length && this.running) {\n var c = this.buffer.charAt(this._index);\n if (this._state === 1 /* Text */) {\n this.stateText(c);\n }\n else if (this._state === 12 /* InAttributeValueDq */) {\n this.stateInAttributeValueDoubleQuotes(c);\n }\n else if (this._state === 9 /* InAttributeName */) {\n this.stateInAttributeName(c);\n }\n else if (this._state === 19 /* InComment */) {\n this.stateInComment(c);\n }\n else if (this._state === 20 /* InSpecialComment */) {\n this.stateInSpecialComment(c);\n }\n else if (this._state === 8 /* BeforeAttributeName */) {\n this.stateBeforeAttributeName(c);\n }\n else if (this._state === 3 /* InTagName */) {\n this.stateInTagName(c);\n }\n else if (this._state === 6 /* InClosingTagName */) {\n this.stateInClosingTagName(c);\n }\n else if (this._state === 2 /* BeforeTagName */) {\n this.stateBeforeTagName(c);\n }\n else if (this._state === 10 /* AfterAttributeName */) {\n this.stateAfterAttributeName(c);\n }\n else if (this._state === 13 /* InAttributeValueSq */) {\n this.stateInAttributeValueSingleQuotes(c);\n }\n else if (this._state === 11 /* BeforeAttributeValue */) {\n this.stateBeforeAttributeValue(c);\n }\n else if (this._state === 5 /* BeforeClosingTagName */) {\n this.stateBeforeClosingTagName(c);\n }\n else if (this._state === 7 /* AfterClosingTagName */) {\n this.stateAfterClosingTagName(c);\n }\n else if (this._state === 32 /* BeforeSpecialS */) {\n this.stateBeforeSpecialS(c);\n }\n else if (this._state === 21 /* AfterComment1 */) {\n this.stateAfterComment1(c);\n }\n else if (this._state === 14 /* InAttributeValueNq */) {\n this.stateInAttributeValueNoQuotes(c);\n }\n else if (this._state === 4 /* InSelfClosingTag */) {\n this.stateInSelfClosingTag(c);\n }\n else if (this._state === 16 /* InDeclaration */) {\n this.stateInDeclaration(c);\n }\n else if (this._state === 15 /* BeforeDeclaration */) {\n this.stateBeforeDeclaration(c);\n }\n else if (this._state === 22 /* AfterComment2 */) {\n this.stateAfterComment2(c);\n }\n else if (this._state === 18 /* BeforeComment */) {\n this.stateBeforeComment(c);\n }\n else if (this._state === 33 /* BeforeSpecialSEnd */) {\n this.stateBeforeSpecialSEnd(c);\n }\n else if (this._state === 53 /* BeforeSpecialTEnd */) {\n stateAfterSpecialTEnd(this, c);\n }\n else if (this._state === 39 /* AfterScript1 */) {\n stateAfterScript1(this, c);\n }\n else if (this._state === 40 /* AfterScript2 */) {\n stateAfterScript2(this, c);\n }\n else if (this._state === 41 /* AfterScript3 */) {\n stateAfterScript3(this, c);\n }\n else if (this._state === 34 /* BeforeScript1 */) {\n stateBeforeScript1(this, c);\n }\n else if (this._state === 35 /* BeforeScript2 */) {\n stateBeforeScript2(this, c);\n }\n else if (this._state === 36 /* BeforeScript3 */) {\n stateBeforeScript3(this, c);\n }\n else if (this._state === 37 /* BeforeScript4 */) {\n stateBeforeScript4(this, c);\n }\n else if (this._state === 38 /* BeforeScript5 */) {\n this.stateBeforeSpecialLast(c, 2 /* Script */);\n }\n else if (this._state === 42 /* AfterScript4 */) {\n stateAfterScript4(this, c);\n }\n else if (this._state === 43 /* AfterScript5 */) {\n this.stateAfterSpecialLast(c, 6);\n }\n else if (this._state === 44 /* BeforeStyle1 */) {\n stateBeforeStyle1(this, c);\n }\n else if (this._state === 29 /* InCdata */) {\n this.stateInCdata(c);\n }\n else if (this._state === 45 /* BeforeStyle2 */) {\n stateBeforeStyle2(this, c);\n }\n else if (this._state === 46 /* BeforeStyle3 */) {\n stateBeforeStyle3(this, c);\n }\n else if (this._state === 47 /* BeforeStyle4 */) {\n this.stateBeforeSpecialLast(c, 3 /* Style */);\n }\n else if (this._state === 48 /* AfterStyle1 */) {\n stateAfterStyle1(this, c);\n }\n else if (this._state === 49 /* AfterStyle2 */) {\n stateAfterStyle2(this, c);\n }\n else if (this._state === 50 /* AfterStyle3 */) {\n stateAfterStyle3(this, c);\n }\n else if (this._state === 51 /* AfterStyle4 */) {\n this.stateAfterSpecialLast(c, 5);\n }\n else if (this._state === 52 /* BeforeSpecialT */) {\n stateBeforeSpecialT(this, c);\n }\n else if (this._state === 54 /* BeforeTitle1 */) {\n stateBeforeTitle1(this, c);\n }\n else if (this._state === 55 /* BeforeTitle2 */) {\n stateBeforeTitle2(this, c);\n }\n else if (this._state === 56 /* BeforeTitle3 */) {\n stateBeforeTitle3(this, c);\n }\n else if (this._state === 57 /* BeforeTitle4 */) {\n this.stateBeforeSpecialLast(c, 4 /* Title */);\n }\n else if (this._state === 58 /* AfterTitle1 */) {\n stateAfterTitle1(this, c);\n }\n else if (this._state === 59 /* AfterTitle2 */) {\n stateAfterTitle2(this, c);\n }\n else if (this._state === 60 /* AfterTitle3 */) {\n stateAfterTitle3(this, c);\n }\n else if (this._state === 61 /* AfterTitle4 */) {\n this.stateAfterSpecialLast(c, 5);\n }\n else if (this._state === 17 /* InProcessingInstruction */) {\n this.stateInProcessingInstruction(c);\n }\n else if (this._state === 64 /* InNamedEntity */) {\n this.stateInNamedEntity(c);\n }\n else if (this._state === 23 /* BeforeCdata1 */) {\n stateBeforeCdata1(this, c);\n }\n else if (this._state === 62 /* BeforeEntity */) {\n stateBeforeEntity(this, c);\n }\n else if (this._state === 24 /* BeforeCdata2 */) {\n stateBeforeCdata2(this, c);\n }\n else if (this._state === 25 /* BeforeCdata3 */) {\n stateBeforeCdata3(this, c);\n }\n else if (this._state === 30 /* AfterCdata1 */) {\n this.stateAfterCdata1(c);\n }\n else if (this._state === 31 /* AfterCdata2 */) {\n this.stateAfterCdata2(c);\n }\n else if (this._state === 26 /* BeforeCdata4 */) {\n stateBeforeCdata4(this, c);\n }\n else if (this._state === 27 /* BeforeCdata5 */) {\n stateBeforeCdata5(this, c);\n }\n else if (this._state === 28 /* BeforeCdata6 */) {\n this.stateBeforeCdata6(c);\n }\n else if (this._state === 66 /* InHexEntity */) {\n this.stateInHexEntity(c);\n }\n else if (this._state === 65 /* InNumericEntity */) {\n this.stateInNumericEntity(c);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n }\n else if (this._state === 63 /* BeforeNumericEntity */) {\n stateBeforeNumericEntity(this, c);\n }\n else {\n this.cbs.onerror(Error(\"unknown _state\"), this._state);\n }\n this._index++;\n }\n this.cleanup();\n };\n Tokenizer.prototype.finish = function () {\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this._index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n };\n Tokenizer.prototype.handleTrailingData = function () {\n var data = this.buffer.substr(this.sectionStart);\n if (this._state === 29 /* InCdata */ ||\n this._state === 30 /* AfterCdata1 */ ||\n this._state === 31 /* AfterCdata2 */) {\n this.cbs.oncdata(data);\n }\n else if (this._state === 19 /* InComment */ ||\n this._state === 21 /* AfterComment1 */ ||\n this._state === 22 /* AfterComment2 */) {\n this.cbs.oncomment(data);\n }\n else if (this._state === 64 /* InNamedEntity */ && !this.xmlMode) {\n this.parseLegacyEntity();\n if (this.sectionStart < this._index) {\n this._state = this.baseState;\n this.handleTrailingData();\n }\n }\n else if (this._state === 65 /* InNumericEntity */ && !this.xmlMode) {\n this.decodeNumericEntity(2, 10, false);\n if (this.sectionStart < this._index) {\n this._state = this.baseState;\n this.handleTrailingData();\n }\n }\n else if (this._state === 66 /* InHexEntity */ && !this.xmlMode) {\n this.decodeNumericEntity(3, 16, false);\n if (this.sectionStart < this._index) {\n this._state = this.baseState;\n this.handleTrailingData();\n }\n }\n else if (this._state !== 3 /* InTagName */ &&\n this._state !== 8 /* BeforeAttributeName */ &&\n this._state !== 11 /* BeforeAttributeValue */ &&\n this._state !== 10 /* AfterAttributeName */ &&\n this._state !== 9 /* InAttributeName */ &&\n this._state !== 13 /* InAttributeValueSq */ &&\n this._state !== 12 /* InAttributeValueDq */ &&\n this._state !== 14 /* InAttributeValueNq */ &&\n this._state !== 6 /* InClosingTagName */) {\n this.cbs.ontext(data);\n }\n /*\n * Else, ignore remaining data\n * TODO add a way to remove current tag\n */\n };\n Tokenizer.prototype.getSection = function () {\n return this.buffer.substring(this.sectionStart, this._index);\n };\n Tokenizer.prototype.emitToken = function (name) {\n this.cbs[name](this.getSection());\n this.sectionStart = -1;\n };\n Tokenizer.prototype.emitPartial = function (value) {\n if (this.baseState !== 1 /* Text */) {\n this.cbs.onattribdata(value); // TODO implement the new event\n }\n else {\n this.cbs.ontext(value);\n }\n };\n return Tokenizer;\n}());\nexports.default = Tokenizer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RssHandler = exports.DefaultHandler = exports.DomUtils = exports.ElementType = exports.Tokenizer = exports.createDomStream = exports.parseDOM = exports.parseDocument = exports.DomHandler = exports.Parser = void 0;\nvar Parser_1 = require(\"./Parser\");\nObject.defineProperty(exports, \"Parser\", { enumerable: true, get: function () { return Parser_1.Parser; } });\nvar domhandler_1 = require(\"domhandler\");\nObject.defineProperty(exports, \"DomHandler\", { enumerable: true, get: function () { return domhandler_1.DomHandler; } });\nObject.defineProperty(exports, \"DefaultHandler\", { enumerable: true, get: function () { return domhandler_1.DomHandler; } });\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */\nfunction parseDocument(data, options) {\n var handler = new domhandler_1.DomHandler(undefined, options);\n new Parser_1.Parser(handler, options).end(data);\n return handler.root;\n}\nexports.parseDocument = parseDocument;\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n * @deprecated Use `parseDocument` instead.\n */\nfunction parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\nexports.parseDOM = parseDOM;\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param cb A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCb An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nfunction createDomStream(cb, options, elementCb) {\n var handler = new domhandler_1.DomHandler(cb, options, elementCb);\n return new Parser_1.Parser(handler, options);\n}\nexports.createDomStream = createDomStream;\nvar Tokenizer_1 = require(\"./Tokenizer\");\nObject.defineProperty(exports, \"Tokenizer\", { enumerable: true, get: function () { return __importDefault(Tokenizer_1).default; } });\nvar ElementType = __importStar(require(\"domelementtype\"));\nexports.ElementType = ElementType;\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\n__exportStar(require(\"./FeedHandler\"), exports);\nexports.DomUtils = __importStar(require(\"domutils\"));\nvar FeedHandler_1 = require(\"./FeedHandler\");\nObject.defineProperty(exports, \"RssHandler\", { enumerable: true, get: function () { return FeedHandler_1.FeedHandler; } });\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexports.isPlainObject = isPlainObject;\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'atrule'\n }\n\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.append(...children)\n }\n\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.prepend(...children)\n }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n constructor(defaults) {\n super(defaults)\n this.type = 'comment'\n }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet Declaration = require('./declaration')\nlet Comment = require('./comment')\nlet Node = require('./node')\n\nlet parse, Rule, AtRule, Root\n\nfunction cleanSource(nodes) {\n return nodes.map(i => {\n if (i.nodes) i.nodes = cleanSource(i.nodes)\n delete i.source\n return i\n })\n}\n\nfunction markDirtyUp(node) {\n node[isClean] = false\n if (node.proxyOf.nodes) {\n for (let i of node.proxyOf.nodes) {\n markDirtyUp(i)\n }\n }\n}\n\nclass Container extends Node {\n push(child) {\n child.parent = this\n this.proxyOf.nodes.push(child)\n return this\n }\n\n each(callback) {\n if (!this.proxyOf.nodes) return undefined\n let iterator = this.getIterator()\n\n let index, result\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index = this.indexes[iterator]\n result = callback(this.proxyOf.nodes[index], index)\n if (result === false) break\n\n this.indexes[iterator] += 1\n }\n\n delete this.indexes[iterator]\n return result\n }\n\n walk(callback) {\n return this.each((child, i) => {\n let result\n try {\n result = callback(child, i)\n } catch (e) {\n throw child.addToError(e)\n }\n if (result !== false && child.walk) {\n result = child.walk(callback)\n }\n\n return result\n })\n }\n\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop\n return this.walk((child, i) => {\n if (child.type === 'decl') {\n return callback(child, i)\n }\n })\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i)\n }\n })\n }\n\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector\n\n return this.walk((child, i) => {\n if (child.type === 'rule') {\n return callback(child, i)\n }\n })\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i)\n }\n })\n }\n\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name\n return this.walk((child, i) => {\n if (child.type === 'atrule') {\n return callback(child, i)\n }\n })\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i)\n }\n })\n }\n\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === 'comment') {\n return callback(child, i)\n }\n })\n }\n\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last)\n for (let node of nodes) this.proxyOf.nodes.push(node)\n }\n\n this.markDirty()\n\n return this\n }\n\n prepend(...children) {\n children = children.reverse()\n for (let child of children) {\n let nodes = this.normalize(child, this.first, 'prepend').reverse()\n for (let node of nodes) this.proxyOf.nodes.unshift(node)\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween)\n if (this.nodes) {\n for (let node of this.nodes) node.cleanRaws(keepBetween)\n }\n }\n\n insertBefore(exist, add) {\n let existIndex = this.index(exist)\n let type = existIndex === 0 ? 'prepend' : false\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex <= index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n insertAfter(exist, add) {\n let existIndex = this.index(exist)\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex < index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n removeChild(child) {\n child = this.index(child)\n this.proxyOf.nodes[child].parent = undefined\n this.proxyOf.nodes.splice(child, 1)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (index >= child) {\n this.indexes[id] = index - 1\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n removeAll() {\n for (let node of this.proxyOf.nodes) node.parent = undefined\n this.proxyOf.nodes = []\n\n this.markDirty()\n\n return this\n }\n\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts\n opts = {}\n }\n\n this.walkDecls(decl => {\n if (opts.props && !opts.props.includes(decl.prop)) return\n if (opts.fast && !decl.value.includes(opts.fast)) return\n\n decl.value = decl.value.replace(pattern, callback)\n })\n\n this.markDirty()\n\n return this\n }\n\n every(condition) {\n return this.nodes.every(condition)\n }\n\n some(condition) {\n return this.nodes.some(condition)\n }\n\n index(child) {\n if (typeof child === 'number') return child\n if (child.proxyOf) child = child.proxyOf\n return this.proxyOf.nodes.indexOf(child)\n }\n\n get first() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[0]\n }\n\n get last() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n }\n\n normalize(nodes, sample) {\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes)\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type === 'root' && this.type !== 'document') {\n nodes = nodes.nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type) {\n nodes = [nodes]\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation')\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value)\n }\n nodes = [new Declaration(nodes)]\n } else if (nodes.selector) {\n nodes = [new Rule(nodes)]\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)]\n } else if (nodes.text) {\n nodes = [new Comment(nodes)]\n } else {\n throw new Error('Unknown node type in node creation')\n }\n\n let processed = nodes.map(i => {\n /* c8 ignore next */\n if (!i[my]) Container.rebuild(i)\n i = i.proxyOf\n if (i.parent) i.parent.removeChild(i)\n if (i[isClean]) markDirtyUp(i)\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/\\S/g, '')\n }\n }\n i.parent = this.proxyOf\n return i\n })\n\n return processed\n }\n\n getProxyProcessor() {\n return {\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (prop === 'name' || prop === 'params' || prop === 'selector') {\n node.markDirty()\n }\n return true\n },\n\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (!node[prop]) {\n return node[prop]\n } else if (\n prop === 'each' ||\n (typeof prop === 'string' && prop.startsWith('walk'))\n ) {\n return (...args) => {\n return node[prop](\n ...args.map(i => {\n if (typeof i === 'function') {\n return (child, index) => i(child.toProxy(), index)\n } else {\n return i\n }\n })\n )\n }\n } else if (prop === 'every' || prop === 'some') {\n return cb => {\n return node[prop]((child, ...other) =>\n cb(child.toProxy(), ...other)\n )\n }\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else if (prop === 'nodes') {\n return node.nodes.map(i => i.toProxy())\n } else if (prop === 'first' || prop === 'last') {\n return node[prop].toProxy()\n } else {\n return node[prop]\n }\n }\n }\n }\n\n getIterator() {\n if (!this.lastEach) this.lastEach = 0\n if (!this.indexes) this.indexes = {}\n\n this.lastEach += 1\n let iterator = this.lastEach\n this.indexes[iterator] = 0\n\n return iterator\n }\n}\n\nContainer.registerParse = dependant => {\n parse = dependant\n}\n\nContainer.registerRule = dependant => {\n Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n if (node.type === 'atrule') {\n Object.setPrototypeOf(node, AtRule.prototype)\n } else if (node.type === 'rule') {\n Object.setPrototypeOf(node, Rule.prototype)\n } else if (node.type === 'decl') {\n Object.setPrototypeOf(node, Declaration.prototype)\n } else if (node.type === 'comment') {\n Object.setPrototypeOf(node, Comment.prototype)\n } else if (node.type === 'root') {\n Object.setPrototypeOf(node, Root.prototype)\n }\n\n node[my] = true\n\n if (node.nodes) {\n node.nodes.forEach(child => {\n Container.rebuild(child)\n })\n }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message)\n this.name = 'CssSyntaxError'\n this.reason = message\n\n if (file) {\n this.file = file\n }\n if (source) {\n this.source = source\n }\n if (plugin) {\n this.plugin = plugin\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n if (typeof line === 'number') {\n this.line = line\n this.column = column\n } else {\n this.line = line.line\n this.column = line.column\n this.endLine = column.line\n this.endColumn = column.column\n }\n }\n\n this.setMessage()\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError)\n }\n }\n\n setMessage() {\n this.message = this.plugin ? this.plugin + ': ' : ''\n this.message += this.file ? this.file : '<css input>'\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column\n }\n this.message += ': ' + this.reason\n }\n\n showSourceCode(color) {\n if (!this.source) return ''\n\n let css = this.source\n if (color == null) color = pico.isColorSupported\n if (terminalHighlight) {\n if (color) css = terminalHighlight(css)\n }\n\n let lines = css.split(/\\r?\\n/)\n let start = Math.max(this.line - 3, 0)\n let end = Math.min(this.line + 2, lines.length)\n\n let maxWidth = String(end).length\n\n let mark, aside\n if (color) {\n let { bold, red, gray } = pico.createColors(true)\n mark = text => bold(red(text))\n aside = text => gray(text)\n } else {\n mark = aside = str => str\n }\n\n return lines\n .slice(start, end)\n .map((line, index) => {\n let number = start + 1 + index\n let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n if (number === this.line) {\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^')\n }\n return ' ' + aside(gutter) + line\n })\n .join('\\n')\n }\n\n toString() {\n let code = this.showSourceCode()\n if (code) {\n code = '\\n\\n' + code + '\\n'\n }\n return this.name + ': ' + this.message + code\n }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n constructor(defaults) {\n if (\n defaults &&\n typeof defaults.value !== 'undefined' &&\n typeof defaults.value !== 'string'\n ) {\n defaults = { ...defaults, value: String(defaults.value) }\n }\n super(defaults)\n this.type = 'decl'\n }\n\n get variable() {\n return this.prop.startsWith('--') || this.prop[0] === '$'\n }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n constructor(defaults) {\n // type needs to be passed to super, otherwise child roots won't be normalized correctly\n super({ type: 'document', ...defaults })\n\n if (!this.nodes) {\n this.nodes = []\n }\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n\n return lazy.stringify()\n }\n}\n\nDocument.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet PreviousMap = require('./previous-map')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Input = require('./input')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n let { inputs: ownInputs, ...defaults } = json\n if (ownInputs) {\n inputs = []\n for (let input of ownInputs) {\n let inputHydrated = { ...input, __proto__: Input.prototype }\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n }\n }\n inputs.push(inputHydrated)\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source\n defaults.source = source\n if (inputId != null) {\n defaults.source.input = inputs[inputId]\n }\n }\n if (defaults.type === 'root') {\n return new Root(defaults)\n } else if (defaults.type === 'decl') {\n return new Declaration(defaults)\n } else if (defaults.type === 'rule') {\n return new Rule(defaults)\n } else if (defaults.type === 'comment') {\n return new Comment(defaults)\n } else if (defaults.type === 'atrule') {\n return new AtRule(defaults)\n } else {\n throw new Error('Unknown node type: ' + json.type)\n }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\nlet { resolve, isAbsolute } = require('path')\nlet { nanoid } = require('nanoid/non-secure')\n\nlet terminalHighlight = require('./terminal-highlight')\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\n\nlet fromOffsetCache = Symbol('fromOffsetCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nclass Input {\n constructor(css, opts = {}) {\n if (\n css === null ||\n typeof css === 'undefined' ||\n (typeof css === 'object' && !css.toString)\n ) {\n throw new Error(`PostCSS received ${css} instead of CSS string`)\n }\n\n this.css = css.toString()\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.hasBOM = true\n this.css = this.css.slice(1)\n } else {\n this.hasBOM = false\n }\n\n if (opts.from) {\n if (\n !pathAvailable ||\n /^\\w+:\\/\\//.test(opts.from) ||\n isAbsolute(opts.from)\n ) {\n this.file = opts.from\n } else {\n this.file = resolve(opts.from)\n }\n }\n\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts)\n if (map.text) {\n this.map = map\n let file = map.consumer().file\n if (!this.file && file) this.file = this.mapResolve(file)\n }\n }\n\n if (!this.file) {\n this.id = '<input css ' + nanoid(6) + '>'\n }\n if (this.map) this.map.file = this.from\n }\n\n fromOffset(offset) {\n let lastLine, lineToIndex\n if (!this[fromOffsetCache]) {\n let lines = this.css.split('\\n')\n lineToIndex = new Array(lines.length)\n let prevIndex = 0\n\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex\n prevIndex += lines[i].length + 1\n }\n\n this[fromOffsetCache] = lineToIndex\n } else {\n lineToIndex = this[fromOffsetCache]\n }\n lastLine = lineToIndex[lineToIndex.length - 1]\n\n let min = 0\n if (offset >= lastLine) {\n min = lineToIndex.length - 1\n } else {\n let max = lineToIndex.length - 2\n let mid\n while (min < max) {\n mid = min + ((max - min) >> 1)\n if (offset < lineToIndex[mid]) {\n max = mid - 1\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1\n } else {\n min = mid\n break\n }\n }\n }\n return {\n line: min + 1,\n col: offset - lineToIndex[min] + 1\n }\n }\n\n error(message, line, column, opts = {}) {\n let result, endLine, endColumn\n\n if (line && typeof line === 'object') {\n let start = line\n let end = column\n if (typeof line.offset === 'number') {\n let pos = this.fromOffset(start.offset)\n line = pos.line\n column = pos.col\n } else {\n line = start.line\n column = start.column\n }\n if (typeof end.offset === 'number') {\n let pos = this.fromOffset(end.offset)\n endLine = pos.line\n endColumn = pos.col\n } else {\n endLine = end.line\n endColumn = end.column\n }\n } else if (!column) {\n let pos = this.fromOffset(line)\n line = pos.line\n column = pos.col\n }\n\n let origin = this.origin(line, column, endLine, endColumn)\n if (origin) {\n result = new CssSyntaxError(\n message,\n origin.endLine === undefined\n ? origin.line\n : { line: origin.line, column: origin.column },\n origin.endLine === undefined\n ? origin.column\n : { line: origin.endLine, column: origin.endColumn },\n origin.source,\n origin.file,\n opts.plugin\n )\n } else {\n result = new CssSyntaxError(\n message,\n endLine === undefined ? line : { line, column },\n endLine === undefined ? column : { line: endLine, column: endColumn },\n this.css,\n this.file,\n opts.plugin\n )\n }\n\n result.input = { line, column, endLine, endColumn, source: this.css }\n if (this.file) {\n if (pathToFileURL) {\n result.input.url = pathToFileURL(this.file).toString()\n }\n result.input.file = this.file\n }\n\n return result\n }\n\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false\n let consumer = this.map.consumer()\n\n let from = consumer.originalPositionFor({ line, column })\n if (!from.source) return false\n\n let to\n if (typeof endLine === 'number') {\n to = consumer.originalPositionFor({ line: endLine, column: endColumn })\n }\n\n let fromUrl\n\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source)\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n )\n }\n\n let result = {\n url: fromUrl.toString(),\n line: from.line,\n column: from.column,\n endLine: to && to.line,\n endColumn: to && to.column\n }\n\n if (fromUrl.protocol === 'file:') {\n if (fileURLToPath) {\n result.file = fileURLToPath(fromUrl)\n } else {\n /* c8 ignore next 2 */\n throw new Error(`file: protocol is not available in this PostCSS build`)\n }\n }\n\n let source = consumer.sourceContentFor(from.source)\n if (source) result.source = source\n\n return result\n }\n\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n }\n\n get from() {\n return this.file || this.id\n }\n\n toJSON() {\n let json = {}\n for (let name of ['hasBOM', 'css', 'file', 'id']) {\n if (this[name] != null) {\n json[name] = this[name]\n }\n }\n if (this.map) {\n json.map = { ...this.map }\n if (json.map.consumerCache) {\n json.map.consumerCache = undefined\n }\n }\n return json\n }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet Container = require('./container')\nlet Document = require('./document')\nlet warnOnce = require('./warn-once')\nlet Result = require('./result')\nlet parse = require('./parse')\nlet Root = require('./root')\n\nconst TYPE_TO_CLASS_NAME = {\n document: 'Document',\n root: 'Root',\n atrule: 'AtRule',\n rule: 'Rule',\n decl: 'Declaration',\n comment: 'Comment'\n}\n\nconst PLUGIN_PROPS = {\n postcssPlugin: true,\n prepare: true,\n Once: true,\n Document: true,\n Root: true,\n Declaration: true,\n Rule: true,\n AtRule: true,\n Comment: true,\n DeclarationExit: true,\n RuleExit: true,\n AtRuleExit: true,\n CommentExit: true,\n RootExit: true,\n DocumentExit: true,\n OnceExit: true\n}\n\nconst NOT_VISITORS = {\n postcssPlugin: true,\n prepare: true,\n Once: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n let key = false\n let type = TYPE_TO_CLASS_NAME[node.type]\n if (node.type === 'decl') {\n key = node.prop.toLowerCase()\n } else if (node.type === 'atrule') {\n key = node.name.toLowerCase()\n }\n\n if (key && node.append) {\n return [\n type,\n type + '-' + key,\n CHILDREN,\n type + 'Exit',\n type + 'Exit-' + key\n ]\n } else if (key) {\n return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n } else if (node.append) {\n return [type, CHILDREN, type + 'Exit']\n } else {\n return [type, type + 'Exit']\n }\n}\n\nfunction toStack(node) {\n let events\n if (node.type === 'document') {\n events = ['Document', CHILDREN, 'DocumentExit']\n } else if (node.type === 'root') {\n events = ['Root', CHILDREN, 'RootExit']\n } else {\n events = getEvents(node)\n }\n\n return {\n node,\n events,\n eventIndex: 0,\n visitors: [],\n visitorIndex: 0,\n iterator: 0\n }\n}\n\nfunction cleanMarks(node) {\n node[isClean] = false\n if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n constructor(processor, css, opts) {\n this.stringified = false\n this.processed = false\n\n let root\n if (\n typeof css === 'object' &&\n css !== null &&\n (css.type === 'root' || css.type === 'document')\n ) {\n root = cleanMarks(css)\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = cleanMarks(css.root)\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {}\n if (!opts.map.inline) opts.map.inline = false\n opts.map.prev = css.map\n }\n } else {\n let parser = parse\n if (opts.syntax) parser = opts.syntax.parse\n if (opts.parser) parser = opts.parser\n if (parser.parse) parser = parser.parse\n\n try {\n root = parser(css, opts)\n } catch (error) {\n this.processed = true\n this.error = error\n }\n\n if (root && !root[my]) {\n /* c8 ignore next 2 */\n Container.rebuild(root)\n }\n }\n\n this.result = new Result(processor, root, opts)\n this.helpers = { ...postcss, result: this.result, postcss }\n this.plugins = this.processor.plugins.map(plugin => {\n if (typeof plugin === 'object' && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) }\n } else {\n return plugin\n }\n })\n }\n\n get [Symbol.toStringTag]() {\n return 'LazyResult'\n }\n\n get processor() {\n return this.result.processor\n }\n\n get opts() {\n return this.result.opts\n }\n\n get css() {\n return this.stringify().css\n }\n\n get content() {\n return this.stringify().content\n }\n\n get map() {\n return this.stringify().map\n }\n\n get root() {\n return this.sync().root\n }\n\n get messages() {\n return this.sync().messages\n }\n\n warnings() {\n return this.sync().warnings()\n }\n\n toString() {\n return this.css\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n return this.async().then(onFulfilled, onRejected)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n if (this.processed) return Promise.resolve(this.result)\n if (!this.processing) {\n this.processing = this.runAsync()\n }\n return this.processing\n }\n\n sync() {\n if (this.error) throw this.error\n if (this.processed) return this.result\n this.processed = true\n\n if (this.processing) {\n throw this.getAsyncError()\n }\n\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n this.walkSync(root)\n }\n if (this.listeners.OnceExit) {\n if (root.type === 'document') {\n for (let subRoot of root.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot)\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root)\n }\n }\n }\n\n return this.result\n }\n\n stringify() {\n if (this.error) throw this.error\n if (this.stringified) return this.result\n this.stringified = true\n\n this.sync()\n\n let opts = this.result.opts\n let str = stringify\n if (opts.syntax) str = opts.syntax.stringify\n if (opts.stringifier) str = opts.stringifier\n if (str.stringify) str = str.stringify\n\n let map = new MapGenerator(str, this.result.root, this.result.opts)\n let data = map.generate()\n this.result.css = data[0]\n this.result.map = data[1]\n\n return this.result\n }\n\n walkSync(node) {\n node[isClean] = true\n let events = getEvents(node)\n for (let event of events) {\n if (event === CHILDREN) {\n if (node.nodes) {\n node.each(child => {\n if (!child[isClean]) this.walkSync(child)\n })\n }\n } else {\n let visitors = this.listeners[event]\n if (visitors) {\n if (this.visitSync(visitors, node.toProxy())) return\n }\n }\n }\n }\n\n visitSync(visitors, node) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin\n let promise\n try {\n promise = visitor(node, this.helpers)\n } catch (e) {\n throw this.handleError(e, node.proxyOf)\n }\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n return true\n }\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n }\n\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin\n try {\n if (typeof plugin === 'object' && plugin.Once) {\n if (this.result.root.type === 'document') {\n let roots = this.result.root.nodes.map(root =>\n plugin.Once(root, this.helpers)\n )\n\n if (isPromise(roots[0])) {\n return Promise.all(roots)\n }\n\n return roots\n }\n\n return plugin.Once(this.result.root, this.helpers)\n } else if (typeof plugin === 'function') {\n return plugin(this.result.root, this.result)\n }\n } catch (error) {\n throw this.handleError(error)\n }\n }\n\n getAsyncError() {\n throw new Error('Use process(css).then(cb) to work with async plugins')\n }\n\n handleError(error, node) {\n let plugin = this.result.lastPlugin\n try {\n if (node) node.addToError(error)\n this.error = error\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin\n error.setMessage()\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n let pluginName = plugin.postcssPlugin\n let pluginVer = plugin.postcssVersion\n let runtimeVer = this.result.processor.version\n let a = pluginVer.split('.')\n let b = runtimeVer.split('.')\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n // eslint-disable-next-line no-console\n console.error(\n 'Unknown error from PostCSS plugin. Your current PostCSS ' +\n 'version is ' +\n runtimeVer +\n ', but ' +\n pluginName +\n ' uses ' +\n pluginVer +\n '. Perhaps this is the source of the error below.'\n )\n }\n }\n }\n } catch (err) {\n /* c8 ignore next 3 */\n // eslint-disable-next-line no-console\n if (console && console.error) console.error(err)\n }\n return error\n }\n\n async runAsync() {\n this.plugin = 0\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin = this.plugins[i]\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (error) {\n throw this.handleError(error)\n }\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n let stack = [toStack(root)]\n while (stack.length > 0) {\n let promise = this.visitTick(stack)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (e) {\n let node = stack[stack.length - 1].node\n throw this.handleError(e, node)\n }\n }\n }\n }\n\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin\n try {\n if (root.type === 'document') {\n let roots = root.nodes.map(subRoot =>\n visitor(subRoot, this.helpers)\n )\n\n await Promise.all(roots)\n } else {\n await visitor(root, this.helpers)\n }\n } catch (e) {\n throw this.handleError(e)\n }\n }\n }\n }\n\n this.processed = true\n return this.stringify()\n }\n\n prepareVisitors() {\n this.listeners = {}\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = []\n this.listeners[type].push([plugin, cb])\n }\n for (let plugin of this.plugins) {\n if (typeof plugin === 'object') {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n `Try to update PostCSS (${this.processor.version} now).`\n )\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === 'object') {\n for (let filter in plugin[event]) {\n if (filter === '*') {\n add(plugin, event, plugin[event][filter])\n } else {\n add(\n plugin,\n event + '-' + filter.toLowerCase(),\n plugin[event][filter]\n )\n }\n }\n } else if (typeof plugin[event] === 'function') {\n add(plugin, event, plugin[event])\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0\n }\n\n visitTick(stack) {\n let visit = stack[stack.length - 1]\n let { node, visitors } = visit\n\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n stack.pop()\n return\n }\n\n if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit.visitorIndex]\n visit.visitorIndex += 1\n if (visit.visitorIndex === visitors.length) {\n visit.visitors = []\n visit.visitorIndex = 0\n }\n this.result.lastPlugin = plugin\n try {\n return visitor(node.toProxy(), this.helpers)\n } catch (e) {\n throw this.handleError(e, node)\n }\n }\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n let child\n while ((child = node.nodes[node.indexes[iterator]])) {\n node.indexes[iterator] += 1\n if (!child[isClean]) {\n child[isClean] = true\n stack.push(toStack(child))\n return\n }\n }\n visit.iterator = 0\n delete node.indexes[iterator]\n }\n\n let events = visit.events\n while (visit.eventIndex < events.length) {\n let event = events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (node.nodes && node.nodes.length) {\n node[isClean] = true\n visit.iterator = node.getIterator()\n }\n return\n } else if (this.listeners[event]) {\n visit.visitors = this.listeners[event]\n return\n }\n }\n stack.pop()\n }\n}\n\nLazyResult.registerPostcss = dependant => {\n postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet list = {\n split(string, separators, last) {\n let array = []\n let current = ''\n let split = false\n\n let func = 0\n let inQuote = false\n let prevQuote = ''\n let escape = false\n\n for (let letter of string) {\n if (escape) {\n escape = false\n } else if (letter === '\\\\') {\n escape = true\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true\n prevQuote = letter\n } else if (letter === '(') {\n func += 1\n } else if (letter === ')') {\n if (func > 0) func -= 1\n } else if (func === 0) {\n if (separators.includes(letter)) split = true\n }\n\n if (split) {\n if (current !== '') array.push(current.trim())\n current = ''\n split = false\n } else {\n current += letter\n }\n }\n\n if (last || current !== '') array.push(current.trim())\n return array\n },\n\n space(string) {\n let spaces = [' ', '\\n', '\\t']\n return list.split(string, spaces)\n },\n\n comma(string) {\n return list.split(string, [','], true)\n }\n}\n\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { dirname, resolve, relative, sep } = require('path')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n constructor(stringify, root, opts, cssString) {\n this.stringify = stringify\n this.mapOpts = opts.map || {}\n this.root = root\n this.opts = opts\n this.css = cssString\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n }\n\n isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map\n }\n return this.previous().length > 0\n }\n\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = []\n if (this.root) {\n this.root.walk(node => {\n if (node.source && node.source.input.map) {\n let map = node.source.input.map\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map)\n }\n }\n })\n } else {\n let input = new Input(this.css, this.opts)\n if (input.map) this.previousMaps.push(input.map)\n }\n }\n\n return this.previousMaps\n }\n\n isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline\n }\n\n let annotation = this.mapOpts.annotation\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false\n }\n\n if (this.previous().length) {\n return this.previous().some(i => i.inline)\n }\n return true\n }\n\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent\n }\n if (this.previous().length) {\n return this.previous().some(i => i.withContent())\n }\n return true\n }\n\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return\n\n if (this.root) {\n let node\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i]\n if (node.type !== 'comment') continue\n if (node.text.indexOf('# sourceMappingURL=') === 0) {\n this.root.removeChild(i)\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/(\\n)?\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n }\n }\n\n setSourcesContent() {\n let already = {}\n if (this.root) {\n this.root.walk(node => {\n if (node.source) {\n let from = node.source.input.from\n if (from && !already[from]) {\n already[from] = true\n let fromUrl = this.usesFileUrls\n ? this.toFileUrl(from)\n : this.toUrl(this.path(from))\n this.map.setSourceContent(fromUrl, node.source.input.css)\n }\n }\n })\n } else if (this.css) {\n let from = this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n this.map.setSourceContent(from, this.css)\n }\n }\n\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file))\n let root = prev.root || dirname(prev.file)\n let map\n\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text)\n if (map.sourcesContent) {\n map.sourcesContent = map.sourcesContent.map(() => null)\n }\n } else {\n map = prev.consumer()\n }\n\n this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n }\n }\n\n isAnnotation() {\n if (this.isInline()) {\n return true\n }\n if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation\n }\n if (this.previous().length) {\n return this.previous().some(i => i.annotation)\n }\n return true\n }\n\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64')\n } else {\n return window.btoa(unescape(encodeURIComponent(str)))\n }\n }\n\n addAnnotation() {\n let content\n\n if (this.isInline()) {\n content =\n 'data:application/json;base64,' + this.toBase64(this.map.toString())\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation\n } else if (typeof this.mapOpts.annotation === 'function') {\n content = this.mapOpts.annotation(this.opts.to, this.root)\n } else {\n content = this.outputFile() + '.map'\n }\n let eol = '\\n'\n if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n }\n\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to)\n } else if (this.opts.from) {\n return this.path(this.opts.from)\n } else {\n return 'to.css'\n }\n }\n\n generateMap() {\n if (this.root) {\n this.generateString()\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer()\n prev.file = this.outputFile()\n this.map = SourceMapGenerator.fromSourceMap(prev)\n } else {\n this.map = new SourceMapGenerator({ file: this.outputFile() })\n this.map.addMapping({\n source: this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>',\n generated: { line: 1, column: 0 },\n original: { line: 1, column: 0 }\n })\n }\n\n if (this.isSourcesContent()) this.setSourcesContent()\n if (this.root && this.previous().length > 0) this.applyPrevMaps()\n if (this.isAnnotation()) this.addAnnotation()\n\n if (this.isInline()) {\n return [this.css]\n } else {\n return [this.css, this.map]\n }\n }\n\n path(file) {\n if (file.indexOf('<') === 0) return file\n if (/^\\w+:\\/\\//.test(file)) return file\n if (this.mapOpts.absolute) return file\n\n let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = dirname(resolve(from, this.mapOpts.annotation))\n }\n\n file = relative(from, file)\n return file\n }\n\n toUrl(path) {\n if (sep === '\\\\') {\n path = path.replace(/\\\\/g, '/')\n }\n return encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n }\n\n toFileUrl(path) {\n if (pathToFileURL) {\n return pathToFileURL(path).toString()\n } else {\n throw new Error(\n '`map.absolute` option is not available in this PostCSS build'\n )\n }\n }\n\n sourcePath(node) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from)\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node.source.input.from)\n } else {\n return this.toUrl(this.path(node.source.input.from))\n }\n }\n\n generateString() {\n this.css = ''\n this.map = new SourceMapGenerator({ file: this.outputFile() })\n\n let line = 1\n let column = 1\n\n let noSource = '<no source>'\n let mapping = {\n source: '',\n generated: { line: 0, column: 0 },\n original: { line: 0, column: 0 }\n }\n\n let lines, last\n this.stringify(this.root, (str, node, type) => {\n this.css += str\n\n if (node && type !== 'end') {\n mapping.generated.line = line\n mapping.generated.column = column - 1\n if (node.source && node.source.start) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.start.line\n mapping.original.column = node.source.start.column - 1\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n this.map.addMapping(mapping)\n }\n }\n\n lines = str.match(/\\n/g)\n if (lines) {\n line += lines.length\n last = str.lastIndexOf('\\n')\n column = str.length - last\n } else {\n column += str.length\n }\n\n if (node && type !== 'start') {\n let p = node.parent || { raws: {} }\n let childless =\n node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n if (!childless || node !== p.last || p.raws.semicolon) {\n if (node.source && node.source.end) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.end.line\n mapping.original.column = node.source.end.column - 1\n mapping.generated.line = line\n mapping.generated.column = column - 2\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n mapping.generated.line = line\n mapping.generated.column = column - 1\n this.map.addMapping(mapping)\n }\n }\n }\n })\n }\n\n generate() {\n this.clearAnnotation()\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap()\n } else {\n let result = ''\n this.stringify(this.root, i => {\n result += i\n })\n return [result]\n }\n }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\nlet parse = require('./parse')\nconst Result = require('./result')\n\nclass NoWorkResult {\n constructor(processor, css, opts) {\n css = css.toString()\n this.stringified = false\n\n this._processor = processor\n this._css = css\n this._opts = opts\n this._map = undefined\n let root\n\n let str = stringify\n this.result = new Result(this._processor, root, this._opts)\n this.result.css = css\n\n let self = this\n Object.defineProperty(this.result, 'root', {\n get() {\n return self.root\n }\n })\n\n let map = new MapGenerator(str, root, this._opts, css)\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate()\n if (generatedCSS) {\n this.result.css = generatedCSS\n }\n if (generatedMap) {\n this.result.map = generatedMap\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'NoWorkResult'\n }\n\n get processor() {\n return this.result.processor\n }\n\n get opts() {\n return this.result.opts\n }\n\n get css() {\n return this.result.css\n }\n\n get content() {\n return this.result.css\n }\n\n get map() {\n return this.result.map\n }\n\n get root() {\n if (this._root) {\n return this._root\n }\n\n let root\n let parser = parse\n\n try {\n root = parser(this._css, this._opts)\n } catch (error) {\n this.error = error\n }\n\n if (this.error) {\n throw this.error\n } else {\n this._root = root\n return root\n }\n }\n\n get messages() {\n return []\n }\n\n warnings() {\n return []\n }\n\n toString() {\n return this._css\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this._opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n\n return this.async().then(onFulfilled, onRejected)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n return Promise.resolve(this.result)\n }\n\n sync() {\n if (this.error) throw this.error\n return this.result\n }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\n\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor()\n\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n /* c8 ignore next 2 */\n continue\n }\n if (i === 'proxyCache') continue\n let value = obj[i]\n let type = typeof value\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent\n } else if (i === 'source') {\n cloned[i] = value\n } else if (Array.isArray(value)) {\n cloned[i] = value.map(j => cloneNode(j, cloned))\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value)\n cloned[i] = value\n }\n }\n\n return cloned\n}\n\nclass Node {\n constructor(defaults = {}) {\n this.raws = {}\n this[isClean] = false\n this[my] = true\n\n for (let name in defaults) {\n if (name === 'nodes') {\n this.nodes = []\n for (let node of defaults[name]) {\n if (typeof node.clone === 'function') {\n this.append(node.clone())\n } else {\n this.append(node)\n }\n }\n } else {\n this[name] = defaults[name]\n }\n }\n }\n\n error(message, opts = {}) {\n if (this.source) {\n let { start, end } = this.rangeBy(opts)\n return this.source.input.error(\n message,\n { line: start.line, column: start.column },\n { line: end.line, column: end.column },\n opts\n )\n }\n return new CssSyntaxError(message)\n }\n\n warn(result, text, opts) {\n let data = { node: this }\n for (let i in opts) data[i] = opts[i]\n return result.warn(text, data)\n }\n\n remove() {\n if (this.parent) {\n this.parent.removeChild(this)\n }\n this.parent = undefined\n return this\n }\n\n toString(stringifier = stringify) {\n if (stringifier.stringify) stringifier = stringifier.stringify\n let result = ''\n stringifier(this, i => {\n result += i\n })\n return result\n }\n\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name]\n }\n return this\n }\n\n clone(overrides = {}) {\n let cloned = cloneNode(this)\n for (let name in overrides) {\n cloned[name] = overrides[name]\n }\n return cloned\n }\n\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertBefore(this, cloned)\n return cloned\n }\n\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertAfter(this, cloned)\n return cloned\n }\n\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this\n let foundSelf = false\n for (let node of nodes) {\n if (node === this) {\n foundSelf = true\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node)\n bookmark = node\n } else {\n this.parent.insertBefore(bookmark, node)\n }\n }\n\n if (!foundSelf) {\n this.remove()\n }\n }\n\n return this\n }\n\n next() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index + 1]\n }\n\n prev() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index - 1]\n }\n\n before(add) {\n this.parent.insertBefore(this, add)\n return this\n }\n\n after(add) {\n this.parent.insertAfter(this, add)\n return this\n }\n\n root() {\n let result = this\n while (result.parent && result.parent.type !== 'document') {\n result = result.parent\n }\n return result\n }\n\n raw(prop, defaultType) {\n let str = new Stringifier()\n return str.raw(this, prop, defaultType)\n }\n\n cleanRaws(keepBetween) {\n delete this.raws.before\n delete this.raws.after\n if (!keepBetween) delete this.raws.between\n }\n\n toJSON(_, inputs) {\n let fixed = {}\n let emitInputs = inputs == null\n inputs = inputs || new Map()\n let inputsNextIndex = 0\n\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n /* c8 ignore next 2 */\n continue\n }\n if (name === 'parent' || name === 'proxyCache') continue\n let value = this[name]\n\n if (Array.isArray(value)) {\n fixed[name] = value.map(i => {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON(null, inputs)\n } else {\n return i\n }\n })\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs)\n } else if (name === 'source') {\n let inputId = inputs.get(value.input)\n if (inputId == null) {\n inputId = inputsNextIndex\n inputs.set(value.input, inputsNextIndex)\n inputsNextIndex++\n }\n fixed[name] = {\n inputId,\n start: value.start,\n end: value.end\n }\n } else {\n fixed[name] = value\n }\n }\n\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n }\n\n return fixed\n }\n\n positionInside(index) {\n let string = this.toString()\n let column = this.source.start.column\n let line = this.source.start.line\n\n for (let i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return { line, column }\n }\n\n positionBy(opts) {\n let pos = this.source.start\n if (opts.index) {\n pos = this.positionInside(opts.index)\n } else if (opts.word) {\n let index = this.toString().indexOf(opts.word)\n if (index !== -1) pos = this.positionInside(index)\n }\n return pos\n }\n\n rangeBy(opts) {\n let start = {\n line: this.source.start.line,\n column: this.source.start.column\n }\n let end = this.source.end\n ? {\n line: this.source.end.line,\n column: this.source.end.column + 1\n }\n : {\n line: start.line,\n column: start.column + 1\n }\n\n if (opts.word) {\n let index = this.toString().indexOf(opts.word)\n if (index !== -1) {\n start = this.positionInside(index)\n end = this.positionInside(index + opts.word.length)\n }\n } else {\n if (opts.start) {\n start = {\n line: opts.start.line,\n column: opts.start.column\n }\n } else if (opts.index) {\n start = this.positionInside(opts.index)\n }\n\n if (opts.end) {\n end = {\n line: opts.end.line,\n column: opts.end.column\n }\n } else if (opts.endIndex) {\n end = this.positionInside(opts.endIndex)\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1)\n }\n }\n\n if (\n end.line < start.line ||\n (end.line === start.line && end.column <= start.column)\n ) {\n end = { line: start.line, column: start.column + 1 }\n }\n\n return { start, end }\n }\n\n getProxyProcessor() {\n return {\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (\n prop === 'prop' ||\n prop === 'value' ||\n prop === 'name' ||\n prop === 'params' ||\n prop === 'important' ||\n /* c8 ignore next */\n prop === 'text'\n ) {\n node.markDirty()\n }\n return true\n },\n\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else {\n return node[prop]\n }\n }\n }\n }\n\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor())\n }\n return this.proxyCache\n }\n\n addToError(error) {\n error.postcssNode = this\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n )\n }\n return error\n }\n\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false\n let next = this\n while ((next = next.parent)) {\n next[isClean] = false\n }\n }\n }\n\n get proxyOf() {\n return this\n }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Container = require('./container')\nlet Parser = require('./parser')\nlet Input = require('./input')\n\nfunction parse(css, opts) {\n let input = new Input(css, opts)\n let parser = new Parser(input)\n try {\n parser.parse()\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse SCSS with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-scss parser'\n } else if (/\\.sass/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Sass with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-sass parser'\n } else if (/\\.less$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Less with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-less parser'\n }\n }\n }\n throw e\n }\n\n return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet tokenizer = require('./tokenize')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n}\n\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i]\n let pos = token[3] || token[2]\n if (pos) return pos\n }\n}\n\nclass Parser {\n constructor(input) {\n this.input = input\n\n this.root = new Root()\n this.current = this.root\n this.spaces = ''\n this.semicolon = false\n this.customProperty = false\n\n this.createTokenizer()\n this.root.source = { input, start: { offset: 0, line: 1, column: 1 } }\n }\n\n createTokenizer() {\n this.tokenizer = tokenizer(this.input)\n }\n\n parse() {\n let token\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1]\n break\n\n case ';':\n this.freeSemicolon(token)\n break\n\n case '}':\n this.end(token)\n break\n\n case 'comment':\n this.comment(token)\n break\n\n case 'at-word':\n this.atrule(token)\n break\n\n case '{':\n this.emptyRule(token)\n break\n\n default:\n this.other(token)\n break\n }\n }\n this.endFile()\n }\n\n comment(token) {\n let node = new Comment()\n this.init(node, token[2])\n node.source.end = this.getPosition(token[3] || token[2])\n\n let text = token[1].slice(2, -2)\n if (/^\\s*$/.test(text)) {\n node.text = ''\n node.raws.left = text\n node.raws.right = ''\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n node.text = match[2]\n node.raws.left = match[1]\n node.raws.right = match[3]\n }\n }\n\n emptyRule(token) {\n let node = new Rule()\n this.init(node, token[2])\n node.selector = ''\n node.raws.between = ''\n this.current = node\n }\n\n other(start) {\n let end = false\n let type = null\n let colon = false\n let bracket = null\n let brackets = []\n let customProperty = start[1].startsWith('--')\n\n let tokens = []\n let token = start\n while (token) {\n type = token[0]\n tokens.push(token)\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token\n brackets.push(type === '(' ? ')' : ']')\n } else if (customProperty && colon && type === '{') {\n if (!bracket) bracket = token\n brackets.push('}')\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens, customProperty)\n return\n } else {\n break\n }\n } else if (type === '{') {\n this.rule(tokens)\n return\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop())\n end = true\n break\n } else if (type === ':') {\n colon = true\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n if (brackets.length === 0) bracket = null\n }\n\n token = this.tokenizer.nextToken()\n }\n\n if (this.tokenizer.endOfFile()) end = true\n if (brackets.length > 0) this.unclosedBracket(bracket)\n\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0]\n if (token !== 'space' && token !== 'comment') break\n this.tokenizer.back(tokens.pop())\n }\n }\n this.decl(tokens, customProperty)\n } else {\n this.unknownWord(tokens)\n }\n }\n\n rule(tokens) {\n tokens.pop()\n\n let node = new Rule()\n this.init(node, tokens[0][2])\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n this.raw(node, 'selector', tokens)\n this.current = node\n }\n\n decl(tokens, customProperty) {\n let node = new Declaration()\n this.init(node, tokens[0][2])\n\n let last = tokens[tokens.length - 1]\n if (last[0] === ';') {\n this.semicolon = true\n tokens.pop()\n }\n\n node.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n )\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens)\n node.raws.before += tokens.shift()[1]\n }\n node.source.start = this.getPosition(tokens[0][2])\n\n node.prop = ''\n while (tokens.length) {\n let type = tokens[0][0]\n if (type === ':' || type === 'space' || type === 'comment') {\n break\n }\n node.prop += tokens.shift()[1]\n }\n\n node.raws.between = ''\n\n let token\n while (tokens.length) {\n token = tokens.shift()\n\n if (token[0] === ':') {\n node.raws.between += token[1]\n break\n } else {\n if (token[0] === 'word' && /\\w/.test(token[1])) {\n this.unknownWord([token])\n }\n node.raws.between += token[1]\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0]\n node.prop = node.prop.slice(1)\n }\n\n let firstSpaces = []\n let next\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n firstSpaces.push(tokens.shift())\n }\n\n this.precheckMissedSemicolon(tokens)\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n if (token[1].toLowerCase() === '!important') {\n node.important = true\n let string = this.stringFrom(tokens, i)\n string = this.spacesFromEnd(tokens) + string\n if (string !== ' !important') node.raws.important = string\n break\n } else if (token[1].toLowerCase() === 'important') {\n let cache = tokens.slice(0)\n let str = ''\n for (let j = i; j > 0; j--) {\n let type = cache[j][0]\n if (str.trim().indexOf('!') === 0 && type !== 'space') {\n break\n }\n str = cache.pop()[1] + str\n }\n if (str.trim().indexOf('!') === 0) {\n node.important = true\n node.raws.important = str\n tokens = cache\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break\n }\n }\n\n let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n if (hasWord) {\n node.raws.between += firstSpaces.map(i => i[1]).join('')\n firstSpaces = []\n }\n this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n if (node.value.includes(':') && !customProperty) {\n this.checkMissedSemicolon(tokens)\n }\n }\n\n atrule(token) {\n let node = new AtRule()\n node.name = token[1].slice(1)\n if (node.name === '') {\n this.unnamedAtrule(node, token)\n }\n this.init(node, token[2])\n\n let type\n let prev\n let shift\n let last = false\n let open = false\n let params = []\n let brackets = []\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n type = token[0]\n\n if (type === '(' || type === '[') {\n brackets.push(type === '(' ? ')' : ']')\n } else if (type === '{' && brackets.length > 0) {\n brackets.push('}')\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n }\n\n if (brackets.length === 0) {\n if (type === ';') {\n node.source.end = this.getPosition(token[2])\n this.semicolon = true\n break\n } else if (type === '{') {\n open = true\n break\n } else if (type === '}') {\n if (params.length > 0) {\n shift = params.length - 1\n prev = params[shift]\n while (prev && prev[0] === 'space') {\n prev = params[--shift]\n }\n if (prev) {\n node.source.end = this.getPosition(prev[3] || prev[2])\n }\n }\n this.end(token)\n break\n } else {\n params.push(token)\n }\n } else {\n params.push(token)\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true\n break\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params)\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params)\n this.raw(node, 'params', params)\n if (last) {\n token = params[params.length - 1]\n node.source.end = this.getPosition(token[3] || token[2])\n this.spaces = node.raws.between\n node.raws.between = ''\n }\n } else {\n node.raws.afterName = ''\n node.params = ''\n }\n\n if (open) {\n node.nodes = []\n this.current = node\n }\n }\n\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.semicolon = false\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.spaces = ''\n\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2])\n this.current = this.current.parent\n } else {\n this.unexpectedClose(token)\n }\n }\n\n endFile() {\n if (this.current.parent) this.unclosedBlock()\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n }\n\n freeSemicolon(token) {\n this.spaces += token[1]\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1]\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces\n this.spaces = ''\n }\n }\n }\n\n // Helpers\n\n getPosition(offset) {\n let pos = this.input.fromOffset(offset)\n return {\n offset,\n line: pos.line,\n column: pos.col\n }\n }\n\n init(node, offset) {\n this.current.push(node)\n node.source = {\n start: this.getPosition(offset),\n input: this.input\n }\n node.raws.before = this.spaces\n this.spaces = ''\n if (node.type !== 'comment') this.semicolon = false\n }\n\n raw(node, prop, tokens, customProperty) {\n let token, type\n let length = tokens.length\n let value = ''\n let clean = true\n let next, prev\n\n for (let i = 0; i < length; i += 1) {\n token = tokens[i]\n type = token[0]\n if (type === 'space' && i === length - 1 && !customProperty) {\n clean = false\n } else if (type === 'comment') {\n prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === ',') {\n clean = false\n } else {\n value += token[1]\n }\n } else {\n clean = false\n }\n } else {\n value += token[1]\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], '')\n node.raws[prop] = { value, raw }\n }\n node[prop] = value\n }\n\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n spacesAndCommentsFromStart(tokens) {\n let next\n let spaces = ''\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n spaces += tokens.shift()[1]\n }\n return spaces\n }\n\n spacesFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n stringFrom(tokens, from) {\n let result = ''\n for (let i = from; i < tokens.length; i++) {\n result += tokens[i][1]\n }\n tokens.splice(from, tokens.length - from)\n return result\n }\n\n colon(tokens) {\n let brackets = 0\n let token, type, prev\n for (let [i, element] of tokens.entries()) {\n token = element\n type = token[0]\n\n if (type === '(') {\n brackets += 1\n }\n if (type === ')') {\n brackets -= 1\n }\n if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token)\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue\n } else {\n return i\n }\n }\n\n prev = token\n }\n return false\n }\n\n // Errors\n\n unclosedBracket(bracket) {\n throw this.input.error(\n 'Unclosed bracket',\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n )\n }\n\n unknownWord(tokens) {\n throw this.input.error(\n 'Unknown word',\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n )\n }\n\n unexpectedClose(token) {\n throw this.input.error(\n 'Unexpected }',\n { offset: token[2] },\n { offset: token[2] + 1 }\n )\n }\n\n unclosedBlock() {\n let pos = this.current.source.start\n throw this.input.error('Unclosed block', pos.line, pos.column)\n }\n\n doubleColon(token) {\n throw this.input.error(\n 'Double colon',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n unnamedAtrule(node, token) {\n throw this.input.error(\n 'At-rule without name',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n precheckMissedSemicolon(/* tokens */) {\n // Hook for Safe Parser\n }\n\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens)\n if (colon === false) return\n\n let founded = 0\n let token\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j]\n if (token[0] !== 'space') {\n founded += 1\n if (founded === 2) break\n }\n }\n // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n // And because we need it after that one we do +1 to get the next one.\n throw this.input.error(\n 'Missed semicolon',\n token[0] === 'word' ? token[3] + 1 : token[2]\n )\n }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet LazyResult = require('./lazy-result')\nlet Container = require('./container')\nlet Processor = require('./processor')\nlet stringify = require('./stringify')\nlet fromJSON = require('./fromJSON')\nlet Document = require('./document')\nlet Warning = require('./warning')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Result = require('./result.js')\nlet Input = require('./input')\nlet parse = require('./parse')\nlet list = require('./list')\nlet Rule = require('./rule')\nlet Root = require('./root')\nlet Node = require('./node')\n\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0]\n }\n return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false\n function creator(...args) {\n // eslint-disable-next-line no-console\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': postcss.plugin was deprecated. Migration guide:\\n' +\n 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n )\n if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n /* c8 ignore next 7 */\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n 'https://www.w3ctech.com/topic/2226'\n )\n }\n }\n let transformer = initializer(...args)\n transformer.postcssPlugin = name\n transformer.postcssVersion = new Processor().version\n return transformer\n }\n\n let cache\n Object.defineProperty(creator, 'postcss', {\n get() {\n if (!cache) cache = creator()\n return cache\n }\n })\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts)\n }\n\n return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString()\n } else {\n /* c8 ignore next 2 */\n return window.atob(str)\n }\n}\n\nclass PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return\n this.loadAnnotation(css)\n this.inline = this.startWith(this.annotation, 'data:')\n\n let prev = opts.map ? opts.map.prev : undefined\n let text = this.loadMap(opts.from, prev)\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from\n }\n if (this.mapFile) this.root = dirname(this.mapFile)\n if (text) this.text = text\n }\n\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text)\n }\n return this.consumerCache\n }\n\n withContent() {\n return !!(\n this.consumer().sourcesContent &&\n this.consumer().sourcesContent.length > 0\n )\n }\n\n startWith(string, start) {\n if (!string) return false\n return string.substr(0, start.length) === start\n }\n\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n }\n\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm)\n if (!comments) return\n\n // sourceMappingURLs from comments, strings, etc.\n let start = css.lastIndexOf(comments.pop())\n let end = css.indexOf('*/', start)\n\n if (start > -1 && end > -1) {\n // Locate the last sourceMappingURL to avoid pickin\n this.annotation = this.getAnnotationURL(css.substring(start, end))\n }\n }\n\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n let baseUri = /^data:application\\/json;base64,/\n let charsetUri = /^data:application\\/json;charset=utf-?8,/\n let uri = /^data:application\\/json,/\n\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length))\n }\n\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length))\n }\n\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n throw new Error('Unsupported source map encoding ' + encoding)\n }\n\n loadFile(path) {\n this.root = dirname(path)\n if (existsSync(path)) {\n this.mapFile = path\n return readFileSync(path, 'utf-8').toString().trim()\n }\n }\n\n loadMap(file, prev) {\n if (prev === false) return false\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev\n } else if (typeof prev === 'function') {\n let prevPath = prev(file)\n if (prevPath) {\n let map = this.loadFile(prevPath)\n if (!map) {\n throw new Error(\n 'Unable to load previous source map: ' + prevPath.toString()\n )\n }\n return map\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString()\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString()\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev)\n } else {\n throw new Error(\n 'Unsupported previous source map format: ' + prev.toString()\n )\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation)\n } else if (this.annotation) {\n let map = this.annotation\n if (file) map = join(dirname(file), map)\n return this.loadFile(map)\n }\n }\n\n isMap(map) {\n if (typeof map !== 'object') return false\n return (\n typeof map.mappings === 'string' ||\n typeof map._mappings === 'string' ||\n Array.isArray(map.sections)\n )\n }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet NoWorkResult = require('./no-work-result')\nlet LazyResult = require('./lazy-result')\nlet Document = require('./document')\nlet Root = require('./root')\n\nclass Processor {\n constructor(plugins = []) {\n this.version = '8.4.20'\n this.plugins = this.normalize(plugins)\n }\n\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]))\n return this\n }\n\n process(css, opts = {}) {\n if (\n this.plugins.length === 0 &&\n typeof opts.parser === 'undefined' &&\n typeof opts.stringifier === 'undefined' &&\n typeof opts.syntax === 'undefined'\n ) {\n return new NoWorkResult(this, css, opts)\n } else {\n return new LazyResult(this, css, opts)\n }\n }\n\n normalize(plugins) {\n let normalized = []\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i()\n } else if (i.postcss) {\n i = i.postcss\n }\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins)\n } else if (typeof i === 'object' && i.postcssPlugin) {\n normalized.push(i)\n } else if (typeof i === 'function') {\n normalized.push(i)\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n 'one of the syntax/parser/stringifier options as outlined ' +\n 'in your PostCSS runner documentation.'\n )\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin')\n }\n }\n return normalized\n }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = undefined\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n\n get content() {\n return this.css\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'root'\n if (!this.nodes) this.nodes = []\n }\n\n removeChild(child, ignore) {\n let index = this.index(child)\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before\n }\n\n return super.removeChild(child)\n }\n\n normalize(child, sample, type) {\n let nodes = super.normalize(child)\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before\n } else {\n delete sample.raws.before\n }\n } else if (this.first !== sample) {\n for (let node of nodes) {\n node.raws.before = sample.raws.before\n }\n }\n }\n\n return nodes\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n return lazy.stringify()\n }\n}\n\nRoot.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'rule'\n if (!this.nodes) this.nodes = []\n }\n\n get selectors() {\n return list.comma(this.selector)\n }\n\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null\n let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n this.selector = values.join(sep)\n }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nconst DEFAULT_RAW = {\n colon: ': ',\n indent: ' ',\n beforeDecl: '\\n',\n beforeRule: '\\n',\n beforeOpen: ' ',\n beforeClose: '\\n',\n beforeComment: '\\n',\n after: '\\n',\n emptyBody: '',\n commentLeft: ' ',\n commentRight: ' ',\n semicolon: false\n}\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n constructor(builder) {\n this.builder = builder\n }\n\n stringify(node, semicolon) {\n /* c8 ignore start */\n if (!this[node.type]) {\n throw new Error(\n 'Unknown AST node type ' +\n node.type +\n '. ' +\n 'Maybe you need to change PostCSS stringifier.'\n )\n }\n /* c8 ignore stop */\n this[node.type](node, semicolon)\n }\n\n document(node) {\n this.body(node)\n }\n\n root(node) {\n this.body(node)\n if (node.raws.after) this.builder(node.raws.after)\n }\n\n comment(node) {\n let left = this.raw(node, 'left', 'commentLeft')\n let right = this.raw(node, 'right', 'commentRight')\n this.builder('/*' + left + node.text + right + '*/', node)\n }\n\n decl(node, semicolon) {\n let between = this.raw(node, 'between', 'colon')\n let string = node.prop + between + this.rawValue(node, 'value')\n\n if (node.important) {\n string += node.raws.important || ' !important'\n }\n\n if (semicolon) string += ';'\n this.builder(string, node)\n }\n\n rule(node) {\n this.block(node, this.rawValue(node, 'selector'))\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end')\n }\n }\n\n atrule(node, semicolon) {\n let name = '@' + node.name\n let params = node.params ? this.rawValue(node, 'params') : ''\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName\n } else if (params) {\n name += ' '\n }\n\n if (node.nodes) {\n this.block(node, name + params)\n } else {\n let end = (node.raws.between || '') + (semicolon ? ';' : '')\n this.builder(name + params + end, node)\n }\n }\n\n body(node) {\n let last = node.nodes.length - 1\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break\n last -= 1\n }\n\n let semicolon = this.raw(node, 'semicolon')\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i]\n let before = this.raw(child, 'before')\n if (before) this.builder(before)\n this.stringify(child, last !== i || semicolon)\n }\n }\n\n block(node, start) {\n let between = this.raw(node, 'between', 'beforeOpen')\n this.builder(start + between + '{', node, 'start')\n\n let after\n if (node.nodes && node.nodes.length) {\n this.body(node)\n after = this.raw(node, 'after')\n } else {\n after = this.raw(node, 'after', 'emptyBody')\n }\n\n if (after) this.builder(after)\n this.builder('}', node, 'end')\n }\n\n raw(node, own, detect) {\n let value\n if (!detect) detect = own\n\n // Already had\n if (own) {\n value = node.raws[own]\n if (typeof value !== 'undefined') return value\n }\n\n let parent = node.parent\n\n if (detect === 'before') {\n // Hack for first rule in CSS\n if (!parent || (parent.type === 'root' && parent.first === node)) {\n return ''\n }\n\n // `root` nodes in `document` should use only their own raws\n if (parent && parent.type === 'document') {\n return ''\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect]\n\n // Detect style by other nodes\n let root = node.root()\n if (!root.rawCache) root.rawCache = {}\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect]\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect)\n } else {\n let method = 'raw' + capitalize(detect)\n if (this[method]) {\n value = this[method](root, node)\n } else {\n root.walk(i => {\n value = i.raws[own]\n if (typeof value !== 'undefined') return false\n })\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n root.rawCache[detect] = value\n return value\n }\n\n rawSemicolon(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawEmptyBody(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawIndent(root) {\n if (root.raws.indent) return root.raws.indent\n let value\n root.walk(i => {\n let p = i.parent\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n let parts = i.raws.before.split('\\n')\n value = parts[parts.length - 1]\n value = value.replace(/\\S/g, '')\n return false\n }\n }\n })\n return value\n }\n\n rawBeforeComment(root, node) {\n let value\n root.walkComments(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeDecl(root, node) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeRule(root) {\n let value\n root.walk(i => {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeClose(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeOpen(root) {\n let value\n root.walk(i => {\n if (i.type !== 'decl') {\n value = i.raws.between\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawColon(root) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '')\n return false\n }\n })\n return value\n }\n\n beforeAfter(node, detect) {\n let value\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment')\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule')\n } else {\n value = this.raw(node, null, 'beforeClose')\n }\n\n let buf = node.parent\n let depth = 0\n while (buf && buf.type !== 'root') {\n depth += 1\n buf = buf.parent\n }\n\n if (value.includes('\\n')) {\n let indent = this.raw(node, null, 'indent')\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent\n }\n }\n\n return value\n }\n\n rawValue(node, prop) {\n let value = node[prop]\n let raw = node.raws[prop]\n if (raw && raw.value === value) {\n return raw.raw\n }\n\n return value\n }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n let str = new Stringifier(builder)\n str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n let css = input.css.valueOf()\n let ignore = options.ignoreErrors\n\n let code, next, quote, content, escape\n let escaped, escapePos, prev, n, currentToken\n\n let length = css.length\n let pos = 0\n let buffer = []\n let returned = []\n\n function position() {\n return pos\n }\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, pos)\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length\n }\n\n function nextToken(opts) {\n if (returned.length) return returned.pop()\n if (pos >= length) return\n\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n code = css.charCodeAt(pos)\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos\n do {\n next += 1\n code = css.charCodeAt(next)\n } while (\n code === SPACE ||\n code === NEWLINE ||\n code === TAB ||\n code === CR ||\n code === FEED\n )\n\n currentToken = ['space', css.slice(pos, next)]\n pos = next - 1\n break\n }\n\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code)\n currentToken = [controlChar, controlChar, pos]\n break\n }\n\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : ''\n n = css.charCodeAt(pos + 1)\n if (\n prev === 'url' &&\n n !== SINGLE_QUOTE &&\n n !== DOUBLE_QUOTE &&\n n !== SPACE &&\n n !== NEWLINE &&\n n !== TAB &&\n n !== FEED &&\n n !== CR\n ) {\n next = pos\n do {\n escaped = false\n next = css.indexOf(')', next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos\n break\n } else {\n unclosed('bracket')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n pos = next\n } else {\n next = css.indexOf(')', pos + 1)\n content = css.slice(pos, next + 1)\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', pos]\n } else {\n currentToken = ['brackets', content, pos, next]\n pos = next\n }\n }\n\n break\n }\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n next = pos\n do {\n escaped = false\n next = css.indexOf(quote, next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1\n break\n } else {\n unclosed('string')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['string', css.slice(pos, next + 1), pos, next]\n pos = next\n break\n }\n\n case AT: {\n RE_AT_END.lastIndex = pos + 1\n RE_AT_END.test(css)\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_AT_END.lastIndex - 2\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n case BACKSLASH: {\n next = pos\n escape = true\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1\n escape = !escape\n }\n code = css.charCodeAt(next + 1)\n if (\n escape &&\n code !== SLASH &&\n code !== SPACE &&\n code !== NEWLINE &&\n code !== TAB &&\n code !== CR &&\n code !== FEED\n ) {\n next += 1\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length\n } else {\n unclosed('comment')\n }\n }\n\n currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n pos = next\n } else {\n RE_WORD_END.lastIndex = pos + 1\n RE_WORD_END.test(css)\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_WORD_END.lastIndex - 2\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n buffer.push(currentToken)\n pos = next\n }\n\n break\n }\n }\n\n pos++\n return currentToken\n }\n\n function back(token) {\n returned.push(token)\n }\n\n return {\n back,\n nextToken,\n endOfFile,\n position\n }\n}\n","/* eslint-disable no-console */\n'use strict'\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n if (printed[message]) return\n printed[message] = true\n\n if (typeof console !== 'undefined' && console.warn) {\n console.warn(message)\n }\n}\n","'use strict'\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n plugin: this.plugin,\n index: this.index,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\nmodule.exports = { nanoid, customAlphabet }\n"],"names":["_interopRequireDefault","exports","_react","_default","default","createElement","d","createHorizontalStrength","createVerticalStrength","createScrollingComponent","WrappedComponent","ScrollingComponent","props","_reactDnd","DragDropContextConsumer","_ref3","dragDropManager","undefined","_extends","obj","__esModule","newObj","key","Object","prototype","hasOwnProperty","call","desc","defineProperty","getOwnPropertyDescriptor","get","set","_interopRequireWildcard","_propTypes","_reactDom","_lodash","_raf","_reactDisplayName","_hoistNonReactStatics","_util","_typeof","Symbol","iterator","constructor","assign","target","i","arguments","length","source","apply","this","_defineProperties","descriptor","enumerable","configurable","writable","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_assertThisInitialized","self","ReferenceError","_defineProperty","value","_buffer","_ref","point","x","w","y","h","buffer","Math","min","_ref2","defaultHorizontalStrength","defaultVerticalStrength","_Component","ctx","_this","instance","Constructor","TypeError","_classCallCheck","_possibleConstructorReturn","evt","_this$container$getBo","container","getBoundingClientRect","box","left","top","width","height","coords","getCoords","_this$props","horizontalStrength","verticalStrength","scaleX","scaleY","frame","startScrolling","trailing","dragging","attached","attach","updateScrolling","wrappedInstance","createRef","protoProps","subClass","superClass","create","_inherits","_this2","findDOMNode","current","addEventListener","handleEvent","window","document","body","clearMonitorSubscription","getMonitor","subscribeToStateChange","handleMonitorChange","removeEventListener","stopScrolling","isDragging","_this3","tick","_this3$props","strengthMultiplier","onScrollChange","scrollLeft","scrollTop","scrollWidth","scrollHeight","clientWidth","clientHeight","intBetween","detach","cancel","_this$props2","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","ref","Component","concat","object","isRequired","func","number","noop","max","val","floor","type","changedTouches","clientX","clientY","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","name","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","objectPrototype","module","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","e","input","isSpace","c","collectCharacters","regEx","chars","match","exec","substring","pos","url","descriptors","currentDescriptor","state","inputLength","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","candidates","slice","replace","parseDescriptors","tokenize","charAt","push","lastChar","intVal","floatVal","pError","candidate","parseInt","parseFloat","test","console","log","String","isColorSupported","reset","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","calculateSizeAndPositionDataAndUpdateScrollOffset","cellCount","cellSize","computeMetadataCallback","computeMetadataCallbackProps","nextCellsCount","nextCellSize","nextScrollToIndex","scrollToIndex","updateScrollOffsetForScrollToIndex","CellSizeAndPositionManager","cellSizeGetter","estimatedCellSize","_cellSizeGetter","_cellCount","_estimatedCellSize","_lastMeasuredIndex","index","Error","lastMeasuredCellSizeAndPosition","getSizeAndPositionOfLastMeasuredCell","offset","size","isNaN","_cellSizeAndPositionData","_lastBatchedIndex","_ref3$align","align","containerSize","currentOffset","targetIndex","idealOffset","datum","getSizeAndPositionOfCell","maxOffset","minOffset","totalSize","getTotalSize","params","start","_findNearestCell","stop","high","low","middle","interval","_binarySearch","lastMeasuredIndex","_exponentialSearch","ScalingCellSizeAndPositionManager","_ref$maxScrollSize","maxScrollSize","chrome","_cellSizeAndPositionManager","_maxScrollSize","configure","getCellCount","getEstimatedCellSize","getLastMeasuredIndex","safeTotalSize","offsetPercentage","_getOffsetPercentage","round","_safeOffsetToOffset","getUpdatedOffsetForIndex","_offsetToSafeOffset","_ref4","getVisibleCellRange","resetCell","_ref5","_ref6","_ref7","createCallbackMemoizer","requireAllKeys","cachedIndices","callback","indices","allInitialized","every","Array","isArray","indexChanged","some","cachedValue","join","updateScrollIndexHelper","cellSizeAndPositionManager","previousCellsCount","previousCellSize","previousScrollToAlignment","previousScrollToIndex","previousSize","scrollOffset","scrollToAlignment","sizeJustIncreasedFromZero","updateScrollIndexCallback","hasScrollToIndex","win","scrollbarSize","recalc","canUseDOM","scrollDiv","style","position","overflow","appendChild","offsetWidth","removeChild","_class","_temp","request","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","id","clearTimeout","raf","caf","cancelAnimationTimeout","requestAnimationTimeout","delay","Promise","resolve","then","Date","now","timeout","ownKeys","enumerableOnly","symbols","filter","sym","_objectSpread","forEach","getOwnPropertyDescriptors","defineProperties","SCROLL_POSITION_CHANGE_REASONS","Grid","_React$PureComponent","_disablePointerEventsTimeoutId","setState","isScrolling","needToResetStyleCache","onSectionRendered","_onGridRenderedMemoizer","columnOverscanStartIndex","_columnStartIndex","columnOverscanStopIndex","_columnStopIndex","columnStartIndex","_renderedColumnStartIndex","columnStopIndex","_renderedColumnStopIndex","rowOverscanStartIndex","_rowStartIndex","rowOverscanStopIndex","_rowStopIndex","rowStartIndex","_renderedRowStartIndex","rowStopIndex","_renderedRowStopIndex","_scrollingContainer","event","handleScrollEvent","columnSizeAndPositionManager","columnCount","_wrapSizeGetter","columnWidth","_getEstimatedColumnSize","rowSizeAndPositionManager","rowCount","rowHeight","_getEstimatedRowSize","instanceProps","prevColumnWidth","prevRowHeight","prevColumnCount","prevRowCount","prevIsScrolling","prevScrollToColumn","scrollToColumn","prevScrollToRow","scrollToRow","scrollbarSizeMeasured","scrollDirectionHorizontal","scrollDirectionVertical","scrollPositionChangeReason","_initialScrollTop","_getCalculatedScrollTop","_initialScrollLeft","_getCalculatedScrollLeft","_ref$alignment","alignment","_ref$columnIndex","columnIndex","_ref$rowIndex","rowIndex","offsetProps","_ref2$scrollLeft","scrollLeftParam","_ref2$scrollTop","scrollTopParam","_debounceScrollEnded","autoHeight","autoWidth","totalRowsHeight","totalColumnsWidth","newState","_invokeOnScrollMemoizer","_deferredInvalidateColumnIndex","_deferredInvalidateRowIndex","_ref4$columnIndex","_ref4$rowIndex","_this$props3","_recomputeScrollLeftFlag","_recomputeScrollTopFlag","_styleCache","_cellCache","forceUpdate","_updateScrollLeftForScrollToColumn","_updateScrollTopForScrollToRow","_this$props4","getScrollbarSize","_handleInvalidatedGridSize","prevState","stateUpdate","_getScrollToPositionStateUpdate","sizeIsBiggerThanZero","_invokeOnGridRenderedHelper","_maybeCallOnScrollbarPresenceChange","prevProps","_this$props5","_this$state","columnOrRowCountJustIncreasedFromZero","_this$props6","autoContainerWidth","className","containerProps","containerRole","containerStyle","noContentRenderer","role","tabIndex","_this$state2","_isScrolling","gridStyle","boxSizing","direction","WebkitOverflowScrolling","willChange","_resetStyleCache","_calculateChildrenToRender","verticalScrollBarSize","horizontalScrollBarSize","_horizontalScrollBarSize","_verticalScrollBarSize","_scrollbarPresenceChanged","overflowX","overflowY","childrenToDisplay","_childrenToDisplay","showNoContentRenderer","_setScrollingContainerRef","onScroll","_onScroll","maxWidth","maxHeight","pointerEvents","cellRenderer","cellRangeRenderer","deferredMeasurementCache","overscanColumnCount","overscanIndicesGetter","overscanRowCount","isScrollingOptOut","visibleColumnIndices","visibleRowIndices","horizontalOffsetAdjustment","getOffsetAdjustment","verticalOffsetAdjustment","overscanColumnIndices","overscanCellsCount","scrollDirection","startIndex","stopIndex","overscanRowIndices","overscanStartIndex","overscanStopIndex","hasFixedHeight","has","hasFixedWidth","cellCache","parent","styleCache","scrollingResetTimeInterval","_debounceScrollEndedCallback","recomputeGridSize","_onScrollMemoizer","Boolean","onScrollbarPresenceChange","horizontal","vertical","_ref8","_getScrollLeftForScrollToColumnStateUpdate","_getScrollTopForScrollToRowStateUpdate","nextProps","maybeStateA","maybeStateB","estimatedColumnSize","estimatedRowSize","_ref9","finalColumn","scrollBarSize","calculatedScrollLeft","finalRow","calculatedScrollTop","renderedCells","areOffsetsAdjusted","canCacheStyle","rowDatum","columnDatum","isVisible","cellRendererParams","renderedCell","polyfill","ArrowKeyStepper","_getPrototypeOf2","_len","args","_key","disabled","mode","_this$_getScrollState","_getScrollState","scrollToColumnPrevious","scrollToRowPrevious","_this$_getScrollState2","preventDefault","_updateScrollState","children","_this$_getScrollState3","onKeyDown","_onKeyDown","_onSectionRendered","isControlled","onScrollToChange","createDetectElementResize","nonce","hostWindow","_window","attachEvent","g","requestFrame","fn","cancelFrame","resetTriggers","element","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","offsetHeight","scrollListener","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","animation","keyframeprefix","animationstartevent","domPrefixes","split","startEvents","elm","animationName","toLowerCase","animationKeyframes","animationStyle","addResizeListener","doc","ownerDocument","elementStyle","getComputedStyle","getElementById","css","head","getElementsByTagName","setAttribute","styleSheet","cssText","createTextNode","createStyles","resizeTriggersHtml","trustedTypes","staticPolicy","createPolicy","createHTML","innerHTML","__animationListener__","removeResizeListener","detachEvent","splice","AutoSizer","_React$Component","defaultHeight","defaultWidth","disableHeight","disableWidth","onResize","_parentNode","paddingLeft","paddingRight","paddingTop","paddingBottom","newHeight","newWidth","autoSizer","_autoSizer","parentNode","defaultView","HTMLElement","_detectElementResize","_onResize","outerStyle","childParams","_setRef","CellMeasurer","cache","_this$props$columnInd","_this$props$rowIndex","_this$_getCellMeasure","_getCellMeasurements","getHeight","getWidth","Element","warn","_child","_maybeMeasureCell","measure","_measure","registerChild","_registerChild","node","styleWidth","styleHeight","ceil","_this$props2$columnIn","_this$props2$rowIndex","_this$_getCellMeasure2","invalidateCellSizeAfterRender","CellMeasurerCache","_keyMapper","_columnWidthCache","_defaultWidth","_rowHeightCache","_defaultHeight","fixedHeight","fixedWidth","keyMapper","minHeight","minWidth","_hasFixedHeight","_hasFixedWidth","_minHeight","_minWidth","defaultKeyMapper","_cellHeightCache","_cellWidthCache","_updateCachedColumnAndRowSizes","_rowCount","_columnCount","_key2","columnKey","_i","rowKey","CollectionView","cellLayoutManager","_onSectionRenderedMemoizer","getLastRenderedIndices","scrollToCell","scrollPosition","getScrollPositionForCell","cellIndex","_setScrollPosition","_enablePointerEventsAfterDelay","isScrollingChange","_scrollbarSize","_cellLayoutManager$ge","totalHeight","totalWidth","cancelable","_scrollbarSizeMeasured","_calculateSizeAndPositionDataOnNextUpdate","_updateScrollPositionForScrollToCell","_invokeOnSectionRenderedHelper","_cellLayoutManager$ge2","horizontalOverscanSize","verticalOverscanSize","_this$state3","_lastRenderedCellCount","_lastRenderedCellLayoutManager","calculateSizeAndPositionData","_cellLayoutManager$ge3","right","bottom","cellRenderers","collectionStyle","Section","_indexMap","_indices","SectionManager","sectionSize","_sectionSize","_cellMetadata","_sections","getSections","section","getCellIndices","map","sectionXStart","sectionXStop","sectionYStart","sectionYStop","sections","sectionX","sectionY","toString","cellMetadatum","addCellIndex","_ref$align","cellOffset","Collection","context","_lastRenderedCellIndices","_isScrollingChange","bind","_setCollectionViewRef","_collectionView","recomputeCellSizesAndPositions","data","cellSizeAndPositionGetter","cellMetadata","sectionManager","registerCell","_sectionManager","_height","_width","cellGroupRenderer","getCellMetadata","cellRendererProps","ColumnSizer","columnMaxWidth","columnMinWidth","_registeredChild","safeColumnMinWidth","safeColumnMaxWidth","adjustedWidth","getColumnWidth","child","InfiniteLoader","_loadMoreRowsMemoizer","_onRowsRendered","autoReload","_doStuff","_lastRenderedStartIndex","_lastRenderedStopIndex","onRowsRendered","unloadedRanges","loadMoreRows","unloadedRange","promise","lastRenderedStartIndex","lastRenderedStopIndex","currentIndex","recomputeSize","recomputeRowHeights","forceUpdateReactVirtualizedComponent","isRowLoaded","minimumBatchSize","threshold","rangeStartIndex","rangeStopIndex","potentialStopIndex","_index","firstUnloadedRange","_index2","scanForUnloadedRanges","squashedUnloadedRanges","_loadUnloadedRanges","registeredChild","List","rowRenderer","widthDescriptor","getOffsetForCell","measureAllCells","_ref6$columnIndex","_ref6$rowIndex","scrollToPosition","noRowsRenderer","classNames","_cellRenderer","a","l","m","_GEP","_GEA","IntervalTreeNode","mid","leftPoints","rightPoints","count","proto","copy","b","rebuild","intervals","ntree","createIntervalTree","rebuildWithInterval","rebuildWithoutInterval","idx","reportLeftRange","arr","hi","cb","r","reportRightRange","lo","reportRange","compareNumbers","compareBegin","compareEnd","pts","sort","leftIntervals","rightIntervals","centerIntervals","s","IntervalTree","root","result","insert","weight","remove","n","queryPoint","queryInterval","tproto","PositionCache","defaultCellHeight","unmeasuredCellCount","tallestColumnSize","renderCallback","_intervalTree","_leftMap","columnSizeMap","_columnSizeMap","columnHeight","Masonry","eventScrollTop","currentTarget","_getEstimatedTotalHeight","_debounceResetIsScrolling","_positionCache","_invalidateOnUpdateStartIndex","_invalidateOnUpdateStopIndex","_populatePositionCache","_checkInvalidateOnUpdate","_invokeOnScrollCallback","_invokeOnCellsRenderedCallback","_debounceResetIsScrollingId","cellMeasurerCache","overscanByPixels","rowDirection","estimateTotalHeight","shortestColumnSize","measuredCellCount","range","_style","batchSize","_startIndex","_stopIndex","_debounceResetIsScrollingCallback","estimatedColumnCount","_onScrollMemoized","_startIndexMemoized","_stopIndexMemoized","onCellsRendered","cellPositioner","_cellPositioner","setPosition","CellMeasurerCacheDecorator","_cellMeasurerCache","_columnIndexOffset","_rowIndexOffset","_params$columnIndexOf","columnIndexOffset","_params$rowIndexOffse","rowIndexOffset","clear","clearAll","MultiGrid","showHorizontalScrollbar","showVerticalScrollbar","_bottomLeftGrid","_bottomRightGrid","rest","fixedRowCount","fixedColumnCount","scrollInfo","_topLeftGrid","_topRightGrid","_fixedColumnCount","_fixedRowCount","_maybeCalculateCachedStyles","_deferredMeasurementCacheBottomLeftGrid","_deferredMeasurementCacheBottomRightGrid","_deferredMeasurementCacheTopRightGrid","_ref7$columnIndex","_ref7$rowIndex","_ref8$columnIndex","_ref8$rowIndex","adjustedColumnIndex","adjustedRowIndex","_leftGridWidth","_topGridHeight","_this$props7","_this$props8","_prepareForRender","_this$state4","_containerOuterStyle","_containerTopStyle","_renderTopLeftGrid","_renderTopRightGrid","_containerBottomStyle","_renderBottomLeftGrid","_renderBottomRightGrid","_getTopGridHeight","leftGridWidth","_getLeftGridWidth","topGridHeight","resetAll","_this$props9","enableFixedColumnScroll","enableFixedRowScroll","styleBottomLeftGrid","styleBottomRightGrid","styleTopLeftGrid","styleTopRightGrid","sizeChange","_lastRenderedHeight","_lastRenderedWidth","leftSizeChange","_lastRenderedColumnWidth","_lastRenderedFixedColumnCount","topSizeChange","_lastRenderedFixedRowCount","_lastRenderedRowHeight","_lastRenderedStyle","_lastRenderedStyleBottomLeftGrid","_bottomLeftGridStyle","_lastRenderedStyleBottomRightGrid","_bottomRightGridStyle","_lastRenderedStyleTopLeftGrid","_topLeftGridStyle","_lastRenderedStyleTopRightGrid","_topRightGridStyle","hideBottomLeftGridScrollbar","additionalRowCount","_getBottomGridHeight","gridWidth","bottomLeftGrid","_cellRendererBottomLeftGrid","classNameBottomLeftGrid","_onScrollTop","_bottomLeftGridRef","_rowHeightBottomGrid","_cellRendererBottomRightGrid","classNameBottomRightGrid","_columnWidthRightGrid","_onScrollbarPresenceChange","_bottomRightGridRef","_getRightGridWidth","classNameTopLeftGrid","_topLeftGridRef","hideTopRightGridScrollbar","_this$state5","additionalColumnCount","additionalHeight","gridHeight","topRightGrid","_cellRendererTopRightGrid","classNameTopRightGrid","_onScrollLeft","_topRightGridRef","defaultHeaderRowRenderer","columns","ScrollSync","SortIndicator","sortDirection","viewBox","fill","defaultHeaderRenderer","dataKey","label","sortBy","showSortIndicator","title","defaultRowRenderer","onRowClick","onRowDoubleClick","onRowMouseOut","onRowMouseOver","onRowRightClick","rowData","a11yProps","onClick","onDoubleClick","onMouseOut","onMouseOver","onContextMenu","Column","cellDataGetter","cellData","defaultSortDirection","flexGrow","flexShrink","headerRenderer","Table","scrollbarWidth","_createColumn","_createRow","_ref3$columnIndex","_ref3$rowIndex","_Grid","_setScrollbarWidth","disableHeader","gridClassName","headerHeight","headerRowRenderer","rowClassName","rowStyle","availableRowsHeight","rowClass","rowStyleObject","_cachedColumnStyles","column","flexStyles","_getFlexStyleForColumn","_getHeaderColumns","onColumnClick","_column$props","columnData","headerOnClick","headerOnKeyDown","headerTabIndex","headerAriaSort","headerAriaLabel","headerClassName","headerStyle","onHeaderClick","_column$props2","disableSort","sortEnabled","ReactVirtualized__Table__sortableHeaderColumn","renderedHeader","newSortDirection","rowGetter","flattenedStyle","_getRowHeight","customStyle","flexValue","flex","msFlex","WebkitFlex","_this4","_createHeader","getScrollbarWidth","mountedInstances","originalBodyPointerEvents","disablePointerEventsTimeoutId","enablePointerEventsIfDisabled","enablePointerEventsAfterDelayCallback","__resetIsScrolling","onScrollWindow","maximumTimeout","enablePointerEventsAfterDelay","scrollElement","__handleWindowScrollEvent","registerScrollListener","unregisterScrollListener","isWindow","getBoundingBox","getDimensions","innerHeight","innerWidth","serverHeight","serverWidth","getPositionOffset","documentElement","containerElement","elementRect","containerRect","getScrollOffset","_elementRect","_containerRect","scrollY","scrollX","getWindow","WindowScroller","updatePosition","scrollTo","_positionFromTop","_isMounted","_positionFromLeft","thisNode","dimensions","_registerResizeListener","prevScrollElement","_unregisterResizeListener","onChildScroll","_onChildScroll","htmlparser","escapeStringRegexp","isPlainObject","deepmerge","parseSrcset","parse","postcssParse","mediaTags","vulnerableTags","each","v","sanitizeHtml","VALID_HTML_ATTRIBUTE_NAME","html","options","_recursing","tempResult","Frame","tag","attribs","that","tagPosition","text","mediaChildren","updateParentNodeText","stack","updateParentNodeMediaChildren","includes","defaults","parser","htmlParserDefaults","allowedTags","allowVulnerableTags","nonTextTagsArray","nonTextTags","allowedAttributesMap","allowedAttributesGlobMap","allowedAttributes","attributes","globRegex","RegExp","allowedClassesMap","allowedClassesGlobMap","allowedClassesRegexMap","allowedClasses","classes","transformTagsMap","transformTagsAll","depth","skipMap","transformMap","skipText","skipTextDepth","transformTags","transform","transFun","simpleTransform","addedText","initializeState","Parser","onopentag","enforceHtmlBoundary","skip","hasText","transformedTag","innerText","tagName","disallowedTagsMode","isEmptyObject","nestingLimit","allowedScriptHostnames","allowedScriptDomains","passedAllowedAttributesMapCheck","newValue","multiple","splitStrArray","values","allowedSchemesAppliedToAttributes","naughtyHref","allowed","parsed","parseUrl","allowedHostname","find","hostname","allowedDomain","domain","endsWith","isRelativeUrl","allowIframeRelativeUrls","allowedIframeHostnames","allowedIframeDomains","evil","part","allowedSpecificClasses","allowedWildcardClasses","allowedSpecificClassesGlob","allowedSpecificClassesRegex","allowedClassesGlobs","t","allowedGlobs","clss","glob","filteredAST","nodes","reduce","extractedAttributes","attrObject","prop","important","stringifyStyleAttributes","abstractSyntaxTree","allowedStyles","astRules","selectedRule","selector","allowedDeclarationsList","attributeObject","regularExpression","filterDeclarations","filterCss","escapeHtml","selfClosing","textFilter","ontext","lastFrame","escaped","onclosetag","pop","exclusiveFilter","substr","write","end","quote","decodeEntities","href","firstIndex","lastIndex","matches","allowProtocolRelative","scheme","allowedSchemesByTag","allowedSchemes","startsWith","base","URL","protocol","img","newTagName","newAttribs","merge","attrib","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","clone","defaultArrayMerge","getKeys","symbol","getEnumerableOwnPropertySymbols","propertyIsOnObject","property","_","arrayMerge","sourceIsArray","destination","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","array","prev","next","deepmerge_1","attributeNames","elementNames","Map","__assign","__createBinding","k","k2","__setModuleDefault","__importStar","mod","ElementType","entities_1","foreignNames_1","unencodedElements","Set","singleTag","output","renderNode","Root","Directive","Doctype","Comment","CDATA","elem","renderCdata","Script","Style","Tag","opts","_a","xmlMode","foreignModeIntegrationPoints","foreignElements","_b","emptyAttrs","encodeXML","formatAttributes","selfClosingTags","renderTag","Text","renderText","isTag","__exportStar","DomHandler","domelementtype_1","node_1","reWhitespace","defaultOpts","normalizeWhitespace","withStartIndices","withEndIndices","elementCB","dom","Document","done","tagStack","lastNode","onparserinit","onreset","onend","handleCallback","onerror","error","endIndex","addNode","oncomment","oncommentend","oncdatastart","NodeWithChildren","oncdataend","onprocessinginstruction","ProcessingInstruction","previousSibling","extendStatics","__extends","__","cloneNode","hasChildren","isDocument","isDirective","isComment","isText","isCDATA","DataNode","Node","nodeTypes","recursive","_super","namespace","prefix","cloneChildren","clone_1","clone_2","clone_3","instruction","sourceCodeLocation","childs","getFeed","stringify_1","legacy_1","feedRoot","getOneElement","isValidFeed","feed","items","item","entry","media","getMediaElements","addConditionally","link","description","fetch","pubDate","updated","getAtomFeed","getRssFeed","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","medium","isDefault","MEDIA_KEYS_STRING_1","MEDIA_KEYS_INT_1","expression","recurse","textContent","trim","uniqueSort","compareDocumentPosition","removeSubsets","domhandler_1","nodeA","nodeB","aParents","bParents","unshift","maxIdx","sharedParent","siblings","aSibling","bSibling","lastIndexOf","ancestor","relative","getElementsByTagType","getElements","testElement","querying_1","Checks","tag_name","tag_type","tag_contains","getAttribCheck","combineFuncs","compileTest","funcs","limit","Infinity","findOne","removeElement","prepend","prependChild","append","replaceElement","replacement","sibling","currNext","findAll","existsOne","findOneChild","nodes_1","checked","shift","__importDefault","getText","getInnerHTML","getOuterHTML","dom_serializer_1","prevElementSibling","nextElementSibling","getName","hasAttrib","getAttributeValue","getSiblings","getParent","getChildren","emptyArray","decodeHTML","decodeHTMLStrict","decodeXML","entities_json_1","legacy_json_1","xml_json_1","decode_codepoint_1","strictEntityRe","getStrictDecoder","getReplacer","str","sorter","secondChar","legacy","j","re","replacer","decode_json_1","fromCodePoint","codePoint","fromCharCode","escapeUTF8","escape","encodeNonAsciiHTML","encodeHTML","inverseXML","getInverseObj","xmlReplacer","getInverseReplacer","getASCIIEncoder","inverseHTML","htmlReplacer","single","charCodeAt","reNonASCII","singleCharReplacer","getCodePoint","codePointAt","toUpperCase","reEscapeChars","decodeXMLStrict","decodeHTML5Strict","decodeHTML4Strict","decodeHTML5","decodeHTML4","encodeHTML5","encodeHTML4","encode","decodeStrict","decode","decode_1","encode_1","level","encode_2","decode_2","string","parseFeed","FeedHandler","FeedItemMediaMedium","FeedItemMediaExpression","DomUtils","Parser_1","getAttribute","fileSize","bitrate","framerate","samplingrate","channels","duration","lang","what","tmp","handler","Tokenizer_1","formTags","pTag","openImpliesClose","tr","th","td","li","h1","h2","h3","h4","h5","h6","select","button","datalist","textarea","option","optgroup","dd","dt","address","article","aside","blockquote","details","div","dl","fieldset","figcaption","figure","footer","form","header","hr","main","nav","ol","pre","table","ul","rt","rp","tbody","tfoot","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","cbs","_c","_d","_e","tagname","attribname","attribvalue","foreignContext","lowerCaseTagNames","lowerCaseTags","lowerCaseAttributeNames","tokenizer","Tokenizer","initialOffset","sectionStart","getAbsoluteIndex","onopentagname","el","onopentagend","closeCurrentTag","onselfclosingtag","recognizeSelfClosing","onattribname","onattribdata","onattribend","onattribute","getInstructionName","search","ondeclaration","name_1","name_2","oncdata","_f","recognizeCDATA","err","parseComplete","chunk","pause","resume","parseChunk","whitespace","isASCIIAlpha","ifElseState","upper","SUCCESS","FAILURE","lower","_state","consumeSpecialNameChar","NEXT_STATE","stateBeforeCdata1","stateBeforeCdata2","stateBeforeCdata3","stateBeforeCdata4","stateBeforeCdata5","stateBeforeScript1","stateBeforeScript2","stateBeforeScript3","stateBeforeScript4","stateAfterScript1","stateAfterScript2","stateAfterScript3","stateAfterScript4","stateBeforeStyle1","stateBeforeStyle2","stateBeforeStyle3","stateAfterStyle1","stateAfterStyle2","stateAfterStyle3","stateBeforeSpecialT","stateBeforeTitle1","stateBeforeTitle2","stateBeforeTitle3","stateAfterSpecialTEnd","stateAfterTitle1","stateAfterTitle2","stateAfterTitle3","stateBeforeEntity","stateBeforeNumericEntity","bufferOffset","baseState","special","running","ended","finish","stateText","getSection","isTagStartChar","stateBeforeTagName","stateInTagName","emitToken","stateBeforeClosingTagName","stateInClosingTagName","stateAfterClosingTagName","stateBeforeAttributeName","stateInSelfClosingTag","stateInAttributeName","stateAfterAttributeName","stateBeforeAttributeValue","handleInAttributeValue","stateInAttributeValueDoubleQuotes","stateInAttributeValueSingleQuotes","stateInAttributeValueNoQuotes","stateBeforeDeclaration","stateInDeclaration","stateInProcessingInstruction","stateBeforeComment","stateInComment","stateInSpecialComment","stateAfterComment1","stateAfterComment2","stateBeforeCdata6","stateInCdata","stateAfterCdata1","stateAfterCdata2","stateBeforeSpecialS","stateBeforeSpecialSEnd","stateBeforeSpecialLast","stateAfterSpecialLast","sectionStartOffset","parseFixedEntity","entity","emitPartial","parseLegacyEntity","stateInNamedEntity","decodeNumericEntity","strict","stateInNumericEntity","stateInHexEntity","cleanup","handleTrailingData","RssHandler","DefaultHandler","createDomStream","parseDOM","parseDocument","elementCb","FeedHandler_1","isObject","ctor","prot","Container","AtRule","super","proxyOf","registerAtRule","Rule","isClean","my","Declaration","cleanSource","markDirtyUp","getIterator","indexes","walk","addToError","walkDecls","walkRules","walkAtRules","walkComments","normalize","last","markDirty","reverse","first","cleanRaws","keepBetween","insertBefore","exist","add","existIndex","insertAfter","removeAll","replaceValues","pattern","decl","fast","condition","sample","raws","before","getProxyProcessor","toProxy","other","lastEach","registerParse","dependant","registerRule","registerRoot","pico","terminalHighlight","CssSyntaxError","message","line","file","plugin","reason","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","color","mark","lines","gutter","spacing","code","variable","LazyResult","Processor","toResult","stringify","registerLazyResult","registerProcessor","PreviousMap","Input","fromJSON","json","inputs","ownInputs","inputHydrated","inputId","SourceMapConsumer","SourceMapGenerator","fileURLToPath","pathToFileURL","isAbsolute","nanoid","fromOffsetCache","sourceMapAvailable","pathAvailable","hasBOM","from","consumer","mapResolve","fromOffset","lastLine","lineToIndex","prevIndex","col","origin","to","fromUrl","originalPositionFor","sourceRoot","mapFile","sourceContentFor","toJSON","consumerCache","registerInput","MapGenerator","Result","TYPE_TO_CLASS_NAME","atrule","rule","comment","PLUGIN_PROPS","postcssPlugin","prepare","Once","DeclarationExit","RuleExit","AtRuleExit","CommentExit","RootExit","DocumentExit","OnceExit","NOT_VISITORS","isPromise","getEvents","toStack","events","eventIndex","visitors","visitorIndex","cleanMarks","postcss","processor","stringified","processed","inline","syntax","helpers","plugins","toStringTag","content","sync","messages","warnings","onFulfilled","onRejected","async","catch","finally","onFinally","reject","processing","runAsync","getAsyncError","runOnRoot","prepareVisitors","hasListener","walkSync","listeners","subRoot","visitSync","stringifier","generate","visitor","lastPlugin","handleError","roots","postcssVersion","visitTick","version","visit","registerPostcss","list","separators","inQuote","prevQuote","letter","space","comma","dirname","sep","cssString","mapOpts","usesFileUrls","absolute","isMap","previous","previousMaps","isInline","annotation","isSourcesContent","sourcesContent","withContent","clearAnnotation","setSourcesContent","already","toFileUrl","toUrl","path","setSourceContent","applyPrevMaps","applySourceMap","isAnnotation","toBase64","Buffer","btoa","unescape","encodeURIComponent","addAnnotation","outputFile","eol","generateMap","generateString","fromSourceMap","addMapping","generated","original","encodeURI","sourcePath","noSource","mapping","semicolon","NoWorkResult","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","Stringifier","cloned","rangeBy","overrides","cloneBefore","cloneAfter","replaceWith","bookmark","foundSelf","after","raw","defaultType","between","fixed","emitInputs","inputsNextIndex","positionInside","positionBy","word","proxyCache","Proxy","postcssNode","SAFE_COMMENT_NEIGHBOR","empty","spaces","customProperty","createTokenizer","token","endOfFile","nextToken","freeSemicolon","emptyRule","endFile","init","getPosition","colon","bracket","brackets","tokens","back","unclosedBracket","unknownWord","spacesAndCommentsFromEnd","findLastWithPosition","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","checkMissedSemicolon","unnamedAtrule","open","afterName","spacesAndCommentsFromStart","unexpectedClose","unclosedBlock","ownSemicolon","clean","lastTokenType","entries","doubleColon","founded","Warning","initializer","warningPrinted","creator","process","env","LANG","transformer","processOpts","pluginOpts","atRule","existsSync","readFileSync","loadAnnotation","startWith","loadMap","getAnnotationURL","sourceMapString","comments","decodeInline","decodeURIComponent","lastMatch","atob","encoding","loadFile","JSON","prevPath","mappings","_mappings","use","normalized","warning","ignore","selectors","DEFAULT_RAW","indent","beforeDecl","beforeRule","beforeOpen","beforeClose","beforeComment","emptyBody","commentLeft","commentRight","builder","rawValue","block","own","detect","rawCache","beforeAfter","method","rawSemicolon","rawEmptyBody","rawIndent","parts","rawBeforeComment","rawBeforeDecl","rawBeforeRule","rawBeforeClose","rawBeforeOpen","rawColon","buf","step","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","ignoreUnclosed","controlChar","printed","opt","random","customAlphabet","alphabet","defaultSize"],"sourceRoot":""}