2018-10-02 20:46:17 +02:00
|
|
|
/* global send */ "use strict";
|
2018-07-16 23:06:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
initializePlayground();
|
2018-07-16 23:06:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-08-11 00:29:06 +02:00
|
|
|
if (window.location.href.search && window.location.href.split("?url=")[1]) { // pre-fill example one if search parameter exists
|
2018-07-27 00:18:26 +02:00
|
|
|
const searchParameter = window.location.href.split("?url=")[1];
|
2018-10-06 22:53:01 +02:00
|
|
|
|
2018-07-27 00:18:26 +02:00
|
|
|
fetchMetadata(1, searchParameter);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-09-27 18:11:26 +02:00
|
|
|
document.querySelector("body").addEventListener("click", event => {
|
|
|
|
if (event.target.dataset.action) {
|
|
|
|
event.preventDefault();
|
2018-10-03 22:27:13 +02:00
|
|
|
document.querySelector(".playground").classList.add("waiting");
|
2018-09-27 18:11:26 +02:00
|
|
|
handleExamples(event.target);
|
|
|
|
}
|
2018-07-25 00:29:25 +02:00
|
|
|
|
2018-09-27 18:11:26 +02:00
|
|
|
if (
|
2018-10-04 23:58:19 +02:00
|
|
|
event.target.classList &&
|
|
|
|
event.target.classList[0] === "playground__content__meme__canvas__thumbnail"
|
2018-09-27 18:11:26 +02:00
|
|
|
) {
|
2018-10-03 22:27:13 +02:00
|
|
|
for (const thumbnail of document.querySelectorAll(".playground__content__meme__canvas__thumbnail"))
|
2018-09-27 18:11:26 +02:00
|
|
|
thumbnail.classList.remove("selected");
|
|
|
|
|
2018-10-04 23:58:19 +02:00
|
|
|
event.target.classList.add("selected");
|
|
|
|
updateCanvas(event.target);
|
2018-09-27 18:11:26 +02:00
|
|
|
}
|
2018-07-16 23:06:37 +02:00
|
|
|
});
|
|
|
|
|
2018-09-27 18:11:26 +02:00
|
|
|
document.getElementById("fetch-claim-uri").addEventListener("keyup", event => {
|
|
|
|
const key = event.keyCode ? event.keyCode : event.which;
|
2018-07-24 18:44:32 +02:00
|
|
|
|
2018-09-27 22:46:59 +02:00
|
|
|
switch(true) {
|
|
|
|
case (document.querySelector("[data-example='1']").classList.contains("active")):
|
|
|
|
if (
|
|
|
|
key === 13 &&
|
|
|
|
document.getElementById("fetch-claim-uri").value.length > 0
|
|
|
|
) fetchMetadata(1, document.getElementById("fetch-claim-uri").value);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case (document.querySelector("[data-example='3']").classList.contains("active")):
|
|
|
|
if (
|
|
|
|
key === 13 &&
|
|
|
|
document.getElementById("fetch-claim-uri").value.length > 0
|
|
|
|
) fetchMetadata(3, document.getElementById("fetch-claim-uri").value);
|
|
|
|
break;
|
2018-09-28 21:09:45 +02:00
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
2018-09-27 22:46:59 +02:00
|
|
|
}
|
2018-07-24 18:44:32 +02:00
|
|
|
});
|
|
|
|
|
2018-09-27 18:11:26 +02:00
|
|
|
document.querySelector("body").addEventListener("keyup", event => {
|
|
|
|
if (
|
|
|
|
event.target.id === "meme-top-line" ||
|
|
|
|
event.target.id === "meme-bottom-line"
|
|
|
|
) updateCanvas();
|
2018-08-09 16:38:42 +02:00
|
|
|
});
|
|
|
|
|
2018-07-18 22:31:05 +02:00
|
|
|
|
|
|
|
|
2018-07-23 23:46:58 +02:00
|
|
|
// H E L P E R S
|
|
|
|
|
2018-08-21 23:22:31 +02:00
|
|
|
function clearCanvas(canvas) {
|
|
|
|
const ctx = canvas.getContext("2d");
|
|
|
|
|
|
|
|
ctx.save();
|
|
|
|
ctx.globalCompositeOperation = "copy";
|
|
|
|
ctx.strokeStyle = "transparent";
|
|
|
|
ctx.beginPath();
|
|
|
|
ctx.lineTo(0, 0);
|
|
|
|
ctx.stroke();
|
|
|
|
ctx.restore();
|
|
|
|
}
|
|
|
|
|
2018-08-11 00:29:06 +02:00
|
|
|
function detectLanguageAndUpdate() { // eslint-disable-line
|
2018-07-23 23:46:58 +02:00
|
|
|
const compare = (array1, array2) => array2.filter(value => array2.indexOf(value)); // compare two arrays and get match(es)
|
2018-10-02 20:46:17 +02:00
|
|
|
const memeLocaleObject = document.getElementById("meme-language").children;
|
2018-07-23 23:46:58 +02:00
|
|
|
const memeLocales = [];
|
|
|
|
const userLocales = [];
|
|
|
|
|
2018-10-02 20:46:17 +02:00
|
|
|
for (const language of navigator.languages)
|
|
|
|
userLocales.push(language);
|
2018-07-23 23:46:58 +02:00
|
|
|
|
|
|
|
for (const key in memeLocaleObject) {
|
2018-09-28 21:09:45 +02:00
|
|
|
if (memeLocaleObject[key] && memeLocaleObject[key].value)
|
|
|
|
memeLocales.push(memeLocaleObject[key].value);
|
2018-07-23 23:46:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if (
|
|
|
|
memeLocales.length &&
|
|
|
|
userLocales.length &&
|
|
|
|
compare(memeLocales, userLocales).length
|
2018-10-02 20:46:17 +02:00
|
|
|
) document.querySelector(`option[value="${compare(memeLocales, userLocales)[0]}"]`).setAttribute("selected", true);
|
2018-07-23 23:46:58 +02:00
|
|
|
}
|
|
|
|
|
2018-08-21 23:22:31 +02:00
|
|
|
function debounce(func, wait, immediate) {
|
|
|
|
let timeout;
|
|
|
|
|
2018-10-06 22:53:01 +02:00
|
|
|
return function() {
|
2018-08-21 23:22:31 +02:00
|
|
|
const context = this;
|
|
|
|
const args = arguments;
|
|
|
|
|
|
|
|
const later = () => {
|
|
|
|
timeout = null;
|
|
|
|
if (!immediate) func.apply(context, args);
|
|
|
|
};
|
|
|
|
|
|
|
|
const callNow = immediate && !timeout;
|
2018-10-06 22:53:01 +02:00
|
|
|
|
2018-08-21 23:22:31 +02:00
|
|
|
clearTimeout(timeout);
|
|
|
|
|
|
|
|
timeout = setTimeout(later, wait);
|
|
|
|
if (callNow) func.apply(context, args);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
function initializePlayground() {
|
|
|
|
document.querySelector(".playground").classList.add("waiting");
|
2018-09-27 18:11:26 +02:00
|
|
|
document.querySelector("#fetch-claim-uri").value = "";
|
|
|
|
document.querySelector("#fetch-claim-uri").focus();
|
2018-10-03 22:27:13 +02:00
|
|
|
document.querySelector(".playground__navigation__example:nth-child(1)").classList.add("active");
|
2018-07-25 21:44:02 +02:00
|
|
|
|
2018-08-08 01:15:34 +02:00
|
|
|
send(JSON.stringify({
|
2018-10-06 22:53:01 +02:00
|
|
|
message: "landed on playground"
|
2018-08-08 01:15:34 +02:00
|
|
|
}));
|
|
|
|
|
2018-08-21 23:22:31 +02:00
|
|
|
setTimeout(() => {
|
2018-10-03 22:27:13 +02:00
|
|
|
document.querySelector(".playground__navigation__example:nth-child(1)").click();
|
2018-09-27 18:11:26 +02:00
|
|
|
}, 300);
|
2018-07-25 21:44:02 +02:00
|
|
|
}
|
|
|
|
|
2018-07-18 22:31:05 +02:00
|
|
|
|
|
|
|
|
2018-08-10 00:17:47 +02:00
|
|
|
function fetchMetadata(exampleNumber, data) {
|
|
|
|
if (!exampleNumber) return;
|
2018-07-25 00:29:25 +02:00
|
|
|
|
2018-08-10 00:17:47 +02:00
|
|
|
switch(exampleNumber) {
|
2018-07-25 00:29:25 +02:00
|
|
|
case 1:
|
|
|
|
send(JSON.stringify({
|
2018-10-06 22:53:01 +02:00
|
|
|
claim: data,
|
|
|
|
message: "fetch metadata",
|
|
|
|
method: "resolve",
|
|
|
|
example: exampleNumber
|
2018-07-25 00:29:25 +02:00
|
|
|
}));
|
|
|
|
|
2018-09-28 21:09:45 +02:00
|
|
|
document.getElementById("fetch-claim-uri").value = data;
|
2018-07-25 00:29:25 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-results").innerHTML = `
|
2018-08-08 22:20:53 +02:00
|
|
|
<pre><code class="language-bash">
|
2018-08-14 22:15:27 +02:00
|
|
|
<span class="token comment"># With the LBRY app/daemon running locally, you can use this in your Terminal</span>
|
|
|
|
curl --header <span class="token string">"Content-Type: application/json"</span> --data <span class="token string">'{ "method": "resolve", "params": { "uri": "${data}" }}'</span> <span class="token url">http://localhost:5279 </span>
|
2018-08-08 22:20:53 +02:00
|
|
|
</code></pre>
|
2018-07-18 22:31:05 +02:00
|
|
|
|
2018-08-08 22:20:53 +02:00
|
|
|
<div class="loader" id="temp-loader"></div>
|
2018-08-10 00:17:47 +02:00
|
|
|
<div id="example1-result"></div>
|
2018-09-28 21:09:45 +02:00
|
|
|
`;
|
2018-07-25 00:29:25 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-loader").style.display = "none";
|
2018-07-25 00:29:25 +02:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 2:
|
2018-07-25 20:35:59 +02:00
|
|
|
send(JSON.stringify({
|
2018-10-06 22:53:01 +02:00
|
|
|
data: data,
|
|
|
|
message: "fetch metadata",
|
|
|
|
method: "publish",
|
|
|
|
example: exampleNumber
|
2018-08-10 00:17:47 +02:00
|
|
|
}));
|
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-results").innerHTML = `
|
2018-08-18 00:22:19 +02:00
|
|
|
<pre><code class="language-bash">
|
2018-09-28 21:09:45 +02:00
|
|
|
<span class="token comment"># With the LBRY app/daemon running locally, you can use this in your Terminal</span>
|
2018-10-10 23:15:43 +02:00
|
|
|
curl --header <span class="token string">"Content-Type: application/json"</span> --data <span class="token string">'{ "method": "publish", "params": { "name": "${getMemeInfo().name}", "file_path": "ABSOLUTE_PATH_TO_MEDIA_ON_YOUR_COMPUTER", "bid": "0.001", "metadata": { "description": "${getMemeInfo().description}", "title": "${getMemeInfo().title}", "language": "${getMemeInfo().language}", "license": "${getMemeInfo().license}", "nsfw": ${getMemeInfo().nsfw} }}}'</span> <span class="token url">http://localhost:5279 </span>
|
2018-08-18 00:22:19 +02:00
|
|
|
</code></pre>
|
|
|
|
|
|
|
|
<div class="loader" id="temp-loader"></div>
|
|
|
|
<div id="example2-result"></div>
|
2018-09-28 21:09:45 +02:00
|
|
|
`;
|
2018-08-18 00:22:19 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-loader").style.display = "none";
|
2018-08-10 00:17:47 +02:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
send(JSON.stringify({
|
2018-10-06 22:53:01 +02:00
|
|
|
claim: data,
|
|
|
|
message: "fetch metadata",
|
|
|
|
method: "wallet_send",
|
|
|
|
example: exampleNumber
|
2018-07-25 20:35:59 +02:00
|
|
|
}));
|
|
|
|
|
2018-10-03 21:16:26 +02:00
|
|
|
document.getElementById("fetch-claim-uri").value = data;
|
2018-08-10 00:17:47 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-results").innerHTML = `
|
2018-08-10 00:17:47 +02:00
|
|
|
<pre><code class="language-bash">
|
2018-08-14 22:15:27 +02:00
|
|
|
<span class="token comment"># With the LBRY app/daemon running locally, you can use this in your Terminal</span>
|
|
|
|
curl --header <span class="token string">"Content-Type: application/json"</span> --data <span class="token string">'{ "method": "wallet_send", "params": { "amount": "0.01", "claim_id": "${data}" }}'</span> <span class="token url">http://localhost:5279 </span>
|
2018-08-10 00:17:47 +02:00
|
|
|
</code></pre>
|
|
|
|
|
|
|
|
<div class="loader" id="temp-loader"></div>
|
|
|
|
<div id="example3-result"></div>
|
2018-09-28 21:09:45 +02:00
|
|
|
`;
|
2018-08-10 00:17:47 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-loader").style.display = "none";
|
2018-07-25 00:29:25 +02:00
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2018-07-18 22:31:05 +02:00
|
|
|
|
2018-07-25 20:35:59 +02:00
|
|
|
function getMemeInfo() { // TODO: Error handling
|
2018-10-02 20:46:17 +02:00
|
|
|
return {
|
2018-09-28 21:09:45 +02:00
|
|
|
description: document.getElementById("meme-description").value,
|
|
|
|
file_path: document.getElementById("meme-canvas").toDataURL("image/jpeg", 0.6),
|
|
|
|
language: document.getElementById("meme-language").value,
|
|
|
|
license: document.getElementById("meme-license").value,
|
|
|
|
name: document.getElementById("meme-title").value,
|
|
|
|
nsfw: document.getElementById("meme-nsfw-flag").checked,
|
|
|
|
title: document.getElementById("meme-title").value
|
2018-08-10 00:17:47 +02:00
|
|
|
};
|
2018-07-18 22:31:05 +02:00
|
|
|
}
|
|
|
|
|
2018-08-21 23:22:31 +02:00
|
|
|
const handleExamples = debounce(event => {
|
|
|
|
let exampleNumber;
|
2018-09-27 18:11:26 +02:00
|
|
|
const data = event.dataset;
|
2018-07-25 00:29:25 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
if (!parseInt(document.querySelector(".playground__navigation__example.active").dataset.example)) return;
|
|
|
|
exampleNumber = parseInt(document.querySelector(".playground__navigation__example.active").dataset.example);
|
2018-07-25 00:29:25 +02:00
|
|
|
|
2018-08-21 23:22:31 +02:00
|
|
|
switch(data.action) {
|
|
|
|
case "choose claim":
|
|
|
|
fetchMetadata(exampleNumber, data.claimId);
|
2018-10-03 21:14:38 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
if (document.querySelector(".playground__navigation__example:nth-child(3)").classList.contains("active"))
|
2018-10-03 21:14:38 +02:00
|
|
|
document.getElementById("fetch-claim-uri").value = event.alt + "#" + event.dataset.claimId;
|
|
|
|
|
2018-08-21 23:22:31 +02:00
|
|
|
break;
|
2018-07-24 18:44:32 +02:00
|
|
|
|
2018-08-21 23:22:31 +02:00
|
|
|
case "execute claim":
|
2018-09-28 21:09:45 +02:00
|
|
|
if (!document.getElementById("fetch-claim-uri").value.length > 0) return;
|
|
|
|
fetchMetadata(exampleNumber, document.getElementById("fetch-claim-uri").value);
|
2018-08-21 23:22:31 +02:00
|
|
|
break;
|
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
case "playground, example 1":
|
|
|
|
if (document.getElementById("playground-loader").classList.contains("playground__content__meme")) {
|
|
|
|
document.getElementById("playground-loader").classList.remove("playground__content__meme");
|
|
|
|
document.getElementById("playground-loader").classList.add("playground__content__trends");
|
2018-08-21 23:22:31 +02:00
|
|
|
}
|
|
|
|
|
2018-09-28 21:09:45 +02:00
|
|
|
document.getElementById("fetch-claim-uri").value = ""; // reset URL bar
|
2018-10-03 22:27:13 +02:00
|
|
|
document.querySelector("#playground-url button").textContent = "Resolve";
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
if (document.getElementById("playground-url").style.display === "none")
|
|
|
|
document.getElementById("playground-url").removeAttribute("style");
|
2018-08-21 23:22:31 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
for (const example of document.querySelectorAll(".playground__navigation__example"))
|
2018-09-28 21:09:45 +02:00
|
|
|
example.classList.remove("active");
|
2018-08-21 23:22:31 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.querySelector(".playground__navigation__example:nth-child(1)").classList.add("active");
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-loader").innerHTML = "";
|
|
|
|
document.getElementById("playground-results").innerHTML = "";
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-loader").removeAttribute("style");
|
|
|
|
document.getElementById("playground-results").removeAttribute("style");
|
2018-08-21 23:22:31 +02:00
|
|
|
|
|
|
|
send(JSON.stringify({
|
2018-10-06 22:53:01 +02:00
|
|
|
message: `request for ${data.action}`
|
2018-08-21 23:22:31 +02:00
|
|
|
}));
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
case "playground, example 2":
|
|
|
|
if (document.getElementById("playground-loader").classList.contains("playground__content__trends")) {
|
|
|
|
document.getElementById("playground-loader").classList.remove("playground__content__trends");
|
|
|
|
document.getElementById("playground-loader").classList.add("playground__content__meme");
|
2018-08-21 23:22:31 +02:00
|
|
|
}
|
|
|
|
|
2018-09-28 21:09:45 +02:00
|
|
|
document.getElementById("fetch-claim-uri").value = ""; // reset URL bar
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-url").style.display = "none";
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
for (const example of document.querySelectorAll(".playground__navigation__example"))
|
2018-09-28 21:09:45 +02:00
|
|
|
example.classList.remove("active");
|
2018-08-21 23:22:31 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.querySelector(".playground__navigation__example:nth-child(2)").classList.add("active");
|
2018-08-21 23:22:31 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-loader").innerHTML = "";
|
|
|
|
document.getElementById("playground-results").innerHTML = "";
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-loader").removeAttribute("style");
|
|
|
|
document.getElementById("playground-results").removeAttribute("style");
|
2018-08-21 23:22:31 +02:00
|
|
|
|
|
|
|
send(JSON.stringify({
|
2018-10-06 22:53:01 +02:00
|
|
|
message: `request for ${data.action}`
|
2018-08-21 23:22:31 +02:00
|
|
|
}));
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
case "playground, example 3":
|
|
|
|
if (document.getElementById("playground-loader").classList.contains("playground__content__meme")) {
|
|
|
|
document.getElementById("playground-loader").classList.remove("playground__content__meme");
|
|
|
|
document.getElementById("playground-loader").classList.add("playground__content__trends");
|
2018-08-21 23:22:31 +02:00
|
|
|
}
|
|
|
|
|
2018-09-28 21:09:45 +02:00
|
|
|
document.getElementById("fetch-claim-uri").value = ""; // reset URL bar
|
2018-10-03 22:27:13 +02:00
|
|
|
document.querySelector("#playground-url button").textContent = "Tip";
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
if (document.getElementById("playground-url").style.display === "none")
|
|
|
|
document.getElementById("playground-url").removeAttribute("style");
|
2018-08-21 23:22:31 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
for (const example of document.querySelectorAll(".playground__navigation__example"))
|
2018-09-28 21:09:45 +02:00
|
|
|
example.classList.remove("active");
|
2018-08-21 23:22:31 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.querySelector(".playground__navigation__example:nth-child(3)").classList.add("active");
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-loader").innerHTML = "";
|
|
|
|
document.getElementById("playground-results").innerHTML = "";
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-10-03 22:27:13 +02:00
|
|
|
document.getElementById("playground-loader").removeAttribute("style");
|
|
|
|
document.getElementById("playground-results").removeAttribute("style");
|
2018-08-21 23:22:31 +02:00
|
|
|
|
|
|
|
send(JSON.stringify({
|
2018-10-06 22:53:01 +02:00
|
|
|
message: `request for ${data.action}`
|
2018-08-21 23:22:31 +02:00
|
|
|
}));
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "upload image":
|
|
|
|
fetchMetadata(exampleNumber, getMemeInfo());
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}, 10);
|
2018-07-24 18:44:32 +02:00
|
|
|
|
2018-08-11 00:29:06 +02:00
|
|
|
function initCanvas() { // eslint-disable-line
|
2018-07-24 18:44:32 +02:00
|
|
|
const canvas = document.getElementById("meme-canvas");
|
2018-09-28 23:59:38 +02:00
|
|
|
const canvasHeight = 600;
|
|
|
|
const canvasWidth = 800;
|
2018-07-24 18:44:32 +02:00
|
|
|
const ctx = canvas.getContext("2d");
|
|
|
|
const img = document.getElementById("base-image");
|
|
|
|
|
|
|
|
clearCanvas(canvas);
|
|
|
|
|
|
|
|
ctx.drawImage(img, 0, 0, canvasWidth, canvasHeight, 0, 0, canvasWidth, canvasHeight);
|
|
|
|
ctx.fillStyle = "white";
|
2018-10-09 17:50:22 +02:00
|
|
|
ctx.font = "bold 48px 'Inter UI'";
|
2018-07-24 18:44:32 +02:00
|
|
|
ctx.lineJoin = "round";
|
|
|
|
ctx.lineWidth = 4;
|
|
|
|
ctx.strokeStyle = "black";
|
|
|
|
ctx.textAlign = "center";
|
|
|
|
ctx.textBaseline = "top";
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-09-28 23:59:38 +02:00
|
|
|
positionCanvasText(ctx, canvasHeight, canvasWidth);
|
|
|
|
}
|
|
|
|
|
|
|
|
function positionCanvasText(canvas, height, width) {
|
|
|
|
canvas.strokeText(document.getElementById("meme-top-line").value.toUpperCase(), width / 2, 40);
|
|
|
|
canvas.fillText(document.getElementById("meme-top-line").value.toUpperCase(), width / 2, 40);
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-09-28 23:59:38 +02:00
|
|
|
canvas.strokeText(document.getElementById("meme-bottom-line").value.toUpperCase(), width / 2, (height - 80));
|
|
|
|
canvas.fillText(document.getElementById("meme-bottom-line").value.toUpperCase(), width / 2, (height - 80));
|
2018-07-24 18:44:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function updateCanvas(imageSource) {
|
|
|
|
const canvas = document.getElementById("meme-canvas");
|
2018-09-28 23:59:38 +02:00
|
|
|
const canvasHeight = 600;
|
|
|
|
const canvasWidth = 800;
|
2018-07-24 18:44:32 +02:00
|
|
|
const ctx = canvas.getContext("2d");
|
|
|
|
const img = document.getElementById("base-image");
|
|
|
|
|
|
|
|
clearCanvas(canvas);
|
|
|
|
|
|
|
|
if (imageSource) {
|
2018-10-04 23:58:19 +02:00
|
|
|
ctx.drawImage(imageSource, 0, 0, canvasWidth, canvasHeight);
|
2018-07-24 18:44:32 +02:00
|
|
|
img.src = imageSource.src;
|
2018-09-28 23:59:38 +02:00
|
|
|
} else {
|
2018-10-04 23:58:19 +02:00
|
|
|
ctx.drawImage(img, 0, 0, canvasWidth, canvasHeight);
|
2018-09-28 23:59:38 +02:00
|
|
|
}
|
2018-09-28 21:09:45 +02:00
|
|
|
|
2018-09-28 23:59:38 +02:00
|
|
|
positionCanvasText(ctx, canvasHeight, canvasWidth);
|
2018-07-24 18:44:32 +02:00
|
|
|
}
|