From 33c4e80a1d456750e9e019f3d81ab952f3f85320 Mon Sep 17 00:00:00 2001 From: Dillon Date: Sun, 8 May 2022 11:55:58 +0800 Subject: [PATCH] chore(lib): update typeit 7.0.4 -> 8.5.4 --- .husky/pre-commit | 2 +- assets/data/cdn/jsdelivr.yml | 4 ++-- assets/lib/typeit/index.umd.js | 2 ++ assets/lib/typeit/typeit.min.js | 8 -------- layouts/partials/assets.html | 2 +- 5 files changed, 6 insertions(+), 12 deletions(-) create mode 100644 assets/lib/typeit/index.umd.js delete mode 100644 assets/lib/typeit/typeit.min.js diff --git a/.husky/pre-commit b/.husky/pre-commit index 9de288ab..c628ef00 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/zsh . "$(dirname "$0")/_/husky.sh" npm run build && npm run copy && git add resources assets/js diff --git a/assets/data/cdn/jsdelivr.yml b/assets/data/cdn/jsdelivr.yml index a5c85cab..fe0124af 100644 --- a/assets/data/cdn/jsdelivr.yml +++ b/assets/data/cdn/jsdelivr.yml @@ -35,8 +35,8 @@ libFiles: clipboardJS: clipboard@2.0.11/dist/clipboard.min.js # sharer.js@0.5.1 https://github.com/ellisonleao/sharer.js sharerJS: sharer.js@0.5.1/sharer.min.js - # typeit@7.0.4 https://github.com/alexmacarthur/typeit - typeitJS: typeit@7.0.4/dist/typeit.min.js + # typeit@8.5.4 https://github.com/alexmacarthur/typeit + typeitJS: typeit@8.5.4/dist/index.umd.js # katex@0.15.3 https://katex.org/ katexCSS: katex@0.15.3/dist/katex.min.css katexJS: katex@0.15.3/dist/katex.min.js diff --git a/assets/lib/typeit/index.umd.js b/assets/lib/typeit/index.umd.js new file mode 100644 index 00000000..be9e80c2 --- /dev/null +++ b/assets/lib/typeit/index.umd.js @@ -0,0 +1,2 @@ +// TypeIt by Alex MacArthur - https://typeitjs.com +(function(E,w){typeof exports=="object"&&typeof module<"u"?module.exports=w():typeof define=="function"&&define.amd?define(w):(E=typeof globalThis<"u"?globalThis:E||self,E.TypeIt=w())})(this,function(){"use strict";var E=e=>Array.isArray(e),w=e=>E(e)?e:[e];let se=function(e){let r=function(c){return w(c).forEach(g=>m.set(Symbol(g.char?.innerText),{...g})),this},l=()=>f().filter(c=>c.typeable),s=function(c,g){let O=[...m.keys()];m.set(O[c],g)},o=function(){m.forEach(c=>delete c.done)},d=function(){m=new Map,r(e)},T=()=>m,f=()=>Array.from(m.values()),p=c=>m.delete(c),b=(c=!1)=>c?f():f().filter(g=>!g.done),x=(c,g=!1)=>g?m.delete(c):m.get(c).done=!0,m=new Map;return r(e),{add:r,set:s,wipe:d,reset:o,destroy:p,done:x,getItems:b,getQueue:T,getTypeable:l}};var W=e=>Array.from(e),R=e=>document.createTextNode(e);let B=e=>([...e.childNodes].forEach(r=>{if(r.nodeValue){[...r.nodeValue].forEach(l=>{r.parentNode.insertBefore(R(l),r)}),r.remove();return}B(r)}),e);var J=e=>{let r=document.implementation.createHTMLDocument();return r.body.innerHTML=e,B(r.body)};const K="data-typeit-id",k="ti-cursor",oe="END",ae={started:!1,completed:!1,frozen:!1,destroyed:!1},ue={breakLines:!0,cursor:!0,cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},de=`[${K}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`;function X(e,r=!1){let l=document.createTreeWalker(e,NodeFilter.SHOW_ALL,{acceptNode:d=>d.classList?.contains(k)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),s,o=[];for(;s=l.nextNode();)s.originalParent=s.parentNode,o.push(s);return r?o.reverse():o}function fe(e){return X(J(e))}function ce(e,r=!0){return r?fe(e):W(e).map(R)}var P=e=>document.createElement(e),Y=(e,r="")=>{let l=P("style");l.id=r,l.appendChild(R(e)),document.head.appendChild(l)},G=e=>(E(e)||(e=[e/2,e/2]),e),Z=(e,r)=>Math.abs(Math.random()*(e+r-(e-r))+(e-r));let ee=e=>e/2;function ye(e){let{speed:r,deleteSpeed:l,lifeLike:s}=e;return l=l!==null?l:r/3,s?[Z(r,ee(r)),Z(l,ee(l))]:[r,l]}var pe=e=>(e.forEach(clearTimeout),[]),he=()=>Math.random().toString().substring(2,9),Q=e=>"value"in e;let me=e=>Q(e)?W(e.value):X(e,!0).filter(r=>!(r.childNodes.length>0));var be=(e,r)=>{new IntersectionObserver((s,o)=>{s.forEach(d=>{d.isIntersecting&&(r(),o.unobserve(e))})},{threshold:1}).observe(e)};let C=e=>typeof e=="function"?e():e;var te=e=>Number.isInteger(e);let z=(e,r=document,l=!1)=>r[`querySelector${l?"All":""}`](e),ge=e=>e?.tagName==="BODY",Se=(e,r)=>{if(Q(e)){e.value=`${e.value}${r.textContent}`;return}r.innerHTML="";let l=ge(r.originalParent)?e:r.originalParent||e;l.insertBefore(r,z("."+k,l)||null)},Te=(e,r,l)=>Math.min(Math.max(r+e,0),l.length);var D=(e,r)=>Object.assign({},e,r),F=e=>{if(!e)return;let r=e.parentNode;(r.childNodes.length>1?e:r).remove()},ve=(e,r,l)=>{let s=r[l-1],o=z(`.${k}`,e);e=s?.parentNode||e,e.insertBefore(o,s||null)};function _e(e){return typeof e=="string"?z(e):e}var Ee=e=>/<(.+)>(.*?)<\/(.+)>/.test(e.outerHTML);let we=async(e,r,l)=>new Promise(s=>{let o=async()=>{await e(),s()};l.push(setTimeout(o,r||0))}),Ce={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"","margin-left":"-.125em","margin-right":".125em"},Ne=(e,r,l)=>{let o=`${`[${K}='${e}']`} .${k}`,d=getComputedStyle(l),T=Object.entries(Ce).reduce((f,[p,b])=>`${f} ${p}: var(--ti-cursor-${p}, ${b||d[p]});`,"");Y(`@keyframes blink-${e} { 0% {opacity: 0} 49% {opacity: 0} 50% {opacity: 1} } ${o} { display: inline; letter-spacing: -1em; ${T} animation: blink-${e} ${r.cursorSpeed/1e3}s infinite; } ${o}.with-delay { animation-delay: 500ms; } ${o}.disabled { animation: none; }`,e)};var U=(e,r)=>new Array(r).fill(e);const re=({queueItems:e,selector:r,cursorPosition:l,to:s})=>{if(te(r))return r*-1;let o=new RegExp(oe,"i").test(s),d=r?[...e].reverse().findIndex(({char:f})=>{let p=f.parentElement,b=p.matches(r);return o&&b?!0:b&&p.firstChild.isSameNode(f)}):-1;d<0&&(d=o?0:e.length-1);let T=o?0:1;return d-l+T};let Ie=async(e,r)=>{let l=async()=>e.func?.call(globalThis);e.delay?await r(async()=>{await l()},e.delay):await l()};return function(e,r={}){let l=async(t,n,a=!1)=>{S.frozen&&await new Promise(u=>{this.unfreeze=()=>{S.frozen=!1,u()}}),a||await i.beforeStep(this),await we(t,n,q),a||await i.afterStep(this)},s=()=>Q(y),o=(t=0)=>ye(i)[t],d=()=>me(y),T=(t={})=>{let n=t.delay;n&&h.add({delay:n})},f=(t,n)=>(h.add(t),T(n),this),p=()=>le??N,b=(t={})=>[{func:()=>A(t)},{func:()=>A(i)}],x=t=>{let n=i.nextStringDelay;h.add([{delay:n[0]},...t,{delay:n[1]}])},m=()=>{if(s())return;let t=P("span");return t.className=k,j?(t.innerHTML=J(i.cursorChar).innerHTML,t):(t.style.visibility="hidden",t)},c=async()=>{!s()&&v&&y.appendChild(v),j&&Ne(ie,i,y)},g=t=>{j&&v&&(v.classList.toggle("disabled",t),v.classList.toggle("with-delay",!t))},O=()=>{let t=i.strings.filter(n=>!!n);t.forEach((n,a)=>{if(this.type(n),a+1===t.length)return;let u=i.breakLines?[{func:()=>V(P("BR")),typeable:!0}]:U({func:$,delay:o(1)},h.getTypeable().length);x(u)})},Le=async t=>{let n=p();n&&await ne({value:n});for(let a of d())await l($,o(1));h.reset(),h.set(0,{delay:t})},ke=t=>{let n=y.innerHTML;return n?(y.innerHTML="",i.startDelete?(y.innerHTML=n,B(y),x([{func:$}]),t):n.replace(//g,"").trim().split(//).concat(t)):t},M=async(t=!0)=>{S.started=!0;try{for(let[a,u]of h.getQueue())u.done||(u.typeable&&!S.frozen&&g(!0),(!u.deletable||u.deletable&&d().length)&&await Ie(u,l),g(!1),h.done(a,!t));if(!t)return this;if(S.completed=!0,await i.afterComplete(this),!i.loop)throw"";let n=i.loopDelay;l(async()=>{await Le(n[0]),M()},n[1])}catch{}return this},ne=async t=>{N=Te(t,N,d()),ve(y,d(),N)},V=t=>Se(y,t),A=async t=>i=D(i,t),Pe=async()=>{if(s()){y.value="";return}d().forEach(F)},$=()=>{let t=d();!t.length||(s()?y.value=y.value.slice(0,-1):F(t[N]))};this.break=function(t){return f({func:()=>V(P("BR")),typeable:!0},t)},this.delete=function(t=null,n={}){t=C(t);let a=b(n),u=t,{instant:H,to:_}=n,I=h.getTypeable(),L=(()=>u===null?I.length:te(u)?u:re({queueItems:I,selector:u,cursorPosition:p(),to:_}))();return f([a[0],...U({func:$,delay:H?0:o(1),deletable:!0},L),a[1]],n)},this.empty=function(t={}){return f({func:Pe},t)},this.exec=function(t,n={}){let a=b(n);return f([a[0],{func:()=>t(this)},a[1]],n)},this.move=function(t,n={}){t=C(t);let a=b(n),{instant:u,to:H}=n,_=re({queueItems:h.getTypeable(),selector:t===null?"":t,to:H,cursorPosition:p()}),I=_<0?-1:1;return le=p()+_,f([a[0],...U({func:()=>ne(I),delay:u?0:o()},Math.abs(_)),a[1]],n)},this.options=function(t,n={}){return t=C(t),A(t),f({},n)},this.pause=function(t,n={}){return f({delay:C(t)},n)},this.type=function(t,n={}){t=C(t);let{instant:a}=n,u=b(n),_=ce(t,i.html).map(L=>({func:()=>V(L),char:L,delay:a||Ee(L)?0:o(),typeable:L.nodeType===Node.TEXT_NODE})),I=[u[0],{func:async()=>await i.beforeString(t,this)},..._,{func:async()=>await i.afterString(t,this)},u[1]];return f(I,n)},this.is=function(t){return S[t]},this.destroy=function(t=!0){q=pe(q),C(t)&&v&&F(v),S.destroyed=!0},this.freeze=function(){S.frozen=!0},this.unfreeze=()=>{},this.reset=function(t){!this.is("destroyed")&&this.destroy(),t?(h.wipe(),t(this)):h.reset(),N=0;for(let n in S)S[n]=!1;return y[s()?"value":"innerHTML"]="",this},this.go=function(){return S.started?this:(c(),i.waitUntilVisible?(be(y,M.bind(this)),this):(M(),this))},this.flush=function(t=()=>{}){return c(),M(!1).then(t),this},this.getQueue=()=>h,this.getOptions=()=>i,this.updateOptions=t=>A(t),this.getElement=()=>y;let y=_e(e),q=[],N=0,le=null,S=D({},ae),i=D(ue,r);i=D(i,{html:!s()&&i.html,nextStringDelay:G(i.nextStringDelay),loopDelay:G(i.loopDelay)});let ie=he(),h=se([{func:()=>{},delay:i.startDelay}]);y.dataset.typeitId=ie,Y(de);let j=i.cursor&&!s(),v=m();i.strings=ke(w(i.strings)),i.strings.length&&O()}}); \ No newline at end of file diff --git a/assets/lib/typeit/typeit.min.js b/assets/lib/typeit/typeit.min.js deleted file mode 100644 index 7d247723..00000000 --- a/assets/lib/typeit/typeit.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * TypeIt - The most versatile animated typing utility on the planet. - * Author: Alex MacArthur (https://macarthur.me) - * Version: v7.0.4 - * License: GPL-2.0 - * URL: https://typeitjs.com - */ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n=n||self).TypeIt=t()}(this,(function(){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(t)}var t={strings:[],speed:100,cursor:!0,cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,lifeLike:!0,breakLines:!0,startDelay:250,startDelete:!1,nextStringDelay:750,loop:!1,loopDelay:750,html:!0,waitUntilVisible:!1,beforeString:function(){},afterString:function(){},beforeStep:function(){},afterStep:function(){},afterComplete:function(){}},e=function(n){return n.map((function(n){return void 0===n[1]&&n.push(null),void 0===n[2]&&n.push({}),n}))},r=function(n,t){return Object.assign({},n,t)},i=function(n){return Array.isArray(n)},o=function(n,t){return n[2]=r(n[2],t)||t,n},u=function(n,t){return i(n[0])?n.map((function(n){return o(n,t)})):o(n,t)},c=function(n,t,e,r){r=r||!1,e=e||{};var o=!i(n),c=n.length;return(n=o?new Array(n).fill(0):n).map((function(n,i){if(o)return t;var a=[t,n,e];return r&&(0===i&&(a=u(a,{isFirst:!0})),i+1===c&&(a=u(a,{isLast:!0}))),a}))};function a(n){this.insert=function(n,e){t.splice(n,0,e)},this.add=function(n,u,a){return n=i(n)?n:[n,null],a=a||!1,u=u||1,i(n[0])||(n=c(u,n)),n=e(n).map((function(n){return n[2]=r(n[2],{id:o}),o++,n})),t=a?n.concat(t):t.concat(n),this},this.set=function(n,e){t[n]=e},this.reset=function(){t=t.map((function(n){return n[2].executed=!1,n}))},this.getItems=function(){return(t=e(t)).filter((function(n){return!n[2].executed}))},this.setMeta=function(n,e){var i=t.findIndex((function(t){return t[2].id===n}));t[i][2]=r(t[i][2],e)};var t=[],o=0;this.add(n)}var f=function(n){return Array.from(n)},s=function(n){var t=[];return t.concat.apply(t,n)},l=function(n){var t=document.implementation.createHTMLDocument("");return t.body.innerHTML=n,t.body},d=function n(t,e,r){e=e||null,r=void 0!==r&&r;var i=f(t.childNodes).map((function(t){return 3===(e=t).nodeType||"BR"===e.tagName?t:n(t);var e}));return i=s(i),e&&(i=i.filter((function(n){return!e.contains(n)}))),r?i.reverse():i},p=function(n){return"BODY"===n.tagName},h=function(n,t){t=t||null;var e=n instanceof HTMLElement;return{node:t,isTopLevelText:(!t||p(t.parentNode))&&!e,isHTMLElement:e,content:n}};function v(n){var t,e=l(n);return t=d(e).map((function(n){return n.nodeValue?f(n.nodeValue).map((function(t){return h(t,n)})):h(n)})),s(t)}function y(n,t){return(t=void 0===t||t)?v(n):f(n).map((function(n){return h(n)}))}var m=function(n){return document.createElement(n)},g=function(n,t){var e=m("style");e.id=t||"",e.appendChild(document.createTextNode(n)),document.head.appendChild(e)},b=function(n){return i(n)||(n=[n/2,n/2]),{before:n[0],after:n[1],total:n[0]+n[1]}},S=function(n,t){return Math.abs(Math.random()*(n+t-(n-t))+(n-t))};var N=function(n){return["textarea","input"].indexOf(n.tagName.toLowerCase())>-1},T=function(n,t){var e=t.querySelectorAll("*");return[t].concat(f(e).reverse()).find((function(t){return t.cloneNode().outerHTML===n.outerHTML}))},L=function(n,t,e,r){e=e||null;var i=t.isHTMLElement,o=i?t.content:document.createTextNode(t.content);if(N(n))n.value="".concat(n.value).concat(t.content);else{if(!t.isTopLevelText&&!i){var u=t.node.parentNode,c=T(u.cloneNode(),n);if(function(n,t){if(!n)return!1;var e=n.nextSibling;return!e||e.isEqualNode(t)}(c,e))n=c;else if((o=u.cloneNode()).innerText=t.content,!p(u.parentNode)){for(var a=u.parentNode,f=a.cloneNode(),s=T(f,n);!s&&!p(a);)f.innerHTML=o.outerHTML,o=f,f=a.parentNode.cloneNode(),a=a.parentNode,s=T(f,n);n=s||n}}var l=d(n,e,!0)[r-1],h=l?l.parentNode:n;h.insertBefore(o,h.contains(e)?e:null)}},M=function(n){var t;return null==n||null===(t=n.parentNode)||void 0===t?void 0:t.removeChild(n)};var x=function(n,t,e){var r,i="string"==typeof n,o=!1,u=-1*n;return i&&(u=(r="END"===n.toUpperCase())?-1:1,o=r?t+u>0:t+u-1&&i[o]&&(r.style[o]=i[o]);return r.style.cssText};function D(n,t,e){return e?t?t(n):n:(n&&n.then||(n=Promise.resolve(n)),t?n.then(t):n)}function H(n){return function(){for(var t=[],e=0;et.length?t.length:i)-1];(n=o?o.parentNode:n).insertBefore(e,o||null)}}(W,z(),fn,_),A((function(){if(r.isString&&r.canKeepMoving)return C(n(r.numberOfSteps>0?"START":"END"))}),(function(){return t()}))})),Z[0])}))},K=function(n){return new Promise((function(t){q((function(){return L(W,n,fn,_),t()}),Z[0])}))},Q=H((function(n){en=r(en,n)})),Y=H((function(){X?W.value="":z().forEach((function(n){M(n)}))})),G=function n(t){return t=!0===t,new Promise((function(e){q(H((function(){var r=!1,i=z();return i.length&&(X?W.value=W.value.slice(0,-1):M(i[_])),f(W.querySelectorAll("*")).forEach((function(n){if(!n.innerHTML&&"BR"!==n.tagName){for(var t=n;1===t.parentNode.childNodes.length&&t.parentNode.childNodes[0].isEqualNode(t);)t=t.parentNode;M(t)}})),A((function(){if(t&&i.length-1>0)return D(n(!0),(function(){return r=!0,e()}))}),(function(n){return r?n:e()}))})),Z[1])}))};this.break=function(n){return p([K,h(m("BR"))],1,n)},this.delete=function(n,t){var e=T(t);return p([e[0]].concat([].concat(Array(Math.abs(n)||1)).fill().map((function(){return[G,!n,nn]})),[e[1]]),1,t)},this.empty=function(){return p(Y,1,arguments)},this.exec=function(n,t){var e=T(t);return p([e[0],[n,null],e[1]],1,t)},this.move=function(n,t){var e=x(n,_,z()),r=T(t),i=e.isString?n:Math.sign(n);return p([r[0]].concat([].concat(Array(Math.abs(n)||1)).fill().map((function(){return[F,i,nn]})),[r[1]]),1,t)},this.options=function(n){return p([Q,n],1,n)},this.pause=function(n,t){return p([U,n],1,t)},this.type=function(n,t){var e=T(t),r=y(n,en.html),i=[e[0]].concat(c(r,K,nn,!0),[e[1]]);return p(i,1,t)},this.is=function(n){return tn[n]},this.destroy=function(n){n=void 0===n||n,$.forEach((function(n){clearTimeout(n)})),$=[],n&&M(fn),tn.destroyed=!0},this.freeze=function(){tn.frozen=!0},this.unfreeze=function(){tn.frozen=!1,V()},this.reset=function(){for(var n in!this.is("destroyed")&&this.destroy(),an.reset(),_=0,tn)tn[n]=!1;return X?W.value="":W.innerHTML="",this},this.go=function(){return tn.started?this:(I(),en.waitUntilVisible?(function(n,t){new IntersectionObserver((function(e,r){e.forEach((function(e){e.isIntersecting&&(t(),r.unobserve(n))}))}),{threshold:1}).observe(n)}(W,V.bind(this)),this):(V(),this))},this.getQueue=function(){return an},this.getOptions=function(){return en},this.getElement=function(){return W};var J,W="string"==typeof(J=e)?document.querySelector(J):J,X=N(W),Z=[],$=[],_=0,nn={freezeCursor:!0},tn={started:!1,completed:!1,frozen:!1,destroyed:!1},en=r(t,o);en=r(en,{html:!X&&en.html,nextStringDelay:b(en.nextStringDelay),loopDelay:b(en.loopDelay)});var rn,on,un,cn=Math.random().toString().substring(2,9),an=new a([U,en.startDelay]);W.setAttribute("data-typeit-id",cn),g("[data-typeit-id]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}[data-typeit-id]"),en.strings=(un=en.strings,rn=i(un)?un:[un],(on=function(n){return n.innerHTML.replace(/<\!--.*?-->/g,"").trim()}(W))?(W.innerHTML="",en.startDelete?(v(on).forEach((function(n){L(W,n,fn,_)})),an.add([G,!0]),B(1),rn):[on.trim()].concat(rn)):rn);var fn=function(){if(X||!en.cursor)return null;var n=m("span");return n.innerHTML=l(en.cursorChar).innerHTML,n.className="ti-cursor",n.style.cssText="display:inline;".concat(w(W)),n}();en.strings.length&&function(){var n=en.strings.filter((function(n){return!!n}));n.forEach((function(t,e){var r=y(t,en.html);an.add(c(r,K,nn,!0));var i=an.getItems().length;if(e+1!==n.length){if(en.breakLines){var o=h(m("BR"));return an.add([K,o,nn]),void B(i)}an.add(c(r,G,nn)),B(i,t.length)}}))}()}})); diff --git a/layouts/partials/assets.html b/layouts/partials/assets.html index 9319d07e..f3cf12d6 100644 --- a/layouts/partials/assets.html +++ b/layouts/partials/assets.html @@ -79,7 +79,7 @@ {{- /* TypeIt */ -}} {{- with (.Scratch.Get "this").typeitMap -}} {{- $typeit := $.Site.Params.typeit -}} - {{- $source := $cdn.typeitJS | default "lib/typeit/typeit.min.js" -}} + {{- $source := $cdn.typeitJS | default "lib/typeit/index.umd.js" -}} {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" $.Scratch "Data" | partial "scratch/script.html" -}} {{- $config = dict "speed" $typeit.speed "cursorSpeed" $typeit.cursorSpeed "cursorChar" $typeit.cursorChar "duration" $typeit.duration "data" . | dict "typeit" | merge $config -}} {{- end -}}