From 4845d4a65b7cf0b1f31e7bc514ad8e71398f485f Mon Sep 17 00:00:00 2001 From: Thomas Jakobi Date: Thu, 4 Jan 2024 16:15:44 +0100 Subject: [PATCH] Deployed 6a11436 with MkDocs version: 1.5.3 --- 404.html | 136 ++++++--- assets/javascripts/bundle.b4d07000.min.js | 29 -- assets/javascripts/bundle.b4d07000.min.js.map | 8 - assets/javascripts/bundle.d7c377c4.min.js | 29 ++ assets/javascripts/bundle.d7c377c4.min.js.map | 7 + assets/javascripts/lunr/min/lunr.el.min.js | 1 + assets/javascripts/lunr/min/lunr.he.min.js | 1 + ...208ed371.min.js => search.f886a092.min.js} | 18 +- ....min.js.map => search.f886a092.min.js.map} | 9 +- assets/stylesheets/main.26e3688c.min.css | 1 - assets/stylesheets/main.26e3688c.min.css.map | 1 - assets/stylesheets/main.50c56a3b.min.css | 1 + assets/stylesheets/main.50c56a3b.min.css.map | 1 + assets/stylesheets/palette.06af60db.min.css | 1 + .../stylesheets/palette.06af60db.min.css.map | 1 + assets/stylesheets/palette.ecc896b0.min.css | 1 - .../stylesheets/palette.ecc896b0.min.css.map | 1 - assets/stylesheets/treehillstudio.css | 18 +- contributors/index.html | 143 +++++++--- examples/index.html | 191 ++++++++++--- getting-started/index.html | 167 ++++++++--- index.html | 207 +++++++++++--- installation/index.html | 175 +++++++++--- search/search_index.json | 1 + sitemap.xml.gz | Bin 127 -> 127 bytes usage/index.html | 263 ++++++++++++++---- 26 files changed, 1072 insertions(+), 339 deletions(-) delete mode 100644 assets/javascripts/bundle.b4d07000.min.js delete mode 100644 assets/javascripts/bundle.b4d07000.min.js.map create mode 100644 assets/javascripts/bundle.d7c377c4.min.js create mode 100644 assets/javascripts/bundle.d7c377c4.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.el.min.js create mode 100644 assets/javascripts/lunr/min/lunr.he.min.js rename assets/javascripts/workers/{search.208ed371.min.js => search.f886a092.min.js} (66%) rename assets/javascripts/workers/{search.208ed371.min.js.map => search.f886a092.min.js.map} (62%) delete mode 100644 assets/stylesheets/main.26e3688c.min.css delete mode 100644 assets/stylesheets/main.26e3688c.min.css.map create mode 100644 assets/stylesheets/main.50c56a3b.min.css create mode 100644 assets/stylesheets/main.50c56a3b.min.css.map create mode 100644 assets/stylesheets/palette.06af60db.min.css create mode 100644 assets/stylesheets/palette.06af60db.min.css.map delete mode 100644 assets/stylesheets/palette.ecc896b0.min.css delete mode 100644 assets/stylesheets/palette.ecc896b0.min.css.map create mode 100644 search/search_index.json diff --git a/404.html b/404.html index 6ff5dbd..76cd332 100644 --- a/404.html +++ b/404.html @@ -10,8 +10,9 @@ + - + @@ -19,12 +20,15 @@ - + + + + @@ -63,9 +67,6 @@ - - - @@ -77,9 +78,7 @@ - -
-
+
@@ -116,6 +115,7 @@
@@ -136,13 +136,53 @@
+ + + + + +
- +
Jako/ImagePlus @@ -153,7 +193,6 @@ -
@@ -173,6 +212,7 @@ +
@@ -352,7 +423,7 @@

404 - Not found

- +
@@ -371,10 +442,11 @@

404 - Not found

