diff --git a/app/src/card/makeCard.ts b/app/src/card/makeCard.ts
new file mode 100644
index 000000000..6dfc8804f
--- /dev/null
+++ b/app/src/card/makeCard.ts
@@ -0,0 +1,96 @@
+import {focusByRange, getEditorRange} from "../protyle/util/selection";
+import {fetchPost} from "../util/fetch";
+import {Dialog} from "../dialog";
+import {isMobile} from "../util/functions";
+import {hideMessage, showMessage} from "../dialog/message";
+
+const genCardItem = (item: { id: string, name: string }) => {
+ return `
+
+
+
+
+
+
+
+
`,
+ destroyCallback() {
+ focusByRange(range);
+ }
+ });
+ dialog.element.addEventListener("click", (event) => {
+ let target = event.target as HTMLElement;
+ while (target && !target.isSameNode(dialog.element)) {
+ const type = target.getAttribute("data-type");
+ if (type === "create") {
+ let msgId = ""
+ const inputElement = dialog.element.querySelector(".b3-text-field") as HTMLInputElement;
+ if (inputElement.value) {
+ if (msgId) {
+ hideMessage(msgId);
+ }
+ fetchPost("/api/riff/createRiffDeck", {name: inputElement.value}, (response) => {
+ dialog.element.querySelector(".b3-list").insertAdjacentHTML("afterbegin", genCardItem(response.data))
+ inputElement.value = '';
+ })
+ } else {
+ msgId = showMessage(window.siyuan.languages._kernel[142])
+ }
+ event.stopPropagation();
+ event.preventDefault();
+ break;
+ } else if (type === "add") {
+ fetchPost("/api/riff/addRiffCards", {
+ deckID: target.parentElement.getAttribute("data-id"),
+ blockIDs: ids
+ }, () => {
+ showMessage(window.siyuan.languages.addDeck)
+ })
+ event.stopPropagation();
+ event.preventDefault();
+ break;
+ } else if (type === "remove") {
+ fetchPost("/api/riff/removeRiffCards", {
+ deckID: target.parentElement.getAttribute("data-id"),
+ blockIDs: ids
+ }, () => {
+ showMessage(window.siyuan.languages.removeDeck)
+ })
+ event.stopPropagation();
+ event.preventDefault();
+ break;
+ }
+ target = target.parentElement;
+ }
+ })
+ })
+};
diff --git a/app/src/card/openCard.ts b/app/src/card/openCard.ts
new file mode 100644
index 000000000..bb26491f9
--- /dev/null
+++ b/app/src/card/openCard.ts
@@ -0,0 +1,3 @@
+export const openCard = () => {
+
+}