November 2018
| Name | Date | Read |
|---|---|---|
| C#Building a Microservice Architecture with .NET Core | 2018-11-11 | 3 min |
Ctrl J
Open a post to see its discussion.
| Name | Date | Read |
|---|---|---|
| C#Building a Microservice Architecture with .NET Core | 2018-11-11 | 3 min |
Open a post to see its discussion.
' + (POSTS.length ? 'Nothing matches. Try fewer words.' : 'Loading posts…') + '
'; $$('[data-i]', $('#pal-list')).forEach(function (el) { el.onclick = function () { choose(+el.dataset.i); }; el.onmousemove = function () { select(+el.dataset.i); }; }); } function select(i) { palSel = Math.max(0, Math.min(palItems.length - 1, i)); $$('.pal-item', $('#pal-list')).forEach(function (el, k) { el.classList.toggle('sel', k === palSel); }); var s = $('.pal-item.sel'); if (s) s.scrollIntoView({ block: 'nearest' }); } function choose(i) { var it = palItems[i]; if (!it) return; if (it.cmd) runCmd(it.cmd); else { closePalette(); location.href = url(it.open + '/'); } } $('#pal-input').oninput = renderPalette; $('#pal-input').onkeydown = function (e) { if (e.key === 'ArrowDown') { e.preventDefault(); select(palSel + 1); } else if (e.key === 'ArrowUp') { e.preventDefault(); select(palSel - 1); } else if (e.key === 'Enter') { e.preventDefault(); choose(palSel); } else if (e.key === 'Escape') { e.preventDefault(); closePalette(); } }; $('#scrim').onclick = function (e) { if (e.target.id === 'scrim') closePalette(); }; $('#cc').onclick = function () { openPalette(); }; $('#theme-top').onclick = $('#theme-act').onclick = function () { openPalette('>Color Theme: '); }; document.addEventListener('keydown', function (e) { var mod = e.metaKey || e.ctrlKey, k = e.key.toLowerCase(); if (mod && (k === 'k' || k === 'p')) { e.preventDefault(); e.shiftKey ? openPalette('>') : openPalette(); } else if (mod && k === 'j') { e.preventDefault(); togglePanel(); } else if (mod && k === 'b') { e.preventDefault(); app.classList.contains('no-side') ? showSide() : hideSide(); } else if (e.key === 'Escape' && narrow()) app.classList.remove('drawer'); }); addEventListener('pagehide', saveSideScroll); // ------------------------------------------------------------ boot syncAct(); renderTabs(); decorate(); renderOutline(); renderStatus(); if (store.get('bp-panel', false, true) && KIND === 'post') togglePanel(true); matchMedia('(prefers-color-scheme: dark)').addEventListener('change', renderStatus); loadPosts(function () { renderSide(); renderStatus(); var sc = store.get('bp-side-scroll', null, true); if (sc && sc.view === view) $('#side-body').scrollTop = sc.top; else { var a = $('#side-body .row.active'); if (a) a.scrollIntoView({ block: 'center' }); } if (!$('#scrim').hidden) renderPalette(); }); })();