@pinnacle0/web-ui 0.5.71 → 0.5.72

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.
@@ -12,7 +12,6 @@ interface States {
12
12
  export declare class OverflowableText extends React.PureComponent<Props, States> {
13
13
  static displayName: string;
14
14
  private readonly textRef;
15
- private readonly childContainerProps;
16
15
  constructor(props: Props);
17
16
  componentDidUpdate(prevProps: Props): void;
18
17
  componentDidMount(): void;
@@ -33,7 +33,6 @@ var OverflowableText = /** @class */ (function (_super) {
33
33
  function OverflowableText(props) {
34
34
  var _this = _super.call(this, props) || this;
35
35
  _this.textRef = React.createRef();
36
- _this.childContainerProps = { className: "wrap-text", style: { width: "maxWidth" } };
37
36
  _this.updateTextOverflow = function () {
38
37
  var current = _this.textRef.current;
39
38
  _this.setState({ overflow: (current && current.scrollWidth > _this.props.maxWidth) || false });
@@ -54,7 +53,7 @@ var OverflowableText = /** @class */ (function (_super) {
54
53
  OverflowableText.prototype.render = function () {
55
54
  var _a = this.props, children = _a.children, style = _a.style, maxWidth = _a.maxWidth, className = _a.className;
56
55
  return (React.createElement("div", { className: classNames("g-overflowable-text", className) },
57
- this.state.overflow ? (React.createElement(Tooltip, { overlay: children, childContainerProps: this.childContainerProps }, children)) : (React.createElement("div", { style: __assign({ display: "inline-block" }, style) }, children)),
56
+ this.state.overflow ? (React.createElement(Tooltip, { overlay: children, childContainerProps: { className: "wrap-text", style: { width: maxWidth } } }, children)) : (React.createElement("div", { style: __assign({ display: "inline-block" }, style) }, children)),
58
57
  React.createElement("div", { ref: this.textRef, style: { maxWidth: maxWidth }, className: "shadow-text" }, children)));
59
58
  };
60
59
  OverflowableText.displayName = "OverflowableText";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/OverflowableText/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AACnC,OAAO,cAAc,CAAC;AAatB;IAAsC,oCAAkC;IAMpE,0BAAY,KAAY;QACpB,YAAA,MAAK,YAAC,KAAK,CAAC,SAAC;QAJA,aAAO,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAC5C,yBAAmB,GAAyC,EAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,EAAC,KAAK,EAAE,UAAU,EAAC,EAAC,CAAC;QAoBlI,wBAAkB,GAAG;YACV,IAAA,OAAO,GAAI,KAAI,CAAC,OAAO,QAAhB,CAAiB;YAC/B,KAAI,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAC,CAAC,CAAC;QAC/F,CAAC,CAAC;QAlBE,KAAI,CAAC,KAAK,GAAG;YACT,QAAQ,EAAE,KAAK;SAClB,CAAC;;IACN,CAAC;IAED,6CAAkB,GAAlB,UAAmB,SAAgB;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,4CAAiB,GAAjB;QACI,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAOD,iCAAM,GAAN;QACU,IAAA,KAAyC,IAAI,CAAC,KAAK,EAAlD,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAE,SAAS,eAAc,CAAC;QAE1D,OAAO,CACH,6BAAK,SAAS,EAAE,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACnB,oBAAC,OAAO,IAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IACpE,QAAQ,CACH,CACb,CAAC,CAAC,CAAC,CACA,6BAAK,KAAK,aAAG,OAAO,EAAE,cAAc,IAAK,KAAK,KAAI,QAAQ,CAAO,CACpE;YACD,6BAAK,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAC,QAAQ,UAAA,EAAC,EAAE,SAAS,EAAC,aAAa,IAC7D,QAAQ,CACP,CACJ,CACT,CAAC;IACN,CAAC;IA7CM,4BAAW,GAAG,kBAAkB,AAArB,CAAsB;IA8C5C,uBAAC;CAAA,AA/CD,CAAsC,KAAK,CAAC,aAAa,GA+CxD;SA/CY,gBAAgB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/OverflowableText/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AACnC,OAAO,cAAc,CAAC;AAatB;IAAsC,oCAAkC;IAKpE,0BAAY,KAAY;QACpB,YAAA,MAAK,YAAC,KAAK,CAAC,SAAC;QAHA,aAAO,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAoB7D,wBAAkB,GAAG;YACV,IAAA,OAAO,GAAI,KAAI,CAAC,OAAO,QAAhB,CAAiB;YAC/B,KAAI,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAC,CAAC,CAAC;QAC/F,CAAC,CAAC;QAlBE,KAAI,CAAC,KAAK,GAAG;YACT,QAAQ,EAAE,KAAK;SAClB,CAAC;;IACN,CAAC;IAED,6CAAkB,GAAlB,UAAmB,SAAgB;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,4CAAiB,GAAjB;QACI,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAOD,iCAAM,GAAN;QACU,IAAA,KAAyC,IAAI,CAAC,KAAK,EAAlD,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAE,SAAS,eAAc,CAAC;QAE1D,OAAO,CACH,6BAAK,SAAS,EAAE,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACnB,oBAAC,OAAO,IAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAC,IAC9F,QAAQ,CACH,CACb,CAAC,CAAC,CAAC,CACA,6BAAK,KAAK,aAAG,OAAO,EAAE,cAAc,IAAK,KAAK,KAAI,QAAQ,CAAO,CACpE;YACD,6BAAK,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAC,QAAQ,UAAA,EAAC,EAAE,SAAS,EAAC,aAAa,IAC7D,QAAQ,CACP,CACJ,CACT,CAAC;IACN,CAAC;IA5CM,4BAAW,GAAG,kBAAkB,AAArB,CAAsB;IA6C5C,uBAAC;CAAA,AA9CD,CAAsC,KAAK,CAAC,aAAa,GA8CxD;SA9CY,gBAAgB"}
@@ -26,8 +26,10 @@ import "./index.less";
26
26
  import { ReactUtil } from "../../util/ReactUtil";
27
27
  var inlineChildStyle = { display: "inline" };
28
28
  export var Popover = ReactUtil.memo("Popover", function (props) {
29
- var children = props.children, childContainerProps = props.childContainerProps, isInline = props.isInline, restProps = __rest(props, ["children", "childContainerProps", "isInline"]);
29
+ var children = props.children, _a = props.childContainerProps, childContainerProps = _a === void 0 ? {} : _a, isInline = props.isInline, restProps = __rest(props, ["children", "childContainerProps", "isInline"]);
30
+ var style = childContainerProps.style, restChildContainerProps = __rest(childContainerProps, ["style"]);
31
+ var combinedChildContainerStyle = isInline ? __assign(__assign({}, style), inlineChildStyle) : style;
30
32
  return (React.createElement(AntPopover, __assign({}, restProps),
31
- React.createElement("div", __assign({}, childContainerProps, { style: isInline ? inlineChildStyle : undefined }), children)));
33
+ React.createElement("div", __assign({}, restChildContainerProps, { style: combinedChildContainerStyle }), children)));
32
34
  });
33
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/Popover/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,CAAC;AACtB,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAO/C,IAAM,gBAAgB,GAAwB,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC;AAElE,MAAM,CAAC,IAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,KAAY;IACnD,IAAA,QAAQ,GAAiD,KAAK,SAAtD,EAAE,mBAAmB,GAA4B,KAAK,oBAAjC,EAAE,QAAQ,GAAkB,KAAK,SAAvB,EAAK,SAAS,UAAI,KAAK,EAA/D,+CAAuD,CAAD,CAAU;IACtE,OAAO,CACH,oBAAC,UAAU,eAAK,SAAS;QACrB,wCAAS,mBAAmB,IAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,KACvE,QAAQ,CACP,CACG,CAChB,CAAC;AACN,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/Popover/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,CAAC;AACtB,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAO/C,IAAM,gBAAgB,GAAwB,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC;AAElE,MAAM,CAAC,IAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,KAAY;IACnD,IAAA,QAAQ,GAAsD,KAAK,SAA3D,EAAE,KAAoD,KAAK,oBAAjC,EAAxB,mBAAmB,mBAAG,EAAE,KAAA,EAAE,QAAQ,GAAkB,KAAK,SAAvB,EAAK,SAAS,UAAI,KAAK,EAApE,+CAA4D,CAAD,CAAU;IACpE,IAAA,KAAK,GAAgC,mBAAmB,MAAnD,EAAK,uBAAuB,UAAI,mBAAmB,EAAzD,SAAmC,CAAD,CAAwB;IAChE,IAAM,2BAA2B,GAAG,QAAQ,CAAC,CAAC,uBAAK,KAAK,GAAK,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC;IAEvF,OAAO,CACH,oBAAC,UAAU,eAAK,SAAS;QACrB,wCAAS,uBAAuB,IAAE,KAAK,EAAE,2BAA2B,KAC/D,QAAQ,CACP,CACG,CAChB,CAAC;AACN,CAAC,CAAC,CAAC"}
package/core/Tooltip.js CHANGED
@@ -25,8 +25,10 @@ import React from "react";
25
25
  import { ReactUtil } from "../util/ReactUtil";
26
26
  var inlineChildStyle = { display: "inline" };
27
27
  export var Tooltip = ReactUtil.memo("Tooltip", function (props) {
28
- var children = props.children, childContainerProps = props.childContainerProps, isInline = props.isInline, restProps = __rest(props, ["children", "childContainerProps", "isInline"]);
28
+ var children = props.children, _a = props.childContainerProps, childContainerProps = _a === void 0 ? {} : _a, isInline = props.isInline, restProps = __rest(props, ["children", "childContainerProps", "isInline"]);
29
+ var style = childContainerProps.style, restChildContainerProps = __rest(childContainerProps, ["style"]);
30
+ var combinedChildContainerStyle = isInline ? __assign(__assign({}, style), inlineChildStyle) : style;
29
31
  return (React.createElement(AntTooltip, __assign({}, restProps),
30
- React.createElement("div", __assign({}, childContainerProps, { style: isInline ? inlineChildStyle : undefined }), children)));
32
+ React.createElement("div", __assign({}, restChildContainerProps, { style: combinedChildContainerStyle }), children)));
31
33
  });
32
34
  //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/core/Tooltip.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAK5C,IAAM,gBAAgB,GAAwB,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC;AAElE,MAAM,CAAC,IAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,KAAY;IACnD,IAAA,QAAQ,GAAiD,KAAK,SAAtD,EAAE,mBAAmB,GAA4B,KAAK,oBAAjC,EAAE,QAAQ,GAAkB,KAAK,SAAvB,EAAK,SAAS,UAAI,KAAK,EAA/D,+CAAuD,CAAD,CAAU;IACtE,OAAO,CACH,oBAAC,UAAU,eAAK,SAAS;QACrB,wCAAS,mBAAmB,IAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,KACvE,QAAQ,CACP,CACG,CAChB,CAAC;AACN,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/core/Tooltip.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAK5C,IAAM,gBAAgB,GAAwB,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC;AAElE,MAAM,CAAC,IAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,KAAY;IACnD,IAAA,QAAQ,GAAsD,KAAK,SAA3D,EAAE,KAAoD,KAAK,oBAAjC,EAAxB,mBAAmB,mBAAG,EAAE,KAAA,EAAE,QAAQ,GAAkB,KAAK,SAAvB,EAAK,SAAS,UAAI,KAAK,EAApE,+CAA4D,CAAD,CAAU;IACpE,IAAA,KAAK,GAAgC,mBAAmB,MAAnD,EAAK,uBAAuB,UAAI,mBAAmB,EAAzD,SAAmC,CAAD,CAAwB;IAChE,IAAM,2BAA2B,GAAG,QAAQ,CAAC,CAAC,uBAAK,KAAK,GAAK,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC;IAEvF,OAAO,CACH,oBAAC,UAAU,eAAK,SAAS;QACrB,wCAAS,uBAAuB,IAAE,KAAK,EAAE,2BAA2B,KAC/D,QAAQ,CACP,CACG,CAChB,CAAC;AACN,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pinnacle0/web-ui",
3
- "version": "0.5.71",
3
+ "version": "0.5.72",
4
4
  "author": "Pinnacle",
5
5
  "license": "MIT",
6
6
  "sideEffects": [
@@ -0,0 +1,15 @@
1
+ import type { BrowserKernel, BrowserNewTabSizeOptions, BrowserOS } from "./type";
2
+ export declare class BrowserUtil {
3
+ static os(): BrowserOS;
4
+ static kernel(): BrowserKernel;
5
+ static isMobile(): boolean;
6
+ static removeElement(element: HTMLElement | null): void;
7
+ static scrollTo(options: ScrollToOptions, container?: Element | null): void;
8
+ /**
9
+ * Resolve when new tab is loaded, only applicable to same domain.
10
+ * Ref: https://stackoverflow.com/questions/3030859/detecting-the-onload-event-of-a-window-opened-with-window-open
11
+ */
12
+ static newTab(url: string, sizeOptions?: Partial<BrowserNewTabSizeOptions>): void;
13
+ static openQQ(qq: string): void;
14
+ static isDarkTheme(): boolean;
15
+ }
@@ -0,0 +1,135 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __read = (this && this.__read) || function (o, n) {
13
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
14
+ if (!m) return o;
15
+ var i = m.call(o), r, ar = [], e;
16
+ try {
17
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
18
+ }
19
+ catch (error) { e = { error: error }; }
20
+ finally {
21
+ try {
22
+ if (r && !r.done && (m = i["return"])) m.call(i);
23
+ }
24
+ finally { if (e) throw e.error; }
25
+ }
26
+ return ar;
27
+ };
28
+ import { parseUserAgentOS } from "./parseUserAgentOS";
29
+ var BrowserUtil = /** @class */ (function () {
30
+ function BrowserUtil() {
31
+ }
32
+ BrowserUtil.os = function () {
33
+ return parseUserAgentOS(navigator.userAgent);
34
+ };
35
+ BrowserUtil.kernel = function () {
36
+ var userAgentUpperCase = navigator.userAgent.toUpperCase();
37
+ if (userAgentUpperCase.includes("MICROMESSENGER")) {
38
+ return "wechat";
39
+ }
40
+ else if ("WebkitAppearance" in document.documentElement.style) {
41
+ return "webkit";
42
+ }
43
+ else if (userAgentUpperCase.includes("FIREFOX") && !userAgentUpperCase.includes("SEAMONKEY")) {
44
+ // https://github.com/keithws/browser-report/blob/6fa7a2bb33ce8b8621b2c4538a1ebefac38af57f/index.js#L64
45
+ return "firefox";
46
+ }
47
+ else if (userAgentUpperCase.includes("MSIE")) {
48
+ // https://github.com/keithws/browser-report/blob/6fa7a2bb33ce8b8621b2c4538a1ebefac38af57f/index.js#L56
49
+ return "ie";
50
+ }
51
+ else {
52
+ return "other";
53
+ }
54
+ };
55
+ BrowserUtil.isMobile = function () {
56
+ var system = parseUserAgentOS(navigator.userAgent);
57
+ return system === "ios" || system === "android";
58
+ };
59
+ BrowserUtil.removeElement = function (element) {
60
+ var _a;
61
+ if (element) {
62
+ try {
63
+ element.remove();
64
+ }
65
+ catch (e) {
66
+ // Some legacy browser may not support DOM element remove()
67
+ (_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(element);
68
+ }
69
+ }
70
+ };
71
+ BrowserUtil.scrollTo = function (options, container) {
72
+ var _a, _b, _c, _d;
73
+ if (container === void 0) { container = null; }
74
+ if (container) {
75
+ if (container.scrollTo) {
76
+ try {
77
+ container.scrollTo(__assign({}, options));
78
+ }
79
+ catch (e) {
80
+ container.scrollTo((_a = options.left) !== null && _a !== void 0 ? _a : container.scrollLeft, (_b = options.top) !== null && _b !== void 0 ? _b : container.scrollTop);
81
+ }
82
+ }
83
+ else {
84
+ options.left && (container.scrollLeft = options.left);
85
+ options.top && (container.scrollTop = options.top);
86
+ }
87
+ }
88
+ else {
89
+ // Some legacy browser may not support DOM element scrollTo({...}) signature, or even scrollTo()
90
+ try {
91
+ window.scrollTo(__assign({}, options));
92
+ }
93
+ catch (e) {
94
+ window.scrollTo((_c = options.left) !== null && _c !== void 0 ? _c : window.scrollX, (_d = options.top) !== null && _d !== void 0 ? _d : window.scrollY);
95
+ }
96
+ }
97
+ };
98
+ /**
99
+ * Resolve when new tab is loaded, only applicable to same domain.
100
+ * Ref: https://stackoverflow.com/questions/3030859/detecting-the-onload-event-of-a-window-opened-with-window-open
101
+ */
102
+ BrowserUtil.newTab = function (url, sizeOptions) {
103
+ if (sizeOptions === void 0) { sizeOptions = {}; }
104
+ var features;
105
+ if (Object.keys(sizeOptions).length > 0) {
106
+ features = "toolbar=no,location=no,status=no,menubar=no,resizable=no" + Object.entries(sizeOptions).map(function (_a) {
107
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
108
+ return ",".concat(key, "=").concat(value);
109
+ });
110
+ }
111
+ var newWindow = window.open(url, "_blank", features);
112
+ if (!newWindow) {
113
+ // In case some browser blocks popup, fallback to same tab open
114
+ window.location.href = url;
115
+ }
116
+ };
117
+ BrowserUtil.openQQ = function (qq) {
118
+ var system = parseUserAgentOS(navigator.userAgent);
119
+ if (system === "ios") {
120
+ window.open("mqq://im/chat?chat_type=wpa&uin=".concat(qq, "&version=1&src_type=web"));
121
+ }
122
+ else if (system === "android") {
123
+ window.open("mqqwpa://im/chat?chat_type=wpa&uin=".concat(qq));
124
+ }
125
+ else {
126
+ window.open("tencent://message/?uin=".concat(qq, "&Site=Sambow&Menu=yes"));
127
+ }
128
+ };
129
+ BrowserUtil.isDarkTheme = function () {
130
+ return window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
131
+ };
132
+ return BrowserUtil;
133
+ }());
134
+ export { BrowserUtil };
135
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/BrowserUtil/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { BrowserOS } from "./type";
2
+ export declare function parseUserAgentOS(userAgent: string): BrowserOS;
@@ -0,0 +1,20 @@
1
+ export function parseUserAgentOS(userAgent) {
2
+ if (userAgent.toUpperCase().includes("WINDOWS")) {
3
+ // https://stackoverflow.com/a/19176790
4
+ return "windows";
5
+ }
6
+ else if (/iPhone|iPad|iPod/i.test(userAgent)) {
7
+ // Also include "Mac" keyword
8
+ return "ios";
9
+ }
10
+ else if (/Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)) {
11
+ return "android";
12
+ }
13
+ else if (/Mac OS/i.test(userAgent)) {
14
+ return "mac";
15
+ }
16
+ else {
17
+ return "other";
18
+ }
19
+ }
20
+ //# sourceMappingURL=parseUserAgentOS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseUserAgentOS.js","sourceRoot":"","sources":["../../../src/util/BrowserUtil/parseUserAgentOS.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAC9C,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9C,uCAAuC;QACvC,OAAO,SAAS,CAAC;IACrB,CAAC;SAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,6BAA6B;QAC7B,OAAO,KAAK,CAAC;IACjB,CAAC;SAAM,IAAI,+CAA+C,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACzE,OAAO,SAAS,CAAC;IACrB,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;SAAM,CAAC;QACJ,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type BrowserOS = "windows" | "mac" | "ios" | "android" | "other";
2
+ export type BrowserKernel = "wechat" | "webkit" | "firefox" | "ie" | "other";
3
+ export interface BrowserNewTabSizeOptions {
4
+ width: number;
5
+ height: number;
6
+ top: number;
7
+ left: number;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/util/BrowserUtil/type.ts"],"names":[],"mappings":""}
@@ -1,31 +0,0 @@
1
- export type BrowserOS = "windows" | "mac" | "ios" | "android" | "other";
2
- export type BrowserKernel = "wechat" | "webkit" | "firefox" | "ie" | "other";
3
- export interface BrowserNewTabSizeOptions {
4
- width: number;
5
- height: number;
6
- top: number;
7
- left: number;
8
- }
9
- declare function os(): BrowserOS;
10
- declare function kernel(): BrowserKernel;
11
- declare function isMobile(): boolean;
12
- declare function removeElement(element: HTMLElement | null): void;
13
- declare function scrollTo(options: ScrollToOptions, container?: Element | null): void;
14
- /**
15
- * Resolve when new tab is loaded, only applicable to same domain.
16
- * Ref: https://stackoverflow.com/questions/3030859/detecting-the-onload-event-of-a-window-opened-with-window-open
17
- */
18
- declare function newTab(url: string, sizeOptions?: Partial<BrowserNewTabSizeOptions>): void;
19
- declare function openQQ(qq: string): void;
20
- declare function isDarkTheme(): boolean;
21
- export declare const BrowserUtil: Readonly<{
22
- os: typeof os;
23
- kernel: typeof kernel;
24
- isMobile: typeof isMobile;
25
- removeElement: typeof removeElement;
26
- scrollTo: typeof scrollTo;
27
- newTab: typeof newTab;
28
- openQQ: typeof openQQ;
29
- isDarkTheme: typeof isDarkTheme;
30
- }>;
31
- export {};
@@ -1,154 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __read = (this && this.__read) || function (o, n) {
13
- var m = typeof Symbol === "function" && o[Symbol.iterator];
14
- if (!m) return o;
15
- var i = m.call(o), r, ar = [], e;
16
- try {
17
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
18
- }
19
- catch (error) { e = { error: error }; }
20
- finally {
21
- try {
22
- if (r && !r.done && (m = i["return"])) m.call(i);
23
- }
24
- finally { if (e) throw e.error; }
25
- }
26
- return ar;
27
- };
28
- function os() {
29
- if (navigator.userAgent.toUpperCase().includes("WINDOWS")) {
30
- // https://stackoverflow.com/a/19176790
31
- return "windows";
32
- }
33
- else if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
34
- // Also include "Mac" keyword
35
- return "ios";
36
- }
37
- else if (/Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
38
- return "android";
39
- }
40
- else if (navigator.platform.toUpperCase().includes("MAC")) {
41
- return "mac";
42
- }
43
- else {
44
- return "other";
45
- }
46
- }
47
- function kernel() {
48
- var userAgentUpperCase = navigator.userAgent.toUpperCase();
49
- if (userAgentUpperCase.includes("MICROMESSENGER")) {
50
- return "wechat";
51
- }
52
- else if ("WebkitAppearance" in document.documentElement.style) {
53
- return "webkit";
54
- }
55
- else if (userAgentUpperCase.includes("FIREFOX") && !userAgentUpperCase.includes("SEAMONKEY")) {
56
- // https://github.com/keithws/browser-report/blob/6fa7a2bb33ce8b8621b2c4538a1ebefac38af57f/index.js#L64
57
- return "firefox";
58
- }
59
- else if (userAgentUpperCase.includes("MSIE")) {
60
- // https://github.com/keithws/browser-report/blob/6fa7a2bb33ce8b8621b2c4538a1ebefac38af57f/index.js#L56
61
- return "ie";
62
- }
63
- else {
64
- return "other";
65
- }
66
- }
67
- function isMobile() {
68
- var system = os();
69
- return system === "ios" || system === "android";
70
- }
71
- function removeElement(element) {
72
- var _a;
73
- if (element) {
74
- try {
75
- element.remove();
76
- }
77
- catch (e) {
78
- // Some legacy browser may not support DOM element remove()
79
- (_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(element);
80
- }
81
- }
82
- }
83
- function scrollTo(options, container) {
84
- var _a, _b, _c, _d;
85
- if (container === void 0) { container = null; }
86
- if (container) {
87
- if (container.scrollTo) {
88
- try {
89
- container.scrollTo(__assign({}, options));
90
- }
91
- catch (e) {
92
- container.scrollTo((_a = options.left) !== null && _a !== void 0 ? _a : container.scrollLeft, (_b = options.top) !== null && _b !== void 0 ? _b : container.scrollTop);
93
- }
94
- }
95
- else {
96
- options.left && (container.scrollLeft = options.left);
97
- options.top && (container.scrollTop = options.top);
98
- }
99
- }
100
- else {
101
- // Some legacy browser may not support DOM element scrollTo({...}) signature, or even scrollTo()
102
- try {
103
- window.scrollTo(__assign({}, options));
104
- }
105
- catch (e) {
106
- window.scrollTo((_c = options.left) !== null && _c !== void 0 ? _c : window.scrollX, (_d = options.top) !== null && _d !== void 0 ? _d : window.scrollY);
107
- }
108
- }
109
- }
110
- /**
111
- * Resolve when new tab is loaded, only applicable to same domain.
112
- * Ref: https://stackoverflow.com/questions/3030859/detecting-the-onload-event-of-a-window-opened-with-window-open
113
- */
114
- function newTab(url, sizeOptions) {
115
- if (sizeOptions === void 0) { sizeOptions = {}; }
116
- var features;
117
- if (Object.keys(sizeOptions).length > 0) {
118
- features = "toolbar=no,location=no,status=no,menubar=no,resizable=no" + Object.entries(sizeOptions).map(function (_a) {
119
- var _b = __read(_a, 2), key = _b[0], value = _b[1];
120
- return ",".concat(key, "=").concat(value);
121
- });
122
- }
123
- var newWindow = window.open(url, "_blank", features);
124
- if (!newWindow) {
125
- // In case some browser blocks popup, fallback to same tab open
126
- window.location.href = url;
127
- }
128
- }
129
- function openQQ(qq) {
130
- var system = os();
131
- if (system === "ios") {
132
- window.open("mqq://im/chat?chat_type=wpa&uin=".concat(qq, "&version=1&src_type=web"));
133
- }
134
- else if (system === "android") {
135
- window.open("mqqwpa://im/chat?chat_type=wpa&uin=".concat(qq));
136
- }
137
- else {
138
- window.open("tencent://message/?uin=".concat(qq, "&Site=Sambow&Menu=yes"));
139
- }
140
- }
141
- function isDarkTheme() {
142
- return window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
143
- }
144
- export var BrowserUtil = Object.freeze({
145
- os: os,
146
- kernel: kernel,
147
- isMobile: isMobile,
148
- removeElement: removeElement,
149
- scrollTo: scrollTo,
150
- newTab: newTab,
151
- openQQ: openQQ,
152
- isDarkTheme: isDarkTheme,
153
- });
154
- //# sourceMappingURL=BrowserUtil.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BrowserUtil.js","sourceRoot":"","sources":["../../src/util/BrowserUtil.ts"],"names":[],"mappings":"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"}