UNPKG

miniapp-web-jsapi

Version:

JSAPI/View adapter for miniprogram running on the web

152 lines 5.32 kB
import _inherits from "@babel/runtime/helpers/inherits"; import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf"; import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; import _createClass from "@babel/runtime/helpers/createClass"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = _getPrototypeOf(t); if (r) { var s = _getPrototypeOf(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return _possibleConstructorReturn(this, e); }; } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var AbsExecutor = /*#__PURE__*/function () { function AbsExecutor(elements) { _classCallCheck(this, AbsExecutor); _defineProperty(this, "elements", void 0); this.elements = elements; } _createClass(AbsExecutor, [{ key: "map", value: function map(mapper) { if (this.elements == null) { return null; } if (Array.isArray(this.elements)) { if (this.elements.length === 0) { return null; } return this.elements.map(mapper); } return [this.elements].map(mapper)[0]; } }]); return AbsExecutor; }(); var BoundingClientRectExecutor = /*#__PURE__*/function (_AbsExecutor2) { _inherits(BoundingClientRectExecutor, _AbsExecutor2); var _super = _createSuper(BoundingClientRectExecutor); function BoundingClientRectExecutor() { _classCallCheck(this, BoundingClientRectExecutor); return _super.apply(this, arguments); } _createClass(BoundingClientRectExecutor, [{ key: "execute", value: function execute() { return this.map(function (element) { var rect = element.getBoundingClientRect(); var result = { width: rect.width, height: rect.height, top: rect.top, bottom: rect.bottom, left: rect.left, right: rect.right }; return result; }); } }]); return BoundingClientRectExecutor; }(AbsExecutor); var ScrollOffsetExecutor = /*#__PURE__*/function (_AbsExecutor3) { _inherits(ScrollOffsetExecutor, _AbsExecutor3); var _super2 = _createSuper(ScrollOffsetExecutor); function ScrollOffsetExecutor() { _classCallCheck(this, ScrollOffsetExecutor); return _super2.apply(this, arguments); } _createClass(ScrollOffsetExecutor, [{ key: "execute", value: function execute() { return this.map(function (element) { var result = { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop }; return result; }); } }]); return ScrollOffsetExecutor; }(AbsExecutor); var ViewPortExecutor = /*#__PURE__*/function (_AbsExecutor4) { _inherits(ViewPortExecutor, _AbsExecutor4); var _super3 = _createSuper(ViewPortExecutor); function ViewPortExecutor() { _classCallCheck(this, ViewPortExecutor); return _super3.apply(this, arguments); } _createClass(ViewPortExecutor, [{ key: "execute", value: function execute() { var doc = document.documentElement; return { scrollLeft: (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0), scrollTop: (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0), width: Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0), height: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0) }; } }]); return ViewPortExecutor; }(AbsExecutor); export function createSelectorQuery(options) { var executors = []; var isViewPort = false; var prevElement; var addExecutor = function addExecutor(constructor) { if (isViewPort) { executors.push(new ViewPortExecutor()); } else { executors.push(new constructor(prevElement)); } isViewPort = false; prevElement = null; }; var measureMethod = { boundingClientRect: function boundingClientRect() { addExecutor(BoundingClientRectExecutor); return method; }, scrollOffset: function scrollOffset() { addExecutor(ScrollOffsetExecutor); return method; } }; var method = { select: function select(selector) { prevElement = document.querySelector(selector); return measureMethod; }, selectAll: function selectAll(selector) { var list = document.querySelectorAll(selector); if (list) { var elements = []; list === null || list === void 0 ? void 0 : list.forEach(function (element) { return elements.push(element); }); prevElement = elements; } else { prevElement = null; } return measureMethod; }, selectViewport: function selectViewport() { isViewPort = true; return measureMethod; }, exec: function exec(callback) { callback(executors.map(function (executor) { return executor.execute(); })); } }; return method; }