@wapri/ghooks 0.0.0-stage → 0.2.18
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.
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/types/lottie-api.d.ts +36 -0
- package/dist/useLandscape/demo/basic.vue +29 -0
- package/dist/useLandscape/demo/lock.vue +29 -0
- package/dist/useLandscape/index.d.ts +10 -0
- package/dist/useLandscape/index.js +56 -0
- package/dist/useLottie/demo/basic.vue +150 -0
- package/dist/useLottie/demo/remote.vue +169 -0
- package/dist/useLottie/demo//345/214/205/351/202/256.json +619 -0
- package/dist/useLottie/index.d.ts +44 -0
- package/dist/useLottie/index.js +163 -0
- package/dist/useTicket/index.d.ts +20 -0
- package/dist/useTicket/index.js +75 -0
- package/dist/useVh100/index.d.ts +2 -0
- package/dist/useVh100/index.js +20 -0
- package/package.json +27 -3
- package/README.md +0 -3
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AnimationEventName, AnimationItem, AnimationSegment, RendererType } from 'lottie-web';
|
|
2
|
+
import { type Ref } from 'vue';
|
|
3
|
+
export type { AnimationItem, AnimationSegment } from 'lottie-web';
|
|
4
|
+
/** 动画容器:DOM 元素、ref,或返回元素的 getter */
|
|
5
|
+
export type LottieTarget = Element | Ref<Element | null | undefined> | (() => Element | null | undefined);
|
|
6
|
+
export type UseLottieOptions = {
|
|
7
|
+
/** 渲染器类型,默认 svg */
|
|
8
|
+
renderer?: RendererType;
|
|
9
|
+
/** 是否循环播放,默认 true */
|
|
10
|
+
loop?: boolean | number;
|
|
11
|
+
/** 是否自动播放,默认 true */
|
|
12
|
+
autoplay?: boolean;
|
|
13
|
+
/** 动画名,多实例场景用于区分 */
|
|
14
|
+
name?: string;
|
|
15
|
+
/** 使用 http 资源时的 json 地址 */
|
|
16
|
+
path?: string;
|
|
17
|
+
/** 初始化时按图层名替换的图片 */
|
|
18
|
+
dynamic?: Record<string, string>;
|
|
19
|
+
/** 动画加载完成回调 */
|
|
20
|
+
onReady?: (instance: AnimationItem) => void;
|
|
21
|
+
};
|
|
22
|
+
export type UseLottieReturn = {
|
|
23
|
+
/** lottie 实例,未加载完成时为 null */
|
|
24
|
+
instance: Ref<AnimationItem | null>;
|
|
25
|
+
play: () => void;
|
|
26
|
+
pause: () => void;
|
|
27
|
+
stop: () => void;
|
|
28
|
+
playSegments: (segments: AnimationSegment | AnimationSegment[], forceFlag?: boolean) => void;
|
|
29
|
+
/** 播放指定区间,播放结束后 resolve */
|
|
30
|
+
playAnimation: (segments: AnimationSegment | AnimationSegment[], forceFlag?: boolean) => Promise<void>;
|
|
31
|
+
goToAndStop: (value: number | string, isFrame?: boolean, name?: string) => void;
|
|
32
|
+
goToAndPlay: (value: number | string, isFrame?: boolean, name?: string) => void;
|
|
33
|
+
getDuration: (inFrames?: boolean) => number;
|
|
34
|
+
on: (name: AnimationEventName, callback: () => void) => void;
|
|
35
|
+
off: (name: AnimationEventName, callback?: () => void) => void;
|
|
36
|
+
/** 按图层名动态替换图片 */
|
|
37
|
+
dynamicReplaceImg: (dynamicList: Record<string, string>) => void;
|
|
38
|
+
setLoop: (value: number | boolean) => void;
|
|
39
|
+
destroy: () => void;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* lottie-web 常用能力封装,组件卸载时自动 destroy。
|
|
43
|
+
*/
|
|
44
|
+
export declare const useLottie: (target: LottieTarget, animationData: Record<string, unknown> | null, options?: UseLottieOptions) => UseLottieReturn;
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { isObject } from '@wapri/gbase';
|
|
8
|
+
import lottieApi from 'lottie-api';
|
|
9
|
+
import lottie from 'lottie-web';
|
|
10
|
+
import { onBeforeUnmount, onMounted, shallowRef, unref, watch } from 'vue';
|
|
11
|
+
|
|
12
|
+
/** 动画容器:DOM 元素、ref,或返回元素的 getter */
|
|
13
|
+
|
|
14
|
+
/** 兼容元素、ref、getter 三种容器写法 */
|
|
15
|
+
var resolveContainer = function resolveContainer(target) {
|
|
16
|
+
var element = typeof target === 'function' ? target() : unref(target);
|
|
17
|
+
return element instanceof Element ? element : null;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* lottie-web 常用能力封装,组件卸载时自动 destroy。
|
|
22
|
+
*/
|
|
23
|
+
export var useLottie = function useLottie(target, animationData) {
|
|
24
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
25
|
+
var instance = shallowRef(null);
|
|
26
|
+
var animationApi = null;
|
|
27
|
+
|
|
28
|
+
/** 按图层名替换图片;canvas 与 svg 渲染器取元素的方式不同 */
|
|
29
|
+
var dynamicReplaceImg = function dynamicReplaceImg(dynamicList) {
|
|
30
|
+
var _current$renderer;
|
|
31
|
+
var current = instance.value;
|
|
32
|
+
var api = animationApi;
|
|
33
|
+
if (!current || !api) return;
|
|
34
|
+
var isCanvas = ((_current$renderer = current.renderer) === null || _current$renderer === void 0 ? void 0 : _current$renderer.rendererType) === 'canvas';
|
|
35
|
+
Object.entries(dynamicList).forEach(function (_ref) {
|
|
36
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
37
|
+
key = _ref2[0],
|
|
38
|
+
src = _ref2[1];
|
|
39
|
+
api.getKeyPath(key).getElements().forEach(function (item) {
|
|
40
|
+
var _item$element$innerEl;
|
|
41
|
+
if (isCanvas) {
|
|
42
|
+
if (item.element.img) item.element.img.src = src;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
(_item$element$innerEl = item.element.innerElem) === null || _item$element$innerEl === void 0 || _item$element$innerEl.setAttributeNS('http://www.w3.org/1999/xlink', 'href', src);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
var destroy = function destroy() {
|
|
50
|
+
var _instance$value;
|
|
51
|
+
animationApi = null;
|
|
52
|
+
(_instance$value = instance.value) === null || _instance$value === void 0 || _instance$value.destroy();
|
|
53
|
+
instance.value = null;
|
|
54
|
+
};
|
|
55
|
+
var load = function load() {
|
|
56
|
+
var _options$renderer, _options$loop, _options$autoplay;
|
|
57
|
+
destroy();
|
|
58
|
+
var container = resolveContainer(target);
|
|
59
|
+
if (!container) return;
|
|
60
|
+
var item = lottie.loadAnimation({
|
|
61
|
+
container: container,
|
|
62
|
+
animationData: animationData,
|
|
63
|
+
path: options.path,
|
|
64
|
+
renderer: (_options$renderer = options.renderer) !== null && _options$renderer !== void 0 ? _options$renderer : 'svg',
|
|
65
|
+
loop: (_options$loop = options.loop) !== null && _options$loop !== void 0 ? _options$loop : true,
|
|
66
|
+
autoplay: (_options$autoplay = options.autoplay) !== null && _options$autoplay !== void 0 ? _options$autoplay : true,
|
|
67
|
+
name: options.name
|
|
68
|
+
});
|
|
69
|
+
instance.value = item;
|
|
70
|
+
item.addEventListener('DOMLoaded', function () {
|
|
71
|
+
var _options$onReady;
|
|
72
|
+
animationApi = lottieApi.createAnimationApi(item);
|
|
73
|
+
if (options.dynamic && isObject(options.dynamic)) {
|
|
74
|
+
dynamicReplaceImg(options.dynamic);
|
|
75
|
+
}
|
|
76
|
+
(_options$onReady = options.onReady) === null || _options$onReady === void 0 || _options$onReady.call(options, item);
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
onMounted(load);
|
|
80
|
+
|
|
81
|
+
// 仅 path 变化时重新加载,与既有实现保持一致
|
|
82
|
+
watch(function () {
|
|
83
|
+
return options.path;
|
|
84
|
+
}, function () {
|
|
85
|
+
return load();
|
|
86
|
+
});
|
|
87
|
+
onBeforeUnmount(destroy);
|
|
88
|
+
var play = function play() {
|
|
89
|
+
var _instance$value2;
|
|
90
|
+
(_instance$value2 = instance.value) === null || _instance$value2 === void 0 || _instance$value2.play();
|
|
91
|
+
};
|
|
92
|
+
var pause = function pause() {
|
|
93
|
+
var _instance$value3;
|
|
94
|
+
(_instance$value3 = instance.value) === null || _instance$value3 === void 0 || _instance$value3.pause();
|
|
95
|
+
};
|
|
96
|
+
var stop = function stop() {
|
|
97
|
+
var _instance$value4;
|
|
98
|
+
(_instance$value4 = instance.value) === null || _instance$value4 === void 0 || _instance$value4.stop();
|
|
99
|
+
};
|
|
100
|
+
var playSegments = function playSegments(segments) {
|
|
101
|
+
var _instance$value5;
|
|
102
|
+
var forceFlag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
103
|
+
(_instance$value5 = instance.value) === null || _instance$value5 === void 0 || _instance$value5.playSegments(segments, forceFlag);
|
|
104
|
+
};
|
|
105
|
+
var playAnimation = function playAnimation(segments) {
|
|
106
|
+
var forceFlag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
107
|
+
return new Promise(function (resolve) {
|
|
108
|
+
var item = instance.value;
|
|
109
|
+
if (!item) {
|
|
110
|
+
resolve();
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// 先挂监听再播放,避免区间很短时错过 complete
|
|
115
|
+
var handleComplete = function handleComplete() {
|
|
116
|
+
item.removeEventListener('complete', handleComplete);
|
|
117
|
+
resolve();
|
|
118
|
+
};
|
|
119
|
+
item.addEventListener('complete', handleComplete);
|
|
120
|
+
item.playSegments(segments, forceFlag);
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
var goToAndStop = function goToAndStop(value, isFrame, name) {
|
|
124
|
+
var _instance$value6;
|
|
125
|
+
(_instance$value6 = instance.value) === null || _instance$value6 === void 0 || _instance$value6.goToAndStop(value, isFrame, name);
|
|
126
|
+
};
|
|
127
|
+
var goToAndPlay = function goToAndPlay(value, isFrame, name) {
|
|
128
|
+
var _instance$value7;
|
|
129
|
+
(_instance$value7 = instance.value) === null || _instance$value7 === void 0 || _instance$value7.goToAndPlay(value, isFrame, name);
|
|
130
|
+
};
|
|
131
|
+
var getDuration = function getDuration(inFrames) {
|
|
132
|
+
var _instance$value$getDu, _instance$value8;
|
|
133
|
+
return (_instance$value$getDu = (_instance$value8 = instance.value) === null || _instance$value8 === void 0 ? void 0 : _instance$value8.getDuration(inFrames)) !== null && _instance$value$getDu !== void 0 ? _instance$value$getDu : 0;
|
|
134
|
+
};
|
|
135
|
+
var on = function on(name, callback) {
|
|
136
|
+
var _instance$value9;
|
|
137
|
+
(_instance$value9 = instance.value) === null || _instance$value9 === void 0 || _instance$value9.addEventListener(name, callback);
|
|
138
|
+
};
|
|
139
|
+
var off = function off(name, callback) {
|
|
140
|
+
var _instance$value10;
|
|
141
|
+
(_instance$value10 = instance.value) === null || _instance$value10 === void 0 || _instance$value10.removeEventListener(name, callback);
|
|
142
|
+
};
|
|
143
|
+
var setLoop = function setLoop(value) {
|
|
144
|
+
var item = instance.value;
|
|
145
|
+
if (item) item.loop = value;
|
|
146
|
+
};
|
|
147
|
+
return {
|
|
148
|
+
instance: instance,
|
|
149
|
+
play: play,
|
|
150
|
+
pause: pause,
|
|
151
|
+
stop: stop,
|
|
152
|
+
playSegments: playSegments,
|
|
153
|
+
playAnimation: playAnimation,
|
|
154
|
+
goToAndStop: goToAndStop,
|
|
155
|
+
goToAndPlay: goToAndPlay,
|
|
156
|
+
getDuration: getDuration,
|
|
157
|
+
on: on,
|
|
158
|
+
off: off,
|
|
159
|
+
dynamicReplaceImg: dynamicReplaceImg,
|
|
160
|
+
setLoop: setLoop,
|
|
161
|
+
destroy: destroy
|
|
162
|
+
};
|
|
163
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Hermes } from '@wapri/ghermes';
|
|
2
|
+
import { type Ref } from 'vue';
|
|
3
|
+
export type TicketStatus = 'pending' | 'success' | 'fail';
|
|
4
|
+
export type UseTicketOptions = {
|
|
5
|
+
hermes: Hermes;
|
|
6
|
+
};
|
|
7
|
+
export type UseTicketReturn = {
|
|
8
|
+
/** URL 存在 ticket 且换取令牌尚未完成时为 true */
|
|
9
|
+
loading: Ref<boolean>;
|
|
10
|
+
/** 换取状态;未携带 ticket 时保持 success */
|
|
11
|
+
status: Ref<TicketStatus>;
|
|
12
|
+
/** 换取失败时的可展示错误文案 */
|
|
13
|
+
errorMessage: Ref<string>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* 在组件首次挂载前,用 URL ticket 换取并保存访问令牌。
|
|
17
|
+
*
|
|
18
|
+
* 仅可传入使用网关根 `/api` 的 Hermes 实例,不能与业务中心 `module` 混用。
|
|
19
|
+
*/
|
|
20
|
+
export declare const useTicket: ({ hermes }: UseTicketOptions) => UseTicketReturn;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
5
|
+
import { getUrlParam, removeUrlParams, setToken } from '@wapri/gbase';
|
|
6
|
+
import { onBeforeMount, ref } from 'vue';
|
|
7
|
+
var resolveTicketErrorMessage = function resolveTicketErrorMessage(error) {
|
|
8
|
+
if (error instanceof Error && error.message) return error.message;
|
|
9
|
+
return 'Ticket 登录失败';
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 在组件首次挂载前,用 URL ticket 换取并保存访问令牌。
|
|
14
|
+
*
|
|
15
|
+
* 仅可传入使用网关根 `/api` 的 Hermes 实例,不能与业务中心 `module` 混用。
|
|
16
|
+
*/
|
|
17
|
+
export var useTicket = function useTicket(_ref) {
|
|
18
|
+
var hermes = _ref.hermes;
|
|
19
|
+
var loading = ref(false);
|
|
20
|
+
var status = ref('pending');
|
|
21
|
+
var errorMessage = ref('');
|
|
22
|
+
onBeforeMount( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
23
|
+
var ticket, data, accessToken;
|
|
24
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
25
|
+
while (1) switch (_context.prev = _context.next) {
|
|
26
|
+
case 0:
|
|
27
|
+
ticket = getUrlParam('ticket');
|
|
28
|
+
if (ticket) {
|
|
29
|
+
_context.next = 3;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
return _context.abrupt("return");
|
|
33
|
+
case 3:
|
|
34
|
+
loading.value = true;
|
|
35
|
+
status.value = 'pending';
|
|
36
|
+
_context.prev = 5;
|
|
37
|
+
_context.next = 8;
|
|
38
|
+
return hermes.modules.auth.ticketGetToken({
|
|
39
|
+
ticket: ticket
|
|
40
|
+
});
|
|
41
|
+
case 8:
|
|
42
|
+
data = _context.sent;
|
|
43
|
+
accessToken = data === null || data === void 0 ? void 0 : data.accessToken;
|
|
44
|
+
if (accessToken) {
|
|
45
|
+
_context.next = 12;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
throw new Error('登录已失效,请返回并重新打开');
|
|
49
|
+
case 12:
|
|
50
|
+
setToken(accessToken);
|
|
51
|
+
removeUrlParams(['ticket']);
|
|
52
|
+
status.value = 'success';
|
|
53
|
+
_context.next = 21;
|
|
54
|
+
break;
|
|
55
|
+
case 17:
|
|
56
|
+
_context.prev = 17;
|
|
57
|
+
_context.t0 = _context["catch"](5);
|
|
58
|
+
status.value = 'fail';
|
|
59
|
+
errorMessage.value = resolveTicketErrorMessage(_context.t0);
|
|
60
|
+
case 21:
|
|
61
|
+
_context.prev = 21;
|
|
62
|
+
loading.value = false;
|
|
63
|
+
return _context.finish(21);
|
|
64
|
+
case 24:
|
|
65
|
+
case "end":
|
|
66
|
+
return _context.stop();
|
|
67
|
+
}
|
|
68
|
+
}, _callee, null, [[5, 17, 21, 24]]);
|
|
69
|
+
})));
|
|
70
|
+
return {
|
|
71
|
+
loading: loading,
|
|
72
|
+
status: status,
|
|
73
|
+
errorMessage: errorMessage
|
|
74
|
+
};
|
|
75
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ref, onMounted, onUnmounted } from 'vue';
|
|
2
|
+
var isClient = typeof window !== 'undefined';
|
|
3
|
+
var innerHeight = function innerHeight() {
|
|
4
|
+
return window.innerHeight;
|
|
5
|
+
};
|
|
6
|
+
export var useVh100 = function useVh100() {
|
|
7
|
+
var height = ref(isClient ? innerHeight() : 0);
|
|
8
|
+
var setMeasuredHeight = function setMeasuredHeight() {
|
|
9
|
+
height.value = innerHeight();
|
|
10
|
+
};
|
|
11
|
+
onMounted(function () {
|
|
12
|
+
if (!isClient) return;
|
|
13
|
+
window.addEventListener('resize', setMeasuredHeight);
|
|
14
|
+
});
|
|
15
|
+
onUnmounted(function () {
|
|
16
|
+
if (!isClient) return;
|
|
17
|
+
window.removeEventListener('resize', setMeasuredHeight);
|
|
18
|
+
});
|
|
19
|
+
return height;
|
|
20
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wapri/ghooks",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.2.18",
|
|
4
|
+
"description": "hooks工具库",
|
|
5
|
+
"keywords": [],
|
|
6
|
+
"license": "UNLICENSED",
|
|
7
|
+
"author": "wa",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"module": "dist/index.js",
|
|
10
|
+
"types": "dist/index.d.ts",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist"
|
|
13
|
+
],
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"lottie-api": "^1.0.3",
|
|
16
|
+
"lottie-web": "^5.13.0",
|
|
17
|
+
"vue-hooks-plus": "^2.4.3",
|
|
18
|
+
"@wapri/gbase": "^1.0.0",
|
|
19
|
+
"@wapri/ghermes": "^2.0.10"
|
|
20
|
+
},
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public",
|
|
23
|
+
"registry": "https://registry.npmjs.org/"
|
|
24
|
+
},
|
|
25
|
+
"peerDependenciesMeta": {},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "father build",
|
|
28
|
+
"dev": "father dev"
|
|
29
|
+
}
|
|
6
30
|
}
|
package/README.md
DELETED