UNPKG

microdata-tooling

Version:

Provides tooling to help using micro data from TypeScript/JavaScript.

3 lines (2 loc) 1.52 kB
import{isArray,isElement}from"https://unpkg.com/microdata-tooling@1.0.4/dist/utils.min.js";function getProperty(e,t){return t in e?e[t]:null}export function apply(e,t,n={}){if("string"==typeof e)applyAsString(e,t,n);else if(isArray(e))applyAsArray(e,t,n);else{if(n.typeHelpers&&e["@type"]in n.typeHelpers&&n.typeHelpers[e["@type"]](e,t))return;for(const i of Object.keys(e).filter((e=>!e.startsWith("@")))){const r=getProperty(e,i),l=t.querySelector("*[itemprop="+i+"]");null!==l&&null!==r&&apply(r,l,n)}}}function applyAsString(e,t,n){if(isElement(t,"meta"))t.content=e;else if(isElement(t,"img")||isElement(t,"audio")||isElement(t,"embed")||isElement(t,"iframe")||isElement(t,"source")||isElement(t,"track")||isElement(t,"video"))t.src=e;else if(isElement(t,"a")||isElement(t,"area")||isElement(t,"link")){if(t.href=e,n.linkFormatter&&isElement(t,"a")){const i=n.linkFormatter(e,t.dataset);i&&(t.innerText=i)}}else isElement(t,"object")?t.data=e:isElement(t,"data")?(t.value=e,n.dataFormatter&&(t.innerText=n.dataFormatter(e,t.dataset))):isElement(t,"meter")?t.value=parseInt(e):isElement(t,"time")?(t.dateTime=e,n.timeFormatter&&(t.innerText=n.timeFormatter(e,t.dataset))):t.textContent=e}function applyAsArray(e,t,n){for(const i of e){const e="string"==typeof i?t.querySelector("template[data-type=Text]"):t.querySelector("template[data-type="+i["@type"]+"]");if(e&&e.content.firstElementChild){const r=e.content.firstElementChild.cloneNode(!0);apply(i,r,n),t.appendChild(r)}}} //# sourceMappingURL=apply.min.js.map