- + + - + diff --git a/assets/javascripts/bundle.b4d07000.min.js b/assets/javascripts/bundle.b4d07000.min.js deleted file mode 100644 index 3c0bdad..0000000 --- a/assets/javascripts/bundle.b4d07000.min.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict";(()=>{var Ci=Object.create;var gr=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Hi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var rn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&rn(e,r,t[r]);if(Ht)for(var r of Ht(t))nn.call(t,r)&&rn(e,r,t[r]);return e};var on=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&nn.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ki(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=Ri(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ci(Hi(e)):{},Pi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var sn=Pt((xr,an)=>{(function(e,t){typeof xr=="object"&&typeof an!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Qe=O.type,De=O.tagName;return!!(De==="INPUT"&&s[Qe]&&!O.readOnly||De==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(a(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){a(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){a(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),Y())}function Y(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function B(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,B())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Y(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var cn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},s=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(B,N){d.append(N,B)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Y=!0,B=this;["append","delete","set"].forEach(function(O){var Qe=h[O];h[O]=function(){Qe.apply(h,arguments),v&&(Y=!1,B.search=h.toString(),Y=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,Y&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(f){Object.defineProperty(s,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){a(f)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var qr=Pt((Mt,Nr)=>{/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */(function(t,r){typeof Mt=="object"&&typeof Nr=="object"?Nr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ai}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var E=p()(T);return m("cut"),E},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[T?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var Y=function(T,E){var H=v(T);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},B=function(T){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof T=="string"?H=Y(T,E):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?H=Y(T.value,E):(H=p()(T),m("copy")),H},N=B;function O(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Qe=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.action,H=E===void 0?"copy":E,I=T.container,q=T.target,Me=T.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function Ei(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function tn(j,T){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=c()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ai=Li},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */var rs=/["'&<>]/;Yo.exports=ns;function ns(e){var t=""+e,r=rs.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof et?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function pn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: -`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` - `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{ln(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ln(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function ln(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new xn(r,n)},t}(F);var xn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Sn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Oe=new Sn(wn);var _=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Te(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=zi();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return un(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return Ni(e);if(pt(e))return qi(e);if(Nt(e))return Ki(e);if(Kt(e))return On(e);if(Gt(e))return Qi(e);if(Jt(e))return Yi(e)}throw Qt(e)}function Ni(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qi(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Dn(function(){return new Zt}))}}function Vn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,Y=function(){p==null||p.unsubscribe(),p=void 0},B=function(){Y(),u=m=void 0,h=v=!1},N=function(){var O=u;B(),O==null||O.unsubscribe()};return y(function(O,Qe){d++,!v&&!h&&Y();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,f))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,Y(),p=$r(B,o,$e),De.error($e)},complete:function(){h=!0,Y(),p=$r(B,s),De.complete()}}),U(O).subscribe(u))})(c)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),J())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Kn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>rr(e)),V(rr(e)))}var Yn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Wr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),va?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Wr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ba.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Gn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?_:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():_))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>_),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=M("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return G([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=G([n,r]).pipe(l(()=>Xe(e)));return G([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` - @@ -90,9 +91,7 @@
- -
-
+
@@ -129,6 +128,7 @@
@@ -149,13 +149,53 @@
+ + + + + +
- +
Jako/ImagePlus @@ -166,7 +206,6 @@ -
@@ -186,6 +225,7 @@ +
@@ -391,7 +469,7 @@

Contributors

- +
@@ -410,10 +488,11 @@

Contributors

- + + - + diff --git a/examples/index.html b/examples/index.html index 0603ee7..970ef7b 100644 --- a/examples/index.html +++ b/examples/index.html @@ -14,8 +14,9 @@ + - + @@ -23,12 +24,15 @@ - + + + + @@ -78,9 +82,6 @@ - - - @@ -97,9 +98,7 @@
- -
-
+
@@ -136,6 +135,7 @@
@@ -156,13 +156,53 @@
+ + + + + + @@ -610,7 +714,7 @@

Responsive images

- +
@@ -629,10 +733,11 @@

Responsive images

