@hyperbook/markdown 0.13.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/assets/client.js +71 -1
  2. package/dist/assets/content.css +106 -4
  3. package/dist/assets/directive-geogebra/geogebra-web-component.js +1015 -0
  4. package/dist/assets/directive-geogebra/style.css +10 -0
  5. package/dist/assets/lunr-languages/lunr.ar.min.js +1 -0
  6. package/dist/assets/lunr-languages/lunr.da.min.js +18 -0
  7. package/dist/assets/lunr-languages/lunr.de.min.js +18 -0
  8. package/dist/assets/lunr-languages/lunr.du.min.js +18 -0
  9. package/dist/assets/lunr-languages/lunr.el.min.js +1 -0
  10. package/dist/assets/lunr-languages/lunr.es.min.js +18 -0
  11. package/dist/assets/lunr-languages/lunr.fi.min.js +18 -0
  12. package/dist/assets/lunr-languages/lunr.fr.min.js +18 -0
  13. package/dist/assets/lunr-languages/lunr.he.min.js +1 -0
  14. package/dist/assets/lunr-languages/lunr.hi.min.js +1 -0
  15. package/dist/assets/lunr-languages/lunr.hu.min.js +18 -0
  16. package/dist/assets/lunr-languages/lunr.hy.min.js +1 -0
  17. package/dist/assets/lunr-languages/lunr.it.min.js +18 -0
  18. package/dist/assets/lunr-languages/lunr.ja.min.js +1 -0
  19. package/dist/assets/lunr-languages/lunr.jp.min.js +1 -0
  20. package/dist/assets/lunr-languages/lunr.kn.min.js +1 -0
  21. package/dist/assets/lunr-languages/lunr.ko.min.js +1 -0
  22. package/dist/assets/lunr-languages/lunr.multi.min.js +1 -0
  23. package/dist/assets/lunr-languages/lunr.nl.min.js +18 -0
  24. package/dist/assets/lunr-languages/lunr.no.min.js +18 -0
  25. package/dist/assets/lunr-languages/lunr.pt.min.js +18 -0
  26. package/dist/assets/lunr-languages/lunr.ro.min.js +18 -0
  27. package/dist/assets/lunr-languages/lunr.ru.min.js +18 -0
  28. package/dist/assets/lunr-languages/lunr.sa.min.js +1 -0
  29. package/dist/assets/lunr-languages/lunr.stemmer.support.min.js +1 -0
  30. package/dist/assets/lunr-languages/lunr.sv.min.js +18 -0
  31. package/dist/assets/lunr-languages/lunr.ta.min.js +1 -0
  32. package/dist/assets/lunr-languages/lunr.te.min.js +1 -0
  33. package/dist/assets/lunr-languages/lunr.th.min.js +1 -0
  34. package/dist/assets/lunr-languages/lunr.tr.min.js +18 -0
  35. package/dist/assets/lunr-languages/lunr.vi.min.js +1 -0
  36. package/dist/assets/lunr-languages/lunr.zh.min.js +1 -0
  37. package/dist/assets/lunr.min.js +6 -0
  38. package/dist/assets/shell.css +4 -13
  39. package/dist/index.d.ts +9 -2
  40. package/dist/index.js +1574 -1314
  41. package/dist/index.js.map +4 -4
  42. package/dist/mdastUtilToText.d.ts +1 -0
  43. package/dist/remarkCollectHeadings.d.ts +2 -0
  44. package/dist/remarkCollectSearchDocuments.d.ts +5 -0
  45. package/dist/remarkDirectiveGeogebra.d.ts +5 -0
  46. package/package.json +6 -2
