UNPKG

@qww0302/use-bitable

Version:

The vue-based PluginBuilder of Bitable.

371 lines (370 loc) 8.85 kB
import { getCurrentScope as I, onScopeDispose as T, getCurrentInstance as w, onMounted as m, nextTick as D, ref as s, computed as E, shallowRef as h, watch as v, toValue as c, watchEffect as R } from "vue"; import { ThemeModeType as B, bitable as i } from "@lark-base-open/js-sdk"; function d(l) { return I() ? (T(l), !0) : !1; } function p(l, e = !0) { const r = w(); r ? m(l, r) : e ? l() : D(l); } function P(l = {}) { const e = s(B.LIGHT), { onChanged: r } = l; return M((t) => { e.value = t, r && r(t); }), p(() => { i.bridge.getTheme().then((t) => { e.value = t; }); }), E(() => e.value); } function y(l) { const e = i.base.onSelectionChange((r) => { l(r.data); }); return d(e), e; } function U(l = {}) { const e = s(null), r = s(null), t = s(null), u = s(null), n = s(null), { onChanged: o } = l; return i.base.getSelection().then((a) => { e.value = a.baseId, r.value = a.recordId, t.value = a.fieldId, u.value = a.viewId, n.value = a.tableId; }), y((a) => { e.value = a.baseId, r.value = a.recordId, t.value = a.fieldId, u.value = a.viewId, n.value = a.tableId, o && o(a); }), { baseId: e, recordId: r, fieldId: t, viewId: u, tableId: n }; } function K(l, e, r) { const { serializer: t, shallow: u = !1 } = r ?? {}, n = (u ? h : s)(e), o = s(!1), { read: a, write: f } = t ?? { read: (g) => g, write: (g) => g }, b = async () => { o.value = !0, i.bridge.setData(c(l), f(c(n))).then(() => { o.value = !1; }); }; return v( () => c(n), () => { b(); }, { deep: !0 } ), p(() => { o.value = !0, i.bridge.getData(c(l)).then((g) => { n.value = a(g), o.value = !1; }); }), { data: n, pending: o }; } async function F(l, e = {}) { if (!l) return null; const { onProgress: r, onError: t, load: u } = e, n = new FileReader(); return new Promise((o) => { n.onload = (a) => { if (!a.target) return null; u ? u(a.target.result, o) : o(a.target.result); }, n.onprogress = r ?? null, n.onerror = t ?? null, n.readAsArrayBuffer(l); }); } function x(l, e = {}) { const { shallow: r = !1 } = e, t = r ? s() : h(), u = s(!1), n = s(""); function o(a) { if (!a) { t.value = null, n.value = "", u.value = !1; return; } u.value = !0, F(a, e).then((f) => { t.value = f, n.value = a.name, u.value = !1; }).catch((f) => { console.error(f), u.value = !1; }); } return v( () => c(l), (a) => { o(a); }, { immediate: !0, deep: !0 } ), { data: t, pending: u, name: n }; } function O(l, e, r, t, u) { const n = s(""), { params: o, override: a } = u ?? {}; return v( [ () => c(l), () => c(e), () => c(r), () => c(t) ], (f) => { if (!f[0] && !f[1]) { n.value = ""; return; } i.bridge.getBitableUrl({ tableId: f[0], viewId: f[1], fieldId: f[2] ?? null, recordId: f[3] ?? null }).then((b) => { n.value = A(b, a, typeof o == "function" ? o() : o); }); }, { immediate: !0 } ), n; } function A(l, e = !1, r) { const t = new URL(l); return r && Object.entries(r).forEach(([u, n]) => { if (t.searchParams.has(u)) { e && t.searchParams.set(u, n); return; } t.searchParams.append(u, n); }), t.toString(); } function V() { const l = s(null); return i.bridge.getEnv().then((e) => { l.value = e.product; }).catch((e) => { console.error("[useBitable] useEnv Error: ", e); }), l; } function j() { const l = s(null); return m(() => { i.bridge.getPersonalBaseToken().then((e) => { l.value = e; }); }), l; } function H(l = {}) { const e = s([]), { max: r = 1 / 0 } = l; return y((t) => { e.value.push({ select: t, time: Date.now() }), e.value.length > r && e.value.shift(); }), e; } function L(l) { const e = h(null), r = s(!1); return v( () => c(l), (t) => { t && (r.value = !0, i.base.getTable(t).then((u) => { e.value = u, r.value = !1; })); }, { immediate: !0 } ), { table: e, pending: r }; } function z(l, e) { const r = h(null), t = s(!1), u = (o, a) => { !o || !a || (t.value = !0, o.getViewById(a).then((f) => { r.value = f, t.value = !1; }).catch((f) => { console.error("[useView] useView Error: ", f), r.value = null, t.value = !1; })); }, n = R(() => { const o = c(e), a = c(l); !o || !a || (typeof a == "string" ? (t.value = !0, i.base.getTable(a).then((f) => { u(f, o); }).catch((f) => { console.error("[useView] useView Error: ", f), r.value = null, t.value = !1; })) : u(a, o)); }); return d(n), { view: r, pending: t }; } function G() { const l = s(null); return i.bridge.getUserId().then((e) => { l.value = e; }).catch((e) => { console.error("[useBitable] useUserId Error: ", e); }), l; } function q() { const l = s(null); return i.bridge.getTenantKey().then((e) => { l.value = e; }).catch((e) => { console.error("[useBitable] useTenantKey Error: ", e); }), l; } function M(l) { const e = i.bridge.onThemeChange((r) => { l(r.data.theme); }); return d(e), e; } function J(l, e) { let r = () => { }; const t = s(!1); function u(n) { n && (typeof n == "string" ? (t.value = !0, i.base.getTable(n).then((o) => { o.onFieldAdd(e), t.value = !1; }).catch((o) => { t.value = !1, console.error("[useBitable] onFieldAdd error:", o); })) : r = n.onFieldAdd(e)); } return v(() => c(l), (n, o) => { n !== o && (r(), u(n)); }, { immediate: !0 }), d(r), { off: () => { r(); }, pending: t }; } function Q(l, e) { let r = () => { }; const t = s(!1); function u(n) { n && (typeof n == "string" ? (t.value = !0, i.base.getTable(n).then((o) => { o.onFieldModify(e), t.value = !1; }).catch((o) => { t.value = !1, console.error("[useBitable] onFieldModify error:", o); })) : r = n.onFieldModify(e)); } return v(() => c(l), (n, o) => { n !== o && (r(), u(n)); }, { immediate: !0 }), d(r), { off: () => { r(); }, pending: t }; } function W(l, e) { let r = () => { }; const t = s(!1); function u(n) { n && (typeof n == "string" ? (t.value = !0, i.base.getTable(n).then((o) => { o.onFieldDelete(e), t.value = !1; }).catch((o) => { t.value = !1, console.error("[useBitable] onFieldDelete error:", o); })) : r = n.onFieldDelete(e)); } return v(() => c(l), (n, o) => { n !== o && (r(), u(n)); }, { immediate: !0 }), d(r), { off: () => { r(); }, pending: t }; } function X(l, e) { let r = () => { }; const t = s(!1); function u(n) { n && (typeof n == "string" ? (t.value = !0, i.base.getTable(n).then((o) => { o.onRecordAdd(e), t.value = !1; }).catch((o) => { t.value = !1, console.error("[useBitable] onRecordAdd error:", o); })) : r = n.onRecordAdd(e)); } return v(() => c(l), (n, o) => { n !== o && (r(), u(n)); }, { immediate: !0 }), d(r), { off: () => { r(); }, pending: t }; } function Y(l, e) { let r = () => { }; const t = s(!1); function u(n) { n && (typeof n == "string" ? (t.value = !0, i.base.getTable(n).then((o) => { o.onRecordModify(e), t.value = !1; }).catch((o) => { t.value = !1, console.error("[useBitable] onRecordModify error:", o); })) : r = n.onRecordModify(e)); } return v(() => c(l), (n, o) => { n !== o && (r(), u(n)); }, { immediate: !0 }), d(r), { off: () => { r(); }, pending: t }; } function Z(l, e) { let r = () => { }; const t = s(!1); function u(n) { n && (typeof n == "string" ? (t.value = !0, i.base.getTable(n).then((o) => { o.onRecordDelete(e), t.value = !1; }).catch((o) => { t.value = !1, console.error("[useBitable] onRecordDelete error:", o); })) : r = n.onRecordDelete(e)); } return v(() => c(l), (n, o) => { n !== o && (r(), u(n)); }, { immediate: !0 }), d(r), { off: () => { r(); }, pending: t }; } function _(l) { const e = i.base.onTableAdd(l); return d(e), e; } function $(l) { const e = i.base.onTableDelete(l); return d(e), e; } export { J as onFieldAdd, W as onFieldDelete, Q as onFieldModify, X as onRecordAdd, Z as onRecordDelete, Y as onRecordModify, y as onSelectionChange, _ as onTableAdd, $ as onTableDelete, M as onThemeChange, O as useBitableUrl, K as useData, V as useEnv, x as useFileReader, j as usePersonalBaseToken, H as useSelectHistory, U as useSelection, L as useTable, q as useTenantKey, P as useTheme, G as useUserId, z as useView };