- + + - + diff --git a/getting-started/index.html b/getting-started/index.html index 971563e..1bcd2b3 100644 --- a/getting-started/index.html +++ b/getting-started/index.html @@ -14,8 +14,9 @@ + - + @@ -23,12 +24,15 @@ - + + + + @@ -78,9 +82,6 @@ - - - @@ -97,9 +98,7 @@
- -
-
+
@@ -136,6 +135,7 @@
@@ -156,13 +156,53 @@
+ + + + + +
- +
Jako/ImagePlus @@ -173,7 +213,6 @@ -
@@ -193,6 +232,7 @@ +
@@ -469,7 +561,7 @@

The cropping tool

- +
@@ -488,10 +580,11 @@

The cropping tool

- + + - + diff --git a/index.html b/index.html index 76b9b53..4b9e84b 100644 --- a/index.html +++ b/index.html @@ -12,8 +12,9 @@ + - + @@ -21,12 +22,15 @@ - + + + + @@ -76,9 +80,6 @@ - - - @@ -95,9 +96,7 @@
- -
-
+
@@ -134,6 +133,7 @@
@@ -154,13 +154,53 @@
+ + + + + +
- +
Jako/ImagePlus @@ -171,7 +211,6 @@ -
@@ -191,6 +230,7 @@ +
@@ -473,7 +605,7 @@

Features

- +
@@ -492,10 +624,11 @@

Features

- + + - + diff --git a/installation/index.html b/installation/index.html index 7d02492..f1247b0 100644 --- a/installation/index.html +++ b/installation/index.html @@ -14,8 +14,9 @@ + - + @@ -23,12 +24,15 @@ - + + + + @@ -78,9 +82,6 @@ - - - @@ -97,9 +98,7 @@
- -
-
+
@@ -136,6 +135,7 @@
@@ -156,13 +156,53 @@
+ + + + + +
- +
Jako/ImagePlus @@ -173,7 +213,6 @@ -
@@ -193,6 +232,7 @@ +
@@ -485,7 +581,7 @@

Build it from source

- +
@@ -504,10 +600,11 @@

Build it from source

- + + - + diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 0000000..f83fa4a --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Image+","text":"

Image+ is an advanced image template for MODx Revolution. The dimensions for the uploaded image can be configured (optionally) to restrict a minimum width and/or height. Image cropping can be forced to stay within a preset ratio. A graphical tool can be used to resize the image to the desired dimensions/proportions.

"},{"location":"#requirements","title":"Requirements","text":"
  • MODX Revolution 2.6+
  • PHP 7.1+
  • MODX Cropping Engine i.e. pThumb
"},{"location":"#features","title":"Features","text":"
  • Visual tool for cropping images, integrated with MODX Manager interface.
  • Option to restrict minimum width and/or height for uploaded image.
  • User image cropping can be forced to stay at preset ratio.
  • Use chunk as output mask and fill placeholders with url, height, width, alt tag, phpthumb options etc. of cropped uploaded image.
"},{"location":"#license","title":"License","text":"

The project is licensed under the GPLv2 license.

"},{"location":"#translations","title":"Translations","text":"

Translations of the package can be made for the Default Lexicon, the Properties Lexicon and the System Setting Lexicon

"},{"location":"contributors/","title":"Contributors","text":"

The Image+ project was started in 2012 by Alan Pich and is maintained and developed further since 2015 by Thomas Jakobi.

Many thanks to all who contributed, whether by creating pull requests, submitting bug reports, or donating.

"},{"location":"examples/","title":"Examples","text":"

Image+ can be used for various purposes. On this page you will find some examples of how it can be used:

"},{"location":"examples/#collections","title":"Collections","text":"

You can display the Image+ thumbnail in a column of the Collections grid by setting the column's renderer to ImagePlus.MIGX_Renderer.

"},{"location":"examples/#migx","title":"MIGX","text":"