@@ -33,13 +33,81 @@ var hyperbook = (function () {
33
33
  const tocDrawerEl = document.getElementById("toc-drawer");
34
34
  tocDrawerEl.open = !tocDrawerEl.open;
35
35
  }
36
+ // search
37
+
38
+ const searchInputEl = document.getElementById("search-input");
39
+ searchInputEl.addEventListener("keypress", (event) => {
40
+ if (event.key === "Enter") {
41
+ event.preventDefault();
42
+ search();
43
+ }
44
+ });
45
+
46
+ function searchToggle() {
47
+ const searchDrawerEl = document.getElementById("search-drawer");
48
+ searchDrawerEl.open = !searchDrawerEl.open;
49
+ }
50
+
51
+ function search() {
52
+ const resultsEl = document.getElementById("search-results");
53
+ resultsEl.innerHTML = "";
54
+ const query = searchInputEl.value;
55
+ const idx = window.lunr.Index.load(LUNR_INDEX);
56
+ const documents = SEARCH_DOCUMENTS;
57
+ const results = idx.search(query);
58
+ for (let result of results) {
59
+ const doc = documents[result.ref];
60
+
61
+ const container = document.createElement("a");
62
+ container.href = doc.href;
63
+ container.classList.add("search-result");
64
+ const heading = document.createElement("div");
65
+ heading.textContent = doc.heading;
66
+ heading.classList.add("search-result-heading");
67
+ const content = document.createElement("div");
68
+ content.classList.add("search-result-content");
69
+ const href = document.createElement("div");
70
+ href.classList.add("search-result-href");
71
+ href.textContent = doc.href;
72
+
73
+ let contentHTML = "";
74
+ const terms = Object.keys(result.matchData.metadata);
75
+ const term = terms[0];
76
+ if (result?.matchData?.metadata?.[term]?.content?.position?.length > 0) {
77
+ const pos = result.matchData.metadata[term].content.position[0];
78
+ const start = pos[0];
79
+ const len = pos[1];
80
+ let cutoffBefore = start - 50;
81
+ if (cutoffBefore < 0) {
82
+ cutoffBefore = 0;
83
+ } else {
84
+ contentHTML += "...";
85
+ }
86
+ contentHTML += doc.content.slice(cutoffBefore, start);
87
+
88
+ contentHTML += `<mark>${doc.content.slice(start, start + len)}</mark>`;
89
+ let cutoffAfter = start + len + 50;
90
+
91
+ contentHTML += doc.content.slice(start + len, cutoffAfter);
92
+ if (cutoffAfter < doc.content.length) {
93
+ contentHTML += "...";
94
+ }
95
+ }
96
+
97
+ content.innerHTML = contentHTML;
98
+
99
+ container.appendChild(heading);
100
+ container.appendChild(content);
101
+ container.appendChild(href);
102
+ resultsEl.appendChild(container);
103
+ }
104
+ }
36
105
 
37
106
  function qrcodeOpen() {
38
107
  const qrCodeDialog = document.getElementById("qrcode-dialog");
39
108
  const qrcodeEls = qrCodeDialog.getElementsByClassName("make-qrcode");
40
109
  const urlEls = qrCodeDialog.getElementsByClassName("url");
41
110
  const qrcodeEl = qrcodeEls[0];
42
- const urlEl = urlEls[0];
43
111
  const qrcode = new window.QRCode({
44
112
  content: window.location.href,
45
113
  padding: 0,
@@ -113,6 +181,8 @@ var hyperbook = (function () {
113
181
  toggleBookmark,
114
182
  navToggle,
115
183
  tocToggle,
184
+ searchToggle,
185
+ search,
116
186
  qrcodeOpen,
117
187
  qrcodeClose,
118
188
  };
@@ -377,6 +377,108 @@ figure {
377
377
  cursor: pointer;
378
378
  }
379
379
 
380
+ #search-toggle {
381
+ background-color: var(--color-text);
382
+ width: 24px;
383
+ height: 24px;
384
+ cursor: pointer;
385
+ margin-right: 16px;
386
+ mask-repeat: no-repeat;
387
+ mask-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgY2xhc3M9ImZlYXRoZXIgZmVhdGhlci1zZWFyY2giIGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iOCIvPjxsaW5lIHgxPSIyMSIgeDI9IjE2LjY1IiB5MT0iMjEiIHkyPSIxNi42NSIvPjwvc3ZnPg==')
388
+ }
389
+
390
+ #search-toggle:hover {
391
+ background-color: var(--color-brand);
392
+ }
393
+
394
+ #search-drawer {
395
+ overflow-y: auto;
396
+ background: var(--color-nav);
397
+ }
398
+
399
+ #search-drawer .search-input {
400
+ display: flex;
401
+ margin-top: 16px;
402
+ margin-bottom: 16px;
403
+ gap: 8px;
404
+ border: 1px solid var(--color-nav-border);
405
+ background-color: var(--color-nav);
406
+ padding: 8px;
407
+ border-radius: 4px;
408
+ align-items: center;
409
+ justify-content: center;
410
+ }
411
+
412
+ #search-drawer .search-input .search-icon {
413
+ background-color: var(--color-text);
414
+ width: 24px;
415
+ height: 24px;
416
+ mask-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgY2xhc3M9ImZlYXRoZXIgZmVhdGhlci1zZWFyY2giIGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iOCIvPjxsaW5lIHgxPSIyMSIgeDI9IjE2LjY1IiB5MT0iMjEiIHkyPSIxNi42NSIvPjwvc3ZnPg==');
417
+ mask-repeat: no-repeat;
418
+ }
419
+
420
+ #search-drawer .search-input input {
421
+ flex: 1;
422
+ background: none;
423
+ color: var(--color-text);
424
+ border: none;
425
+ width: 100%;
426
+ }
427
+
428
+ #search-drawer .search-input .search-button {
429
+ background-color: var(--color-text);
430
+ width: 24px;
431
+ height: 24px;
432
+ cursor: pointer;
433
+ mask-repeat: no-repeat;
434
+ mask-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgY2xhc3M9ImZlYXRoZXIgZmVhdGhlci1hcnJvdy1yaWdodCIgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bGluZSB4MT0iNSIgeDI9IjE5IiB5MT0iMTIiIHkyPSIxMiIvPjxwb2x5bGluZSBwb2ludHM9IjEyIDUgMTkgMTIgMTIgMTkiLz48L3N2Zz4=')
435
+ }
436
+
437
+ #search-results {
438
+ display: flex;
439
+ flex-direction: column;
440
+ gap: 20px;
441
+ }
442
+
443
+ #search-results .search-result {
444
+ display: flex;
445
+ gap: 4px;
446
+ flex-direction: column;
447
+ text-decoration: none;
448
+ color: var(--color-text);
449
+ font-size: 1rem;
450
+ border-radius: 8px;
451
+ background-color: var(--color-nav-border);
452
+ padding: 8px;
453
+ }
454
+
455
+ #search-results .search-result-heading {
456
+ font-size: 1.2rem;
457
+ font-weight: 500;
458
+ }
459
+
460
+ #search-results .search-result-content {
461
+ text-overflow: ellipsis;
462
+ font-size: 0.8rem;
463
+ }
464
+
465
+ #search-results .search-result-href {
466
+ text-overflow: ellipsis;
467
+ overflow: hidden;
468
+ text-wrap: nowrap;
469
+ font-size: 0.8rem;
470
+ font-weight: 500;
471
+ }
472
+
473
+ .search-drawer-content {
474
+ display: flex;
475
+ flex-direction: column;
476
+ padding: 8px;
477
+ height: calc(var(--app-height));
478
+ overflow-y: auto;
479
+ gap: 8px;
480
+ }
481
+
380
482
  #toc-drawer {
