Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

3 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports["default"] = exports.OutlineInternal = void 0;
  8. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  9. var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
  10. var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
  11. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
  12. var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
  13. var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
  14. var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
  15. var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
  16. var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
  17. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  18. var _react = _interopRequireWildcard(require("react"));
  19. var _propTypes = _interopRequireDefault(require("prop-types"));
  20. var _makeCancellablePromise = _interopRequireDefault(require("make-cancellable-promise"));
  21. var _makeEventProps = _interopRequireDefault(require("make-event-props"));
  22. var _mergeClassNames = _interopRequireDefault(require("merge-class-names"));
  23. var _DocumentContext = _interopRequireDefault(require("./DocumentContext"));
  24. var _OutlineContext = _interopRequireDefault(require("./OutlineContext"));
  25. var _OutlineItem = _interopRequireDefault(require("./OutlineItem"));
  26. var _utils = require("./shared/utils");
  27. var _propTypes2 = require("./shared/propTypes");
  28. function 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; }
  29. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  30. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  31. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  32. var OutlineInternal = /*#__PURE__*/function (_PureComponent) {
  33. (0, _inherits2["default"])(OutlineInternal, _PureComponent);
  34. var _super = _createSuper(OutlineInternal);
  35. function OutlineInternal() {
  36. var _this;
  37. (0, _classCallCheck2["default"])(this, OutlineInternal);
  38. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  39. args[_key] = arguments[_key];
  40. }
  41. _this = _super.call.apply(_super, [this].concat(args));
  42. (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
  43. outline: null
  44. });
  45. (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "loadOutline", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
  46. var pdf, cancellable, outline;
  47. return _regenerator["default"].wrap(function _callee$(_context) {
  48. while (1) {
  49. switch (_context.prev = _context.next) {
  50. case 0:
  51. pdf = _this.props.pdf;
  52. _this.setState(function (prevState) {
  53. if (!prevState.outline) {
  54. return null;
  55. }
  56. return {
  57. outline: null
  58. };
  59. });
  60. _context.prev = 2;
  61. cancellable = (0, _makeCancellablePromise["default"])(pdf.getOutline());
  62. _this.runningTask = cancellable;
  63. _context.next = 7;
  64. return cancellable.promise;
  65. case 7:
  66. outline = _context.sent;
  67. _this.setState({
  68. outline: outline
  69. }, _this.onLoadSuccess);
  70. _context.next = 14;
  71. break;
  72. case 11:
  73. _context.prev = 11;
  74. _context.t0 = _context["catch"](2);
  75. _this.onLoadError(_context.t0);
  76. case 14:
  77. case "end":
  78. return _context.stop();
  79. }
  80. }
  81. }, _callee, null, [[2, 11]]);
  82. })));
  83. (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onLoadSuccess", function () {
  84. var onLoadSuccess = _this.props.onLoadSuccess;
  85. var outline = _this.state.outline;
  86. if (onLoadSuccess) onLoadSuccess(outline);
  87. });
  88. (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onLoadError", function (error) {
  89. _this.setState({
  90. outline: false
  91. });
  92. (0, _utils.errorOnDev)(error);
  93. var onLoadError = _this.props.onLoadError;
  94. if (onLoadError) onLoadError(error);
  95. });
  96. (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onItemClick", function (_ref2) {
  97. var pageIndex = _ref2.pageIndex,
  98. pageNumber = _ref2.pageNumber;
  99. var onItemClick = _this.props.onItemClick;
  100. if (onItemClick) {
  101. onItemClick({
  102. pageIndex: pageIndex,
  103. pageNumber: pageNumber
  104. });
  105. }
  106. });
  107. return _this;
  108. }
  109. (0, _createClass2["default"])(OutlineInternal, [{
  110. key: "componentDidMount",
  111. value: function componentDidMount() {
  112. var pdf = this.props.pdf;
  113. if (!pdf) {
  114. throw new Error('Attempted to load an outline, but no document was specified.');
  115. }
  116. this.loadOutline();
  117. }
  118. }, {
  119. key: "componentDidUpdate",
  120. value: function componentDidUpdate(prevProps) {
  121. var pdf = this.props.pdf;
  122. if (prevProps.pdf && pdf !== prevProps.pdf) {
  123. this.loadOutline();
  124. }
  125. }
  126. }, {
  127. key: "componentWillUnmount",
  128. value: function componentWillUnmount() {
  129. (0, _utils.cancelRunningTask)(this.runningTask);
  130. }
  131. }, {
  132. key: "renderOutline",
  133. value: function renderOutline() {
  134. var outline = this.state.outline;
  135. return /*#__PURE__*/_react["default"].createElement("ul", null, outline.map(function (item, itemIndex) {
  136. return /*#__PURE__*/_react["default"].createElement(_OutlineItem["default"], {
  137. key: typeof item.destination === 'string' ? item.destination : itemIndex,
  138. item: item
  139. });
  140. }));
  141. }
  142. }, {
  143. key: "render",
  144. value: function render() {
  145. var pdf = this.props.pdf;
  146. var outline = this.state.outline;
  147. if (!pdf || !outline) {
  148. return null;
  149. }
  150. var _this$props = this.props,
  151. className = _this$props.className,
  152. inputRef = _this$props.inputRef;
  153. return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
  154. className: (0, _mergeClassNames["default"])('react-pdf__Outline', className),
  155. ref: inputRef
  156. }, this.eventProps), /*#__PURE__*/_react["default"].createElement(_OutlineContext["default"].Provider, {
  157. value: this.childContext
  158. }, this.renderOutline()));
  159. }
  160. }, {
  161. key: "childContext",
  162. get: function get() {
  163. return {
  164. onClick: this.onItemClick
  165. };
  166. }
  167. }, {
  168. key: "eventProps",
  169. get: function get() {
  170. var _this2 = this;
  171. // eslint-disable-next-line react/destructuring-assignment
  172. return (0, _makeEventProps["default"])(this.props, function () {
  173. return _this2.state.outline;
  174. });
  175. }
  176. /**
  177. * Called when an outline is read successfully
  178. */
  179. }]);
  180. return OutlineInternal;
  181. }(_react.PureComponent);
  182. exports.OutlineInternal = OutlineInternal;
  183. OutlineInternal.propTypes = _objectSpread({
  184. className: _propTypes2.isClassName,
  185. inputRef: _propTypes["default"].func,
  186. onItemClick: _propTypes["default"].func,
  187. onLoadError: _propTypes["default"].func,
  188. onLoadSuccess: _propTypes["default"].func,
  189. pdf: _propTypes2.isPdf
  190. }, _propTypes2.eventProps);
  191. function Outline(props, ref) {
  192. return /*#__PURE__*/_react["default"].createElement(_DocumentContext["default"].Consumer, null, function (context) {
  193. return /*#__PURE__*/_react["default"].createElement(OutlineInternal, (0, _extends2["default"])({
  194. ref: ref
  195. }, context, props));
  196. });
  197. }
  198. var _default = _react["default"].forwardRef(Outline);
  199. exports["default"] = _default;