If you want to use Image+ in MIGX, you can configure all Image+ TV properties with a JSON string in the Configs textarea in the MIGX formtabs field. The following properties are possible:

{\n\"targetWidth\":\"\",\n\"targetHeight\":\"\",\n\"targetRatio\":\"\",\n\"thumbnailWidth\":\"\",\n\"allowAltTag\":\"\",\n\"allowCaption\":\"\",\n\"allowCredits\":\"\"\n}\n

You also need to change the Input TV Type to imageplus.

You can display the thumbnail in the grid column by setting the renderer to ImagePlus.MIGX_Renderer. In earlier versions of MIGX, you need to edit a MIGX configuration to do this.

To use this Image+ MIGX field in the frontend, call the ImagePlus Snippet where the value parameter is the name of the MIGX field:

[[ImagePlus? \n  &value=`[[+migxImagePlusField]]`\n]]\n

This will give you the prepared URL for the cropped image instead of the raw JSON object.

"},{"location":"examples/#getresourcespdoresources","title":"getResources/pdoResources","text":"

In order for the TV to be parsed using the getResources/pdoResources snippet, you need to add the following lines to your getResources/pdoResources call Snippet* call:

&includeTVs=`name_of_your_tv`\n&processTVs=`name_of_your_tv`\n

In the template chunk of the getResources/pdoResources snippet call, you can use the placeholder [[+tv.name_your_TV]] if the TV's Output Type is set to Image+. Without any further changes, the placeholder will contain the URL of the cropped image.

"},{"location":"examples/#using-the-imageplus-snippet-in-the-getresourcespdoresources-template-chunk","title":"Using the ImagePlus snippet in the getResources/pdoResources template chunk","text":"

In your template chunk for calling getResources/pdoResources Snippet, you need to add a parameter so that the ImagePlus Snippet call knows the origin ID from which to retrieve data:

 &docid=`[[+id]]`\n

Here is an example of a call and configuration, where image is your Image+ TV:

Snippet Call

<div class=\"blog-articles\">\n[[!pdoPage?\n    &element=`pdoResources`\n    &tpl=`tplBlogPost`\n    &limit=`11`\n    &includeContent=`1`\n    &showHidden=`0`\n    &hideContainers=`1`\n]]\n</div>\n<div class=\"blog-paging\">\n  [[!+page.nav]]\n</div>\n

Chunk tplBlogPost

<article class=\"post\">\n    <header class=\"post-header\">\n        <h3 class=\"post-title mt0 mb1\"><a href=\"[[~[[+id]]]]\">[[+longtitle:default=`[[+pagetitle]]`]]</a></h3>\n\n    [[ImagePlus? \n        &tvname=`image` \n        &type=`tpl` \n        &docid=`[[+id]]`\n        &tpl=`tplBlogIntroImg`\n    ]] \n\n    </header>\n    <section class=\"post-excerpt\">\n         <p>[[+content:striptags:ellipsis=`255`:typography]]\n         <a class=\"read-more\" href=\"[[~[[+id]]]]\">read more \u00bb</a></p>\n    </section>\n    <footer class=\"post-meta\">\n        <span class=\"post-author\">[[+createdby:userinfo=`fullname`]]</span>\n        <time class=\"post-date\" datetime=\"[[+publishedon:date=`%B %e, %Y`]]\">[[+publishedon:date=`%B %e, %Y`]]</time>\n    </footer>\n</article>\n

Chunk tplBlogIntroImg

<div class=\"feature\" style=\"margin-bottom:1rem\">\n    <a href=\"[[+caption]]\"><img src=\"[[+source.src:pthumb=`w=320`]]\" alt=\"[[+alt]]\" /></a>\n</div>\n
"},{"location":"examples/#responsive-images","title":"Responsive images","text":"

If you want to display responsive images with and without the crop, you can use the ImagePlus Snippet.

Snippet Call

[[ImagePlus? \n&tvname=`yourtvname` \n&type=`tpl` \n&options=`&w=320`\n&tpl=`tplResponsiveImage`\n&pagetitle=`[[*pagetitle]]`\n]]\n

Chunk tplResponsiveImage

<picture>\n    <source media=\"(min-width: 36em)\"\n            srcset=\"[[+source.src:pthumb=`w=1024`]] 1024w,\n                [[+source.src:pthumb=`w=640`]] 640w,\n                [[+source.src:pthumb=`w=320`]] 320w\"\n            sizes=\"33.3vw\"/>\n    <source srcset=\"[[+source.src:pthumb=`[[+crop.options]]&w=640`]] 2x,\n                [[+source.src:pthumb=`[[+crop.options]]&w=320`]] 1x\"/>\n    <img src=\"[[+url]]\" alt=\"[[+alt:default=`[[+pagetitle]]`]]\"/>\n</picture>\n

"},{"location":"getting-started/","title":"Getting Started","text":""},{"location":"getting-started/#create-a-new-template-variable","title":"Create a new template variable","text":"

Once Image+ is installed, you can create template variables [TV] in the usual way, but instead of setting the Input Type in the Input Options to Image, choose Image+ instead.

For most use cases, you should also set the Output Type in the Output Options to Image+. This allows you to control the image output on a resource.

"},{"location":"getting-started/#the-cropping-tool","title":"The cropping tool","text":"

When using an Image+ TV, you can select an image in the same way as you would with a regular Image TV. Once an image is selected, a cropping window will appear where you can select the area of the image to use. The original image is not changed. So you can upload a single image and reuse it in multiple places on the website at different sizes (and crops with multiple Image+ TVs).

If you want to change the cropping area, you need to click the crop trigger of the Image+ TV.

In the cropping window you need to drag the handles of the dotted box to change the cropping area. If the TV has been configured with size constraints or an aspect ratio, the cropping area will be limited to that aspect ratio.

"},{"location":"installation/","title":"Installation","text":""},{"location":"installation/#install-from-modx-extras","title":"Install from MODX Extras","text":"

Search for Image+ in the Package Manager of your MODX installation and install it in there.

"},{"location":"installation/#manual-installation","title":"Manual installation","text":"

If you can't access the MODX Extras Repository in your MODX installation, you can manually install Image+.

  • Download the transport package from MODX Extras (or one of the pre-built transport packages in _packages)
  • Upload the zip file to your MODX installation's core/packages folder or upload it manually in the MODX Package Manager.
  • In the MODX Manager, navigate to the Package Manager page, and select 'Search locally for packages' from the dropdown button.
  • Image+ should now show up in the list of available packages. Click the corresponding 'Install' button and follow the instructions to complete the installation.
"},{"location":"installation/#build-it-from-source","title":"Build it from source","text":"

To build and install the package from source you could use Git Package Management. The GitHub repository of Image+ contains a config.json to build that package locally. Use this option, if you want to debug Image+ and/or contribute bugfixes and enhancements.

"},{"location":"usage/","title":"Usage","text":""},{"location":"usage/#input-options","title":"Input Options","text":"

In Image+ you can control the final size and aspect ratio of selected images. For an Image+ TV, several advanced input options are available:

"},{"location":"usage/#target-heightwidth","title":"Target Height/Width","text":"

Images can be constrained to a minimum height and/or width with Target Height and Target Width. If both values are set, the target aspect ratio of the output image will be calculated with these values. Both fields must be filled with an integer value.

"},{"location":"usage/#target-aspect-ratio","title":"Target Aspect Ratio","text":"

The aspect ratio for the output image can be restricted with Target aspect ratio. If target height and target width are specified, this value is ignored and the calculated aspect ratio of target height and target width is used. The field must be filled with a float value.

If you specify only a value for Target Height or Target Width and leave Target Aspect Ratio blank, the size of the crop is not constrained to any aspect ratio.

How to calculate the aspect ratio

The aspect ratio contains a floating point value: this value can be easily determined by dividing any width with the desired aspect ratio by the corresponding height. For example, suppose you want all your crops to have the same aspect ratio as an image of size \"1600x1000\", then simply divide \"1600\" by \"1000\", which gives the value \"1.6\". This is the value for your aspect ratio.

"},{"location":"usage/#show-alt-tag-field","title":"Show Alt Tag Field","text":"

Image+ TVs can also contain an Alt Tag field which is an additional text input that is stored with each image. It can be output next to the image i.e. as an alt tag or title tag.

To output the alt text in an Image+ TV placeholder, you need to select a chunk in the Output Options. You can also use the ImagePlus snippet and specify a template chunk in the snippet call options. The alt text is entered in the [[+alt]] placeholder in this chunk.

"},{"location":"usage/#show-caption-field","title":"Show Caption Field","text":"

Image+ TVs can also include a Caption Div, which is an additional text input that is stored with each image. This can be output below the image, i.e. in an additional caption div.

To output the caption in an Image+ TV placeholder, you must select a chunk in the Output Options. You can also use the ImagePlus snippet and specify a template chunk in the call options of the snippet. The caption will be inserted into the [[+caption]] placeholder in that chunk.

"},{"location":"usage/#show-credits-field","title":"Show Credits Field","text":"

Image+ TVs can also include a Credits field, which is an additional text input stored with each image. It can be output below the image, for example in an additional credits field.

To output the credits in an Image+ TV placeholder, you must select a chunk in the Output Options. You can also use the ImagePlus snippet and specify a template chunk in the snippet's call options. The credits are inserted into the [[+credits]] placeholder in that chunk.

"},{"location":"usage/#contextsystem-settings","title":"Context/System Settings","text":"

Each Image+ TV Input Option can be replaced by a context or system setting. And context/system settings can be defined for a single TV.

There are predefined system settings in the imageplus namespace which are empty or zero. If you activate one of them or fill it with a value, this setting will override the input options of all image+ TVs. Context settings must be created before they can be used.

Key Name Description Default imageplus.allow_alt_tag Show Alt Tag Field Allow user to enter a title/alt-tag for the image. No imageplus.allow_caption Show Caption Field Allow user to enter a caption for the image. No imageplus.allow_credits Show Credits Field Allow user to enter a credit for the image. No imageplus.debug Debug Log debug information in the MODX error log. No imageplus.force_config Force predefined crop sizes/aspect ratios Force the usage of predefined crop size/aspect ratios. No imageplus.select_config Predefined crop sizes/aspect ratios Create predefined crop size/aspect ratios that are selectable in the template variable options. [] imageplus.target_height Target Height Constrain the target images to a minimal height. - imageplus.target_ratio Target Aspect Ratio Restrict the target images to a aspect ratio. - imageplus.target_width Target Width Constrain the target images to a minimal width. - imageplus.thumbnail_width Thumbnail Width The thumbnail width of the image in the template variable panel. -

The global context/system settings have the prefix imageplus. and the individual TV context/system settings have the prefix imageplus.{tvname}.. {tvname} must be replaced with the name of the template variable.

The order for these settings is 1.

  • TV name based context setting
  • TV name based system setting
  • context setting
  • system setting

In the imageplus.select_config system setting, you can create predefined internal forces/aspect ratios with an auxiliary grid. To force the use of the predefined sizes/ratios, you can activate the system setting imageplus.force_config.

"},{"location":"usage/#output-options","title":"Output Options","text":"

Several advanced output options are available for an Image+ TV:

"},{"location":"usage/#additional-phpthumb-parameters","title":"Additional phpThumb Parameters","text":"

By default, an Image+ TV returns a relative URL to a cropped (and possibly constrained) image scaled by phpThumb. This output option allows you to assign several additional phpThumb parameters that will be generated to create the thumbnail image.

"},{"location":"usage/#output-chunk","title":"Output Chunk","text":"

When you select an Output Chunk, the TV output is rendered using that chunk. Select the name of the chunk from the drop-down menu. Multiple placeholders are possible in this chunk to customize the output:

Placeholder Description alt Alt text crop.height Crop height of the thumbnail image crop.options Crop engine crop option string to generate the thumbnail image crop.width Crop width of the thumbnail image crop.x Crop x position of the thumbnail image crop.y Crop y position of the thumbnail image height Minimal height of the thumbnail image options Crop engine full option string to generate the thumbnail image source.height Height of the source image source.src Full path of the source image on the server (not a URL) source.width Width of the source image url URL of the thumbnail image width Minimal width of the thumbnail image

All these placeholders can be used in the Snippet too.

"},{"location":"usage/#generate-thumb-url","title":"Generate Thumb URL","text":"

If you create the thumbnail in the output chunk, i.e. through a pthumb output filter, you can disable the generation of the internal thumb URL.

Caution

You must enable this option if you do not specify an output chunk in the output options or if you use the [[+url]] placeholder in the specified output chunk. Otherwise, the image will not be cropped/truncated and the original image path will be returned.

"},{"location":"usage/#thumb-url-issues","title":"Thumb URL Issues","text":"

If you use Image+ in a multiple language site with different base URL context settings, you have to set the system setting phpthumbof.cache_url to /. Otherwise, the generated thumbnail path will contain the {base_url} prefix.

"},{"location":"usage/#snippet","title":"Snippet","text":"

The snippet gives you a second way to display the TV value. With template variable output you are limited to one output chunk per template variable, with the snippet you can be more flexible and use different output chunks. The following properties can be set in the snippet call:

Property Description Default docid Resource where the Image+ TV value is received from. - options Extended phpThumb options for the image. - tpl Template chunk for the snippet output. ImagePlus.image tvname Name of the Image+ TV. - type Type of the snippet output. Could be set to check tpl and thumb. -"},{"location":"usage/#example","title":"Example","text":"
[[ImagePlus?\n&tvname=`imageplus`\n&docid=`1`\n&options=`w=100`\n&type=`tpl`\n&tpl=`ImagePlus.demo`\n]]\n

This snippet call returns the contents of the template variable named imageplus of resource 1 and the extended phpThumb option &w=100 (width: 100px) in the parsed ImagePlus.demo chunk.

  1. The first entry supercedes the second entry in the list etc.\u00a0\u21a9

  2. Outputs image if the Image+ TV contains an image, otherwise noimage.\u00a0\u21a9

  3. Outputs the parsed template set by tpl property for retreived Image+ TV value (with additional options set by the options property)\u00a0\u21a9

  4. Outputs the thumbnail URL for retreived Image+ TV value (with additional options set by the options property)\u00a0\u21a9

  5. See phpThumb readme for possible options. Maybe not all options are valid in your installation (because of crop engine limitations or server restricions).\u00a0\u21a9

  6. The template chunk placeholder are the same as in the output chunk of the template variable.\u00a0\u21a9

"}]} \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 1b18b3505fbfb0b0d9194d0cf69a1ff9391b0bde..e64f09a6daf8e0f6b3f9541bd57d640715e54f58 100644 GIT binary patch delta 14 Vcmb=g=aBE_;8<{aTIxiOasVX!1vdZy delta 14 Vcmb=g=aBE_;NY)5o-&c68~`8|1cm?r diff --git a/usage/index.html b/usage/index.html index 756c565..7f28aa0 100644 --- a/usage/index.html +++ b/usage/index.html @@ -14,8 +14,9 @@ + - + @@ -23,12 +24,15 @@ - + + + + @@ -78,9 +82,6 @@ - - - @@ -97,9 +98,7 @@
- -
-
+
@@ -136,6 +135,7 @@
@@ -156,13 +156,53 @@
+ + + + + +
- +
Jako/ImagePlus @@ -173,7 +213,6 @@ -
@@ -193,6 +232,7 @@ +
+
@@ -961,7 +1101,7 @@

Example

- +
@@ -980,10 +1120,11 @@

Example

- + + - +