381
483
  overflow-y: auto;
382
484
  background: var(--color-nav);
@@ -385,6 +487,7 @@ figure {
385
487
  .toc-drawer-content {
386
488
  display: flex;
387
489
  flex-direction: column;
490
+ height: calc(var(--app-height));
388
491
  }
389
492
 
390
493
  .toc-drawer-content>nav {
@@ -448,7 +551,6 @@ figure {
448
551
  display: flex;
449
552
  justify-content: center;
450
553
  align-items: center;
451
- background: var(--color-background);
452
554
  border-radius: 8px;
453
555
  }
454
556
 
@@ -466,11 +568,11 @@ figure {
466
568
  width: 100%;
467
569
  }
468
570
 
469
- .hyperbook-markdown .close-icon {
571
+ #qrcode-dialog .close .close-icon {
470
572
  background-color: var(--color-text);
471
573
  width: 32px;
472
574
  height: 32px;
473
- mask-image: url('data:image/svg+xml,<svg width="32px" height="32px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.29289 5.29289C5.68342 4.90237 6.31658 4.90237 6.70711 5.29289L12 10.5858L17.2929 5.29289C17.6834 4.90237 18.3166 4.90237 18.7071 5.29289C19.0976 5.68342 19.0976 6.31658 18.7071 6.70711L13.4142 12L18.7071 17.2929C19.0976 17.6834 19.0976 18.3166 18.7071 18.7071C18.3166 19.0976 17.6834 19.0976 17.2929 18.7071L12 13.4142L6.70711 18.7071C6.31658 19.0976 5.68342 19.0976 5.29289 18.7071C4.90237 18.3166 4.90237 17.6834 5.29289 17.2929L10.5858 12L5.29289 6.70711C4.90237 6.31658 4.90237 5.68342 5.29289 5.29289Z" fill="%230F1729"/></svg>');
575
+ mask-image: url('data:image/svg+xml,<svg width="32px" height="32px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.29289 5.29289C5.68342 4.90237 6.31658 4.90237 6.70711 5.29289L12 10.5858L17.2929 5.29289C17.6834 4.90237 18.3166 4.90237 18.7071 5.29289C19.0976 5.68342 19.0976 6.31658 18.7071 6.70711L13.4142 12L18.7071 17.2929C19.0976 17.6834 19.0976 18.3166 18.7071 18.7071C18.3166 19.0976 17.6834 19.0976 17.2929 18.7071L12 13.4142L6.70711 18.7071C6.31658 19.0976 5.68342 19.0976 5.29289 18.7071C4.90237 18.3166 4.90237 17.6834 5.29289 17.2929L10.5858 12L5.29289 6.70711C4.90237 6.31658 4.90237 5.68342 5.29289 5.29289Z" fill="%230F1729"/></svg>');
474
576
  }
475
577
 
476
578
  .hyperbook-markdown .qrcode-icon {
@@ -500,7 +602,7 @@ figure {
500
602
  }
501
603
 
502
604
  .hyperbook-markdown #toc-toggle:hover,
503
- .hyperbook-markdown #qrcode-toggle:hover {
605
+ .hyperbook-markdown #qrcode-open:hover {
504
606
  opacity: 1;
505
607
  }
506
608