diff --git a/frontend/my-materials.html b/frontend/my-materials.html
index 9be5232..186b8cc 100644
--- a/frontend/my-materials.html
+++ b/frontend/my-materials.html
@@ -108,6 +108,8 @@
const edit = ``;
const ann = (m.kind === 'board' || m.kind === 'image')
? `` : '';
+ const fc = (m.kind === 'note')
+ ? `` : '';
const mv = moveSelect(m);
if (m.kind === 'board' || m.kind === 'image') {
return `
@@ -132,7 +134,7 @@
${esc(m.title || kind)}
${meta}
-
${mv}${edit}${del}
+
${mv}${fc}${edit}${del}
`;
}
@@ -351,6 +353,38 @@
}
window.annotate = annotate;
+ /* ── Заметка → флешкарта ── */
+ async function toFlashcard(id) {
+ const mt = _mats.find(x => x.id === id);
+ if (!mt) return;
+ let decks = [];
+ try { const d = await LS.fcListDecks(); decks = d.decks || []; } catch (e) {}
+ const opts = ['']
+ .concat(decks.map(d => ``)).join('');
+ const front = (mt.title || '').trim() || (mt.body || '').slice(0, 80);
+ const back = (mt.body || '').trim() || (mt.title || '');
+ const content = `
+
+
+
+
+
+
+
`;
+ const m = LS.modal({ title: 'В флешкарты', content, size: 'sm', actions: [
+ { label: 'Отмена', onClick: () => m.close() },
+ { label: 'Создать карточку', primary: true, onClick: async () => {
+ try {
+ let deckId = m.body.querySelector('#fc-deck').value;
+ if (deckId === '__new') { const nd = await LS.fcCreateDeck({ title: 'Из материалов' }); deckId = nd.id; }
+ await LS.fcAddCard(deckId, { front: m.body.querySelector('#fc-front').value, back: m.body.querySelector('#fc-back').value });
+ m.close(); LS.toast('Карточка добавлена в флешкарты', 'success');
+ } catch (e) { LS.toast(e.message || 'Ошибка', 'error'); }
+ } },
+ ] });
+ }
+ window.toFlashcard = toFlashcard;
+
load();