@qww0302/use-bitable
Version:
The vue-based PluginBuilder of Bitable.
371 lines (370 loc) • 8.85 kB
JavaScript
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
};