retold-remote 0.0.23 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/retold-remote.css +343 -20
- package/docs/.nojekyll +0 -0
- package/docs/README.md +64 -12
- package/docs/_cover.md +6 -6
- package/docs/_sidebar.md +2 -0
- package/docs/_topbar.md +1 -1
- package/docs/_version.json +7 -0
- package/docs/collections.md +30 -0
- package/docs/css/docuserve.css +327 -0
- package/docs/ebook-reader.md +75 -1
- package/docs/image-explorer.md +62 -2
- package/docs/index.html +39 -0
- package/docs/retold-catalog.json +254 -0
- package/docs/retold-keyword-index.json +31216 -0
- package/docs/server-setup.md +122 -91
- package/docs/stack-launcher.md +218 -0
- package/docs/synology.md +585 -0
- package/docs/ultravisor-configuration.md +5 -5
- package/docs/ultravisor-integration.md +4 -2
- package/package.json +20 -14
- package/source/Pict-Application-RetoldRemote.js +22 -0
- package/source/RetoldRemote-ExtensionMaps.js +1 -1
- package/source/cli/RetoldRemote-Server-Setup.js +460 -7
- package/source/cli/RetoldRemote-Stack-Launcher.js +563 -0
- package/source/cli/RetoldRemote-Stack-Run.js +41 -0
- package/source/cli/commands/RetoldRemote-Command-Serve.js +129 -54
- package/source/providers/CollectionManager-AddItems.js +166 -0
- package/source/providers/Pict-Provider-GalleryNavigation.js +55 -0
- package/source/providers/Pict-Provider-OperationStatus.js +597 -0
- package/source/providers/keyboard-handlers/KeyHandler-ImageExplorer.js +20 -1
- package/source/providers/keyboard-handlers/KeyHandler-Viewer.js +23 -0
- package/source/server/RetoldRemote-AudioWaveformService.js +49 -3
- package/source/server/RetoldRemote-CollectionExportService.js +763 -0
- package/source/server/RetoldRemote-CollectionService.js +5 -0
- package/source/server/RetoldRemote-EbookService.js +218 -3
- package/source/server/RetoldRemote-ImageService.js +221 -46
- package/source/server/RetoldRemote-MediaService.js +63 -4
- package/source/server/RetoldRemote-MetadataCache.js +25 -5
- package/source/server/RetoldRemote-OperationBroadcaster.js +363 -0
- package/source/server/RetoldRemote-SubimageService.js +680 -0
- package/source/server/RetoldRemote-ToolDetector.js +50 -0
- package/source/server/RetoldRemote-UltravisorBeacon.js +18 -3
- package/source/server/RetoldRemote-UltravisorDispatcher.js +65 -491
- package/source/server/RetoldRemote-UltravisorOperations.js +133 -20
- package/source/server/RetoldRemote-VideoFrameService.js +302 -9
- package/source/views/MediaViewer-EbookViewer.js +419 -1
- package/source/views/MediaViewer-PdfViewer.js +1050 -0
- package/source/views/PictView-Remote-AudioExplorer.js +77 -1
- package/source/views/PictView-Remote-CollectionsPanel.js +213 -0
- package/source/views/PictView-Remote-Gallery.js +365 -64
- package/source/views/PictView-Remote-ImageExplorer.js +1529 -44
- package/source/views/PictView-Remote-ImageViewer.js +2 -2
- package/source/views/PictView-Remote-Layout.js +58 -0
- package/source/views/PictView-Remote-MediaViewer.js +100 -25
- package/source/views/PictView-Remote-RegionsBrowser.js +554 -0
- package/source/views/PictView-Remote-SubimagesPanel.js +353 -0
- package/source/views/PictView-Remote-TopBar.js +1 -0
- package/source/views/PictView-Remote-VideoExplorer.js +77 -1
- package/web-application/css/docuserve.css +277 -23
- package/web-application/css/retold-remote.css +343 -20
- package/web-application/docs/README.md +64 -12
- package/web-application/docs/_cover.md +6 -6
- package/web-application/docs/_sidebar.md +2 -0
- package/web-application/docs/_topbar.md +1 -1
- package/web-application/docs/collections.md +30 -0
- package/web-application/docs/ebook-reader.md +75 -1
- package/web-application/docs/image-explorer.md +62 -2
- package/web-application/docs/server-setup.md +122 -91
- package/web-application/docs/stack-launcher.md +218 -0
- package/web-application/docs/synology.md +585 -0
- package/web-application/docs/ultravisor-configuration.md +5 -5
- package/web-application/docs/ultravisor-integration.md +4 -2
- package/web-application/js/pict-docuserve.min.js +12 -12
- package/web-application/js/pict.min.js +2 -2
- package/web-application/js/pict.min.js.map +1 -1
- package/web-application/retold-remote.js +6596 -1784
- package/web-application/retold-remote.js.map +1 -1
- package/web-application/retold-remote.min.js +75 -23
- package/web-application/retold-remote.min.js.map +1 -1
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
"use strict";function _defineProperty(t,e,
|
|
1
|
+
"use strict";function _defineProperty(t,e,n){return(e=_toPropertyKey(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function _toPropertyKey(t){var e=_toPrimitive(t,"string");return"symbol"==typeof e?e:e+""}function _toPrimitive(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).PictDocuserve=t()}}(function(){return function t(e,n,i){function o(s,a){if(!n[s]){if(!e[s]){var c="function"==typeof require&&require;if(!a&&c)return c(s,!0);if(r)return r(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var d=n[s]={exports:{}};e[s][0].call(d.exports,function(t){return o(e[s][1][t]||t)},d,d.exports,t,e,n,i)}return n[s].exports}for(var r="function"==typeof require&&require,s=0;s<i.length;s++)o(i[s]);return o}({1:[function(t,e,n){e.exports={name:"fable-serviceproviderbase",version:"3.0.19",description:"Simple base classes for fable services.",main:"source/Fable-ServiceProviderBase.js",scripts:{start:"node source/Fable-ServiceProviderBase.js",test:"npx quack test",tests:"npx quack test -g",coverage:"npx quack coverage",build:"npx quack build",types:"tsc -p ./tsconfig.build.json",check:"tsc -p . --noEmit"},types:"types/source/Fable-ServiceProviderBase.d.ts",mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},repository:{type:"git",url:"https://github.com/stevenvelozo/fable-serviceproviderbase.git"},keywords:["entity","behavior"],author:"Steven Velozo <steven@velozo.com> (http://velozo.com/)",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/fable-serviceproviderbase/issues"},homepage:"https://github.com/stevenvelozo/fable-serviceproviderbase",devDependencies:{"@types/mocha":"^10.0.10",fable:"^3.1.62",quackage:"^1.0.58",typescript:"^5.9.3"}}},{}],2:[function(t,e,n){const i=t("../package.json");class o{constructor(t,e,n){this.fable,this.UUID,this.options,this.services,this.servicesMap,"object"==typeof t&&t.isFable?this.connectFable(t):this.fable=!1,this._PackageFableServiceProvider=i,this.fable?(this.UUID=t.getUUID(),this.options="object"==typeof e?e:{}):(this.options="object"!=typeof t||t.isFable?"object"==typeof e?e:{}:t,this.UUID="CORE-SVC-".concat(Math.floor(89999*Math.random()+1e4))),this.serviceType="Unknown-".concat(this.UUID),this.Hash="string"==typeof n?n:this.fable||"string"!=typeof e?"".concat(this.UUID):e}connectFable(t){if("object"!=typeof t||!t.isFable){let e="Fable Service Provider Base: Cannot connect to Fable, invalid Fable object passed in. The pFable parameter was a [".concat(typeof t,"].}");return console.log(e),new Error(e)}return this.fable||(this.fable=t),this.log||(this.log=this.fable.Logging),this.services||(this.services=this.fable.services),this.servicesMap||(this.servicesMap=this.fable.servicesMap),!0}}_defineProperty(o,"isFableService",!0),e.exports=o,e.exports.CoreServiceProviderBase=o},{"../package.json":1}],3:[function(t,e,n){!function(){var t,i,o,r,s,a,c,l,d,p,h,u,g,f,m,v,b,y,w,A,D,x,C,T,I,S,P,k,L,R,V,U=function(t){var e=new U.Builder;return e.pipeline.add(U.trimmer,U.stopWordFilter,U.stemmer),e.searchPipeline.add(U.stemmer),t.call(e,e),e.build()};U.version="2.3.9",
|
|
2
2
|
/*!
|
|
3
3
|
* lunr.utils
|
|
4
4
|
* Copyright (C) 2020 Oliver Nightingale
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
U.utils={},U.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),U.utils.asString=function(t){return null==t?"":t.toString()},U.utils.clone=function(t){if(null==t)return t;for(var e=Object.create(null),n=Object.keys(t),i=0;i<n.length;i++){var o=n[i],r=t[o];if(Array.isArray(r))e[o]=r.slice();else{if("string"!=typeof r&&"number"!=typeof r&&"boolean"!=typeof r)throw new TypeError("clone is not deep and does not support nested objects");e[o]=r}}return e},U.FieldRef=function(t,e,n){this.docRef=t,this.fieldName=e,this._stringValue=n},U.FieldRef.joiner="/",U.FieldRef.fromString=function(t){var e=t.indexOf(U.FieldRef.joiner);if(-1===e)throw"malformed field ref string";var n=t.slice(0,e),i=t.slice(e+1);return new U.FieldRef(i,n,t)},U.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+U.FieldRef.joiner+this.docRef),this._stringValue},
|
|
7
7
|
/*!
|
|
8
8
|
* lunr.Set
|
|
9
9
|
* Copyright (C) 2020 Oliver Nightingale
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
U.Set=function(t){if(this.elements=Object.create(null),t){this.length=t.length;for(var e=0;e<this.length;e++)this.elements[t[e]]=!0}else this.length=0},U.Set.complete={intersect:function(t){return t},union:function(){return this},contains:function(){return!0}},U.Set.empty={intersect:function(){return this},union:function(t){return t},contains:function(){return!1}},U.Set.prototype.contains=function(t){return!!this.elements[t]},U.Set.prototype.intersect=function(t){var e,n,i,o=[];if(t===U.Set.complete)return this;if(t===U.Set.empty)return t;this.length<t.length?(e=this,n=t):(e=t,n=this),i=Object.keys(e.elements);for(var r=0;r<i.length;r++){var s=i[r];s in n.elements&&o.push(s)}return new U.Set(o)},U.Set.prototype.union=function(t){return t===U.Set.complete?U.Set.complete:t===U.Set.empty?this:new U.Set(Object.keys(this.elements).concat(Object.keys(t.elements)))},U.idf=function(t,e){var n=0;for(var i in t)"_index"!=i&&(n+=Object.keys(t[i]).length);var o=(e-n+.5)/(n+.5);return Math.log(1+Math.abs(o))},U.Token=function(t,e){this.str=t||"",this.metadata=e||{}},U.Token.prototype.toString=function(){return this.str},U.Token.prototype.update=function(t){return this.str=t(this.str,this.metadata),this},U.Token.prototype.clone=function(t){return t=t||function(t){return t},new U.Token(t(this.str,this.metadata),this.metadata)},
|
|
12
12
|
/*!
|
|
13
13
|
* lunr.tokenizer
|
|
14
14
|
* Copyright (C) 2020 Oliver Nightingale
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
U.tokenizer=function(t,e){if(null==t||null==t)return[];if(Array.isArray(t))return t.map(function(t){return new U.Token(U.utils.asString(t).toLowerCase(),U.utils.clone(e))});for(var n=t.toString().toLowerCase(),i=n.length,o=[],r=0,s=0;r<=i;r++){var a=r-s;if(n.charAt(r).match(U.tokenizer.separator)||r==i){if(a>0){var c=U.utils.clone(e)||{};c.position=[s,a],c.index=o.length,o.push(new U.Token(n.slice(s,r),c))}s=r+1}}return o},U.tokenizer.separator=/[\s\-]+/,
|
|
17
17
|
/*!
|
|
18
18
|
* lunr.Pipeline
|
|
19
19
|
* Copyright (C) 2020 Oliver Nightingale
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
U.Pipeline=function(){this._stack=[]},U.Pipeline.registeredFunctions=Object.create(null),U.Pipeline.registerFunction=function(t,e){e in this.registeredFunctions&&U.utils.warn("Overwriting existing registered function: "+e),t.label=e,U.Pipeline.registeredFunctions[t.label]=t},U.Pipeline.warnIfFunctionNotRegistered=function(t){t.label&&t.label in this.registeredFunctions||U.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},U.Pipeline.load=function(t){var e=new U.Pipeline;return t.forEach(function(t){var n=U.Pipeline.registeredFunctions[t];if(!n)throw new Error("Cannot load unregistered function: "+t);e.add(n)}),e},U.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(t){U.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},U.Pipeline.prototype.after=function(t,e){U.Pipeline.warnIfFunctionNotRegistered(e);var n=this._stack.indexOf(t);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,e)},U.Pipeline.prototype.before=function(t,e){U.Pipeline.warnIfFunctionNotRegistered(e);var n=this._stack.indexOf(t);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,e)},U.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},U.Pipeline.prototype.run=function(t){for(var e=this._stack.length,n=0;n<e;n++){for(var i=this._stack[n],o=[],r=0;r<t.length;r++){var s=i(t[r],r,t);if(null!=s&&""!==s)if(Array.isArray(s))for(var a=0;a<s.length;a++)o.push(s[a]);else o.push(s)}t=o}return t},U.Pipeline.prototype.runString=function(t,e){var n=new U.Token(t,e);return this.run([n]).map(function(t){return t.toString()})},U.Pipeline.prototype.reset=function(){this._stack=[]},U.Pipeline.prototype.toJSON=function(){return this._stack.map(function(t){return U.Pipeline.warnIfFunctionNotRegistered(t),t.label})},
|
|
22
22
|
/*!
|
|
23
23
|
* lunr.Vector
|
|
24
24
|
* Copyright (C) 2020 Oliver Nightingale
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
U.Vector=function(t){this._magnitude=0,this.elements=t||[]},U.Vector.prototype.positionForIndex=function(t){if(0==this.elements.length)return 0;for(var e=0,n=this.elements.length/2,i=n-e,o=Math.floor(i/2),r=this.elements[2*o];i>1&&(r<t&&(e=o),r>t&&(n=o),r!=t);)i=n-e,o=e+Math.floor(i/2),r=this.elements[2*o];return r==t||r>t?2*o:r<t?2*(o+1):void 0},U.Vector.prototype.insert=function(t,e){this.upsert(t,e,function(){throw"duplicate index"})},U.Vector.prototype.upsert=function(t,e,n){this._magnitude=0;var i=this.positionForIndex(t);this.elements[i]==t?this.elements[i+1]=n(this.elements[i+1],e):this.elements.splice(i,0,t,e)},U.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var t=0,e=this.elements.length,n=1;n<e;n+=2){var i=this.elements[n];t+=i*i}return this._magnitude=Math.sqrt(t)},U.Vector.prototype.dot=function(t){for(var e=0,n=this.elements,i=t.elements,o=n.length,r=i.length,s=0,a=0,c=0,l=0;c<o&&l<r;)(s=n[c])<(a=i[l])?c+=2:s>a?l+=2:s==a&&(e+=n[c+1]*i[l+1],c+=2,l+=2);return e},U.Vector.prototype.similarity=function(t){return this.dot(t)/this.magnitude()||0},U.Vector.prototype.toArray=function(){for(var t=new Array(this.elements.length/2),e=1,n=0;e<this.elements.length;e+=2,n++)t[n]=this.elements[e];return t},U.Vector.prototype.toJSON=function(){return this.elements},
|
|
27
27
|
/*!
|
|
28
28
|
* lunr.stemmer
|
|
29
29
|
* Copyright (C) 2020 Oliver Nightingale
|
|
30
30
|
* Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
U.stemmer=(t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},i={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},a="^("+(r="[^aeiou][^aeiouy]*")+")?"+(s=(o="[aeiouy]")+"[aeiou]*")+r+"("+s+")?$",c="^("+r+")?"+s+r+s+r,l="^("+r+")?"+o,d=new RegExp("^("+r+")?"+s+r),p=new RegExp(c),h=new RegExp(a),u=new RegExp(l),g=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,v=/^(.+?)(ed|ing)$/,b=/.$/,y=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),A=new RegExp("^"+r+o+"[^aeiouwxy]$"),D=/^(.+?[^aeiou])y$/,x=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,C=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,T=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,I=/^(.+?)(s|t)(ion)$/,S=/^(.+?)e$/,P=/ll$/,k=new RegExp("^"+r+o+"[^aeiouwxy]$"),L=function(e){var n,o,r,s,a,c,l;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),a=f,(s=g).test(e)?e=e.replace(s,"$1$2"):a.test(e)&&(e=e.replace(a,"$1$2")),a=v,(s=m).test(e)){var L=s.exec(e);(s=d).test(L[1])&&(s=b,e=e.replace(s,""))}else a.test(e)&&(n=(L=a.exec(e))[1],(a=u).test(n)&&(c=w,l=A,(a=y).test(e=n)?e+="e":c.test(e)?(s=b,e=e.replace(s,"")):l.test(e)&&(e+="e")));return(s=D).test(e)&&(e=(n=(L=s.exec(e))[1])+"i"),(s=x).test(e)&&(n=(L=s.exec(e))[1],o=L[2],(s=d).test(n)&&(e=n+t[o])),(s=C).test(e)&&(n=(L=s.exec(e))[1],o=L[2],(s=d).test(n)&&(e=n+i[o])),a=I,(s=T).test(e)?(n=(L=s.exec(e))[1],(s=p).test(n)&&(e=n)):a.test(e)&&(n=(L=a.exec(e))[1]+L[2],(a=p).test(n)&&(e=n)),(s=S).test(e)&&(n=(L=s.exec(e))[1],a=h,c=k,((s=p).test(n)||a.test(n)&&!c.test(n))&&(e=n)),a=p,(s=P).test(e)&&a.test(e)&&(s=b,e=e.replace(s,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(t){return t.update(L)}),U.Pipeline.registerFunction(U.stemmer,"stemmer"),
|
|
33
33
|
/*!
|
|
34
34
|
* lunr.stopWordFilter
|
|
35
35
|
* Copyright (C) 2020 Oliver Nightingale
|
|
36
36
|
*/
|
|
37
|
-
|
|
37
|
+
U.generateStopWordFilter=function(t){var e=t.reduce(function(t,e){return t[e]=e,t},{});return function(t){if(t&&e[t.toString()]!==t.toString())return t}},U.stopWordFilter=U.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),U.Pipeline.registerFunction(U.stopWordFilter,"stopWordFilter"),
|
|
38
38
|
/*!
|
|
39
39
|
* lunr.trimmer
|
|
40
40
|
* Copyright (C) 2020 Oliver Nightingale
|
|
41
41
|
*/
|
|
42
|
-
|
|
42
|
+
U.trimmer=function(t){return t.update(function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")})},U.Pipeline.registerFunction(U.trimmer,"trimmer"),
|
|
43
43
|
/*!
|
|
44
44
|
* lunr.TokenSet
|
|
45
45
|
* Copyright (C) 2020 Oliver Nightingale
|
|
46
46
|
*/
|
|
47
|
-
|
|
47
|
+
U.TokenSet=function(){this.final=!1,this.edges={},this.id=U.TokenSet._nextId,U.TokenSet._nextId+=1},U.TokenSet._nextId=1,U.TokenSet.fromArray=function(t){for(var e=new U.TokenSet.Builder,n=0,i=t.length;n<i;n++)e.insert(t[n]);return e.finish(),e.root},U.TokenSet.fromClause=function(t){return"editDistance"in t?U.TokenSet.fromFuzzyString(t.term,t.editDistance):U.TokenSet.fromString(t.term)},U.TokenSet.fromFuzzyString=function(t,e){for(var n=new U.TokenSet,i=[{node:n,editsRemaining:e,str:t}];i.length;){var o=i.pop();if(o.str.length>0){var r,s=o.str.charAt(0);s in o.node.edges?r=o.node.edges[s]:(r=new U.TokenSet,o.node.edges[s]=r),1==o.str.length&&(r.final=!0),i.push({node:r,editsRemaining:o.editsRemaining,str:o.str.slice(1)})}if(0!=o.editsRemaining){if("*"in o.node.edges)var a=o.node.edges["*"];else{a=new U.TokenSet;o.node.edges["*"]=a}if(0==o.str.length&&(a.final=!0),i.push({node:a,editsRemaining:o.editsRemaining-1,str:o.str}),o.str.length>1&&i.push({node:o.node,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)}),1==o.str.length&&(o.node.final=!0),o.str.length>=1){if("*"in o.node.edges)var c=o.node.edges["*"];else{c=new U.TokenSet;o.node.edges["*"]=c}1==o.str.length&&(c.final=!0),i.push({node:c,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)})}if(o.str.length>1){var l,d=o.str.charAt(0),p=o.str.charAt(1);p in o.node.edges?l=o.node.edges[p]:(l=new U.TokenSet,o.node.edges[p]=l),1==o.str.length&&(l.final=!0),i.push({node:l,editsRemaining:o.editsRemaining-1,str:d+o.str.slice(2)})}}}return n},U.TokenSet.fromString=function(t){for(var e=new U.TokenSet,n=e,i=0,o=t.length;i<o;i++){var r=t[i],s=i==o-1;if("*"==r)e.edges[r]=e,e.final=s;else{var a=new U.TokenSet;a.final=s,e.edges[r]=a,e=a}}return n},U.TokenSet.prototype.toArray=function(){for(var t=[],e=[{prefix:"",node:this}];e.length;){var n=e.pop(),i=Object.keys(n.node.edges),o=i.length;n.node.final&&(n.prefix.charAt(0),t.push(n.prefix));for(var r=0;r<o;r++){var s=i[r];e.push({prefix:n.prefix.concat(s),node:n.node.edges[s]})}}return t},U.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var t=this.final?"1":"0",e=Object.keys(this.edges).sort(),n=e.length,i=0;i<n;i++){var o=e[i];t=t+o+this.edges[o].id}return t},U.TokenSet.prototype.intersect=function(t){for(var e=new U.TokenSet,n=void 0,i=[{qNode:t,output:e,node:this}];i.length;){n=i.pop();for(var o=Object.keys(n.qNode.edges),r=o.length,s=Object.keys(n.node.edges),a=s.length,c=0;c<r;c++)for(var l=o[c],d=0;d<a;d++){var p=s[d];if(p==l||"*"==l){var h=n.node.edges[p],u=n.qNode.edges[l],g=h.final&&u.final,f=void 0;p in n.output.edges?(f=n.output.edges[p]).final=f.final||g:((f=new U.TokenSet).final=g,n.output.edges[p]=f),i.push({qNode:u,output:f,node:h})}}}return e},U.TokenSet.Builder=function(){this.previousWord="",this.root=new U.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},U.TokenSet.Builder.prototype.insert=function(t){var e,n=0;if(t<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<t.length&&i<this.previousWord.length&&t[i]==this.previousWord[i];i++)n++;this.minimize(n),e=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(i=n;i<t.length;i++){var o=new U.TokenSet,r=t[i];e.edges[r]=o,this.uncheckedNodes.push({parent:e,char:r,child:o}),e=o}e.final=!0,this.previousWord=t},U.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},U.TokenSet.Builder.prototype.minimize=function(t){for(var e=this.uncheckedNodes.length-1;e>=t;e--){var n=this.uncheckedNodes[e],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}},
|
|
48
48
|
/*!
|
|
49
49
|
* lunr.Index
|
|
50
50
|
* Copyright (C) 2020 Oliver Nightingale
|
|
51
51
|
*/
|
|
52
|
-
|
|
52
|
+
U.Index=function(t){this.invertedIndex=t.invertedIndex,this.fieldVectors=t.fieldVectors,this.tokenSet=t.tokenSet,this.fields=t.fields,this.pipeline=t.pipeline},U.Index.prototype.search=function(t){return this.query(function(e){new U.QueryParser(t,e).parse()})},U.Index.prototype.query=function(t){for(var e=new U.Query(this.fields),n=Object.create(null),i=Object.create(null),o=Object.create(null),r=Object.create(null),s=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new U.Vector;t.call(e,e);for(a=0;a<e.clauses.length;a++){var c=e.clauses[a],l=null,d=U.Set.empty;l=c.usePipeline?this.pipeline.runString(c.term,{fields:c.fields}):[c.term];for(var p=0;p<l.length;p++){var h=l[p];c.term=h;var u=U.TokenSet.fromClause(c),g=this.tokenSet.intersect(u).toArray();if(0===g.length&&c.presence===U.Query.presence.REQUIRED){for(var f=0;f<c.fields.length;f++){r[R=c.fields[f]]=U.Set.empty}break}for(var m=0;m<g.length;m++){var v=g[m],b=this.invertedIndex[v],y=b._index;for(f=0;f<c.fields.length;f++){var w=b[R=c.fields[f]],A=Object.keys(w),D=v+"/"+R,x=new U.Set(A);if(c.presence==U.Query.presence.REQUIRED&&(d=d.union(x),void 0===r[R]&&(r[R]=U.Set.complete)),c.presence!=U.Query.presence.PROHIBITED){if(i[R].upsert(y,c.boost,function(t,e){return t+e}),!o[D]){for(var C=0;C<A.length;C++){var T,I=A[C],S=new U.FieldRef(I,R),P=w[I];void 0===(T=n[S])?n[S]=new U.MatchData(v,R,P):T.add(v,R,P)}o[D]=!0}}else void 0===s[R]&&(s[R]=U.Set.empty),s[R]=s[R].union(x)}}}if(c.presence===U.Query.presence.REQUIRED)for(f=0;f<c.fields.length;f++){r[R=c.fields[f]]=r[R].intersect(d)}}var k=U.Set.complete,L=U.Set.empty;for(a=0;a<this.fields.length;a++){var R;r[R=this.fields[a]]&&(k=k.intersect(r[R])),s[R]&&(L=L.union(s[R]))}var V=Object.keys(n),E=[],H=Object.create(null);if(e.isNegated()){V=Object.keys(this.fieldVectors);for(a=0;a<V.length;a++){S=V[a];var N=U.FieldRef.fromString(S);n[S]=new U.MatchData}}for(a=0;a<V.length;a++){var M=(N=U.FieldRef.fromString(V[a])).docRef;if(k.contains(M)&&!L.contains(M)){var z,F=this.fieldVectors[N],B=i[N.fieldName].similarity(F);if(void 0!==(z=H[M]))z.score+=B,z.matchData.combine(n[N]);else{var _={ref:M,score:B,matchData:n[N]};H[M]=_,E.push(_)}}}return E.sort(function(t,e){return e.score-t.score})},U.Index.prototype.toJSON=function(){var t=Object.keys(this.invertedIndex).sort().map(function(t){return[t,this.invertedIndex[t]]},this),e=Object.keys(this.fieldVectors).map(function(t){return[t,this.fieldVectors[t].toJSON()]},this);return{version:U.version,fields:this.fields,fieldVectors:e,invertedIndex:t,pipeline:this.pipeline.toJSON()}},U.Index.load=function(t){var e={},n={},i=t.fieldVectors,o=Object.create(null),r=t.invertedIndex,s=new U.TokenSet.Builder,a=U.Pipeline.load(t.pipeline);t.version!=U.version&&U.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+U.version+"' does not match serialized index '"+t.version+"'");for(var c=0;c<i.length;c++){var l=(p=i[c])[0],d=p[1];n[l]=new U.Vector(d)}for(c=0;c<r.length;c++){var p,h=(p=r[c])[0],u=p[1];s.insert(h),o[h]=u}return s.finish(),e.fields=t.fields,e.fieldVectors=n,e.invertedIndex=o,e.tokenSet=s.root,e.pipeline=a,new U.Index(e)},
|
|
53
53
|
/*!
|
|
54
54
|
* lunr.Builder
|
|
55
55
|
* Copyright (C) 2020 Oliver Nightingale
|
|
56
56
|
*/
|
|
57
|
-
k.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=k.tokenizer,this.pipeline=new k.Pipeline,this.searchPipeline=new k.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},k.Builder.prototype.ref=function(t){this._ref=t},k.Builder.prototype.field=function(t,e){if(/\//.test(t))throw new RangeError("Field '"+t+"' contains illegal character '/'");this._fields[t]=e||{}},k.Builder.prototype.b=function(t){this._b=t<0?0:t>1?1:t},k.Builder.prototype.k1=function(t){this._k1=t},k.Builder.prototype.add=function(t,e){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=e||{},this.documentCount+=1;for(var o=0;o<n.length;o++){var s=n[o],r=this._fields[s].extractor,a=r?r(t):t[s],c=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(c),h=new k.FieldRef(i,s),d=Object.create(null);this.fieldTermFrequencies[h]=d,this.fieldLengths[h]=0,this.fieldLengths[h]+=l.length;for(var p=0;p<l.length;p++){var u=l[p];if(null==d[u]&&(d[u]=0),d[u]+=1,null==this.invertedIndex[u]){var f=Object.create(null);f._index=this.termIndex,this.termIndex+=1;for(var g=0;g<n.length;g++)f[n[g]]=Object.create(null);this.invertedIndex[u]=f}null==this.invertedIndex[u][s][i]&&(this.invertedIndex[u][s][i]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var v=this.metadataWhitelist[m],b=u.metadata[v];null==this.invertedIndex[u][s][i][v]&&(this.invertedIndex[u][s][i][v]=[]),this.invertedIndex[u][s][i][v].push(b)}}}},k.Builder.prototype.calculateAverageFieldLengths=function(){for(var t=Object.keys(this.fieldLengths),e=t.length,i={},n={},o=0;o<e;o++){var s=k.FieldRef.fromString(t[o]),r=s.fieldName;n[r]||(n[r]=0),n[r]+=1,i[r]||(i[r]=0),i[r]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(o=0;o<a.length;o++){var c=a[o];i[c]=i[c]/n[c]}this.averageFieldLength=i},k.Builder.prototype.createFieldVectors=function(){for(var t={},e=Object.keys(this.fieldTermFrequencies),i=e.length,n=Object.create(null),o=0;o<i;o++){for(var s=k.FieldRef.fromString(e[o]),r=s.fieldName,a=this.fieldLengths[s],c=new k.Vector,l=this.fieldTermFrequencies[s],h=Object.keys(l),d=h.length,p=this._fields[r].boost||1,u=this._documents[s.docRef].boost||1,f=0;f<d;f++){var g,m,v,b=h[f],D=l[b],y=this.invertedIndex[b]._index;void 0===n[b]?(g=k.idf(this.invertedIndex[b],this.documentCount),n[b]=g):g=n[b],m=g*((this._k1+1)*D)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[r]))+D),m*=p,m*=u,v=Math.round(1e3*m)/1e3,c.insert(y,v)}t[s]=c}this.fieldVectors=t},k.Builder.prototype.createTokenSet=function(){this.tokenSet=k.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},k.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new k.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},k.Builder.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},k.MatchData=function(t,e,i){for(var n=Object.create(null),o=Object.keys(i||{}),s=0;s<o.length;s++){var r=o[s];n[r]=i[r].slice()}this.metadata=Object.create(null),void 0!==t&&(this.metadata[t]=Object.create(null),this.metadata[t][e]=n)},k.MatchData.prototype.combine=function(t){for(var e=Object.keys(t.metadata),i=0;i<e.length;i++){var n=e[i],o=Object.keys(t.metadata[n]);null==this.metadata[n]&&(this.metadata[n]=Object.create(null));for(var s=0;s<o.length;s++){var r=o[s],a=Object.keys(t.metadata[n][r]);null==this.metadata[n][r]&&(this.metadata[n][r]=Object.create(null));for(var c=0;c<a.length;c++){var l=a[c];null==this.metadata[n][r][l]?this.metadata[n][r][l]=t.metadata[n][r][l]:this.metadata[n][r][l]=this.metadata[n][r][l].concat(t.metadata[n][r][l])}}}},k.MatchData.prototype.add=function(t,e,i){if(!(t in this.metadata))return this.metadata[t]=Object.create(null),void(this.metadata[t][e]=i);if(e in this.metadata[t])for(var n=Object.keys(i),o=0;o<n.length;o++){var s=n[o];s in this.metadata[t][e]?this.metadata[t][e][s]=this.metadata[t][e][s].concat(i[s]):this.metadata[t][e][s]=i[s]}else this.metadata[t][e]=i},k.Query=function(t){this.clauses=[],this.allFields=t},k.Query.wildcard=new String("*"),k.Query.wildcard.NONE=0,k.Query.wildcard.LEADING=1,k.Query.wildcard.TRAILING=2,k.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},k.Query.prototype.clause=function(t){return"fields"in t||(t.fields=this.allFields),"boost"in t||(t.boost=1),"usePipeline"in t||(t.usePipeline=!0),"wildcard"in t||(t.wildcard=k.Query.wildcard.NONE),t.wildcard&k.Query.wildcard.LEADING&&t.term.charAt(0)!=k.Query.wildcard&&(t.term="*"+t.term),t.wildcard&k.Query.wildcard.TRAILING&&t.term.slice(-1)!=k.Query.wildcard&&(t.term=t.term+"*"),"presence"in t||(t.presence=k.Query.presence.OPTIONAL),this.clauses.push(t),this},k.Query.prototype.isNegated=function(){for(var t=0;t<this.clauses.length;t++)if(this.clauses[t].presence!=k.Query.presence.PROHIBITED)return!1;return!0},k.Query.prototype.term=function(t,e){if(Array.isArray(t))return t.forEach(function(t){this.term(t,k.utils.clone(e))},this),this;var i=e||{};return i.term=t.toString(),this.clause(i),this},k.QueryParseError=function(t,e,i){this.name="QueryParseError",this.message=t,this.start=e,this.end=i},k.QueryParseError.prototype=new Error,k.QueryLexer=function(t){this.lexemes=[],this.str=t,this.length=t.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},k.QueryLexer.prototype.run=function(){for(var t=k.QueryLexer.lexText;t;)t=t(this)},k.QueryLexer.prototype.sliceString=function(){for(var t=[],e=this.start,i=this.pos,n=0;n<this.escapeCharPositions.length;n++)i=this.escapeCharPositions[n],t.push(this.str.slice(e,i)),e=i+1;return t.push(this.str.slice(e,this.pos)),this.escapeCharPositions.length=0,t.join("")},k.QueryLexer.prototype.emit=function(t){this.lexemes.push({type:t,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},k.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},k.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return k.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},k.QueryLexer.prototype.width=function(){return this.pos-this.start},k.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},k.QueryLexer.prototype.backup=function(){this.pos-=1},k.QueryLexer.prototype.acceptDigitRun=function(){var t,e;do{e=(t=this.next()).charCodeAt(0)}while(e>47&&e<58);t!=k.QueryLexer.EOS&&this.backup()},k.QueryLexer.prototype.more=function(){return this.pos<this.length},k.QueryLexer.EOS="EOS",k.QueryLexer.FIELD="FIELD",k.QueryLexer.TERM="TERM",k.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",k.QueryLexer.BOOST="BOOST",k.QueryLexer.PRESENCE="PRESENCE",k.QueryLexer.lexField=function(t){return t.backup(),t.emit(k.QueryLexer.FIELD),t.ignore(),k.QueryLexer.lexText},k.QueryLexer.lexTerm=function(t){if(t.width()>1&&(t.backup(),t.emit(k.QueryLexer.TERM)),t.ignore(),t.more())return k.QueryLexer.lexText},k.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(k.QueryLexer.EDIT_DISTANCE),k.QueryLexer.lexText},k.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(k.QueryLexer.BOOST),k.QueryLexer.lexText},k.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(k.QueryLexer.TERM)},k.QueryLexer.termSeparator=k.tokenizer.separator,k.QueryLexer.lexText=function(t){for(;;){var e=t.next();if(e==k.QueryLexer.EOS)return k.QueryLexer.lexEOS;if(92!=e.charCodeAt(0)){if(":"==e)return k.QueryLexer.lexField;if("~"==e)return t.backup(),t.width()>0&&t.emit(k.QueryLexer.TERM),k.QueryLexer.lexEditDistance;if("^"==e)return t.backup(),t.width()>0&&t.emit(k.QueryLexer.TERM),k.QueryLexer.lexBoost;if("+"==e&&1===t.width())return t.emit(k.QueryLexer.PRESENCE),k.QueryLexer.lexText;if("-"==e&&1===t.width())return t.emit(k.QueryLexer.PRESENCE),k.QueryLexer.lexText;if(e.match(k.QueryLexer.termSeparator))return k.QueryLexer.lexTerm}else t.escapeCharacter()}},k.QueryParser=function(t,e){this.lexer=new k.QueryLexer(t),this.query=e,this.currentClause={},this.lexemeIdx=0},k.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=k.QueryParser.parseClause;t;)t=t(this);return this.query},k.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},k.QueryParser.prototype.consumeLexeme=function(){var t=this.peekLexeme();return this.lexemeIdx+=1,t},k.QueryParser.prototype.nextClause=function(){var t=this.currentClause;this.query.clause(t),this.currentClause={}},k.QueryParser.parseClause=function(t){var e=t.peekLexeme();if(null!=e)switch(e.type){case k.QueryLexer.PRESENCE:return k.QueryParser.parsePresence;case k.QueryLexer.FIELD:return k.QueryParser.parseField;case k.QueryLexer.TERM:return k.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+e.type;throw e.str.length>=1&&(i+=" with value '"+e.str+"'"),new k.QueryParseError(i,e.start,e.end)}},k.QueryParser.parsePresence=function(t){var e=t.consumeLexeme();if(null!=e){switch(e.str){case"-":t.currentClause.presence=k.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=k.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+e.str+"'";throw new k.QueryParseError(i,e.start,e.end)}var n=t.peekLexeme();if(null==n){i="expecting term or field, found nothing";throw new k.QueryParseError(i,e.start,e.end)}switch(n.type){case k.QueryLexer.FIELD:return k.QueryParser.parseField;case k.QueryLexer.TERM:return k.QueryParser.parseTerm;default:i="expecting term or field, found '"+n.type+"'";throw new k.QueryParseError(i,n.start,n.end)}}},k.QueryParser.parseField=function(t){var e=t.consumeLexeme();if(null!=e){if(-1==t.query.allFields.indexOf(e.str)){var i=t.query.allFields.map(function(t){return"'"+t+"'"}).join(", "),n="unrecognised field '"+e.str+"', possible fields: "+i;throw new k.QueryParseError(n,e.start,e.end)}t.currentClause.fields=[e.str];var o=t.peekLexeme();if(null==o){n="expecting term, found nothing";throw new k.QueryParseError(n,e.start,e.end)}if(o.type===k.QueryLexer.TERM)return k.QueryParser.parseTerm;n="expecting term, found '"+o.type+"'";throw new k.QueryParseError(n,o.start,o.end)}},k.QueryParser.parseTerm=function(t){var e=t.consumeLexeme();if(null!=e){t.currentClause.term=e.str.toLowerCase(),-1!=e.str.indexOf("*")&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(null!=i)switch(i.type){case k.QueryLexer.TERM:return t.nextClause(),k.QueryParser.parseTerm;case k.QueryLexer.FIELD:return t.nextClause(),k.QueryParser.parseField;case k.QueryLexer.EDIT_DISTANCE:return k.QueryParser.parseEditDistance;case k.QueryLexer.BOOST:return k.QueryParser.parseBoost;case k.QueryLexer.PRESENCE:return t.nextClause(),k.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new k.QueryParseError(n,i.start,i.end)}else t.nextClause()}},k.QueryParser.parseEditDistance=function(t){var e=t.consumeLexeme();if(null!=e){var i=parseInt(e.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new k.QueryParseError(n,e.start,e.end)}t.currentClause.editDistance=i;var o=t.peekLexeme();if(null!=o)switch(o.type){case k.QueryLexer.TERM:return t.nextClause(),k.QueryParser.parseTerm;case k.QueryLexer.FIELD:return t.nextClause(),k.QueryParser.parseField;case k.QueryLexer.EDIT_DISTANCE:return k.QueryParser.parseEditDistance;case k.QueryLexer.BOOST:return k.QueryParser.parseBoost;case k.QueryLexer.PRESENCE:return t.nextClause(),k.QueryParser.parsePresence;default:n="Unexpected lexeme type '"+o.type+"'";throw new k.QueryParseError(n,o.start,o.end)}else t.nextClause()}},k.QueryParser.parseBoost=function(t){var e=t.consumeLexeme();if(null!=e){var i=parseInt(e.str,10);if(isNaN(i)){var n="boost must be numeric";throw new k.QueryParseError(n,e.start,e.end)}t.currentClause.boost=i;var o=t.peekLexeme();if(null!=o)switch(o.type){case k.QueryLexer.TERM:return t.nextClause(),k.QueryParser.parseTerm;case k.QueryLexer.FIELD:return t.nextClause(),k.QueryParser.parseField;case k.QueryLexer.EDIT_DISTANCE:return k.QueryParser.parseEditDistance;case k.QueryLexer.BOOST:return k.QueryParser.parseBoost;case k.QueryLexer.PRESENCE:return t.nextClause(),k.QueryParser.parsePresence;default:n="Unexpected lexeme type '"+o.type+"'";throw new k.QueryParseError(n,o.start,o.end)}else t.nextClause()}},V=this,U=function(){return k},"object"==typeof i?e.exports=U():V.lunr=U()}()},{}],4:[function(t,e,i){e.exports={name:"pict-application",version:"1.0.33",description:"Application base class for a pict view-based application",main:"source/Pict-Application.js",scripts:{test:"npx quack test",start:"node source/Pict-Application.js",coverage:"npx quack coverage",build:"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-application-image:local","docker-dev-run":'docker run -it -d --name pict-application-dev -p 30001:8080 -p 38086:8086 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-application" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-application-image:local',"docker-dev-shell":"docker exec -it pict-application-dev /bin/bash",tests:"npx quack test -g",lint:"eslint source/**",types:"tsc -p ."},types:"types/source/Pict-Application.d.ts",repository:{type:"git",url:"git+https://github.com/stevenvelozo/pict-application.git"},author:"steven velozo <steven@velozo.com>",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/pict-application/issues"},homepage:"https://github.com/stevenvelozo/pict-application#readme",devDependencies:{"@eslint/js":"^9.28.0","browser-env":"^3.3.0",eslint:"^9.28.0",pict:"^1.0.348","pict-provider":"^1.0.10","pict-view":"^1.0.66",quackage:"^1.0.58",typescript:"^5.9.3"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{"fable-serviceproviderbase":"^3.0.19"}}},{}],5:[function(t,e,i){const n=t("fable-serviceproviderbase"),o=t("../package.json"),s={Name:"DefaultPictApplication",MainViewportViewIdentifier:"Default-View",MainViewportRenderableHash:!1,MainViewportDestinationAddress:!1,MainViewportDefaultDataAddress:!1,AutoSolveAfterInitialize:!0,AutoRenderMainViewportViewAfterInitialize:!0,AutoRenderViewsAfterInitialize:!1,AutoLoginAfterInitialize:!1,AutoLoadDataAfterLogin:!1,ConfigurationOnlyViews:[],Manifests:{},IdentifierAddressPrefix:"PICT-"};e.exports=class extends n{constructor(t,e,i){let n="object"==typeof t.settings.PictApplicationConfiguration?t.settings.PictApplicationConfiguration:{};super(t,Object.assign({},JSON.parse(JSON.stringify(s)),n,e),i),this.options,this.log,this.fable,this.UUID,this.Hash,this.servicesMap,this.serviceType="PictApplication",this._Package=o,this.pict=this.fable,this.AppData=this.fable.AppData,this.Bundle=this.fable.Bundle,this.initializeTimestamp,this.lastSolvedTimestamp,this.lastLoginTimestamp,this.lastMarshalFromViewsTimestamp,this.lastMarshalToViewsTimestamp,this.lastAutoRenderTimestamp,this.lastLoadDataTimestamp;let r=Object.keys(this.options.Manifests);if(r.length>0)for(let t=0;t<r.length;t++){let e=r[t];this.fable.instantiateServiceProvider("Manifest",this.options.Manifests[e],e)}}onPreSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onPreSolve:")),!0}onPreSolveAsync(t){return this.onPreSolve(),t()}onBeforeSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeSolve:")),!0}onBeforeSolveAsync(t){return this.onBeforeSolve(),t()}onSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onSolve:")),!0}onSolveAsync(t){return this.onSolve(),t()}solve(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing solve() function..."));let t=Object.keys(this.pict.providers),e=[];for(let i=0;i<t.length;i++){let n=this.pict.providers[t[i]];n.options.AutoSolveWithApp&&e.push(n)}e.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<e.length;t++)e[t].solve(e[t]);this.onBeforeSolve();let i=Object.keys(this.pict.views),n=[];for(let t=0;t<i.length;t++){let e=this.pict.views[i[t]];e.options.AutoInitialize&&n.push(e)}n.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<n.length;t++)n[t].solve();return this.onSolve(),this.onAfterSolve(),this.lastSolvedTimestamp=this.fable.log.getTimeStamp(),!0}solveAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");e.anticipate(this.onBeforeSolveAsync.bind(this));let i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync Auto Callback Error: ").concat(t),t)});let n=Object.keys(this.pict.providers),o=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoSolveWithApp&&o.push(e)}o.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<o.length;t++)e.anticipate(o[t].solveAsync.bind(o[t]));let s=Object.keys(this.pict.views),r=[];for(let t=0;t<s.length;t++){let e=this.pict.views[s[t]];e.options.AutoSolveWithApp&&r.push(e)}r.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<r.length;t++)e.anticipate(r[t].solveAsync.bind(r[t]));e.anticipate(this.onSolveAsync.bind(this)),e.anticipate(this.onAfterSolveAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync() complete.")),this.lastSolvedTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterSolve:")),!0}onAfterSolveAsync(t){return this.onAfterSolve(),t()}onBeforeLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeLoginAsync:")),t()}onLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onLoginAsync:")),t()}loginAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let i=t;"function"!=typeof i&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeLoginAsync.bind(this)),e.anticipate(this.onLoginAsync.bind(this)),e.anticipate(this.onAfterLoginAsync.bind(this)),this.options.AutoLoadDataAfterLogin&&e.anticipate(t=>{if(!this.isLoggedIn())return t();this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto loading data after login...")),this.loadDataAsync(e=>{t(e)})}),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync() complete.")),this.lastLoginTimestamp=this.fable.log.getTimeStamp(),i(t)))}isLoggedIn(){return!0}onAfterLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterLoginAsync:")),t()}onBeforeLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeLoadDataAsync:")),t()}onLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onLoadDataAsync:")),t()}loadDataAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let i=t;"function"!=typeof i&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeLoadDataAsync.bind(this));let n=Object.keys(this.pict.providers),o=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoLoadDataWithApp&&o.push(e)}o.sort((t,e)=>t.options.AutoLoadDataOrdinal-e.options.AutoLoadDataOrdinal);for(const t of o)e.anticipate(t.onBeforeLoadDataAsync.bind(t));e.anticipate(this.onLoadDataAsync.bind(this));for(const t of o)e.anticipate(t.onLoadDataAsync.bind(t));e.anticipate(this.onAfterLoadDataAsync.bind(this));for(const t of o)e.anticipate(t.onAfterLoadDataAsync.bind(t));e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync() complete.")),this.lastLoadDataTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterLoadDataAsync:")),t()}onBeforeSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeSaveDataAsync:")),t()}onSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onSaveDataAsync:")),t()}saveDataAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let i=t;"function"!=typeof i&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeSaveDataAsync.bind(this));let n=Object.keys(this.pict.providers),o=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoSaveDataWithApp&&o.push(e)}o.sort((t,e)=>t.options.AutoSaveDataOrdinal-e.options.AutoSaveDataOrdinal);for(const t of o)e.anticipate(t.onBeforeSaveDataAsync.bind(t));e.anticipate(this.onSaveDataAsync.bind(this));for(const t of o)e.anticipate(t.onSaveDataAsync.bind(t));e.anticipate(this.onAfterSaveDataAsync.bind(this));for(const t of o)e.anticipate(t.onAfterSaveDataAsync.bind(t));e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync() complete.")),this.lastSaveDataTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterSaveDataAsync:")),t()}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialize:")),this.initializeTimestamp)return this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialize called but initialization is already completed. Aborting.")),!1;{if(this.onBeforeInitialize(),"ConfigurationOnlyViews"in this.options)for(let t=0;t<this.options.ConfigurationOnlyViews.length;t++){let e=void 0===this.options.ConfigurationOnlyViews[t].ViewIdentifier?"AutoView-".concat(this.fable.getUUID()):this.options.ConfigurationOnlyViews[t].ViewIdentifier;this.log.info("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," adding configuration only view: ").concat(e)),this.pict.addView(e,this.options.ConfigurationOnlyViews[t])}this.onInitialize();let t=Object.keys(this.pict.providers),e=[];for(let i=0;i<t.length;i++){let n=this.pict.providers[t[i]];n.options.AutoInitialize&&e.push(n)}e.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<e.length;t++)e[t].initialize();let i=Object.keys(this.pict.views),n=[];for(let t=0;t<i.length;t++){let e=this.pict.views[i[t]];e.options.AutoInitialize&&n.push(e)}n.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<n.length;t++)n[t].initialize();return this.onAfterInitialize(),this.options.AutoSolveAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto solving after initialization...")),this.solve()),this.options.AutoRenderMainViewportViewAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto rendering after initialization...")),this.render()),this.initializeTimestamp=this.fable.log.getTimeStamp(),this.onCompletionOfInitialize(),!0}}initializeAsync(t){this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync:"));let e="function"==typeof t&&t;if(e||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),e=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync Auto Callback Error: ").concat(t),t)}),this.initializeTimestamp)return this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," async initialize called but initialization is already completed. Aborting.")),this.onCompletionOfInitializeAsync(e);{let t=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");if(this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning initialization...")),"ConfigurationOnlyViews"in this.options)for(let t=0;t<this.options.ConfigurationOnlyViews.length;t++){let e=void 0===this.options.ConfigurationOnlyViews[t].ViewIdentifier?"AutoView-".concat(this.fable.getUUID()):this.options.ConfigurationOnlyViews[t].ViewIdentifier;this.log.info("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," adding configuration only view: ").concat(e)),this.pict.addView(e,this.options.ConfigurationOnlyViews[t])}t.anticipate(this.onBeforeInitializeAsync.bind(this)),t.anticipate(this.onInitializeAsync.bind(this));let i=Object.keys(this.pict.providers),n=[];for(let t=0;t<i.length;t++){let e=this.pict.providers[i[t]];e.options.AutoInitialize&&n.push(e)}n.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let e=0;e<n.length;e++)t.anticipate(n[e].initializeAsync.bind(n[e]));let o=Object.keys(this.pict.views),s=[];for(let t=0;t<o.length;t++){let e=this.pict.views[o[t]];e.options.AutoInitialize&&s.push(e)}s.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let e=0;e<s.length;e++){let i=s[e];t.anticipate(i.initializeAsync.bind(i))}t.anticipate(this.onAfterInitializeAsync.bind(this)),this.options.AutoLoginAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto login (asynchronously) after initialization...")),t.anticipate(this.loginAsync.bind(this))),this.options.AutoSolveAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto solving (asynchronously) after initialization...")),t.anticipate(this.solveAsync.bind(this))),this.options.AutoRenderMainViewportViewAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto rendering (asynchronously) after initialization...")),t.anticipate(this.renderMainViewportAsync.bind(this))),t.wait(t=>(t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync Error: ").concat(t.message||t),{stack:t.stack}),this.initializeTimestamp=this.fable.log.getTimeStamp(),this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialization complete.")),e()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onCompletionOfInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onCompletionOfInitialize:")),!0}onCompletionOfInitializeAsync(t){return this.onCompletionOfInitialize(),t()}onBeforeMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeMarshalFromViews:")),!0}onBeforeMarshalFromViewsAsync(t){return this.onBeforeMarshalFromViews(),t()}onMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onMarshalFromViews:")),!0}onMarshalFromViewsAsync(t){return this.onMarshalFromViews(),t()}marshalFromViews(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing marshalFromViews() function...")),this.onBeforeMarshalFromViews();let t=Object.keys(this.pict.views),e=[];for(let i=0;i<t.length;i++){let n=this.pict.views[t[i]];e.push(n)}for(let t=0;t<e.length;t++)e[t].marshalFromView();return this.onMarshalFromViews(),this.onAfterMarshalFromViews(),this.lastMarshalFromViewsTimestamp=this.fable.log.getTimeStamp(),!0}marshalFromViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalFromViewsAsync.bind(this));let n=Object.keys(this.pict.views),o=[];for(let t=0;t<n.length;t++){let e=this.pict.views[n[t]];o.push(e)}for(let t=0;t<o.length;t++)e.anticipate(o[t].marshalFromViewAsync.bind(o[t]));e.anticipate(this.onMarshalFromViewsAsync.bind(this)),e.anticipate(this.onAfterMarshalFromViewsAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync() complete.")),this.lastMarshalFromViewsTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterMarshalFromViews:")),!0}onAfterMarshalFromViewsAsync(t){return this.onAfterMarshalFromViews(),t()}onBeforeMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeMarshalToViews:")),!0}onBeforeMarshalToViewsAsync(t){return this.onBeforeMarshalToViews(),t()}onMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onMarshalToViews:")),!0}onMarshalToViewsAsync(t){return this.onMarshalToViews(),t()}marshalToViews(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing marshalToViews() function...")),this.onBeforeMarshalToViews();let t=Object.keys(this.pict.views),e=[];for(let i=0;i<t.length;i++){let n=this.pict.views[t[i]];e.push(n)}for(let t=0;t<e.length;t++)e[t].marshalToView();return this.onMarshalToViews(),this.onAfterMarshalToViews(),this.lastMarshalToViewsTimestamp=this.fable.log.getTimeStamp(),!0}marshalToViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalToViewsAsync.bind(this));let n=Object.keys(this.pict.views),o=[];for(let t=0;t<n.length;t++){let e=this.pict.views[n[t]];o.push(e)}for(let t=0;t<o.length;t++)e.anticipate(o[t].marshalToViewAsync.bind(o[t]));e.anticipate(this.onMarshalToViewsAsync.bind(this)),e.anticipate(this.onAfterMarshalToViewsAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync() complete.")),this.lastMarshalToViewsTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterMarshalToViews:")),!0}onAfterMarshalToViewsAsync(t){return this.onAfterMarshalToViews(),t()}onBeforeRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeRender:")),!0}onBeforeRenderAsync(t){return this.onBeforeRender(),t()}render(t,e,i,n){let o="string"!=typeof t?this.options.MainViewportViewIdentifier:t,s="string"!=typeof e?this.options.MainViewportRenderableHash:e,r="string"!=typeof i?this.options.MainViewportDestinationAddress:i,a="string"!=typeof n?this.options.MainViewportDefaultDataAddress:n;this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," VIEW Renderable[").concat(s,"] Destination[").concat(r,"] TemplateDataAddress[").concat(a,"] render:")),this.onBeforeRender();let c="string"==typeof o&&this.servicesMap.PictView[o];return c?(this.onRender(),c.render(s,r,a),this.onAfterRender(),!0):(this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," could not render from View ").concat(o," because it is not a valid view.")),!1)}onRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onRender:")),!0}onRenderAsync(t){return this.onRender(),t()}renderAsync(t,e,i,n,o){let s="string"!=typeof t?this.options.MainViewportViewIdentifier:t,r="string"!=typeof e?this.options.MainViewportRenderableHash:e,a="string"!=typeof i?this.options.MainViewportDestinationAddress:i,c="string"!=typeof n?this.options.MainViewportDefaultDataAddress:n,l="function"==typeof o?o:"function"==typeof n?n:"function"==typeof i?i:"function"==typeof e?e:"function"==typeof t&&t;l||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),l=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync Auto Callback Error: ").concat(t),t)}),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," VIEW Renderable[").concat(r,"] Destination[").concat(a,"] TemplateDataAddress[").concat(c,"] renderAsync:"));let h=this.fable.newAnticipate();h.anticipate(this.onBeforeRenderAsync.bind(this));let d="string"==typeof s&&this.servicesMap.PictView[s];if(!d){let t="PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," could not asynchronously render from View ").concat(s," because it is not a valid view.");return this.pict.LogNoisiness>3&&this.log.error(t),l(new Error(t))}return h.anticipate(this.onRenderAsync.bind(this)),h.anticipate(t=>{d.renderAsync.call(d,r,a,c,t)}),h.anticipate(this.onAfterRenderAsync.bind(this)),h.wait(l)}onAfterRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterRender:")),!0}onAfterRenderAsync(t){return this.onAfterRender(),t()}renderMainViewport(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderMainViewport:")),this.render()}renderMainViewportAsync(t){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderMainViewportAsync:")),this.renderAsync(t)}renderAutoViews(){this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning renderAutoViews..."));let t=Object.keys(this.pict.views);t.sort((t,e)=>this.pict.views[t].options.AutoRenderOrdinal-this.pict.views[e].options.AutoRenderOrdinal);for(let e=0;e<t.length;e++){let i=this.pict.views[t[e]];i.options.AutoRender&&i.render()}this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync complete."))}renderAutoViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync Auto Callback Error: ").concat(t),t)}),this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning renderAutoViewsAsync..."));let n=Object.keys(this.pict.views);n.sort((t,e)=>this.pict.views[t].options.AutoRenderOrdinal-this.pict.views[e].options.AutoRenderOrdinal);for(let t=0;t<n.length;t++){let i=this.pict.views[n[t]];i.options.AutoRender&&e.anticipate(i.renderAsync.bind(i))}e.wait(t=>(this.lastAutoRenderTimestamp=this.fable.log.getTimeStamp(),this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync complete.")),i(t)))}get isPictApplication(){return!0}}},{"../package.json":4,"fable-serviceproviderbase":2}],6:[function(t,e,i){e.exports={name:"pict-provider",version:"1.0.12",description:"Pict Provider Base Class",main:"source/Pict-Provider.js",scripts:{start:"node source/Pict-Provider.js",test:"npx quack test",tests:"npx quack test -g",coverage:"npx quack coverage",build:"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-provider-image:local","docker-dev-run":'docker run -it -d --name pict-provider-dev -p 24125:8080 -p 30027:8086 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-provider" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-provider-image:local',"docker-dev-shell":"docker exec -it pict-provider-dev /bin/bash",lint:"eslint source/**",types:"tsc -p ."},types:"types/source/Pict-Provider.d.ts",repository:{type:"git",url:"git+https://github.com/stevenvelozo/pict-provider.git"},author:"steven velozo <steven@velozo.com>",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/pict-provider/issues"},homepage:"https://github.com/stevenvelozo/pict-provider#readme",devDependencies:{"@eslint/js":"^9.39.1",eslint:"^9.39.1",pict:"^1.0.351",quackage:"^1.0.58",typescript:"^5.9.3"},dependencies:{"fable-serviceproviderbase":"^3.0.19"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]}}},{}],7:[function(t,e,i){const n=t("fable-serviceproviderbase"),o=t("../package.json"),s={ProviderIdentifier:!1,AutoInitialize:!0,AutoInitializeOrdinal:0,AutoLoadDataWithApp:!0,AutoLoadDataOrdinal:0,AutoSolveWithApp:!0,AutoSolveOrdinal:0,Manifests:{},Templates:[]};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(s)),e),i),this.fable,this.pict,this.log,this.options,this.UUID,this.Hash,this.options.ProviderIdentifier||(this.options.ProviderIdentifier="AutoProviderID-".concat(this.fable.getUUID())),this.serviceType="PictProvider",this._Package=o,this.pict=this.fable,this.AppData=this.pict.AppData,this.Bundle=this.pict.Bundle,this.initializeTimestamp=!1,this.lastSolvedTimestamp=!1;for(let t=0;t<this.options.Templates.length;t++){let e=this.options.Templates[t];e.hasOwnProperty("Postfix")&&e.hasOwnProperty("Template")?(e.Source||(e.Source="PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," options object.")),this.pict.TemplateProvider.addDefaultTemplate(e.Prefix,e.Postfix,e.Template,e.Source)):this.log.error("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," could not load Default Template ").concat(t," in the options array."),e)}}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow PROVIDER [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialize:")),this.initializeTimestamp?(this.log.warn("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialize called but initialization is already completed. Aborting.")),!1):(this.onBeforeInitialize(),this.onInitialize(),this.onAfterInitialize(),this.initializeTimestamp=this.pict.log.getTimeStamp(),!0)}initializeAsync(t){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow PROVIDER [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initializeAsync:")),this.initializeTimestamp)return this.log.warn("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," async initialize called but initialization is already completed. Aborting.")),t();{let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate");this.pict.LogNoisiness>0&&this.log.info("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," beginning initialization...")),e.anticipate(this.onBeforeInitializeAsync.bind(this)),e.anticipate(this.onInitializeAsync.bind(this)),e.anticipate(this.onAfterInitializeAsync.bind(this)),e.wait(e=>(this.initializeTimestamp=this.pict.log.getTimeStamp(),e?this.log.error("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialization failed: ").concat(e.message||e),{Stack:e.stack}):this.pict.LogNoisiness>0&&this.log.info("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialization complete.")),t()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onPreRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onPreRender:")),!0}onPreRenderAsync(t){return this.onPreRender(),t()}render(){return this.onPreRender()}renderAsync(t){return this.onPreRender(),t()}onPreSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onPreSolve:")),!0}onPreSolveAsync(t){return this.onPreSolve(),t()}solve(){return this.onPreSolve()}solveAsync(t){return this.onPreSolve(),t()}onBeforeLoadDataAsync(t){return t()}onLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onLoadDataAsync:")),t()}onAfterLoadDataAsync(t){return t()}onBeforeSaveDataAsync(t){return t()}onSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onSaveDataAsync:")),t()}onAfterSaveDataAsync(t){return t()}}},{"../package.json":6,"fable-serviceproviderbase":2}],8:[function(t,e,i){e.exports=t("./views/Pict-View-Content.js"),e.exports.PictContentProvider=t("./providers/Pict-Provider-Content.js")},{"./providers/Pict-Provider-Content.js":9,"./views/Pict-View-Content.js":10}],9:[function(t,e,i){const n=t("pict-provider");e.exports=class extends n{constructor(t,e,i){super(t,e,i)}parseMarkdown(t,e){if(!t)return"";let i=t.split("\n"),n=[],o=!1,s=0,r="",a=[],c=!1,l="",h=!1,d=[],p=!1,u=[],f=[],g=()=>{f.length>0&&(n.push("<p>"+f.map(t=>this.parseInline(t,e)).join(" ")+"</p>"),f=[])};for(let t=0;t<i.length;t++){let m=i[t];if(!o&&m.trim().match(/^\$\$/)){p?(n.push('<div class="pict-content-katex-display">'+u.join("\n")+"</div>"),p=!1,u=[]):(g(),c&&(n.push("ul"===l?"</ul>":"</ol>"),c=!1),h&&(n.push("<blockquote>"+this.parseMarkdown(d.join("\n"),e)+"</blockquote>"),h=!1,d=[]),p=!0);continue}if(p){u.push(m);continue}let v=m.match(/^(`{3,})/);if(v){let t=v[1].length;if(o){if(t>=s&&m.trim()===v[1]){"mermaid"===r?n.push('<pre class="mermaid">'+a.join("\n")+"</pre>"):n.push('<pre><code class="language-'+this.escapeHTML(r)+'">'+this.escapeHTML(a.join("\n"))+"</code></pre>"),o=!1,s=0,r="",a=[];continue}a.push(m);continue}g(),c&&(n.push("ul"===l?"</ul>":"</ol>"),c=!1),h&&(n.push("<blockquote>"+this.parseMarkdown(d.join("\n"),e)+"</blockquote>"),h=!1,d=[]),s=t,r=m.replace(/^`{3,}/,"").trim(),o=!0;continue}if(o){a.push(m);continue}if(m.match(/^>\s?/)){h||(g(),c&&(n.push("ul"===l?"</ul>":"</ol>"),c=!1),h=!0,d=[]),d.push(m.replace(/^>\s?/,""));continue}if(h&&(n.push("<blockquote>"+this.parseMarkdown(d.join("\n"),e)+"</blockquote>"),h=!1,d=[]),m.match(/^(-{3,}|\*{3,}|_{3,})\s*$/)){g(),c&&(n.push("ul"===l?"</ul>":"</ol>"),c=!1),n.push("<hr>");continue}let b=m.match(/^(#{1,6})\s+(.+)/);if(b){g(),c&&(n.push("ul"===l?"</ul>":"</ol>"),c=!1);let t=b[1].length,i=this.parseInline(b[2],e),o=b[2].toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-");n.push("<h"+t+' id="'+o+'">'+i+"</h"+t+">");continue}let D=m.match(/^(\s*)[-*+]\s+(.*)/);if(D){g(),c&&"ul"===l||(c&&n.push("ul"===l?"</ul>":"</ol>"),n.push("<ul>"),c=!0,l="ul"),n.push("<li>"+this.parseInline(D[2],e)+"</li>");continue}let y=m.match(/^(\s*)\d+\.\s+(.*)/);if(y)g(),c&&"ol"===l||(c&&n.push("ul"===l?"</ul>":"</ol>"),n.push("<ol>"),c=!0,l="ol"),n.push("<li>"+this.parseInline(y[2],e)+"</li>");else if(c&&""!==m.trim()&&(n.push("ul"===l?"</ul>":"</ol>"),c=!1),""!==m.trim()){if(m.match(/^\|/)&&t+1<i.length&&i[t+1].match(/^\|[\s-:|]+\|/)){g(),c&&(n.push("ul"===l?"</ul>":"</ol>"),c=!1);let o="<table>",s=m.split("|").filter(t=>""!==t.trim());o+="<thead><tr>";for(let t=0;t<s.length;t++)o+="<th>"+this.parseInline(s[t].trim(),e)+"</th>";for(o+="</tr></thead>",t++,o+="<tbody>";t+1<i.length&&i[t+1].match(/^\|/);){t++;let n=i[t].split("|").filter(t=>""!==t.trim());o+="<tr>";for(let t=0;t<n.length;t++)o+="<td>"+this.parseInline(n[t].trim(),e)+"</td>";o+="</tr>"}o+="</tbody></table>",n.push(o);continue}f.push(m)}else g()}return g(),c&&n.push("ul"===l?"</ul>":"</ol>"),h&&n.push("<blockquote>"+this.parseMarkdown(d.join("\n"),e)+"</blockquote>"),o&&n.push("<pre><code>"+this.escapeHTML(a.join("\n"))+"</code></pre>"),n.join("\n")}parseInline(t,e){if(!t)return"";let i=t,n=[];return i=i.replace(/`([^`]+)`/g,(t,e)=>{let i=n.length;return n.push("<code>"+e+"</code>"),"\0CODEINLINE"+i+"\0"}),i=i.replace(/\$([^\$\s][^\$]*?[^\$\s])\$/g,'<span class="pict-content-katex-inline">$1</span>'),i=i.replace(/\$([^\$\s])\$/g,'<span class="pict-content-katex-inline">$1</span>'),i=i.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,'<img src="$2" alt="$1">'),i=i.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(t,i,n)=>{if("function"==typeof e){let t=e(n,i);if(t){let e=t.target?' target="'+t.target+'"':"",n=t.rel?' rel="'+t.rel+'"':"";return'<a href="'+t.href+'"'+e+n+">"+i+"</a>"}}return n.match(/^https?:\/\//)?'<a href="'+n+'" target="_blank" rel="noopener">'+i+"</a>":'<a href="'+n+'">'+i+"</a>"}),i=i.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),i=i.replace(/__([^_]+)__/g,"<strong>$1</strong>"),i=i.replace(/\*([^*]+)\*/g,"<em>$1</em>"),i=i.replace(/_([^_]+)_/g,"<em>$1</em>"),i=i.replace(/\x00CODEINLINE(\d+)\x00/g,(t,e)=>n[parseInt(e)]),i}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}},e.exports.default_configuration={ProviderIdentifier:"Pict-Content",AutoInitialize:!0,AutoInitializeOrdinal:0}},{"pict-provider":7}],10:[function(t,e,i){const n=t("pict-view");e.exports=class extends n{constructor(t,e,i){super(t,e,i)}displayContent(t,e){let i=e||"Pict-Content-Body";this.pict.ContentAssignment.assignContent("#"+i,t);let n=document.getElementById(i);n&&n.parentElement&&(n.parentElement.scrollTop=0),this.renderMermaidDiagrams(i),this.renderKaTeXEquations(i)}renderMermaidDiagrams(t){if("undefined"==typeof mermaid)return;let e=t||"Pict-Content-Body",i=document.getElementById(e);if(!i)return;let n=i.querySelectorAll("pre.mermaid");if(!(n.length<1))try{mermaid.run({nodes:n})}catch(t){this.log.error("Mermaid rendering error: "+t.message)}}renderKaTeXEquations(t){if("undefined"==typeof katex)return;let e=t||"Pict-Content-Body",i=document.getElementById(e);if(!i)return;let n=i.querySelectorAll(".pict-content-katex-inline");for(let t=0;t<n.length;t++)try{katex.render(n[t].textContent,n[t],{throwOnError:!1,displayMode:!1})}catch(t){this.log.warn("KaTeX inline error: "+t.message)}let o=i.querySelectorAll(".pict-content-katex-display");for(let t=0;t<o.length;t++)try{katex.render(o[t].textContent,o[t],{throwOnError:!1,displayMode:!0})}catch(t){this.log.warn("KaTeX display error: "+t.message)}}showLoading(t,e){let i=e||"Pict-Content-Body",n=t||"Loading content...";this.pict.ContentAssignment.assignContent("#"+i,'<div class="pict-content-loading">'+n+"</div>")}},e.exports.default_configuration={ViewIdentifier:"Pict-Content",DefaultRenderable:"Pict-Content-Display",DefaultDestinationAddress:"#Pict-Content-Container",AutoRender:!1,CSS:"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.pict-content h1 {\n\t\t\tfont-size: 2em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\tpadding-bottom: 0.3em;\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t.pict-content h2 {\n\t\t\tfont-size: 1.5em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tpadding-bottom: 0.25em;\n\t\t\tmargin-top: 1.5em;\n\t\t}\n\t\t.pict-content h3 {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin-top: 1.25em;\n\t\t}\n\t\t.pict-content h4, .pict-content h5, .pict-content h6 {\n\t\t\tcolor: #5E5549;\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.pict-content p {\n\t\t\tline-height: 1.7;\n\t\t\tcolor: #423D37;\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.pict-content a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.pict-content pre {\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: 0.9em;\n\t\t}\n\t\t.pict-content code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t\t.pict-content pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content blockquote {\n\t\t\tborder-left: 4px solid #2E7D74;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: #F7F5F0;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.pict-content blockquote p {\n\t\t\tmargin: 0.25em 0;\n\t\t}\n\t\t.pict-content ul, .pict-content ol {\n\t\t\tpadding-left: 2em;\n\t\t\tline-height: 1.8;\n\t\t}\n\t\t.pict-content li {\n\t\t\tmargin: 0.25em 0;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid #DDD6CA;\n\t\t\tmargin: 2em 0;\n\t\t}\n\t\t.pict-content table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content table th {\n\t\t\tbackground: #F5F0E8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.6em 0.8em;\n\t\t\ttext-align: left;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: #F7F5F0;\n\t\t}\n\t\t.pict-content img {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content pre.mermaid {\n\t\t\tbackground: #fff;\n\t\t\tcolor: #3D3229;\n\t\t\ttext-align: center;\n\t\t\tpadding: 1em;\n\t\t}\n\t\t.pict-content .pict-content-katex-display {\n\t\t\ttext-align: center;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em;\n\t\t\toverflow-x: auto;\n\t\t}\n\t\t.pict-content .pict-content-katex-inline {\n\t\t\tdisplay: inline;\n\t\t}\n\t",Templates:[{Hash:"Pict-Content-Template",Template:'\n<div class="pict-content" id="Pict-Content-Body">\n\t<div class="pict-content-loading">Loading content...</div>\n</div>\n'}],Renderables:[{RenderableHash:"Pict-Content-Display",TemplateHash:"Pict-Content-Template",DestinationAddress:"#Pict-Content-Container",RenderMethod:"replace"}]}},{"pict-view":12}],11:[function(t,e,i){e.exports={name:"pict-view",version:"1.0.67",description:"Pict View Base Class",main:"source/Pict-View.js",scripts:{test:"npx quack test",tests:"npx quack test -g",start:"node source/Pict-View.js",coverage:"npx quack coverage",build:"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-view-image:local","docker-dev-run":'docker run -it -d --name pict-view-dev -p 30001:8080 -p 38086:8086 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-view" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-view-image:local',"docker-dev-shell":"docker exec -it pict-view-dev /bin/bash",types:"tsc -p .",lint:"eslint source/**"},types:"types/source/Pict-View.d.ts",repository:{type:"git",url:"git+https://github.com/stevenvelozo/pict-view.git"},author:"steven velozo <steven@velozo.com>",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/pict-view/issues"},homepage:"https://github.com/stevenvelozo/pict-view#readme",devDependencies:{"@eslint/js":"^9.39.1","browser-env":"^3.3.0",eslint:"^9.39.1",pict:"^1.0.348",quackage:"^1.0.58",typescript:"^5.9.3"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{fable:"^3.1.63","fable-serviceproviderbase":"^3.0.19"}}},{}],12:[function(t,e,i){const n=t("fable-serviceproviderbase"),o=t("../package.json"),s={DefaultRenderable:!1,DefaultDestinationAddress:!1,DefaultTemplateRecordAddress:!1,ViewIdentifier:!1,AutoInitialize:!0,AutoInitializeOrdinal:0,AutoRender:!0,AutoRenderOrdinal:0,AutoSolveWithApp:!0,AutoSolveOrdinal:0,CSSHash:!1,CSS:!1,CSSProvider:!1,CSSPriority:500,Templates:[],DefaultTemplates:[],Renderables:[],Manifests:{}};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(s)),e),i),this.fable,this.options,this.UUID,this.Hash,this.log;const n=this.Hash===this.UUID;this.UUID="V-".concat(this.UUID),n&&(this.Hash=this.UUID),this.options.ViewIdentifier||(this.options.ViewIdentifier="AutoViewID-".concat(this.fable.getUUID())),this.serviceType="PictView",this._Package=o,this.pict=this.fable,this.AppData=this.pict.AppData,this.Bundle=this.pict.Bundle,this.initializeTimestamp=!1,this.lastSolvedTimestamp=!1,this.lastRenderedTimestamp=!1,this.lastMarshalFromViewTimestamp=!1,this.lastMarshalToViewTimestamp=!1,this.pict.instantiateServiceProviderIfNotExists("TransactionTracking");for(let t=0;t<this.options.Templates.length;t++){let e=this.options.Templates[t];"Hash"in e&&"Template"in e?(e.Source||(e.Source="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," options object.")),this.pict.TemplateProvider.addTemplate(e.Hash,e.Template,e.Source)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Template ").concat(t," in the options array."),e)}for(let t=0;t<this.options.DefaultTemplates.length;t++){let e=this.options.DefaultTemplates[t];"Postfix"in e&&"Template"in e?(e.Source||(e.Source="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," options object.")),this.pict.TemplateProvider.addDefaultTemplate(e.Prefix,e.Postfix,e.Template,e.Source)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Default Template ").concat(t," in the options array."),e)}if(this.options.CSS){let t=this.options.CSSHash?this.options.CSSHash:"View-".concat(this.options.ViewIdentifier),e=this.options.CSSProvider?this.options.CSSProvider:t;this.pict.CSSMap.addCSS(t,this.options.CSS,e,this.options.CSSPriority)}this.renderables={};for(let t=0;t<this.options.Renderables.length;t++){let e=this.options.Renderables[t];this.addRenderable(e)}}addRenderable(t,e,i,n,o){let s;if("object"==typeof t)s=t;else{s={RenderableHash:t,TemplateHash:e,DefaultTemplateRecordAddress:i,ContentDestinationAddress:n,RenderMethod:"string"!=typeof o?o:"replace"}}"string"!=typeof s.RenderableHash||"string"!=typeof s.TemplateHash?this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Renderable; RenderableHash or TemplateHash are invalid."),s):(this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," adding renderable [").concat(s.RenderableHash,"] pointed to template ").concat(s.TemplateHash,".")),this.renderables[s.RenderableHash]=s)}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialize:")),this.initializeTimestamp?(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialize called but initialization is already completed. Aborting.")),!1):(this.onBeforeInitialize(),this.onInitialize(),this.onAfterInitialize(),this.initializeTimestamp=this.pict.log.getTimeStamp(),!0)}initializeAsync(t){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initializeAsync:")),this.initializeTimestamp)return this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," async initialize called but initialization is already completed. Aborting.")),t();{let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate");this.pict.LogNoisiness>0&&this.log.info("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," beginning initialization...")),e.anticipate(this.onBeforeInitializeAsync.bind(this)),e.anticipate(this.onInitializeAsync.bind(this)),e.anticipate(this.onAfterInitializeAsync.bind(this)),e.wait(e=>(e&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialization failed: ").concat(e.message||e),{stack:e.stack}),this.initializeTimestamp=this.pict.log.getTimeStamp(),this.pict.LogNoisiness>0&&this.log.info("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialization complete.")),t()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onBeforeRender(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeRender:")),!0}onBeforeRenderAsync(t,e){return this.onBeforeRender(e),t()}onBeforeProject(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeProject:")),!0}onBeforeProjectAsync(t,e){return this.onBeforeProject(e),t()}buildRenderOptions(t,e,i){let n={Valid:!0};return n.RenderableHash="string"==typeof t?t:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable,n.RenderableHash||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not find a suitable RenderableHash ").concat(n.RenderableHash," (param ").concat(t,"because it is not a valid renderable.")),n.Valid=!1),n.Renderable=this.renderables[n.RenderableHash],n.Renderable||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(n.RenderableHash," (param ").concat(t,") because it does not exist.")),n.Valid=!1),n.DestinationAddress="string"==typeof e?e:"string"==typeof n.Renderable.ContentDestinationAddress?n.Renderable.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress&&this.options.DefaultDestinationAddress,n.DestinationAddress||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(n.RenderableHash," (param ").concat(t,") because it does not have a valid destination address (param ").concat(e,").")),n.Valid=!1),"object"==typeof i?(n.RecordAddress="Passed in as object",n.Record=i):(n.RecordAddress="string"==typeof i?i:"string"==typeof n.Renderable.DefaultTemplateRecordAddress?n.Renderable.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,n.Record="string"==typeof n.RecordAddress?this.pict.DataProvider.getDataByAddress(n.RecordAddress):void 0),n}assignRenderContent(t,e,i){return this.pict.ContentAssignment.projectContent(t.RenderMethod,e,i,t.TestAddress)}render(t,e,i,n){return this.renderWithScope(this,t,e,i,n)}renderWithScope(t,e,i,n,o){let s,r,a,c="string"==typeof e?e:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable;return c?("__Virtual"==c?s={RenderableHash:"__Virtual",TemplateHash:this.renderables[this.options.DefaultRenderable].TemplateHash,ContentDestinationAddress:"string"==typeof i?i:"string"==typeof s.ContentDestinationAddress?s.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null,RenderMethod:"virtual-assignment",TransactionHash:o&&o.TransactionHash,RootRenderableViewHash:o&&o.RootRenderableViewHash}:(s=Object.assign({},this.renderables[c]),s.ContentDestinationAddress="string"==typeof i?i:"string"==typeof s.ContentDestinationAddress?s.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null),s.TransactionHash||(s.TransactionHash="ViewRender-V-".concat(this.options.ViewIdentifier,"-R-").concat(c,"-U-").concat(this.pict.getUUID()),s.RootRenderableViewHash=this.Hash,this.pict.TransactionTracking.registerTransaction(s.TransactionHash)),s?s.ContentDestinationAddress?("object"==typeof n?(a=n,r="Passed in as object"):(r="string"==typeof n?n:"string"==typeof s.DefaultTemplateRecordAddress?s.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,a="string"==typeof r?this.pict.DataProvider.getDataByAddress(r):void 0),this.onBeforeRender(s),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] Renderable[").concat(c,"] Destination[").concat(s.ContentDestinationAddress,"] TemplateRecordAddress[").concat(r,"] render:")),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Beginning Render of Renderable[").concat(c,"] to Destination [").concat(s.ContentDestinationAddress,"]...")),s.Content=this.pict.parseTemplateByHash(s.TemplateHash,a,null,[this],t,{RootRenderable:"object"==typeof o?o:s}),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Assigning Renderable[").concat(c,"] content length ").concat(s.Content.length," to Destination [").concat(s.ContentDestinationAddress,"] using render method [").concat(s.RenderMethod,"].")),this.onBeforeProject(s),this.onProject(s),"virtual-assignment"!==s.RenderMethod&&(this.onAfterProject(s),this.onAfterRender(s)),!0):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it does not have a valid destination address.")),!1):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it does not exist.")),!1)):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it is not a valid renderable.")),!1)}renderAsync(t,e,i,n,o){return this.renderWithScopeAsync(this,t,e,i,n,o)}renderWithScopeAsync(t,e,i,n,o,s){let r,a,c,l="string"==typeof e?e:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable,h="function"==typeof s?s:"function"==typeof n?n:"function"==typeof i?i:"function"==typeof e?e:"function"==typeof o?o:null;if(h||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),h=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync Auto Callback Error: ").concat(t),t)}),!l)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not asynchronously render ").concat(l," (param ").concat(e,"because it is not a valid renderable.")),h(new Error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not asynchronously render ").concat(l," (param ").concat(e,"because it is not a valid renderable.")));if("__Virtual"==l?r={RenderableHash:"__Virtual",TemplateHash:this.renderables[this.options.DefaultRenderable].TemplateHash,ContentDestinationAddress:"string"==typeof i?i:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null,RenderMethod:"virtual-assignment",TransactionHash:o&&"function"!=typeof o&&o.TransactionHash,RootRenderableViewHash:o&&"function"!=typeof o&&o.RootRenderableViewHash}:(r=Object.assign({},this.renderables[l]),r.ContentDestinationAddress="string"==typeof i?i:"string"==typeof r.ContentDestinationAddress?r.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null),r.TransactionHash||(r.TransactionHash="ViewRender-V-".concat(this.options.ViewIdentifier,"-R-").concat(l,"-U-").concat(this.pict.getUUID()),r.RootRenderableViewHash=this.Hash,this.pict.TransactionTracking.registerTransaction(r.TransactionHash)),!r)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not exist.")),h(new Error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not exist.")));if(!r.ContentDestinationAddress)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not have a valid destination address.")),h(new Error("Could not render ".concat(l)));"object"==typeof n?(c=n,a="Passed in as object"):(a="string"==typeof n?n:"string"==typeof r.DefaultTemplateRecordAddress?r.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,c="string"==typeof a?this.pict.DataProvider.getDataByAddress(a):void 0),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] Renderable[").concat(l,"] Destination[").concat(r.ContentDestinationAddress,"] TemplateRecordAddress[").concat(a,"] renderAsync:")),this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Beginning Asynchronous Render (callback-style)..."));let d=this.fable.newAnticipate();d.anticipate(t=>{this.onBeforeRenderAsync(t,r)}),d.anticipate(i=>{this.pict.parseTemplateByHash(r.TemplateHash,c,(t,n)=>t?(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render (asynchronously) ").concat(l," (param ").concat(e,") because it did not parse the template."),t),i(t)):(r.Content=n,i()),[this],t,{RootRenderable:"object"==typeof o?o:r})}),d.anticipate(t=>{this.onBeforeProjectAsync(t,r)}),d.anticipate(t=>{this.onProjectAsync(t,r)}),"virtual-assignment"!==r.RenderMethod&&(d.anticipate(t=>{this.onAfterProjectAsync(t,r)}),d.anticipate(t=>{this.onAfterRenderAsync(t,r)})),d.wait(h)}renderDefaultAsync(t){this.renderAsync(t)}basicRender(t,e,i){return this.basicRenderWithScope(this,t,e,i)}basicRenderWithScope(t,e,i,n){let o=this.buildRenderOptions(e,i,n);return o.Valid?(this.assignRenderContent(o.Renderable,o.DestinationAddress,this.pict.parseTemplateByHash(o.Renderable.TemplateHash,o.Record,null,[this],t,{RootRenderable:o.Renderable})),!0):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not perform a basic render of ").concat(o.RenderableHash," because it is not valid.")),!1)}basicRenderAsync(t,e,i,n){return this.basicRenderWithScopeAsync(this,t,e,i,n)}basicRenderWithScopeAsync(t,e,i,n,o){let s="function"==typeof o?o:"function"==typeof n?n:"function"==typeof i?i:"function"==typeof e?e:null;s||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," basicRenderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),s=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," basicRenderAsync Auto Callback Error: ").concat(t),t)});const r=this.buildRenderOptions(e,i,n);if(!r.Valid){let t="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not perform a basic render of ").concat(r.RenderableHash," because it is not valid.");return this.log.error(t),s(new Error(t))}this.pict.parseTemplateByHash(r.Renderable.TemplateHash,r.Record,(t,e)=>t?(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render (asynchronously) ").concat(r.RenderableHash," because it did not parse the template."),t),s(t)):(this.assignRenderContent(r.Renderable,r.DestinationAddress,e),s()),[this],t,{RootRenderable:r.Renderable})}onProject(t){this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onProject:")),"virtual-assignment"===t.RenderMethod&&this.pict.TransactionTracking.pushToTransactionQueue(t.TransactionHash,{ViewHash:this.Hash,Renderable:t},"Deferred-Post-Content-Assignment"),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Assigning Renderable[").concat(t.RenderableHash,"] content length ").concat(t.Content.length," to Destination [").concat(t.ContentDestinationAddress,"] using Async render method ").concat(t.RenderMethod,".")),this.pict.ContentAssignment.projectContent(t.RenderMethod,t.ContentDestinationAddress,t.Content,t.TestAddress),this.lastRenderedTimestamp=this.pict.log.getTimeStamp()}onProjectAsync(t,e){return this.onProject(e),t()}onAfterRender(t){if(this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRender:")),t&&t.RootRenderableViewHash===this.Hash){const e=this.pict.TransactionTracking.clearTransactionQueue(t.TransactionHash)||[];for(const i of e){const e=this.pict.views[i.Data.ViewHash];e?(e.onAfterProject(),e.onAfterRender(i.Data.Renderable)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRender: Could not find view for transaction hash ").concat(t.TransactionHash," and ViewHash ").concat(i.Data.ViewHash,"."))}}return!0}onAfterRenderAsync(t,e){this.onAfterRender(e);const i=this.fable.newAnticipate();if(e&&e.RootRenderableViewHash===this.Hash){const t=this.pict.TransactionTracking.clearTransactionQueue(e.TransactionHash)||[];for(const n of t){const t=this.pict.views[n.Data.ViewHash];t?(i.anticipate(t.onAfterProjectAsync.bind(t)),i.anticipate(e=>{t.onAfterRenderAsync(e,n.Data.Renderable)})):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRenderAsync: Could not find view for transaction hash ").concat(e.TransactionHash," and ViewHash ").concat(n.Data.ViewHash,"."))}}return i.wait(t)}onAfterProject(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterProject:")),!0}onAfterProjectAsync(t,e){return t()}onBeforeSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeSolve:")),!0}onBeforeSolveAsync(t){return this.onBeforeSolve(),t()}onSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onSolve:")),!0}onSolveAsync(t){return this.onSolve(),t()}solve(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeSolve(),this.onSolve(),this.onAfterSolve(),this.lastSolvedTimestamp=this.pict.log.getTimeStamp(),!0}solveAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t?t:null;i||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeSolveAsync.bind(this)),e.anticipate(this.onSolveAsync.bind(this)),e.anticipate(this.onAfterSolveAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," solveAsync() complete.")),this.lastSolvedTimestamp=this.pict.log.getTimeStamp(),i(t)))}onAfterSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterSolve:")),!0}onAfterSolveAsync(t){return this.onAfterSolve(),t()}onBeforeMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeMarshalFromView:")),!0}onBeforeMarshalFromViewAsync(t){return this.onBeforeMarshalFromView(),t()}onMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onMarshalFromView:")),!0}onMarshalFromViewAsync(t){return this.onMarshalFromView(),t()}marshalFromView(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeMarshalFromView(),this.onMarshalFromView(),this.onAfterMarshalFromView(),this.lastMarshalFromViewTimestamp=this.pict.log.getTimeStamp(),!0}marshalFromViewAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t?t:null;i||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalFromViewAsync.bind(this)),e.anticipate(this.onMarshalFromViewAsync.bind(this)),e.anticipate(this.onAfterMarshalFromViewAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," marshalFromViewAsync() complete.")),this.lastMarshalFromViewTimestamp=this.pict.log.getTimeStamp(),i(t)))}onAfterMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterMarshalFromView:")),!0}onAfterMarshalFromViewAsync(t){return this.onAfterMarshalFromView(),t()}onBeforeMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeMarshalToView:")),!0}onBeforeMarshalToViewAsync(t){return this.onBeforeMarshalToView(),t()}onMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onMarshalToView:")),!0}onMarshalToViewAsync(t){return this.onMarshalToView(),t()}marshalToView(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeMarshalToView(),this.onMarshalToView(),this.onAfterMarshalToView(),this.lastMarshalToViewTimestamp=this.pict.log.getTimeStamp(),!0}marshalToViewAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t?t:null;i||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalToViewAsync.bind(this)),e.anticipate(this.onMarshalToViewAsync.bind(this)),e.anticipate(this.onAfterMarshalToViewAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," marshalToViewAsync() complete.")),this.lastMarshalToViewTimestamp=this.pict.log.getTimeStamp(),i(t)))}onAfterMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterMarshalToView:")),!0}onAfterMarshalToViewAsync(t){return this.onAfterMarshalToView(),t()}get isPictView(){return!0}}},{"../package.json":11,"fable-serviceproviderbase":2}],13:[function(t,e,i){e.exports={Name:"Pict Docuserve",Hash:"Docuserve",MainViewportViewIdentifier:"Docuserve-Layout",AutoSolveAfterInitialize:!0,AutoRenderMainViewportViewAfterInitialize:!1,AutoRenderViewsAfterInitialize:!1,pict_configuration:{Product:"Docuserve-Pict-Application"}}},{}],14:[function(t,e,i){const n=t("pict-application"),o=t("./providers/Pict-Provider-Docuserve-Documentation.js"),s=t("./views/PictView-Docuserve-Layout.js"),r=t("./views/PictView-Docuserve-TopBar.js"),a=t("./views/PictView-Docuserve-Sidebar.js"),c=t("./views/PictView-Docuserve-Splash.js"),l=t("./views/PictView-Docuserve-Content.js"),h=t("./views/PictView-Docuserve-Search.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict.addProvider("Docuserve-Documentation",o.default_configuration,o),this.pict.addView("Docuserve-Layout",s.default_configuration,s),this.pict.addView("Docuserve-TopBar",r.default_configuration,r),this.pict.addView("Docuserve-Sidebar",a.default_configuration,a),this.pict.addView("Docuserve-Splash",c.default_configuration,c),this.pict.addView("Docuserve-Content",l.default_configuration,l),this.pict.addView("Docuserve-Search",h.default_configuration,h)}onAfterInitializeAsync(t){this.pict.AppData.Docuserve={CatalogLoaded:!1,Catalog:null,CoverLoaded:!1,Cover:null,SidebarLoaded:!1,SidebarGroups:[],TopBarLoaded:!1,TopBar:null,ErrorPageLoaded:!1,ErrorPageHTML:null,KeywordIndexLoaded:!1,KeywordDocumentCount:0,CurrentGroup:"",CurrentModule:"",CurrentPath:"",SidebarVisible:!0,DocsBaseURL:"",CatalogURL:"retold-catalog.json"},this.pict.providers["Docuserve-Documentation"].loadCatalog(()=>{let e=this.pict.AppData.Docuserve;return e.CoverLoaded&&e.Cover&&e.Cover.Title?document.title=e.Cover.Title.replace(/<[^>]*>/g,""):e.TopBarLoaded&&e.TopBar&&e.TopBar.Brand&&(document.title=e.TopBar.Brand.replace(/<[^>]*>/g,"")),this.pict.views["Docuserve-Layout"].render(),super.onAfterInitializeAsync(t)})}resolveHash(){let t=(window.location.hash||"").replace(/^#\/?/,"");if(!t||"Home"===t)return void this.showView("Docuserve-Splash");let e=t.split("/");if("search"===e[0]){let t=decodeURIComponent(e.slice(1).join("/"));return void this.navigateToSearch(t)}if("page"===e[0]&&e.length>=2){let t=e.slice(1).join("/");return void this.navigateToPage(t)}if("doc"===e[0]&&e.length>=3){let t=e[1],i=e[2];if(e.length>=4){let n=e.slice(3).join("/");this.navigateToModulePath(t,i,n)}else this.navigateToModule(t,i);return}this.navigateToPage(t)}navigateTo(t){window.location.hash=t}showView(t){t in this.pict.views&&(this.pict.AppData.Docuserve.CurrentGroup="",this.pict.AppData.Docuserve.CurrentModule="",this.pict.AppData.Docuserve.CurrentPath="",this.pict.views[t].render(),this.pict.views["Docuserve-Sidebar"].clearModuleNav(),this.pict.views["Docuserve-Sidebar"].renderSidebarGroups())}navigateToModule(t,e){this.navigateToModulePath(t,e,"README.md")}navigateToModulePath(t,e,i){let n=this.pict.providers["Docuserve-Documentation"],o=this.pict.views["Docuserve-Content"],s=this.pict.views["Docuserve-Sidebar"];this.pict.AppData.Docuserve.CurrentGroup=t,this.pict.AppData.Docuserve.CurrentModule=e,this.pict.AppData.Docuserve.CurrentPath=i,o.render(),o.showLoading(),s.renderSidebarGroups(),s.renderModuleNav(t,e);let r=n.resolveDocumentURL(t,e,i||"README.md");if(!r)return void o.displayContent(n.getErrorPageHTML(t+"/"+e));let a=i||"README.md";n.fetchDocument(r,(i,s)=>{if(!i)return void o.displayContent(s);let r=t+"/"+e+"/"+a;n.fetchLocalDocument(r,(t,e)=>{o.displayContent(e)},t,e,a)},t,e,a)}navigateToPage(t){let e=this.pict.providers["Docuserve-Documentation"],i=this.pict.views["Docuserve-Content"],n=this.pict.views["Docuserve-Sidebar"];this.pict.AppData.Docuserve.CurrentGroup="",this.pict.AppData.Docuserve.CurrentModule="",this.pict.AppData.Docuserve.CurrentPath=t,i.render(),i.showLoading(),n.clearModuleNav(),n.renderSidebarGroups();let o=t;o.match(/\.md$/)||(o+=".md"),e.fetchLocalDocument(o,(t,e)=>{i.displayContent(e)})}navigateToSearch(t){let e=this.pict.views["Docuserve-Sidebar"],i=this.pict.views["Docuserve-Search"];this.pict.AppData.Docuserve.CurrentGroup="",this.pict.AppData.Docuserve.CurrentModule="",this.pict.AppData.Docuserve.CurrentPath="",e.clearModuleNav(),e.renderSidebarGroups(),i.render(),i.showSearch(t||"")}},e.exports.default_configuration=t("./Pict-Application-Docuserve-Configuration.json")},{"./Pict-Application-Docuserve-Configuration.json":13,"./providers/Pict-Provider-Docuserve-Documentation.js":15,"./views/PictView-Docuserve-Content.js":16,"./views/PictView-Docuserve-Layout.js":17,"./views/PictView-Docuserve-Search.js":18,"./views/PictView-Docuserve-Sidebar.js":19,"./views/PictView-Docuserve-Splash.js":20,"./views/PictView-Docuserve-TopBar.js":21,"pict-application":5}],15:[function(t,e,i){const n=t("pict-provider"),o=t("lunr"),s=t("pict-section-content").PictContentProvider;e.exports=class extends n{constructor(t,e,i){super(t,e,i),this._Catalog=null,this._ContentCache={},this._ContentProvider=this.pict.addProvider("Pict-Content",s.default_configuration,s)}_createLinkResolver(t,e,i){return(n,o)=>{if(n.match(/^\//)||n.match(/^[^:]+\.md/)){return{href:this.convertDocLink(n,t,e,i)}}let s=this.resolveGitHubURLToRoute(n);return s?{href:s}:null}}_createImageResolver(t){let e="";if(t){let i=t.lastIndexOf("/");i>=0&&(e=t.substring(0,i+1))}return(t,i)=>t.match(/^https?:\/\//)||t.match(/^data:/)||t.match(/^\//)?t:e+t}loadCatalog(t){let e="function"==typeof t?t:()=>{},i=this.pict.AppData.Docuserve.CatalogURL||"retold-catalog.json",n=()=>{let t=5,i=()=>{if(t--,t<=0){if(this.pict.AppData.Docuserve.SidebarGroups&&!(this.pict.AppData.Docuserve.SidebarGroups.length<1))return e();this.autoDiscoverSidebar(e)}};this.loadCover(i),this.loadSidebar(i),this.loadTopbar(i),this.loadErrorPage(i),this.loadKeywordIndex(i)};fetch(i).then(t=>t.ok?t.json():(this.log.info("Docuserve: No catalog at [".concat(i,"]; running in standalone mode.")),null)).then(t=>{t&&(this._Catalog=t,this.pict.AppData.Docuserve.Catalog=t,this.pict.AppData.Docuserve.CatalogLoaded=!0,this.buildSidebarData(t)),n()}).catch(t=>{this.log.info("Docuserve: Catalog load error (".concat(t,"); continuing in standalone mode.")),n()})}autoDiscoverSidebar(t){let e="function"==typeof t?t:()=>{},i=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(i+"README.md").then(t=>t.ok?t.text():null).then(t=>{if(t){let e=t.match(/^#+\s+(.+)/m),i=e?e[1].trim():"Docs";this.pict.AppData.Docuserve.SidebarGroups=[{Name:i,Key:"docs",Route:"#/page/README",Modules:[]}],this.pict.AppData.Docuserve.CoverLoaded||(this.pict.AppData.Docuserve.Cover={Title:i,Tagline:"",Description:"",Highlights:[],Actions:[{Text:"Read the Docs",Href:"README.md"}]},this.pict.AppData.Docuserve.CoverLoaded=!0)}else this.log.info("Docuserve: No README.md found; sidebar will be empty.");return e()}).catch(t=>(this.log.info("Docuserve: README.md discovery failed (".concat(t,").")),e()))}loadCover(t){let e="function"==typeof t?t:()=>{},i=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(i+"_cover.md").then(t=>t.ok?t.text():null).then(t=>t?(this.pict.AppData.Docuserve.Cover=this.parseCover(t),this.pict.AppData.Docuserve.CoverLoaded=!0,e()):(this.log.info("Docuserve: No _cover.md found; splash will use catalog data."),e())).catch(t=>(this.log.warn("Docuserve: Error loading _cover.md: ".concat(t)),e()))}parseCover(t){let e={Title:"",Tagline:"",Description:"",Highlights:[],Actions:[]},i=t.split("\n");for(let t=0;t<i.length;t++){let n=i[t].trim();if(!n)continue;let o=n.match(/^#+\s+(.+)/);if(o){e.Title=o[1].trim();continue}let s=n.match(/^>\s*(.*)/);if(s){e.Tagline=s[1].trim();continue}let r=n.match(/^[-*+]\s+(.*)/);if(r){let t=r[1],i=t.match(/^\*\*([^*]+)\*\*\s*[-—:]\s*(.*)/);i?e.Highlights.push({Label:i[1].trim(),Text:i[2].trim()}):e.Highlights.push({Label:"",Text:t.trim()});continue}let a=n.match(/^\[([^\]]+)\]\(([^)]+)\)\s*$/);a?e.Actions.push({Text:a[1].trim(),Href:a[2].trim()}):e.Description?e.Description+=" "+n:e.Description=n}return e}loadSidebar(t){let e="function"==typeof t?t:()=>{},i=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(i+"_sidebar.md").then(t=>t.ok?t.text():null).then(t=>{if(!t)return this.log.info("Docuserve: No _sidebar.md found; sidebar will use catalog data."),e();let i=this.parseSidebarMarkdown(t);return i&&i.length>0&&(this.pict.AppData.Docuserve.SidebarGroups=i,this.pict.AppData.Docuserve.SidebarLoaded=!0),e()}).catch(t=>(this.log.warn("Docuserve: Error loading _sidebar.md: ".concat(t)),e()))}loadTopbar(t){let e="function"==typeof t?t:()=>{},i=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(i+"_topbar.md").then(t=>t.ok?t.text():null).then(t=>t?(this.pict.AppData.Docuserve.TopBar=this.parseTopbar(t),this.pict.AppData.Docuserve.TopBarLoaded=!0,e()):(this.log.info("Docuserve: No _topbar.md found; top bar will use defaults."),e())).catch(t=>(this.log.warn("Docuserve: Error loading _topbar.md: ".concat(t)),e()))}parseTopbar(t){let e={Brand:"",NavLinks:[],ExternalLinks:[]},i=t.split("\n");for(let t=0;t<i.length;t++){let n=i[t].trim();if(!n)continue;let o=n.match(/^#+\s+(.+)/);if(o){e.Brand=o[1].trim();continue}let s=n.match(/^[-*+]\s+(.*)/);if(s){let t=s[1].trim().match(/^\[([^\]]+)\]\(([^)]+)\)/);if(t){let i=t[1].trim(),n=t[2].trim();if(n.match(/^https?:\/\//))e.ExternalLinks.push({Text:i,Href:n});else{let t=this.convertSidebarLink(n);e.NavLinks.push({Text:i,Href:t})}}continue}}return e}loadErrorPage(t){let e="function"==typeof t?t:()=>{},i=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(i+"errorpage.md").then(t=>t.ok?t.text():null).then(t=>t?(this.pict.AppData.Docuserve.ErrorPageHTML=this._ContentProvider.parseMarkdown(t),this.pict.AppData.Docuserve.ErrorPageLoaded=!0,e()):(this.log.info("Docuserve: No errorpage.md found; errors will use default page."),e())).catch(t=>(this.log.warn("Docuserve: Error loading errorpage.md: ".concat(t)),e()))}loadKeywordIndex(t){let e="function"==typeof t?t:()=>{},i=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(i+"retold-keyword-index.json").then(t=>t.ok?t.json():null).then(t=>{if(!t||!t.LunrIndex||!t.Documents)return this.log.info("Docuserve: No keyword index found; search will be unavailable."),e();try{this._LunrIndex=o.Index.load(t.LunrIndex),this._KeywordDocuments=t.Documents,this.pict.AppData.Docuserve.KeywordIndexLoaded=!0,this.pict.AppData.Docuserve.KeywordDocumentCount=t.DocumentCount||0,this.log.info("Docuserve: Keyword index loaded (".concat(t.DocumentCount||0," documents)."))}catch(t){this.log.warn("Docuserve: Error hydrating lunr index: ".concat(t))}return e()}).catch(t=>(this.log.warn("Docuserve: Error loading keyword index: ".concat(t)),e()))}isModuleInCatalog(t,e){if(!this._Catalog||!this._Catalog.Groups)return!1;for(let i=0;i<this._Catalog.Groups.length;i++){let n=this._Catalog.Groups[i];if(n.Key===t)for(let t=0;t<n.Modules.length;t++){if(n.Modules[t].Name===e)return!0}}return!1}findModuleGroupKey(t){if(!this._Catalog||!this._Catalog.Groups)return null;for(let e=0;e<this._Catalog.Groups.length;e++){let i=this._Catalog.Groups[e];for(let e=0;e<i.Modules.length;e++)if(i.Modules[e].Name===t)return i.Key}return null}isGroupInCatalog(t){if(!this._Catalog||!this._Catalog.Groups)return!1;for(let e=0;e<this._Catalog.Groups.length;e++)if(this._Catalog.Groups[e].Key===t)return!0;return!1}search(t){if(!(this._LunrIndex&&this._KeywordDocuments&&t&&t.trim()))return[];let e=[];try{let i=this._LunrIndex.search(t);for(let t=0;t<i.length;t++){let n=i[t].ref,o=i[t].score,s=this._KeywordDocuments[n];if(!s)continue;let r=n.split("/"),a="";if(r.length>=2){let t=r[0],e=r[1];a=this.isModuleInCatalog(t,e)?"#/doc/"+n:"#/page/"+n}e.push({Key:n,Title:s.Title||n,Group:s.Group||"",Module:s.Module||"",DocPath:s.DocPath||"",Score:o,Route:a})}}catch(t){this.log.warn("Docuserve: Search error: ".concat(t))}return e}getErrorPageHTML(t){let e=t||"unknown";return this.pict.AppData.Docuserve.ErrorPageLoaded&&this.pict.AppData.Docuserve.ErrorPageHTML?this.pict.AppData.Docuserve.ErrorPageHTML.replace(/\{\{path\}\}/g,this._ContentProvider.escapeHTML(e)):'<div class="docuserve-not-found"><h2>Page Not Found</h2><p>The document <code>'+this._ContentProvider.escapeHTML(e)+'</code> could not be loaded.</p><p><a href="#/Home">Return to the home page</a></p></div>'}parseSidebarMarkdown(t){let e=[],i=null,n=t.split("\n");for(let t=0;t<n.length;t++){let o=n[t];if(!o.trim())continue;let s=o.match(/^(\s*)/),r=s?s[1].length:0,a=o.trim().match(/^[-*+]\s+(.*)/);if(!a)continue;let c=a[1].trim(),l=c.match(/^\[([^\]]+)\]\(([^)]+)\)/);if(r<2)if(l){let t=l[1].trim(),n=l[2].trim();i={Name:t,Key:this.deriveGroupKey(t,n),Route:this.convertSidebarLink(n),Modules:[]},e.push(i)}else{let t=c,n=t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");i={Name:t,Key:n,Route:"",Modules:[]},e.push(i)}else if(i)if(l){let t=l[1].trim(),e=l[2].trim(),n=this.convertSidebarLink(e);i.Modules.push({Name:t,HasDocs:!0,Group:i.Key,Route:n})}else i.Modules.push({Name:c,HasDocs:!1,Group:i.Key,Route:""})}return e}convertSidebarLink(t){if(!t)return"";if("/"===t)return"#/Home";if(t.match(/^#[^/]/)){let t=this.pict.AppData.Docuserve.SidebarGroups;if(t)for(let e=0;e<t.length;e++){let i=t[e].Modules;if(i)for(let t=0;t<i.length;t++)if(i[t].HasDocs&&i[t].Route&&"#/Home"!==i[t].Route)return i[t].Route;if(t[e].Route&&"#/Home"!==t[e].Route)return t[e].Route}return"#/Home"}let e=t.replace(/^\//,"").replace(/\/$/,"");if(!e)return"#/Home";let i=e.split("/");if(i.length>=2){if(this.isGroupInCatalog(i[0])&&this.isModuleInCatalog(i[0],i[1]))return"#/doc/"+e;let t=this.findModuleGroupKey(i[1]);if(t){let e=i.slice(2).join("/");return e?"#/doc/"+t+"/"+i[1]+"/"+e:"#/doc/"+t+"/"+i[1]}}return e.match(/\.md$/)?"#/page/"+e.replace(/\.md$/,""):"#/page/"+e}deriveGroupKey(t,e){if(e&&"/"!==e){let t=e.replace(/^\//,"").replace(/\.md$/,"").replace(/\/$/,"");if(t&&!t.includes("/"))return t.toLowerCase()}return t.split(/[\s—\-:]+/)[0].toLowerCase().replace(/[^a-z0-9]/g,"")}buildSidebarData(t){let e=[];for(let i=0;i<t.Groups.length;i++){let n=t.Groups[i],o={Name:n.Name,Key:n.Key,Description:n.Description,Modules:[]};for(let t=0;t<n.Modules.length;t++){let e=n.Modules[t];o.Modules.push({Name:e.Name,HasDocs:e.HasDocs,Group:n.Key,Route:"#/doc/"+n.Key+"/"+e.Name})}e.push(o)}this.pict.AppData.Docuserve.SidebarGroups=e}resolveDocumentURL(t,e,i){if(!this._Catalog)return null;let n=this._Catalog.GitHubOrg||"stevenvelozo",o=this._Catalog.DefaultBranch||"master";for(let s=0;s<this._Catalog.Groups.length;s++){let r=this._Catalog.Groups[s];if(r.Key===t)for(let t=0;t<r.Modules.length;t++){let s=r.Modules[t];if(s.Name!==e)continue;let a=s.Branch||o,c=i||"README.md";return"https://raw.githubusercontent.com/"+n+"/"+s.Repo+"/"+a+"/docs/"+c}}return null}resolveGitHubURLToRoute(t){if(!this._Catalog||!this._Catalog.Groups||!t)return null;let e=t.match(/^https?:\/\/github\.com\/([^/]+)\/([^/]+)/);if(!e)return null;let i=e[1],n=e[2];if(i!==this._Catalog.GitHubOrg)return null;for(let t=0;t<this._Catalog.Groups.length;t++){let e=this._Catalog.Groups[t];for(let t=0;t<e.Modules.length;t++){let i=e.Modules[t];if(i.Repo===n)return"#/doc/"+e.Key+"/"+i.Name}}return null}resolveGitHubPagesURL(t,e){if(!this._Catalog||!this._Catalog.Groups)return null;let i=this._Catalog.GitHubOrg||"stevenvelozo";for(let n=0;n<this._Catalog.Groups.length;n++){let o=this._Catalog.Groups[n];if(o.Key===t)for(let t=0;t<o.Modules.length;t++){let n=o.Modules[t];if(n.Name===e)return n.HasDocs?"https://"+i+".github.io/"+n.Repo+"/":null}}return null}getModuleSidebar(t,e){if(!this._Catalog)return null;for(let i=0;i<this._Catalog.Groups.length;i++){let n=this._Catalog.Groups[i];if(n.Key===t)for(let t=0;t<n.Modules.length;t++){let i=n.Modules[t];if(i.Name===e)return i.Sidebar||null}}return null}fetchDocument(t,e,i,n,o){let s="function"==typeof e?e:()=>{};return t?this._ContentCache[t]?s(null,this._ContentCache[t]):void fetch(t).then(t=>t.ok?t.text():null).then(e=>{if(!e)return s("Document not found",this.getErrorPageHTML(t));let r=this._ContentProvider.parseMarkdown(e,this._createLinkResolver(i,n,o),this._createImageResolver(t));return this._ContentCache[t]=r,s(null,r)}).catch(e=>(this.log.warn("Docuserve: Error fetching document [".concat(t,"]: ").concat(e)),s(e,this.getErrorPageHTML(t)))):s("No URL provided","")}fetchLocalDocument(t,e,i,n,o){let s=(this.pict.AppData.Docuserve.DocsBaseURL||"")+t;this.fetchDocument(s,e,i,n,o)}convertDocLink(t,e,i,n){let o=t.replace(/^\.\//,"");o=o.replace(/^\//,"");let s=o.split("/");if(s.length>=2&&this.isGroupInCatalog(s[0])&&this.isModuleInCatalog(s[0],s[1]))return"#/doc/"+o;if(e&&i){let t="";if(n){let e=n.split("/");e.length>1&&(e.pop(),t=e.join("/")+"/")}return"#/doc/"+e+"/"+i+"/"+t+o}if(o.match(/\.md$/)){return"#/page/"+o.replace(/\.md$/,"")}return"#/page/"+o}},e.exports.default_configuration={ProviderIdentifier:"Docuserve-Documentation",AutoInitialize:!0,AutoInitializeOrdinal:0}},{lunr:3,"pict-provider":7,"pict-section-content":8}],16:[function(t,e,i){const n=t("pict-section-content");e.exports=class extends n{constructor(t,e,i){super(t,e,i)}displayContent(t){let e=t,i=this.pict.AppData.Docuserve.CurrentGroup,n=this.pict.AppData.Docuserve.CurrentModule;if(i&&n){let t=this.pict.providers["Docuserve-Documentation"];if(t){let o=t.resolveGitHubPagesURL(i,n);o&&(e='<div class="docuserve-module-external-link"><a href="'+o+'" target="_blank" rel="noopener">↗ View '+n+" documentation site</a></div>"+e)}}super.displayContent(e,"Docuserve-Content-Body")}showLoading(){super.showLoading("Loading documentation...","Docuserve-Content-Body")}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Content",DefaultRenderable:"Docuserve-Content-Display",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:!1,CSS:"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.pict-content h1 {\n\t\t\tfont-size: 2em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\tpadding-bottom: 0.3em;\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t.pict-content h2 {\n\t\t\tfont-size: 1.5em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tpadding-bottom: 0.25em;\n\t\t\tmargin-top: 1.5em;\n\t\t}\n\t\t.pict-content h3 {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin-top: 1.25em;\n\t\t}\n\t\t.pict-content h4, .pict-content h5, .pict-content h6 {\n\t\t\tcolor: #5E5549;\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.pict-content p {\n\t\t\tline-height: 1.7;\n\t\t\tcolor: #423D37;\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.pict-content a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.pict-content pre {\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: 0.9em;\n\t\t}\n\t\t.pict-content code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t\t.pict-content pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content-code-wrap {\n\t\t\tposition: relative;\n\t\t\tfont-family: 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.5;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow: auto;\n\t\t\tmargin: 1em 0;\n\t\t\tbackground: #3D3229;\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 40px;\n\t\t\tpadding: 1.25em 0;\n\t\t\ttext-align: right;\n\t\t\tbackground: #342A22;\n\t\t\tborder-right: 1px solid #4A3F35;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 13px;\n\t\t\tline-height: 1.5;\n\t\t\tuser-select: none;\n\t\t\tpointer-events: none;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers span {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0 8px 0 0;\n\t\t}\n\t\t.pict-content-code-wrap pre {\n\t\t\tmargin: 0;\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em 1.25em 1.25em 52px;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content-code-wrap pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t\tfont-family: inherit;\n\t\t}\n\t\t.pict-content-code-wrap .keyword { color: #C678DD; }\n\t\t.pict-content-code-wrap .string { color: #98C379; }\n\t\t.pict-content-code-wrap .number { color: #D19A66; }\n\t\t.pict-content-code-wrap .comment { color: #7F848E; font-style: italic; }\n\t\t.pict-content-code-wrap .operator { color: #56B6C2; }\n\t\t.pict-content-code-wrap .punctuation { color: #E8E0D4; }\n\t\t.pict-content-code-wrap .function-name { color: #61AFEF; }\n\t\t.pict-content-code-wrap .property { color: #E06C75; }\n\t\t.pict-content-code-wrap .tag { color: #E06C75; }\n\t\t.pict-content-code-wrap .attr-name { color: #D19A66; }\n\t\t.pict-content-code-wrap .attr-value { color: #98C379; }\n\t\t.pict-content blockquote {\n\t\t\tborder-left: 4px solid #2E7D74;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: #F7F5F0;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.pict-content blockquote p {\n\t\t\tmargin: 0.25em 0;\n\t\t}\n\t\t.pict-content ul, .pict-content ol {\n\t\t\tpadding-left: 2em;\n\t\t\tline-height: 1.8;\n\t\t}\n\t\t.pict-content li {\n\t\t\tmargin: 0.25em 0;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid #DDD6CA;\n\t\t\tmargin: 2em 0;\n\t\t}\n\t\t.pict-content table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content table th {\n\t\t\tbackground: #F5F0E8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.6em 0.8em;\n\t\t\ttext-align: left;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: #F7F5F0;\n\t\t}\n\t\t.pict-content img {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content pre.mermaid {\n\t\t\tbackground: #fff;\n\t\t\tcolor: #3D3229;\n\t\t\ttext-align: center;\n\t\t\tpadding: 1em;\n\t\t}\n\t\t.pict-content .pict-content-katex-display {\n\t\t\ttext-align: center;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em;\n\t\t\toverflow-x: auto;\n\t\t}\n\t\t.pict-content .pict-content-katex-inline {\n\t\t\tdisplay: inline;\n\t\t}\n\t\t.docuserve-module-external-link {\n\t\t\tpadding: 0.5em 0;\n\t\t\tmargin-bottom: 0.5em;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tfont-size: 0.85em;\n\t\t\ttext-align: right;\n\t\t}\n\t\t.docuserve-module-external-link a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.docuserve-module-external-link a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.docuserve-not-found {\n\t\t\ttext-align: center;\n\t\t\tpadding: 3em 1em;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.docuserve-not-found h2 {\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1.5em;\n\t\t\tborder-bottom: none;\n\t\t}\n\t\t.docuserve-not-found code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Content-Template",Template:'\n<div class="pict-content" id="Docuserve-Content-Body">\n\t<div class="pict-content-loading">Loading documentation...</div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Content-Display",TemplateHash:"Docuserve-Content-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]}},{"pict-section-content":8}],17:[function(t,e,i){const n=t("pict-view");e.exports=class extends n{constructor(t,e,i){super(t,e,i)}onAfterRender(t,e,i,n){if(this.pict.views["Docuserve-TopBar"].render(),this.pict.views["Docuserve-Sidebar"].render(),this.pict.views["Docuserve-Splash"].render(),this.pict.CSSMap.injectCSS(),this.pict.PictApplication.resolveHash(),!this._HashChangeListenerBound){this._HashChangeListenerBound=!0;let t=this;window.addEventListener("hashchange",()=>{t.pict.PictApplication.resolveHash()})}return super.onAfterRender(t,e,i,n)}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Layout",DefaultRenderable:"Docuserve-Layout-Shell",DefaultDestinationAddress:"#Docuserve-Application-Container",AutoRender:!1,CSS:"\n\t\t#Docuserve-Application-Container {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\theight: 100vh;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t#Docuserve-TopBar-Container {\n\t\t\tflex-shrink: 0;\n\t\t}\n\t\t.docuserve-body {\n\t\t\tdisplay: flex;\n\t\t\tflex: 1;\n\t\t\tmin-height: 0;\n\t\t}\n\t\t#Docuserve-Sidebar-Container {\n\t\t\tflex-shrink: 0;\n\t\t\twidth: 280px;\n\t\t\toverflow-y: auto;\n\t\t\tbackground-color: #F5F0E8;\n\t\t}\n\t\t#Docuserve-Content-Container {\n\t\t\tflex: 1;\n\t\t\tmin-width: 0;\n\t\t\toverflow-y: auto;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Layout-Shell-Template",Template:'\n<div id="Docuserve-TopBar-Container"></div>\n<div class="docuserve-body">\n\t<div id="Docuserve-Sidebar-Container"></div>\n\t<div id="Docuserve-Content-Container"></div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Layout-Shell",TemplateHash:"Docuserve-Layout-Shell-Template",DestinationAddress:"#Docuserve-Application-Container",RenderMethod:"replace"}]}},{"pict-view":12}],18:[function(t,e,i){const n=t("pict-view");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this._SearchDebounceTimer=null}onAfterRender(t,e,i,n){let o=document.getElementById("Docuserve-Search-Input");return o&&o.addEventListener("input",()=>{this._SearchDebounceTimer&&clearTimeout(this._SearchDebounceTimer),this._SearchDebounceTimer=setTimeout(()=>{this.performSearch(o.value)},250)}),super.onAfterRender(t,e,i,n)}showSearch(t){let e=document.getElementById("Docuserve-Search-Input");if(e&&(e.value=t||"",e.focus()),t&&t.trim())this.performSearch(t);else{let t=this.pict.AppData.Docuserve.KeywordDocumentCount||0,e=t>0?"Search across "+t+" documents.":"Enter a search term to find documentation.";this.pict.ContentAssignment.assignContent("#Docuserve-Search-Status",e),this.pict.ContentAssignment.assignContent("#Docuserve-Search-Results","")}let i=document.getElementById("Docuserve-Content-Container");i&&(i.scrollTop=0)}performSearch(t){if(!t||!t.trim()){let t=this.pict.AppData.Docuserve.KeywordDocumentCount||0,e=t>0?"Search across "+t+" documents.":"Enter a search term to find documentation.";return this.pict.ContentAssignment.assignContent("#Docuserve-Search-Status",e),void this.pict.ContentAssignment.assignContent("#Docuserve-Search-Results","")}let e=this.pict.providers["Docuserve-Documentation"].search(t);if(0===e.length)return this.pict.ContentAssignment.assignContent("#Docuserve-Search-Status","No results found for '"+this.escapeHTML(t)+"'."),void this.pict.ContentAssignment.assignContent("#Docuserve-Search-Results","");this.pict.ContentAssignment.assignContent("#Docuserve-Search-Status",e.length+" result"+(1!==e.length?"s":"")+" for '"+this.escapeHTML(t)+"'");let i="";for(let t=0;t<e.length;t++){let n=e[t],o="";n.Group&&n.Module&&(o=n.Group+" › "+n.Module),i+='<a class="docuserve-search-result" href="'+n.Route+'">',i+='<div class="docuserve-search-result-title">'+this.escapeHTML(n.Title)+"</div>",o&&(i+='<div class="docuserve-search-result-breadcrumb">'+o+"</div>"),n.DocPath&&(i+='<div class="docuserve-search-result-path">'+this.escapeHTML(n.DocPath)+"</div>"),i+="</a>"}this.pict.ContentAssignment.assignContent("#Docuserve-Search-Results",i)}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Search",DefaultRenderable:"Docuserve-Search-Display",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:!1,CSS:"\n\t\t.docuserve-search {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.docuserve-search-header {\n\t\t\tmargin-bottom: 1.5em;\n\t\t}\n\t\t.docuserve-search-header h1 {\n\t\t\tfont-size: 1.75em;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin: 0 0 0.75em 0;\n\t\t}\n\t\t.docuserve-search-input {\n\t\t\twidth: 100%;\n\t\t\tpadding: 0.75em 1em;\n\t\t\tfont-size: 1.1em;\n\t\t\tborder: 2px solid #D4CCBE;\n\t\t\tborder-radius: 6px;\n\t\t\toutline: none;\n\t\t\tbox-sizing: border-box;\n\t\t\ttransition: border-color 0.15s;\n\t\t}\n\t\t.docuserve-search-input:focus {\n\t\t\tborder-color: #2E7D74;\n\t\t}\n\t\t.docuserve-search-status {\n\t\t\tmargin-top: 0.75em;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #8A7F72;\n\t\t}\n\t\t.docuserve-search-results {\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.docuserve-search-result {\n\t\t\tdisplay: block;\n\t\t\tpadding: 1em 1.25em;\n\t\t\tmargin-bottom: 0.5em;\n\t\t\tborder: 1px solid #EAE3D8;\n\t\t\tborder-radius: 6px;\n\t\t\ttext-decoration: none;\n\t\t\tcolor: inherit;\n\t\t\ttransition: border-color 0.15s, box-shadow 0.15s;\n\t\t}\n\t\t.docuserve-search-result:hover {\n\t\t\tborder-color: #2E7D74;\n\t\t\tbox-shadow: 0 2px 8px rgba(46, 125, 116, 0.1);\n\t\t}\n\t\t.docuserve-search-result-title {\n\t\t\tfont-size: 1.05em;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #2E7D74;\n\t\t\tmargin-bottom: 0.25em;\n\t\t}\n\t\t.docuserve-search-result-breadcrumb {\n\t\t\tfont-size: 0.8em;\n\t\t\tcolor: #8A7F72;\n\t\t\tmargin-bottom: 0.2em;\n\t\t}\n\t\t.docuserve-search-result-path {\n\t\t\tfont-size: 0.8em;\n\t\t\tcolor: #A39889;\n\t\t\tfont-family: monospace;\n\t\t}\n\t\t.docuserve-search-empty {\n\t\t\ttext-align: center;\n\t\t\tpadding: 3em 1em;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1em;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Search-Template",Template:'\n<div class="docuserve-search">\n\t<div class="docuserve-search-header">\n\t\t<h1>Search Documentation</h1>\n\t\t<input type="text" class="docuserve-search-input" id="Docuserve-Search-Input" placeholder="Search across all modules...">\n\t\t<div id="Docuserve-Search-Status" class="docuserve-search-status"></div>\n\t</div>\n\t<div id="Docuserve-Search-Results" class="docuserve-search-results"></div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Search-Display",TemplateHash:"Docuserve-Search-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]}},{"pict-view":12}],19:[function(t,e,i){const n=t("pict-view");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this._SidebarSearchDebounceTimer=null}onAfterRender(t,e,i,n){this.renderSidebarGroups();let o=document.getElementById("Docuserve-Sidebar-Search");if(o&&this.pict.AppData.Docuserve.KeywordIndexLoaded){o.style.display="";let t=document.getElementById("Docuserve-Sidebar-Search-Input");t&&t.addEventListener("input",()=>{this._SidebarSearchDebounceTimer&&clearTimeout(this._SidebarSearchDebounceTimer),this._SidebarSearchDebounceTimer=setTimeout(()=>{this.performSidebarSearch(t.value)},250)})}return super.onAfterRender(t,e,i,n)}renderSidebarGroups(){let t=this.pict.AppData.Docuserve.SidebarGroups;if(!t||t.length<1)return void this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-Groups","");let e="";for(let i=0;i<t.length;i++){let n=t[i];e+='<div class="docuserve-sidebar-group">';let o=n.Route||"";if(!o)for(let t=0;t<n.Modules.length;t++)if(n.Modules[t].HasDocs&&n.Modules[t].Route){o=n.Modules[t].Route;break}if(o){let t="",i=window.location.hash||"";this.pict.AppData.Docuserve.CurrentGroup!==n.Key&&i!==o||(t=" active"),e+='<a class="docuserve-sidebar-group-title'+t+'" href="'+o+'">'+this.escapeHTML(n.Name)+"</a>"}else e+='<div class="docuserve-sidebar-group-title">'+this.escapeHTML(n.Name)+"</div>";e+='<ul class="docuserve-sidebar-modules">';for(let t=0;t<n.Modules.length;t++){let i=n.Modules[t];if(i.HasDocs){let t="";this.pict.AppData.Docuserve.CurrentGroup===i.Group&&this.pict.AppData.Docuserve.CurrentModule===i.Name&&(t=' class="active"'),e+="<li><a"+t+' href="'+i.Route+'">'+this.escapeHTML(i.Name)+"</a></li>"}else e+='<li><span class="no-docs">'+this.escapeHTML(i.Name)+"</span></li>"}e+="</ul>",e+="</div>"}this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-Groups",e)}renderModuleNav(t,e){let i=this.pict.providers["Docuserve-Documentation"];if(!i)return;let n=i.getModuleSidebar(t,e);if(!n)return void this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-ModuleNav","");let o="#/doc/"+t+"/"+e+"/",s='<div class="docuserve-sidebar-module-nav">';for(let t=0;t<n.length;t++){let e=n[t];if(e.Children){s+='<div class="docuserve-sidebar-module-nav-section">'+this.escapeHTML(e.Title)+"</div>";for(let t=0;t<e.Children.length;t++){let i=e.Children[t];i.Path&&(s+='<a href="'+o+i.Path+'">'+this.escapeHTML(i.Title)+"</a>")}}else e.Path&&(s+='<a href="'+o+e.Path+'">'+this.escapeHTML(e.Title)+"</a>")}s+="</div>",this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-ModuleNav",s)}performSidebarSearch(t){let e=document.getElementById("Docuserve-Sidebar-Search-Results");if(!e)return;if(!t||!t.trim())return void(e.innerHTML="");let i=this.pict.providers["Docuserve-Documentation"].search(t);if(0===i.length)return void(e.innerHTML='<div style="padding: 0.4em 0.5em; font-size: 0.82em; color: #8A7F72;">No results found.</div>');let n="";for(let t=0;t<i.length&&t<8;t++){let e=i[t],o="";e.Group&&e.Module&&(o=e.Group+" / "+e.Module),n+='<a href="'+e.Route+'">',n+='<div class="docuserve-sidebar-search-result-title">'+this.escapeHTML(e.Title)+"</div>",o&&(n+='<div class="docuserve-sidebar-search-result-meta">'+this.escapeHTML(o)+"</div>"),n+="</a>"}if(i.length>8){n+='<a class="docuserve-sidebar-search-all" href="#/search/'+encodeURIComponent(t)+'">See all '+i.length+" results</a>"}e.innerHTML=n}toggleSidebar(){this.pict.AppData.Docuserve.SidebarVisible=!this.pict.AppData.Docuserve.SidebarVisible;let t=document.getElementById("Docuserve-Sidebar-Container"),e=document.getElementById("Docuserve-TopBar-Toggle");this.pict.AppData.Docuserve.SidebarVisible?(t&&(t.style.display=""),e&&(e.style.display="none")):(t&&(t.style.display="none"),e&&(e.style.display="inline-block"))}clearModuleNav(){this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-ModuleNav","")}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""):""}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Sidebar",DefaultRenderable:"Docuserve-Sidebar-Content",DefaultDestinationAddress:"#Docuserve-Sidebar-Container",AutoRender:!1,CSS:"\n\t\t.docuserve-sidebar {\n\t\t\tborder-right: 1px solid #DDD6CA;\n\t\t\tpadding: 1em 0;\n\t\t\tpadding-top: 0;\n\t\t\tmin-height: 100%;\n\t\t\tposition: relative;\n\t\t}\n\t\t.docuserve-sidebar-header {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: flex-end;\n\t\t\tpadding: 0.4em 0.5em 0;\n\t\t}\n\t\t.docuserve-sidebar-close {\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1.2em;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 0.2em 0.4em;\n\t\t\tline-height: 1;\n\t\t}\n\t\t.docuserve-sidebar-close:hover {\n\t\t\tcolor: #2E7D74;\n\t\t}\n\t\t.docuserve-sidebar-search {\n\t\t\tpadding: 0 1em 1em 1em;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-search input {\n\t\t\twidth: 100%;\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tborder: 1px solid #D4CCBE;\n\t\t\tborder-radius: 4px;\n\t\t\tfont-size: 0.85em;\n\t\t\toutline: none;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\t.docuserve-sidebar-search input:focus {\n\t\t\tborder-color: #2E7D74;\n\t\t}\n\t\t.docuserve-sidebar-search-results {\n\t\t\tmargin-top: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-search-results a {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.4em 0.5em;\n\t\t\tcolor: #423D37;\n\t\t\ttext-decoration: none;\n\t\t\tfont-size: 0.82em;\n\t\t\tborder-radius: 3px;\n\t\t\ttransition: background-color 0.1s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-sidebar-search-results a:hover {\n\t\t\tbackground-color: #EAE3D8;\n\t\t\tcolor: #2E7D74;\n\t\t}\n\t\t.docuserve-sidebar-search-result-title {\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.docuserve-sidebar-search-results a:hover .docuserve-sidebar-search-result-title {\n\t\t\tcolor: #2E7D74;\n\t\t}\n\t\t.docuserve-sidebar-search-result-meta {\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #8A7F72;\n\t\t}\n\t\t.docuserve-sidebar-search-all {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.4em 0.5em;\n\t\t\tfont-size: 0.82em;\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t\tfont-weight: 600;\n\t\t\tcursor: pointer;\n\t\t\tborder-top: 1px solid #EAE3D8;\n\t\t\tmargin-top: 0.25em;\n\t\t\tpadding-top: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-search-all:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.docuserve-sidebar-home {\n\t\t\tpadding: 0.5em 1.25em;\n\t\t\tfont-weight: 600;\n\t\t\tfont-size: 0.85em;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.03em;\n\t\t}\n\t\t.docuserve-sidebar-home a {\n\t\t\tcolor: #5E5549;\n\t\t\ttext-decoration: none;\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\t\t.docuserve-sidebar-home a:hover {\n\t\t\tcolor: #2E7D74;\n\t\t}\n\t\t.docuserve-sidebar-group {\n\t\t\tmargin-top: 0.25em;\n\t\t}\n\t\t.docuserve-sidebar-group-title {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.5em 1.25em;\n\t\t\tfont-weight: 600;\n\t\t\tfont-size: 0.85em;\n\t\t\tcolor: #5E5549;\n\t\t\ttext-decoration: none;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.03em;\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t\ttransition: background-color 0.1s, color 0.1s;\n\t\t}\n\t\t.docuserve-sidebar-group-title:hover {\n\t\t\tcolor: #2E7D74;\n\t\t\tbackground-color: #EAE3D8;\n\t\t}\n\t\ta.docuserve-sidebar-group-title.active {\n\t\t\tcolor: #2E7D74;\n\t\t\tbackground-color: #E0EDEB;\n\t\t}\n\t\t.docuserve-sidebar-modules {\n\t\t\tlist-style: none;\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t\t.docuserve-sidebar-modules li {\n\t\t\tpadding: 0;\n\t\t}\n\t\t.docuserve-sidebar-modules a {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.3em 1.25em 0.3em 2em;\n\t\t\tcolor: #5E5549;\n\t\t\ttext-decoration: none;\n\t\t\tfont-size: 0.85em;\n\t\t\ttransition: background-color 0.1s, color 0.1s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-sidebar-modules a:hover {\n\t\t\tbackground-color: #EAE3D8;\n\t\t\tcolor: #2E7D74;\n\t\t}\n\t\t.docuserve-sidebar-modules a.active {\n\t\t\tcolor: #2E7D74;\n\t\t\tfont-weight: 600;\n\t\t\tbackground-color: #E0EDEB;\n\t\t}\n\t\t.docuserve-sidebar-modules .no-docs {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.3em 1.25em 0.3em 2em;\n\t\t\tcolor: #A39889;\n\t\t\tfont-size: 0.85em;\n\t\t}\n\t\t.docuserve-sidebar-module-nav {\n\t\t\tborder-top: 1px solid #EAE3D8;\n\t\t\tmargin-top: 0.5em;\n\t\t\tpadding-top: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-module-nav-section {\n\t\t\tpadding: 0.4em 1.25em;\n\t\t\tfont-weight: 600;\n\t\t\tfont-size: 0.8em;\n\t\t\tcolor: #8A7F72;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.02em;\n\t\t}\n\t\t.docuserve-sidebar-module-nav a {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.25em 1.25em 0.25em 2.25em;\n\t\t\tcolor: #5E5549;\n\t\t\ttext-decoration: none;\n\t\t\tfont-size: 0.82em;\n\t\t\ttransition: background-color 0.1s, color 0.1s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-sidebar-module-nav a:hover {\n\t\t\tbackground-color: #EAE3D8;\n\t\t\tcolor: #2E7D74;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Sidebar-Template",Template:'\n<div class="docuserve-sidebar">\n\t<div class="docuserve-sidebar-header">\n\t\t<button class="docuserve-sidebar-close" onclick="{~P~}.views[\'Docuserve-Sidebar\'].toggleSidebar()">×</button>\n\t</div>\n\t<div id="Docuserve-Sidebar-Search" class="docuserve-sidebar-search" style="display:none;">\n\t\t<input type="text" placeholder="Search docs..." id="Docuserve-Sidebar-Search-Input">\n\t\t<div id="Docuserve-Sidebar-Search-Results" class="docuserve-sidebar-search-results"></div>\n\t</div>\n\t<div class="docuserve-sidebar-home">\n\t\t<a onclick="{~P~}.PictApplication.navigateTo(\'/Home\')">Home</a>\n\t</div>\n\t<div id="Docuserve-Sidebar-Groups"></div>\n\t<div id="Docuserve-Sidebar-ModuleNav"></div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Sidebar-Content",TemplateHash:"Docuserve-Sidebar-Template",DestinationAddress:"#Docuserve-Sidebar-Container",RenderMethod:"replace"}]}},{"pict-view":12}],20:[function(t,e,i){const n=t("pict-view");e.exports=class extends n{constructor(t,e,i){super(t,e,i)}onAfterRender(t,e,i,n){let o=this.pict.AppData.Docuserve;return o.CoverLoaded&&o.Cover?this.renderFromCover(o.Cover):this.renderFromCatalog(o),super.onAfterRender(t,e,i,n)}renderFromCover(t){this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Title",this.sanitizeTitle(t.Title)),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Tagline",this.escapeHTML(t.Tagline)),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Description",this.escapeHTML(t.Description));let e="";for(let i=0;i<t.Highlights.length;i++){let n=t.Highlights[i];e+='<div class="docuserve-splash-highlight-card">',n.Label&&(e+="<h3>"+this.escapeHTML(n.Label)+"</h3>"),e+="<p>"+this.escapeHTML(n.Text)+"</p>",e+="</div>"}this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Highlights",e);let i="",n=this.pict.providers["Docuserve-Documentation"];for(let e=0;e<t.Actions.length;e++){let o=t.Actions[e],s=0===e?"primary":"secondary",r=o.Href;if(r.match(/^https?:\/\//))i+='<a class="'+s+'" href="'+this.escapeHTML(r)+'" target="_blank" rel="noopener">'+this.escapeHTML(o.Text)+"</a>";else{let t=n.convertSidebarLink(r);i+='<a class="'+s+'" href="'+this.escapeHTML(t)+'">'+this.escapeHTML(o.Text)+"</a>"}}this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Actions",i)}renderFromCatalog(t){let e="Documentation",i="";t.CatalogLoaded&&t.Catalog&&t.Catalog.Name?e=t.Catalog.Name:t.TopBarLoaded&&t.TopBar&&t.TopBar.Brand?e=t.TopBar.Brand:"undefined"!=typeof document&&document.title&&(e=document.title),t.CatalogLoaded&&t.Catalog&&t.Catalog.Description&&(i=t.Catalog.Description),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Title",this.escapeHTML(e)),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Tagline",this.escapeHTML(i)),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Description","");let n="",o=t.SidebarGroups||[];for(let t=0;t<o.length;t++){let e=o[t];if(!e.Modules||e.Modules.length<1)continue;let i=e.Description||e.Modules.length+" modules";n+='<div class="docuserve-splash-highlight-card">',n+="<h3>"+this.escapeHTML(e.Name)+"</h3>",n+="<p>"+this.escapeHTML(i)+"</p>",n+="</div>"}this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Highlights",n),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Actions","")}sanitizeTitle(t){return t?this.escapeHTML(t).replace(/<small>/gi,"<small>").replace(/<\/small>/gi,"</small>"):""}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""):""}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Splash",DefaultRenderable:"Docuserve-Splash-Content",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:!1,CSS:"\n\t\t.docuserve-splash {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: calc(100vh - 56px);\n\t\t\tpadding: 3em 2em;\n\t\t\ttext-align: center;\n\t\t\tbackground: linear-gradient(135deg, #F5F0E8 0%, #E4EFED 100%);\n\t\t}\n\t\t.docuserve-splash h1 {\n\t\t\tfont-size: 3em;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin: 0 0 0.25em 0;\n\t\t}\n\t\t.docuserve-splash h1 small {\n\t\t\tfont-size: 0.4em;\n\t\t\tfont-weight: 400;\n\t\t\tcolor: #7A7568;\n\t\t\tvertical-align: middle;\n\t\t\tmargin-left: 0.15em;\n\t\t}\n\t\t.docuserve-splash-tagline {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: #7A7568;\n\t\t\tmargin-bottom: 1.5em;\n\t\t\tfont-style: italic;\n\t\t}\n\t\t.docuserve-splash-description {\n\t\t\tfont-size: 1em;\n\t\t\tcolor: #5E5549;\n\t\t\tmax-width: 600px;\n\t\t\tline-height: 1.7;\n\t\t\tmargin-bottom: 2em;\n\t\t}\n\t\t.docuserve-splash-highlights {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n\t\t\tgap: 1.25em;\n\t\t\tmax-width: 900px;\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 2.5em;\n\t\t}\n\t\t.docuserve-splash-highlight-card {\n\t\t\tbackground: #fff;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 8px;\n\t\t\tpadding: 1.25em;\n\t\t\ttext-align: left;\n\t\t\ttransition: box-shadow 0.2s, border-color 0.2s;\n\t\t}\n\t\t.docuserve-splash-highlight-card:hover {\n\t\t\tbox-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);\n\t\t\tborder-color: #2E7D74;\n\t\t}\n\t\t.docuserve-splash-highlight-card h3 {\n\t\t\tmargin: 0 0 0.5em 0;\n\t\t\tcolor: #3D3229;\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.docuserve-splash-highlight-card p {\n\t\t\tmargin: 0;\n\t\t\tcolor: #7A7568;\n\t\t\tfont-size: 0.85em;\n\t\t\tline-height: 1.5;\n\t\t}\n\t\t.docuserve-splash-actions {\n\t\t\tdisplay: flex;\n\t\t\tgap: 1em;\n\t\t\tflex-wrap: wrap;\n\t\t\tjustify-content: center;\n\t\t}\n\t\t.docuserve-splash-actions a {\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 0.7em 1.5em;\n\t\t\tborder-radius: 6px;\n\t\t\tfont-size: 0.95em;\n\t\t\tfont-weight: 600;\n\t\t\ttext-decoration: none;\n\t\t\ttransition: background-color 0.15s, color 0.15s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-splash-actions .primary {\n\t\t\tbackground-color: #2E7D74;\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.docuserve-splash-actions .primary:hover {\n\t\t\tbackground-color: #256861;\n\t\t}\n\t\t.docuserve-splash-actions .secondary {\n\t\t\tbackground-color: #fff;\n\t\t\tcolor: #3D3229;\n\t\t\tborder: 2px solid #2E7D74;\n\t\t}\n\t\t.docuserve-splash-actions .secondary:hover {\n\t\t\tborder-color: #256861;\n\t\t\tcolor: #2E7D74;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Splash-Template",Template:'\n<div class="docuserve-splash">\n\t<h1 id="Docuserve-Splash-Title"></h1>\n\t<div class="docuserve-splash-tagline" id="Docuserve-Splash-Tagline"></div>\n\t<div class="docuserve-splash-description" id="Docuserve-Splash-Description"></div>\n\t<div class="docuserve-splash-highlights" id="Docuserve-Splash-Highlights"></div>\n\t<div class="docuserve-splash-actions" id="Docuserve-Splash-Actions"></div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Splash-Content",TemplateHash:"Docuserve-Splash-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]}},{"pict-view":12}],21:[function(t,e,i){const n=t("pict-view");e.exports=class extends n{constructor(t,e,i){super(t,e,i)}onAfterRender(t,e,i,n){return this.renderTopBarContent(),super.onAfterRender(t,e,i,n)}renderTopBarContent(){let t=this.pict.AppData.Docuserve,e=document.getElementById("Docuserve-TopBar-Brand"),i=document.getElementById("Docuserve-TopBar-Nav"),n=document.getElementById("Docuserve-TopBar-Links");if(e&&i&&n)if(t.TopBarLoaded&&t.TopBar){let o=t.TopBar;e.innerHTML=this.sanitizeTitle(o.Brand||"Documentation");let s='<a href="#/Home">Home</a>';for(let t=0;t<o.NavLinks.length;t++){let e=o.NavLinks[t];s+='<a href="'+e.Href+'">'+this.escapeHTML(e.Text)+"</a>"}i.innerHTML=s;let r="";t.KeywordIndexLoaded&&(r+='<a href="#/search/">Search</a>');for(let t=0;t<o.ExternalLinks.length;t++){let e=o.ExternalLinks[t];r+='<a href="'+this.escapeHTML(e.Href)+'" target="_blank" rel="noopener">'+this.escapeHTML(e.Text)+"</a>"}n.innerHTML=r}else{let o="Documentation";t.CoverLoaded&&t.Cover&&t.Cover.Title?o=t.Cover.Title:t.CatalogLoaded&&t.Catalog&&t.Catalog.Name&&(o=t.Catalog.Name),e.innerHTML=this.sanitizeTitle(o),i.innerHTML='<a href="#/Home">Home</a>',n.innerHTML=t.KeywordIndexLoaded?'<a href="#/search/">Search</a>':""}}sanitizeTitle(t){return t?this.escapeHTML(t).replace(/<small>/gi,"<small>").replace(/<\/small>/gi,"</small>"):""}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}},e.exports.default_configuration={ViewIdentifier:"Docuserve-TopBar",DefaultRenderable:"Docuserve-TopBar-Content",DefaultDestinationAddress:"#Docuserve-TopBar-Container",AutoRender:!1,CSS:"\n\t\t.docuserve-topbar {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: space-between;\n\t\t\tbackground-color: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 0 1.5em;\n\t\t\theight: 56px;\n\t\t\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);\n\t\t\tposition: sticky;\n\t\t\ttop: 0;\n\t\t\tz-index: 100;\n\t\t}\n\t\t.docuserve-topbar-brand {\n\t\t\tfont-size: 1.25em;\n\t\t\tfont-weight: 600;\n\t\t\tletter-spacing: 0.02em;\n\t\t\tcolor: #E8E0D4;\n\t\t\ttext-decoration: none;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-topbar-brand small {\n\t\t\tfont-size: 0.65em;\n\t\t\tfont-weight: 400;\n\t\t\tcolor: #8A7F72;\n\t\t\tmargin-left: 0.2em;\n\t\t}\n\t\t.docuserve-topbar-brand:hover {\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.docuserve-topbar-nav {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 0.25em;\n\t\t}\n\t\t.docuserve-topbar-nav a {\n\t\t\tcolor: #B5AA9A;\n\t\t\ttext-decoration: none;\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tborder-radius: 4px;\n\t\t\tfont-size: 0.9em;\n\t\t\ttransition: background-color 0.15s, color 0.15s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-topbar-nav a:hover {\n\t\t\tbackground-color: #524438;\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.docuserve-topbar-links {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 0.5em;\n\t\t}\n\t\t.docuserve-topbar-links a {\n\t\t\tcolor: #8A7F72;\n\t\t\ttext-decoration: none;\n\t\t\tfont-size: 0.85em;\n\t\t\tpadding: 0.4em 0.6em;\n\t\t\tborder-radius: 4px;\n\t\t\ttransition: background-color 0.15s, color 0.15s;\n\t\t}\n\t\t.docuserve-topbar-links a:hover {\n\t\t\tbackground-color: #524438;\n\t\t\tcolor: #E8E0D4;\n\t\t}\n\t\t.docuserve-topbar-toggle {\n\t\t\tdisplay: none;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tcolor: #B5AA9A;\n\t\t\tfont-size: 1.3em;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 0.3em 0.5em;\n\t\t\tmargin-left: 0.5em;\n\t\t\tline-height: 1;\n\t\t}\n\t\t.docuserve-topbar-toggle:hover {\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.docuserve-topbar-right {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-TopBar-Template",Template:'\n<div class="docuserve-topbar">\n\t<a id="Docuserve-TopBar-Brand" class="docuserve-topbar-brand" href="#/Home"></a>\n\t<div id="Docuserve-TopBar-Nav" class="docuserve-topbar-nav"></div>\n\t<div class="docuserve-topbar-right">\n\t\t<div id="Docuserve-TopBar-Links" class="docuserve-topbar-links"></div>\n\t\t<button id="Docuserve-TopBar-Toggle" class="docuserve-topbar-toggle" onclick="{~P~}.views[\'Docuserve-Sidebar\'].toggleSidebar()">☰</button>\n\t</div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-TopBar-Content",TemplateHash:"Docuserve-TopBar-Template",DestinationAddress:"#Docuserve-TopBar-Container",RenderMethod:"replace"}]}},{"pict-view":12}]},{},[14])(14)});
|
|
57
|
+
U.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=U.tokenizer,this.pipeline=new U.Pipeline,this.searchPipeline=new U.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},U.Builder.prototype.ref=function(t){this._ref=t},U.Builder.prototype.field=function(t,e){if(/\//.test(t))throw new RangeError("Field '"+t+"' contains illegal character '/'");this._fields[t]=e||{}},U.Builder.prototype.b=function(t){this._b=t<0?0:t>1?1:t},U.Builder.prototype.k1=function(t){this._k1=t},U.Builder.prototype.add=function(t,e){var n=t[this._ref],i=Object.keys(this._fields);this._documents[n]=e||{},this.documentCount+=1;for(var o=0;o<i.length;o++){var r=i[o],s=this._fields[r].extractor,a=s?s(t):t[r],c=this.tokenizer(a,{fields:[r]}),l=this.pipeline.run(c),d=new U.FieldRef(n,r),p=Object.create(null);this.fieldTermFrequencies[d]=p,this.fieldLengths[d]=0,this.fieldLengths[d]+=l.length;for(var h=0;h<l.length;h++){var u=l[h];if(null==p[u]&&(p[u]=0),p[u]+=1,null==this.invertedIndex[u]){var g=Object.create(null);g._index=this.termIndex,this.termIndex+=1;for(var f=0;f<i.length;f++)g[i[f]]=Object.create(null);this.invertedIndex[u]=g}null==this.invertedIndex[u][r][n]&&(this.invertedIndex[u][r][n]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var v=this.metadataWhitelist[m],b=u.metadata[v];null==this.invertedIndex[u][r][n][v]&&(this.invertedIndex[u][r][n][v]=[]),this.invertedIndex[u][r][n][v].push(b)}}}},U.Builder.prototype.calculateAverageFieldLengths=function(){for(var t=Object.keys(this.fieldLengths),e=t.length,n={},i={},o=0;o<e;o++){var r=U.FieldRef.fromString(t[o]),s=r.fieldName;i[s]||(i[s]=0),i[s]+=1,n[s]||(n[s]=0),n[s]+=this.fieldLengths[r]}var a=Object.keys(this._fields);for(o=0;o<a.length;o++){var c=a[o];n[c]=n[c]/i[c]}this.averageFieldLength=n},U.Builder.prototype.createFieldVectors=function(){for(var t={},e=Object.keys(this.fieldTermFrequencies),n=e.length,i=Object.create(null),o=0;o<n;o++){for(var r=U.FieldRef.fromString(e[o]),s=r.fieldName,a=this.fieldLengths[r],c=new U.Vector,l=this.fieldTermFrequencies[r],d=Object.keys(l),p=d.length,h=this._fields[s].boost||1,u=this._documents[r.docRef].boost||1,g=0;g<p;g++){var f,m,v,b=d[g],y=l[b],w=this.invertedIndex[b]._index;void 0===i[b]?(f=U.idf(this.invertedIndex[b],this.documentCount),i[b]=f):f=i[b],m=f*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[s]))+y),m*=h,m*=u,v=Math.round(1e3*m)/1e3,c.insert(w,v)}t[r]=c}this.fieldVectors=t},U.Builder.prototype.createTokenSet=function(){this.tokenSet=U.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},U.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new U.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},U.Builder.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},U.MatchData=function(t,e,n){for(var i=Object.create(null),o=Object.keys(n||{}),r=0;r<o.length;r++){var s=o[r];i[s]=n[s].slice()}this.metadata=Object.create(null),void 0!==t&&(this.metadata[t]=Object.create(null),this.metadata[t][e]=i)},U.MatchData.prototype.combine=function(t){for(var e=Object.keys(t.metadata),n=0;n<e.length;n++){var i=e[n],o=Object.keys(t.metadata[i]);null==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var r=0;r<o.length;r++){var s=o[r],a=Object.keys(t.metadata[i][s]);null==this.metadata[i][s]&&(this.metadata[i][s]=Object.create(null));for(var c=0;c<a.length;c++){var l=a[c];null==this.metadata[i][s][l]?this.metadata[i][s][l]=t.metadata[i][s][l]:this.metadata[i][s][l]=this.metadata[i][s][l].concat(t.metadata[i][s][l])}}}},U.MatchData.prototype.add=function(t,e,n){if(!(t in this.metadata))return this.metadata[t]=Object.create(null),void(this.metadata[t][e]=n);if(e in this.metadata[t])for(var i=Object.keys(n),o=0;o<i.length;o++){var r=i[o];r in this.metadata[t][e]?this.metadata[t][e][r]=this.metadata[t][e][r].concat(n[r]):this.metadata[t][e][r]=n[r]}else this.metadata[t][e]=n},U.Query=function(t){this.clauses=[],this.allFields=t},U.Query.wildcard=new String("*"),U.Query.wildcard.NONE=0,U.Query.wildcard.LEADING=1,U.Query.wildcard.TRAILING=2,U.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},U.Query.prototype.clause=function(t){return"fields"in t||(t.fields=this.allFields),"boost"in t||(t.boost=1),"usePipeline"in t||(t.usePipeline=!0),"wildcard"in t||(t.wildcard=U.Query.wildcard.NONE),t.wildcard&U.Query.wildcard.LEADING&&t.term.charAt(0)!=U.Query.wildcard&&(t.term="*"+t.term),t.wildcard&U.Query.wildcard.TRAILING&&t.term.slice(-1)!=U.Query.wildcard&&(t.term=t.term+"*"),"presence"in t||(t.presence=U.Query.presence.OPTIONAL),this.clauses.push(t),this},U.Query.prototype.isNegated=function(){for(var t=0;t<this.clauses.length;t++)if(this.clauses[t].presence!=U.Query.presence.PROHIBITED)return!1;return!0},U.Query.prototype.term=function(t,e){if(Array.isArray(t))return t.forEach(function(t){this.term(t,U.utils.clone(e))},this),this;var n=e||{};return n.term=t.toString(),this.clause(n),this},U.QueryParseError=function(t,e,n){this.name="QueryParseError",this.message=t,this.start=e,this.end=n},U.QueryParseError.prototype=new Error,U.QueryLexer=function(t){this.lexemes=[],this.str=t,this.length=t.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},U.QueryLexer.prototype.run=function(){for(var t=U.QueryLexer.lexText;t;)t=t(this)},U.QueryLexer.prototype.sliceString=function(){for(var t=[],e=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],t.push(this.str.slice(e,n)),e=n+1;return t.push(this.str.slice(e,this.pos)),this.escapeCharPositions.length=0,t.join("")},U.QueryLexer.prototype.emit=function(t){this.lexemes.push({type:t,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},U.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},U.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return U.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},U.QueryLexer.prototype.width=function(){return this.pos-this.start},U.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},U.QueryLexer.prototype.backup=function(){this.pos-=1},U.QueryLexer.prototype.acceptDigitRun=function(){var t,e;do{e=(t=this.next()).charCodeAt(0)}while(e>47&&e<58);t!=U.QueryLexer.EOS&&this.backup()},U.QueryLexer.prototype.more=function(){return this.pos<this.length},U.QueryLexer.EOS="EOS",U.QueryLexer.FIELD="FIELD",U.QueryLexer.TERM="TERM",U.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",U.QueryLexer.BOOST="BOOST",U.QueryLexer.PRESENCE="PRESENCE",U.QueryLexer.lexField=function(t){return t.backup(),t.emit(U.QueryLexer.FIELD),t.ignore(),U.QueryLexer.lexText},U.QueryLexer.lexTerm=function(t){if(t.width()>1&&(t.backup(),t.emit(U.QueryLexer.TERM)),t.ignore(),t.more())return U.QueryLexer.lexText},U.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(U.QueryLexer.EDIT_DISTANCE),U.QueryLexer.lexText},U.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(U.QueryLexer.BOOST),U.QueryLexer.lexText},U.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(U.QueryLexer.TERM)},U.QueryLexer.termSeparator=U.tokenizer.separator,U.QueryLexer.lexText=function(t){for(;;){var e=t.next();if(e==U.QueryLexer.EOS)return U.QueryLexer.lexEOS;if(92!=e.charCodeAt(0)){if(":"==e)return U.QueryLexer.lexField;if("~"==e)return t.backup(),t.width()>0&&t.emit(U.QueryLexer.TERM),U.QueryLexer.lexEditDistance;if("^"==e)return t.backup(),t.width()>0&&t.emit(U.QueryLexer.TERM),U.QueryLexer.lexBoost;if("+"==e&&1===t.width())return t.emit(U.QueryLexer.PRESENCE),U.QueryLexer.lexText;if("-"==e&&1===t.width())return t.emit(U.QueryLexer.PRESENCE),U.QueryLexer.lexText;if(e.match(U.QueryLexer.termSeparator))return U.QueryLexer.lexTerm}else t.escapeCharacter()}},U.QueryParser=function(t,e){this.lexer=new U.QueryLexer(t),this.query=e,this.currentClause={},this.lexemeIdx=0},U.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=U.QueryParser.parseClause;t;)t=t(this);return this.query},U.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},U.QueryParser.prototype.consumeLexeme=function(){var t=this.peekLexeme();return this.lexemeIdx+=1,t},U.QueryParser.prototype.nextClause=function(){var t=this.currentClause;this.query.clause(t),this.currentClause={}},U.QueryParser.parseClause=function(t){var e=t.peekLexeme();if(null!=e)switch(e.type){case U.QueryLexer.PRESENCE:return U.QueryParser.parsePresence;case U.QueryLexer.FIELD:return U.QueryParser.parseField;case U.QueryLexer.TERM:return U.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+e.type;throw e.str.length>=1&&(n+=" with value '"+e.str+"'"),new U.QueryParseError(n,e.start,e.end)}},U.QueryParser.parsePresence=function(t){var e=t.consumeLexeme();if(null!=e){switch(e.str){case"-":t.currentClause.presence=U.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=U.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+e.str+"'";throw new U.QueryParseError(n,e.start,e.end)}var i=t.peekLexeme();if(null==i){n="expecting term or field, found nothing";throw new U.QueryParseError(n,e.start,e.end)}switch(i.type){case U.QueryLexer.FIELD:return U.QueryParser.parseField;case U.QueryLexer.TERM:return U.QueryParser.parseTerm;default:n="expecting term or field, found '"+i.type+"'";throw new U.QueryParseError(n,i.start,i.end)}}},U.QueryParser.parseField=function(t){var e=t.consumeLexeme();if(null!=e){if(-1==t.query.allFields.indexOf(e.str)){var n=t.query.allFields.map(function(t){return"'"+t+"'"}).join(", "),i="unrecognised field '"+e.str+"', possible fields: "+n;throw new U.QueryParseError(i,e.start,e.end)}t.currentClause.fields=[e.str];var o=t.peekLexeme();if(null==o){i="expecting term, found nothing";throw new U.QueryParseError(i,e.start,e.end)}if(o.type===U.QueryLexer.TERM)return U.QueryParser.parseTerm;i="expecting term, found '"+o.type+"'";throw new U.QueryParseError(i,o.start,o.end)}},U.QueryParser.parseTerm=function(t){var e=t.consumeLexeme();if(null!=e){t.currentClause.term=e.str.toLowerCase(),-1!=e.str.indexOf("*")&&(t.currentClause.usePipeline=!1);var n=t.peekLexeme();if(null!=n)switch(n.type){case U.QueryLexer.TERM:return t.nextClause(),U.QueryParser.parseTerm;case U.QueryLexer.FIELD:return t.nextClause(),U.QueryParser.parseField;case U.QueryLexer.EDIT_DISTANCE:return U.QueryParser.parseEditDistance;case U.QueryLexer.BOOST:return U.QueryParser.parseBoost;case U.QueryLexer.PRESENCE:return t.nextClause(),U.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new U.QueryParseError(i,n.start,n.end)}else t.nextClause()}},U.QueryParser.parseEditDistance=function(t){var e=t.consumeLexeme();if(null!=e){var n=parseInt(e.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new U.QueryParseError(i,e.start,e.end)}t.currentClause.editDistance=n;var o=t.peekLexeme();if(null!=o)switch(o.type){case U.QueryLexer.TERM:return t.nextClause(),U.QueryParser.parseTerm;case U.QueryLexer.FIELD:return t.nextClause(),U.QueryParser.parseField;case U.QueryLexer.EDIT_DISTANCE:return U.QueryParser.parseEditDistance;case U.QueryLexer.BOOST:return U.QueryParser.parseBoost;case U.QueryLexer.PRESENCE:return t.nextClause(),U.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+o.type+"'";throw new U.QueryParseError(i,o.start,o.end)}else t.nextClause()}},U.QueryParser.parseBoost=function(t){var e=t.consumeLexeme();if(null!=e){var n=parseInt(e.str,10);if(isNaN(n)){var i="boost must be numeric";throw new U.QueryParseError(i,e.start,e.end)}t.currentClause.boost=n;var o=t.peekLexeme();if(null!=o)switch(o.type){case U.QueryLexer.TERM:return t.nextClause(),U.QueryParser.parseTerm;case U.QueryLexer.FIELD:return t.nextClause(),U.QueryParser.parseField;case U.QueryLexer.EDIT_DISTANCE:return U.QueryParser.parseEditDistance;case U.QueryLexer.BOOST:return U.QueryParser.parseBoost;case U.QueryLexer.PRESENCE:return t.nextClause(),U.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+o.type+"'";throw new U.QueryParseError(i,o.start,o.end)}else t.nextClause()}},R=this,V=function(){return U},"object"==typeof n?e.exports=V():R.lunr=V()}()},{}],4:[function(t,e,n){e.exports={name:"pict-application",version:"1.0.33",description:"Application base class for a pict view-based application",main:"source/Pict-Application.js",scripts:{test:"npx quack test",start:"node source/Pict-Application.js",coverage:"npx quack coverage",build:"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-application-image:local","docker-dev-run":'docker run -it -d --name pict-application-dev -p 30001:8080 -p 38086:8086 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-application" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-application-image:local',"docker-dev-shell":"docker exec -it pict-application-dev /bin/bash",tests:"npx quack test -g",lint:"eslint source/**",types:"tsc -p ."},types:"types/source/Pict-Application.d.ts",repository:{type:"git",url:"git+https://github.com/stevenvelozo/pict-application.git"},author:"steven velozo <steven@velozo.com>",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/pict-application/issues"},homepage:"https://github.com/stevenvelozo/pict-application#readme",devDependencies:{"@eslint/js":"^9.28.0","browser-env":"^3.3.0",eslint:"^9.28.0",pict:"^1.0.348","pict-provider":"^1.0.10","pict-view":"^1.0.66",quackage:"^1.0.58",typescript:"^5.9.3"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{"fable-serviceproviderbase":"^3.0.19"}}},{}],5:[function(t,e,n){const i=t("fable-serviceproviderbase"),o=t("../package.json"),r={Name:"DefaultPictApplication",MainViewportViewIdentifier:"Default-View",MainViewportRenderableHash:!1,MainViewportDestinationAddress:!1,MainViewportDefaultDataAddress:!1,AutoSolveAfterInitialize:!0,AutoRenderMainViewportViewAfterInitialize:!0,AutoRenderViewsAfterInitialize:!1,AutoLoginAfterInitialize:!1,AutoLoadDataAfterLogin:!1,ConfigurationOnlyViews:[],Manifests:{},IdentifierAddressPrefix:"PICT-"};e.exports=class extends i{constructor(t,e,n){let i="object"==typeof t.settings.PictApplicationConfiguration?t.settings.PictApplicationConfiguration:{};super(t,Object.assign({},JSON.parse(JSON.stringify(r)),i,e),n),this.options,this.log,this.fable,this.UUID,this.Hash,this.servicesMap,this.serviceType="PictApplication",this._Package=o,this.pict=this.fable,this.AppData=this.fable.AppData,this.Bundle=this.fable.Bundle,this.initializeTimestamp,this.lastSolvedTimestamp,this.lastLoginTimestamp,this.lastMarshalFromViewsTimestamp,this.lastMarshalToViewsTimestamp,this.lastAutoRenderTimestamp,this.lastLoadDataTimestamp;let s=Object.keys(this.options.Manifests);if(s.length>0)for(let t=0;t<s.length;t++){let e=s[t];this.fable.instantiateServiceProvider("Manifest",this.options.Manifests[e],e)}}onPreSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onPreSolve:")),!0}onPreSolveAsync(t){return this.onPreSolve(),t()}onBeforeSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeSolve:")),!0}onBeforeSolveAsync(t){return this.onBeforeSolve(),t()}onSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onSolve:")),!0}onSolveAsync(t){return this.onSolve(),t()}solve(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing solve() function..."));let t=Object.keys(this.pict.providers),e=[];for(let n=0;n<t.length;n++){let i=this.pict.providers[t[n]];i.options.AutoSolveWithApp&&e.push(i)}e.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<e.length;t++)e[t].solve(e[t]);this.onBeforeSolve();let n=Object.keys(this.pict.views),i=[];for(let t=0;t<n.length;t++){let e=this.pict.views[n[t]];e.options.AutoInitialize&&i.push(e)}i.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<i.length;t++)i[t].solve();return this.onSolve(),this.onAfterSolve(),this.lastSolvedTimestamp=this.fable.log.getTimeStamp(),!0}solveAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");e.anticipate(this.onBeforeSolveAsync.bind(this));let n="function"==typeof t&&t;n||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync Auto Callback Error: ").concat(t),t)});let i=Object.keys(this.pict.providers),o=[];for(let t=0;t<i.length;t++){let e=this.pict.providers[i[t]];e.options.AutoSolveWithApp&&o.push(e)}o.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<o.length;t++)e.anticipate(o[t].solveAsync.bind(o[t]));let r=Object.keys(this.pict.views),s=[];for(let t=0;t<r.length;t++){let e=this.pict.views[r[t]];e.options.AutoSolveWithApp&&s.push(e)}s.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<s.length;t++)e.anticipate(s[t].solveAsync.bind(s[t]));e.anticipate(this.onSolveAsync.bind(this)),e.anticipate(this.onAfterSolveAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync() complete.")),this.lastSolvedTimestamp=this.fable.log.getTimeStamp(),n(t)))}onAfterSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterSolve:")),!0}onAfterSolveAsync(t){return this.onAfterSolve(),t()}onBeforeLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeLoginAsync:")),t()}onLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onLoginAsync:")),t()}loginAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let n=t;"function"!=typeof n&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeLoginAsync.bind(this)),e.anticipate(this.onLoginAsync.bind(this)),e.anticipate(this.onAfterLoginAsync.bind(this)),this.options.AutoLoadDataAfterLogin&&e.anticipate(t=>{if(!this.isLoggedIn())return t();this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto loading data after login...")),this.loadDataAsync(e=>{t(e)})}),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync() complete.")),this.lastLoginTimestamp=this.fable.log.getTimeStamp(),n(t)))}isLoggedIn(){return!0}onAfterLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterLoginAsync:")),t()}onBeforeLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeLoadDataAsync:")),t()}onLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onLoadDataAsync:")),t()}loadDataAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let n=t;"function"!=typeof n&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeLoadDataAsync.bind(this));let i=Object.keys(this.pict.providers),o=[];for(let t=0;t<i.length;t++){let e=this.pict.providers[i[t]];e.options.AutoLoadDataWithApp&&o.push(e)}o.sort((t,e)=>t.options.AutoLoadDataOrdinal-e.options.AutoLoadDataOrdinal);for(const t of o)e.anticipate(t.onBeforeLoadDataAsync.bind(t));e.anticipate(this.onLoadDataAsync.bind(this));for(const t of o)e.anticipate(t.onLoadDataAsync.bind(t));e.anticipate(this.onAfterLoadDataAsync.bind(this));for(const t of o)e.anticipate(t.onAfterLoadDataAsync.bind(t));e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync() complete.")),this.lastLoadDataTimestamp=this.fable.log.getTimeStamp(),n(t)))}onAfterLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterLoadDataAsync:")),t()}onBeforeSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeSaveDataAsync:")),t()}onSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onSaveDataAsync:")),t()}saveDataAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let n=t;"function"!=typeof n&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeSaveDataAsync.bind(this));let i=Object.keys(this.pict.providers),o=[];for(let t=0;t<i.length;t++){let e=this.pict.providers[i[t]];e.options.AutoSaveDataWithApp&&o.push(e)}o.sort((t,e)=>t.options.AutoSaveDataOrdinal-e.options.AutoSaveDataOrdinal);for(const t of o)e.anticipate(t.onBeforeSaveDataAsync.bind(t));e.anticipate(this.onSaveDataAsync.bind(this));for(const t of o)e.anticipate(t.onSaveDataAsync.bind(t));e.anticipate(this.onAfterSaveDataAsync.bind(this));for(const t of o)e.anticipate(t.onAfterSaveDataAsync.bind(t));e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync() complete.")),this.lastSaveDataTimestamp=this.fable.log.getTimeStamp(),n(t)))}onAfterSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterSaveDataAsync:")),t()}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialize:")),this.initializeTimestamp)return this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialize called but initialization is already completed. Aborting.")),!1;{if(this.onBeforeInitialize(),"ConfigurationOnlyViews"in this.options)for(let t=0;t<this.options.ConfigurationOnlyViews.length;t++){let e=void 0===this.options.ConfigurationOnlyViews[t].ViewIdentifier?"AutoView-".concat(this.fable.getUUID()):this.options.ConfigurationOnlyViews[t].ViewIdentifier;this.log.info("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," adding configuration only view: ").concat(e)),this.pict.addView(e,this.options.ConfigurationOnlyViews[t])}this.onInitialize();let t=Object.keys(this.pict.providers),e=[];for(let n=0;n<t.length;n++){let i=this.pict.providers[t[n]];i.options.AutoInitialize&&e.push(i)}e.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<e.length;t++)e[t].initialize();let n=Object.keys(this.pict.views),i=[];for(let t=0;t<n.length;t++){let e=this.pict.views[n[t]];e.options.AutoInitialize&&i.push(e)}i.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<i.length;t++)i[t].initialize();return this.onAfterInitialize(),this.options.AutoSolveAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto solving after initialization...")),this.solve()),this.options.AutoRenderMainViewportViewAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto rendering after initialization...")),this.render()),this.initializeTimestamp=this.fable.log.getTimeStamp(),this.onCompletionOfInitialize(),!0}}initializeAsync(t){this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync:"));let e="function"==typeof t&&t;if(e||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),e=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync Auto Callback Error: ").concat(t),t)}),this.initializeTimestamp)return this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," async initialize called but initialization is already completed. Aborting.")),this.onCompletionOfInitializeAsync(e);{let t=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");if(this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning initialization...")),"ConfigurationOnlyViews"in this.options)for(let t=0;t<this.options.ConfigurationOnlyViews.length;t++){let e=void 0===this.options.ConfigurationOnlyViews[t].ViewIdentifier?"AutoView-".concat(this.fable.getUUID()):this.options.ConfigurationOnlyViews[t].ViewIdentifier;this.log.info("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," adding configuration only view: ").concat(e)),this.pict.addView(e,this.options.ConfigurationOnlyViews[t])}t.anticipate(this.onBeforeInitializeAsync.bind(this)),t.anticipate(this.onInitializeAsync.bind(this));let n=Object.keys(this.pict.providers),i=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoInitialize&&i.push(e)}i.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let e=0;e<i.length;e++)t.anticipate(i[e].initializeAsync.bind(i[e]));let o=Object.keys(this.pict.views),r=[];for(let t=0;t<o.length;t++){let e=this.pict.views[o[t]];e.options.AutoInitialize&&r.push(e)}r.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let e=0;e<r.length;e++){let n=r[e];t.anticipate(n.initializeAsync.bind(n))}t.anticipate(this.onAfterInitializeAsync.bind(this)),this.options.AutoLoginAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto login (asynchronously) after initialization...")),t.anticipate(this.loginAsync.bind(this))),this.options.AutoSolveAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto solving (asynchronously) after initialization...")),t.anticipate(this.solveAsync.bind(this))),this.options.AutoRenderMainViewportViewAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto rendering (asynchronously) after initialization...")),t.anticipate(this.renderMainViewportAsync.bind(this))),t.wait(t=>(t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync Error: ").concat(t.message||t),{stack:t.stack}),this.initializeTimestamp=this.fable.log.getTimeStamp(),this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialization complete.")),e()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onCompletionOfInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onCompletionOfInitialize:")),!0}onCompletionOfInitializeAsync(t){return this.onCompletionOfInitialize(),t()}onBeforeMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeMarshalFromViews:")),!0}onBeforeMarshalFromViewsAsync(t){return this.onBeforeMarshalFromViews(),t()}onMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onMarshalFromViews:")),!0}onMarshalFromViewsAsync(t){return this.onMarshalFromViews(),t()}marshalFromViews(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing marshalFromViews() function...")),this.onBeforeMarshalFromViews();let t=Object.keys(this.pict.views),e=[];for(let n=0;n<t.length;n++){let i=this.pict.views[t[n]];e.push(i)}for(let t=0;t<e.length;t++)e[t].marshalFromView();return this.onMarshalFromViews(),this.onAfterMarshalFromViews(),this.lastMarshalFromViewsTimestamp=this.fable.log.getTimeStamp(),!0}marshalFromViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),n="function"==typeof t&&t;n||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalFromViewsAsync.bind(this));let i=Object.keys(this.pict.views),o=[];for(let t=0;t<i.length;t++){let e=this.pict.views[i[t]];o.push(e)}for(let t=0;t<o.length;t++)e.anticipate(o[t].marshalFromViewAsync.bind(o[t]));e.anticipate(this.onMarshalFromViewsAsync.bind(this)),e.anticipate(this.onAfterMarshalFromViewsAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync() complete.")),this.lastMarshalFromViewsTimestamp=this.fable.log.getTimeStamp(),n(t)))}onAfterMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterMarshalFromViews:")),!0}onAfterMarshalFromViewsAsync(t){return this.onAfterMarshalFromViews(),t()}onBeforeMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeMarshalToViews:")),!0}onBeforeMarshalToViewsAsync(t){return this.onBeforeMarshalToViews(),t()}onMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onMarshalToViews:")),!0}onMarshalToViewsAsync(t){return this.onMarshalToViews(),t()}marshalToViews(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing marshalToViews() function...")),this.onBeforeMarshalToViews();let t=Object.keys(this.pict.views),e=[];for(let n=0;n<t.length;n++){let i=this.pict.views[t[n]];e.push(i)}for(let t=0;t<e.length;t++)e[t].marshalToView();return this.onMarshalToViews(),this.onAfterMarshalToViews(),this.lastMarshalToViewsTimestamp=this.fable.log.getTimeStamp(),!0}marshalToViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),n="function"==typeof t&&t;n||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalToViewsAsync.bind(this));let i=Object.keys(this.pict.views),o=[];for(let t=0;t<i.length;t++){let e=this.pict.views[i[t]];o.push(e)}for(let t=0;t<o.length;t++)e.anticipate(o[t].marshalToViewAsync.bind(o[t]));e.anticipate(this.onMarshalToViewsAsync.bind(this)),e.anticipate(this.onAfterMarshalToViewsAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync() complete.")),this.lastMarshalToViewsTimestamp=this.fable.log.getTimeStamp(),n(t)))}onAfterMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterMarshalToViews:")),!0}onAfterMarshalToViewsAsync(t){return this.onAfterMarshalToViews(),t()}onBeforeRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeRender:")),!0}onBeforeRenderAsync(t){return this.onBeforeRender(),t()}render(t,e,n,i){let o="string"!=typeof t?this.options.MainViewportViewIdentifier:t,r="string"!=typeof e?this.options.MainViewportRenderableHash:e,s="string"!=typeof n?this.options.MainViewportDestinationAddress:n,a="string"!=typeof i?this.options.MainViewportDefaultDataAddress:i;this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," VIEW Renderable[").concat(r,"] Destination[").concat(s,"] TemplateDataAddress[").concat(a,"] render:")),this.onBeforeRender();let c="string"==typeof o&&this.servicesMap.PictView[o];return c?(this.onRender(),c.render(r,s,a),this.onAfterRender(),!0):(this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," could not render from View ").concat(o," because it is not a valid view.")),!1)}onRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onRender:")),!0}onRenderAsync(t){return this.onRender(),t()}renderAsync(t,e,n,i,o){let r="string"!=typeof t?this.options.MainViewportViewIdentifier:t,s="string"!=typeof e?this.options.MainViewportRenderableHash:e,a="string"!=typeof n?this.options.MainViewportDestinationAddress:n,c="string"!=typeof i?this.options.MainViewportDefaultDataAddress:i,l="function"==typeof o?o:"function"==typeof i?i:"function"==typeof n?n:"function"==typeof e?e:"function"==typeof t&&t;l||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),l=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync Auto Callback Error: ").concat(t),t)}),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," VIEW Renderable[").concat(s,"] Destination[").concat(a,"] TemplateDataAddress[").concat(c,"] renderAsync:"));let d=this.fable.newAnticipate();d.anticipate(this.onBeforeRenderAsync.bind(this));let p="string"==typeof r&&this.servicesMap.PictView[r];if(!p){let t="PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," could not asynchronously render from View ").concat(r," because it is not a valid view.");return this.pict.LogNoisiness>3&&this.log.error(t),l(new Error(t))}return d.anticipate(this.onRenderAsync.bind(this)),d.anticipate(t=>{p.renderAsync.call(p,s,a,c,t)}),d.anticipate(this.onAfterRenderAsync.bind(this)),d.wait(l)}onAfterRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterRender:")),!0}onAfterRenderAsync(t){return this.onAfterRender(),t()}renderMainViewport(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderMainViewport:")),this.render()}renderMainViewportAsync(t){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderMainViewportAsync:")),this.renderAsync(t)}renderAutoViews(){this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning renderAutoViews..."));let t=Object.keys(this.pict.views);t.sort((t,e)=>this.pict.views[t].options.AutoRenderOrdinal-this.pict.views[e].options.AutoRenderOrdinal);for(let e=0;e<t.length;e++){let n=this.pict.views[t[e]];n.options.AutoRender&&n.render()}this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync complete."))}renderAutoViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),n="function"==typeof t&&t;n||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync Auto Callback Error: ").concat(t),t)}),this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning renderAutoViewsAsync..."));let i=Object.keys(this.pict.views);i.sort((t,e)=>this.pict.views[t].options.AutoRenderOrdinal-this.pict.views[e].options.AutoRenderOrdinal);for(let t=0;t<i.length;t++){let n=this.pict.views[i[t]];n.options.AutoRender&&e.anticipate(n.renderAsync.bind(n))}e.wait(t=>(this.lastAutoRenderTimestamp=this.fable.log.getTimeStamp(),this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync complete.")),n(t)))}get isPictApplication(){return!0}}},{"../package.json":4,"fable-serviceproviderbase":2}],6:[function(t,e,n){e.exports={name:"pict-provider",version:"1.0.12",description:"Pict Provider Base Class",main:"source/Pict-Provider.js",scripts:{start:"node source/Pict-Provider.js",test:"npx quack test",tests:"npx quack test -g",coverage:"npx quack coverage",build:"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-provider-image:local","docker-dev-run":'docker run -it -d --name pict-provider-dev -p 24125:8080 -p 30027:8086 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-provider" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-provider-image:local',"docker-dev-shell":"docker exec -it pict-provider-dev /bin/bash",lint:"eslint source/**",types:"tsc -p ."},types:"types/source/Pict-Provider.d.ts",repository:{type:"git",url:"git+https://github.com/stevenvelozo/pict-provider.git"},author:"steven velozo <steven@velozo.com>",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/pict-provider/issues"},homepage:"https://github.com/stevenvelozo/pict-provider#readme",devDependencies:{"@eslint/js":"^9.39.1",eslint:"^9.39.1",pict:"^1.0.351",quackage:"^1.0.58",typescript:"^5.9.3"},dependencies:{"fable-serviceproviderbase":"^3.0.19"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]}}},{}],7:[function(t,e,n){const i=t("fable-serviceproviderbase"),o=t("../package.json"),r={ProviderIdentifier:!1,AutoInitialize:!0,AutoInitializeOrdinal:0,AutoLoadDataWithApp:!0,AutoLoadDataOrdinal:0,AutoSolveWithApp:!0,AutoSolveOrdinal:0,Manifests:{},Templates:[]};e.exports=class extends i{constructor(t,e,n){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),n),this.fable,this.pict,this.log,this.options,this.UUID,this.Hash,this.options.ProviderIdentifier||(this.options.ProviderIdentifier="AutoProviderID-".concat(this.fable.getUUID())),this.serviceType="PictProvider",this._Package=o,this.pict=this.fable,this.AppData=this.pict.AppData,this.Bundle=this.pict.Bundle,this.initializeTimestamp=!1,this.lastSolvedTimestamp=!1;for(let t=0;t<this.options.Templates.length;t++){let e=this.options.Templates[t];e.hasOwnProperty("Postfix")&&e.hasOwnProperty("Template")?(e.Source||(e.Source="PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," options object.")),this.pict.TemplateProvider.addDefaultTemplate(e.Prefix,e.Postfix,e.Template,e.Source)):this.log.error("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," could not load Default Template ").concat(t," in the options array."),e)}}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow PROVIDER [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialize:")),this.initializeTimestamp?(this.log.warn("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialize called but initialization is already completed. Aborting.")),!1):(this.onBeforeInitialize(),this.onInitialize(),this.onAfterInitialize(),this.initializeTimestamp=this.pict.log.getTimeStamp(),!0)}initializeAsync(t){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow PROVIDER [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initializeAsync:")),this.initializeTimestamp)return this.log.warn("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," async initialize called but initialization is already completed. Aborting.")),t();{let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate");this.pict.LogNoisiness>0&&this.log.info("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," beginning initialization...")),e.anticipate(this.onBeforeInitializeAsync.bind(this)),e.anticipate(this.onInitializeAsync.bind(this)),e.anticipate(this.onAfterInitializeAsync.bind(this)),e.wait(e=>(this.initializeTimestamp=this.pict.log.getTimeStamp(),e?this.log.error("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialization failed: ").concat(e.message||e),{Stack:e.stack}):this.pict.LogNoisiness>0&&this.log.info("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialization complete.")),t()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onPreRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onPreRender:")),!0}onPreRenderAsync(t){return this.onPreRender(),t()}render(){return this.onPreRender()}renderAsync(t){return this.onPreRender(),t()}onPreSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onPreSolve:")),!0}onPreSolveAsync(t){return this.onPreSolve(),t()}solve(){return this.onPreSolve()}solveAsync(t){return this.onPreSolve(),t()}onBeforeLoadDataAsync(t){return t()}onLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onLoadDataAsync:")),t()}onAfterLoadDataAsync(t){return t()}onBeforeSaveDataAsync(t){return t()}onSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onSaveDataAsync:")),t()}onAfterSaveDataAsync(t){return t()}}},{"../package.json":6,"fable-serviceproviderbase":2}],8:[function(t,e,n){const i={javascript:{tokenizer:/(\/\/[^\n]*|\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2|(`(?:[^`\\]|\\.)*?`)|(\/(?![/*])(?:\\.|\[(?:\\.|[^\]])*\]|[^/\\\n])+\/[gimsuvy]*)/g,keywords:/\b(async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|export|extends|finally|for|from|function|get|if|import|in|instanceof|let|new|of|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/g,builtins:/\b(true|false|null|undefined|NaN|Infinity|console|window|document|Math|JSON|Array|Object|String|Number|Boolean|Date|RegExp|Map|Set|Promise|Error|Symbol|parseInt|parseFloat|require|module|exports)\b/g,numbers:/\b(\d+\.?\d*(?:e[+-]?\d+)?|0x[0-9a-fA-F]+|0b[01]+|0o[0-7]+)\b/g},json:{tokenizer:/(\/\/[^\n]*|\/\*[\s\S]*?\*\/)|("(?:[^"\\]|\\.)*")/g,keywords:/\b(true|false|null)\b/g,numbers:/-?\b\d+\.?\d*(?:e[+-]?\d+)?\b/g},html:{tokenizer:/(<!--[\s\S]*?-->)|(["'])(?:(?!\2|\\).|\\.)*?\2|(<\/?[a-zA-Z][a-zA-Z0-9-]*(?:\s+[a-zA-Z-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*\/?>)/g,tagGroupIndex:3},css:{tokenizer:/(\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2/g,selectors:/([.#]?[a-zA-Z_][\w-]*(?:\s*[>+~]\s*[.#]?[a-zA-Z_][\w-]*)*)\s*\{/g,properties:/\b([a-zA-Z-]+)\s*:/g,numbers:/\b(\d+\.?\d*)(px|em|rem|%|vh|vw|s|ms|deg|fr)?\b/g,keywords:/\b(important|inherit|initial|unset|none|auto|block|inline|flex|grid)\b/g},sql:{tokenizer:/(--[^\n]*|\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2/g,keywords:/\b(SELECT|FROM|WHERE|AND|OR|INSERT|INTO|VALUES|UPDATE|SET|DELETE|CREATE|TABLE|DROP|ALTER|ADD|COLUMN|INDEX|JOIN|LEFT|RIGHT|INNER|OUTER|ON|AS|ORDER|BY|GROUP|HAVING|LIMIT|OFFSET|UNION|ALL|DISTINCT|COUNT|SUM|AVG|MIN|MAX|NOT|NULL|IS|IN|BETWEEN|LIKE|EXISTS|CASE|WHEN|THEN|ELSE|END|PRIMARY|KEY|FOREIGN|REFERENCES|CONSTRAINT|DEFAULT|CHECK|UNIQUE|CASCADE|GRANT|REVOKE|COMMIT|ROLLBACK|BEGIN|TRANSACTION|INT|VARCHAR|DATETIME|AUTO_INCREMENT|CURRENT_TIMESTAMP)\b/gi,numbers:/\b\d+\.?\d*\b/g}};function o(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function r(t,e){let n=t;return e.selectors&&(e.selectors.lastIndex=0,n=n.replace(e.selectors,'<span class="function-name">$1</span>{')),e.properties&&(e.properties.lastIndex=0,n=n.replace(e.properties,'<span class="property">$1</span>:')),e.keywords&&(e.keywords.lastIndex=0,n=n.replace(e.keywords,'<span class="keyword">$1</span>')),e.builtins&&(e.builtins.lastIndex=0,n=n.replace(e.builtins,'<span class="keyword">$1</span>')),e.numbers&&(e.numbers.lastIndex=0,n=n.replace(e.numbers,t=>'<span class="number">'.concat(t,"</span>"))),n}function s(t){let e="",n=t,i=n.match(/^(<\/?)([a-zA-Z][a-zA-Z0-9-]*)/);if(!i)return o(t);e+=o(i[1]),e+='<span class="tag">'+o(i[2])+"</span>",n=n.substring(i[0].length);let r,s=/^(\s+)([a-zA-Z-]+)(?:(\s*=\s*)(["'])([^"']*?)\4)?/;for(;null!==(r=n.match(s));)e+=r[1],e+='<span class="attr-name">'+o(r[2])+"</span>",r[3]&&(e+=o(r[3]),e+='<span class="attr-value">'+o(r[4])+o(r[5])+o(r[4])+"</span>"),n=n.substring(r[0].length);return e+=o(n),e}i.js=i.javascript,i.htm=i.html,e.exports=function(t){return function(e){let n=e.textContent,a="string"==typeof t?t.toLowerCase():"javascript",c=i[a];if(!c)return void(e.innerHTML=o(n));if(!c.tokenizer)return void(e.innerHTML=r(o(n),c));let l,d="",p=0,h=c.tagGroupIndex||0;for(c.tokenizer.lastIndex=0;null!==(l=c.tokenizer.exec(n));){if(l.index>p){d+=r(o(n.substring(p,l.index)),c)}let t=l[0];l[1]?d+='<span class="comment">'.concat(o(t),"</span>"):h>0&&l[h]?d+=s(t):d+='<span class="string">'.concat(o(t),"</span>"),p=c.tokenizer.lastIndex}if(p<n.length){d+=r(o(n.substring(p)),c)}e.innerHTML=d}},e.exports.LanguageDefinitions=i},{}],9:[function(t,e,n){e.exports={RenderOnLoad:!0,DefaultRenderable:"CodeEditor-Wrap",DefaultDestinationAddress:"#CodeEditor-Container-Div",Templates:[{Hash:"CodeEditor-Container",Template:"\x3c!-- CodeEditor-Container Rendering Soon --\x3e"}],Renderables:[{RenderableHash:"CodeEditor-Wrap",TemplateHash:"CodeEditor-Container",DestinationAddress:"#CodeEditor-Container-Div"}],TargetElementAddress:"#CodeEditor-Container-Div",CodeDataAddress:!1,Language:"javascript",ReadOnly:!1,Tab:"\t",IndentOn:/[({[]$/,MoveToNewLine:/^[)}\]]/,AddClosing:!0,CatchTab:!0,LineNumbers:!0,DefaultCode:"// Enter your code here\n",CSS:".pict-code-editor-wrap\n{\n\tdisplay: flex;\n\tfont-family: 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace;\n\tfont-size: 14px;\n\tline-height: 1.5;\n\tborder: 1px solid #D0D0D0;\n\tborder-radius: 4px;\n\toverflow: hidden;\n}\n.pict-code-editor-wrap .pict-code-line-numbers\n{\n\twidth: 40px;\n\tmin-width: 40px;\n\tpadding: 10px 0;\n\ttext-align: right;\n\tbackground: #F5F5F5;\n\tborder-right: 1px solid #D0D0D0;\n\tcolor: #999;\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tuser-select: none;\n\tpointer-events: none;\n\tbox-sizing: border-box;\n}\n.pict-code-editor-wrap .pict-code-line-numbers span\n{\n\tdisplay: block;\n\tpadding: 0 8px 0 0;\n}\n.pict-code-editor-wrap .pict-code-editor\n{\n\tmargin: 0;\n\tpadding: 10px 10px 10px 8px;\n\tmin-height: 100px;\n\tflex: 1;\n\tmin-width: 0;\n\toutline: none;\n\ttab-size: 4;\n\twhite-space: pre;\n\toverflow-wrap: normal;\n\tcolor: #383A42;\n\tbackground: #FAFAFA;\n\tcaret-color: #526FFF;\n\tborder-radius: 0 4px 4px 0;\n}\n.pict-code-editor-wrap .pict-code-editor.pict-code-no-line-numbers\n{\n\tpadding-left: 10px;\n\tborder-radius: 4px;\n}\n.pict-code-editor-wrap .pict-code-editor .keyword { color: #A626A4; }\n.pict-code-editor-wrap .pict-code-editor .string { color: #50A14F; }\n.pict-code-editor-wrap .pict-code-editor .number { color: #986801; }\n.pict-code-editor-wrap .pict-code-editor .comment { color: #A0A1A7; font-style: italic; }\n.pict-code-editor-wrap .pict-code-editor .operator { color: #0184BC; }\n.pict-code-editor-wrap .pict-code-editor .punctuation { color: #383A42; }\n.pict-code-editor-wrap .pict-code-editor .function-name { color: #4078F2; }\n.pict-code-editor-wrap .pict-code-editor .property { color: #E45649; }\n.pict-code-editor-wrap .pict-code-editor .tag { color: #E45649; }\n.pict-code-editor-wrap .pict-code-editor .attr-name { color: #986801; }\n.pict-code-editor-wrap .pict-code-editor .attr-value { color: #50A14F; }\n"}},{}],10:[function(t,e,n){const i=t("pict-view"),o=t("./Pict-Code-Highlighter.js"),r=t("./Pict-Section-Code-DefaultConfiguration.js");e.exports=class extends i{constructor(t,e,n){super(t,Object.assign({},r,e),n),this.initialRenderComplete=!1,this.codeJar=null,this._highlightFunction=null,this._language=this.options.Language||"javascript"}onBeforeInitialize(){return super.onBeforeInitialize(),this._codeJarPrototype=null,this.targetElement=!1,this._highlightFunction=o(this._language),super.onBeforeInitialize()}connectCodeJarPrototype(t){if("function"!=typeof t)return"undefined"!=typeof window&&"function"==typeof window.CodeJar?(this.log.trace("PICT-Code Found CodeJar in window.CodeJar."),void(this._codeJarPrototype=window.CodeJar)):(this.log.error("PICT-Code No CodeJar prototype found. Include codejar via script tag or call connectCodeJarPrototype(CodeJar) explicitly."),!1);this._codeJarPrototype=t}onAfterRender(t){return this.pict.CSSMap.injectCSS(),this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),super.onAfterRender(t)}onAfterInitialRender(){if(this._codeJarPrototype||this.connectCodeJarPrototype(),!this._codeJarPrototype)return this.log.error("PICT-Code Cannot initialize editor; no CodeJar prototype available."),!1;if(this.codeJar)return this.log.error("PICT-Code editor is already initialized!"),!1;let t=this.services.ContentAssignment.getElement(this.options.TargetElementAddress);if(!t||t.length<1)return this.log.error("PICT-Code Could not find target element [".concat(this.options.TargetElementAddress,"]!")),this.targetElement=!1,!1;this.targetElement=t[0],this._buildEditorDOM();let e=this._resolveCodeContent(),n={};this.options.Tab&&(n.tab=this.options.Tab),this.options.IndentOn&&(n.indentOn=this.options.IndentOn),this.options.MoveToNewLine&&(n.moveToNewLine=this.options.MoveToNewLine),void 0!==this.options.AddClosing&&(n.addClosing=this.options.AddClosing),void 0!==this.options.CatchTab&&(n.catchTab=this.options.CatchTab),this.customConfigureEditorOptions(n);let i=this._editorElement;this.codeJar=this._codeJarPrototype(i,this._highlightFunction,n),this._resetEditorWrapStyles(),e&&this.codeJar.updateCode(e),this.codeJar.onUpdate(t=>{this._updateLineNumbers(),this.onCodeChange(t)}),this._updateLineNumbers(),this.options.ReadOnly&&i.setAttribute("contenteditable","false")}_buildEditorDOM(){this.targetElement.innerHTML="";let t=document.createElement("div");if(t.className="pict-code-editor-wrap",this.options.LineNumbers){let e=document.createElement("div");e.className="pict-code-line-numbers",t.appendChild(e),this._lineNumbersElement=e}let e=document.createElement("div");e.className="pict-code-editor language-"+this._language,this.options.LineNumbers||(e.className+=" pict-code-no-line-numbers"),t.appendChild(e),this.targetElement.appendChild(t),this._editorElement=e,this._wrapElement=t}_updateLineNumbers(){if(!this.options.LineNumbers||!this._lineNumbersElement||!this._editorElement)return;let t=(this._editorElement.textContent||"").split("\n").length,e="";for(let n=1;n<=t;n++)e+="<span>".concat(n,"</span>");this._lineNumbersElement.innerHTML=e}_resetEditorWrapStyles(){this._editorElement&&(this._editorElement.style.whiteSpace="pre",this._editorElement.style.overflowWrap="normal")}_resolveCodeContent(){if(this.options.CodeDataAddress){const t={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};let e=this.fable.manifest.getValueByHash(t,this.options.CodeDataAddress);if("string"==typeof e)return e;this.log.warn("PICT-Code Address [".concat(this.options.CodeDataAddress,"] did not return a string; it was ").concat(typeof e,"."))}return this.options.DefaultCode||""}customConfigureEditorOptions(t){}onCodeChange(t){if(this.options.CodeDataAddress){const e={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};this.fable.manifest.setValueByHash(e,this.options.CodeDataAddress,t)}}getCode(){return this.codeJar?this.codeJar.toString():(this.log.warn("PICT-Code getCode called before editor initialized."),"")}setCode(t){this.codeJar?(this.codeJar.updateCode(t),this._updateLineNumbers()):this.log.warn("PICT-Code setCode called before editor initialized.")}setLanguage(t){if(this._language=t,this._highlightFunction=o(t),this._editorElement&&(this._editorElement.className="pict-code-editor language-"+t,this.options.LineNumbers||(this._editorElement.className+=" pict-code-no-line-numbers")),this.codeJar){let t=this.codeJar.toString();this.codeJar.destroy(),this.codeJar=this._codeJarPrototype(this._editorElement,this._highlightFunction,{tab:this.options.Tab,catchTab:this.options.CatchTab,addClosing:this.options.AddClosing}),this._resetEditorWrapStyles(),this.codeJar.updateCode(t),this.codeJar.onUpdate(t=>{this._updateLineNumbers(),this.onCodeChange(t)})}}setHighlightFunction(t){if("function"==typeof t){if(this._highlightFunction=t,this.codeJar){let t=this.codeJar.toString();this.codeJar.destroy(),this.codeJar=this._codeJarPrototype(this._editorElement,this._highlightFunction,{tab:this.options.Tab,catchTab:this.options.CatchTab,addClosing:this.options.AddClosing}),this._resetEditorWrapStyles(),this.codeJar.updateCode(t),this.codeJar.onUpdate(t=>{this._updateLineNumbers(),this.onCodeChange(t)})}}else this.log.error("PICT-Code setHighlightFunction requires a function.")}setReadOnly(t){this.options.ReadOnly=t,this._editorElement&&this._editorElement.setAttribute("contenteditable",t?"false":"true")}destroy(){this.codeJar&&(this.codeJar.destroy(),this.codeJar=null)}marshalToView(){if(super.marshalToView(),this.codeJar&&this.options.CodeDataAddress){let t=this._resolveCodeContent();"string"==typeof t&&(this.codeJar.updateCode(t),this._updateLineNumbers())}}marshalFromView(){super.marshalFromView(),this.codeJar&&this.options.CodeDataAddress&&this.onCodeChange(this.codeJar.toString())}},e.exports.default_configuration=r,e.exports.createHighlighter=o},{"./Pict-Code-Highlighter.js":8,"./Pict-Section-Code-DefaultConfiguration.js":9,"pict-view":15}],11:[function(t,e,n){e.exports=t("./views/Pict-View-Content.js"),e.exports.PictContentProvider=t("./providers/Pict-Provider-Content.js")},{"./providers/Pict-Provider-Content.js":12,"./views/Pict-View-Content.js":13}],12:[function(t,e,n){const i=t("pict-provider"),o=t("pict-section-code").createHighlighter;e.exports=class extends i{constructor(t,e,n){super(t,e,n)}highlightCode(t,e){if(!t)return"";let n={textContent:t,innerHTML:""};return o(e)(n),n.innerHTML}generateLineNumbers(t){if(!t)return"<span>1</span>";let e=t.split("\n").length,n="";for(let t=1;t<=e;t++)n+="<span>"+t+"</span>";return n}parseMarkdown(t,e,n){if(!t)return"";let i=t.split("\n"),o=[],r=!1,s=0,a="",c=[],l=!1,d="",p=!1,h=[],u=!1,g=[],f=[],m=()=>{f.length>0&&(o.push("<p>"+f.map(t=>this.parseInline(t,e,n)).join(" ")+"</p>"),f=[])};for(let t=0;t<i.length;t++){let v=i[t];if(!r&&v.trim().match(/^\$\$/)){u?(o.push('<div class="pict-content-katex-display">'+g.join("\n")+"</div>"),u=!1,g=[]):(m(),l&&(o.push("ul"===d?"</ul>":"</ol>"),l=!1),p&&(o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,n)+"</blockquote>"),p=!1,h=[]),u=!0);continue}if(u){g.push(v);continue}let b=v.match(/^(`{3,})/);if(b){let t=b[1].length;if(r){if(t>=s&&v.trim()===b[1]){if("mermaid"===a)o.push('<pre class="mermaid">'+c.join("\n")+"</pre>");else{let t=c.join("\n"),e=this.highlightCode(t,a),n=this.generateLineNumbers(t);o.push('<div class="pict-content-code-wrap"><div class="pict-content-code-line-numbers">'+n+'</div><pre><code class="language-'+this.escapeHTML(a)+'">'+e+"</code></pre></div>")}r=!1,s=0,a="",c=[];continue}c.push(v);continue}m(),l&&(o.push("ul"===d?"</ul>":"</ol>"),l=!1),p&&(o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,n)+"</blockquote>"),p=!1,h=[]),s=t,a=v.replace(/^`{3,}/,"").trim(),r=!0;continue}if(r){c.push(v);continue}if(v.match(/^>\s?/)){p||(m(),l&&(o.push("ul"===d?"</ul>":"</ol>"),l=!1),p=!0,h=[]),h.push(v.replace(/^>\s?/,""));continue}if(p&&(o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,n)+"</blockquote>"),p=!1,h=[]),v.match(/^(-{3,}|\*{3,}|_{3,})\s*$/)){m(),l&&(o.push("ul"===d?"</ul>":"</ol>"),l=!1),o.push("<hr>");continue}let y=v.match(/^(#{1,6})\s+(.+)/);if(y){m(),l&&(o.push("ul"===d?"</ul>":"</ol>"),l=!1);let t=y[1].length,i=this.parseInline(y[2],e,n),r=y[2].toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-");o.push("<h"+t+' id="'+r+'">'+i+"</h"+t+">");continue}let w=v.match(/^(\s*)[-*+]\s+(.*)/);if(w){m(),l&&"ul"===d||(l&&o.push("ul"===d?"</ul>":"</ol>"),o.push("<ul>"),l=!0,d="ul"),o.push("<li>"+this.parseInline(w[2],e,n)+"</li>");continue}let A=v.match(/^(\s*)\d+\.\s+(.*)/);if(A)m(),l&&"ol"===d||(l&&o.push("ul"===d?"</ul>":"</ol>"),o.push("<ol>"),l=!0,d="ol"),o.push("<li>"+this.parseInline(A[2],e,n)+"</li>");else if(l&&""!==v.trim()&&(o.push("ul"===d?"</ul>":"</ol>"),l=!1),""!==v.trim()){if(v.match(/^\|/)&&t+1<i.length&&i[t+1].match(/^\|[\s-:|]+\|/)){m(),l&&(o.push("ul"===d?"</ul>":"</ol>"),l=!1);let r="<table>",s=v.split("|").filter(t=>""!==t.trim());r+="<thead><tr>";for(let t=0;t<s.length;t++)r+="<th>"+this.parseInline(s[t].trim(),e,n)+"</th>";for(r+="</tr></thead>",t++,r+="<tbody>";t+1<i.length&&i[t+1].match(/^\|/);){t++;let o=i[t].split("|").filter(t=>""!==t.trim());r+="<tr>";for(let t=0;t<o.length;t++)r+="<td>"+this.parseInline(o[t].trim(),e,n)+"</td>";r+="</tr>"}r+="</tbody></table>",o.push(r);continue}f.push(v)}else m()}if(m(),l&&o.push("ul"===d?"</ul>":"</ol>"),p&&o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,n)+"</blockquote>"),r){let t=c.join("\n"),e=this.highlightCode(t,a),n=this.generateLineNumbers(t);o.push('<div class="pict-content-code-wrap"><div class="pict-content-code-line-numbers">'+n+"</div><pre><code>"+e+"</code></pre></div>")}return o.join("\n")}parseInline(t,e,n){if(!t)return"";let i=t,o=[];return i=i.replace(/`([^`]+)`/g,(t,e)=>{let n=o.length;return o.push("<code>"+e+"</code>"),"\0CODEINLINE"+n+"\0"}),i=i.replace(/\$([^\$\s][^\$]*?[^\$\s])\$/g,'<span class="pict-content-katex-inline">$1</span>'),i=i.replace(/\$([^\$\s])\$/g,'<span class="pict-content-katex-inline">$1</span>'),i=i.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,(t,e,i)=>{let o=i;if("function"==typeof n){let t=n(i,e);t&&(o=t)}return'<img src="'+o+'" alt="'+e+'">'}),i=i.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(t,n,i)=>{if("function"==typeof e){let t=e(i,n);if(t){let e=t.target?' target="'+t.target+'"':"",i=t.rel?' rel="'+t.rel+'"':"";return'<a href="'+t.href+'"'+e+i+">"+n+"</a>"}}return i.match(/^https?:\/\//)?'<a href="'+i+'" target="_blank" rel="noopener">'+n+"</a>":'<a href="'+i+'">'+n+"</a>"}),i=i.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),i=i.replace(/__([^_]+)__/g,"<strong>$1</strong>"),i=i.replace(/\*([^*]+)\*/g,"<em>$1</em>"),i=i.replace(/_([^_]+)_/g,"<em>$1</em>"),i=i.replace(/\x00CODEINLINE(\d+)\x00/g,(t,e)=>o[parseInt(e)]),i}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}},e.exports.default_configuration={ProviderIdentifier:"Pict-Content",AutoInitialize:!0,AutoInitializeOrdinal:0}},{"pict-provider":7,"pict-section-code":10}],13:[function(t,e,n){const i=t("pict-view");class o extends i{constructor(t,e,n){super(t,e,n)}displayContent(t,e){let n=e||"Pict-Content-Body";this.pict.ContentAssignment.assignContent("#"+n,t);let i=document.getElementById(n);i&&i.parentElement&&(i.parentElement.scrollTop=0),this.enableFullscreenViewers(n,{skipMermaid:!0}),this.renderMermaidDiagrams(n),this.renderKaTeXEquations(n)}renderMermaidDiagrams(t){if("undefined"==typeof mermaid)return;let e=t||"Pict-Content-Body",n=document.getElementById(e);if(!n)return;let i=n.querySelectorAll("pre.mermaid");if(!(i.length<1))try{let t=mermaid.run({nodes:i});t&&"function"==typeof t.then?t.then(()=>{this.enableFullscreenViewers(e,{onlyMermaid:!0})}).catch(t=>{this.log.error("Mermaid rendering error: "+(t&&t.message?t.message:t))}):this.enableFullscreenViewers(e,{onlyMermaid:!0})}catch(t){this.log.error("Mermaid rendering error: "+t.message)}}renderKaTeXEquations(t){if("undefined"==typeof katex)return;let e=t||"Pict-Content-Body",n=document.getElementById(e);if(!n)return;let i=n.querySelectorAll(".pict-content-katex-inline");for(let t=0;t<i.length;t++)try{katex.render(i[t].textContent,i[t],{throwOnError:!1,displayMode:!1})}catch(t){this.log.warn("KaTeX inline error: "+t.message)}let o=n.querySelectorAll(".pict-content-katex-display");for(let t=0;t<o.length;t++)try{katex.render(o[t].textContent,o[t],{throwOnError:!1,displayMode:!0})}catch(t){this.log.warn("KaTeX display error: "+t.message)}}enableFullscreenViewers(t,e){let n=t||"Pict-Content-Body",i=document.getElementById(n);if(!i)return;let o=e||{};if(!o.onlyMermaid){let t=i.querySelectorAll("img:not([data-fullscreen-source])");for(let e=0;e<t.length;e++){let n=t[e];n.setAttribute("data-fullscreen-source","image");let i=n.getAttribute("alt");if(!i){i=(n.getAttribute("src")||"").split("/").pop().split("?")[0]||"Image"}n.setAttribute("data-fullscreen-title",i)}let e=i.querySelectorAll(".pict-content-code-wrap:not([data-code-actions-wired])");for(let t=0;t<e.length;t++)this._wireCodeActions(e[t])}if(!o.skipMermaid){let t=i.querySelectorAll("pre.mermaid:not([data-fullscreen-source])");for(let e=0;e<t.length;e++){let n=t[e];n.querySelector("svg")&&(n.setAttribute("data-fullscreen-source","mermaid"),n.setAttribute("data-fullscreen-title","Mermaid Diagram"))}}i.__pictFullscreenWired||(i.__pictFullscreenWired=!0,i.addEventListener("click",t=>{let e=t.target;for(;e&&e!==i&&!e.hasAttribute("data-fullscreen-source");)e=e.parentElement;e&&e!==i&&e.hasAttribute("data-fullscreen-source")&&(t.preventDefault(),this._openFullscreen(e))}))}_wireCodeActions(t){if(!t||t.hasAttribute("data-code-actions-wired"))return;t.setAttribute("data-code-actions-wired","true");let e=t.querySelector('code[class*="language-"]'),n="Code";if(e){let t=(e.getAttribute("class")||"").match(/language-(\S+)/);t&&(n=t[1]+" code")}t.setAttribute("data-code-language",n);let i=document.createElement("div");i.className="pict-content-code-container";let o=document.createElement("div");o.className="pict-content-code-actions",o.setAttribute("aria-hidden","false");let r=document.createElement("button");r.type="button",r.className="pict-content-code-action-btn",r.setAttribute("aria-label","Open code in fullscreen"),r.setAttribute("title","Open in fullscreen"),r.innerHTML='<svg viewBox="0 0 16 16" aria-hidden="true"><polyline points="3 6 3 3 6 3"></polyline><polyline points="13 6 13 3 10 3"></polyline><polyline points="3 10 3 13 6 13"></polyline><polyline points="13 10 13 13 10 13"></polyline></svg>';let s=document.createElement("button");s.type="button",s.className="pict-content-code-action-btn",s.setAttribute("aria-label","Copy code to clipboard"),s.setAttribute("title","Copy code"),s.innerHTML='<svg viewBox="0 0 16 16" aria-hidden="true"><rect x="5" y="5" width="9" height="9" rx="1.25"></rect><path d="M11 5V3.25A1.25 1.25 0 0 0 9.75 2H3.25A1.25 1.25 0 0 0 2 3.25v6.5A1.25 1.25 0 0 0 3.25 11H5"></path></svg>',o.appendChild(r),o.appendChild(s),t.parentNode.insertBefore(i,t),i.appendChild(t),i.appendChild(o),r.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this._openCodeFullscreen(t)}),s.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this._copyCodeToClipboard(t,s)})}_openCodeFullscreen(t){let e=this._buildFullscreenOverlay();t.setAttribute("data-fullscreen-source","code"),t.setAttribute("data-fullscreen-title",t.getAttribute("data-code-language")||"Code"),e.open(t)}_copyCodeToClipboard(t,e){let n=t.querySelector("code"),i=n?n.textContent:t.textContent,o=()=>{e.classList.add("is-copied"),e.setAttribute("title","Copied!"),setTimeout(()=>{e.classList.remove("is-copied"),e.setAttribute("title","Copy code")},1400)},r=()=>{e.classList.add("is-copy-failed"),e.setAttribute("title","Copy failed"),setTimeout(()=>{e.classList.remove("is-copy-failed"),e.setAttribute("title","Copy code")},1400)};try{if(navigator&&navigator.clipboard&&"function"==typeof navigator.clipboard.writeText)return void navigator.clipboard.writeText(i).then(o).catch(r)}catch(t){}try{let t=document.createElement("textarea");t.value=i,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let e=document.execCommand("copy");document.body.removeChild(t),e?o():r()}catch(t){r()}}_buildFullscreenOverlay(){if(o._FullscreenOverlay)return o._FullscreenOverlay;let t=document.createElement("div");t.className="pict-fullscreen-overlay",t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-labelledby","pict-fullscreen-title"),t.setAttribute("hidden",""),t.innerHTML='<div class="pict-fullscreen-titlebar"><span class="pict-fullscreen-title" id="pict-fullscreen-title"></span><div class="pict-fullscreen-controls"><button type="button" class="pict-fullscreen-btn" data-action="zoom-out" aria-label="Zoom out" title="Zoom out"><svg viewBox="0 0 16 16" aria-hidden="true"><line x1="3" y1="8" x2="13" y2="8"></line></svg></button><button type="button" class="pict-fullscreen-btn" data-action="zoom-reset" aria-label="Reset zoom" title="Reset zoom"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="5"></circle><line x1="8" y1="5" x2="8" y2="11"></line><line x1="5" y1="8" x2="11" y2="8"></line></svg></button><button type="button" class="pict-fullscreen-btn" data-action="zoom-in" aria-label="Zoom in" title="Zoom in"><svg viewBox="0 0 16 16" aria-hidden="true"><line x1="3" y1="8" x2="13" y2="8"></line><line x1="8" y1="3" x2="8" y2="13"></line></svg></button><button type="button" class="pict-fullscreen-btn pict-fullscreen-close" data-action="close" aria-label="Close" title="Close (Esc)"><svg viewBox="0 0 16 16" aria-hidden="true"><line x1="4" y1="4" x2="12" y2="12"></line><line x1="12" y1="4" x2="4" y2="12"></line></svg></button></div></div><div class="pict-fullscreen-stage"><div class="pict-fullscreen-content"></div></div>',document.body.appendChild(t);let e={scale:1,translateX:0,translateY:0,isPanning:!1,didPan:!1,currentKind:"",panStartX:0,panStartY:0,panOrigX:0,panOrigY:0,pinchInitialDistance:0,pinchInitialScale:1},n=t.querySelector(".pict-fullscreen-stage"),i=t.querySelector(".pict-fullscreen-content"),r=t.querySelector(".pict-fullscreen-title"),s=()=>{i.style.transform="translate("+e.translateX+"px, "+e.translateY+"px) scale("+e.scale+")",n.classList.toggle("is-zoomed",e.scale>1.001)},a=(t,i,o)=>{let r=(a=t)<.5?.5:a>8?8:a;var a;let c=n.getBoundingClientRect(),l=void 0!==i?i:c.left+c.width/2,d=void 0!==o?o:c.top+c.height/2,p=l-(c.left+c.width/2),h=d-(c.top+c.height/2),u=r/e.scale;e.translateX=p-u*(p-e.translateX),e.translateY=h-u*(h-e.translateY),e.scale=r,s()},c=()=>{e.scale=1,e.translateX=0,e.translateY=0,s()},l=()=>{t.setAttribute("hidden",""),i.innerHTML="",c(),document.documentElement.style.removeProperty("overflow"),document.removeEventListener("keydown",d)},d=t=>{"Escape"===t.key?(t.preventDefault(),l()):"+"===t.key||"="===t.key?(t.preventDefault(),a(e.scale+.25)):"-"===t.key||"_"===t.key?(t.preventDefault(),a(e.scale-.25)):"0"===t.key&&(t.preventDefault(),c())};t.addEventListener("click",i=>{e.didPan?e.didPan=!1:i.target!==t&&i.target!==n||l()}),t.querySelectorAll("[data-action]").forEach(t=>{t.addEventListener("click",n=>{n.stopPropagation();let i=t.getAttribute("data-action");"close"===i?l():"zoom-in"===i?a(e.scale+.25):"zoom-out"===i?a(e.scale-.25):"zoom-reset"===i&&c()})}),n.addEventListener("wheel",t=>{if("code"===e.currentKind)return;t.preventDefault();let n=.15*(-t.deltaY>0?1:-1);a(e.scale+n,t.clientX,t.clientY)},{passive:!1}),n.addEventListener("pointerdown",t=>{"code"!==e.currentKind&&(e.scale<=1.001||t.target.closest(".pict-fullscreen-controls")||(e.isPanning=!0,e.panStartX=t.clientX,e.panStartY=t.clientY,e.panOrigX=e.translateX,e.panOrigY=e.translateY,n.setPointerCapture(t.pointerId),n.classList.add("is-panning")))}),n.addEventListener("pointermove",t=>{e.isPanning&&(e.translateX=e.panOrigX+(t.clientX-e.panStartX),e.translateY=e.panOrigY+(t.clientY-e.panStartY),s())});let p=t=>{if(e.isPanning){e.isPanning=!1,e.didPan=!0,n.classList.remove("is-panning");try{n.releasePointerCapture(t.pointerId)}catch(t){}}};n.addEventListener("pointerup",p),n.addEventListener("pointercancel",p);let h={};return n.addEventListener("touchstart",t=>{for(let e=0;e<t.touches.length;e++){let n=t.touches[e];h[n.identifier]={x:n.clientX,y:n.clientY}}if(2===t.touches.length){let n=t.touches[0],i=t.touches[1],o=i.clientX-n.clientX,r=i.clientY-n.clientY;e.pinchInitialDistance=Math.sqrt(o*o+r*r),e.pinchInitialScale=e.scale}},{passive:!0}),n.addEventListener("touchmove",t=>{if(2===t.touches.length&&e.pinchInitialDistance>0){t.preventDefault();let n=t.touches[0],i=t.touches[1],o=i.clientX-n.clientX,r=i.clientY-n.clientY,s=Math.sqrt(o*o+r*r)/e.pinchInitialDistance,c=(n.clientX+i.clientX)/2,l=(n.clientY+i.clientY)/2;a(e.pinchInitialScale*s,c,l)}},{passive:!1}),n.addEventListener("touchend",()=>{h={},e.pinchInitialDistance=0}),o._FullscreenOverlay={element:t,content:i,titleEl:r,state:e,open:n=>{let o=n.getAttribute("data-fullscreen-title")||"";r.textContent=o,i.innerHTML="";let s,a=n.getAttribute("data-fullscreen-source");if(e.currentKind=a||"","mermaid"===a){let t=n.querySelector("svg");t?(s=t.cloneNode(!0),s.classList.add("pict-fullscreen-mermaid-svg"),s.removeAttribute("style"),s.removeAttribute("width"),s.removeAttribute("height")):s=n.cloneNode(!0)}else"image"===a?(s=n.cloneNode(!0),s.classList.add("pict-fullscreen-img")):(s=n.cloneNode(!0),s.classList.add("pict-fullscreen-codewrap"));i.appendChild(s);let l=t.querySelectorAll('[data-action="zoom-in"], [data-action="zoom-out"], [data-action="zoom-reset"]');for(let t=0;t<l.length;t++)l[t].style.display="code"===a?"none":"";c(),t.removeAttribute("hidden"),document.documentElement.style.overflow="hidden",document.addEventListener("keydown",d)},close:l},o._FullscreenOverlay}_openFullscreen(t){this._buildFullscreenOverlay().open(t)}showLoading(t,e){let n=e||"Pict-Content-Body",i=t||"Loading content...";this.pict.ContentAssignment.assignContent("#"+n,'<div class="pict-content-loading">'+i+"</div>")}}e.exports=o,e.exports.default_configuration={ViewIdentifier:"Pict-Content",DefaultRenderable:"Pict-Content-Display",DefaultDestinationAddress:"#Pict-Content-Container",AutoRender:!1,CSS:"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.pict-content h1 {\n\t\t\tfont-size: 2em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\tpadding-bottom: 0.3em;\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t.pict-content h2 {\n\t\t\tfont-size: 1.5em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tpadding-bottom: 0.25em;\n\t\t\tmargin-top: 1.5em;\n\t\t}\n\t\t.pict-content h3 {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin-top: 1.25em;\n\t\t}\n\t\t.pict-content h4, .pict-content h5, .pict-content h6 {\n\t\t\tcolor: #5E5549;\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.pict-content p {\n\t\t\tline-height: 1.7;\n\t\t\tcolor: #423D37;\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.pict-content a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.pict-content pre {\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: 0.9em;\n\t\t}\n\t\t.pict-content code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t\t.pict-content-code-wrap {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\tfont-family: 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.5;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow: hidden;\n\t\t\tmargin: 1em 0;\n\t\t\tbackground: #3D3229;\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers {\n\t\t\twidth: 40px;\n\t\t\tmin-width: 40px;\n\t\t\tpadding: 1.25em 0;\n\t\t\ttext-align: right;\n\t\t\tbackground: #342A22;\n\t\t\tborder-right: 1px solid #4A3F35;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-family: inherit;\n\t\t\tfont-size: inherit;\n\t\t\tline-height: inherit;\n\t\t\tuser-select: none;\n\t\t\tpointer-events: none;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers span {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0 8px 0 0;\n\t\t}\n\t\t.pict-content-code-wrap pre {\n\t\t\tmargin: 0;\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em 1.25em 1.25em 8px;\n\t\t\tborder-radius: 0 6px 6px 0;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: inherit;\n\t\t\tflex: 1;\n\t\t\tmin-width: 0;\n\t\t}\n\t\t.pict-content-code-wrap pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t\tfont-family: inherit;\n\t\t}\n\t\t.pict-content-code-wrap .keyword { color: #C678DD; }\n\t\t.pict-content-code-wrap .string { color: #98C379; }\n\t\t.pict-content-code-wrap .number { color: #D19A66; }\n\t\t.pict-content-code-wrap .comment { color: #7F848E; font-style: italic; }\n\t\t.pict-content-code-wrap .operator { color: #56B6C2; }\n\t\t.pict-content-code-wrap .punctuation { color: #E8E0D4; }\n\t\t.pict-content-code-wrap .function-name { color: #61AFEF; }\n\t\t.pict-content-code-wrap .property { color: #E06C75; }\n\t\t.pict-content-code-wrap .tag { color: #E06C75; }\n\t\t.pict-content-code-wrap .attr-name { color: #D19A66; }\n\t\t.pict-content-code-wrap .attr-value { color: #98C379; }\n\t\t.pict-content pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content blockquote {\n\t\t\tborder-left: 4px solid #2E7D74;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: #F7F5F0;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.pict-content blockquote p {\n\t\t\tmargin: 0.25em 0;\n\t\t}\n\t\t.pict-content ul, .pict-content ol {\n\t\t\tpadding-left: 2em;\n\t\t\tline-height: 1.8;\n\t\t}\n\t\t.pict-content li {\n\t\t\tmargin: 0.25em 0;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid #DDD6CA;\n\t\t\tmargin: 2em 0;\n\t\t}\n\t\t.pict-content table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content table th {\n\t\t\tbackground: #F5F0E8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.6em 0.8em;\n\t\t\ttext-align: left;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: #F7F5F0;\n\t\t}\n\t\t.pict-content img {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content pre.mermaid {\n\t\t\tbackground: #fff;\n\t\t\tcolor: #2A241E;\n\t\t\ttext-align: center;\n\t\t\tpadding: 1em;\n\t\t}\n\t\t.pict-content pre.mermaid text,\n\t\t.pict-content pre.mermaid .nodeLabel,\n\t\t.pict-content pre.mermaid .edgeLabel,\n\t\t.pict-content pre.mermaid .label,\n\t\t.pict-content pre.mermaid .cluster-label,\n\t\t.pict-content pre.mermaid span,\n\t\t.pict-content pre.mermaid foreignObject p,\n\t\t.pict-content pre.mermaid foreignObject div,\n\t\t.pict-content pre.mermaid foreignObject span {\n\t\t\tcolor: #2A241E !important;\n\t\t\tfill: #2A241E !important;\n\t\t}\n\t\t.pict-content pre.mermaid .edgePath .path {\n\t\t\tstroke: #5E5549 !important;\n\t\t}\n\t\t.pict-content pre.mermaid .arrowheadPath {\n\t\t\tfill: #5E5549 !important;\n\t\t}\n\t\t.pict-content .pict-content-katex-display {\n\t\t\ttext-align: center;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em;\n\t\t\toverflow-x: auto;\n\t\t}\n\t\t.pict-content .pict-content-katex-inline {\n\t\t\tdisplay: inline;\n\t\t}\n\n\t\t/* Fullscreen viewer for images and mermaid diagrams (click-to-zoom) */\n\t\t.pict-content [data-fullscreen-source] {\n\t\t\tcursor: zoom-in;\n\t\t\toutline: 1px solid transparent;\n\t\t\toutline-offset: 3px;\n\t\t\tborder-radius: 4px;\n\t\t\ttransition: outline-color 0.15s ease;\n\t\t}\n\t\t.pict-content [data-fullscreen-source]:hover {\n\t\t\toutline-color: var(--docuserve-accent, #2E7D74);\n\t\t}\n\t\t/* Code block container with hover-revealed action buttons */\n\t\t.pict-content-code-container {\n\t\t\tposition: relative;\n\t\t\tdisplay: flex;\n\t\t\talign-items: flex-start;\n\t\t\tgap: 8px;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content-code-container > .pict-content-code-wrap {\n\t\t\tmargin: 0;\n\t\t\tflex: 1 1 auto;\n\t\t\tmin-width: 0;\n\t\t}\n\t\t.pict-content-code-actions {\n\t\t\tposition: sticky;\n\t\t\ttop: 64px;\n\t\t\talign-self: flex-start;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 6px;\n\t\t\tflex: 0 0 auto;\n\t\t\tpadding-top: 6px;\n\t\t\topacity: 0;\n\t\t\ttransform: translateX(-4px);\n\t\t\ttransition: opacity 0.15s ease, transform 0.15s ease;\n\t\t\tpointer-events: none;\n\t\t}\n\t\t.pict-content-code-container:hover .pict-content-code-actions,\n\t\t.pict-content-code-container:focus-within .pict-content-code-actions {\n\t\t\topacity: 1;\n\t\t\ttransform: translateX(0);\n\t\t\tpointer-events: auto;\n\t\t}\n\t\t.pict-content-code-action-btn {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\twidth: 28px;\n\t\t\theight: 28px;\n\t\t\tpadding: 0;\n\t\t\tbackground: var(--docuserve-bg-elevated, #FFFFFF);\n\t\t\tcolor: var(--docuserve-text-muted, #5E5549);\n\t\t\tborder: 1px solid var(--docuserve-border, #DDD6CA);\n\t\t\tborder-radius: 6px;\n\t\t\tcursor: pointer;\n\t\t\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n\t\t\ttransition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;\n\t\t}\n\t\t.pict-content-code-action-btn svg {\n\t\t\tdisplay: block;\n\t\t\twidth: 14px;\n\t\t\theight: 14px;\n\t\t\tstroke: currentColor;\n\t\t\tfill: none;\n\t\t\tstroke-width: 1.6;\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-linejoin: round;\n\t\t}\n\t\t.pict-content-code-action-btn:hover {\n\t\t\tbackground: var(--docuserve-accent, #2E7D74);\n\t\t\tcolor: #FFFFFF;\n\t\t\tborder-color: var(--docuserve-accent, #2E7D74);\n\t\t\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);\n\t\t}\n\t\t.pict-content-code-action-btn:focus-visible {\n\t\t\toutline: 2px solid var(--docuserve-accent, #2E7D74);\n\t\t\toutline-offset: 2px;\n\t\t}\n\t\t.pict-content-code-action-btn.is-copied {\n\t\t\tbackground: var(--docuserve-accent, #2E7D74);\n\t\t\tcolor: #FFFFFF;\n\t\t\tborder-color: var(--docuserve-accent, #2E7D74);\n\t\t}\n\t\t.pict-content-code-action-btn.is-copy-failed {\n\t\t\tbackground: #B23A3A;\n\t\t\tcolor: #FFFFFF;\n\t\t\tborder-color: #B23A3A;\n\t\t}\n\t\t.pict-fullscreen-overlay {\n\t\t\tposition: fixed;\n\t\t\tinset: 0;\n\t\t\tz-index: 9999;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tbackground: rgba(0, 0, 0, 0.62);\n\t\t\tbackdrop-filter: blur(6px);\n\t\t\t-webkit-backdrop-filter: blur(6px);\n\t\t\tcolor: var(--docuserve-text, #2A241E);\n\t\t}\n\t\t.pict-fullscreen-overlay[hidden] {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.pict-fullscreen-titlebar {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: space-between;\n\t\t\tgap: 1em;\n\t\t\theight: 48px;\n\t\t\tpadding: 0 1em;\n\t\t\tbackground: var(--docuserve-bg-elevated, #FFFFFF);\n\t\t\tcolor: var(--docuserve-text-strong, #1A1612);\n\t\t\tborder-bottom: 1px solid var(--docuserve-border, #DDD6CA);\n\t\t\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);\n\t\t\tflex: 0 0 auto;\n\t\t}\n\t\t.pict-fullscreen-title {\n\t\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n\t\t\tfont-size: 0.95em;\n\t\t\tfont-weight: 600;\n\t\t\tletter-spacing: 0.01em;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcolor: var(--docuserve-text-strong, #1A1612);\n\t\t}\n\t\t.pict-fullscreen-controls {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tgap: 4px;\n\t\t}\n\t\t.pict-fullscreen-btn {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\twidth: 32px;\n\t\t\theight: 32px;\n\t\t\tpadding: 0;\n\t\t\tbackground: transparent;\n\t\t\tborder: 1px solid transparent;\n\t\t\tborder-radius: 6px;\n\t\t\tcolor: var(--docuserve-text-muted, #5E5549);\n\t\t\tcursor: pointer;\n\t\t\ttransition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;\n\t\t}\n\t\t.pict-fullscreen-btn svg {\n\t\t\tdisplay: block;\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tstroke: currentColor;\n\t\t\tfill: none;\n\t\t\tstroke-width: 1.75;\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-linejoin: round;\n\t\t}\n\t\t.pict-fullscreen-btn:hover {\n\t\t\tbackground: var(--docuserve-border-soft, #EAE3D8);\n\t\t\tcolor: var(--docuserve-text-strong, #1A1612);\n\t\t}\n\t\t.pict-fullscreen-btn:focus-visible {\n\t\t\toutline: 2px solid var(--docuserve-accent, #2E7D74);\n\t\t\toutline-offset: 2px;\n\t\t}\n\t\t.pict-fullscreen-close:hover {\n\t\t\tbackground: var(--docuserve-accent, #2E7D74);\n\t\t\tcolor: #FFFFFF;\n\t\t}\n\t\t.pict-fullscreen-stage {\n\t\t\tflex: 1 1 auto;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\toverflow: hidden;\n\t\t\tpadding: 1.5em;\n\t\t\tcursor: zoom-in;\n\t\t\ttouch-action: none;\n\t\t}\n\t\t.pict-fullscreen-stage.is-zoomed {\n\t\t\tcursor: grab;\n\t\t}\n\t\t.pict-fullscreen-stage.is-panning {\n\t\t\tcursor: grabbing;\n\t\t}\n\t\t.pict-fullscreen-content {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmax-width: 100%;\n\t\t\tmax-height: 100%;\n\t\t\ttransform-origin: center center;\n\t\t\ttransition: transform 0.05s linear;\n\t\t\twill-change: transform;\n\t\t}\n\t\t.pict-fullscreen-content > * {\n\t\t\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.45);\n\t\t}\n\t\t.pict-fullscreen-content .pict-fullscreen-img {\n\t\t\tmax-width: 90vw;\n\t\t\tmax-height: calc(100vh - 96px);\n\t\t\twidth: auto;\n\t\t\theight: auto;\n\t\t\tobject-fit: contain;\n\t\t\tbackground: var(--docuserve-bg-elevated, #FFFFFF);\n\t\t\tpadding: 12px;\n\t\t\tborder-radius: 6px;\n\t\t}\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg {\n\t\t\twidth: min(90vw, 1400px);\n\t\t\theight: auto;\n\t\t\tmax-height: calc(100vh - 96px);\n\t\t\tbackground: var(--docuserve-mermaid-bg, #FFFFFF);\n\t\t\tpadding: 16px;\n\t\t\tborder-radius: 6px;\n\t\t}\n\t\t.pict-fullscreen-content .pict-fullscreen-codewrap {\n\t\t\tmax-width: 90vw;\n\t\t\tmax-height: calc(100vh - 96px);\n\t\t\tmargin: 0;\n\t\t\toverflow: auto;\n\t\t\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.45);\n\t\t}\n\t",Templates:[{Hash:"Pict-Content-Template",Template:'\n<div class="pict-content" id="Pict-Content-Body">\n\t<div class="pict-content-loading">Loading content...</div>\n</div>\n'}],Renderables:[{RenderableHash:"Pict-Content-Display",TemplateHash:"Pict-Content-Template",DestinationAddress:"#Pict-Content-Container",RenderMethod:"replace"}]}},{"pict-view":15}],14:[function(t,e,n){e.exports={name:"pict-view",version:"1.0.68",description:"Pict View Base Class",main:"source/Pict-View.js",scripts:{test:"npx quack test",tests:"npx quack test -g",start:"node source/Pict-View.js",coverage:"npx quack coverage",build:"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-view-image:local","docker-dev-run":'docker run -it -d --name pict-view-dev -p 30001:8080 -p 38086:8086 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-view" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-view-image:local',"docker-dev-shell":"docker exec -it pict-view-dev /bin/bash",types:"tsc -p .",lint:"eslint source/**"},types:"types/source/Pict-View.d.ts",repository:{type:"git",url:"git+https://github.com/stevenvelozo/pict-view.git"},author:"steven velozo <steven@velozo.com>",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/pict-view/issues"},homepage:"https://github.com/stevenvelozo/pict-view#readme",devDependencies:{"@eslint/js":"^9.39.1","browser-env":"^3.3.0",eslint:"^9.39.1",pict:"^1.0.363",quackage:"^1.0.65",typescript:"^5.9.3"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{fable:"^3.1.67","fable-serviceproviderbase":"^3.0.19"}}},{}],15:[function(t,e,n){const i=t("fable-serviceproviderbase"),o=t("../package.json"),r={DefaultRenderable:!1,DefaultDestinationAddress:!1,DefaultTemplateRecordAddress:!1,ViewIdentifier:!1,AutoInitialize:!0,AutoInitializeOrdinal:0,AutoRender:!0,AutoRenderOrdinal:0,AutoSolveWithApp:!0,AutoSolveOrdinal:0,CSSHash:!1,CSS:!1,CSSProvider:!1,CSSPriority:500,Templates:[],DefaultTemplates:[],Renderables:[],Manifests:{}};e.exports=class extends i{constructor(t,e,n){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),n),this.fable,this.options,this.UUID,this.Hash,this.log;const i=this.Hash===this.UUID;this.UUID="V-".concat(this.UUID),i&&(this.Hash=this.UUID),this.options.ViewIdentifier||(this.options.ViewIdentifier="AutoViewID-".concat(this.fable.getUUID())),this.serviceType="PictView",this._Package=o,this.pict=this.fable,this.AppData=this.pict.AppData,this.Bundle=this.pict.Bundle,this.initializeTimestamp=!1,this.lastSolvedTimestamp=!1,this.lastRenderedTimestamp=!1,this.lastMarshalFromViewTimestamp=!1,this.lastMarshalToViewTimestamp=!1,this.pict.instantiateServiceProviderIfNotExists("TransactionTracking");for(let t=0;t<this.options.Templates.length;t++){let e=this.options.Templates[t];"Hash"in e&&"Template"in e?(e.Source||(e.Source="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," options object.")),this.pict.TemplateProvider.addTemplate(e.Hash,e.Template,e.Source)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Template ").concat(t," in the options array."),e)}for(let t=0;t<this.options.DefaultTemplates.length;t++){let e=this.options.DefaultTemplates[t];"Postfix"in e&&"Template"in e?(e.Source||(e.Source="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," options object.")),this.pict.TemplateProvider.addDefaultTemplate(e.Prefix,e.Postfix,e.Template,e.Source)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Default Template ").concat(t," in the options array."),e)}if(this.options.CSS){let t=this.options.CSSHash?this.options.CSSHash:"View-".concat(this.options.ViewIdentifier),e=this.options.CSSProvider?this.options.CSSProvider:t;this.pict.CSSMap.addCSS(t,this.options.CSS,e,this.options.CSSPriority)}this.renderables={};for(let t=0;t<this.options.Renderables.length;t++){let e=this.options.Renderables[t];this.addRenderable(e)}}addRenderable(t,e,n,i,o){let r;if("object"==typeof t)r=t;else{r={RenderableHash:t,TemplateHash:e,DefaultTemplateRecordAddress:n,ContentDestinationAddress:i,RenderMethod:"string"!=typeof o?o:"replace"}}"string"!=typeof r.RenderableHash||"string"!=typeof r.TemplateHash?this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Renderable; RenderableHash or TemplateHash are invalid."),r):(this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," adding renderable [").concat(r.RenderableHash,"] pointed to template ").concat(r.TemplateHash,".")),this.renderables[r.RenderableHash]=r)}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialize:")),this.initializeTimestamp?(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialize called but initialization is already completed. Aborting.")),!1):(this.onBeforeInitialize(),this.onInitialize(),this.onAfterInitialize(),this.initializeTimestamp=this.pict.log.getTimeStamp(),!0)}initializeAsync(t){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initializeAsync:")),this.initializeTimestamp)return this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," async initialize called but initialization is already completed. Aborting.")),t();{let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate");this.pict.LogNoisiness>0&&this.log.info("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," beginning initialization...")),e.anticipate(this.onBeforeInitializeAsync.bind(this)),e.anticipate(this.onInitializeAsync.bind(this)),e.anticipate(this.onAfterInitializeAsync.bind(this)),e.wait(e=>(e&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialization failed: ").concat(e.message||e),{stack:e.stack}),this.initializeTimestamp=this.pict.log.getTimeStamp(),this.pict.LogNoisiness>0&&this.log.info("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialization complete.")),t()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onBeforeRender(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeRender:")),!0}onBeforeRenderAsync(t,e){return this.onBeforeRender(e),t()}onBeforeProject(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeProject:")),!0}onBeforeProjectAsync(t,e){return this.onBeforeProject(e),t()}buildRenderOptions(t,e,n){let i={Valid:!0};return i.RenderableHash="string"==typeof t?t:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable,i.RenderableHash||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not find a suitable RenderableHash ").concat(i.RenderableHash," (param ").concat(t,"because it is not a valid renderable.")),i.Valid=!1),i.Renderable=this.renderables[i.RenderableHash],i.Renderable||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(i.RenderableHash," (param ").concat(t,") because it does not exist.")),i.Valid=!1),i.DestinationAddress="string"==typeof e?e:"string"==typeof i.Renderable.ContentDestinationAddress?i.Renderable.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress&&this.options.DefaultDestinationAddress,i.DestinationAddress||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(i.RenderableHash," (param ").concat(t,") because it does not have a valid destination address (param ").concat(e,").")),i.Valid=!1),"object"==typeof n?(i.RecordAddress="Passed in as object",i.Record=n):(i.RecordAddress="string"==typeof n?n:"string"==typeof i.Renderable.DefaultTemplateRecordAddress?i.Renderable.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,i.Record="string"==typeof i.RecordAddress?this.pict.DataProvider.getDataByAddress(i.RecordAddress):void 0),i}assignRenderContent(t,e,n){return this.pict.ContentAssignment.projectContent(t.RenderMethod,e,n,t.TestAddress)}render(t,e,n,i){return this.renderWithScope(this,t,e,n,i)}renderWithScope(t,e,n,i,o){let r,s,a,c="string"==typeof e?e:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable;return c?("__Virtual"==c?r={RenderableHash:"__Virtual",TemplateHash:this.renderables[this.options.DefaultRenderable].TemplateHash,ContentDestinationAddress:"string"==typeof n?n:"string"==typeof r.ContentDestinationAddress?r.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null,RenderMethod:"virtual-assignment",TransactionHash:o&&o.TransactionHash,RootRenderableViewHash:o&&o.RootRenderableViewHash}:(r=Object.assign({},this.renderables[c]),r.ContentDestinationAddress="string"==typeof n?n:"string"==typeof r.ContentDestinationAddress?r.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null),r.TransactionHash||(r.TransactionHash="ViewRender-V-".concat(this.options.ViewIdentifier,"-R-").concat(c,"-U-").concat(this.pict.getUUID()),r.RootRenderableViewHash=this.Hash,this.pict.TransactionTracking.registerTransaction(r.TransactionHash)),r?r.ContentDestinationAddress?("object"==typeof i?(a=i,s="Passed in as object"):(s="string"==typeof i?i:"string"==typeof r.DefaultTemplateRecordAddress?r.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,a="string"==typeof s?this.pict.DataProvider.getDataByAddress(s):void 0),this.onBeforeRender(r),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] Renderable[").concat(c,"] Destination[").concat(r.ContentDestinationAddress,"] TemplateRecordAddress[").concat(s,"] render:")),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Beginning Render of Renderable[").concat(c,"] to Destination [").concat(r.ContentDestinationAddress,"]...")),r.Content=this.pict.parseTemplateByHash(r.TemplateHash,a,null,[this],t,{RootRenderable:"object"==typeof o?o:r}),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Assigning Renderable[").concat(c,"] content length ").concat(r.Content.length," to Destination [").concat(r.ContentDestinationAddress,"] using render method [").concat(r.RenderMethod,"].")),this.onBeforeProject(r),this.onProject(r),"virtual-assignment"!==r.RenderMethod&&(this.onAfterProject(r),this.onAfterRender(r)),!0):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it does not have a valid destination address.")),!1):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it does not exist.")),!1)):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it is not a valid renderable.")),!1)}renderAsync(t,e,n,i,o){return this.renderWithScopeAsync(this,t,e,n,i,o)}renderWithScopeAsync(t,e,n,i,o,r){let s,a,c,l="string"==typeof e?e:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable,d="function"==typeof r?r:"function"==typeof i?i:"function"==typeof n?n:"function"==typeof e?e:"function"==typeof o?o:null;if(d||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),d=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync Auto Callback Error: ").concat(t),t)}),!l)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not asynchronously render ").concat(l," (param ").concat(e,"because it is not a valid renderable.")),d(new Error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not asynchronously render ").concat(l," (param ").concat(e,"because it is not a valid renderable.")));if("__Virtual"==l?s={RenderableHash:"__Virtual",TemplateHash:this.renderables[this.options.DefaultRenderable].TemplateHash,ContentDestinationAddress:"string"==typeof n?n:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null,RenderMethod:"virtual-assignment",TransactionHash:o&&"function"!=typeof o&&o.TransactionHash,RootRenderableViewHash:o&&"function"!=typeof o&&o.RootRenderableViewHash}:(s=Object.assign({},this.renderables[l]),s.ContentDestinationAddress="string"==typeof n?n:"string"==typeof s.ContentDestinationAddress?s.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null),s.TransactionHash||(s.TransactionHash="ViewRender-V-".concat(this.options.ViewIdentifier,"-R-").concat(l,"-U-").concat(this.pict.getUUID()),s.RootRenderableViewHash=this.Hash,this.pict.TransactionTracking.registerTransaction(s.TransactionHash)),!s)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not exist.")),d(new Error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not exist.")));if(!s.ContentDestinationAddress)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not have a valid destination address.")),d(new Error("Could not render ".concat(l)));"object"==typeof i?(c=i,a="Passed in as object"):(a="string"==typeof i?i:"string"==typeof s.DefaultTemplateRecordAddress?s.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,c="string"==typeof a?this.pict.DataProvider.getDataByAddress(a):void 0),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] Renderable[").concat(l,"] Destination[").concat(s.ContentDestinationAddress,"] TemplateRecordAddress[").concat(a,"] renderAsync:")),this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Beginning Asynchronous Render (callback-style)..."));let p=this.fable.newAnticipate();p.anticipate(t=>{this.onBeforeRenderAsync(t,s)}),p.anticipate(n=>{this.pict.parseTemplateByHash(s.TemplateHash,c,(t,i)=>t?(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render (asynchronously) ").concat(l," (param ").concat(e,") because it did not parse the template."),t),n(t)):(s.Content=i,n()),[this],t,{RootRenderable:"object"==typeof o?o:s})}),p.anticipate(t=>{this.onBeforeProjectAsync(t,s)}),p.anticipate(t=>{this.onProjectAsync(t,s)}),"virtual-assignment"!==s.RenderMethod&&(p.anticipate(t=>{this.onAfterProjectAsync(t,s)}),p.anticipate(t=>{this.onAfterRenderAsync(t,s)})),p.wait(d)}renderDefaultAsync(t){this.renderAsync(t)}basicRender(t,e,n){return this.basicRenderWithScope(this,t,e,n)}basicRenderWithScope(t,e,n,i){let o=this.buildRenderOptions(e,n,i);return o.Valid?(this.assignRenderContent(o.Renderable,o.DestinationAddress,this.pict.parseTemplateByHash(o.Renderable.TemplateHash,o.Record,null,[this],t,{RootRenderable:o.Renderable})),!0):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not perform a basic render of ").concat(o.RenderableHash," because it is not valid.")),!1)}basicRenderAsync(t,e,n,i){return this.basicRenderWithScopeAsync(this,t,e,n,i)}basicRenderWithScopeAsync(t,e,n,i,o){let r="function"==typeof o?o:"function"==typeof i?i:"function"==typeof n?n:"function"==typeof e?e:null;r||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," basicRenderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),r=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," basicRenderAsync Auto Callback Error: ").concat(t),t)});const s=this.buildRenderOptions(e,n,i);if(!s.Valid){let t="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not perform a basic render of ").concat(s.RenderableHash," because it is not valid.");return this.log.error(t),r(new Error(t))}this.pict.parseTemplateByHash(s.Renderable.TemplateHash,s.Record,(t,e)=>t?(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render (asynchronously) ").concat(s.RenderableHash," because it did not parse the template."),t),r(t)):(this.assignRenderContent(s.Renderable,s.DestinationAddress,e),r()),[this],t,{RootRenderable:s.Renderable})}onProject(t){this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onProject:")),"virtual-assignment"===t.RenderMethod&&this.pict.TransactionTracking.pushToTransactionQueue(t.TransactionHash,{ViewHash:this.Hash,Renderable:t},"Deferred-Post-Content-Assignment"),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Assigning Renderable[").concat(t.RenderableHash,"] content length ").concat(t.Content.length," to Destination [").concat(t.ContentDestinationAddress,"] using Async render method ").concat(t.RenderMethod,".")),this.pict.ContentAssignment.projectContent(t.RenderMethod,t.ContentDestinationAddress,t.Content,t.TestAddress),this.lastRenderedTimestamp=this.pict.log.getTimeStamp()}onProjectAsync(t,e){return this.onProject(e),t()}onAfterRender(t){if(this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRender:")),t&&t.RootRenderableViewHash===this.Hash){const e=this.pict.TransactionTracking.clearTransactionQueue(t.TransactionHash)||[];for(const n of e){const e=this.pict.views[n.Data.ViewHash];e?(e.onAfterProject(),e.onAfterRender(n.Data.Renderable)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRender: Could not find view for transaction hash ").concat(t.TransactionHash," and ViewHash ").concat(n.Data.ViewHash,"."))}this.pict.TransactionTracking.unregisterTransaction(t.TransactionHash)}return!0}onAfterRenderAsync(t,e){this.onAfterRender(e);const n=this.fable.newAnticipate(),i=e&&e.RootRenderableViewHash===this.Hash;if(i){const t=this.pict.TransactionTracking.clearTransactionQueue(e.TransactionHash)||[];for(const i of t){const t=this.pict.views[i.Data.ViewHash];t?(n.anticipate(t.onAfterProjectAsync.bind(t)),n.anticipate(e=>{t.onAfterRenderAsync(e,i.Data.Renderable)})):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRenderAsync: Could not find view for transaction hash ").concat(e.TransactionHash," and ViewHash ").concat(i.Data.ViewHash,"."))}}return n.wait(n=>(i&&e&&e.TransactionHash&&this.pict.TransactionTracking.unregisterTransaction(e.TransactionHash),t(n)))}onAfterProject(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterProject:")),!0}onAfterProjectAsync(t,e){return t()}onBeforeSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeSolve:")),!0}onBeforeSolveAsync(t){return this.onBeforeSolve(),t()}onSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onSolve:")),!0}onSolveAsync(t){return this.onSolve(),t()}solve(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeSolve(),this.onSolve(),this.onAfterSolve(),this.lastSolvedTimestamp=this.pict.log.getTimeStamp(),!0}solveAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),n="function"==typeof t?t:null;n||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeSolveAsync.bind(this)),e.anticipate(this.onSolveAsync.bind(this)),e.anticipate(this.onAfterSolveAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," solveAsync() complete.")),this.lastSolvedTimestamp=this.pict.log.getTimeStamp(),n(t)))}onAfterSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterSolve:")),!0}onAfterSolveAsync(t){return this.onAfterSolve(),t()}onBeforeMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeMarshalFromView:")),!0}onBeforeMarshalFromViewAsync(t){return this.onBeforeMarshalFromView(),t()}onMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onMarshalFromView:")),!0}onMarshalFromViewAsync(t){return this.onMarshalFromView(),t()}marshalFromView(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeMarshalFromView(),this.onMarshalFromView(),this.onAfterMarshalFromView(),this.lastMarshalFromViewTimestamp=this.pict.log.getTimeStamp(),!0}marshalFromViewAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),n="function"==typeof t?t:null;n||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalFromViewAsync.bind(this)),e.anticipate(this.onMarshalFromViewAsync.bind(this)),e.anticipate(this.onAfterMarshalFromViewAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," marshalFromViewAsync() complete.")),this.lastMarshalFromViewTimestamp=this.pict.log.getTimeStamp(),n(t)))}onAfterMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterMarshalFromView:")),!0}onAfterMarshalFromViewAsync(t){return this.onAfterMarshalFromView(),t()}onBeforeMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeMarshalToView:")),!0}onBeforeMarshalToViewAsync(t){return this.onBeforeMarshalToView(),t()}onMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onMarshalToView:")),!0}onMarshalToViewAsync(t){return this.onMarshalToView(),t()}marshalToView(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeMarshalToView(),this.onMarshalToView(),this.onAfterMarshalToView(),this.lastMarshalToViewTimestamp=this.pict.log.getTimeStamp(),!0}marshalToViewAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),n="function"==typeof t?t:null;n||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),n=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalToViewAsync.bind(this)),e.anticipate(this.onMarshalToViewAsync.bind(this)),e.anticipate(this.onAfterMarshalToViewAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," marshalToViewAsync() complete.")),this.lastMarshalToViewTimestamp=this.pict.log.getTimeStamp(),n(t)))}onAfterMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterMarshalToView:")),!0}onAfterMarshalToViewAsync(t){return this.onAfterMarshalToView(),t()}get isPictView(){return!0}}},{"../package.json":14,"fable-serviceproviderbase":2}],16:[function(t,e,n){e.exports={Name:"Pict Docuserve",Hash:"Docuserve",MainViewportViewIdentifier:"Docuserve-Layout",AutoSolveAfterInitialize:!0,AutoRenderMainViewportViewAfterInitialize:!1,AutoRenderViewsAfterInitialize:!1,pict_configuration:{Product:"Docuserve-Pict-Application"}}},{}],17:[function(t,e,n){const i=t("pict-application"),o=t("./providers/Pict-Provider-Docuserve-Documentation.js"),r=t("./views/PictView-Docuserve-Layout.js"),s=t("./views/PictView-Docuserve-TopBar.js"),a=t("./views/PictView-Docuserve-Sidebar.js"),c=t("./views/PictView-Docuserve-Splash.js"),l=t("./views/PictView-Docuserve-Content.js"),d=t("./views/PictView-Docuserve-Search.js");e.exports=class extends i{constructor(t,e,n){super(t,e,n),this.pict.addProvider("Docuserve-Documentation",o.default_configuration,o),this.pict.addView("Docuserve-Layout",r.default_configuration,r),this.pict.addView("Docuserve-TopBar",s.default_configuration,s),this.pict.addView("Docuserve-Sidebar",a.default_configuration,a),this.pict.addView("Docuserve-Splash",c.default_configuration,c),this.pict.addView("Docuserve-Content",l.default_configuration,l),this.pict.addView("Docuserve-Search",d.default_configuration,d)}onAfterInitializeAsync(t){try{let t=(window.location.pathname||"/").replace(/\/[^/]*$/,"/"),e="docuserve-theme:"+window.location.origin+t,n=localStorage.getItem(e);"light"!==n&&"dark"!==n||document.documentElement.setAttribute("data-theme",n)}catch(t){}this.pict.AppData.Docuserve={CatalogLoaded:!1,Catalog:null,CoverLoaded:!1,Cover:null,SidebarLoaded:!1,SidebarGroups:[],TopBarLoaded:!1,TopBar:null,VersionLoaded:!1,Version:null,ErrorPageLoaded:!1,ErrorPageHTML:null,KeywordIndexLoaded:!1,KeywordDocumentCount:0,CurrentGroup:"",CurrentModule:"",CurrentPath:"",SidebarVisible:!0,DocsBaseURL:"",CatalogURL:"retold-catalog.json"},this.pict.providers["Docuserve-Documentation"].loadCatalog(()=>{let e=this.pict.AppData.Docuserve,n="";return e.CoverLoaded&&e.Cover&&e.Cover.Title?n=e.Cover.Title.replace(/<[^>]*>/g,"").trim():e.TopBarLoaded&&e.TopBar&&e.TopBar.Brand&&(n=e.TopBar.Brand.replace(/<[^>]*>/g,"").trim()),n&&(e.VersionLoaded&&e.Version&&e.Version.Version?document.title="".concat(n," v").concat(e.Version.Version," Documentation"):document.title=n),this.pict.views["Docuserve-Layout"].render(),super.onAfterInitializeAsync(t)})}resolveHash(){let t=(window.location.hash||"").replace(/^#\/?/,"");if(!t||"Home"===t)return void this.showView("Docuserve-Splash");let e=t.split("/");if("search"===e[0]){let t=decodeURIComponent(e.slice(1).join("/"));return void this.navigateToSearch(t)}if("page"===e[0]&&e.length>=2){let t=e.slice(1).join("/");return void this.navigateToPage(t)}if("doc"===e[0]&&e.length>=3){let t=e[1],n=e[2];if(e.length>=4){let i=e.slice(3).join("/");this.navigateToModulePath(t,n,i)}else this.navigateToModule(t,n);return}this.navigateToPage(t)}navigateTo(t){window.location.hash=t}showView(t){t in this.pict.views&&(this.pict.AppData.Docuserve.CurrentGroup="",this.pict.AppData.Docuserve.CurrentModule="",this.pict.AppData.Docuserve.CurrentPath="",this.pict.views[t].render(),this.pict.views["Docuserve-Sidebar"].clearModuleNav(),this.pict.views["Docuserve-Sidebar"].renderSidebarGroups())}navigateToModule(t,e){this.navigateToModulePath(t,e,"README.md")}navigateToModulePath(t,e,n){let i=this.pict.providers["Docuserve-Documentation"],o=this.pict.views["Docuserve-Content"],r=this.pict.views["Docuserve-Sidebar"];this.pict.AppData.Docuserve.CurrentGroup=t,this.pict.AppData.Docuserve.CurrentModule=e,this.pict.AppData.Docuserve.CurrentPath=n,o.render(),o.showLoading(),r.renderSidebarGroups(),r.renderModuleNav(t,e);let s=i.resolveDocumentURL(t,e,n||"README.md");if(!s)return void o.displayContent(i.getErrorPageHTML(t+"/"+e));let a=n||"README.md";i.fetchDocument(s,(n,r)=>{if(!n)return void o.displayContent(r);let s=t+"/"+e+"/"+a;i.fetchLocalDocument(s,(t,e)=>{o.displayContent(e)},t,e,a)},t,e,a)}navigateToPage(t){let e=this.pict.providers["Docuserve-Documentation"],n=this.pict.views["Docuserve-Content"],i=this.pict.views["Docuserve-Sidebar"];this.pict.AppData.Docuserve.CurrentGroup="",this.pict.AppData.Docuserve.CurrentModule="",this.pict.AppData.Docuserve.CurrentPath=t,n.render(),n.showLoading(),i.clearModuleNav(),i.renderSidebarGroups();let o=t;o.match(/\.md$/)||(o+=".md"),e.fetchLocalDocument(o,(t,e)=>{n.displayContent(e)})}navigateToSearch(t){let e=this.pict.views["Docuserve-Sidebar"],n=this.pict.views["Docuserve-Search"];this.pict.AppData.Docuserve.CurrentGroup="",this.pict.AppData.Docuserve.CurrentModule="",this.pict.AppData.Docuserve.CurrentPath="",e.clearModuleNav(),e.renderSidebarGroups(),n.render(),n.showSearch(t||"")}},e.exports.default_configuration=t("./Pict-Application-Docuserve-Configuration.json")},{"./Pict-Application-Docuserve-Configuration.json":16,"./providers/Pict-Provider-Docuserve-Documentation.js":18,"./views/PictView-Docuserve-Content.js":19,"./views/PictView-Docuserve-Layout.js":20,"./views/PictView-Docuserve-Search.js":21,"./views/PictView-Docuserve-Sidebar.js":22,"./views/PictView-Docuserve-Splash.js":23,"./views/PictView-Docuserve-TopBar.js":24,"pict-application":5}],18:[function(t,e,n){const i=t("pict-provider"),o=t("lunr"),r=t("pict-section-content").PictContentProvider;e.exports=class extends i{constructor(t,e,n){super(t,e,n),this._Catalog=null,this._ContentCache={},this._ContentProvider=this.pict.addProvider("Pict-Content",r.default_configuration,r)}_createLinkResolver(t,e,n){return(i,o)=>{if(i.match(/^\//)||i.match(/^[^:]+\.md/)){return{href:this.convertDocLink(i,t,e,n)}}let r=this.resolveGitHubURLToRoute(i);return r?{href:r}:null}}_createImageResolver(t){let e="";if(t){let n=t.lastIndexOf("/");n>=0&&(e=t.substring(0,n+1))}return(t,n)=>t.match(/^https?:\/\//)||t.match(/^data:/)||t.match(/^\//)?t:e+t}loadCatalog(t){let e="function"==typeof t?t:()=>{},n=this.pict.AppData.Docuserve.CatalogURL||"retold-catalog.json",i=()=>{let t=6,n=()=>{if(t--,t<=0){if(this.pict.AppData.Docuserve.SidebarGroups&&!(this.pict.AppData.Docuserve.SidebarGroups.length<1))return e();this.autoDiscoverSidebar(e)}};this.loadCover(n),this.loadSidebar(n),this.loadTopbar(n),this.loadErrorPage(n),this.loadKeywordIndex(n),this.loadVersion(n)};fetch(n).then(t=>t.ok?t.json():(this.log.info("Docuserve: No catalog at [".concat(n,"]; running in standalone mode.")),null)).then(t=>{t&&(this._Catalog=t,this.pict.AppData.Docuserve.Catalog=t,this.pict.AppData.Docuserve.CatalogLoaded=!0,this.buildSidebarData(t)),i()}).catch(t=>{this.log.info("Docuserve: Catalog load error (".concat(t,"); continuing in standalone mode.")),i()})}autoDiscoverSidebar(t){let e="function"==typeof t?t:()=>{},n=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(n+"README.md").then(t=>t.ok?t.text():null).then(t=>{if(t){let e=t.match(/^#+\s+(.+)/m),n=e?e[1].trim():"Docs";this.pict.AppData.Docuserve.SidebarGroups=[{Name:n,Key:"docs",Route:"#/page/README",Modules:[]}],this.pict.AppData.Docuserve.CoverLoaded||(this.pict.AppData.Docuserve.Cover={Title:n,Tagline:"",Description:"",Highlights:[],Actions:[{Text:"Read the Docs",Href:"README.md"}]},this.pict.AppData.Docuserve.CoverLoaded=!0)}else this.log.info("Docuserve: No README.md found; sidebar will be empty.");return e()}).catch(t=>(this.log.info("Docuserve: README.md discovery failed (".concat(t,").")),e()))}loadCover(t){let e="function"==typeof t?t:()=>{},n=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(n+"_cover.md").then(t=>t.ok?t.text():null).then(t=>t?(this.pict.AppData.Docuserve.Cover=this.parseCover(t),this.pict.AppData.Docuserve.CoverLoaded=!0,e()):(this.log.info("Docuserve: No _cover.md found; splash will use catalog data."),e())).catch(t=>(this.log.warn("Docuserve: Error loading _cover.md: ".concat(t)),e()))}parseCover(t){let e={Title:"",Tagline:"",Description:"",Highlights:[],Actions:[]},n=t.split("\n");for(let t=0;t<n.length;t++){let i=n[t].trim();if(!i)continue;let o=i.match(/^#+\s+(.+)/);if(o){e.Title=o[1].trim();continue}let r=i.match(/^>\s*(.*)/);if(r){e.Tagline=r[1].trim();continue}let s=i.match(/^[-*+]\s+(.*)/);if(s){let t=s[1],n=t.match(/^\*\*([^*]+)\*\*\s*[-—:]\s*(.*)/);n?e.Highlights.push({Label:n[1].trim(),Text:n[2].trim()}):e.Highlights.push({Label:"",Text:t.trim()});continue}let a=i.match(/^\[([^\]]+)\]\(([^)]+)\)\s*$/);a?e.Actions.push({Text:a[1].trim(),Href:a[2].trim()}):e.Description?e.Description+=" "+i:e.Description=i}return e}loadSidebar(t){let e="function"==typeof t?t:()=>{},n=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(n+"_sidebar.md").then(t=>t.ok?t.text():null).then(t=>{if(!t)return this.log.info("Docuserve: No _sidebar.md found; sidebar will use catalog data."),e();let n=this.parseSidebarMarkdown(t);return n&&n.length>0&&(this.pict.AppData.Docuserve.SidebarGroups=n,this.pict.AppData.Docuserve.SidebarLoaded=!0),e()}).catch(t=>(this.log.warn("Docuserve: Error loading _sidebar.md: ".concat(t)),e()))}loadTopbar(t){let e="function"==typeof t?t:()=>{},n=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(n+"_topbar.md").then(t=>t.ok?t.text():null).then(t=>t?(this.pict.AppData.Docuserve.TopBar=this.parseTopbar(t),this.pict.AppData.Docuserve.TopBarLoaded=!0,e()):(this.log.info("Docuserve: No _topbar.md found; top bar will use defaults."),e())).catch(t=>(this.log.warn("Docuserve: Error loading _topbar.md: ".concat(t)),e()))}parseTopbar(t){let e={Brand:"",NavLinks:[],ExternalLinks:[]},n=t.split("\n");for(let t=0;t<n.length;t++){let i=n[t].trim();if(!i)continue;let o=i.match(/^#+\s+(.+)/);if(o){e.Brand=o[1].trim();continue}let r=i.match(/^[-*+]\s+(.*)/);if(r){let t=r[1].trim().match(/^\[([^\]]+)\]\(([^)]+)\)/);if(t){let n=t[1].trim(),i=t[2].trim();if(i.match(/^https?:\/\//))e.ExternalLinks.push({Text:n,Href:i});else{let t=this.convertSidebarLink(i);e.NavLinks.push({Text:n,Href:t})}}continue}}return e}loadVersion(t){let e="function"==typeof t?t:()=>{},n=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(n+"_version.json").then(t=>t.ok?t.json():null).then(t=>t?(this.pict.AppData.Docuserve.Version=t,this.pict.AppData.Docuserve.VersionLoaded=!0,e()):(this.log.info("Docuserve: No _version.json found; version placard disabled."),e())).catch(t=>(this.log.warn("Docuserve: Error loading _version.json: ".concat(t)),e()))}loadErrorPage(t){let e="function"==typeof t?t:()=>{},n=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(n+"errorpage.md").then(t=>t.ok?t.text():null).then(t=>t?(this.pict.AppData.Docuserve.ErrorPageHTML=this._ContentProvider.parseMarkdown(t),this.pict.AppData.Docuserve.ErrorPageLoaded=!0,e()):(this.log.info("Docuserve: No errorpage.md found; errors will use default page."),e())).catch(t=>(this.log.warn("Docuserve: Error loading errorpage.md: ".concat(t)),e()))}loadKeywordIndex(t){let e="function"==typeof t?t:()=>{},n=this.pict.AppData.Docuserve.DocsBaseURL||"";fetch(n+"retold-keyword-index.json").then(t=>t.ok?t.json():null).then(t=>{if(!t||!t.LunrIndex||!t.Documents)return this.log.info("Docuserve: No keyword index found; search will be unavailable."),e();try{this._LunrIndex=o.Index.load(t.LunrIndex),this._KeywordDocuments=t.Documents,this.pict.AppData.Docuserve.KeywordIndexLoaded=!0,this.pict.AppData.Docuserve.KeywordDocumentCount=t.DocumentCount||0,this.log.info("Docuserve: Keyword index loaded (".concat(t.DocumentCount||0," documents)."))}catch(t){this.log.warn("Docuserve: Error hydrating lunr index: ".concat(t))}return e()}).catch(t=>(this.log.warn("Docuserve: Error loading keyword index: ".concat(t)),e()))}isModuleInCatalog(t,e){if(!this._Catalog||!this._Catalog.Groups)return!1;for(let n=0;n<this._Catalog.Groups.length;n++){let i=this._Catalog.Groups[n];if(i.Key===t)for(let t=0;t<i.Modules.length;t++){if(i.Modules[t].Name===e)return!0}}return!1}findModuleGroupKey(t){if(!this._Catalog||!this._Catalog.Groups)return null;for(let e=0;e<this._Catalog.Groups.length;e++){let n=this._Catalog.Groups[e];for(let e=0;e<n.Modules.length;e++)if(n.Modules[e].Name===t)return n.Key}return null}isGroupInCatalog(t){if(!this._Catalog||!this._Catalog.Groups)return!1;for(let e=0;e<this._Catalog.Groups.length;e++)if(this._Catalog.Groups[e].Key===t)return!0;return!1}search(t){if(!(this._LunrIndex&&this._KeywordDocuments&&t&&t.trim()))return[];let e=[];try{let n=this._LunrIndex.search(t);for(let t=0;t<n.length;t++){let i=n[t].ref,o=n[t].score,r=this._KeywordDocuments[i];if(!r)continue;let s=i.split("/"),a="";if(s.length>=2){let t=s[0],e=s[1];a=this.isModuleInCatalog(t,e)?"#/doc/"+i:"#/page/"+i}e.push({Key:i,Title:r.Title||i,Group:r.Group||"",Module:r.Module||"",DocPath:r.DocPath||"",Score:o,Route:a})}}catch(t){this.log.warn("Docuserve: Search error: ".concat(t))}return e}getErrorPageHTML(t){let e=t||"unknown";return this.pict.AppData.Docuserve.ErrorPageLoaded&&this.pict.AppData.Docuserve.ErrorPageHTML?this.pict.AppData.Docuserve.ErrorPageHTML.replace(/\{\{path\}\}/g,this._ContentProvider.escapeHTML(e)):'<div class="docuserve-not-found"><h2>Page Not Found</h2><p>The document <code>'+this._ContentProvider.escapeHTML(e)+'</code> could not be loaded.</p><p><a href="#/Home">Return to the home page</a></p></div>'}parseSidebarMarkdown(t){let e=[],n=null,i=t.split("\n");for(let t=0;t<i.length;t++){let o=i[t];if(!o.trim())continue;let r=o.match(/^(\s*)/),s=r?r[1].length:0,a=o.trim().match(/^[-*+]\s+(.*)/);if(!a)continue;let c=a[1].trim(),l=c.match(/^\[([^\]]+)\]\(([^)]+)\)/);if(s<2)if(l){let t=l[1].trim(),i=l[2].trim();n={Name:t,Key:this.deriveGroupKey(t,i),Route:this.convertSidebarLink(i),Modules:[]},e.push(n)}else{let t=c,i=t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");n={Name:t,Key:i,Route:"",Modules:[]},e.push(n)}else if(n)if(l){let t=l[1].trim(),e=l[2].trim(),i=this.convertSidebarLink(e);n.Modules.push({Name:t,HasDocs:!0,Group:n.Key,Route:i})}else n.Modules.push({Name:c,HasDocs:!1,Group:n.Key,Route:""})}return e}convertSidebarLink(t){if(!t)return"";if("/"===t)return"#/Home";if(t.match(/^#[^/]/)){let t=this.pict.AppData.Docuserve.SidebarGroups;if(t)for(let e=0;e<t.length;e++){let n=t[e].Modules;if(n)for(let t=0;t<n.length;t++)if(n[t].HasDocs&&n[t].Route&&"#/Home"!==n[t].Route)return n[t].Route;if(t[e].Route&&"#/Home"!==t[e].Route)return t[e].Route}return"#/Home"}let e=t.replace(/^\//,"").replace(/\/$/,"");if(!e)return"#/Home";let n=e.split("/");if(n.length>=2){if(this.isGroupInCatalog(n[0])&&this.isModuleInCatalog(n[0],n[1]))return"#/doc/"+e;let t=this.findModuleGroupKey(n[1]);if(t){let e=n.slice(2).join("/");return e?"#/doc/"+t+"/"+n[1]+"/"+e:"#/doc/"+t+"/"+n[1]}}return e.match(/\.md$/)?"#/page/"+e.replace(/\.md$/,""):"#/page/"+e}deriveGroupKey(t,e){if(e&&"/"!==e){let t=e.replace(/^\//,"").replace(/\.md$/,"").replace(/\/$/,"");if(t&&!t.includes("/"))return t.toLowerCase()}return t.split(/[\s—\-:]+/)[0].toLowerCase().replace(/[^a-z0-9]/g,"")}buildSidebarData(t){let e=[];for(let n=0;n<t.Groups.length;n++){let i=t.Groups[n],o={Name:i.Name,Key:i.Key,Description:i.Description,Modules:[]};for(let t=0;t<i.Modules.length;t++){let e=i.Modules[t];o.Modules.push({Name:e.Name,HasDocs:e.HasDocs,Group:i.Key,Route:"#/doc/"+i.Key+"/"+e.Name})}e.push(o)}this.pict.AppData.Docuserve.SidebarGroups=e}resolveDocumentURL(t,e,n){if(!this._Catalog)return null;let i=this._Catalog.GitHubOrg||"stevenvelozo",o=this._Catalog.DefaultBranch||"master";for(let r=0;r<this._Catalog.Groups.length;r++){let s=this._Catalog.Groups[r];if(s.Key===t)for(let t=0;t<s.Modules.length;t++){let r=s.Modules[t];if(r.Name!==e)continue;let a=r.Branch||o,c=n||"README.md";return"https://raw.githubusercontent.com/"+i+"/"+r.Repo+"/"+a+"/docs/"+c}}return null}resolveGitHubURLToRoute(t){if(!this._Catalog||!this._Catalog.Groups||!t)return null;let e=t.match(/^https?:\/\/github\.com\/([^/]+)\/([^/]+)/);if(!e)return null;let n=e[1],i=e[2];if(n!==this._Catalog.GitHubOrg)return null;for(let t=0;t<this._Catalog.Groups.length;t++){let e=this._Catalog.Groups[t];for(let t=0;t<e.Modules.length;t++){let n=e.Modules[t];if(n.Repo===i)return"#/doc/"+e.Key+"/"+n.Name}}return null}resolveGitHubPagesURL(t,e){if(!this._Catalog||!this._Catalog.Groups)return null;let n=this._Catalog.GitHubOrg||"stevenvelozo";for(let i=0;i<this._Catalog.Groups.length;i++){let o=this._Catalog.Groups[i];if(o.Key===t)for(let t=0;t<o.Modules.length;t++){let i=o.Modules[t];if(i.Name===e)return i.HasDocs?"https://"+n+".github.io/"+i.Repo+"/":null}}return null}getModuleSidebar(t,e){if(!this._Catalog)return null;for(let n=0;n<this._Catalog.Groups.length;n++){let i=this._Catalog.Groups[n];if(i.Key===t)for(let t=0;t<i.Modules.length;t++){let n=i.Modules[t];if(n.Name===e)return n.Sidebar||null}}return null}fetchDocument(t,e,n,i,o){let r="function"==typeof e?e:()=>{};return t?this._ContentCache[t]?r(null,this._ContentCache[t]):void fetch(t).then(t=>t.ok?t.text():null).then(e=>{if(!e)return r("Document not found",this.getErrorPageHTML(t));let s=this._ContentProvider.parseMarkdown(e,this._createLinkResolver(n,i,o),this._createImageResolver(t));return this._ContentCache[t]=s,r(null,s)}).catch(e=>(this.log.warn("Docuserve: Error fetching document [".concat(t,"]: ").concat(e)),r(e,this.getErrorPageHTML(t)))):r("No URL provided","")}fetchLocalDocument(t,e,n,i,o){let r=(this.pict.AppData.Docuserve.DocsBaseURL||"")+t;this.fetchDocument(r,e,n,i,o)}convertDocLink(t,e,n,i){let o=t.replace(/^\.\//,"");o=o.replace(/^\//,"");let r=o.split("/");if(r.length>=2&&this.isGroupInCatalog(r[0])&&this.isModuleInCatalog(r[0],r[1]))return"#/doc/"+o;if(e&&n){let t="";if(i){let e=i.split("/");e.length>1&&(e.pop(),t=e.join("/")+"/")}return"#/doc/"+e+"/"+n+"/"+t+o}if(o.match(/\.md$/)){return"#/page/"+o.replace(/\.md$/,"")}return"#/page/"+o}},e.exports.default_configuration={ProviderIdentifier:"Docuserve-Documentation",AutoInitialize:!0,AutoInitializeOrdinal:0}},{lunr:3,"pict-provider":7,"pict-section-content":11}],19:[function(t,e,n){const i=t("pict-section-content");e.exports=class extends i{constructor(t,e,n){super(t,e,n)}displayContent(t){let e=t,n=this.pict.AppData.Docuserve.CurrentGroup,i=this.pict.AppData.Docuserve.CurrentModule;if(n&&i){let t=this.pict.providers["Docuserve-Documentation"];if(t){let o=t.resolveGitHubPagesURL(n,i);o&&(e='<div class="docuserve-module-external-link"><a href="'+o+'" target="_blank" rel="noopener">↗ View '+i+" documentation site</a></div>"+e)}}super.displayContent(e,"Docuserve-Content-Body")}showLoading(){super.showLoading("Loading documentation...","Docuserve-Content-Body")}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Content",DefaultRenderable:"Docuserve-Content-Display",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:!1,CSS:"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t\tcolor: var(--docuserve-text);\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: var(--docuserve-text-dim);\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.pict-content h1 {\n\t\t\tfont-size: 2em;\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t\tborder-bottom: 1px solid var(--docuserve-border);\n\t\t\tpadding-bottom: 0.3em;\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t.pict-content h2 {\n\t\t\tfont-size: 1.5em;\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t\tborder-bottom: 1px solid var(--docuserve-border-soft);\n\t\t\tpadding-bottom: 0.25em;\n\t\t\tmargin-top: 1.5em;\n\t\t}\n\t\t.pict-content h3 {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t\tmargin-top: 1.25em;\n\t\t}\n\t\t.pict-content h4, .pict-content h5, .pict-content h6 {\n\t\t\tcolor: var(--docuserve-text-muted);\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.pict-content p {\n\t\t\tline-height: 1.7;\n\t\t\tcolor: var(--docuserve-text);\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: var(--docuserve-accent);\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.pict-content a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t/* Plain <pre> (no wrap) - rare; keep for safety */\n\t\t.pict-content pre {\n\t\t\tbackground: var(--docuserve-code-bg);\n\t\t\tcolor: var(--docuserve-code-text);\n\t\t\tpadding: 1.25em;\n\t\t\tborder-radius: 6px;\n\t\t\tborder: 1px solid var(--docuserve-code-border);\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: 0.9em;\n\t\t}\n\t\t/* Inline code */\n\t\t.pict-content code {\n\t\t\tbackground: var(--docuserve-inline-code-bg);\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: var(--docuserve-inline-code-text);\n\t\t\tfont-family: 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace;\n\t\t}\n\t\t.pict-content pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t/* Fenced code block wrapper emitted by pict-section-content */\n\t\t.pict-content-code-wrap {\n\t\t\tposition: relative;\n\t\t\tfont-family: 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.5;\n\t\t\tborder-radius: 6px;\n\t\t\tborder: 1px solid var(--docuserve-code-border);\n\t\t\toverflow: auto;\n\t\t\tmargin: 1em 0;\n\t\t\tbackground: var(--docuserve-code-bg);\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 40px;\n\t\t\tpadding: 1.25em 0;\n\t\t\ttext-align: right;\n\t\t\tbackground: var(--docuserve-code-gutter-bg);\n\t\t\tborder-right: 1px solid var(--docuserve-code-gutter-border);\n\t\t\tcolor: var(--docuserve-code-gutter-text);\n\t\t\tfont-family: inherit;\n\t\t\tfont-size: inherit;\n\t\t\tline-height: inherit;\n\t\t\tuser-select: none;\n\t\t\tpointer-events: none;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers span {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0 8px 0 0;\n\t\t}\n\t\t.pict-content-code-wrap pre {\n\t\t\tmargin: 0;\n\t\t\tbackground: var(--docuserve-code-bg);\n\t\t\tcolor: var(--docuserve-code-text);\n\t\t\tpadding: 1.25em 1.25em 1.25em 52px;\n\t\t\tborder: none;\n\t\t\tborder-radius: 0;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content-code-wrap pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t\tfont-family: inherit;\n\t\t}\n\t\t/* Syntax tokens — these rules must match the span classes emitted by\n\t\t pict-section-code's highlighter. Also apply without .pict-content-code-wrap\n\t\t as a belt-and-suspenders for any <pre><code> not emitted from a fence. */\n\t\t.pict-content-code-wrap .keyword,\n\t\t.pict-content pre code .keyword { color: var(--docuserve-tok-keyword); }\n\t\t.pict-content-code-wrap .string,\n\t\t.pict-content pre code .string { color: var(--docuserve-tok-string); }\n\t\t.pict-content-code-wrap .number,\n\t\t.pict-content pre code .number { color: var(--docuserve-tok-number); }\n\t\t.pict-content-code-wrap .comment,\n\t\t.pict-content pre code .comment { color: var(--docuserve-tok-comment); font-style: italic; }\n\t\t.pict-content-code-wrap .operator,\n\t\t.pict-content pre code .operator { color: var(--docuserve-tok-operator); }\n\t\t.pict-content-code-wrap .punctuation,\n\t\t.pict-content pre code .punctuation { color: var(--docuserve-tok-punctuation); }\n\t\t.pict-content-code-wrap .function-name,\n\t\t.pict-content pre code .function-name { color: var(--docuserve-tok-function); }\n\t\t.pict-content-code-wrap .property,\n\t\t.pict-content pre code .property { color: var(--docuserve-tok-property); }\n\t\t.pict-content-code-wrap .tag,\n\t\t.pict-content pre code .tag { color: var(--docuserve-tok-tag); }\n\t\t.pict-content-code-wrap .attr-name,\n\t\t.pict-content pre code .attr-name { color: var(--docuserve-tok-attr-name); }\n\t\t.pict-content-code-wrap .attr-value,\n\t\t.pict-content pre code .attr-value { color: var(--docuserve-tok-attr-value); }\n\t\t.pict-content blockquote {\n\t\t\tborder-left: 4px solid var(--docuserve-blockquote-border);\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: var(--docuserve-blockquote-bg);\n\t\t\tcolor: var(--docuserve-blockquote-text);\n\t\t}\n\t\t.pict-content blockquote p {\n\t\t\tmargin: 0.25em 0;\n\t\t}\n\t\t.pict-content ul, .pict-content ol {\n\t\t\tpadding-left: 2em;\n\t\t\tline-height: 1.8;\n\t\t}\n\t\t.pict-content li {\n\t\t\tmargin: 0.25em 0;\n\t\t\tcolor: var(--docuserve-text);\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid var(--docuserve-border);\n\t\t\tmargin: 2em 0;\n\t\t}\n\t\t.pict-content table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content table th {\n\t\t\tbackground: var(--docuserve-table-header-bg);\n\t\t\tborder: 1px solid var(--docuserve-border);\n\t\t\tpadding: 0.6em 0.8em;\n\t\t\ttext-align: left;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid var(--docuserve-border);\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: var(--docuserve-text);\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: var(--docuserve-table-row-alt-bg);\n\t\t}\n\t\t.pict-content img {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content pre.mermaid {\n\t\t\tbackground: var(--docuserve-mermaid-bg);\n\t\t\tcolor: #2A241E;\n\t\t\ttext-align: center;\n\t\t\tpadding: 1em;\n\t\t\tborder: 1px solid var(--docuserve-border-soft);\n\t\t}\n\t\t/* Force dark text inside mermaid SVGs so diagrams stay readable\n\t\t in dark mode (mermaid bg is always light). */\n\t\t.pict-content pre.mermaid text,\n\t\t.pict-content pre.mermaid .nodeLabel,\n\t\t.pict-content pre.mermaid .edgeLabel,\n\t\t.pict-content pre.mermaid .label,\n\t\t.pict-content pre.mermaid .cluster-label,\n\t\t.pict-content pre.mermaid span,\n\t\t.pict-content pre.mermaid foreignObject p,\n\t\t.pict-content pre.mermaid foreignObject div,\n\t\t.pict-content pre.mermaid foreignObject span {\n\t\t\tcolor: #2A241E !important;\n\t\t\tfill: #2A241E !important;\n\t\t}\n\t\t.pict-content pre.mermaid .edgePath .path {\n\t\t\tstroke: #5E5549 !important;\n\t\t}\n\t\t.pict-content pre.mermaid .arrowheadPath {\n\t\t\tfill: #5E5549 !important;\n\t\t}\n\t\t.pict-content .pict-content-katex-display {\n\t\t\ttext-align: center;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em;\n\t\t\toverflow-x: auto;\n\t\t}\n\t\t.pict-content .pict-content-katex-inline {\n\t\t\tdisplay: inline;\n\t\t}\n\t\t.docuserve-module-external-link {\n\t\t\tpadding: 0.5em 0;\n\t\t\tmargin-bottom: 0.5em;\n\t\t\tborder-bottom: 1px solid var(--docuserve-border-soft);\n\t\t\tfont-size: 0.85em;\n\t\t\ttext-align: right;\n\t\t}\n\t\t.docuserve-module-external-link a {\n\t\t\tcolor: var(--docuserve-accent);\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.docuserve-module-external-link a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.docuserve-not-found {\n\t\t\ttext-align: center;\n\t\t\tpadding: 3em 1em;\n\t\t\tcolor: var(--docuserve-text-muted);\n\t\t}\n\t\t.docuserve-not-found h2 {\n\t\t\tcolor: var(--docuserve-text-dim);\n\t\t\tfont-size: 1.5em;\n\t\t\tborder-bottom: none;\n\t\t}\n\t\t.docuserve-not-found code {\n\t\t\tbackground: var(--docuserve-inline-code-bg);\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: var(--docuserve-inline-code-text);\n\t\t}\n\n\t\t/* Fullscreen viewer for images and mermaid diagrams (click-to-zoom) */\n\t\t.pict-content [data-fullscreen-source] {\n\t\t\tcursor: zoom-in;\n\t\t\toutline: 1px solid transparent;\n\t\t\toutline-offset: 3px;\n\t\t\tborder-radius: 4px;\n\t\t\ttransition: outline-color 0.15s ease;\n\t\t}\n\t\t.pict-content [data-fullscreen-source]:hover {\n\t\t\toutline-color: var(--docuserve-accent);\n\t\t}\n\t\t/* Code block container with hover-revealed action buttons */\n\t\t.pict-content-code-container {\n\t\t\tposition: relative;\n\t\t\tdisplay: flex;\n\t\t\talign-items: flex-start;\n\t\t\tgap: 8px;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content-code-container > .pict-content-code-wrap {\n\t\t\tmargin: 0;\n\t\t\tflex: 1 1 auto;\n\t\t\tmin-width: 0;\n\t\t}\n\t\t.pict-content-code-actions {\n\t\t\tposition: sticky;\n\t\t\ttop: 64px;\n\t\t\talign-self: flex-start;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 6px;\n\t\t\tflex: 0 0 auto;\n\t\t\tpadding-top: 6px;\n\t\t\topacity: 0;\n\t\t\ttransform: translateX(-4px);\n\t\t\ttransition: opacity 0.15s ease, transform 0.15s ease;\n\t\t\tpointer-events: none;\n\t\t}\n\t\t.pict-content-code-container:hover .pict-content-code-actions,\n\t\t.pict-content-code-container:focus-within .pict-content-code-actions {\n\t\t\topacity: 1;\n\t\t\ttransform: translateX(0);\n\t\t\tpointer-events: auto;\n\t\t}\n\t\t.pict-content-code-action-btn {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\twidth: 28px;\n\t\t\theight: 28px;\n\t\t\tpadding: 0;\n\t\t\tbackground: var(--docuserve-bg-elevated);\n\t\t\tcolor: var(--docuserve-text-muted);\n\t\t\tborder: 1px solid var(--docuserve-border);\n\t\t\tborder-radius: 6px;\n\t\t\tcursor: pointer;\n\t\t\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n\t\t\ttransition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;\n\t\t}\n\t\t.pict-content-code-action-btn svg {\n\t\t\tdisplay: block;\n\t\t\twidth: 14px;\n\t\t\theight: 14px;\n\t\t\tstroke: currentColor;\n\t\t\tfill: none;\n\t\t\tstroke-width: 1.6;\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-linejoin: round;\n\t\t}\n\t\t.pict-content-code-action-btn:hover {\n\t\t\tbackground: var(--docuserve-accent);\n\t\t\tcolor: #FFFFFF;\n\t\t\tborder-color: var(--docuserve-accent);\n\t\t\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);\n\t\t}\n\t\t.pict-content-code-action-btn:focus-visible {\n\t\t\toutline: 2px solid var(--docuserve-accent);\n\t\t\toutline-offset: 2px;\n\t\t}\n\t\t.pict-content-code-action-btn.is-copied {\n\t\t\tbackground: var(--docuserve-accent);\n\t\t\tcolor: #FFFFFF;\n\t\t\tborder-color: var(--docuserve-accent);\n\t\t}\n\t\t.pict-content-code-action-btn.is-copy-failed {\n\t\t\tbackground: #B23A3A;\n\t\t\tcolor: #FFFFFF;\n\t\t\tborder-color: #B23A3A;\n\t\t}\n\t\t.pict-fullscreen-overlay {\n\t\t\tposition: fixed;\n\t\t\tinset: 0;\n\t\t\tz-index: 9999;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tbackground: rgba(0, 0, 0, 0.62);\n\t\t\tbackdrop-filter: blur(6px);\n\t\t\t-webkit-backdrop-filter: blur(6px);\n\t\t\tcolor: var(--docuserve-text);\n\t\t}\n\t\t.pict-fullscreen-overlay[hidden] {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.pict-fullscreen-titlebar {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: space-between;\n\t\t\tgap: 1em;\n\t\t\theight: 48px;\n\t\t\tpadding: 0 1em;\n\t\t\tbackground: var(--docuserve-bg-elevated);\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t\tborder-bottom: 1px solid var(--docuserve-border);\n\t\t\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);\n\t\t\tflex: 0 0 auto;\n\t\t}\n\t\t.pict-fullscreen-title {\n\t\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n\t\t\tfont-size: 0.95em;\n\t\t\tfont-weight: 600;\n\t\t\tletter-spacing: 0.01em;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t}\n\t\t.pict-fullscreen-controls {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tgap: 4px;\n\t\t}\n\t\t.pict-fullscreen-btn {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\twidth: 32px;\n\t\t\theight: 32px;\n\t\t\tpadding: 0;\n\t\t\tbackground: transparent;\n\t\t\tborder: 1px solid transparent;\n\t\t\tborder-radius: 6px;\n\t\t\tcolor: var(--docuserve-text-muted);\n\t\t\tcursor: pointer;\n\t\t\ttransition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;\n\t\t}\n\t\t.pict-fullscreen-btn svg {\n\t\t\tdisplay: block;\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tstroke: currentColor;\n\t\t\tfill: none;\n\t\t\tstroke-width: 1.75;\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-linejoin: round;\n\t\t}\n\t\t.pict-fullscreen-btn:hover {\n\t\t\tbackground: var(--docuserve-border-soft);\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t}\n\t\t.pict-fullscreen-btn:focus-visible {\n\t\t\toutline: 2px solid var(--docuserve-accent);\n\t\t\toutline-offset: 2px;\n\t\t}\n\t\t.pict-fullscreen-close:hover {\n\t\t\tbackground: var(--docuserve-accent);\n\t\t\tcolor: #FFFFFF;\n\t\t}\n\t\t.pict-fullscreen-stage {\n\t\t\tflex: 1 1 auto;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\toverflow: hidden;\n\t\t\tpadding: 1.5em;\n\t\t\tcursor: zoom-in;\n\t\t\ttouch-action: none;\n\t\t}\n\t\t.pict-fullscreen-stage.is-zoomed {\n\t\t\tcursor: grab;\n\t\t}\n\t\t.pict-fullscreen-stage.is-panning {\n\t\t\tcursor: grabbing;\n\t\t}\n\t\t.pict-fullscreen-content {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmax-width: 100%;\n\t\t\tmax-height: 100%;\n\t\t\ttransform-origin: center center;\n\t\t\ttransition: transform 0.05s linear;\n\t\t\twill-change: transform;\n\t\t}\n\t\t.pict-fullscreen-content > * {\n\t\t\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.45);\n\t\t}\n\t\t.pict-fullscreen-content .pict-fullscreen-img {\n\t\t\tmax-width: 90vw;\n\t\t\tmax-height: calc(100vh - 96px);\n\t\t\twidth: auto;\n\t\t\theight: auto;\n\t\t\tobject-fit: contain;\n\t\t\tbackground: var(--docuserve-bg-elevated);\n\t\t\tpadding: 12px;\n\t\t\tborder-radius: 6px;\n\t\t}\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg {\n\t\t\twidth: min(90vw, 1400px);\n\t\t\theight: auto;\n\t\t\tmax-height: calc(100vh - 96px);\n\t\t\tbackground: var(--docuserve-mermaid-bg);\n\t\t\tcolor: #2A241E;\n\t\t\tpadding: 16px;\n\t\t\tborder-radius: 6px;\n\t\t}\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg text,\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg .nodeLabel,\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg .edgeLabel,\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg .label,\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg span,\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg foreignObject p,\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg foreignObject div,\n\t\t.pict-fullscreen-content .pict-fullscreen-mermaid-svg foreignObject span {\n\t\t\tcolor: #2A241E !important;\n\t\t\tfill: #2A241E !important;\n\t\t}\n\t\t.pict-fullscreen-content .pict-fullscreen-codewrap {\n\t\t\tmax-width: 90vw;\n\t\t\tmax-height: calc(100vh - 96px);\n\t\t\tmargin: 0;\n\t\t\toverflow: auto;\n\t\t\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.45);\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Content-Template",Template:'\n<div class="pict-content" id="Docuserve-Content-Body">\n\t<div class="pict-content-loading">Loading documentation...</div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Content-Display",TemplateHash:"Docuserve-Content-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]}},{"pict-section-content":11}],20:[function(t,e,n){const i=t("pict-view");e.exports=class extends i{constructor(t,e,n){super(t,e,n)}onAfterRender(t,e,n,i){if(this.pict.views["Docuserve-TopBar"].render(),this.pict.views["Docuserve-Sidebar"].render(),this.pict.views["Docuserve-Splash"].render(),this.pict.CSSMap.injectCSS(),this.pict.PictApplication.resolveHash(),!this._HashChangeListenerBound){this._HashChangeListenerBound=!0;let t=this;window.addEventListener("hashchange",()=>{t.pict.PictApplication.resolveHash()})}return super.onAfterRender(t,e,n,i)}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Layout",DefaultRenderable:"Docuserve-Layout-Shell",DefaultDestinationAddress:"#Docuserve-Application-Container",AutoRender:!1,CSS:"\n\t\t#Docuserve-Application-Container {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\theight: 100vh;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t#Docuserve-TopBar-Container {\n\t\t\tflex-shrink: 0;\n\t\t}\n\t\t.docuserve-body {\n\t\t\tdisplay: flex;\n\t\t\tflex: 1;\n\t\t\tmin-height: 0;\n\t\t}\n\t\t#Docuserve-Sidebar-Container {\n\t\t\tflex-shrink: 0;\n\t\t\twidth: 280px;\n\t\t\toverflow-y: auto;\n\t\t\tbackground-color: #F5F0E8;\n\t\t}\n\t\t#Docuserve-Content-Container {\n\t\t\tflex: 1;\n\t\t\tmin-width: 0;\n\t\t\toverflow-y: auto;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Layout-Shell-Template",Template:'\n<div id="Docuserve-TopBar-Container"></div>\n<div class="docuserve-body">\n\t<div id="Docuserve-Sidebar-Container"></div>\n\t<div id="Docuserve-Content-Container"></div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Layout-Shell",TemplateHash:"Docuserve-Layout-Shell-Template",DestinationAddress:"#Docuserve-Application-Container",RenderMethod:"replace"}]}},{"pict-view":15}],21:[function(t,e,n){const i=t("pict-view");e.exports=class extends i{constructor(t,e,n){super(t,e,n),this._SearchDebounceTimer=null}onAfterRender(t,e,n,i){let o=document.getElementById("Docuserve-Search-Input");return o&&o.addEventListener("input",()=>{this._SearchDebounceTimer&&clearTimeout(this._SearchDebounceTimer),this._SearchDebounceTimer=setTimeout(()=>{this.performSearch(o.value)},250)}),super.onAfterRender(t,e,n,i)}showSearch(t){let e=document.getElementById("Docuserve-Search-Input");if(e&&(e.value=t||"",e.focus()),t&&t.trim())this.performSearch(t);else{let t=this.pict.AppData.Docuserve.KeywordDocumentCount||0,e=t>0?"Search across "+t+" documents.":"Enter a search term to find documentation.";this.pict.ContentAssignment.assignContent("#Docuserve-Search-Status",e),this.pict.ContentAssignment.assignContent("#Docuserve-Search-Results","")}let n=document.getElementById("Docuserve-Content-Container");n&&(n.scrollTop=0)}performSearch(t){if(!t||!t.trim()){let t=this.pict.AppData.Docuserve.KeywordDocumentCount||0,e=t>0?"Search across "+t+" documents.":"Enter a search term to find documentation.";return this.pict.ContentAssignment.assignContent("#Docuserve-Search-Status",e),void this.pict.ContentAssignment.assignContent("#Docuserve-Search-Results","")}let e=this.pict.providers["Docuserve-Documentation"].search(t);if(0===e.length)return this.pict.ContentAssignment.assignContent("#Docuserve-Search-Status","No results found for '"+this.escapeHTML(t)+"'."),void this.pict.ContentAssignment.assignContent("#Docuserve-Search-Results","");this.pict.ContentAssignment.assignContent("#Docuserve-Search-Status",e.length+" result"+(1!==e.length?"s":"")+" for '"+this.escapeHTML(t)+"'");let n="";for(let t=0;t<e.length;t++){let i=e[t],o="";i.Group&&i.Module&&(o=i.Group+" › "+i.Module),n+='<a class="docuserve-search-result" href="'+i.Route+'">',n+='<div class="docuserve-search-result-title">'+this.escapeHTML(i.Title)+"</div>",o&&(n+='<div class="docuserve-search-result-breadcrumb">'+o+"</div>"),i.DocPath&&(n+='<div class="docuserve-search-result-path">'+this.escapeHTML(i.DocPath)+"</div>"),n+="</a>"}this.pict.ContentAssignment.assignContent("#Docuserve-Search-Results",n)}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Search",DefaultRenderable:"Docuserve-Search-Display",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:!1,CSS:"\n\t\t.docuserve-search {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.docuserve-search-header {\n\t\t\tmargin-bottom: 1.5em;\n\t\t}\n\t\t.docuserve-search-header h1 {\n\t\t\tfont-size: 1.75em;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin: 0 0 0.75em 0;\n\t\t}\n\t\t.docuserve-search-input {\n\t\t\twidth: 100%;\n\t\t\tpadding: 0.75em 1em;\n\t\t\tfont-size: 1.1em;\n\t\t\tborder: 2px solid #D4CCBE;\n\t\t\tborder-radius: 6px;\n\t\t\toutline: none;\n\t\t\tbox-sizing: border-box;\n\t\t\ttransition: border-color 0.15s;\n\t\t}\n\t\t.docuserve-search-input:focus {\n\t\t\tborder-color: #2E7D74;\n\t\t}\n\t\t.docuserve-search-status {\n\t\t\tmargin-top: 0.75em;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #8A7F72;\n\t\t}\n\t\t.docuserve-search-results {\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.docuserve-search-result {\n\t\t\tdisplay: block;\n\t\t\tpadding: 1em 1.25em;\n\t\t\tmargin-bottom: 0.5em;\n\t\t\tborder: 1px solid #EAE3D8;\n\t\t\tborder-radius: 6px;\n\t\t\ttext-decoration: none;\n\t\t\tcolor: inherit;\n\t\t\ttransition: border-color 0.15s, box-shadow 0.15s;\n\t\t}\n\t\t.docuserve-search-result:hover {\n\t\t\tborder-color: #2E7D74;\n\t\t\tbox-shadow: 0 2px 8px rgba(46, 125, 116, 0.1);\n\t\t}\n\t\t.docuserve-search-result-title {\n\t\t\tfont-size: 1.05em;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #2E7D74;\n\t\t\tmargin-bottom: 0.25em;\n\t\t}\n\t\t.docuserve-search-result-breadcrumb {\n\t\t\tfont-size: 0.8em;\n\t\t\tcolor: #8A7F72;\n\t\t\tmargin-bottom: 0.2em;\n\t\t}\n\t\t.docuserve-search-result-path {\n\t\t\tfont-size: 0.8em;\n\t\t\tcolor: #A39889;\n\t\t\tfont-family: monospace;\n\t\t}\n\t\t.docuserve-search-empty {\n\t\t\ttext-align: center;\n\t\t\tpadding: 3em 1em;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1em;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Search-Template",Template:'\n<div class="docuserve-search">\n\t<div class="docuserve-search-header">\n\t\t<h1>Search Documentation</h1>\n\t\t<input type="text" class="docuserve-search-input" id="Docuserve-Search-Input" placeholder="Search across all modules...">\n\t\t<div id="Docuserve-Search-Status" class="docuserve-search-status"></div>\n\t</div>\n\t<div id="Docuserve-Search-Results" class="docuserve-search-results"></div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Search-Display",TemplateHash:"Docuserve-Search-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]}},{"pict-view":15}],22:[function(t,e,n){const i=t("pict-view");e.exports=class extends i{constructor(t,e,n){super(t,e,n),this._SidebarSearchDebounceTimer=null}onAfterRender(t,e,n,i){this.renderSidebarGroups(),this.renderSidebarFooter();let o=document.getElementById("Docuserve-Sidebar-Search");if(o&&this.pict.AppData.Docuserve.KeywordIndexLoaded){o.style.display="";let t=document.getElementById("Docuserve-Sidebar-Search-Input");t&&t.addEventListener("input",()=>{this._SidebarSearchDebounceTimer&&clearTimeout(this._SidebarSearchDebounceTimer),this._SidebarSearchDebounceTimer=setTimeout(()=>{this.performSidebarSearch(t.value)},250)})}return super.onAfterRender(t,e,n,i)}renderSidebarFooter(){let t=document.getElementById("Docuserve-Sidebar-Footer");if(!t)return;let e=this.pict.AppData.Docuserve;if(!e.VersionLoaded||!e.Version||!e.Version.Version)return void(t.innerHTML="");let n=e.Version,i='<div class="docuserve-version-placard">';n.Name&&(i+='<div class="docuserve-version-name">'+this.escapeHTML(n.Name)+"</div>"),i+='<div class="docuserve-version-number">v'+this.escapeHTML(n.Version)+"</div>";let o=[];if(n.GeneratedAt){let t=String(n.GeneratedAt).match(/^(\d{4}-\d{2}-\d{2})/);t&&o.push("built "+t[1])}n.GitCommit&&o.push(n.GitCommit),o.length>0&&(i+='<div class="docuserve-version-meta">'+this.escapeHTML(o.join(" · "))+"</div>"),i+="</div>",t.innerHTML=i}renderSidebarGroups(){let t=this.pict.AppData.Docuserve.SidebarGroups;if(!t||t.length<1)return void this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-Groups","");let e="";for(let n=0;n<t.length;n++){let i=t[n];e+='<div class="docuserve-sidebar-group">';let o=i.Route||"";if(!o)for(let t=0;t<i.Modules.length;t++)if(i.Modules[t].HasDocs&&i.Modules[t].Route){o=i.Modules[t].Route;break}if(o){let t="",n=window.location.hash||"";this.pict.AppData.Docuserve.CurrentGroup!==i.Key&&n!==o||(t=" active"),e+='<a class="docuserve-sidebar-group-title'+t+'" href="'+o+'">'+this.escapeHTML(i.Name)+"</a>"}else e+='<div class="docuserve-sidebar-group-title">'+this.escapeHTML(i.Name)+"</div>";e+='<ul class="docuserve-sidebar-modules">';for(let t=0;t<i.Modules.length;t++){let n=i.Modules[t];if(n.HasDocs){let t="";this.pict.AppData.Docuserve.CurrentGroup===n.Group&&this.pict.AppData.Docuserve.CurrentModule===n.Name&&(t=' class="active"'),e+="<li><a"+t+' href="'+n.Route+'">'+this.escapeHTML(n.Name)+"</a></li>"}else e+='<li><span class="no-docs">'+this.escapeHTML(n.Name)+"</span></li>"}e+="</ul>",e+="</div>"}this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-Groups",e)}renderModuleNav(t,e){let n=this.pict.providers["Docuserve-Documentation"];if(!n)return;let i=n.getModuleSidebar(t,e);if(!i)return void this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-ModuleNav","");let o="#/doc/"+t+"/"+e+"/",r='<div class="docuserve-sidebar-module-nav">';for(let t=0;t<i.length;t++){let e=i[t];if(e.Children){r+='<div class="docuserve-sidebar-module-nav-section">'+this.escapeHTML(e.Title)+"</div>";for(let t=0;t<e.Children.length;t++){let n=e.Children[t];n.Path&&(r+='<a href="'+o+n.Path+'">'+this.escapeHTML(n.Title)+"</a>")}}else e.Path&&(r+='<a href="'+o+e.Path+'">'+this.escapeHTML(e.Title)+"</a>")}r+="</div>",this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-ModuleNav",r)}performSidebarSearch(t){let e=document.getElementById("Docuserve-Sidebar-Search-Results");if(!e)return;if(!t||!t.trim())return void(e.innerHTML="");let n=this.pict.providers["Docuserve-Documentation"].search(t);if(0===n.length)return void(e.innerHTML='<div style="padding: 0.4em 0.5em; font-size: 0.82em; color: #8A7F72;">No results found.</div>');let i="";for(let t=0;t<n.length&&t<8;t++){let e=n[t],o="";e.Group&&e.Module&&(o=e.Group+" / "+e.Module),i+='<a href="'+e.Route+'">',i+='<div class="docuserve-sidebar-search-result-title">'+this.escapeHTML(e.Title)+"</div>",o&&(i+='<div class="docuserve-sidebar-search-result-meta">'+this.escapeHTML(o)+"</div>"),i+="</a>"}if(n.length>8){i+='<a class="docuserve-sidebar-search-all" href="#/search/'+encodeURIComponent(t)+'">See all '+n.length+" results</a>"}e.innerHTML=i}toggleSidebar(){this.pict.AppData.Docuserve.SidebarVisible=!this.pict.AppData.Docuserve.SidebarVisible;let t=document.getElementById("Docuserve-Sidebar-Container"),e=document.getElementById("Docuserve-TopBar-Toggle");this.pict.AppData.Docuserve.SidebarVisible?(t&&(t.style.display=""),e&&(e.style.display="none")):(t&&(t.style.display="none"),e&&(e.style.display="inline-block"))}clearModuleNav(){this.pict.ContentAssignment.assignContent("#Docuserve-Sidebar-ModuleNav","")}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""):""}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Sidebar",DefaultRenderable:"Docuserve-Sidebar-Content",DefaultDestinationAddress:"#Docuserve-Sidebar-Container",AutoRender:!1,CSS:"\n\t\t.docuserve-sidebar {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tbackground: var(--docuserve-sidebar-bg);\n\t\t\tborder-right: 1px solid var(--docuserve-sidebar-border);\n\t\t\tpadding: 1em 0;\n\t\t\tpadding-top: 0;\n\t\t\tmin-height: 100%;\n\t\t\tposition: relative;\n\t\t\ttransition: background-color 0.15s ease;\n\t\t}\n\t\t.docuserve-sidebar-header {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: flex-end;\n\t\t\tpadding: 0.4em 0.5em 0;\n\t\t}\n\t\t.docuserve-sidebar-close {\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tcolor: var(--docuserve-text-dim);\n\t\t\tfont-size: 1.2em;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 0.2em 0.4em;\n\t\t\tline-height: 1;\n\t\t}\n\t\t.docuserve-sidebar-close:hover {\n\t\t\tcolor: var(--docuserve-accent);\n\t\t}\n\t\t.docuserve-sidebar-search {\n\t\t\tpadding: 0 1em 1em 1em;\n\t\t\tborder-bottom: 1px solid var(--docuserve-sidebar-border-soft);\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-search input {\n\t\t\twidth: 100%;\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tbackground: var(--docuserve-sidebar-search-bg);\n\t\t\tcolor: var(--docuserve-text);\n\t\t\tborder: 1px solid var(--docuserve-sidebar-search-border);\n\t\t\tborder-radius: 4px;\n\t\t\tfont-size: 0.85em;\n\t\t\toutline: none;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\t.docuserve-sidebar-search input:focus {\n\t\t\tborder-color: var(--docuserve-accent);\n\t\t}\n\t\t.docuserve-sidebar-search-results {\n\t\t\tmargin-top: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-search-results a {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.4em 0.5em;\n\t\t\tcolor: var(--docuserve-sidebar-text);\n\t\t\ttext-decoration: none;\n\t\t\tfont-size: 0.82em;\n\t\t\tborder-radius: 3px;\n\t\t\ttransition: background-color 0.1s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-sidebar-search-results a:hover {\n\t\t\tbackground-color: var(--docuserve-sidebar-hover-bg);\n\t\t\tcolor: var(--docuserve-sidebar-hover-text);\n\t\t}\n\t\t.docuserve-sidebar-search-result-title {\n\t\t\tfont-weight: 600;\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t}\n\t\t.docuserve-sidebar-search-results a:hover .docuserve-sidebar-search-result-title {\n\t\t\tcolor: var(--docuserve-sidebar-hover-text);\n\t\t}\n\t\t.docuserve-sidebar-search-result-meta {\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: var(--docuserve-text-dim);\n\t\t}\n\t\t.docuserve-sidebar-search-all {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.4em 0.5em;\n\t\t\tfont-size: 0.82em;\n\t\t\tcolor: var(--docuserve-accent);\n\t\t\ttext-decoration: none;\n\t\t\tfont-weight: 600;\n\t\t\tcursor: pointer;\n\t\t\tborder-top: 1px solid var(--docuserve-sidebar-border-soft);\n\t\t\tmargin-top: 0.25em;\n\t\t\tpadding-top: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-search-all:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.docuserve-sidebar-home {\n\t\t\tpadding: 0.5em 1.25em;\n\t\t\tfont-weight: 600;\n\t\t\tfont-size: 0.85em;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.03em;\n\t\t}\n\t\t.docuserve-sidebar-home a {\n\t\t\tcolor: var(--docuserve-sidebar-module-text);\n\t\t\ttext-decoration: none;\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\t\t.docuserve-sidebar-home a:hover {\n\t\t\tcolor: var(--docuserve-sidebar-hover-text);\n\t\t}\n\t\t.docuserve-sidebar-group {\n\t\t\tmargin-top: 0.25em;\n\t\t}\n\t\t.docuserve-sidebar-group-title {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.5em 1.25em;\n\t\t\tfont-weight: 600;\n\t\t\tfont-size: 0.85em;\n\t\t\tcolor: var(--docuserve-sidebar-group-title);\n\t\t\ttext-decoration: none;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.03em;\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t\ttransition: background-color 0.1s, color 0.1s;\n\t\t}\n\t\t.docuserve-sidebar-group-title:hover {\n\t\t\tcolor: var(--docuserve-sidebar-hover-text);\n\t\t\tbackground-color: var(--docuserve-sidebar-hover-bg);\n\t\t}\n\t\ta.docuserve-sidebar-group-title.active {\n\t\t\tcolor: var(--docuserve-sidebar-active-text);\n\t\t\tbackground-color: var(--docuserve-sidebar-active-bg);\n\t\t}\n\t\t.docuserve-sidebar-modules {\n\t\t\tlist-style: none;\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t\t.docuserve-sidebar-modules li {\n\t\t\tpadding: 0;\n\t\t}\n\t\t.docuserve-sidebar-modules a {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.3em 1.25em 0.3em 2em;\n\t\t\tcolor: var(--docuserve-sidebar-module-text);\n\t\t\ttext-decoration: none;\n\t\t\tfont-size: 0.85em;\n\t\t\ttransition: background-color 0.1s, color 0.1s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-sidebar-modules a:hover {\n\t\t\tbackground-color: var(--docuserve-sidebar-hover-bg);\n\t\t\tcolor: var(--docuserve-sidebar-hover-text);\n\t\t}\n\t\t.docuserve-sidebar-modules a.active {\n\t\t\tcolor: var(--docuserve-sidebar-active-text);\n\t\t\tfont-weight: 600;\n\t\t\tbackground-color: var(--docuserve-sidebar-active-bg);\n\t\t}\n\t\t.docuserve-sidebar-modules .no-docs {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.3em 1.25em 0.3em 2em;\n\t\t\tcolor: var(--docuserve-text-dim);\n\t\t\tfont-size: 0.85em;\n\t\t}\n\t\t.docuserve-sidebar-module-nav {\n\t\t\tborder-top: 1px solid var(--docuserve-sidebar-border-soft);\n\t\t\tmargin-top: 0.5em;\n\t\t\tpadding-top: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-module-nav-section {\n\t\t\tpadding: 0.4em 1.25em;\n\t\t\tfont-weight: 600;\n\t\t\tfont-size: 0.8em;\n\t\t\tcolor: var(--docuserve-text-dim);\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.02em;\n\t\t}\n\t\t.docuserve-sidebar-module-nav a {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0.25em 1.25em 0.25em 2.25em;\n\t\t\tcolor: var(--docuserve-sidebar-module-text);\n\t\t\ttext-decoration: none;\n\t\t\tfont-size: 0.82em;\n\t\t\ttransition: background-color 0.1s, color 0.1s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-sidebar-module-nav a:hover {\n\t\t\tbackground-color: var(--docuserve-sidebar-hover-bg);\n\t\t\tcolor: var(--docuserve-sidebar-hover-text);\n\t\t}\n\t\t.docuserve-sidebar-footer {\n\t\t\tmargin-top: auto;\n\t\t\tpadding: 0.9em 1.25em 1em 1.25em;\n\t\t\tborder-top: 1px solid var(--docuserve-sidebar-border-soft);\n\t\t}\n\t\t.docuserve-sidebar-footer:empty {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.docuserve-version-placard {\n\t\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n\t\t\tline-height: 1.35;\n\t\t}\n\t\t.docuserve-version-name {\n\t\t\tfont-size: 0.78em;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: var(--docuserve-text-muted);\n\t\t\tletter-spacing: 0.02em;\n\t\t}\n\t\t.docuserve-version-number {\n\t\t\tfont-size: 0.82em;\n\t\t\tfont-weight: 500;\n\t\t\tcolor: var(--docuserve-accent);\n\t\t}\n\t\t.docuserve-version-meta {\n\t\t\tfont-size: 0.7em;\n\t\t\tcolor: var(--docuserve-text-dim);\n\t\t\tmargin-top: 0.15em;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Sidebar-Template",Template:'\n<div class="docuserve-sidebar">\n\t<div class="docuserve-sidebar-header">\n\t\t<button class="docuserve-sidebar-close" onclick="{~P~}.views[\'Docuserve-Sidebar\'].toggleSidebar()">×</button>\n\t</div>\n\t<div id="Docuserve-Sidebar-Search" class="docuserve-sidebar-search" style="display:none;">\n\t\t<input type="text" placeholder="Search docs..." id="Docuserve-Sidebar-Search-Input">\n\t\t<div id="Docuserve-Sidebar-Search-Results" class="docuserve-sidebar-search-results"></div>\n\t</div>\n\t<div class="docuserve-sidebar-home">\n\t\t<a onclick="{~P~}.PictApplication.navigateTo(\'/Home\')">Home</a>\n\t</div>\n\t<div id="Docuserve-Sidebar-Groups"></div>\n\t<div id="Docuserve-Sidebar-ModuleNav"></div>\n\t<div id="Docuserve-Sidebar-Footer" class="docuserve-sidebar-footer"></div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Sidebar-Content",TemplateHash:"Docuserve-Sidebar-Template",DestinationAddress:"#Docuserve-Sidebar-Container",RenderMethod:"replace"}]}},{"pict-view":15}],23:[function(t,e,n){const i=t("pict-view");e.exports=class extends i{constructor(t,e,n){super(t,e,n)}onAfterRender(t,e,n,i){let o=this.pict.AppData.Docuserve;return o.CoverLoaded&&o.Cover?this.renderFromCover(o.Cover):this.renderFromCatalog(o),super.onAfterRender(t,e,n,i)}renderFromCover(t){this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Title",this.sanitizeTitle(t.Title)),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Tagline",this.escapeHTML(t.Tagline)),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Description",this.escapeHTML(t.Description));let e="";for(let n=0;n<t.Highlights.length;n++){let i=t.Highlights[n];e+='<div class="docuserve-splash-highlight-card">',i.Label&&(e+="<h3>"+this.escapeHTML(i.Label)+"</h3>"),e+="<p>"+this.escapeHTML(i.Text)+"</p>",e+="</div>"}this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Highlights",e);let n="",i=this.pict.providers["Docuserve-Documentation"];for(let e=0;e<t.Actions.length;e++){let o=t.Actions[e],r=0===e?"primary":"secondary",s=o.Href;if(s.match(/^https?:\/\//))n+='<a class="'+r+'" href="'+this.escapeHTML(s)+'" target="_blank" rel="noopener">'+this.escapeHTML(o.Text)+"</a>";else{let t=i.convertSidebarLink(s);n+='<a class="'+r+'" href="'+this.escapeHTML(t)+'">'+this.escapeHTML(o.Text)+"</a>"}}this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Actions",n)}renderFromCatalog(t){let e="Documentation",n="";t.CatalogLoaded&&t.Catalog&&t.Catalog.Name?e=t.Catalog.Name:t.TopBarLoaded&&t.TopBar&&t.TopBar.Brand?e=t.TopBar.Brand:"undefined"!=typeof document&&document.title&&(e=document.title),t.CatalogLoaded&&t.Catalog&&t.Catalog.Description&&(n=t.Catalog.Description),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Title",this.escapeHTML(e)),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Tagline",this.escapeHTML(n)),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Description","");let i="",o=t.SidebarGroups||[];for(let t=0;t<o.length;t++){let e=o[t];if(!e.Modules||e.Modules.length<1)continue;let n=e.Description||e.Modules.length+" modules";i+='<div class="docuserve-splash-highlight-card">',i+="<h3>"+this.escapeHTML(e.Name)+"</h3>",i+="<p>"+this.escapeHTML(n)+"</p>",i+="</div>"}this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Highlights",i),this.pict.ContentAssignment.assignContent("#Docuserve-Splash-Actions","")}sanitizeTitle(t){return t?this.escapeHTML(t).replace(/<small>/gi,"<small>").replace(/<\/small>/gi,"</small>"):""}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""):""}},e.exports.default_configuration={ViewIdentifier:"Docuserve-Splash",DefaultRenderable:"Docuserve-Splash-Content",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:!1,CSS:"\n\t\t.docuserve-splash {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: calc(100vh - 56px);\n\t\t\tpadding: 3em 2em;\n\t\t\ttext-align: center;\n\t\t\tbackground: var(--docuserve-bg);\n\t\t}\n\t\t.docuserve-splash h1 {\n\t\t\tfont-size: 3em;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t\tmargin: 0 0 0.25em 0;\n\t\t}\n\t\t.docuserve-splash h1 small {\n\t\t\tfont-size: 0.4em;\n\t\t\tfont-weight: 400;\n\t\t\tcolor: var(--docuserve-text-dim);\n\t\t\tvertical-align: middle;\n\t\t\tmargin-left: 0.15em;\n\t\t}\n\t\t.docuserve-splash-tagline {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: var(--docuserve-text-muted);\n\t\t\tmargin-bottom: 1.5em;\n\t\t\tfont-style: italic;\n\t\t}\n\t\t.docuserve-splash-description {\n\t\t\tfont-size: 1em;\n\t\t\tcolor: var(--docuserve-text-muted);\n\t\t\tmax-width: 600px;\n\t\t\tline-height: 1.7;\n\t\t\tmargin-bottom: 2em;\n\t\t}\n\t\t.docuserve-splash-highlights {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n\t\t\tgap: 1.25em;\n\t\t\tmax-width: 900px;\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 2.5em;\n\t\t}\n\t\t.docuserve-splash-highlight-card {\n\t\t\tbackground: var(--docuserve-bg-elevated);\n\t\t\tborder: 1px solid var(--docuserve-border);\n\t\t\tborder-radius: 8px;\n\t\t\tpadding: 1.25em;\n\t\t\ttext-align: left;\n\t\t\ttransition: box-shadow 0.2s, border-color 0.2s;\n\t\t}\n\t\t.docuserve-splash-highlight-card:hover {\n\t\t\tbox-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n\t\t\tborder-color: var(--docuserve-accent);\n\t\t}\n\t\t.docuserve-splash-highlight-card h3 {\n\t\t\tmargin: 0 0 0.5em 0;\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.docuserve-splash-highlight-card p {\n\t\t\tmargin: 0;\n\t\t\tcolor: var(--docuserve-text-muted);\n\t\t\tfont-size: 0.85em;\n\t\t\tline-height: 1.5;\n\t\t}\n\t\t.docuserve-splash-actions {\n\t\t\tdisplay: flex;\n\t\t\tgap: 1em;\n\t\t\tflex-wrap: wrap;\n\t\t\tjustify-content: center;\n\t\t}\n\t\t.docuserve-splash-actions a {\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 0.7em 1.5em;\n\t\t\tborder-radius: 6px;\n\t\t\tfont-size: 0.95em;\n\t\t\tfont-weight: 600;\n\t\t\ttext-decoration: none;\n\t\t\ttransition: background-color 0.15s, color 0.15s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-splash-actions .primary {\n\t\t\tbackground-color: var(--docuserve-accent);\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.docuserve-splash-actions .primary:hover {\n\t\t\tbackground-color: var(--docuserve-accent-hover);\n\t\t}\n\t\t.docuserve-splash-actions .secondary {\n\t\t\tbackground-color: var(--docuserve-bg-elevated);\n\t\t\tcolor: var(--docuserve-text-strong);\n\t\t\tborder: 2px solid var(--docuserve-accent);\n\t\t}\n\t\t.docuserve-splash-actions .secondary:hover {\n\t\t\tborder-color: var(--docuserve-accent-hover);\n\t\t\tcolor: var(--docuserve-accent);\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Splash-Template",Template:'\n<div class="docuserve-splash">\n\t<h1 id="Docuserve-Splash-Title"></h1>\n\t<div class="docuserve-splash-tagline" id="Docuserve-Splash-Tagline"></div>\n\t<div class="docuserve-splash-description" id="Docuserve-Splash-Description"></div>\n\t<div class="docuserve-splash-highlights" id="Docuserve-Splash-Highlights"></div>\n\t<div class="docuserve-splash-actions" id="Docuserve-Splash-Actions"></div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-Splash-Content",TemplateHash:"Docuserve-Splash-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]}},{"pict-view":15}],24:[function(t,e,n){const i=t("pict-view");e.exports=class extends i{constructor(t,e,n){super(t,e,n)}onAfterRender(t,e,n,i){return this.renderTopBarContent(),this.initThemeToggle(),super.onAfterRender(t,e,n,i)}getThemeStorageKey(){try{let t=(window.location.pathname||"/").replace(/\/[^/]*$/,"/");return"docuserve-theme:"+window.location.origin+t}catch(t){return"docuserve-theme"}}initThemeToggle(){let t=document.getElementById("Docuserve-TopBar-Theme");if(!t)return;let e=t.querySelectorAll(".docuserve-topbar-theme-btn"),n=this.getThemeStorageKey(),i=null;try{i=localStorage.getItem(n)}catch(t){}"light"!==i&&"dark"!==i&&"system"!==i&&(i="system"),this.applyTheme(i,e,n);for(let t=0;t<e.length;t++){let i=e[t];i.addEventListener("click",()=>{let t=i.getAttribute("data-theme-choice");this.applyTheme(t,e,n)})}}applyTheme(t,e,n){"light"===t?document.documentElement.setAttribute("data-theme","light"):"dark"===t?document.documentElement.setAttribute("data-theme","dark"):(document.documentElement.removeAttribute("data-theme"),t="system");try{localStorage.setItem(n,t)}catch(t){}if(e)for(let n=0;n<e.length;n++){let i=e[n],o=i.getAttribute("data-theme-choice")===t;i.setAttribute("aria-pressed",o?"true":"false")}}renderTopBarContent(){let t=this.pict.AppData.Docuserve,e=document.getElementById("Docuserve-TopBar-Brand"),n=document.getElementById("Docuserve-TopBar-Nav"),i=document.getElementById("Docuserve-TopBar-Links"),o=document.getElementById("Docuserve-TopBar-Version");if(e&&n&&i)if(this.renderVersionChip(o,t),t.TopBarLoaded&&t.TopBar){let o=t.TopBar;e.innerHTML=this.sanitizeTitle(o.Brand||"Documentation");let r='<a href="#/Home">Home</a>';for(let t=0;t<o.NavLinks.length;t++){let e=o.NavLinks[t];r+='<a href="'+e.Href+'">'+this.escapeHTML(e.Text)+"</a>"}n.innerHTML=r;let s="";t.KeywordIndexLoaded&&(s+='<a href="#/search/">Search</a>');for(let t=0;t<o.ExternalLinks.length;t++){let e=o.ExternalLinks[t];s+='<a href="'+this.escapeHTML(e.Href)+'" target="_blank" rel="noopener">'+this.escapeHTML(e.Text)+"</a>"}i.innerHTML=s}else{let o="Documentation";t.CoverLoaded&&t.Cover&&t.Cover.Title?o=t.Cover.Title:t.CatalogLoaded&&t.Catalog&&t.Catalog.Name&&(o=t.Catalog.Name),e.innerHTML=this.sanitizeTitle(o),n.innerHTML='<a href="#/Home">Home</a>',i.innerHTML=t.KeywordIndexLoaded?'<a href="#/search/">Search</a>':""}}renderVersionChip(t,e){if(!t)return;if(!e.VersionLoaded||!e.Version||!e.Version.Version)return t.innerHTML="",void t.setAttribute("title","");let n=e.Version;t.innerHTML="v"+this.escapeHTML(n.Version);let i=[];n.Name?i.push(n.Name+" v"+n.Version):i.push("v"+n.Version),n.GeneratedAt&&i.push("built "+this.formatVersionDate(n.GeneratedAt)),n.GitCommit&&i.push(n.GitCommit),t.setAttribute("title",i.join(" · "))}formatVersionDate(t){if(!t)return"";let e=String(t).match(/^(\d{4}-\d{2}-\d{2})/);return e?e[1]:String(t)}sanitizeTitle(t){return t?this.escapeHTML(t).replace(/<small>/gi,"<small>").replace(/<\/small>/gi,"</small>"):""}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}},e.exports.default_configuration={ViewIdentifier:"Docuserve-TopBar",DefaultRenderable:"Docuserve-TopBar-Content",DefaultDestinationAddress:"#Docuserve-TopBar-Container",AutoRender:!1,CSS:'\n\t\t.docuserve-topbar {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: space-between;\n\t\t\tbackground-color: var(--docuserve-topbar-bg);\n\t\t\tcolor: var(--docuserve-topbar-text);\n\t\t\tpadding: 0 1.5em;\n\t\t\theight: 56px;\n\t\t\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.18);\n\t\t\tposition: sticky;\n\t\t\ttop: 0;\n\t\t\tz-index: 100;\n\t\t\ttransition: background-color 0.15s ease, color 0.15s ease;\n\t\t}\n\t\t.docuserve-topbar-brand {\n\t\t\tfont-size: 1.25em;\n\t\t\tfont-weight: 600;\n\t\t\tletter-spacing: 0.02em;\n\t\t\tcolor: var(--docuserve-topbar-text);\n\t\t\ttext-decoration: none;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-topbar-brand small {\n\t\t\tfont-size: 0.65em;\n\t\t\tfont-weight: 400;\n\t\t\tcolor: var(--docuserve-topbar-text-dim);\n\t\t\tmargin-left: 0.2em;\n\t\t}\n\t\t.docuserve-topbar-brand:hover {\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.docuserve-topbar-brandgroup {\n\t\t\tdisplay: flex;\n\t\t\talign-items: baseline;\n\t\t\tgap: 0.6em;\n\t\t}\n\t\t.docuserve-topbar-version {\n\t\t\tfont-size: 0.75em;\n\t\t\tfont-weight: 500;\n\t\t\tcolor: var(--docuserve-topbar-version-text);\n\t\t\tbackground-color: var(--docuserve-topbar-version-bg);\n\t\t\tborder: 1px solid var(--docuserve-topbar-version-border);\n\t\t\tpadding: 0.12em 0.5em;\n\t\t\tborder-radius: 10px;\n\t\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n\t\t\tletter-spacing: 0.02em;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\t.docuserve-topbar-version:empty {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.docuserve-topbar-nav {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 0.25em;\n\t\t}\n\t\t.docuserve-topbar-nav a {\n\t\t\tcolor: var(--docuserve-topbar-text-muted);\n\t\t\ttext-decoration: none;\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tborder-radius: 4px;\n\t\t\tfont-size: 0.9em;\n\t\t\ttransition: background-color 0.15s, color 0.15s;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.docuserve-topbar-nav a:hover {\n\t\t\tbackground-color: var(--docuserve-topbar-hover-bg);\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.docuserve-topbar-links {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 0.5em;\n\t\t}\n\t\t.docuserve-topbar-links a {\n\t\t\tcolor: var(--docuserve-topbar-text-dim);\n\t\t\ttext-decoration: none;\n\t\t\tfont-size: 0.85em;\n\t\t\tpadding: 0.4em 0.6em;\n\t\t\tborder-radius: 4px;\n\t\t\ttransition: background-color 0.15s, color 0.15s;\n\t\t}\n\t\t.docuserve-topbar-links a:hover {\n\t\t\tbackground-color: var(--docuserve-topbar-hover-bg);\n\t\t\tcolor: var(--docuserve-topbar-text);\n\t\t}\n\t\t.docuserve-topbar-theme {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tgap: 2px;\n\t\t\tmargin: 0 0.35em 0 0.15em;\n\t\t\tpadding: 2px;\n\t\t\tbackground: rgba(255, 255, 255, 0.035);\n\t\t\tborder: 1px solid rgba(255, 255, 255, 0.08);\n\t\t\tborder-radius: 999px;\n\t\t}\n\t\t.docuserve-topbar-theme-btn {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\twidth: 24px;\n\t\t\theight: 24px;\n\t\t\tpadding: 0;\n\t\t\tbackground: transparent;\n\t\t\tborder: none;\n\t\t\tborder-radius: 999px;\n\t\t\tcolor: var(--docuserve-topbar-text-dim);\n\t\t\tcursor: pointer;\n\t\t\ttransition: background-color 0.15s ease, color 0.15s ease;\n\t\t}\n\t\t.docuserve-topbar-theme-btn svg {\n\t\t\tdisplay: block;\n\t\t\twidth: 14px;\n\t\t\theight: 14px;\n\t\t\tstroke: currentColor;\n\t\t\tfill: none;\n\t\t\tstroke-width: 1.75;\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-linejoin: round;\n\t\t}\n\t\t.docuserve-topbar-theme-btn:hover {\n\t\t\tcolor: var(--docuserve-topbar-text);\n\t\t}\n\t\t.docuserve-topbar-theme-btn[aria-pressed="true"] {\n\t\t\tbackground: var(--docuserve-topbar-hover-bg);\n\t\t\tcolor: var(--docuserve-topbar-text);\n\t\t}\n\t\t.docuserve-topbar-toggle {\n\t\t\tdisplay: none;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tcolor: var(--docuserve-topbar-text-muted);\n\t\t\tfont-size: 1.3em;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 0.3em 0.5em;\n\t\t\tmargin-left: 0.5em;\n\t\t\tline-height: 1;\n\t\t}\n\t\t.docuserve-topbar-toggle:hover {\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.docuserve-topbar-right {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\t',Templates:[{Hash:"Docuserve-TopBar-Template",Template:'\n<div class="docuserve-topbar">\n\t<div class="docuserve-topbar-brandgroup">\n\t\t<a id="Docuserve-TopBar-Brand" class="docuserve-topbar-brand" href="#/Home"></a>\n\t\t<span id="Docuserve-TopBar-Version" class="docuserve-topbar-version" title=""></span>\n\t</div>\n\t<div id="Docuserve-TopBar-Nav" class="docuserve-topbar-nav"></div>\n\t<div class="docuserve-topbar-right">\n\t\t<div id="Docuserve-TopBar-Links" class="docuserve-topbar-links"></div>\n\t\t<div id="Docuserve-TopBar-Theme" class="docuserve-topbar-theme" role="group" aria-label="Theme">\n\t\t\t<button type="button" class="docuserve-topbar-theme-btn" data-theme-choice="system" aria-label="Use system theme" aria-pressed="false"><svg viewBox="0 0 16 16" aria-hidden="true"><rect x="1.75" y="2.5" width="12.5" height="8.5" rx="1.25"></rect><line x1="5.5" y1="13.5" x2="10.5" y2="13.5"></line><line x1="8" y1="11" x2="8" y2="13.5"></line></svg></button>\n\t\t\t<button type="button" class="docuserve-topbar-theme-btn" data-theme-choice="light" aria-label="Use light theme" aria-pressed="false"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="3.25"></circle><line x1="8" y1="1.25" x2="8" y2="2.75"></line><line x1="8" y1="13.25" x2="8" y2="14.75"></line><line x1="1.25" y1="8" x2="2.75" y2="8"></line><line x1="13.25" y1="8" x2="14.75" y2="8"></line><line x1="3.25" y1="3.25" x2="4.3" y2="4.3"></line><line x1="11.7" y1="11.7" x2="12.75" y2="12.75"></line><line x1="3.25" y1="12.75" x2="4.3" y2="11.7"></line><line x1="11.7" y1="4.3" x2="12.75" y2="3.25"></line></svg></button>\n\t\t\t<button type="button" class="docuserve-topbar-theme-btn" data-theme-choice="dark" aria-label="Use dark theme" aria-pressed="false"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M13.25 9.5A5.5 5.5 0 0 1 6.5 2.75a5.5 5.5 0 1 0 6.75 6.75z"></path></svg></button>\n\t\t</div>\n\t\t<button id="Docuserve-TopBar-Toggle" class="docuserve-topbar-toggle" onclick="{~P~}.views[\'Docuserve-Sidebar\'].toggleSidebar()">☰</button>\n\t</div>\n</div>\n'}],Renderables:[{RenderableHash:"Docuserve-TopBar-Content",TemplateHash:"Docuserve-TopBar-Template",DestinationAddress:"#Docuserve-TopBar-Container",RenderMethod:"replace"}]}},{"pict-view":15}]},{},[17])(17)});
|
|
58
58
|
//# sourceMappingURL=pict-docuserve.min.js.map
|