(
src,
_x,
_y,
onClose = () => {},
onFoundBigImg = () => {}
)
| 829 | } |
| 830 | |
| 831 | function createPreview( |
| 832 | src, |
| 833 | _x, |
| 834 | _y, |
| 835 | onClose = () => {}, |
| 836 | onFoundBigImg = () => {} |
| 837 | ) { |
| 838 | const { x, y } = validateMouse(_x, _y); |
| 839 | const id = "ufs-magnify-image"; |
| 840 | const exist = document.getElementById(id); |
| 841 | if (exist) exist.remove(); |
| 842 | |
| 843 | // container |
| 844 | let overlay = document.createElement("div"); |
| 845 | overlay.id = id; |
| 846 | overlay.innerHTML = ` |
| 847 | <div class="ufs-img-anim" style="top: ${y}px; left: ${x}px;"></div> |
| 848 | <img |
| 849 | src="${src}" |
| 850 | style=" |
| 851 | top: ${window.innerHeight / 2}px; |
| 852 | left: ${window.innerWidth / 2}px; |
| 853 | transform-origin: center; |
| 854 | transform: translate(-50%, -50%) !important; |
| 855 | max-width: 100vw; |
| 856 | max-height: 100vh; |
| 857 | opacity: 0; |
| 858 | "/> |
| 859 | <div class="ufs-toolbar"> |
| 860 | <div class="ufs-btn" ufs_title="Original size">Size</div> |
| 861 | <div class="ufs-btn" ufs_title="Toggle original size">Z</div> |
| 862 | <div class="ufs-btn" ufs_title="Toggle background">B</div> |
| 863 | <div class="ufs-btn" ufs_title="Flip horizontal">↔</div> |
| 864 | <div class="ufs-btn" ufs_title="Flip vertical">↕</div> |
| 865 | <div class="ufs-btn" ufs_title="Rotate left">↺</div> |
| 866 | <div class="ufs-btn" ufs_title="Rotate right">↻</div> |
| 867 | <div class="ufs-btn" ufs_title="Open in new tab">↗</div> |
| 868 | <div class="ufs-btn" ufs_title="Download">⬇️</div> |
| 869 | <div class="ufs-btn ufs-dropdown-menu" ufs_title="">🔎 Search by image |
| 870 | <ul> |
| 871 | ${defaultSearchData |
| 872 | .split("\n") |
| 873 | .map((s) => { |
| 874 | let [title, url] = s.split(" | "); |
| 875 | return `<li class="ufs-btn" data-url="${url}">${title}</li>`; |
| 876 | }) |
| 877 | .join("")} |
| 878 | </ul> |
| 879 | </div> |
| 880 | <div class="ufs-desc"></div> |
| 881 | </div> |
| 882 | `; |
| 883 | document.body.appendChild(overlay); |
| 884 | |
| 885 | // animation div: a rect that represent image scaled up from original position (mouse position) |
| 886 | const animDiv = overlay.querySelector(".ufs-img-anim"); |
| 887 | const img = overlay.querySelector("img"); |
| 888 | const toolbar = overlay.querySelector(".ufs-toolbar"); |
no test coverage detected