| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748 |
- import { defineComponent as q, shallowRef as Y, reactive as le, getCurrentInstance as ge, computed as F, watch as V, onMounted as G, onUpdated as se, onUnmounted as me, createVNode as w, provide as ve, inject as xe, nextTick as ae, onBeforeUnmount as ce, ref as U, openBlock as ke, createBlock as ye } from "vue";
- import { w as J, a as W, s as Ce, g as fe, m as ue, b as Se, u as X, c as D, o as Te, R as we, _ as z, d as N, r as $e, t as Ae, i as be, e as Be, f as Ie, h as Q, j as Pe, P as Ee, k as Le, l as _e } from "./index2.js";
- import { g as Ne, s as ze } from "./scrollTo.js";
- function Z(e) {
- let t;
- const o = (i) => () => {
- t = null, e(...i);
- }, r = function() {
- if (t == null) {
- for (var i = arguments.length, u = new Array(i), f = 0; f < i; f++)
- u[f] = arguments[f];
- t = J(o(u));
- }
- };
- return r.cancel = () => {
- J.cancel(t), t = null;
- }, r;
- }
- function M(e) {
- return e !== window ? e.getBoundingClientRect() : {
- top: 0,
- bottom: window.innerHeight
- };
- }
- function ee(e, t, o) {
- if (o !== void 0 && t.top > e.top - o)
- return `${o + t.top}px`;
- }
- function te(e, t, o) {
- if (o !== void 0 && t.bottom < e.bottom + o) {
- const r = window.innerHeight - t.bottom;
- return `${o + r}px`;
- }
- }
- const de = ["resize", "scroll", "touchstart", "touchmove", "touchend", "pageshow", "load"];
- let H = [];
- function ne(e, t) {
- if (!e) return;
- let o = H.find((r) => r.target === e);
- o ? o.affixList.push(t) : (o = {
- target: e,
- affixList: [t],
- eventHandlers: {}
- }, H.push(o), de.forEach((r) => {
- o.eventHandlers[r] = W(e, r, () => {
- o.affixList.forEach((i) => {
- const {
- lazyUpdatePosition: u
- } = i.exposed;
- u();
- }, (r === "touchstart" || r === "touchmove") && Ce ? {
- passive: !0
- } : !1);
- });
- }));
- }
- function oe(e) {
- const t = H.find((o) => {
- const r = o.affixList.some((i) => i === e);
- return r && (o.affixList = o.affixList.filter((i) => i !== e)), r;
- });
- t && t.affixList.length === 0 && (H = H.filter((o) => o !== t), de.forEach((o) => {
- const r = t.eventHandlers[o];
- r && r.remove && r.remove();
- }));
- }
- const Oe = (e) => {
- const {
- componentCls: t
- } = e;
- return {
- [t]: {
- position: "fixed",
- zIndex: e.zIndexPopup
- }
- };
- }, Re = fe("Affix", (e) => {
- const t = ue(e, {
- zIndexPopup: e.zIndexBase + 10
- });
- return [Oe(t)];
- });
- function De() {
- return typeof window != "undefined" ? window : null;
- }
- var R;
- (function(e) {
- e[e.None = 0] = "None", e[e.Prepare = 1] = "Prepare";
- })(R || (R = {}));
- const Fe = () => ({
- /**
- * 距离窗口顶部达到指定偏移量后触发
- */
- offsetTop: Number,
- /** 距离窗口底部达到指定偏移量后触发 */
- offsetBottom: Number,
- /** 设置 Affix 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 */
- target: {
- type: Function,
- default: De
- },
- prefixCls: String,
- /** 固定状态改变时触发的回调函数 */
- onChange: Function,
- onTestUpdatePosition: Function
- }), He = q({
- compatConfig: {
- MODE: 3
- },
- name: "AAffix",
- inheritAttrs: !1,
- props: Fe(),
- setup(e, t) {
- let {
- slots: o,
- emit: r,
- expose: i,
- attrs: u
- } = t;
- const f = Y(), C = Y(), g = le({
- affixStyle: void 0,
- placeholderStyle: void 0,
- status: R.None,
- lastAffix: !1,
- prevTarget: null,
- timeout: null
- }), I = ge(), $ = F(() => e.offsetBottom === void 0 && e.offsetTop === void 0 ? 0 : e.offsetTop), S = F(() => e.offsetBottom), y = () => {
- const {
- status: a,
- lastAffix: d
- } = g, {
- target: A
- } = e;
- if (a !== R.Prepare || !C.value || !f.value || !A)
- return;
- const B = A();
- if (!B)
- return;
- const m = {
- status: R.None
- }, n = M(f.value);
- if (n.top === 0 && n.left === 0 && n.width === 0 && n.height === 0)
- return;
- const l = M(B), p = ee(n, l, $.value), k = te(n, l, S.value);
- if (!(n.top === 0 && n.left === 0 && n.width === 0 && n.height === 0)) {
- if (p !== void 0) {
- const c = `${n.width}px`, h = `${n.height}px`;
- m.affixStyle = {
- position: "fixed",
- top: p,
- width: c,
- height: h
- }, m.placeholderStyle = {
- width: c,
- height: h
- };
- } else if (k !== void 0) {
- const c = `${n.width}px`, h = `${n.height}px`;
- m.affixStyle = {
- position: "fixed",
- bottom: k,
- width: c,
- height: h
- }, m.placeholderStyle = {
- width: c,
- height: h
- };
- }
- m.lastAffix = !!m.affixStyle, d !== m.lastAffix && r("change", m.lastAffix), N(g, m);
- }
- }, s = () => {
- N(g, {
- status: R.Prepare,
- affixStyle: void 0,
- placeholderStyle: void 0
- }), process.env.NODE_ENV === "test" && r("testUpdatePosition");
- }, v = Z(() => {
- s();
- }), x = Z(() => {
- const {
- target: a
- } = e, {
- affixStyle: d
- } = g;
- if (a && d) {
- const A = a();
- if (A && f.value) {
- const B = M(A), m = M(f.value), n = ee(m, B, $.value), l = te(m, B, S.value);
- if (n !== void 0 && d.top === n || l !== void 0 && d.bottom === l)
- return;
- }
- }
- s();
- });
- i({
- updatePosition: v,
- lazyUpdatePosition: x
- }), V(() => e.target, (a) => {
- const d = (a == null ? void 0 : a()) || null;
- g.prevTarget !== d && (oe(I), d && (ne(d, I), v()), g.prevTarget = d);
- }), V(() => [e.offsetTop, e.offsetBottom], v), G(() => {
- const {
- target: a
- } = e;
- a && (g.timeout = setTimeout(() => {
- ne(a(), I), v();
- }));
- }), se(() => {
- y();
- }), me(() => {
- clearTimeout(g.timeout), oe(I), v.cancel(), x.cancel();
- });
- const {
- prefixCls: E
- } = X("affix", e), [b, L] = Re(E);
- return () => {
- var a;
- const {
- affixStyle: d,
- placeholderStyle: A,
- status: B
- } = g, m = D({
- [E.value]: d,
- [L.value]: !0
- }), n = Te(e, ["prefixCls", "offsetTop", "offsetBottom", "target", "onChange", "onTestUpdatePosition"]);
- return b(w(we, {
- onResize: v
- }, {
- default: () => [w("div", z(z(z({}, n), u), {}, {
- ref: f,
- "data-measure-status": B
- }), [d && w("div", {
- style: A,
- "aria-hidden": "true"
- }, null), w("div", {
- class: m,
- ref: C,
- style: d
- }, [(a = o.default) === null || a === void 0 ? void 0 : a.call(o)])])]
- }));
- };
- }
- }), Me = Se(He);
- function j() {
- }
- const he = Symbol("anchorContextKey"), je = (e) => {
- ve(he, e);
- }, Ue = () => xe(he, {
- registerLink: j,
- unregisterLink: j,
- scrollTo: j,
- activeLink: F(() => ""),
- handleClick: j,
- direction: F(() => "vertical")
- }), Ve = (e) => {
- const {
- componentCls: t,
- holderOffsetBlock: o,
- motionDurationSlow: r,
- lineWidthBold: i,
- colorPrimary: u,
- lineType: f,
- colorSplit: C
- } = e;
- return {
- [`${t}-wrapper`]: {
- marginBlockStart: -o,
- paddingBlockStart: o,
- // delete overflow: auto
- // overflow: 'auto',
- backgroundColor: "transparent",
- [t]: N(N({}, $e(e)), {
- position: "relative",
- paddingInlineStart: i,
- [`${t}-link`]: {
- paddingBlock: e.anchorPaddingBlock,
- paddingInline: `${e.anchorPaddingInline}px 0`,
- "&-title": N(N({}, Ae), {
- position: "relative",
- display: "block",
- marginBlockEnd: e.anchorTitleBlock,
- color: e.colorText,
- transition: `all ${e.motionDurationSlow}`,
- "&:only-child": {
- marginBlockEnd: 0
- }
- }),
- [`&-active > ${t}-link-title`]: {
- color: e.colorPrimary
- },
- // link link
- [`${t}-link`]: {
- paddingBlock: e.anchorPaddingBlockSecondary
- }
- }
- }),
- [`&:not(${t}-wrapper-horizontal)`]: {
- [t]: {
- "&::before": {
- position: "absolute",
- left: {
- _skip_check_: !0,
- value: 0
- },
- top: 0,
- height: "100%",
- borderInlineStart: `${i}px ${f} ${C}`,
- content: '" "'
- },
- [`${t}-ink`]: {
- position: "absolute",
- left: {
- _skip_check_: !0,
- value: 0
- },
- display: "none",
- transform: "translateY(-50%)",
- transition: `top ${r} ease-in-out`,
- width: i,
- backgroundColor: u,
- [`&${t}-ink-visible`]: {
- display: "inline-block"
- }
- }
- }
- },
- [`${t}-fixed ${t}-ink ${t}-ink`]: {
- display: "none"
- }
- }
- };
- }, We = (e) => {
- const {
- componentCls: t,
- motionDurationSlow: o,
- lineWidthBold: r,
- colorPrimary: i
- } = e;
- return {
- [`${t}-wrapper-horizontal`]: {
- position: "relative",
- "&::before": {
- position: "absolute",
- left: {
- _skip_check_: !0,
- value: 0
- },
- right: {
- _skip_check_: !0,
- value: 0
- },
- bottom: 0,
- borderBottom: `1px ${e.lineType} ${e.colorSplit}`,
- content: '" "'
- },
- [t]: {
- overflowX: "scroll",
- position: "relative",
- display: "flex",
- scrollbarWidth: "none",
- "&::-webkit-scrollbar": {
- display: "none"
- /* Safari and Chrome */
- },
- [`${t}-link:first-of-type`]: {
- paddingInline: 0
- },
- [`${t}-ink`]: {
- position: "absolute",
- bottom: 0,
- transition: `left ${o} ease-in-out, width ${o} ease-in-out`,
- height: r,
- backgroundColor: i
- }
- }
- }
- };
- }, qe = fe("Anchor", (e) => {
- const {
- fontSize: t,
- fontSizeLG: o,
- padding: r,
- paddingXXS: i
- } = e, u = ue(e, {
- holderOffsetBlock: i,
- anchorPaddingBlock: i,
- anchorPaddingBlockSecondary: i / 2,
- anchorPaddingInline: r,
- anchorTitleBlock: t / 14 * 3,
- anchorBallSize: o / 2
- });
- return [Ve(u), We(u)];
- }), Ge = () => ({
- prefixCls: String,
- href: String,
- title: Be(),
- target: String,
- /* private use */
- customTitleProps: Ie()
- }), pe = q({
- compatConfig: {
- MODE: 3
- },
- name: "AAnchorLink",
- inheritAttrs: !1,
- props: be(Ge(), {
- href: "#"
- }),
- slots: Object,
- setup(e, t) {
- let {
- slots: o,
- attrs: r
- } = t, i = null;
- const {
- handleClick: u,
- scrollTo: f,
- unregisterLink: C,
- registerLink: g,
- activeLink: I
- } = Ue(), {
- prefixCls: $
- } = X("anchor", e), S = (y) => {
- const {
- href: s
- } = e;
- u(y, {
- title: i,
- href: s
- }), f(s);
- };
- return V(() => e.href, (y, s) => {
- ae(() => {
- C(s), g(y);
- });
- }), G(() => {
- g(e.href);
- }), ce(() => {
- C(e.href);
- }), () => {
- var y;
- const {
- href: s,
- target: v,
- title: x = o.title,
- customTitleProps: E = {}
- } = e, b = $.value;
- i = typeof x == "function" ? x(E) : x;
- const L = I.value === s, a = D(`${b}-link`, {
- [`${b}-link-active`]: L
- }, r.class), d = D(`${b}-link-title`, {
- [`${b}-link-title-active`]: L
- });
- return w("div", z(z({}, r), {}, {
- class: a
- }), [w("a", {
- class: d,
- href: s,
- title: typeof i == "string" ? i : "",
- target: v,
- onClick: S
- }, [o.customTitle ? o.customTitle(E) : i]), (y = o.default) === null || y === void 0 ? void 0 : y.call(o)]);
- };
- }
- });
- function Xe() {
- return window;
- }
- function ie(e, t) {
- if (!e.getClientRects().length)
- return 0;
- const o = e.getBoundingClientRect();
- return o.width || o.height ? t === window ? (t = e.ownerDocument.documentElement, o.top - t.clientTop) : o.top - t.getBoundingClientRect().top : o.top;
- }
- const re = /#([\S ]+)$/, Ke = () => ({
- prefixCls: String,
- offsetTop: Number,
- bounds: Number,
- affix: {
- type: Boolean,
- default: !0
- },
- showInkInFixed: {
- type: Boolean,
- default: !1
- },
- getContainer: Function,
- wrapperClass: String,
- wrapperStyle: {
- type: Object,
- default: void 0
- },
- getCurrentAnchor: Function,
- targetOffset: Number,
- items: Pe(),
- direction: Ee.oneOf(["vertical", "horizontal"]).def("vertical"),
- onChange: Function,
- onClick: Function
- }), _ = q({
- compatConfig: {
- MODE: 3
- },
- name: "AAnchor",
- inheritAttrs: !1,
- props: Ke(),
- setup(e, t) {
- let {
- emit: o,
- attrs: r,
- slots: i,
- expose: u
- } = t;
- var f;
- const {
- prefixCls: C,
- getTargetContainer: g,
- direction: I
- } = X("anchor", e), $ = F(() => {
- var n;
- return (n = e.direction) !== null && n !== void 0 ? n : "vertical";
- });
- process.env.NODE_ENV !== "production" && Q(e.items && typeof i.default != "function", "Anchor", "`Anchor children` is deprecated. Please use `items` instead."), process.env.NODE_ENV !== "production" && Q(!($.value === "horizontal" && (!((f = e.items) === null || f === void 0) && f.some((n) => "children" in n))), "Anchor", "`Anchor items#children` is not supported when `Anchor` direction is horizontal.");
- const S = U(null), y = U(), s = le({
- links: [],
- scrollContainer: null,
- scrollEvent: null,
- animating: !1
- }), v = U(null), x = F(() => {
- const {
- getContainer: n
- } = e;
- return n || (g == null ? void 0 : g.value) || Xe;
- }), E = function() {
- let n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0, l = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5;
- const p = [], k = x.value();
- return s.links.forEach((c) => {
- const h = re.exec(c.toString());
- if (!h)
- return;
- const T = document.getElementById(h[1]);
- if (T) {
- const P = ie(T, k);
- P < n + l && p.push({
- link: c,
- top: P
- });
- }
- }), p.length ? p.reduce((h, T) => T.top > h.top ? T : h).link : "";
- }, b = (n) => {
- const {
- getCurrentAnchor: l
- } = e;
- v.value !== n && (v.value = typeof l == "function" ? l(n) : n, o("change", n));
- }, L = (n) => {
- const {
- offsetTop: l,
- targetOffset: p
- } = e;
- b(n);
- const k = re.exec(n);
- if (!k)
- return;
- const c = document.getElementById(k[1]);
- if (!c)
- return;
- const h = x.value(), T = Ne(h), P = ie(c, h);
- let O = T + P;
- O -= p !== void 0 ? p : l || 0, s.animating = !0, ze(O, {
- callback: () => {
- s.animating = !1;
- },
- getContainer: x.value
- });
- };
- u({
- scrollTo: L
- });
- const a = () => {
- if (s.animating)
- return;
- const {
- offsetTop: n,
- bounds: l,
- targetOffset: p
- } = e, k = E(p !== void 0 ? p : n || 0, l);
- b(k);
- }, d = () => {
- const n = y.value.querySelector(`.${C.value}-link-title-active`);
- if (n && S.value) {
- const l = $.value === "horizontal";
- S.value.style.top = l ? "" : `${n.offsetTop + n.clientHeight / 2}px`, S.value.style.height = l ? "" : `${n.clientHeight}px`, S.value.style.left = l ? `${n.offsetLeft}px` : "", S.value.style.width = l ? `${n.clientWidth}px` : "", l && Le(n, {
- scrollMode: "if-needed",
- block: "nearest"
- });
- }
- };
- je({
- registerLink: (n) => {
- s.links.includes(n) || s.links.push(n);
- },
- unregisterLink: (n) => {
- const l = s.links.indexOf(n);
- l !== -1 && s.links.splice(l, 1);
- },
- activeLink: v,
- scrollTo: L,
- handleClick: (n, l) => {
- o("click", n, l);
- },
- direction: $
- }), G(() => {
- ae(() => {
- const n = x.value();
- s.scrollContainer = n, s.scrollEvent = W(s.scrollContainer, "scroll", a), a();
- });
- }), ce(() => {
- s.scrollEvent && s.scrollEvent.remove();
- }), se(() => {
- if (s.scrollEvent) {
- const n = x.value();
- s.scrollContainer !== n && (s.scrollContainer = n, s.scrollEvent.remove(), s.scrollEvent = W(s.scrollContainer, "scroll", a), a());
- }
- d();
- });
- const A = (n) => Array.isArray(n) ? n.map((l) => {
- const {
- children: p,
- key: k,
- href: c,
- target: h,
- class: T,
- style: P,
- title: O
- } = l;
- return w(pe, {
- key: k,
- href: c,
- target: h,
- class: T,
- style: P,
- title: O,
- customTitleProps: l
- }, {
- default: () => [$.value === "vertical" ? A(p) : null],
- customTitle: i.customTitle
- });
- }) : null, [B, m] = qe(C);
- return () => {
- var n;
- const {
- offsetTop: l,
- affix: p,
- showInkInFixed: k
- } = e, c = C.value, h = D(`${c}-ink`, {
- [`${c}-ink-visible`]: v.value
- }), T = D(m.value, e.wrapperClass, `${c}-wrapper`, {
- [`${c}-wrapper-horizontal`]: $.value === "horizontal",
- [`${c}-rtl`]: I.value === "rtl"
- }), P = D(c, {
- [`${c}-fixed`]: !p && !k
- }), O = N({
- maxHeight: l ? `calc(100vh - ${l}px)` : "100vh"
- }, e.wrapperStyle), K = w("div", {
- class: T,
- style: O,
- ref: y
- }, [w("div", {
- class: P
- }, [w("span", {
- class: h,
- ref: S
- }, null), Array.isArray(e.items) ? A(e.items) : (n = i.default) === null || n === void 0 ? void 0 : n.call(i)])]);
- return B(p ? w(Me, z(z({}, r), {}, {
- offsetTop: l,
- target: x.value
- }), {
- default: () => [K]
- }) : K);
- };
- }
- });
- _.Link = pe;
- _.install = function(e) {
- return e.component(_.name, _), e.component(_.Link.name, _.Link), e;
- };
- const Ye = {
- name: "SAnchor",
- data() {
- return {
- anchors: []
- };
- },
- methods: {
- /** 锚点 */
- getItemAnchor() {
- const e = document.querySelectorAll(
- ".s-collapses .s-collapses-item .s-collapses-item-title"
- );
- e.length > 0 && e.forEach((t) => {
- this.anchors.push({
- el: t,
- key: t.id,
- href: `#${t.id}`,
- title: t.firstChild.innerText
- });
- });
- },
- initRightNav() {
- this.getItemAnchor();
- let e = setTimeout(() => {
- this.anchors = [], this.getItemAnchor(), clearTimeout(e), e = null;
- }, 500);
- },
- handleAnchorClick(e, t) {
- var r;
- e.preventDefault();
- const o = this.anchors.find((i) => i.href === t.href);
- this.anchorId = o.href, (r = o == null ? void 0 : o.el) == null || r.scrollIntoView({ block: "start", behavior: "smooth" });
- },
- formatName(e) {
- const t = (e + "").trim();
- return t && t.length > 8 ? t.slice(0, 8) + "..." : t;
- },
- getContainer() {
- return document.getElementById("form-container");
- }
- },
- mounted() {
- this.$nextTick(() => {
- this.initRightNav();
- });
- }
- };
- function Je(e, t, o, r, i, u) {
- const f = _;
- return ke(), ye(f, {
- affix: !1,
- showInkInFixed: "",
- targetOffset: 10,
- getContainer: u.getContainer,
- onClick: u.handleAnchorClick,
- items: i.anchors
- }, null, 8, ["getContainer", "onClick", "items"]);
- }
- const tt = /* @__PURE__ */ _e(Ye, [["render", Je]]);
- export {
- tt as default
- };
|