pict-docuserve 1.4.5 → 1.4.7

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.
@@ -1,6 +1,6 @@
1
1
  "use strict";function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread2(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty2(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}function _defineProperty2(e,r,t){return(r=_toPropertyKey2(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e;}function _toPropertyKey2(t){var i=_toPrimitive2(t,"string");return"symbol"==typeof i?i:i+"";}function _toPrimitive2(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f();}else if(typeof define==="function"&&define.amd){define([],f);}else{var g;if(typeof window!=="undefined"){g=window;}else if(typeof global!=="undefined"){g=global;}else if(typeof self!=="undefined"){g=self;}else{g=this;}g.PictDocuserve=f();}})(function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a;}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r);},p,p.exports,r,e,n,t);}return n[i].exports;}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o;}return r;}()({1:[function(require,module,exports){'use strict';var eachOfLimit=require('async.util.eachoflimit');var withoutIndex=require('async.util.withoutindex');module.exports=function eachLimit(arr,limit,iterator,cb){return eachOfLimit(limit)(arr,withoutIndex(iterator),cb);};},{"async.util.eachoflimit":3,"async.util.withoutindex":14}],2:[function(require,module,exports){'use strict';module.exports=function(tasks){function makeCallback(index){function fn(){if(tasks.length){tasks[index].apply(null,arguments);}return fn.next();}fn.next=function(){return index<tasks.length-1?makeCallback(index+1):null;};return fn;}return makeCallback(0);};},{}],3:[function(require,module,exports){var once=require('async.util.once');var noop=require('async.util.noop');var onlyOnce=require('async.util.onlyonce');var keyIterator=require('async.util.keyiterator');module.exports=function eachOfLimit(limit){return function(obj,iterator,cb){cb=once(cb||noop);obj=obj||[];var nextKey=keyIterator(obj);if(limit<=0){return cb(null);}var done=false;var running=0;var errored=false;(function replenish(){if(done&&running<=0){return cb(null);}while(running<limit&&!errored){var key=nextKey();if(key===null){done=true;if(running<=0){cb(null);}return;}running+=1;iterator(obj[key],key,onlyOnce(function(err){running-=1;if(err){cb(err);errored=true;}else{replenish();}}));}})();};};},{"async.util.keyiterator":7,"async.util.noop":9,"async.util.once":10,"async.util.onlyonce":11}],4:[function(require,module,exports){'use strict';var setImmediate=require('async.util.setimmediate');var restParam=require('async.util.restparam');module.exports=function(fn){return restParam(function(args){var callback=args.pop();args.push(function(){var innerArgs=arguments;if(sync){setImmediate(function(){callback.apply(null,innerArgs);});}else{callback.apply(null,innerArgs);}});var sync=true;fn.apply(this,args);sync=false;});};},{"async.util.restparam":12,"async.util.setimmediate":13}],5:[function(require,module,exports){'use strict';module.exports=Array.isArray||function isArray(obj){return Object.prototype.toString.call(obj)==='[object Array]';};},{}],6:[function(require,module,exports){'use strict';var isArray=require('async.util.isarray');module.exports=function isArrayLike(arr){return isArray(arr)||// has a positive integer length property
2
2
  typeof arr.length==='number'&&arr.length>=0&&arr.length%1===0;};},{"async.util.isarray":5}],7:[function(require,module,exports){'use strict';var _keys=require('async.util.keys');var isArrayLike=require('async.util.isarraylike');module.exports=function keyIterator(coll){var i=-1;var len;var keys;if(isArrayLike(coll)){len=coll.length;return function next(){i++;return i<len?i:null;};}else{keys=_keys(coll);len=keys.length;return function next(){i++;return i<len?keys[i]:null;};}};},{"async.util.isarraylike":6,"async.util.keys":8}],8:[function(require,module,exports){'use strict';module.exports=Object.keys||function keys(obj){var _keys=[];for(var k in obj){if(obj.hasOwnProperty(k)){_keys.push(k);}}return _keys;};},{}],9:[function(require,module,exports){'use strict';module.exports=function noop(){};},{}],10:[function(require,module,exports){'use strict';module.exports=function once(fn){return function(){if(fn===null)return;fn.apply(this,arguments);fn=null;};};},{}],11:[function(require,module,exports){'use strict';module.exports=function only_once(fn){return function(){if(fn===null)throw new Error('Callback was already called.');fn.apply(this,arguments);fn=null;};};},{}],12:[function(require,module,exports){'use strict';module.exports=function restParam(func,startIndex){startIndex=startIndex==null?func.length-1:+startIndex;return function(){var length=Math.max(arguments.length-startIndex,0);var rest=new Array(length);for(var index=0;index<length;index++){rest[index]=arguments[index+startIndex];}switch(startIndex){case 0:return func.call(this,rest);case 1:return func.call(this,arguments[0],rest);}};};},{}],13:[function(require,module,exports){(function(setImmediate){(function(){'use strict';var _setImmediate=typeof setImmediate==='function'&&setImmediate;var fallback=function fallback(fn){setTimeout(fn,0);};module.exports=function setImmediate(fn){// not a direct alias for IE10 compatibility
3
- return(_setImmediate||fallback)(fn);};}).call(this);}).call(this,require("timers").setImmediate);},{"timers":342}],14:[function(require,module,exports){'use strict';module.exports=function withoutIndex(iterator){return function(value,index,callback){return iterator(value,callback);};};},{}],15:[function(require,module,exports){'use strict';var once=require('async.util.once');var noop=require('async.util.noop');var isArray=require('async.util.isarray');var restParam=require('async.util.restparam');var ensureAsync=require('async.util.ensureasync');var iterator=require('async.iterator');module.exports=function(tasks,cb){cb=once(cb||noop);if(!isArray(tasks))return cb(new Error('First argument to waterfall must be an array of functions'));if(!tasks.length)return cb();function wrapIterator(iterator){return restParam(function(err,args){if(err){cb.apply(null,[err].concat(args));}else{var next=iterator.next();if(next){args.push(wrapIterator(next));}else{args.push(cb);}ensureAsync(iterator).apply(null,args);}});}wrapIterator(iterator(tasks))();};},{"async.iterator":2,"async.util.ensureasync":4,"async.util.isarray":5,"async.util.noop":9,"async.util.once":10,"async.util.restparam":12}],16:[function(require,module,exports){'use strict';exports.byteLength=byteLength;exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=='undefined'?Uint8Array:Array;var code='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';for(var i=0,len=code.length;i<len;++i){lookup[i]=code[i];revLookup[code.charCodeAt(i)]=i;}// Support decoding URL-safe base64 strings, as Node.js does.
3
+ return(_setImmediate||fallback)(fn);};}).call(this);}).call(this,require("timers").setImmediate);},{"timers":345}],14:[function(require,module,exports){'use strict';module.exports=function withoutIndex(iterator){return function(value,index,callback){return iterator(value,callback);};};},{}],15:[function(require,module,exports){'use strict';var once=require('async.util.once');var noop=require('async.util.noop');var isArray=require('async.util.isarray');var restParam=require('async.util.restparam');var ensureAsync=require('async.util.ensureasync');var iterator=require('async.iterator');module.exports=function(tasks,cb){cb=once(cb||noop);if(!isArray(tasks))return cb(new Error('First argument to waterfall must be an array of functions'));if(!tasks.length)return cb();function wrapIterator(iterator){return restParam(function(err,args){if(err){cb.apply(null,[err].concat(args));}else{var next=iterator.next();if(next){args.push(wrapIterator(next));}else{args.push(cb);}ensureAsync(iterator).apply(null,args);}});}wrapIterator(iterator(tasks))();};},{"async.iterator":2,"async.util.ensureasync":4,"async.util.isarray":5,"async.util.noop":9,"async.util.once":10,"async.util.restparam":12}],16:[function(require,module,exports){'use strict';exports.byteLength=byteLength;exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=='undefined'?Uint8Array:Array;var code='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';for(var i=0,len=code.length;i<len;++i){lookup[i]=code[i];revLookup[code.charCodeAt(i)]=i;}// Support decoding URL-safe base64 strings, as Node.js does.
4
4
  // See: https://en.wikipedia.org/wiki/Base64#URL_applications
5
5
  revLookup['-'.charCodeAt(0)]=62;revLookup['_'.charCodeAt(0)]=63;function getLens(b64){var len=b64.length;if(len%4>0){throw new Error('Invalid string. Length must be a multiple of 4');}// Trim off extra bytes after placeholder bytes are found
6
6
  // See: https://github.com/beatgammit/base64-js/issues/42
@@ -704,7 +704,7 @@ module.exports.CoreServiceProviderBase=FableServiceProviderBase;},{"../package.j
704
704
  * @module Fable Settings
705
705
  */const libPrecedent=require('precedent');class FableSettingsTemplateProcessor{constructor(pDependencies){// Use a no-dependencies templating engine to parse out environment variables
706
706
  this.templateProcessor=new libPrecedent();// TODO: Make the environment variable wrap expression demarcation characters configurable?
707
- this.templateProcessor.addPattern('${','}',pTemplateValue=>{let tmpTemplateValue=pTemplateValue.trim();let tmpSeparatorIndex=tmpTemplateValue.indexOf('|');const tmpDefaultValue=tmpSeparatorIndex>=0?tmpTemplateValue.substring(tmpSeparatorIndex+1):'';let tmpEnvironmentVariableName=tmpSeparatorIndex>-1?tmpTemplateValue.substring(0,tmpSeparatorIndex):tmpTemplateValue;if(tmpEnvironmentVariableName in process.env){return process.env[tmpEnvironmentVariableName];}else{return tmpDefaultValue;}});}parseSetting(pString){return this.templateProcessor.parseString(pString);}}module.exports=FableSettingsTemplateProcessor;}).call(this);}).call(this,require('_process'));},{"_process":305,"precedent":302}],63:[function(require,module,exports){/**
707
+ this.templateProcessor.addPattern('${','}',pTemplateValue=>{let tmpTemplateValue=pTemplateValue.trim();let tmpSeparatorIndex=tmpTemplateValue.indexOf('|');const tmpDefaultValue=tmpSeparatorIndex>=0?tmpTemplateValue.substring(tmpSeparatorIndex+1):'';let tmpEnvironmentVariableName=tmpSeparatorIndex>-1?tmpTemplateValue.substring(0,tmpSeparatorIndex):tmpTemplateValue;if(tmpEnvironmentVariableName in process.env){return process.env[tmpEnvironmentVariableName];}else{return tmpDefaultValue;}});}parseSetting(pString){return this.templateProcessor.parseString(pString);}}module.exports=FableSettingsTemplateProcessor;}).call(this);}).call(this,require('_process'));},{"_process":308,"precedent":305}],63:[function(require,module,exports){/**
708
708
  * Fable Settings Add-on
709
709
  *
710
710
  *
@@ -1817,7 +1817,7 @@ tmpParameters.CurrentPathIndex++;}// Check if the path is fully complete
1817
1817
  if(tmpParameters.CurrentPathIndex>=tmpParameters.ActualPathParts.length){return fCallback(null);}// Check if the path exists (and is a folder)
1818
1818
  libFS.open(tmpParameters.CurrentPath+libPath.sep+tmpParameters.ActualPathParts[tmpParameters.CurrentPathIndex],'r',(pError,pFileDescriptor)=>{if(pFileDescriptor){libFS.closeSync(pFileDescriptor);}if(pError&&pError.code=='ENOENT'){/* Path doesn't exist, create it */libFS.mkdir(tmpParameters.CurrentPath+libPath.sep+tmpParameters.ActualPathParts[tmpParameters.CurrentPathIndex],tmpParameters.Mode,pCreateError=>{if(!pCreateError){// We have now created our folder and there was no error -- continue.
1819
1819
  return this.makeFolderRecursive(tmpParameters,fCallback);}else if(pCreateError.code=='EEXIST'){// The folder exists -- our dev might be running this in parallel/async/whatnot.
1820
- return this.makeFolderRecursive(tmpParameters,fCallback);}else{console.log(pCreateError.code);return fCallback(pCreateError);}});}else{return this.makeFolderRecursive(tmpParameters,fCallback);}});}}module.exports=FableServiceFilePersistence;}).call(this);}).call(this,require('_process'));},{"_process":305,"fable-serviceproviderbase":59,"fs":19,"path":139,"readline":19}],88:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');class FableServiceLogic extends libFableServiceBase{/**
1820
+ return this.makeFolderRecursive(tmpParameters,fCallback);}else{console.log(pCreateError.code);return fCallback(pCreateError);}});}else{return this.makeFolderRecursive(tmpParameters,fCallback);}});}}module.exports=FableServiceFilePersistence;}).call(this);}).call(this,require('_process'));},{"_process":308,"fable-serviceproviderbase":59,"fs":19,"path":139,"readline":19}],88:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');class FableServiceLogic extends libFableServiceBase{/**
1821
1821
  * @param {import('../Fable.js')} pFable - The fable object
1822
1822
  * @param {Record<string, any>} [pOptions] - The options object
1823
1823
  * @param {string} [pServiceHash] - The hash of the service
@@ -2826,7 +2826,7 @@ return this._executeBinaryUploadInternal(pOptions,fCallback,fOnProgress);}/**
2826
2826
  * @param {(pProgress: number) => void} [fOnProgress] - Optional progress callback (0.0 to 1.0); called with 1.0 on completion
2827
2827
  * @private
2828
2828
  */_executeBinaryUploadInternal(pOptions,fCallback,fOnProgress){let tmpOptions=this.preRequest(pOptions);tmpOptions.RequestStartTime=this.fable.log.getTimeStamp();if(this.TraceLog){this.fable.log.debug("Beginning ".concat(tmpOptions.method," binary upload to ").concat(tmpOptions.url," at ").concat(tmpOptions.RequestStartTime));}tmpOptions.json=false;return this._executeWithRedirects(tmpOptions,(pError,pResponse)=>{if(pError){return fCallback(pError,pResponse);}if(this.TraceLog){let tmpConnectTime=this.fable.log.getTimeStamp();this.fable.log.debug("--> Binary upload ".concat(tmpOptions.method," connected in ").concat(this.dataFormat.formatTimeDelta(tmpOptions.RequestStartTime,tmpConnectTime),"ms code ").concat(pResponse.statusCode));}let tmpData='';pResponse.on('data',pChunk=>{if(this.TraceLog){let tmpChunkTime=this.fable.log.getTimeStamp();this.fable.log.debug("--> Binary upload ".concat(tmpOptions.method," response chunk size ").concat(pChunk.length,"b received in ").concat(this.dataFormat.formatTimeDelta(tmpOptions.RequestStartTime,tmpChunkTime),"ms"));}tmpData+=pChunk;});pResponse.on('end',()=>{if(this.TraceLog){let tmpCompletionTime=this.fable.log.getTimeStamp();this.fable.log.debug("==> Binary upload ".concat(tmpOptions.method," completed in ").concat(this.dataFormat.formatTimeDelta(tmpOptions.RequestStartTime,tmpCompletionTime),"ms"));}// Signal completion via progress callback
2829
- if(typeof fOnProgress==='function'){fOnProgress(1.0);}return fCallback(pError,pResponse,tmpData);});});}getRawText(pOptionsOrURL,fCallback){let tmpRequestOptions=typeof pOptionsOrURL=='object'?pOptionsOrURL:{};if(typeof pOptionsOrURL=='string'){tmpRequestOptions.url=pOptionsOrURL;}tmpRequestOptions.method='GET';return this.executeChunkedRequest(tmpRequestOptions,fCallback);}}module.exports=FableServiceRestClient;}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":20,"cookie":31,"fable-serviceproviderbase":59,"http":322,"https":113,"simple-get":321}],99:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');class FableServiceTemplate extends libFableServiceBase{// Underscore and lodash have a behavior, _.template, which compiles a
2829
+ if(typeof fOnProgress==='function'){fOnProgress(1.0);}return fCallback(pError,pResponse,tmpData);});});}getRawText(pOptionsOrURL,fCallback){let tmpRequestOptions=typeof pOptionsOrURL=='object'?pOptionsOrURL:{};if(typeof pOptionsOrURL=='string'){tmpRequestOptions.url=pOptionsOrURL;}tmpRequestOptions.method='GET';return this.executeChunkedRequest(tmpRequestOptions,fCallback);}}module.exports=FableServiceRestClient;}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":20,"cookie":31,"fable-serviceproviderbase":59,"http":325,"https":113,"simple-get":324}],99:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');class FableServiceTemplate extends libFableServiceBase{// Underscore and lodash have a behavior, _.template, which compiles a
2830
2830
  // string-based template with code snippets into simple executable pieces,
2831
2831
  // with the added twist of returning a precompiled function ready to go.
2832
2832
  //
@@ -3036,7 +3036,7 @@ $gOPD=null;}}module.exports=$gOPD;},{"./gOPD":108}],110:[function(require,module
3036
3036
  // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }
3037
3037
  var symVal=42;obj[sym]=symVal;for(var _ in obj){return false;}// eslint-disable-line no-restricted-syntax, no-unreachable-loop
3038
3038
  if(typeof Object.keys==='function'&&Object.keys(obj).length!==0){return false;}if(typeof Object.getOwnPropertyNames==='function'&&Object.getOwnPropertyNames(obj).length!==0){return false;}var syms=Object.getOwnPropertySymbols(obj);if(syms.length!==1||syms[0]!==sym){return false;}if(!Object.prototype.propertyIsEnumerable.call(obj,sym)){return false;}if(typeof Object.getOwnPropertyDescriptor==='function'){// eslint-disable-next-line no-extra-parens
3039
- var descriptor=/** @type {PropertyDescriptor} */Object.getOwnPropertyDescriptor(obj,sym);if(descriptor.value!==symVal||descriptor.enumerable!==true){return false;}}return true;};},{}],112:[function(require,module,exports){'use strict';var call=Function.prototype.call;var $hasOwn=Object.prototype.hasOwnProperty;var bind=require('function-bind');/** @type {import('.')} */module.exports=bind.call(call,$hasOwn);},{"function-bind":103}],113:[function(require,module,exports){var http=require('http');var url=require('url');var https=module.exports;for(var key in http){if(http.hasOwnProperty(key))https[key]=http[key];}https.request=function(params,cb){params=validateParams(params);return http.request.call(this,params,cb);};https.get=function(params,cb){params=validateParams(params);return http.get.call(this,params,cb);};function validateParams(params){if(typeof params==='string'){params=url.parse(params);}if(!params.protocol){params.protocol='https:';}if(params.protocol!=='https:'){throw new Error('Protocol "'+params.protocol+'" not supported. Expected "https:"');}return params;}},{"http":322,"url":343}],114:[function(require,module,exports){/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias;}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity;}else{m=m+Math.pow(2,mLen);e=e-eBias;}return(s?-1:1)*m*Math.pow(2,e-mLen);};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax;}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2;}if(e+eBias>=1){value+=rt/c;}else{value+=rt*Math.pow(2,1-eBias);}if(value*c>=2){e++;c/=2;}if(e+eBias>=eMax){m=0;e=eMax;}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias;}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0;}}for(;mLen>=8;buffer[offset+i]=m&0xff,i+=d,m/=256,mLen-=8){}e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&0xff,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128;};},{}],115:[function(require,module,exports){if(typeof Object.create==='function'){// implementation from standard node.js 'util' module
3039
+ var descriptor=/** @type {PropertyDescriptor} */Object.getOwnPropertyDescriptor(obj,sym);if(descriptor.value!==symVal||descriptor.enumerable!==true){return false;}}return true;};},{}],112:[function(require,module,exports){'use strict';var call=Function.prototype.call;var $hasOwn=Object.prototype.hasOwnProperty;var bind=require('function-bind');/** @type {import('.')} */module.exports=bind.call(call,$hasOwn);},{"function-bind":103}],113:[function(require,module,exports){var http=require('http');var url=require('url');var https=module.exports;for(var key in http){if(http.hasOwnProperty(key))https[key]=http[key];}https.request=function(params,cb){params=validateParams(params);return http.request.call(this,params,cb);};https.get=function(params,cb){params=validateParams(params);return http.get.call(this,params,cb);};function validateParams(params){if(typeof params==='string'){params=url.parse(params);}if(!params.protocol){params.protocol='https:';}if(params.protocol!=='https:'){throw new Error('Protocol "'+params.protocol+'" not supported. Expected "https:"');}return params;}},{"http":325,"url":346}],114:[function(require,module,exports){/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias;}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity;}else{m=m+Math.pow(2,mLen);e=e-eBias;}return(s?-1:1)*m*Math.pow(2,e-mLen);};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax;}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2;}if(e+eBias>=1){value+=rt/c;}else{value+=rt*Math.pow(2,1-eBias);}if(value*c>=2){e++;c/=2;}if(e+eBias>=eMax){m=0;e=eMax;}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias;}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0;}}for(;mLen>=8;buffer[offset+i]=m&0xff,i+=d,m/=256,mLen-=8){}e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&0xff,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128;};},{}],115:[function(require,module,exports){if(typeof Object.create==='function'){// implementation from standard node.js 'util' module
3040
3040
  module.exports=function inherits(ctor,superCtor){if(superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}});}};}else{// old school shim for old browsers
3041
3041
  module.exports=function inherits(ctor,superCtor){if(superCtor){ctor.super_=superCtor;var TempCtor=function TempCtor(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor();ctor.prototype.constructor=ctor;}};}},{}],116:[function(require,module,exports){/**
3042
3042
  * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
@@ -5180,7 +5180,7 @@ if(!has(obj,key)){continue;}// eslint-disable-line no-restricted-syntax, no-cont
5180
5180
  if(isArr&&String(Number(key))===key&&key<obj.length){continue;}// eslint-disable-line no-restricted-syntax, no-continue
5181
5181
  if(hasShammedSymbols&&symMap['$'+key]instanceof Symbol){// this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section
5182
5182
  continue;// eslint-disable-line no-restricted-syntax, no-continue
5183
- }else if($test.call(/[^\w$]/,key)){xs.push(inspect(key,obj)+': '+inspect(obj[key],obj));}else{xs.push(key+': '+inspect(obj[key],obj));}}if(typeof gOPS==='function'){for(var j=0;j<syms.length;j++){if(isEnumerable.call(obj,syms[j])){xs.push('['+inspect(syms[j])+']: '+inspect(obj[syms[j]],obj));}}}return xs;}}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"./util.inspect":18}],138:[function(require,module,exports){var wrappy=require('wrappy');module.exports=wrappy(once);module.exports.strict=wrappy(onceStrict);once.proto=once(function(){Object.defineProperty(Function.prototype,'once',{value:function value(){return once(this);},configurable:true});Object.defineProperty(Function.prototype,'onceStrict',{value:function value(){return onceStrict(this);},configurable:true});});function once(fn){var _f=function f(){if(_f.called)return _f.value;_f.called=true;return _f.value=fn.apply(this,arguments);};_f.called=false;return _f;}function onceStrict(fn){var _f2=function f(){if(_f2.called)throw new Error(_f2.onceError);_f2.called=true;return _f2.value=fn.apply(this,arguments);};var name=fn.name||'Function wrapped with `once`';_f2.onceError=name+" shouldn't be called more than once";_f2.called=false;return _f2;}},{"wrappy":345}],139:[function(require,module,exports){(function(process){(function(){// 'path' module extracted from Node.js v8.11.1 (only the posix part)
5183
+ }else if($test.call(/[^\w$]/,key)){xs.push(inspect(key,obj)+': '+inspect(obj[key],obj));}else{xs.push(key+': '+inspect(obj[key],obj));}}if(typeof gOPS==='function'){for(var j=0;j<syms.length;j++){if(isEnumerable.call(obj,syms[j])){xs.push('['+inspect(syms[j])+']: '+inspect(obj[syms[j]],obj));}}}return xs;}}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"./util.inspect":18}],138:[function(require,module,exports){var wrappy=require('wrappy');module.exports=wrappy(once);module.exports.strict=wrappy(onceStrict);once.proto=once(function(){Object.defineProperty(Function.prototype,'once',{value:function value(){return once(this);},configurable:true});Object.defineProperty(Function.prototype,'onceStrict',{value:function value(){return onceStrict(this);},configurable:true});});function once(fn){var _f=function f(){if(_f.called)return _f.value;_f.called=true;return _f.value=fn.apply(this,arguments);};_f.called=false;return _f;}function onceStrict(fn){var _f2=function f(){if(_f2.called)throw new Error(_f2.onceError);_f2.called=true;return _f2.value=fn.apply(this,arguments);};var name=fn.name||'Function wrapped with `once`';_f2.onceError=name+" shouldn't be called more than once";_f2.called=false;return _f2;}},{"wrappy":348}],139:[function(require,module,exports){(function(process){(function(){// 'path' module extracted from Node.js v8.11.1 (only the posix part)
5184
5184
  // transplited with Babel
5185
5185
  // Copyright Joyent, Inc. and other Node contributors.
5186
5186
  //
@@ -5262,7 +5262,7 @@ if(startDot===-1)startDot=i;else if(preDotState!==1)preDotState=1;}else if(start
5262
5262
  // have a good chance at having a non-empty extension
5263
5263
  preDotState=-1;}}if(startDot===-1||end===-1||// We saw a non-dot character immediately before the dot
5264
5264
  preDotState===0||// The (right-most) trimmed path component is exactly '..'
5265
- preDotState===1&&startDot===end-1&&startDot===startPart+1){if(end!==-1){if(startPart===0&&isAbsolute)ret.base=ret.name=path.slice(1,end);else ret.base=ret.name=path.slice(startPart,end);}}else{if(startPart===0&&isAbsolute){ret.name=path.slice(1,startDot);ret.base=path.slice(1,end);}else{ret.name=path.slice(startPart,startDot);ret.base=path.slice(startPart,end);}ret.ext=path.slice(startDot,end);}if(startPart>0)ret.dir=path.slice(0,startPart-1);else if(isAbsolute)ret.dir='/';return ret;},sep:'/',delimiter:':',win32:null,posix:null};posix.posix=posix;module.exports=posix;}).call(this);}).call(this,require('_process'));},{"_process":305}],140:[function(require,module,exports){module.exports={"name":"pict-application","version":"1.0.34","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-docuserve":"^0.1.5","pict-provider":"^1.0.10","pict-view":"^1.0.66","quackage":"^1.1.0","typescript":"^5.9.3"},"mocha":{"diff":true,"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"}};},{}],141:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');const libPackage=require('../package.json');const defaultPictSettings={Name:'DefaultPictApplication',// The main "viewport" is the view that is used to host our application
5265
+ preDotState===1&&startDot===end-1&&startDot===startPart+1){if(end!==-1){if(startPart===0&&isAbsolute)ret.base=ret.name=path.slice(1,end);else ret.base=ret.name=path.slice(startPart,end);}}else{if(startPart===0&&isAbsolute){ret.name=path.slice(1,startDot);ret.base=path.slice(1,end);}else{ret.name=path.slice(startPart,startDot);ret.base=path.slice(startPart,end);}ret.ext=path.slice(startDot,end);}if(startPart>0)ret.dir=path.slice(0,startPart-1);else if(isAbsolute)ret.dir='/';return ret;},sep:'/',delimiter:':',win32:null,posix:null};posix.posix=posix;module.exports=posix;}).call(this);}).call(this,require('_process'));},{"_process":308}],140:[function(require,module,exports){module.exports={"name":"pict-application","version":"1.0.34","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-docuserve":"^0.1.5","pict-provider":"^1.0.10","pict-view":"^1.0.66","quackage":"^1.1.0","typescript":"^5.9.3"},"mocha":{"diff":true,"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"}};},{}],141:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');const libPackage=require('../package.json');const defaultPictSettings={Name:'DefaultPictApplication',// The main "viewport" is the view that is used to host our application
5266
5266
  MainViewportViewIdentifier:'Default-View',MainViewportRenderableHash:false,MainViewportDestinationAddress:false,MainViewportDefaultDataAddress:false,// Whether or not we should automatically render the main viewport and other autorender views after we initialize the pict application
5267
5267
  AutoSolveAfterInitialize:true,AutoRenderMainViewportViewAfterInitialize:true,AutoRenderViewsAfterInitialize:false,AutoLoginAfterInitialize:false,AutoLoadDataAfterLogin:false,ConfigurationOnlyViews:[],Manifests:{},// The prefix to prepend on all template destination hashes
5268
5268
  IdentifierAddressPrefix:'PICT-'};/**
@@ -5495,7 +5495,11 @@ tmpLoadedViews.sort((a,b)=>{return this.pict.views[a].options.AutoRenderOrdinal-
5495
5495
  *
5496
5496
  * @author Steven Velozo <steven@velozo.com>
5497
5497
  * @license MIT
5498
- */const libPictProvider=require('pict-provider');const _ProviderConfiguration={ProviderIdentifier:'Theme',AutoInitialize:true,AutoInitializeOrdinal:0};const STYLE_ELEMENT_ID='pict-theme';const HTML_CLASS_LIGHT='theme-light';const HTML_CLASS_DARK='theme-dark';const CSS_VAR_PREFIX='--theme-';class PictProviderTheme extends libPictProvider{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.serviceType='PictProviderTheme';this._themes={};this._themeOrder=[];this._activeHash=null;this._activeMode=null;this._resolvedMode=null;this._systemMediaQuery=null;this._systemListener=null;this._registeredCSSHashes=[];this._applyListeners=[];// Auto-register the four theme template expressions if the host pict
5498
+ */const libPictProvider=require('pict-provider');const libDiagramAdapter=require('./Theme-Diagram-Adapter.js');const _ProviderConfiguration={ProviderIdentifier:'Theme',AutoInitialize:true,AutoInitializeOrdinal:0};const STYLE_ELEMENT_ID='pict-theme';const HTML_CLASS_LIGHT='theme-light';const HTML_CLASS_DARK='theme-dark';const CSS_VAR_PREFIX='--theme-';class PictProviderTheme extends libPictProvider{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.serviceType='PictProviderTheme';this._themes={};this._themeOrder=[];this._activeHash=null;this._activeMode=null;this._resolvedMode=null;this._registeredCSSHashes=[];this._applyListeners=[];// Diagram adapter: helper API for plugging Mermaid (and any
5499
+ // future SVG-baking diagram engine) into the theme lifecycle.
5500
+ // Exposes the same functions as the standalone require, plus
5501
+ // `adaptMermaid(mermaid, options)` bound to this provider.
5502
+ let tmpSelf=this;this.diagram={MERMAID_TOKEN_MAP:libDiagramAdapter.MERMAID_TOKEN_MAP,readCSSVar:libDiagramAdapter.readCSSVar,getMermaidTokenMap:libDiagramAdapter.getMermaidTokenMap,buildMermaidThemeVariables:libDiagramAdapter.buildMermaidThemeVariables,initializeMermaid:libDiagramAdapter.initializeMermaid,stashMermaidSource:libDiagramAdapter.stashMermaidSource,refreshMermaidDiagrams:libDiagramAdapter.refreshMermaidDiagrams,adaptMermaid:function adaptMermaid(pMermaid,pOptions){return libDiagramAdapter.adaptMermaid(tmpSelf,pMermaid,pOptions);}};// Auto-register the four theme template expressions if the host pict
5499
5503
  // supports addTemplate. In bare-fable/test contexts this is skipped.
5500
5504
  if(this.pict&&typeof this.pict.addTemplate==='function'){try{this.pict.addTemplate(require('./templates/Pict-Template-Theme.js'));this.pict.addTemplate(require('./templates/Pict-Template-ThemeVar.js'));this.pict.addTemplate(require('./templates/Pict-Template-ThemeAsset.js'));this.pict.addTemplate(require('./templates/Pict-Template-ThemeImage.js'));}catch(pError){if(this.log)this.log.warn('PictProviderTheme: template registration skipped: '+pError.message);}}}// ================================================================
5501
5505
  // Theme registration
@@ -5549,8 +5553,11 @@ this._fireApplyListeners(tmpEffective);return true;}/**
5549
5553
  * Returns a dispose function for symmetry with offApply().
5550
5554
  */onApply(fCallback){if(typeof fCallback!=='function')return function(){};this._applyListeners.push(fCallback);let tmpSelf=this;return function(){tmpSelf.offApply(fCallback);};}offApply(fCallback){let tmpIdx=this._applyListeners.indexOf(fCallback);if(tmpIdx>=0)this._applyListeners.splice(tmpIdx,1);}_fireApplyListeners(pBundle){if(this._applyListeners.length===0)return;let tmpContext={Hash:this._activeHash,Mode:this._activeMode,ResolvedMode:this._resolvedMode};for(let i=0;i<this._applyListeners.length;i++){try{this._applyListeners[i](pBundle,tmpContext);}catch(pError){if(this.log)this.log.warn('PictProviderTheme: onApply listener threw: '+pError.message);}}}/**
5551
5555
  * Remove the injected style element, html class, and any auxiliary CSS.
5552
- */unapplyTheme(){this._detachSystemListener();if(typeof document!=='undefined'){let tmpStyleEl=document.getElementById(STYLE_ELEMENT_ID);if(tmpStyleEl&&tmpStyleEl.parentNode){tmpStyleEl.parentNode.removeChild(tmpStyleEl);}if(document.documentElement&&document.documentElement.classList){document.documentElement.classList.remove(HTML_CLASS_LIGHT);document.documentElement.classList.remove(HTML_CLASS_DARK);}}// Unregister any auxiliary CSS we added.
5553
- if(this.pict&&this.pict.CSSMap&&typeof this.pict.CSSMap.removeCSS==='function'){for(let i=0;i<this._registeredCSSHashes.length;i++){this.pict.CSSMap.removeCSS(this._registeredCSSHashes[i]);}}this._registeredCSSHashes=[];this._activeHash=null;this._activeMode=null;this._resolvedMode=null;return true;}getActiveTheme(){return{Hash:this._activeHash,Mode:this._activeMode,ResolvedMode:this._resolvedMode};}// ================================================================
5556
+ */unapplyTheme(){if(typeof document!=='undefined'){let tmpStyleEl=document.getElementById(STYLE_ELEMENT_ID);if(tmpStyleEl&&tmpStyleEl.parentNode){tmpStyleEl.parentNode.removeChild(tmpStyleEl);}if(document.documentElement&&document.documentElement.classList){document.documentElement.classList.remove(HTML_CLASS_LIGHT);document.documentElement.classList.remove(HTML_CLASS_DARK);}}// Unregister any auxiliary CSS we added.
5557
+ if(this.pict&&this.pict.CSSMap&&typeof this.pict.CSSMap.removeCSS==='function'){for(let i=0;i<this._registeredCSSHashes.length;i++){this.pict.CSSMap.removeCSS(this._registeredCSSHashes[i]);}}this._registeredCSSHashes=[];this._activeHash=null;this._activeMode=null;this._resolvedMode=null;return true;}getActiveTheme(){// Live-read ResolvedMode so callers in system mode get the current OS
5558
+ // preference without the provider having to subscribe to media-query
5559
+ // changes. Snapshot mode (explicit light/dark) returns as-is.
5560
+ return{Hash:this._activeHash,Mode:this._activeMode,ResolvedMode:this._activeHash?this._currentResolvedMode():null};}// ================================================================
5554
5561
  // Token / asset accessors
5555
5562
  // ================================================================
5556
5563
  /**
@@ -5585,15 +5592,44 @@ if(this.pict&&this.pict.CSSMap&&typeof this.pict.CSSMap.removeCSS==='function'){
5585
5592
  */_walkPath(pRoot,pPath){if(!pRoot||!pPath)return null;let tmpSegments=pPath.split('.');let tmpNode=pRoot;for(let i=0;i<tmpSegments.length;i++){if(tmpNode===null||typeof tmpNode!=='object')return null;tmpNode=tmpNode[tmpSegments[i]];if(typeof tmpNode==='undefined')return null;}return tmpNode;}/**
5586
5593
  * If pValue is a paired-mode object {Light, Dark}, pick the value matching
5587
5594
  * the current resolved mode. Otherwise return as-is.
5588
- */_resolveModedValue(pValue){if(this._isPairedValue(pValue)){let tmpMode=this._resolvedMode||'light';let tmpKey=tmpMode==='dark'?'Dark':'Light';return pValue[tmpKey];}return pValue;}_isPairedValue(pValue){return pValue!==null&&typeof pValue==='object'&&!Array.isArray(pValue)&&Object.keys(pValue).length>0&&Object.keys(pValue).every(k=>k==='Light'||k==='Dark');}/**
5589
- * Build the CSS string for a theme. For single-mode themes, emits a
5590
- * single :root block. For paired themes, emits :root for the Light
5591
- * variant and a .theme-dark { ... } block for the Dark variant.
5595
+ *
5596
+ * For system mode this re-reads the OS preference on every call so the
5597
+ * value is always live-correct no JS listener required to keep it in
5598
+ * sync. Explicit modes use the snapshotted `_resolvedMode`.
5599
+ */_resolveModedValue(pValue){if(this._isPairedValue(pValue)){let tmpMode=this._currentResolvedMode();let tmpKey=tmpMode==='dark'?'Dark':'Light';return pValue[tmpKey];}return pValue;}_isPairedValue(pValue){return pValue!==null&&typeof pValue==='object'&&!Array.isArray(pValue)&&Object.keys(pValue).length>0&&Object.keys(pValue).every(k=>k==='Light'||k==='Dark');}/**
5600
+ * Build the CSS string for a theme.
5601
+ *
5602
+ * Single-mode themes emit one `:root { ... }` block.
5603
+ *
5604
+ * Paired themes emit four blocks, ordered so the CSS cascade resolves
5605
+ * to the right mode without any JS listeners:
5606
+ *
5607
+ * 1) `:root { ...light... }` — baseline
5608
+ * 2) `@media (prefers-color-scheme: dark) { :root { ...dark... } }`
5609
+ * — OS-driven
5610
+ * 3) `.theme-light { ...light... }` — explicit override
5611
+ * 4) `.theme-dark { ...dark... }` — explicit override
5612
+ *
5613
+ * Mode = 'system' is "no class on <html>" — the @media rule drives.
5614
+ * Mode = 'light'/'dark' adds the matching class which wins on tie via
5615
+ * source order (same specificity as :root, but later in the file).
5616
+ *
5617
+ * The result: OS toggle moves the page via CSS alone, no DOM listener
5618
+ * needed, no class flipping. Explicit setMode() flips the class to
5619
+ * lock the page to one mode regardless of OS preference.
5592
5620
  *
5593
5621
  * Only values under bundle.Tokens become CSS custom properties.
5594
- */_buildThemeCSS(pTheme){let tmpTokens=pTheme.Tokens||{};let tmpFlat=this._flattenTokens(tmpTokens,'');let tmpStrategy=pTheme.Modes&&pTheme.Modes.Strategy||'single';let tmpHasPaired=tmpFlat.some(tmpEntry=>this._isPairedValue(tmpEntry.Value));let tmpAliasLines=this._buildAliasLines(pTheme.Aliases);if(tmpStrategy==='single'||!tmpHasPaired){let tmpCSS=':root {\n';for(let i=0;i<tmpFlat.length;i++){let tmpEntry=tmpFlat[i];let tmpVal=this._isPairedValue(tmpEntry.Value)?tmpEntry.Value.Light:tmpEntry.Value;tmpCSS+='\t'+this._cssVarName(tmpEntry.Path)+': '+this._formatCSSValue(tmpVal)+';\n';}tmpCSS+=tmpAliasLines;tmpCSS+='}\n';return tmpCSS;}let tmpRootCSS=':root {\n';let tmpDarkCSS='.'+HTML_CLASS_DARK+' {\n';for(let i=0;i<tmpFlat.length;i++){let tmpEntry=tmpFlat[i];let tmpVarName=this._cssVarName(tmpEntry.Path);if(this._isPairedValue(tmpEntry.Value)){if(typeof tmpEntry.Value.Light!=='undefined'){tmpRootCSS+='\t'+tmpVarName+': '+this._formatCSSValue(tmpEntry.Value.Light)+';\n';}if(typeof tmpEntry.Value.Dark!=='undefined'){tmpDarkCSS+='\t'+tmpVarName+': '+this._formatCSSValue(tmpEntry.Value.Dark)+';\n';}}else{tmpRootCSS+='\t'+tmpVarName+': '+this._formatCSSValue(tmpEntry.Value)+';\n';}}// Aliases live in :root only. Their var() targets resolve to the
5595
- // active mode's value automatically no need to duplicate in dark.
5596
- tmpRootCSS+=tmpAliasLines;tmpRootCSS+='}\n';tmpDarkCSS+='}\n';return tmpRootCSS+tmpDarkCSS;}/**
5622
+ */_buildThemeCSS(pTheme){let tmpTokens=pTheme.Tokens||{};let tmpFlat=this._flattenTokens(tmpTokens,'');let tmpStrategy=pTheme.Modes&&pTheme.Modes.Strategy||'single';let tmpHasPaired=tmpFlat.some(tmpEntry=>this._isPairedValue(tmpEntry.Value));let tmpAliasLines=this._buildAliasLines(pTheme.Aliases);if(tmpStrategy==='single'||!tmpHasPaired){let tmpCSS=':root {\n';for(let i=0;i<tmpFlat.length;i++){let tmpEntry=tmpFlat[i];let tmpVal=this._isPairedValue(tmpEntry.Value)?tmpEntry.Value.Light:tmpEntry.Value;tmpCSS+='\t'+this._cssVarName(tmpEntry.Path)+': '+this._formatCSSValue(tmpVal)+';\n';}tmpCSS+=tmpAliasLines;tmpCSS+='}\n';return tmpCSS;}// Paired theme: emit the four-block cascade.
5623
+ let tmpLightLines='';let tmpDarkLines='';let tmpFixedLines='';for(let i=0;i<tmpFlat.length;i++){let tmpEntry=tmpFlat[i];let tmpVarName=this._cssVarName(tmpEntry.Path);if(this._isPairedValue(tmpEntry.Value)){if(typeof tmpEntry.Value.Light!=='undefined'){tmpLightLines+='\t'+tmpVarName+': '+this._formatCSSValue(tmpEntry.Value.Light)+';\n';}if(typeof tmpEntry.Value.Dark!=='undefined'){tmpDarkLines+='\t'+tmpVarName+': '+this._formatCSSValue(tmpEntry.Value.Dark)+';\n';}}else{// Non-paired tokens (spacing, typography, etc.) live in :root only.
5624
+ tmpFixedLines+='\t'+tmpVarName+': '+this._formatCSSValue(tmpEntry.Value)+';\n';}}// Block 1: :root holds light values + every non-paired token + aliases.
5625
+ // Aliases use var() indirection, so they resolve to the active mode
5626
+ // automatically without being duplicated in the dark blocks.
5627
+ let tmpCSS=':root {\n'+tmpLightLines+tmpFixedLines+tmpAliasLines+'}\n';// Block 2: @media (prefers-color-scheme: dark) — OS-driven dark override.
5628
+ // Only the paired tokens need to flip; fixed tokens and aliases stay
5629
+ // the same. Indented one level for readability.
5630
+ let tmpMediaInner='';let tmpDarkLinesIndented=tmpDarkLines.replace(/^\t/gm,'\t\t');tmpMediaInner+='\t:root {\n'+tmpDarkLinesIndented+'\t}\n';tmpCSS+='@media (prefers-color-scheme: dark) {\n'+tmpMediaInner+'}\n';// Block 3: .theme-light — explicit override that locks light regardless of OS.
5631
+ tmpCSS+='.'+HTML_CLASS_LIGHT+' {\n'+tmpLightLines+'}\n';// Block 4: .theme-dark — explicit override that locks dark regardless of OS.
5632
+ tmpCSS+='.'+HTML_CLASS_DARK+' {\n'+tmpDarkLines+'}\n';return tmpCSS;}/**
5597
5633
  * Emit alias lines for legacy CSS variable names that map to token paths
5598
5634
  * under Tokens. Each alias becomes:
5599
5635
  * --legacy-name: var(--theme-color-...);
@@ -5611,11 +5647,147 @@ tmpRootCSS+=tmpAliasLines;tmpRootCSS+='}\n';tmpDarkCSS+='}\n';return tmpRootCSS+
5611
5647
  */_cssVarName(pTokenPath){return CSS_VAR_PREFIX+pTokenPath.toLowerCase().replace(/\./g,'-');}_formatCSSValue(pValue){if(pValue===null||typeof pValue==='undefined')return'';if(typeof pValue==='number')return String(pValue);return String(pValue);}_injectStyleElement(pCSS){if(typeof document==='undefined')return;let tmpStyleEl=document.getElementById(STYLE_ELEMENT_ID);if(!tmpStyleEl){tmpStyleEl=document.createElement('style');tmpStyleEl.id=STYLE_ELEMENT_ID;document.head.appendChild(tmpStyleEl);}tmpStyleEl.textContent=pCSS;}_registerAuxiliaryCSS(pTheme){// Clear previously registered auxiliary CSS so stale entries don't pile
5612
5648
  // up when switching themes.
5613
5649
  if(this.pict&&this.pict.CSSMap&&typeof this.pict.CSSMap.removeCSS==='function'){for(let i=0;i<this._registeredCSSHashes.length;i++){this.pict.CSSMap.removeCSS(this._registeredCSSHashes[i]);}}this._registeredCSSHashes=[];if(!Array.isArray(pTheme.CSS))return;if(!this.pict||!this.pict.CSSMap||typeof this.pict.CSSMap.addCSS!=='function')return;for(let i=0;i<pTheme.CSS.length;i++){let tmpEntry=pTheme.CSS[i];if(!tmpEntry||!tmpEntry.Hash||typeof tmpEntry.Content!=='string')continue;let tmpPriority=typeof tmpEntry.Priority==='number'?tmpEntry.Priority:500;this.pict.CSSMap.addCSS(tmpEntry.Hash,tmpEntry.Content,tmpPriority);this._registeredCSSHashes.push(tmpEntry.Hash);}}/**
5614
- * Set or update the `theme-light` / `theme-dark` class on <html>.
5615
- * For 'system', subscribes to prefers-color-scheme.
5616
- */_applyMode(pMode,pStrategy){this._detachSystemListener();let tmpResolved=pMode;if(pMode==='system'){tmpResolved=this._readSystemPreference();this._attachSystemListener(pStrategy);}this._resolvedMode=tmpResolved==='dark'?'dark':'light';this._writeHTMLClass(this._resolvedMode);}_writeHTMLClass(pResolvedMode){if(typeof document==='undefined'||!document.documentElement||!document.documentElement.classList)return;let tmpList=document.documentElement.classList;if(pResolvedMode==='dark'){tmpList.remove(HTML_CLASS_LIGHT);tmpList.add(HTML_CLASS_DARK);}else{tmpList.remove(HTML_CLASS_DARK);tmpList.add(HTML_CLASS_LIGHT);}}_readSystemPreference(){if(typeof window==='undefined'||typeof window.matchMedia!=='function')return'light';try{return window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';}catch(pError){return'light';}}_attachSystemListener(pStrategy){if(typeof window==='undefined'||typeof window.matchMedia!=='function')return;try{let tmpSelf=this;let tmpMQ=window.matchMedia('(prefers-color-scheme: dark)');let tmpHandler=function tmpHandler(){let tmpResolved=tmpMQ.matches?'dark':'light';tmpSelf._resolvedMode=tmpResolved;tmpSelf._writeHTMLClass(tmpResolved);};if(typeof tmpMQ.addEventListener==='function'){tmpMQ.addEventListener('change',tmpHandler);}else if(typeof tmpMQ.addListener==='function'){tmpMQ.addListener(tmpHandler);}this._systemMediaQuery=tmpMQ;this._systemListener=tmpHandler;}catch(pError){// Older browser; leave system listener unattached.
5617
- }}_detachSystemListener(){if(!this._systemMediaQuery||!this._systemListener)return;try{if(typeof this._systemMediaQuery.removeEventListener==='function'){this._systemMediaQuery.removeEventListener('change',this._systemListener);}else if(typeof this._systemMediaQuery.removeListener==='function'){this._systemMediaQuery.removeListener(this._systemListener);}}catch(pError){// noop
5618
- }this._systemMediaQuery=null;this._systemListener=null;}}PictProviderTheme.default_configuration=_ProviderConfiguration;module.exports=PictProviderTheme;module.exports.STYLE_ELEMENT_ID=STYLE_ELEMENT_ID;module.exports.HTML_CLASS_LIGHT=HTML_CLASS_LIGHT;module.exports.HTML_CLASS_DARK=HTML_CLASS_DARK;module.exports.CSS_VAR_PREFIX=CSS_VAR_PREFIX;},{"./templates/Pict-Template-Theme.js":143,"./templates/Pict-Template-ThemeAsset.js":144,"./templates/Pict-Template-ThemeImage.js":145,"./templates/Pict-Template-ThemeVar.js":146,"pict-provider":148}],143:[function(require,module,exports){/**
5650
+ * Apply the requested mode by adjusting the class on <html>.
5651
+ *
5652
+ * - 'light' / 'dark': the matching class is added so the explicit
5653
+ * `.theme-light` / `.theme-dark` block in the injected stylesheet
5654
+ * overrides the @media (prefers-color-scheme) rule.
5655
+ * - 'system': both classes are cleared so the @media rule drives
5656
+ * the cascade from the OS preference, with no JS listener needed.
5657
+ *
5658
+ * `_resolvedMode` is snapshotted at apply time so synchronous reads
5659
+ * via `token()` / `getActiveTheme()` return a consistent value. In
5660
+ * system mode it falls back to `_currentResolvedMode()` for callers
5661
+ * that want a live read on each call.
5662
+ */_applyMode(pMode,pStrategy){if(pMode==='system'){this._resolvedMode=this._readSystemPreference();this._clearHTMLClass();}else{this._resolvedMode=pMode==='dark'?'dark':'light';this._writeHTMLClass(this._resolvedMode);}}_writeHTMLClass(pResolvedMode){if(typeof document==='undefined'||!document.documentElement||!document.documentElement.classList)return;let tmpList=document.documentElement.classList;if(pResolvedMode==='dark'){tmpList.remove(HTML_CLASS_LIGHT);tmpList.add(HTML_CLASS_DARK);}else{tmpList.remove(HTML_CLASS_DARK);tmpList.add(HTML_CLASS_LIGHT);}}_clearHTMLClass(){if(typeof document==='undefined'||!document.documentElement||!document.documentElement.classList)return;let tmpList=document.documentElement.classList;tmpList.remove(HTML_CLASS_LIGHT);tmpList.remove(HTML_CLASS_DARK);}_readSystemPreference(){if(typeof window==='undefined'||typeof window.matchMedia!=='function')return'light';try{return window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';}catch(pError){return'light';}}/**
5663
+ * The mode currently driving the page. Mirrors what the user sees:
5664
+ * explicit modes return their literal value; 'system' reads the OS
5665
+ * preference fresh so token() / getActiveTheme() never report a
5666
+ * stale value when the OS toggles between calls.
5667
+ *
5668
+ * @returns {'light'|'dark'}
5669
+ */_currentResolvedMode(){if(this._activeMode==='system'){return this._readSystemPreference();}return this._resolvedMode==='dark'?'dark':'light';}}PictProviderTheme.default_configuration=_ProviderConfiguration;module.exports=PictProviderTheme;module.exports.STYLE_ELEMENT_ID=STYLE_ELEMENT_ID;module.exports.HTML_CLASS_LIGHT=HTML_CLASS_LIGHT;module.exports.HTML_CLASS_DARK=HTML_CLASS_DARK;module.exports.CSS_VAR_PREFIX=CSS_VAR_PREFIX;module.exports.DiagramAdapter=libDiagramAdapter;},{"./Theme-Diagram-Adapter.js":143,"./templates/Pict-Template-Theme.js":144,"./templates/Pict-Template-ThemeAsset.js":145,"./templates/Pict-Template-ThemeImage.js":146,"./templates/Pict-Template-ThemeVar.js":147,"pict-provider":149}],143:[function(require,module,exports){/**
5670
+ * Theme Diagram Adapter
5671
+ *
5672
+ * Helper utilities for plugging diagram renderers (Mermaid today,
5673
+ * Excalidraw / chart libraries next) into the pict-provider-theme
5674
+ * lifecycle.
5675
+ *
5676
+ * Why this exists:
5677
+ * Diagram engines like Mermaid bake colors into the SVG at render
5678
+ * time. Once rendered, CSS alone cannot recolor node fills, cluster
5679
+ * backgrounds, or edge stroke ends — those are inline attributes on
5680
+ * <rect>, <path>, <polygon>, etc. Switching light/dark requires
5681
+ * the engine to re-render with a fresh themeVariables block.
5682
+ *
5683
+ * Pre-adapter, every view that hosted a Mermaid block had to:
5684
+ * - read every CSS custom property by hand
5685
+ * - mirror a 20+ key themeVariables object
5686
+ * - wire its own onApply subscription
5687
+ * - stash diagram source on the DOM
5688
+ * - clear data-processed + re-run on theme change
5689
+ *
5690
+ * The adapter centralizes all of that. Section views call
5691
+ * `adapter.adaptMermaid(mermaid, options)` and stop caring about the
5692
+ * token list, the listener, and the refresh dance.
5693
+ *
5694
+ * Public API:
5695
+ * buildMermaidThemeVariables(pOverrides) - read fresh tokens, return mermaid themeVariables
5696
+ * getMermaidTokenMap() - canonical {mermaidKey: cssVarName} map
5697
+ * initializeMermaid(mermaid, pOverrides) - mermaid.initialize() with the right base + themeVariables
5698
+ * refreshMermaidDiagrams(pSelectorOrRoot) - restore source, clear data-processed, re-run mermaid.run
5699
+ * stashMermaidSource(pNodes) - cache source on data-mermaid-source before first run
5700
+ * adaptMermaid(provider, mermaid, pOptions) - one-shot: initialize + subscribe + return handle
5701
+ * readCSSVar(pName, pFallback, pRoot) - fresh getComputedStyle read with fallback
5702
+ *
5703
+ * All helpers are stateless and safe to call repeatedly. Subscriptions
5704
+ * return a dispose function the caller can hold onto for teardown.
5705
+ *
5706
+ * @author Steven Velozo <steven@velozo.com>
5707
+ * @license MIT
5708
+ */// Canonical mapping: mermaid themeVariables key -> CSS custom property name -> fallback.
5709
+ // Fallbacks match the pict-default LIGHT palette so unthemed apps look like
5710
+ // the default theme rather than a third unrelated palette.
5711
+ const MERMAID_TOKEN_MAP=[// Primary surfaces (node fills + cluster background)
5712
+ {Key:'primaryColor',Var:'--theme-color-background-panel',Fallback:'#ffffff'},{Key:'primaryTextColor',Var:'--theme-color-text-primary',Fallback:'#1a1a1a'},{Key:'primaryBorderColor',Var:'--theme-color-brand-primary',Fallback:'#3357c7'},// Secondary (alt rows, alternate nodes, sequence actor bg)
5713
+ {Key:'secondaryColor',Var:'--theme-color-background-secondary',Fallback:'#f5f5f5'},{Key:'secondaryTextColor',Var:'--theme-color-text-secondary',Fallback:'#454545'},{Key:'secondaryBorderColor',Var:'--theme-color-border-default',Fallback:'#d6d6d6'},// Tertiary (clusters, accent groups)
5714
+ {Key:'tertiaryColor',Var:'--theme-color-background-tertiary',Fallback:'#ebebeb'},{Key:'tertiaryTextColor',Var:'--theme-color-text-secondary',Fallback:'#454545'},{Key:'tertiaryBorderColor',Var:'--theme-color-border-light',Fallback:'#e9e9e9'},// Page-level + line + note
5715
+ {Key:'background',Var:'--theme-color-background-panel',Fallback:'#ffffff'},{Key:'mainBkg',Var:'--theme-color-background-panel',Fallback:'#ffffff'},{Key:'secondBkg',Var:'--theme-color-background-secondary',Fallback:'#f5f5f5'},{Key:'lineColor',Var:'--theme-color-text-secondary',Fallback:'#454545'},{Key:'textColor',Var:'--theme-color-text-primary',Fallback:'#1a1a1a'},{Key:'noteBkgColor',Var:'--theme-color-background-tertiary',Fallback:'#ebebeb'},{Key:'noteTextColor',Var:'--theme-color-text-primary',Fallback:'#1a1a1a'},{Key:'noteBorderColor',Var:'--theme-color-border-default',Fallback:'#d6d6d6'},// Status (Mermaid uses these for error/warning highlights)
5716
+ {Key:'errorBkgColor',Var:'--theme-color-status-error',Fallback:'#b62828'},{Key:'errorTextColor',Var:'--theme-color-text-on-brand',Fallback:'#ffffff'},// Typography
5717
+ {Key:'fontFamily',Var:'--theme-typography-family-sans',Fallback:'inherit'}];/**
5718
+ * Read a CSS custom property off pRoot (default: documentElement).
5719
+ * Always issues a fresh getComputedStyle so the value reflects the
5720
+ * current class state on <html> (theme-light / theme-dark).
5721
+ *
5722
+ * @param {string} pName - variable name including '--' prefix
5723
+ * @param {string} [pFallback] - returned when the variable is unset/empty
5724
+ * @param {Element} [pRoot] - element to compute style against
5725
+ * @returns {string}
5726
+ */function readCSSVar(pName,pFallback,pRoot){if(typeof window==='undefined'||typeof document==='undefined'){return pFallback||'';}let tmpRoot=pRoot||document.documentElement;if(!tmpRoot){return pFallback||'';}let tmpVal=(getComputedStyle(tmpRoot).getPropertyValue(pName)||'').trim();return tmpVal||pFallback||'';}/**
5727
+ * Returns the canonical {mermaidKey: cssVarName} mapping. Useful for
5728
+ * apps that need to inspect or extend the token list (e.g. to add
5729
+ * gantt / sequence / pie-specific tokens for a custom diagram type).
5730
+ *
5731
+ * @returns {Array<{Key, Var, Fallback}>}
5732
+ */function getMermaidTokenMap(){// Defensive copy so callers can't mutate the canonical list.
5733
+ return MERMAID_TOKEN_MAP.map(tmpEntry=>({Key:tmpEntry.Key,Var:tmpEntry.Var,Fallback:tmpEntry.Fallback}));}/**
5734
+ * Read every token in the mermaid map off the current document and
5735
+ * return an object suitable for mermaid.initialize({themeVariables}).
5736
+ *
5737
+ * @param {object} [pOverrides] - extra themeVariables keys to merge on top
5738
+ * @returns {object}
5739
+ */function buildMermaidThemeVariables(pOverrides){let tmpVars={};for(let i=0;i<MERMAID_TOKEN_MAP.length;i++){let tmpEntry=MERMAID_TOKEN_MAP[i];tmpVars[tmpEntry.Key]=readCSSVar(tmpEntry.Var,tmpEntry.Fallback);}if(pOverrides&&typeof pOverrides==='object'){let tmpKeys=Object.keys(pOverrides);for(let j=0;j<tmpKeys.length;j++){tmpVars[tmpKeys[j]]=pOverrides[tmpKeys[j]];}}return tmpVars;}/**
5740
+ * Call mermaid.initialize() with the canonical pict theme bindings.
5741
+ * Safe to call repeatedly; mermaid simply merges new config.
5742
+ *
5743
+ * @param {object} mermaid - the mermaid module / global
5744
+ * @param {object} [pOverrides] - extra themeVariables keys, or { config: ... }
5745
+ * to override startOnLoad / securityLevel / theme
5746
+ * @returns {boolean} true if initialize ran, false if no mermaid available
5747
+ */function initializeMermaid(mermaid,pOverrides){if(!mermaid||typeof mermaid.initialize!=='function'){return false;}let tmpOverrides=pOverrides||{};let tmpThemeOverrides=tmpOverrides.themeVariables;let tmpConfigOverrides=tmpOverrides.config||{};let tmpVars=buildMermaidThemeVariables(tmpThemeOverrides);let tmpConfig=Object.assign({startOnLoad:false,theme:'base',securityLevel:'loose'},tmpConfigOverrides,{themeVariables:tmpVars});mermaid.initialize(tmpConfig);return true;}/**
5748
+ * Cache each diagram's source text on data-mermaid-source so a later
5749
+ * refresh can restore it. Mermaid replaces textContent with the
5750
+ * rendered SVG during run(); without this stash there's no way to
5751
+ * re-run.
5752
+ *
5753
+ * @param {NodeList|Array<Element>} pNodes
5754
+ */function stashMermaidSource(pNodes){if(!pNodes||pNodes.length<1){return;}for(let i=0;i<pNodes.length;i++){let tmpEl=pNodes[i];if(!tmpEl||typeof tmpEl.getAttribute!=='function'){continue;}if(!tmpEl.hasAttribute('data-mermaid-source')){tmpEl.setAttribute('data-mermaid-source',tmpEl.textContent);}}}/**
5755
+ * Restore each pre.mermaid[data-mermaid-source] element to its source
5756
+ * text, drop the data-processed flag (mermaid skips elements with that
5757
+ * flag set), strip the mermaid-rendered helper class if present, and
5758
+ * re-run mermaid against them.
5759
+ *
5760
+ * @param {string|Element|Document} [pSelectorOrRoot]
5761
+ * - string: querySelectorAll target (defaults to whole document)
5762
+ * - Element: scoped root to search inside
5763
+ * - omitted: whole document
5764
+ * @returns {Promise|null} the mermaid.run() promise, or null if no work
5765
+ */function refreshMermaidDiagrams(pSelectorOrRoot){if(typeof document==='undefined'){return null;}let tmpMermaid=typeof mermaid!=='undefined'?mermaid:null;if(!tmpMermaid||typeof tmpMermaid.run!=='function'){return null;}let tmpRendered=_resolveMermaidNodes(pSelectorOrRoot);if(!tmpRendered||tmpRendered.length<1){return null;}for(let i=0;i<tmpRendered.length;i++){let tmpEl=tmpRendered[i];let tmpSrc=tmpEl.getAttribute('data-mermaid-source');if(tmpSrc!==null){tmpEl.textContent=tmpSrc;}tmpEl.removeAttribute('data-processed');if(tmpEl.classList&&typeof tmpEl.classList.remove==='function'){tmpEl.classList.remove('mermaid-rendered');}}try{return tmpMermaid.run({nodes:tmpRendered});}catch(pError){// Surface to the caller; they're already wrapping in try/catch in
5766
+ // most cases. Return a rejected promise so .catch() consumers fire.
5767
+ return Promise.reject(pError);}}function _resolveMermaidNodes(pSelectorOrRoot){let tmpSelector='pre.mermaid[data-mermaid-source]';if(!pSelectorOrRoot){return document.querySelectorAll(tmpSelector);}if(typeof pSelectorOrRoot==='string'){// Treat the string as a scope selector; collect mermaid nodes inside it.
5768
+ let tmpScope=document.querySelector(pSelectorOrRoot);if(!tmpScope){return[];}return tmpScope.querySelectorAll(tmpSelector);}if(pSelectorOrRoot.querySelectorAll){return pSelectorOrRoot.querySelectorAll(tmpSelector);}return[];}/**
5769
+ * One-shot: initialize mermaid against the active theme, subscribe to
5770
+ * theme apply events, and return a handle the caller can use for
5771
+ * teardown / manual refresh.
5772
+ *
5773
+ * let tmpHandle = adaptMermaid(pict.providers.Theme, mermaid, {
5774
+ * refreshScope: '#Pict-Content-Body'
5775
+ * });
5776
+ * // ... later, on unload:
5777
+ * tmpHandle.dispose();
5778
+ *
5779
+ * @param {object} pProvider - pict-provider-theme instance
5780
+ * @param {object} pMermaid - the mermaid module / global
5781
+ * @param {object} [pOptions]
5782
+ * @param {string|Element} [pOptions.refreshScope] - passed to refreshMermaidDiagrams
5783
+ * @param {object} [pOptions.themeOverrides] - extra themeVariables keys
5784
+ * @param {object} [pOptions.configOverrides] - extra mermaid.initialize() top-level keys
5785
+ * @param {function} [pOptions.onBeforeRefresh] - called before each refresh; signature (pContext)
5786
+ * @param {function} [pOptions.onAfterRefresh] - called after each refresh resolves; signature (pContext)
5787
+ * @returns {{ dispose: function, refresh: function, reinitialize: function, subscribed: boolean }}
5788
+ */function adaptMermaid(pProvider,pMermaid,pOptions){let tmpOptions=pOptions||{};let tmpInitOverrides={themeVariables:tmpOptions.themeOverrides,config:tmpOptions.configOverrides};// Always initialize, even if no provider — the static base theme should
5789
+ // still pick up whatever CSS variables the page does have.
5790
+ initializeMermaid(pMermaid,tmpInitOverrides);let tmpRefresh=function tmpRefresh(pContext){if(typeof tmpOptions.onBeforeRefresh==='function'){try{tmpOptions.onBeforeRefresh(pContext||{});}catch(e){/* swallow; refresh must not be gated on listener errors */}}initializeMermaid(pMermaid,tmpInitOverrides);let tmpResult=refreshMermaidDiagrams(tmpOptions.refreshScope);if(tmpResult&&typeof tmpResult.then==='function'&&typeof tmpOptions.onAfterRefresh==='function'){tmpResult.then(()=>{try{tmpOptions.onAfterRefresh(pContext||{});}catch(e){/* swallow */}},()=>{/* error path: onAfterRefresh still fires so the UI can drop spinners */try{tmpOptions.onAfterRefresh(pContext||{});}catch(e){/* swallow */}});}return tmpResult;};let tmpDispose=function tmpDispose(){};let tmpSubscribed=false;if(pProvider&&typeof pProvider.onApply==='function'){tmpDispose=pProvider.onApply(function(pBundle,pContext){tmpRefresh(pContext||{});});tmpSubscribed=true;}return{dispose:function dispose(){if(typeof tmpDispose==='function'){tmpDispose();}},refresh:tmpRefresh,reinitialize:function reinitialize(){initializeMermaid(pMermaid,tmpInitOverrides);},subscribed:tmpSubscribed};}module.exports={MERMAID_TOKEN_MAP:MERMAID_TOKEN_MAP,readCSSVar:readCSSVar,getMermaidTokenMap:getMermaidTokenMap,buildMermaidThemeVariables:buildMermaidThemeVariables,initializeMermaid:initializeMermaid,stashMermaidSource:stashMermaidSource,refreshMermaidDiagrams:refreshMermaidDiagrams,adaptMermaid:adaptMermaid};},{}],144:[function(require,module,exports){/**
5619
5791
  * Pict template expression: {~Theme:Path~}
5620
5792
  *
5621
5793
  * Resolves a token path against the active theme bundle and returns the
@@ -5623,7 +5795,7 @@ if(this.pict&&this.pict.CSSMap&&typeof this.pict.CSSMap.removeCSS==='function'){
5623
5795
  * so paths like 'Tokens.Color.Background.Primary' or 'Brand.Name' work.
5624
5796
  *
5625
5797
  * Returns an empty string if no theme is active or the path is missing.
5626
- */const libPictTemplate=require('pict-template');class PictTemplateTheme extends libPictTemplate{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.addPattern('{~Theme:','~}');}render(pTemplateHash){let tmpPath=(pTemplateHash||'').trim();if(!tmpPath)return'';let tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';let tmpValue=tmpProvider.token(tmpPath);if(tmpValue===null||typeof tmpValue==='undefined')return'';return String(tmpValue);}_findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}module.exports=PictTemplateTheme;},{"pict-template":229}],144:[function(require,module,exports){/**
5798
+ */const libPictTemplate=require('pict-template');class PictTemplateTheme extends libPictTemplate{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.addPattern('{~Theme:','~}');}render(pTemplateHash){let tmpPath=(pTemplateHash||'').trim();if(!tmpPath)return'';let tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';let tmpValue=tmpProvider.token(tmpPath);if(tmpValue===null||typeof tmpValue==='undefined')return'';return String(tmpValue);}_findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}module.exports=PictTemplateTheme;},{"pict-template":232}],145:[function(require,module,exports){/**
5627
5799
  * Pict template expression: {~ThemeAsset:Category.Name~}
5628
5800
  *
5629
5801
  * Returns the contents of a named SVG (or other) asset from the active
@@ -5632,12 +5804,12 @@ if(this.pict&&this.pict.CSSMap&&typeof this.pict.CSSMap.removeCSS==='function'){
5632
5804
  *
5633
5805
  * {~ThemeAsset:SVG.Logo~} -> bundle.SVG.Logo
5634
5806
  * {~ThemeAsset:SVG.Icons.Foo~} -> bundle.SVG.Icons.Foo
5635
- */const libPictTemplate=require('pict-template');class PictTemplateThemeAsset extends libPictTemplate{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.addPattern('{~ThemeAsset:','~}');}render(pTemplateHash){let tmpPath=(pTemplateHash||'').trim();if(!tmpPath)return'';let tmpDot=tmpPath.indexOf('.');if(tmpDot<0)return'';let tmpCategory=tmpPath.substring(0,tmpDot);let tmpName=tmpPath.substring(tmpDot+1);let tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';let tmpValue=tmpProvider.asset(tmpCategory,tmpName);if(tmpValue===null||typeof tmpValue==='undefined')return'';return String(tmpValue);}_findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}module.exports=PictTemplateThemeAsset;},{"pict-template":229}],145:[function(require,module,exports){/**
5807
+ */const libPictTemplate=require('pict-template');class PictTemplateThemeAsset extends libPictTemplate{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.addPattern('{~ThemeAsset:','~}');}render(pTemplateHash){let tmpPath=(pTemplateHash||'').trim();if(!tmpPath)return'';let tmpDot=tmpPath.indexOf('.');if(tmpDot<0)return'';let tmpCategory=tmpPath.substring(0,tmpDot);let tmpName=tmpPath.substring(tmpDot+1);let tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';let tmpValue=tmpProvider.asset(tmpCategory,tmpName);if(tmpValue===null||typeof tmpValue==='undefined')return'';return String(tmpValue);}_findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}module.exports=PictTemplateThemeAsset;},{"pict-template":232}],146:[function(require,module,exports){/**
5636
5808
  * Pict template expression: {~ThemeImage:Name~}
5637
5809
  *
5638
5810
  * Returns the URL or data URL stored at bundle.Image[Name] in the active
5639
5811
  * theme bundle. Convenience over {~ThemeAsset:Image.Name~}.
5640
- */const libPictTemplate=require('pict-template');class PictTemplateThemeImage extends libPictTemplate{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.addPattern('{~ThemeImage:','~}');}render(pTemplateHash){let tmpName=(pTemplateHash||'').trim();if(!tmpName)return'';let tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';let tmpValue=tmpProvider.image(tmpName);if(tmpValue===null||typeof tmpValue==='undefined')return'';return String(tmpValue);}_findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}module.exports=PictTemplateThemeImage;},{"pict-template":229}],146:[function(require,module,exports){/**
5812
+ */const libPictTemplate=require('pict-template');class PictTemplateThemeImage extends libPictTemplate{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.addPattern('{~ThemeImage:','~}');}render(pTemplateHash){let tmpName=(pTemplateHash||'').trim();if(!tmpName)return'';let tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';let tmpValue=tmpProvider.image(tmpName);if(tmpValue===null||typeof tmpValue==='undefined')return'';return String(tmpValue);}_findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}module.exports=PictTemplateThemeImage;},{"pict-template":232}],147:[function(require,module,exports){/**
5641
5813
  * Pict template expression: {~ThemeVar:Path~}
5642
5814
  *
5643
5815
  * Returns a CSS `var(--theme-...)` reference for a token path under
@@ -5646,7 +5818,7 @@ if(this.pict&&this.pict.CSSMap&&typeof this.pict.CSSMap.removeCSS==='function'){
5646
5818
  *
5647
5819
  * Useful inside style attributes and in CSS-in-JS contexts where you want
5648
5820
  * the live custom-property reference rather than the resolved value.
5649
- */const libPictTemplate=require('pict-template');class PictTemplateThemeVar extends libPictTemplate{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.addPattern('{~ThemeVar:','~}');}render(pTemplateHash){let tmpPath=(pTemplateHash||'').trim();if(!tmpPath)return'';let tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';return tmpProvider.cssVar(tmpPath);}_findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}module.exports=PictTemplateThemeVar;},{"pict-template":229}],147:[function(require,module,exports){module.exports={"name":"pict-provider","version":"1.0.13","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","pict-docuserve":"^0.1.5","quackage":"^1.1.0","typescript":"^5.9.3"},"dependencies":{"fable-serviceproviderbase":"^3.0.19"},"mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]}};},{}],148:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');const libPackage=require('../package.json');const defaultPictProviderSettings={ProviderIdentifier:false,// If this is set to true, when the App initializes this will.
5821
+ */const libPictTemplate=require('pict-template');class PictTemplateThemeVar extends libPictTemplate{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this.addPattern('{~ThemeVar:','~}');}render(pTemplateHash){let tmpPath=(pTemplateHash||'').trim();if(!tmpPath)return'';let tmpProvider=this._findThemeProvider();if(!tmpProvider)return'';return tmpProvider.cssVar(tmpPath);}_findThemeProvider(){if(!this.pict||!this.pict.providers)return null;return this.pict.providers['Theme']||null;}}module.exports=PictTemplateThemeVar;},{"pict-template":232}],148:[function(require,module,exports){module.exports={"name":"pict-provider","version":"1.0.13","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","pict-docuserve":"^0.1.5","quackage":"^1.1.0","typescript":"^5.9.3"},"dependencies":{"fable-serviceproviderbase":"^3.0.19"},"mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]}};},{}],149:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');const libPackage=require('../package.json');const defaultPictProviderSettings={ProviderIdentifier:false,// If this is set to true, when the App initializes this will.
5650
5822
  // After the App initializes, initialize will be called as soon as it's added.
5651
5823
  AutoInitialize:true,AutoInitializeOrdinal:0,AutoLoadDataWithApp:true,AutoLoadDataOrdinal:0,AutoSolveWithApp:true,AutoSolveOrdinal:0,Manifests:{},Templates:[]};class PictProvider extends libFableServiceBase{/**
5652
5824
  * @param {import('fable')} pFable - The Fable instance.
@@ -5710,7 +5882,7 @@ return fCallback();}}onAfterInitialize(){if(this.pict.LogNoisiness>3){this.log.t
5710
5882
  * @param {(pError?: Error) => void} fCallback - The callback to call after the data post-load.
5711
5883
  *
5712
5884
  * @return {void}
5713
- */onAfterSaveDataAsync(fCallback){return fCallback();}}module.exports=PictProvider;},{"../package.json":147,"fable-serviceproviderbase":59}],149:[function(require,module,exports){/**
5885
+ */onAfterSaveDataAsync(fCallback){return fCallback();}}module.exports=PictProvider;},{"../package.json":148,"fable-serviceproviderbase":59}],150:[function(require,module,exports){/**
5714
5886
  * Simple syntax highlighter for use with CodeJar.
5715
5887
  *
5716
5888
  * Provides basic keyword/string/number/comment highlighting for common languages.
@@ -5778,7 +5950,7 @@ if(tmpMatch[1]){// Comment
5778
5950
  tmpResult+="<span class=\"comment\">".concat(escapeHTML(tmpFullMatch),"</span>");}else if(tmpTagGroupIndex>0&&tmpMatch[tmpTagGroupIndex]){// HTML tag — highlight tag name, attributes, and values
5779
5951
  tmpResult+=highlightHTMLTag(tmpFullMatch);}else{// String, template literal, or regex
5780
5952
  tmpResult+="<span class=\"string\">".concat(escapeHTML(tmpFullMatch),"</span>");}tmpLastIndex=tmpLanguageDef.tokenizer.lastIndex;}// Add any remaining code after the last match
5781
- if(tmpLastIndex<tmpCode.length){let tmpSegment=tmpCode.substring(tmpLastIndex);tmpResult+=highlightCodeSegment(escapeHTML(tmpSegment),tmpLanguageDef);}pElement.innerHTML=tmpResult;};}module.exports=createHighlighter;module.exports.LanguageDefinitions=_LanguageDefinitions;},{}],150:[function(require,module,exports){module.exports={"RenderOnLoad":true,"DefaultRenderable":"CodeEditor-Wrap","DefaultDestinationAddress":"#CodeEditor-Container-Div","Templates":[{"Hash":"CodeEditor-Container","Template":"<!-- CodeEditor-Container Rendering Soon -->"}],"Renderables":[{"RenderableHash":"CodeEditor-Wrap","TemplateHash":"CodeEditor-Container","DestinationAddress":"#CodeEditor-Container-Div"}],"TargetElementAddress":"#CodeEditor-Container-Div",// Address in AppData or other Pict address space to read/write code content
5953
+ if(tmpLastIndex<tmpCode.length){let tmpSegment=tmpCode.substring(tmpLastIndex);tmpResult+=highlightCodeSegment(escapeHTML(tmpSegment),tmpLanguageDef);}pElement.innerHTML=tmpResult;};}module.exports=createHighlighter;module.exports.LanguageDefinitions=_LanguageDefinitions;},{}],151:[function(require,module,exports){module.exports={"RenderOnLoad":true,"DefaultRenderable":"CodeEditor-Wrap","DefaultDestinationAddress":"#CodeEditor-Container-Div","Templates":[{"Hash":"CodeEditor-Container","Template":"<!-- CodeEditor-Container Rendering Soon -->"}],"Renderables":[{"RenderableHash":"CodeEditor-Wrap","TemplateHash":"CodeEditor-Container","DestinationAddress":"#CodeEditor-Container-Div"}],"TargetElementAddress":"#CodeEditor-Container-Div",// Address in AppData or other Pict address space to read/write code content
5782
5954
  "CodeDataAddress":false,// The language for syntax highlighting (e.g. "javascript", "html", "css", "json")
5783
5955
  "Language":"javascript",// Whether the editor is read-only
5784
5956
  "ReadOnly":false,// Tab character: use tab or spaces
@@ -5794,7 +5966,7 @@ if(tmpLastIndex<tmpCode.length){let tmpSegment=tmpCode.substring(tmpLastIndex);t
5794
5966
  // using pict-provider-theme get themed code editor automatically. Each
5795
5967
  // var() carries its original ATOM-One-Light hex as the fallback so apps
5796
5968
  // without pict-provider-theme installed look exactly as before.
5797
- "CSS":".pict-code-editor-wrap\n{\n\tdisplay: flex;\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace);\n\tfont-size: 14px;\n\tline-height: 1.5;\n\tborder: 1px solid var(--theme-color-border-default, #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\t/* padding-top/bottom are stamped at runtime from the editor's\n\t computed padding so row 1 of the gutter aligns with row 1 of\n\t the code; only horizontal padding is stylesheet-owned. */\n\tpadding: 0;\n\ttext-align: right;\n\tbackground: var(--theme-color-editor-linenumber-background, var(--theme-color-background-secondary, #F5F5F5));\n\tborder-right: 1px solid var(--theme-color-editor-gutter-border, var(--theme-color-border-default, #D0D0D0));\n\tcolor: var(--theme-color-editor-linenumber-text, var(--theme-color-text-muted, #999));\n\tfont-size: 13px;\n\t/* line-height, padding-top, padding-bottom, and font-family are\n\t intentionally NOT declared here. PictSectionCode._syncGutterMetrics()\n\t copies them from the editor's computed styles at init and on every\n\t editor resize, so the gutter is guaranteed to track the editor.\n\t Declaring them in CSS would either be redundant (when matching) or\n\t actively wrong (when the editor's metrics diverge \u2014 e.g. theme scale\n\t changes the editor's font-size). See codejar-linenumbers for the\n\t canonical version of this pattern. */\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: var(--theme-color-text-primary, #383A42);\n\tbackground: var(--theme-color-background-panel, #FAFAFA);\n\tcaret-color: var(--theme-color-brand-primary, #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::selection,\n.pict-code-editor-wrap .pict-code-editor *::selection\n{\n\tbackground: var(--theme-color-editor-selection-background, var(--theme-color-selection-background, #B3D4FC));\n}\n/* Syntax token colors \u2014 each class binds to a Color.Syntax.* token from\n pict-provider-theme. Fallback hexes match the One Light palette so apps\n that don't install the theme provider look the same as before. */\n.pict-code-editor-wrap .pict-code-editor .keyword { color: var(--theme-color-syntax-keyword, #A626A4); }\n.pict-code-editor-wrap .pict-code-editor .string { color: var(--theme-color-syntax-string, #50A14F); }\n.pict-code-editor-wrap .pict-code-editor .number { color: var(--theme-color-syntax-number, #986801); }\n.pict-code-editor-wrap .pict-code-editor .comment { color: var(--theme-color-syntax-comment, #A0A1A7); font-style: italic; }\n.pict-code-editor-wrap .pict-code-editor .operator { color: var(--theme-color-syntax-operator, #0184BC); }\n.pict-code-editor-wrap .pict-code-editor .punctuation { color: var(--theme-color-syntax-punctuation, #383A42); }\n.pict-code-editor-wrap .pict-code-editor .function-name { color: var(--theme-color-syntax-function, #4078F2); }\n.pict-code-editor-wrap .pict-code-editor .property { color: var(--theme-color-syntax-property, #E45649); }\n.pict-code-editor-wrap .pict-code-editor .tag { color: var(--theme-color-syntax-tag, #E45649); }\n.pict-code-editor-wrap .pict-code-editor .attr-name { color: var(--theme-color-syntax-attrname, #986801); }\n.pict-code-editor-wrap .pict-code-editor .attr-value { color: var(--theme-color-syntax-attrvalue, #50A14F); }\n.pict-code-editor-wrap .pict-code-editor .builtin { color: var(--theme-color-syntax-builtin, #986801); }\n.pict-code-editor-wrap .pict-code-editor .type { color: var(--theme-color-syntax-type, #C18401); }\n.pict-code-editor-wrap .pict-code-editor .variable { color: var(--theme-color-syntax-variable, #383A42); }\n\n/* highlight.js class aliases \u2014 when host apps render code blocks with\n highlight.js (e.g. markdown previews via CodeJar's hljs integration),\n the output uses .hljs / .hljs-* classes rather than the bare token\n classes pict-section-code emits. Mapping them here lets one stylesheet\n theme both editor surfaces (bare classes) and hljs-rendered surfaces\n without the host needing a separate per-app github.css. Rules are\n intentionally unscoped (no .pict-code-editor-wrap parent) so they\n apply globally wherever hljs paints. */\n.hljs { color: var(--theme-color-text-primary, #383A42); background: transparent; }\n.hljs-keyword,\n.hljs-keyword.hljs-typeof,\n.hljs-selector-tag,\n.hljs-literal { color: var(--theme-color-syntax-keyword, #A626A4); }\n.hljs-string,\n.hljs-regexp,\n.hljs-template-tag,\n.hljs-template-variable { color: var(--theme-color-syntax-string, #50A14F); }\n.hljs-number,\n.hljs-meta { color: var(--theme-color-syntax-number, #986801); }\n.hljs-comment,\n.hljs-quote { color: var(--theme-color-syntax-comment, #A0A1A7); font-style: italic; }\n.hljs-operator,\n.hljs-link { color: var(--theme-color-syntax-operator, #0184BC); }\n.hljs-punctuation { color: var(--theme-color-syntax-punctuation, #383A42); }\n.hljs-function .hljs-title,\n.hljs-title.function_,\n.hljs-title.class_ { color: var(--theme-color-syntax-function, #4078F2); }\n.hljs-variable,\n.hljs-variable.language_,\n.hljs-params { color: var(--theme-color-syntax-variable, #383A42); }\n.hljs-type,\n.hljs-class .hljs-title { color: var(--theme-color-syntax-type, #C18401); }\n.hljs-built_in,\n.hljs-builtin-name { color: var(--theme-color-syntax-builtin, #986801); }\n.hljs-attr,\n.hljs-property { color: var(--theme-color-syntax-property, #E45649); }\n.hljs-tag,\n.hljs-name { color: var(--theme-color-syntax-tag, #E45649); }\n.hljs-attribute { color: var(--theme-color-syntax-attrname, #986801); }\n.hljs-symbol { color: var(--theme-color-syntax-attrvalue, #50A14F); }\n.hljs-emphasis { font-style: italic; }\n.hljs-strong { font-weight: bold; }\n.hljs-deletion { color: var(--theme-color-status-error, #B62828); background: rgba(220, 50, 47, 0.08); }\n.hljs-addition { color: var(--theme-color-status-success, #2E7A3A); background: rgba(80, 161, 79, 0.10); }\n"};},{}],151:[function(require,module,exports){const libPictViewClass=require('pict-view');const libCreateHighlighter=require('./Pict-Code-Highlighter.js');const _DefaultConfiguration=require('./Pict-Section-Code-DefaultConfiguration.js');class PictSectionCode extends libPictViewClass{constructor(pFable,pOptions,pServiceHash){let tmpOptions=Object.assign({},_DefaultConfiguration,pOptions);super(pFable,tmpOptions,pServiceHash);this.initialRenderComplete=false;// The CodeJar instance
5969
+ "CSS":".pict-code-editor-wrap\n{\n\tdisplay: flex;\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace);\n\tfont-size: 14px;\n\tline-height: 1.5;\n\tborder: 1px solid var(--theme-color-border-default, #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\t/* padding-top/bottom are stamped at runtime from the editor's\n\t computed padding so row 1 of the gutter aligns with row 1 of\n\t the code; only horizontal padding is stylesheet-owned. */\n\tpadding: 0;\n\ttext-align: right;\n\tbackground: var(--theme-color-editor-linenumber-background, var(--theme-color-background-secondary, #F5F5F5));\n\tborder-right: 1px solid var(--theme-color-editor-gutter-border, var(--theme-color-border-default, #D0D0D0));\n\tcolor: var(--theme-color-editor-linenumber-text, var(--theme-color-text-muted, #999));\n\tfont-size: 13px;\n\t/* line-height, padding-top, padding-bottom, and font-family are\n\t intentionally NOT declared here. PictSectionCode._syncGutterMetrics()\n\t copies them from the editor's computed styles at init and on every\n\t editor resize, so the gutter is guaranteed to track the editor.\n\t Declaring them in CSS would either be redundant (when matching) or\n\t actively wrong (when the editor's metrics diverge \u2014 e.g. theme scale\n\t changes the editor's font-size). See codejar-linenumbers for the\n\t canonical version of this pattern. */\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: var(--theme-color-text-primary, #383A42);\n\tbackground: var(--theme-color-background-panel, #FAFAFA);\n\tcaret-color: var(--theme-color-brand-primary, #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::selection,\n.pict-code-editor-wrap .pict-code-editor *::selection\n{\n\tbackground: var(--theme-color-editor-selection-background, var(--theme-color-selection-background, #B3D4FC));\n}\n/* Syntax token colors \u2014 each class binds to a Color.Syntax.* token from\n pict-provider-theme. Fallback hexes match the One Light palette so apps\n that don't install the theme provider look the same as before. */\n.pict-code-editor-wrap .pict-code-editor .keyword { color: var(--theme-color-syntax-keyword, #A626A4); }\n.pict-code-editor-wrap .pict-code-editor .string { color: var(--theme-color-syntax-string, #50A14F); }\n.pict-code-editor-wrap .pict-code-editor .number { color: var(--theme-color-syntax-number, #986801); }\n.pict-code-editor-wrap .pict-code-editor .comment { color: var(--theme-color-syntax-comment, #A0A1A7); font-style: italic; }\n.pict-code-editor-wrap .pict-code-editor .operator { color: var(--theme-color-syntax-operator, #0184BC); }\n.pict-code-editor-wrap .pict-code-editor .punctuation { color: var(--theme-color-syntax-punctuation, #383A42); }\n.pict-code-editor-wrap .pict-code-editor .function-name { color: var(--theme-color-syntax-function, #4078F2); }\n.pict-code-editor-wrap .pict-code-editor .property { color: var(--theme-color-syntax-property, #E45649); }\n.pict-code-editor-wrap .pict-code-editor .tag { color: var(--theme-color-syntax-tag, #E45649); }\n.pict-code-editor-wrap .pict-code-editor .attr-name { color: var(--theme-color-syntax-attrname, #986801); }\n.pict-code-editor-wrap .pict-code-editor .attr-value { color: var(--theme-color-syntax-attrvalue, #50A14F); }\n.pict-code-editor-wrap .pict-code-editor .builtin { color: var(--theme-color-syntax-builtin, #986801); }\n.pict-code-editor-wrap .pict-code-editor .type { color: var(--theme-color-syntax-type, #C18401); }\n.pict-code-editor-wrap .pict-code-editor .variable { color: var(--theme-color-syntax-variable, #383A42); }\n\n/* highlight.js class aliases \u2014 when host apps render code blocks with\n highlight.js (e.g. markdown previews via CodeJar's hljs integration),\n the output uses .hljs / .hljs-* classes rather than the bare token\n classes pict-section-code emits. Mapping them here lets one stylesheet\n theme both editor surfaces (bare classes) and hljs-rendered surfaces\n without the host needing a separate per-app github.css. Rules are\n intentionally unscoped (no .pict-code-editor-wrap parent) so they\n apply globally wherever hljs paints. */\n.hljs { color: var(--theme-color-text-primary, #383A42); background: transparent; }\n.hljs-keyword,\n.hljs-keyword.hljs-typeof,\n.hljs-selector-tag,\n.hljs-literal { color: var(--theme-color-syntax-keyword, #A626A4); }\n.hljs-string,\n.hljs-regexp,\n.hljs-template-tag,\n.hljs-template-variable { color: var(--theme-color-syntax-string, #50A14F); }\n.hljs-number,\n.hljs-meta { color: var(--theme-color-syntax-number, #986801); }\n.hljs-comment,\n.hljs-quote { color: var(--theme-color-syntax-comment, #A0A1A7); font-style: italic; }\n.hljs-operator,\n.hljs-link { color: var(--theme-color-syntax-operator, #0184BC); }\n.hljs-punctuation { color: var(--theme-color-syntax-punctuation, #383A42); }\n.hljs-function .hljs-title,\n.hljs-title.function_,\n.hljs-title.class_ { color: var(--theme-color-syntax-function, #4078F2); }\n.hljs-variable,\n.hljs-variable.language_,\n.hljs-params { color: var(--theme-color-syntax-variable, #383A42); }\n.hljs-type,\n.hljs-class .hljs-title { color: var(--theme-color-syntax-type, #C18401); }\n.hljs-built_in,\n.hljs-builtin-name { color: var(--theme-color-syntax-builtin, #986801); }\n.hljs-attr,\n.hljs-property { color: var(--theme-color-syntax-property, #E45649); }\n.hljs-tag,\n.hljs-name { color: var(--theme-color-syntax-tag, #E45649); }\n.hljs-attribute { color: var(--theme-color-syntax-attrname, #986801); }\n.hljs-symbol { color: var(--theme-color-syntax-attrvalue, #50A14F); }\n.hljs-emphasis { font-style: italic; }\n.hljs-strong { font-weight: bold; }\n.hljs-deletion { color: var(--theme-color-status-error, #B62828); background: rgba(220, 50, 47, 0.08); }\n.hljs-addition { color: var(--theme-color-status-success, #2E7A3A); background: rgba(80, 161, 79, 0.10); }\n"};},{}],152:[function(require,module,exports){const libPictViewClass=require('pict-view');const libCreateHighlighter=require('./Pict-Code-Highlighter.js');const _DefaultConfiguration=require('./Pict-Section-Code-DefaultConfiguration.js');class PictSectionCode extends libPictViewClass{constructor(pFable,pOptions,pServiceHash){let tmpOptions=Object.assign({},_DefaultConfiguration,pOptions);super(pFable,tmpOptions,pServiceHash);this.initialRenderComplete=false;// The CodeJar instance
5798
5970
  this.codeJar=null;// The highlight function (can be overridden)
5799
5971
  this._highlightFunction=null;// The current language
5800
5972
  this._language=this.options.Language||'javascript';}onBeforeInitialize(){super.onBeforeInitialize();this._codeJarPrototype=null;this.targetElement=false;// Build the default highlight function for the configured language
@@ -5958,7 +6130,7 @@ let tmpCode=this.codeJar.toString();this.codeJar.destroy();this.codeJar=this._co
5958
6130
  // executed, so it sees a usable class. The `.demos` and
5959
6131
  // `.registerWithDocuserve` attachments below run after the require
5960
6132
  // returns, so demos/index.js never observes them being undefined.
5961
- const libCodeDemos=require('./demos');module.exports.demos=libCodeDemos.demos;module.exports.registerWithDocuserve=libCodeDemos.registerWithDocuserve;},{"./Pict-Code-Highlighter.js":149,"./Pict-Section-Code-DefaultConfiguration.js":150,"./demos":152,"pict-view":231}],152:[function(require,module,exports){/**
6133
+ const libCodeDemos=require('./demos');module.exports.demos=libCodeDemos.demos;module.exports.registerWithDocuserve=libCodeDemos.registerWithDocuserve;},{"./Pict-Code-Highlighter.js":150,"./Pict-Section-Code-DefaultConfiguration.js":151,"./demos":153,"pict-view":234}],153:[function(require,module,exports){/**
5962
6134
  * pict-section-code demos
5963
6135
  *
5964
6136
  * Each entry is consumed by pict-docuserve's `Docuserve-Demos` provider.
@@ -5993,10 +6165,15 @@ if(window.CodeJarModules&&window.CodeJarModules.hljs){let tmpHljs=window.CodeJar
5993
6165
  * a DocuserveApplication subclass).
5994
6166
  * @returns {number} count of demos registered (0 if Docuserve-Demos
5995
6167
  * provider isn't present — silent no-op).
5996
- */function registerWithDocuserve(pPict){if(!pPict||!pPict.providers||!pPict.providers['Docuserve-Demos']){return 0;}return pPict.providers['Docuserve-Demos'].registerAll(_Demos);}module.exports=_Demos;module.exports.demos=_Demos;module.exports.registerWithDocuserve=registerWithDocuserve;},{"../Pict-Section-Code.js":151}],153:[function(require,module,exports){// The container for all the Pict-Section-Content related code.
6168
+ */function registerWithDocuserve(pPict){if(!pPict||!pPict.providers||!pPict.providers['Docuserve-Demos']){return 0;}return pPict.providers['Docuserve-Demos'].registerAll(_Demos);}module.exports=_Demos;module.exports.demos=_Demos;module.exports.registerWithDocuserve=registerWithDocuserve;},{"../Pict-Section-Code.js":152}],154:[function(require,module,exports){// The container for all the Pict-Section-Content related code.
5997
6169
  // The main content view class
5998
6170
  module.exports=require('./views/Pict-View-Content.js');// The content provider (markdown parsing, HTML escaping)
5999
- module.exports.PictContentProvider=require('./providers/Pict-Provider-Content.js');},{"./providers/Pict-Provider-Content.js":154,"./views/Pict-View-Content.js":155}],154:[function(require,module,exports){const libPictProvider=require('pict-provider');const libCreateHighlighter=require('pict-section-code').createHighlighter;/**
6171
+ module.exports.PictContentProvider=require('./providers/Pict-Provider-Content.js');// A thin demo view that auto-registers the provider, reads markdown
6172
+ // from an AppData address, and pushes parsed HTML through the base
6173
+ // view's displayContent pipeline. Used by the docuserve playground;
6174
+ // host applications can pick it up too if they just want "render this
6175
+ // markdown blob" without writing the parse-and-display glue.
6176
+ module.exports.PictContentDemoView=require('./views/PictView-Content-Demo.js');},{"./providers/Pict-Provider-Content.js":155,"./views/Pict-View-Content.js":156,"./views/PictView-Content-Demo.js":157}],155:[function(require,module,exports){const libPictProvider=require('pict-provider');const libCreateHighlighter=require('pict-section-code').createHighlighter;/**
6000
6177
  * Content Provider for Pict Section Content
6001
6178
  *
6002
6179
  * A general-purpose markdown-to-HTML parser with support for:
@@ -6129,7 +6306,7 @@ let tmpResult=pResolver(tmpLower);if(!tmpResult)return pMatch;tmpLinked[tmpLower
6129
6306
  *
6130
6307
  * @param {string} pText - The text to escape
6131
6308
  * @returns {string} The escaped text
6132
- */escapeHTML(pText){if(!pText){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=PictContentProvider;module.exports.default_configuration={ProviderIdentifier:"Pict-Content",AutoInitialize:true,AutoInitializeOrdinal:0};},{"pict-provider":148,"pict-section-code":151}],155:[function(require,module,exports){const libPictView=require('pict-view');const _ViewConfiguration={ViewIdentifier:"Pict-Content",DefaultRenderable:"Pict-Content-Display",DefaultDestinationAddress:"#Pict-Content-Container",AutoRender:false,CSS:/*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: var(--theme-color-text-muted, #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: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder-bottom: 1px solid var(--theme-color-border-default, #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: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder-bottom: 1px solid var(--theme-color-border-light, #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: var(--theme-color-text-primary, #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: var(--theme-color-text-secondary, #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: var(--theme-color-text-primary, #423D37);\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: var(--theme-color-brand-primary, #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/* \u2500\u2500\u2500 Code blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\t\t Background, text color, line-number gutter, and every\n\t\t syntax token route through pict-provider-theme tokens \u2014\n\t\t the same set pict-section-code (the live editor) uses.\n\t\t This way the rendered-preview code blocks look identical\n\t\t to the live editor and re-skin together when the theme\n\t\t switches. Previous version used the text-primary token\n\t\t as the code background (a TEXT token used as BACKGROUND),\n\t\t which broke in dark mode and any palette where text and\n\t\t background-tertiary diverge.\n\t\t*/\n\t\t.pict-content pre {\n\t\t\tbackground: var(--theme-color-background-tertiary, #F0ECE4);\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\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\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace);\n\t\t}\n\t\t/* Inline code (single backtick) \u2014 slightly differentiated\n\t\t from block code so it doesn't disappear into prose. */\n\t\t.pict-content code {\n\t\t\tbackground: var(--theme-color-background-secondary, #FAF8F4);\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', monospace);\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: var(--theme-typography-family-mono, '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: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tborder-radius: 6px;\n\t\t\toverflow: hidden;\n\t\t\tmargin: 1em 0;\n\t\t\tbackground: var(--theme-color-background-tertiary, #F0ECE4);\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: var(--theme-color-background-secondary, #FAF8F4);\n\t\t\tborder-right: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tcolor: var(--theme-color-text-muted, #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: var(--theme-color-background-tertiary, #F0ECE4);\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder: none;\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/* Syntax token colors \u2014 every class binds to a --theme-color-syntax-*\n\t\t variable, the same tokens pict-section-code (the live editor) uses.\n\t\t Each var() carries an Atom One Light hex as fallback for hosts\n\t\t without a theme provider; themes that DO ship syntax tokens\n\t\t (pict-default, retold-content-system, etc.) drive everything\n\t\t coherently. */\n\t\t.pict-content-code-wrap .keyword { color: var(--theme-color-syntax-keyword, #A626A4); }\n\t\t.pict-content-code-wrap .string { color: var(--theme-color-syntax-string, #50A14F); }\n\t\t.pict-content-code-wrap .number { color: var(--theme-color-syntax-number, #986801); }\n\t\t.pict-content-code-wrap .comment { color: var(--theme-color-syntax-comment, #A0A1A7); font-style: italic; }\n\t\t.pict-content-code-wrap .operator { color: var(--theme-color-syntax-operator, #0184BC); }\n\t\t.pict-content-code-wrap .punctuation { color: var(--theme-color-syntax-punctuation, #383A42); }\n\t\t.pict-content-code-wrap .function-name { color: var(--theme-color-syntax-function, #4078F2); }\n\t\t.pict-content-code-wrap .property { color: var(--theme-color-syntax-property, #E45649); }\n\t\t.pict-content-code-wrap .tag { color: var(--theme-color-syntax-tag, #E45649); }\n\t\t.pict-content-code-wrap .attr-name { color: var(--theme-color-syntax-attrname, #986801); }\n\t\t.pict-content-code-wrap .attr-value { color: var(--theme-color-syntax-attrvalue, #50A14F); }\n\t\t.pict-content-code-wrap .builtin { color: var(--theme-color-syntax-builtin, #986801); }\n\t\t.pict-content-code-wrap .type { color: var(--theme-color-syntax-type, #C18401); }\n\t\t.pict-content-code-wrap .variable { color: var(--theme-color-syntax-variable, #383A42); }\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 var(--theme-color-brand-primary, #2E7D74);\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: var(--theme-color-background-secondary, #F7F5F0);\n\t\t\tcolor: var(--theme-color-text-secondary, #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: var(--theme-color-text-primary, #423D37);\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid var(--theme-color-border-default, #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: var(--theme-color-background-secondary, #F5F0E8);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #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: var(--theme-color-text-primary, #3D3229);\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: var(--theme-color-text-primary, #423D37);\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: var(--theme-color-background-secondary, #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: var(--theme-color-background-panel, #fff);\n\t\t\tcolor: var(--theme-color-text-primary, #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: var(--theme-color-text-primary, #2A241E) !important;\n\t\t\tfill: var(--theme-color-text-primary, #2A241E) !important;\n\t\t}\n\t\t.pict-content pre.mermaid .edgePath .path {\n\t\t\tstroke: var(--theme-color-text-secondary, #5E5549) !important;\n\t\t}\n\t\t.pict-content pre.mermaid .arrowheadPath {\n\t\t\tfill: var(--theme-color-text-secondary, #5E5549) !important;\n\t\t}\n\t\t/* Excalidraw fence placeholders + rendered SVGs */\n\t\t.pict-content .pict-excalidraw-fence {\n\t\t\tdisplay: block;\n\t\t\tbackground: var(--theme-color-background-panel, #fff);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tborder-radius: 4px;\n\t\t\tpadding: 1em;\n\t\t\tmargin: 1em 0;\n\t\t\ttext-align: center;\n\t\t}\n\t\t.pict-content .pict-excalidraw-fence svg {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content .pict-excalidraw-fence-loading {\n\t\t\tcolor: var(--theme-color-text-secondary, #5E5549);\n\t\t\tfont-style: italic;\n\t\t\tfont-size: 0.9em;\n\t\t\tpadding: 1em;\n\t\t}\n\t\t.pict-content .pict-excalidraw-fence-error {\n\t\t\tborder-color: var(--theme-color-status-error, #D9534F);\n\t\t\tbackground: var(--theme-color-background-secondary, #FFF5F5);\n\t\t}\n\t\t.pict-content .pict-excalidraw-fence-error-message {\n\t\t\tcolor: var(--theme-color-status-error, #D9534F);\n\t\t\tfont-family: var(--theme-typography-family-mono, monospace);\n\t\t\tfont-size: 0.85em;\n\t\t\ttext-align: left;\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(--theme-color-brand-primary, #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(--theme-color-background-panel, #FFFFFF);\n\t\t\tcolor: var(--theme-color-text-muted, #5E5549);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #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(--theme-color-brand-primary, #2E7D74);\n\t\t\tcolor: var(--theme-color-text-on-brand, #FFFFFF);\n\t\t\tborder-color: var(--theme-color-brand-primary, #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(--theme-color-brand-primary, #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(--theme-color-brand-primary, #2E7D74);\n\t\t\tcolor: var(--theme-color-text-on-brand, #FFFFFF);\n\t\t\tborder-color: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.pict-content-code-action-btn.is-copy-failed {\n\t\t\tbackground: var(--theme-color-status-error, #B23A3A);\n\t\t\tcolor: var(--theme-color-text-on-brand, #FFFFFF);\n\t\t\tborder-color: var(--theme-color-status-error, #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(--theme-color-text-primary, #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(--theme-color-background-panel, #FFFFFF);\n\t\t\tcolor: var(--theme-color-text-primary, #1A1612);\n\t\t\tborder-bottom: 1px solid var(--theme-color-border-default, #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(--theme-color-text-primary, #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(--theme-color-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(--theme-color-border-light, #EAE3D8);\n\t\t\tcolor: var(--theme-color-text-primary, #1A1612);\n\t\t}\n\t\t.pict-fullscreen-btn:focus-visible {\n\t\t\toutline: 2px solid var(--theme-color-brand-primary, #2E7D74);\n\t\t\toutline-offset: 2px;\n\t\t}\n\t\t.pict-fullscreen-close:hover {\n\t\t\tbackground: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tcolor: var(--theme-color-text-on-brand, #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(--theme-color-background-panel, #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(--theme-color-background-panel, #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:/*html*/"\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"}]};class PictContentView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);}/**
6309
+ */escapeHTML(pText){if(!pText){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=PictContentProvider;module.exports.default_configuration={ProviderIdentifier:"Pict-Content",AutoInitialize:true,AutoInitializeOrdinal:0};},{"pict-provider":149,"pict-section-code":152}],156:[function(require,module,exports){const libPictView=require('pict-view');const _ViewConfiguration={ViewIdentifier:"Pict-Content",DefaultRenderable:"Pict-Content-Display",DefaultDestinationAddress:"#Pict-Content-Container",AutoRender:false,CSS:/*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: var(--theme-color-text-muted, #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: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder-bottom: 1px solid var(--theme-color-border-default, #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: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder-bottom: 1px solid var(--theme-color-border-light, #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: var(--theme-color-text-primary, #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: var(--theme-color-text-secondary, #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: var(--theme-color-text-primary, #423D37);\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: var(--theme-color-brand-primary, #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/* \u2500\u2500\u2500 Code blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\t\t Background, text color, line-number gutter, and every\n\t\t syntax token route through pict-provider-theme tokens \u2014\n\t\t the same set pict-section-code (the live editor) uses.\n\t\t This way the rendered-preview code blocks look identical\n\t\t to the live editor and re-skin together when the theme\n\t\t switches. Previous version used the text-primary token\n\t\t as the code background (a TEXT token used as BACKGROUND),\n\t\t which broke in dark mode and any palette where text and\n\t\t background-tertiary diverge.\n\t\t*/\n\t\t.pict-content pre {\n\t\t\tbackground: var(--theme-color-background-tertiary, #F0ECE4);\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\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\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace);\n\t\t}\n\t\t/* Inline code (single backtick) \u2014 slightly differentiated\n\t\t from block code so it doesn't disappear into prose. */\n\t\t.pict-content code {\n\t\t\tbackground: var(--theme-color-background-secondary, #FAF8F4);\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', monospace);\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: var(--theme-typography-family-mono, '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: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tborder-radius: 6px;\n\t\t\toverflow: hidden;\n\t\t\tmargin: 1em 0;\n\t\t\tbackground: var(--theme-color-background-tertiary, #F0ECE4);\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: var(--theme-color-background-secondary, #FAF8F4);\n\t\t\tborder-right: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tcolor: var(--theme-color-text-muted, #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: var(--theme-color-background-tertiary, #F0ECE4);\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder: none;\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/* Syntax token colors \u2014 every class binds to a --theme-color-syntax-*\n\t\t variable, the same tokens pict-section-code (the live editor) uses.\n\t\t Each var() carries an Atom One Light hex as fallback for hosts\n\t\t without a theme provider; themes that DO ship syntax tokens\n\t\t (pict-default, retold-content-system, etc.) drive everything\n\t\t coherently. */\n\t\t.pict-content-code-wrap .keyword { color: var(--theme-color-syntax-keyword, #A626A4); }\n\t\t.pict-content-code-wrap .string { color: var(--theme-color-syntax-string, #50A14F); }\n\t\t.pict-content-code-wrap .number { color: var(--theme-color-syntax-number, #986801); }\n\t\t.pict-content-code-wrap .comment { color: var(--theme-color-syntax-comment, #A0A1A7); font-style: italic; }\n\t\t.pict-content-code-wrap .operator { color: var(--theme-color-syntax-operator, #0184BC); }\n\t\t.pict-content-code-wrap .punctuation { color: var(--theme-color-syntax-punctuation, #383A42); }\n\t\t.pict-content-code-wrap .function-name { color: var(--theme-color-syntax-function, #4078F2); }\n\t\t.pict-content-code-wrap .property { color: var(--theme-color-syntax-property, #E45649); }\n\t\t.pict-content-code-wrap .tag { color: var(--theme-color-syntax-tag, #E45649); }\n\t\t.pict-content-code-wrap .attr-name { color: var(--theme-color-syntax-attrname, #986801); }\n\t\t.pict-content-code-wrap .attr-value { color: var(--theme-color-syntax-attrvalue, #50A14F); }\n\t\t.pict-content-code-wrap .builtin { color: var(--theme-color-syntax-builtin, #986801); }\n\t\t.pict-content-code-wrap .type { color: var(--theme-color-syntax-type, #C18401); }\n\t\t.pict-content-code-wrap .variable { color: var(--theme-color-syntax-variable, #383A42); }\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 var(--theme-color-brand-primary, #2E7D74);\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: var(--theme-color-background-secondary, #F7F5F0);\n\t\t\tcolor: var(--theme-color-text-secondary, #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: var(--theme-color-text-primary, #423D37);\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid var(--theme-color-border-default, #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: var(--theme-color-background-secondary, #F5F0E8);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #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: var(--theme-color-text-primary, #3D3229);\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: var(--theme-color-text-primary, #423D37);\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: var(--theme-color-background-secondary, #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: var(--theme-color-background-panel, #fff);\n\t\t\tcolor: var(--theme-color-text-primary, #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: var(--theme-color-text-primary, #2A241E) !important;\n\t\t\tfill: var(--theme-color-text-primary, #2A241E) !important;\n\t\t}\n\t\t.pict-content pre.mermaid .edgePath .path {\n\t\t\tstroke: var(--theme-color-text-secondary, #5E5549) !important;\n\t\t}\n\t\t.pict-content pre.mermaid .arrowheadPath {\n\t\t\tfill: var(--theme-color-text-secondary, #5E5549) !important;\n\t\t}\n\t\t/* Excalidraw fence placeholders + rendered SVGs */\n\t\t.pict-content .pict-excalidraw-fence {\n\t\t\tdisplay: block;\n\t\t\tbackground: var(--theme-color-background-panel, #fff);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tborder-radius: 4px;\n\t\t\tpadding: 1em;\n\t\t\tmargin: 1em 0;\n\t\t\ttext-align: center;\n\t\t}\n\t\t.pict-content .pict-excalidraw-fence svg {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content .pict-excalidraw-fence-loading {\n\t\t\tcolor: var(--theme-color-text-secondary, #5E5549);\n\t\t\tfont-style: italic;\n\t\t\tfont-size: 0.9em;\n\t\t\tpadding: 1em;\n\t\t}\n\t\t.pict-content .pict-excalidraw-fence-error {\n\t\t\tborder-color: var(--theme-color-status-error, #D9534F);\n\t\t\tbackground: var(--theme-color-background-secondary, #FFF5F5);\n\t\t}\n\t\t.pict-content .pict-excalidraw-fence-error-message {\n\t\t\tcolor: var(--theme-color-status-error, #D9534F);\n\t\t\tfont-family: var(--theme-typography-family-mono, monospace);\n\t\t\tfont-size: 0.85em;\n\t\t\ttext-align: left;\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(--theme-color-brand-primary, #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(--theme-color-background-panel, #FFFFFF);\n\t\t\tcolor: var(--theme-color-text-muted, #5E5549);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #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(--theme-color-brand-primary, #2E7D74);\n\t\t\tcolor: var(--theme-color-text-on-brand, #FFFFFF);\n\t\t\tborder-color: var(--theme-color-brand-primary, #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(--theme-color-brand-primary, #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(--theme-color-brand-primary, #2E7D74);\n\t\t\tcolor: var(--theme-color-text-on-brand, #FFFFFF);\n\t\t\tborder-color: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.pict-content-code-action-btn.is-copy-failed {\n\t\t\tbackground: var(--theme-color-status-error, #B23A3A);\n\t\t\tcolor: var(--theme-color-text-on-brand, #FFFFFF);\n\t\t\tborder-color: var(--theme-color-status-error, #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(--theme-color-text-primary, #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(--theme-color-background-panel, #FFFFFF);\n\t\t\tcolor: var(--theme-color-text-primary, #1A1612);\n\t\t\tborder-bottom: 1px solid var(--theme-color-border-default, #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(--theme-color-text-primary, #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(--theme-color-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(--theme-color-border-light, #EAE3D8);\n\t\t\tcolor: var(--theme-color-text-primary, #1A1612);\n\t\t}\n\t\t.pict-fullscreen-btn:focus-visible {\n\t\t\toutline: 2px solid var(--theme-color-brand-primary, #2E7D74);\n\t\t\toutline-offset: 2px;\n\t\t}\n\t\t.pict-fullscreen-close:hover {\n\t\t\tbackground: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tcolor: var(--theme-color-text-on-brand, #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(--theme-color-background-panel, #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(--theme-color-background-panel, #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:/*html*/"\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"}]};class PictContentView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);}/**
6133
6310
  * Display parsed HTML content in the content area.
6134
6311
  *
6135
6312
  * @param {string} pHTMLContent - The HTML to display
@@ -6169,51 +6346,30 @@ if(this.log&&this.log.warn&&!this._excalidrawBundleWarnLogged){this.log.warn('pi
6169
6346
  pSvgEl.removeAttribute('width');pSvgEl.removeAttribute('height');pSvgEl.setAttribute('style','max-width: 100%; height: auto;');tmpFence.innerHTML='';tmpFence.appendChild(pSvgEl);tmpFence.setAttribute('data-rendered','true');}).catch(pErr=>{this._renderExcalidrawFenceError(tmpFence,'Excalidraw render failed: '+(pErr&&pErr.message?pErr.message:pErr));});}}_renderExcalidrawFenceError(pFence,pMessage){pFence.setAttribute('data-rendered','true');pFence.classList.add('pict-excalidraw-fence-error');pFence.innerHTML='<div class="pict-excalidraw-fence-error-message"></div>';// Use textContent on the inner div so any user-supplied error
6170
6347
  // substrings (e.g. parser error positions) can't introduce HTML.
6171
6348
  let tmpMsg=pFence.querySelector('.pict-excalidraw-fence-error-message');if(tmpMsg)tmpMsg.textContent=pMessage;if(this.log&&this.log.warn)this.log.warn('pict-excalidraw fence: '+pMessage);}/**
6172
- * Initialize Mermaid with theme variables read from the active
6173
- * pict-provider-theme palette. Mermaid's `base` theme honors
6174
- * `themeVariables`, so the diagram colors (node fills, cluster
6175
- * backgrounds, edges, labels) follow whatever theme is applied.
6176
- *
6177
- * Idempotent and cheap. Called lazily before the first
6178
- * `mermaid.run()` and again from the onApply subscription when
6179
- * the user switches themes.
6180
- */_initializeMermaidTheme(){if(typeof mermaid==='undefined'||typeof window==='undefined'){return;}let tmpCs=getComputedStyle(document.documentElement);let tmpVar=(pName,pFallback)=>{let tmpVal=(tmpCs.getPropertyValue(pName)||'').trim();return tmpVal||pFallback;};// Read every token Mermaid 'base' actually consumes. Falling
6181
- // back to the retold-content-system warm-beige hexes keeps the
6182
- // diagram readable even if the theme provider isn't installed.
6183
- try{mermaid.initialize({startOnLoad:false,theme:'base',securityLevel:'loose',themeVariables:{// Primary surfaces (node fills + cluster background)
6184
- primaryColor:tmpVar('--theme-color-background-panel','#FAF8F4'),primaryTextColor:tmpVar('--theme-color-text-primary','#3D3229'),primaryBorderColor:tmpVar('--theme-color-brand-primary','#2E7D74'),// Secondary (alt rows, alternate nodes, sequence actor bg)
6185
- secondaryColor:tmpVar('--theme-color-background-secondary','#F0EDE8'),secondaryTextColor:tmpVar('--theme-color-text-secondary','#5E5549'),secondaryBorderColor:tmpVar('--theme-color-border-default','#DDD6CA'),// Tertiary (clusters, accent groups)
6186
- tertiaryColor:tmpVar('--theme-color-background-tertiary','#EDE9E3'),tertiaryTextColor:tmpVar('--theme-color-text-secondary','#5E5549'),tertiaryBorderColor:tmpVar('--theme-color-border-light','#E8E2D7'),// Page-level + line + note
6187
- background:tmpVar('--theme-color-background-panel','#FAF8F4'),mainBkg:tmpVar('--theme-color-background-panel','#FAF8F4'),secondBkg:tmpVar('--theme-color-background-secondary','#F0EDE8'),lineColor:tmpVar('--theme-color-text-secondary','#5E5549'),textColor:tmpVar('--theme-color-text-primary','#3D3229'),noteBkgColor:tmpVar('--theme-color-background-tertiary','#EDE9E3'),noteTextColor:tmpVar('--theme-color-text-primary','#3D3229'),noteBorderColor:tmpVar('--theme-color-border-default','#DDD6CA'),// Status (Mermaid uses these for error/warning highlights)
6188
- errorBkgColor:tmpVar('--theme-color-status-error','#D9534F'),errorTextColor:tmpVar('--theme-color-text-on-brand','#FFFFFF'),// Typography
6189
- fontFamily:tmpVar('--theme-typography-family-sans','inherit')}});}catch(pError){if(this.log&&this.log.warn){this.log.warn('Mermaid theme init failed: '+pError.message);}}}/**
6190
- * Subscribe to pict-provider-theme apply events so Mermaid diagrams
6191
- * re-render with the new palette on theme change. Idempotent — safe
6192
- * to call multiple times. Falls through silently when the provider
6193
- * isn't installed (apps using pict-section-content without
6194
- * pict-provider-theme still get the static base theme).
6195
- */_subscribeToThemeChanges(){if(this._mermaidThemeSubscribed){return;}let tmpProvider=this.pict&&this.pict.providers&&this.pict.providers.Theme;if(!tmpProvider||typeof tmpProvider.onApply!=='function'){return;}let tmpSelf=this;tmpProvider.onApply(function(){tmpSelf._initializeMermaidTheme();tmpSelf._refreshMermaidDiagrams();});this._mermaidThemeSubscribed=true;}/**
6196
- * Re-render every Mermaid diagram on the page using its cached
6197
- * source. Called after a theme change so the new themeVariables
6198
- * take effect on already-displayed diagrams.
6199
- *
6200
- * Mermaid replaces `pre.mermaid`'s textContent with the rendered
6201
- * SVG during `mermaid.run()`. To re-render we need the original
6202
- * source, which `renderMermaidDiagrams` stashes on each element
6203
- * as `data-mermaid-source` BEFORE running. This method restores
6204
- * that source, drops the `data-processed` flag, and re-runs.
6205
- */_refreshMermaidDiagrams(){if(typeof mermaid==='undefined'||typeof document==='undefined'){return;}let tmpRendered=document.querySelectorAll('pre.mermaid[data-mermaid-source]');if(tmpRendered.length<1){return;}for(let i=0;i<tmpRendered.length;i++){let tmpEl=tmpRendered[i];tmpEl.textContent=tmpEl.getAttribute('data-mermaid-source');tmpEl.removeAttribute('data-processed');tmpEl.classList.remove('mermaid-rendered');}try{let tmpResult=mermaid.run({nodes:tmpRendered});if(tmpResult&&typeof tmpResult.catch==='function'){tmpResult.catch(pError=>{if(this.log&&this.log.warn){this.log.warn('Mermaid re-render failed: '+(pError&&pError.message?pError.message:pError));}});}}catch(pError){if(this.log&&this.log.warn){this.log.warn('Mermaid re-render failed: '+pError.message);}}}/**
6349
+ * Lazily wire mermaid into the active pict-provider-theme via the
6350
+ * shared Theme-Diagram-Adapter. The adapter handles:
6351
+ * - mermaid.initialize() with the canonical pict token map
6352
+ * - onApply subscription (re-init + re-render on theme/mode change)
6353
+ * - source stashing + data-processed reset for refresh
6354
+ *
6355
+ * Idempotent: the first call binds the adapter, subsequent calls are
6356
+ * no-ops. When the provider isn't installed, mermaid still gets
6357
+ * initialized once against whatever CSS variables happen to exist.
6358
+ */_ensureMermaidAdapter(){if(this._mermaidAdapter){return this._mermaidAdapter;}if(typeof mermaid==='undefined'||typeof window==='undefined'){return null;}let tmpProvider=this.pict&&this.pict.providers&&this.pict.providers.Theme;try{if(tmpProvider&&tmpProvider.diagram&&typeof tmpProvider.diagram.adaptMermaid==='function'){this._mermaidAdapter=tmpProvider.diagram.adaptMermaid(mermaid,{});}else{// No provider: lazy-require the adapter directly so the
6359
+ // static base theme still picks up any CSS vars on :root.
6360
+ let libDiagramAdapter=require('pict-provider-theme/source/Theme-Diagram-Adapter.js');libDiagramAdapter.initializeMermaid(mermaid);this._mermaidAdapter={refresh:function refresh(){return libDiagramAdapter.refreshMermaidDiagrams();},reinitialize:function reinitialize(){libDiagramAdapter.initializeMermaid(mermaid);},dispose:function dispose(){},subscribed:false};}}catch(pError){if(this.log&&this.log.warn){this.log.warn('Mermaid theme adapter init failed: '+pError.message);}this._mermaidAdapter=null;}return this._mermaidAdapter;}/**
6206
6361
  * Render any Mermaid diagram blocks in the content area.
6207
6362
  * Mermaid blocks are `<pre class="mermaid">` elements produced by parseMarkdown.
6208
6363
  *
6209
6364
  * @param {string} [pContainerID] - The container element ID (defaults to 'Pict-Content-Body')
6210
- */renderMermaidDiagrams(pContainerID){if(typeof mermaid==='undefined'){return;}let tmpContainerID=pContainerID||'Pict-Content-Body';let tmpContentBody=document.getElementById(tmpContainerID);if(!tmpContentBody){return;}let tmpMermaidElements=tmpContentBody.querySelectorAll('pre.mermaid');if(tmpMermaidElements.length<1){return;}// First-time setup: apply theme variables and subscribe to
6211
- // theme apply events so diagrams re-render on theme change.
6212
- this._initializeMermaidTheme();this._subscribeToThemeChanges();// Cache each diagram's source on the element so theme-change
6365
+ */renderMermaidDiagrams(pContainerID){if(typeof mermaid==='undefined'){return;}let tmpContainerID=pContainerID||'Pict-Content-Body';let tmpContentBody=document.getElementById(tmpContainerID);if(!tmpContentBody){return;}let tmpMermaidElements=tmpContentBody.querySelectorAll('pre.mermaid');if(tmpMermaidElements.length<1){return;}// First-time setup: bind the Theme-Diagram-Adapter, which initializes
6366
+ // mermaid against the active palette and subscribes to onApply so a
6367
+ // theme/mode change triggers re-render of every pre.mermaid on the page.
6368
+ this._ensureMermaidAdapter();// Cache each diagram's source on the element so theme-change
6213
6369
  // re-renders can restore it. Mermaid replaces textContent with
6214
6370
  // the rendered SVG during run(), so we lose the source unless
6215
6371
  // we stash it here first.
6216
- for(let i=0;i<tmpMermaidElements.length;i++){let tmpEl=tmpMermaidElements[i];if(!tmpEl.hasAttribute('data-mermaid-source')){tmpEl.setAttribute('data-mermaid-source',tmpEl.textContent);}}// mermaid.run() will process all pre.mermaid elements in the container.
6372
+ let tmpProviderForStash=this.pict&&this.pict.providers&&this.pict.providers.Theme;if(tmpProviderForStash&&tmpProviderForStash.diagram&&typeof tmpProviderForStash.diagram.stashMermaidSource==='function'){tmpProviderForStash.diagram.stashMermaidSource(tmpMermaidElements);}else{for(let i=0;i<tmpMermaidElements.length;i++){let tmpEl=tmpMermaidElements[i];if(!tmpEl.hasAttribute('data-mermaid-source')){tmpEl.setAttribute('data-mermaid-source',tmpEl.textContent);}}}// mermaid.run() will process all pre.mermaid elements in the container.
6217
6373
  // It returns a promise; once it resolves the inner SVG exists and we
6218
6374
  // can tag the diagrams as fullscreen-clickable.
6219
6375
  try{let tmpResult=mermaid.run({nodes:tmpMermaidElements});if(tmpResult&&typeof tmpResult.then==='function'){tmpResult.then(()=>{this.enableFullscreenViewers(tmpContainerID,{onlyMermaid:true});}).catch(pError=>{this.log.error('Mermaid rendering error: '+(pError&&pError.message?pError.message:pError));});}else{// Synchronous fallback (older mermaid)
@@ -6290,7 +6446,41 @@ let tmpZoomBtns=tmpOverlay.querySelectorAll('[data-action="zoom-in"], [data-acti
6290
6446
  *
6291
6447
  * @param {string} [pMessage] - Loading message (defaults to 'Loading content...')
6292
6448
  * @param {string} [pContainerID] - The container element ID (defaults to 'Pict-Content-Body')
6293
- */showLoading(pMessage,pContainerID){let tmpContainerID=pContainerID||'Pict-Content-Body';let tmpMessage=pMessage||'Loading content...';this.pict.ContentAssignment.assignContent('#'+tmpContainerID,'<div class="pict-content-loading">'+tmpMessage+'</div>');}}module.exports=PictContentView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}],156:[function(require,module,exports){module.exports={"RenderOnLoad":true,"DefaultRenderable":"Histogram-Wrap","DefaultDestinationAddress":"#Histogram-Container-Div","Templates":[{"Hash":"Histogram-Container","Template":"<!-- Histogram Container Rendering Soon -->"}],"Renderables":[{"RenderableHash":"Histogram-Wrap","TemplateHash":"Histogram-Container","DestinationAddress":"#Histogram-Container-Div"}],"TargetElementAddress":"#Histogram-Container-Div",// --- Data Configuration ---
6449
+ */showLoading(pMessage,pContainerID){let tmpContainerID=pContainerID||'Pict-Content-Body';let tmpMessage=pMessage||'Loading content...';this.pict.ContentAssignment.assignContent('#'+tmpContainerID,'<div class="pict-content-loading">'+tmpMessage+'</div>');}}module.exports=PictContentView;module.exports.default_configuration=_ViewConfiguration;},{"pict-provider-theme/source/Theme-Diagram-Adapter.js":143,"pict-view":234}],157:[function(require,module,exports){// Pict-Section-Content Demo view
6450
+ //
6451
+ // A thin renderable wrapper around the canonical Pict-View-Content view.
6452
+ // The base view is "lazy" — it shows a Loading placeholder until its host
6453
+ // application explicitly calls `displayContent(parsedHTML)`. That works
6454
+ // fine when an application has its own page logic, but it's awkward for
6455
+ // the docuserve playground (which doesn't know anything about
6456
+ // markdown / parseMarkdown).
6457
+ //
6458
+ // This demo view bridges that gap:
6459
+ // 1. Ensures the PictContentProvider is registered with `pict`.
6460
+ // 2. Reads markdown text from an AppData address (configurable via
6461
+ // `MarkdownDataAddress`, e.g. "AppData.ContentDemo.Markdown").
6462
+ // 3. On every render, parses the markdown via the provider and calls
6463
+ // the parent view's `displayContent` to push HTML into the DOM.
6464
+ //
6465
+ // Host applications that need anything more elaborate (navigation,
6466
+ // multiple documents, link resolvers) should keep using the canonical
6467
+ // Pict-View-Content view directly. This demo view exists for the
6468
+ // playground and other "just render this markdown blob" surfaces.
6469
+ const libPictViewContent=require('./Pict-View-Content.js');const libPictContentProvider=require('../providers/Pict-Provider-Content.js');const _ViewConfiguration={ViewIdentifier:"Pict-Content-Demo",DefaultRenderable:"Pict-Content-Display",DefaultDestinationAddress:"#Pict-Content-Container",// Where to read the markdown source from. Resolved against the
6470
+ // pict instance with simple dot-walking — "AppData.X.Y.Z".
6471
+ MarkdownDataAddress:"AppData.ContentDemo.Markdown",// AutoRender on, so the playground's wrapper just instantiates the
6472
+ // view and the markdown shows up on next tick.
6473
+ AutoRender:true,// Inherit CSS / Templates / Renderables from the base view so we
6474
+ // render into the same #Pict-Content-Container with the same shell.
6475
+ CSS:libPictViewContent.default_configuration.CSS,Templates:libPictViewContent.default_configuration.Templates,Renderables:libPictViewContent.default_configuration.Renderables};class PictContentDemoView extends libPictViewContent{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);// Ensure the content provider is registered. Use a stable hash
6476
+ // so repeat instantiation is a no-op.
6477
+ let tmpProviderHash='Pict-Content';if(!this.pict.providers[tmpProviderHash]){this.pict.addProvider(tmpProviderHash,libPictContentProvider.default_configuration,libPictContentProvider);}}/**
6478
+ * Walk a dotted address ("AppData.X.Y.Z") against the pict instance
6479
+ * and return the value, or null if any segment is missing.
6480
+ */_readMarkdownFromAddress(){let tmpAddress=this.options.MarkdownDataAddress;if(!tmpAddress||typeof tmpAddress!=='string'){return null;}let tmpParts=tmpAddress.split('.');let tmpCurrent=this.pict;for(let i=0;i<tmpParts.length;i++){if(tmpCurrent===null||tmpCurrent===undefined){return null;}tmpCurrent=tmpCurrent[tmpParts[i]];}return typeof tmpCurrent==='string'?tmpCurrent:null;}onAfterRender(pRenderable,pAddress,pRecord,pContent){// Pull markdown from AppData and push parsed HTML through the
6481
+ // parent view's pipeline (which also wires Mermaid / KaTeX /
6482
+ // fullscreen viewers).
6483
+ let tmpMarkdown=this._readMarkdownFromAddress();let tmpProvider=this.pict.providers['Pict-Content'];if(tmpProvider&&typeof tmpMarkdown==='string'){let tmpHTML=tmpProvider.parseMarkdown(tmpMarkdown);this.displayContent(tmpHTML);}this.pict.CSSMap.injectCSS();return super.onAfterRender(pRenderable,pAddress,pRecord,pContent);}}module.exports=PictContentDemoView;module.exports.default_configuration=_ViewConfiguration;},{"../providers/Pict-Provider-Content.js":155,"./Pict-View-Content.js":156}],158:[function(require,module,exports){module.exports={"RenderOnLoad":true,"DefaultRenderable":"Histogram-Wrap","DefaultDestinationAddress":"#Histogram-Container-Div","Templates":[{"Hash":"Histogram-Container","Template":"<!-- Histogram Container Rendering Soon -->"}],"Renderables":[{"RenderableHash":"Histogram-Wrap","TemplateHash":"Histogram-Container","DestinationAddress":"#Histogram-Container-Div"}],"TargetElementAddress":"#Histogram-Container-Div",// --- Data Configuration ---
6294
6484
  // Address in AppData (or other Pict address space) for the histogram bins
6295
6485
  // Expected format: Array of objects with at least { Label, Value } properties
6296
6486
  // e.g. [{ Label: "2020", Value: 15 }, { Label: "2021", Value: 42 }]
@@ -6331,7 +6521,7 @@ let tmpZoomBtns=tmpOverlay.querySelectorAll('[data-action="zoom-in"], [data-acti
6331
6521
  "BarCharacter":"\u2588","BarPartialCharacters":[" ","\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],"EmptyCharacter":" ","SliderCharacter":"\u2502","SliderHandleCharacter":"\u25C6",// Width of the histogram in characters (cli/consoleui)
6332
6522
  "TextWidth":60,// Height of the histogram in characters (cli/consoleui vertical)
6333
6523
  "TextHeight":15,// --- CSS ---
6334
- "CSS":".pict-histogram-container\n{\n\tdisplay: inline-block;\n\tposition: relative;\n\tfont-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n\tfont-size: 12px;\n\tuser-select: none;\n}\n.pict-histogram-chart\n{\n\tdisplay: flex;\n\talign-items: flex-end;\n\tposition: relative;\n}\n.pict-histogram-container.pict-histogram-horizontal\n{\n\tdisplay: inline-flex;\n\tflex-direction: row;\n\talign-items: stretch;\n}\n.pict-histogram-chart.pict-histogram-horizontal\n{\n\tflex-direction: column;\n\talign-items: flex-start;\n}\n.pict-histogram-bar-group\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tcursor: default;\n\tflex-shrink: 0;\n}\n.pict-histogram-horizontal .pict-histogram-bar-group\n{\n\tflex-direction: row;\n\talign-items: center;\n}\n.pict-histogram-bar\n{\n\ttransition: background-color 0.15s ease, height 0.2s ease, width 0.2s ease;\n\tborder-radius: 2px 2px 0 0;\n\tmin-width: 1px;\n\tmin-height: 1px;\n}\n.pict-histogram-horizontal .pict-histogram-bar\n{\n\tborder-radius: 0 2px 2px 0;\n}\n.pict-histogram-bar.pict-histogram-selectable\n{\n\tcursor: pointer;\n}\n.pict-histogram-bar.pict-histogram-selectable:hover\n{\n\topacity: 0.8;\n}\n.pict-histogram-bar.pict-histogram-selected\n{\n\tbox-shadow: 0 0 0 2px rgba(46, 204, 113, 0.4);\n}\n.pict-histogram-bar.pict-histogram-in-range\n{\n\topacity: 0.9;\n}\n.pict-histogram-value-label\n{\n\ttext-align: center;\n\tcolor: var(--theme-color-text-secondary, #666);\n\tfont-size: 11px;\n\tpadding: 2px 0;\n\twhite-space: nowrap;\n}\n.pict-histogram-horizontal .pict-histogram-value-label\n{\n\tpadding: 0 4px;\n}\n.pict-histogram-bin-label\n{\n\ttext-align: center;\n\tcolor: var(--theme-color-text-primary, #333);\n\tfont-size: 11px;\n\tpadding: 4px 2px 0 2px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.pict-histogram-horizontal .pict-histogram-bin-label\n{\n\tpadding: 0 4px 0 0;\n\ttext-align: right;\n\tmin-width: 40px;\n}\n.pict-histogram-range-slider-container\n{\n\tposition: relative;\n\twidth: 100%;\n\theight: 24px;\n\tmargin-top: 4px;\n}\n.pict-histogram-horizontal .pict-histogram-range-slider-container\n{\n\twidth: 24px;\n\theight: auto;\n\talign-self: stretch;\n\tmargin-top: 0;\n\tmargin-left: 4px;\n}\n.pict-histogram-range-track\n{\n\tposition: absolute;\n\ttop: 10px;\n\tleft: 0;\n\tright: 0;\n\theight: 4px;\n\tbackground: var(--theme-color-border-default, #E0E0E0);\n\tborder-radius: 2px;\n}\n.pict-histogram-horizontal .pict-histogram-range-track\n{\n\ttop: 0;\n\tleft: 10px;\n\tright: auto;\n\tbottom: 0;\n\twidth: 4px;\n\theight: auto;\n}\n.pict-histogram-range-fill\n{\n\tposition: absolute;\n\ttop: 10px;\n\theight: 4px;\n\tbackground: var(--theme-color-brand-primary, #4A90D9);\n\tborder-radius: 2px;\n}\n.pict-histogram-horizontal .pict-histogram-range-fill\n{\n\ttop: auto;\n\tleft: 10px;\n\twidth: 4px;\n\theight: auto;\n}\n.pict-histogram-range-handle\n{\n\tposition: absolute;\n\ttop: 4px;\n\twidth: 16px;\n\theight: 16px;\n\tbackground: var(--theme-color-background-panel, #fff);\n\tborder: 2px solid var(--theme-color-brand-primary, #4A90D9);\n\tborder-radius: 50%;\n\tcursor: grab;\n\tz-index: 2;\n\ttransform: translateX(-50%);\n}\n.pict-histogram-horizontal .pict-histogram-range-handle\n{\n\ttop: auto;\n\tleft: 4px;\n\ttransform: translateY(-50%);\n}\n.pict-histogram-range-handle:active\n{\n\tcursor: grabbing;\n\tbackground: var(--theme-color-brand-primary, #4A90D9);\n}\n.pict-histogram-range-handle:active,\n.pict-histogram-range-handle:focus\n{\n\tbox-shadow: 0 0 0 3px rgba(74, 144, 217, 0.3);\n\toutline: none;\n}\n.pict-histogram-container.pict-histogram-fill\n{\n\tdisplay: block;\n\twidth: 100%;\n}\n.pict-histogram-fill .pict-histogram-chart\n{\n\twidth: 100%;\n}\n.pict-histogram-fill .pict-histogram-bar-group\n{\n\tflex: 1 1 0%;\n\tmin-width: 0;\n}\n.pict-histogram-fill .pict-histogram-bar\n{\n\twidth: 100%;\n}\n.pict-histogram-axis-line\n{\n\twidth: 100%;\n\theight: 1px;\n\tbackground: var(--theme-color-border-default, #ccc);\n}\n.pict-histogram-label-row\n{\n\tdisplay: flex;\n\twidth: 100%;\n}\n.pict-histogram-fill-label\n{\n\tfont-size: 10px;\n\tcolor: var(--theme-color-text-secondary, #666);\n\ttext-align: center;\n\twhite-space: nowrap;\n\toverflow: visible;\n\tline-height: 16px;\n}\n"};},{}],157:[function(require,module,exports){/**
6524
+ "CSS":".pict-histogram-container\n{\n\tdisplay: inline-block;\n\tposition: relative;\n\tfont-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n\tfont-size: 12px;\n\tuser-select: none;\n}\n.pict-histogram-chart\n{\n\tdisplay: flex;\n\talign-items: flex-end;\n\tposition: relative;\n}\n.pict-histogram-container.pict-histogram-horizontal\n{\n\tdisplay: inline-flex;\n\tflex-direction: row;\n\talign-items: stretch;\n}\n.pict-histogram-chart.pict-histogram-horizontal\n{\n\tflex-direction: column;\n\talign-items: flex-start;\n}\n.pict-histogram-bar-group\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tcursor: default;\n\tflex-shrink: 0;\n}\n.pict-histogram-horizontal .pict-histogram-bar-group\n{\n\tflex-direction: row;\n\talign-items: center;\n}\n.pict-histogram-bar\n{\n\ttransition: background-color 0.15s ease, height 0.2s ease, width 0.2s ease;\n\tborder-radius: 2px 2px 0 0;\n\tmin-width: 1px;\n\tmin-height: 1px;\n}\n.pict-histogram-horizontal .pict-histogram-bar\n{\n\tborder-radius: 0 2px 2px 0;\n}\n.pict-histogram-bar.pict-histogram-selectable\n{\n\tcursor: pointer;\n}\n.pict-histogram-bar.pict-histogram-selectable:hover\n{\n\topacity: 0.8;\n}\n.pict-histogram-bar.pict-histogram-selected\n{\n\tbox-shadow: 0 0 0 2px rgba(46, 204, 113, 0.4);\n}\n.pict-histogram-bar.pict-histogram-in-range\n{\n\topacity: 0.9;\n}\n.pict-histogram-value-label\n{\n\ttext-align: center;\n\tcolor: var(--theme-color-text-secondary, #666);\n\tfont-size: 11px;\n\tpadding: 2px 0;\n\twhite-space: nowrap;\n}\n.pict-histogram-horizontal .pict-histogram-value-label\n{\n\tpadding: 0 4px;\n}\n.pict-histogram-bin-label\n{\n\ttext-align: center;\n\tcolor: var(--theme-color-text-primary, #333);\n\tfont-size: 11px;\n\tpadding: 4px 2px 0 2px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.pict-histogram-horizontal .pict-histogram-bin-label\n{\n\tpadding: 0 4px 0 0;\n\ttext-align: right;\n\tmin-width: 40px;\n}\n.pict-histogram-range-slider-container\n{\n\tposition: relative;\n\twidth: 100%;\n\theight: 24px;\n\tmargin-top: 4px;\n}\n.pict-histogram-horizontal .pict-histogram-range-slider-container\n{\n\twidth: 24px;\n\theight: auto;\n\talign-self: stretch;\n\tmargin-top: 0;\n\tmargin-left: 4px;\n}\n.pict-histogram-range-track\n{\n\tposition: absolute;\n\ttop: 10px;\n\tleft: 0;\n\tright: 0;\n\theight: 4px;\n\tbackground: var(--theme-color-border-default, #E0E0E0);\n\tborder-radius: 2px;\n}\n.pict-histogram-horizontal .pict-histogram-range-track\n{\n\ttop: 0;\n\tleft: 10px;\n\tright: auto;\n\tbottom: 0;\n\twidth: 4px;\n\theight: auto;\n}\n.pict-histogram-range-fill\n{\n\tposition: absolute;\n\ttop: 10px;\n\theight: 4px;\n\tbackground: var(--theme-color-brand-primary, #4A90D9);\n\tborder-radius: 2px;\n}\n.pict-histogram-horizontal .pict-histogram-range-fill\n{\n\ttop: auto;\n\tleft: 10px;\n\twidth: 4px;\n\theight: auto;\n}\n.pict-histogram-range-handle\n{\n\tposition: absolute;\n\ttop: 4px;\n\twidth: 16px;\n\theight: 16px;\n\tbackground: var(--theme-color-background-panel, #fff);\n\tborder: 2px solid var(--theme-color-brand-primary, #4A90D9);\n\tborder-radius: 50%;\n\tcursor: grab;\n\tz-index: 2;\n\ttransform: translateX(-50%);\n}\n.pict-histogram-horizontal .pict-histogram-range-handle\n{\n\ttop: auto;\n\tleft: 4px;\n\ttransform: translateY(-50%);\n}\n.pict-histogram-range-handle:active\n{\n\tcursor: grabbing;\n\tbackground: var(--theme-color-brand-primary, #4A90D9);\n}\n.pict-histogram-range-handle:active,\n.pict-histogram-range-handle:focus\n{\n\tbox-shadow: 0 0 0 3px rgba(74, 144, 217, 0.3);\n\toutline: none;\n}\n.pict-histogram-container.pict-histogram-fill\n{\n\tdisplay: block;\n\twidth: 100%;\n}\n.pict-histogram-fill .pict-histogram-chart\n{\n\twidth: 100%;\n}\n.pict-histogram-fill .pict-histogram-bar-group\n{\n\tflex: 1 1 0%;\n\tmin-width: 0;\n}\n.pict-histogram-fill .pict-histogram-bar\n{\n\twidth: 100%;\n}\n.pict-histogram-axis-line\n{\n\twidth: 100%;\n\theight: 1px;\n\tbackground: var(--theme-color-border-default, #ccc);\n}\n.pict-histogram-label-row\n{\n\tdisplay: flex;\n\twidth: 100%;\n}\n.pict-histogram-fill-label\n{\n\tfont-size: 10px;\n\tcolor: var(--theme-color-text-secondary, #666);\n\ttext-align: center;\n\twhite-space: nowrap;\n\toverflow: visible;\n\tline-height: 16px;\n}\n"};},{}],159:[function(require,module,exports){/**
6335
6525
  * Pict Section Histogram
6336
6526
  *
6337
6527
  * A histogram visualization section for the Pict MVC framework.
@@ -6424,7 +6614,7 @@ marshalToView(){super.marshalToView();if(this.initialRenderComplete){this.render
6424
6614
  * Convenience: get the text representation (useful for CLI/consoleui).
6425
6615
  *
6426
6616
  * @returns {string}
6427
- */toText(){if(this.options.Orientation==='vertical'){return libRendererConsoleUI.renderVertical(this);}else{return libRendererConsoleUI.renderHorizontal(this);}}}module.exports=PictSectionHistogram;module.exports.default_configuration=_DefaultConfiguration;module.exports.renderers={browser:libRendererBrowser,consoleui:libRendererConsoleUI,cli:libRendererCLI};},{"./Pict-Section-Histogram-DefaultConfiguration.js":156,"./renderers/Pict-Histogram-Renderer-Browser.js":158,"./renderers/Pict-Histogram-Renderer-CLI.js":159,"./renderers/Pict-Histogram-Renderer-ConsoleUI.js":160,"pict-view":231}],158:[function(require,module,exports){/**
6617
+ */toText(){if(this.options.Orientation==='vertical'){return libRendererConsoleUI.renderVertical(this);}else{return libRendererConsoleUI.renderHorizontal(this);}}}module.exports=PictSectionHistogram;module.exports.default_configuration=_DefaultConfiguration;module.exports.renderers={browser:libRendererBrowser,consoleui:libRendererConsoleUI,cli:libRendererCLI};},{"./Pict-Section-Histogram-DefaultConfiguration.js":158,"./renderers/Pict-Histogram-Renderer-Browser.js":160,"./renderers/Pict-Histogram-Renderer-CLI.js":161,"./renderers/Pict-Histogram-Renderer-ConsoleUI.js":162,"pict-view":234}],160:[function(require,module,exports){/**
6428
6618
  * Browser renderer for pict-section-histogram.
6429
6619
  *
6430
6620
  * Renders the histogram as HTML/CSS elements using the Pict ContentAssignment
@@ -6492,7 +6682,7 @@ let tmpBars=tmpContainer.querySelectorAll('.pict-histogram-bar[data-histogram-in
6492
6682
  */function wireRangeHandle(pView,pHandle,pContainer){let tmpHandleType=pHandle.getAttribute('data-handle');// "start" or "end"
6493
6683
  let tmpVertical=pView.options.Orientation==='vertical';let tmpDragging=false;function getSliderBounds(){// Re-query from pContainer every time because renderHistogram() replaces
6494
6684
  // the inner HTML, detaching any previously-captured slider element.
6495
- let tmpSlider=pContainer.querySelector('.pict-histogram-range-slider-container');if(!tmpSlider){return{start:0,size:1};}let tmpRect=tmpSlider.getBoundingClientRect();if(tmpVertical){return{start:tmpRect.left,size:tmpRect.width||1};}else{return{start:tmpRect.top,size:tmpRect.height||1};}}function onPointerMove(pEvent){if(!tmpDragging){return;}let tmpBins=pView.getBins();if(!tmpBins||tmpBins.length===0){return;}let tmpBounds=getSliderBounds();let tmpPos=tmpVertical?pEvent.clientX:pEvent.clientY;let tmpPct=(tmpPos-tmpBounds.start)/tmpBounds.size;tmpPct=Math.max(0,Math.min(1,tmpPct));let tmpIndex=Math.round(tmpPct*(tmpBins.length-1));if(tmpHandleType==='start'){if(tmpIndex>pView._selectionRangeEnd){tmpIndex=pView._selectionRangeEnd;}pView._selectionRangeStart=tmpIndex;}else{if(tmpIndex<pView._selectionRangeStart){tmpIndex=pView._selectionRangeStart;}pView._selectionRangeEnd=tmpIndex;}pView._syncSelectionFromRange();pView.renderHistogram();}function onPointerUp(){if(!tmpDragging){return;}tmpDragging=false;if(typeof document!=='undefined'){document.removeEventListener('mousemove',onPointerMove);document.removeEventListener('mouseup',onPointerUp);}}pHandle.addEventListener('mousedown',pEvent=>{pEvent.preventDefault();tmpDragging=true;if(typeof document!=='undefined'){document.addEventListener('mousemove',onPointerMove);document.addEventListener('mouseup',onPointerUp);}});}module.exports={render,wireEvents};},{}],159:[function(require,module,exports){(function(process){(function(){/**
6685
+ let tmpSlider=pContainer.querySelector('.pict-histogram-range-slider-container');if(!tmpSlider){return{start:0,size:1};}let tmpRect=tmpSlider.getBoundingClientRect();if(tmpVertical){return{start:tmpRect.left,size:tmpRect.width||1};}else{return{start:tmpRect.top,size:tmpRect.height||1};}}function onPointerMove(pEvent){if(!tmpDragging){return;}let tmpBins=pView.getBins();if(!tmpBins||tmpBins.length===0){return;}let tmpBounds=getSliderBounds();let tmpPos=tmpVertical?pEvent.clientX:pEvent.clientY;let tmpPct=(tmpPos-tmpBounds.start)/tmpBounds.size;tmpPct=Math.max(0,Math.min(1,tmpPct));let tmpIndex=Math.round(tmpPct*(tmpBins.length-1));if(tmpHandleType==='start'){if(tmpIndex>pView._selectionRangeEnd){tmpIndex=pView._selectionRangeEnd;}pView._selectionRangeStart=tmpIndex;}else{if(tmpIndex<pView._selectionRangeStart){tmpIndex=pView._selectionRangeStart;}pView._selectionRangeEnd=tmpIndex;}pView._syncSelectionFromRange();pView.renderHistogram();}function onPointerUp(){if(!tmpDragging){return;}tmpDragging=false;if(typeof document!=='undefined'){document.removeEventListener('mousemove',onPointerMove);document.removeEventListener('mouseup',onPointerUp);}}pHandle.addEventListener('mousedown',pEvent=>{pEvent.preventDefault();tmpDragging=true;if(typeof document!=='undefined'){document.addEventListener('mousemove',onPointerMove);document.addEventListener('mouseup',onPointerUp);}});}module.exports={render,wireEvents};},{}],161:[function(require,module,exports){(function(process){(function(){/**
6496
6686
  * CLI renderer for pict-section-histogram.
6497
6687
  *
6498
6688
  * Renders the histogram as ANSI-colored text written directly to stdout
@@ -6535,7 +6725,7 @@ if(tmpOptions.Selectable&&tmpOptions.SelectionMode==='range'){let tmpStart=pView
6535
6725
  if(pView.services&&pView.services.ContentAssignment){pView.services.ContentAssignment.assignContent(pView.options.TargetElementAddress,tmpText);}else if(typeof process!=='undefined'&&process.stdout){process.stdout.write(tmpText);}}// No interactive events in CLI mode
6536
6726
  function wireEvents(){// No-op for CLI
6537
6727
  }// --- Utility ---
6538
- function padLeft(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=' '+tmpStr;}return tmpStr;}function padRight(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=tmpStr+' ';}return tmpStr;}function padCenter(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=tmpStr.length%2===0?tmpStr+' ':' '+tmpStr;}return tmpStr;}module.exports={render,wireEvents,renderVertical,renderHorizontal,colorToAnsi,ANSI_COLORS};}).call(this);}).call(this,require('_process'));},{"_process":305}],160:[function(require,module,exports){/**
6728
+ function padLeft(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=' '+tmpStr;}return tmpStr;}function padRight(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=tmpStr+' ';}return tmpStr;}function padCenter(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=tmpStr.length%2===0?tmpStr+' ':' '+tmpStr;}return tmpStr;}module.exports={render,wireEvents,renderVertical,renderHorizontal,colorToAnsi,ANSI_COLORS};}).call(this);}).call(this,require('_process'));},{"_process":308}],162:[function(require,module,exports){/**
6539
6729
  * Console UI (blessed) renderer for pict-section-histogram.
6540
6730
  *
6541
6731
  * Renders the histogram as text art through the Pict ContentAssignment
@@ -6578,7 +6768,7 @@ if(tmpOptions.Selectable&&tmpOptions.SelectionMode==='range'){tmpLines.push('');
6578
6768
  */function render(pView){let tmpText;if(pView.options.Orientation==='vertical'){tmpText=renderVertical(pView);}else{tmpText=renderHorizontal(pView);}pView.services.ContentAssignment.assignContent(pView.options.TargetElementAddress,tmpText);}// No interactive events for consoleui — input is handled by the blessed widget layer
6579
6769
  function wireEvents(){// No-op for consoleui
6580
6770
  }// --- Utility ---
6581
- function padLeft(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=' '+tmpStr;}return tmpStr;}function padRight(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=tmpStr+' ';}return tmpStr;}function padCenter(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=tmpStr.length%2===0?tmpStr+' ':' '+tmpStr;}return tmpStr;}module.exports={render,wireEvents,renderVertical,renderHorizontal};},{}],161:[function(require,module,exports){/**
6771
+ function padLeft(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=' '+tmpStr;}return tmpStr;}function padRight(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=tmpStr+' ';}return tmpStr;}function padCenter(pStr,pLen){let tmpStr=String(pStr);while(tmpStr.length<pLen){tmpStr=tmpStr.length%2===0?tmpStr+' ':' '+tmpStr;}return tmpStr;}module.exports={render,wireEvents,renderVertical,renderHorizontal};},{}],163:[function(require,module,exports){/**
6582
6772
  * Pict-Modal-Confirm
6583
6773
  *
6584
6774
  * Builds confirm and double-confirm dialog DOM, returns Promises.
@@ -6645,7 +6835,7 @@ fResolve(pResult);}/**
6645
6835
  *
6646
6836
  * @param {string} pText
6647
6837
  * @returns {string}
6648
- */_escapeHTML(pText){if(typeof pText!=='string'){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=PictModalConfirm;},{}],162:[function(require,module,exports){/**
6838
+ */_escapeHTML(pText){if(typeof pText!=='string'){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=PictModalConfirm;},{}],164:[function(require,module,exports){/**
6649
6839
  * Pict-Modal-Dropdown
6650
6840
  *
6651
6841
  * Anchor-positioned menu that behaves like a dropdown / popover. Handy for:
@@ -6721,7 +6911,7 @@ let tmpMenuRect=pMenu.getBoundingClientRect();let tmpVw=window.innerWidth||docum
6721
6911
  let tmpRoomBelow=tmpVh-pAnchorRect.bottom-tmpGap;let tmpRoomAbove=pAnchorRect.top-tmpGap;let tmpPlaceAbove;if(pOptions.position==='above'){tmpPlaceAbove=true;}else if(pOptions.position==='below'){tmpPlaceAbove=false;}else{tmpPlaceAbove=tmpMenuRect.height>tmpRoomBelow&&tmpRoomAbove>tmpRoomBelow;}// Cap height to whichever side we landed on so the menu can scroll
6722
6912
  // internally instead of running off the screen.
6723
6913
  let tmpCap=Math.max(80,(tmpPlaceAbove?tmpRoomAbove:tmpRoomBelow)-8);pMenu.style.maxHeight=tmpCap+'px';// Horizontal alignment to the anchor, then clamp inside the viewport.
6724
- let tmpLeft;if(pOptions.align==='right'){tmpLeft=pAnchorRect.right-tmpMenuRect.width;}else if(pOptions.align==='center'){tmpLeft=pAnchorRect.left+(pAnchorRect.width-tmpMenuRect.width)/2;}else{tmpLeft=pAnchorRect.left;}tmpLeft=Math.min(tmpLeft,tmpVw-tmpMenuRect.width-4);tmpLeft=Math.max(4,tmpLeft);let tmpTop;if(tmpPlaceAbove){tmpTop=Math.max(4,pAnchorRect.top-tmpMenuRect.height-tmpGap);pMenu.classList.add('pict-modal-dropdown--above');}else{tmpTop=pAnchorRect.bottom+tmpGap;pMenu.classList.remove('pict-modal-dropdown--above');}pMenu.style.left=Math.round(tmpLeft)+'px';pMenu.style.top=Math.round(tmpTop)+'px';}_focusFirstEnabled(pMenu){let tmpItems=pMenu.querySelectorAll('[data-pict-modal-dropdown-item]:not([data-disabled])');if(tmpItems.length){tmpItems[0].focus();}}_focusNeighbor(pMenu,pDirection){let tmpItems=Array.prototype.slice.call(pMenu.querySelectorAll('[data-pict-modal-dropdown-item]:not([data-disabled])'));if(!tmpItems.length){return;}let tmpActive=document.activeElement;let tmpIdx=tmpItems.indexOf(tmpActive);let tmpNext=tmpIdx===-1?pDirection>0?0:tmpItems.length-1:(tmpIdx+pDirection+tmpItems.length)%tmpItems.length;tmpItems[tmpNext].focus();}_escapeHTML(pText){if(typeof pText!=='string'){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=PictModalDropdown;},{}],163:[function(require,module,exports){/**
6914
+ let tmpLeft;if(pOptions.align==='right'){tmpLeft=pAnchorRect.right-tmpMenuRect.width;}else if(pOptions.align==='center'){tmpLeft=pAnchorRect.left+(pAnchorRect.width-tmpMenuRect.width)/2;}else{tmpLeft=pAnchorRect.left;}tmpLeft=Math.min(tmpLeft,tmpVw-tmpMenuRect.width-4);tmpLeft=Math.max(4,tmpLeft);let tmpTop;if(tmpPlaceAbove){tmpTop=Math.max(4,pAnchorRect.top-tmpMenuRect.height-tmpGap);pMenu.classList.add('pict-modal-dropdown--above');}else{tmpTop=pAnchorRect.bottom+tmpGap;pMenu.classList.remove('pict-modal-dropdown--above');}pMenu.style.left=Math.round(tmpLeft)+'px';pMenu.style.top=Math.round(tmpTop)+'px';}_focusFirstEnabled(pMenu){let tmpItems=pMenu.querySelectorAll('[data-pict-modal-dropdown-item]:not([data-disabled])');if(tmpItems.length){tmpItems[0].focus();}}_focusNeighbor(pMenu,pDirection){let tmpItems=Array.prototype.slice.call(pMenu.querySelectorAll('[data-pict-modal-dropdown-item]:not([data-disabled])'));if(!tmpItems.length){return;}let tmpActive=document.activeElement;let tmpIdx=tmpItems.indexOf(tmpActive);let tmpNext=tmpIdx===-1?pDirection>0?0:tmpItems.length-1:(tmpIdx+pDirection+tmpItems.length)%tmpItems.length;tmpItems[tmpNext].focus();}_escapeHTML(pText){if(typeof pText!=='string'){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=PictModalDropdown;},{}],165:[function(require,module,exports){/**
6725
6915
  * Pict-Modal-Overlay
6726
6916
  *
6727
6917
  * Manages a shared backdrop overlay element appended to document.body.
@@ -6743,7 +6933,7 @@ this._currentClickHandler=fOnClick;this._element.onclick=pEvent=>{if(pEvent.targ
6743
6933
  */hide(){this._refCount--;if(this._refCount<=0){this._refCount=0;if(this._element){this._element.classList.remove('pict-modal-visible');let tmpElement=this._element;// Remove after transition
6744
6934
  setTimeout(()=>{if(tmpElement.parentNode){tmpElement.parentNode.removeChild(tmpElement);}},220);this._element=null;this._currentClickHandler=null;}}}/**
6745
6935
  * Force-remove the overlay regardless of reference count.
6746
- */destroy(){this._refCount=0;if(this._element&&this._element.parentNode){this._element.parentNode.removeChild(this._element);}this._element=null;this._currentClickHandler=null;}}module.exports=PictModalOverlay;},{}],164:[function(require,module,exports){/**
6936
+ */destroy(){this._refCount=0;if(this._element&&this._element.parentNode){this._element.parentNode.removeChild(this._element);}this._element=null;this._currentClickHandler=null;}}module.exports=PictModalOverlay;},{}],166:[function(require,module,exports){/**
6747
6937
  * Pict-Modal-Panel
6748
6938
  *
6749
6939
  * Adds resizable and collapsible panel behavior to any DOM element.
@@ -6788,7 +6978,7 @@ let tmpHandle={id:tmpId,collapse:tmpCollapse,expand:tmpExpand,toggle:tmpToggle,s
6788
6978
  * Return a no-op handle for server-side or missing-element cases.
6789
6979
  */_nullHandle(){return{id:0,collapse:()=>{},expand:()=>{},toggle:()=>{},setWidth:()=>{},destroy:()=>{}};}/**
6790
6980
  * Destroy all active panels.
6791
- */destroyAll(){let tmpPanels=this._panels.slice();for(let i=0;i<tmpPanels.length;i++){tmpPanels[i].destroy();}}}module.exports=PictModalPanel;},{}],165:[function(require,module,exports){/**
6981
+ */destroyAll(){let tmpPanels=this._panels.slice();for(let i=0;i<tmpPanels.length;i++){tmpPanels[i].destroy();}}}module.exports=PictModalPanel;},{}],167:[function(require,module,exports){/**
6792
6982
  * Pict-Modal-Shell — viewport-managing layout system for top / right /
6793
6983
  * bottom / left panels around a center.
6794
6984
  *
@@ -7090,7 +7280,7 @@ this._fireHook('OnToggle',this.Collapsed);}_fireHook(pName,pArg){let tmpFn=this.
7090
7280
  class PictModalShellManager{constructor(pModalSection){this._modal=pModalSection;this._shellsByViewport=new WeakMap();}/**
7091
7281
  * Idempotent — calling shell() twice with the same viewport returns
7092
7282
  * the same instance.
7093
- */shell(pViewportSelectorOrEl,pOptions){let tmpEl=typeof pViewportSelectorOrEl==='string'?document.querySelector(pViewportSelectorOrEl):pViewportSelectorOrEl;if(!tmpEl){throw new Error('Pict-Modal-Shell.shell: viewport not found for '+pViewportSelectorOrEl);}let tmpExisting=this._shellsByViewport.get(tmpEl);if(tmpExisting)return tmpExisting;let tmpShell=new PictModalShell(this._modal,tmpEl,pOptions);this._shellsByViewport.set(tmpEl,tmpShell);return tmpShell;}}module.exports=PictModalShellManager;module.exports.PictModalShell=PictModalShell;module.exports.ShellPanel=ShellPanel;module.exports.STORAGE_PREFIX=STORAGE_PREFIX;module.exports.SCHEMA_VERSION=SCHEMA_VERSION;},{}],166:[function(require,module,exports){/**
7283
+ */shell(pViewportSelectorOrEl,pOptions){let tmpEl=typeof pViewportSelectorOrEl==='string'?document.querySelector(pViewportSelectorOrEl):pViewportSelectorOrEl;if(!tmpEl){throw new Error('Pict-Modal-Shell.shell: viewport not found for '+pViewportSelectorOrEl);}let tmpExisting=this._shellsByViewport.get(tmpEl);if(tmpExisting)return tmpExisting;let tmpShell=new PictModalShell(this._modal,tmpEl,pOptions);this._shellsByViewport.set(tmpEl,tmpShell);return tmpShell;}}module.exports=PictModalShellManager;module.exports.PictModalShell=PictModalShell;module.exports.ShellPanel=ShellPanel;module.exports.STORAGE_PREFIX=STORAGE_PREFIX;module.exports.SCHEMA_VERSION=SCHEMA_VERSION;},{}],168:[function(require,module,exports){/**
7094
7284
  * Pict-Modal-Toast
7095
7285
  *
7096
7286
  * Manages toast notification elements with auto-dismiss and stacking.
@@ -7127,7 +7317,7 @@ if(tmpOptions.duration>0){tmpTimeoutHandle=setTimeout(tmpDismiss,tmpOptions.dura
7127
7317
  *
7128
7318
  * @param {string} pText
7129
7319
  * @returns {string}
7130
- */_escapeHTML(pText){if(typeof pText!=='string'){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=PictModalToast;},{}],167:[function(require,module,exports){/**
7320
+ */_escapeHTML(pText){if(typeof pText!=='string'){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=PictModalToast;},{}],169:[function(require,module,exports){/**
7131
7321
  * Pict-Modal-Tooltip
7132
7322
  *
7133
7323
  * Manages simple text and rich HTML tooltips with positioning and auto-flip.
@@ -7176,7 +7366,7 @@ if(tmpPosition==='top'&&tmpTargetRect.top<tmpTooltipRect.height+tmpGap){tmpPosit
7176
7366
  pTooltip.className=pTooltip.className.replace(/pict-modal-tooltip--\w+/,'pict-modal-tooltip--'+tmpPosition);let tmpTop=0;let tmpLeft=0;switch(tmpPosition){case'top':tmpTop=tmpTargetRect.top-tmpTooltipRect.height-tmpGap;tmpLeft=tmpTargetRect.left+tmpTargetRect.width/2-tmpTooltipRect.width/2;break;case'bottom':tmpTop=tmpTargetRect.bottom+tmpGap;tmpLeft=tmpTargetRect.left+tmpTargetRect.width/2-tmpTooltipRect.width/2;break;case'left':tmpTop=tmpTargetRect.top+tmpTargetRect.height/2-tmpTooltipRect.height/2;tmpLeft=tmpTargetRect.left-tmpTooltipRect.width-tmpGap;break;case'right':tmpTop=tmpTargetRect.top+tmpTargetRect.height/2-tmpTooltipRect.height/2;tmpLeft=tmpTargetRect.right+tmpGap;break;}// Clamp to viewport
7177
7367
  tmpLeft=Math.max(4,Math.min(tmpLeft,window.innerWidth-tmpTooltipRect.width-4));tmpTop=Math.max(4,Math.min(tmpTop,window.innerHeight-tmpTooltipRect.height-4));pTooltip.style.top=tmpTop+'px';pTooltip.style.left=tmpLeft+'px';}/**
7178
7368
  * Dismiss all active tooltips.
7179
- */dismissAll(){let tmpTooltips=this._modal._activeTooltips.slice();for(let i=0;i<tmpTooltips.length;i++){tmpTooltips[i].destroy();}}}module.exports=PictModalTooltip;},{}],168:[function(require,module,exports){/**
7369
+ */dismissAll(){let tmpTooltips=this._modal._activeTooltips.slice();for(let i=0;i<tmpTooltips.length;i++){tmpTooltips[i].destroy();}}}module.exports=PictModalTooltip;},{}],170:[function(require,module,exports){/**
7180
7370
  * Pict-Modal-Window
7181
7371
  *
7182
7372
  * Builds custom floating modal windows with arbitrary content and buttons.
@@ -7229,7 +7419,7 @@ if(typeof pOptions.onOpen==='function'){pOptions.onOpen(pDialog);}}/**
7229
7419
  *
7230
7420
  * @param {string} pText
7231
7421
  * @returns {string}
7232
- */_escapeHTML(pText){if(typeof pText!=='string'){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=PictModalWindow;},{}],169:[function(require,module,exports){module.exports={"AutoInitialize":true,"AutoRender":false,"AutoSolveWithApp":false,"ViewIdentifier":"Pict-Section-Modal","OverlayClickDismisses":true,"DefaultConfirmOptions":{"title":"Confirm","confirmLabel":"OK","cancelLabel":"Cancel","dangerous":false,"unbounded":false},"DefaultDoubleConfirmOptions":{"title":"Are you sure?","confirmLabel":"Confirm","cancelLabel":"Cancel","phrasePrompt":"Type \"{phrase}\" to confirm:","confirmPhrase":"","unbounded":false},"DefaultModalOptions":{"title":"","content":"","buttons":[],"closeable":true,"width":"480px","unbounded":false},"DefaultTooltipOptions":{"position":"top","delay":200,"maxWidth":"300px","interactive":false},"DefaultToastOptions":{"type":"info","duration":3000,"position":"top-right","dismissible":true},"DefaultPanelOptions":{"position":"right","width":340,"minWidth":200,"maxWidth":600,"collapsible":true,"collapsed":false,"persist":false,"persistKey":""},"Templates":[],"Renderables":[],"CSS":/*css*/"\n/* pict-section-modal */\n.pict-modal-root\n{\n\t/* Defaults are routed through pict-provider-theme tokens so apps\n\t using the theme provider get themed modals automatically. Each\n\t var() carries its original hex as the fallback so apps that don't\n\t install pict-provider-theme look exactly as before. Apps may\n\t still override any --pict-modal-* var directly to layer over the\n\t theme-driven defaults. */\n\n\t/* Overlay */\n\t--pict-modal-overlay-bg: rgba(0, 0, 0, 0.5);\n\n\t/* Dialog */\n\t--pict-modal-bg: var(--theme-color-background-panel, #ffffff);\n\t--pict-modal-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-border: var(--theme-color-border-default, #e0e0e0);\n\t--pict-modal-border-radius: 8px;\n\t--pict-modal-shadow: 0 4px 24px rgba(0, 0, 0, 0.15);\n\t--pict-modal-header-bg: var(--theme-color-background-secondary, #f5f5f5);\n\t--pict-modal-header-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-header-border: var(--theme-color-border-default, #e0e0e0);\n\n\t/* Buttons */\n\t--pict-modal-btn-bg: var(--theme-color-background-secondary, #e0e0e0);\n\t--pict-modal-btn-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-btn-hover-bg: var(--theme-color-background-hover, #d0d0d0);\n\t--pict-modal-btn-primary-bg: var(--theme-color-brand-primary, #2563eb);\n\t--pict-modal-btn-primary-fg: var(--theme-color-text-on-brand, #ffffff);\n\t--pict-modal-btn-primary-hover-bg:var(--theme-color-brand-primary-hover,#1d4ed8);\n\t--pict-modal-btn-danger-bg: var(--theme-color-status-error, #dc2626);\n\t--pict-modal-btn-danger-fg: var(--theme-color-text-on-brand, #ffffff);\n\t--pict-modal-btn-danger-hover-bg: var(--theme-color-status-error, #b91c1c);\n\t--pict-modal-btn-border-radius: 4px;\n\n\t/* Toast */\n\t--pict-modal-toast-bg: var(--theme-color-background-panel, #333333);\n\t--pict-modal-toast-fg: var(--theme-color-text-primary, #ffffff);\n\t--pict-modal-toast-success-bg: var(--theme-color-status-success, #16a34a);\n\t--pict-modal-toast-warning-bg: var(--theme-color-status-warning, #d97706);\n\t--pict-modal-toast-error-bg: var(--theme-color-status-error, #dc2626);\n\t--pict-modal-toast-info-bg: var(--theme-color-status-info, #2563eb);\n\t--pict-modal-toast-border-radius: 6px;\n\t--pict-modal-toast-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);\n\n\t/* Tooltip */\n\t--pict-modal-tooltip-bg: var(--theme-color-background-tertiary,#1a1a1a);\n\t--pict-modal-tooltip-fg: var(--theme-color-text-primary, #ffffff);\n\t--pict-modal-tooltip-border-radius:4px;\n\t--pict-modal-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n\n\t/* Dropdown */\n\t--pict-modal-dropdown-bg: var(--theme-color-background-panel, #ffffff);\n\t--pict-modal-dropdown-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-dropdown-border: var(--theme-color-border-default, #e0e0e0);\n\t--pict-modal-dropdown-border-radius: 6px;\n\t--pict-modal-dropdown-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);\n\t--pict-modal-dropdown-item-hover-bg: var(--theme-color-background-hover, rgba(37, 99, 235, 0.10));\n\t--pict-modal-dropdown-item-hover-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-dropdown-item-disabled-fg: var(--theme-color-text-muted, #9aa0a6);\n\t--pict-modal-dropdown-separator: var(--theme-color-border-light, #e8e8e8);\n\t--pict-modal-dropdown-header-fg: var(--theme-color-text-secondary, #6b7280);\n\t--pict-modal-dropdown-danger-fg: var(--theme-color-status-error, #dc2626);\n\t--pict-modal-dropdown-primary-fg: var(--theme-color-brand-primary, #2563eb);\n\n\t/* Typography */\n\t--pict-modal-font-family: var(--theme-typography-family-sans, system-ui, -apple-system, sans-serif);\n\t--pict-modal-font-size: 14px;\n\t--pict-modal-title-font-size: 16px;\n\n\t/* Animation */\n\t--pict-modal-transition-duration: 200ms;\n}\n\n/* Overlay */\n.pict-modal-overlay\n{\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1000;\n\tbackground: var(--pict-modal-overlay-bg);\n\topacity: 0;\n\ttransition: opacity var(--pict-modal-transition-duration) ease;\n}\n\n.pict-modal-overlay.pict-modal-visible\n{\n\topacity: 1;\n}\n\n/* Dialog */\n.pict-modal-dialog\n{\n\tposition: fixed;\n\tz-index: 1010;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%) translateY(-20px);\n\topacity: 0;\n\ttransition: opacity var(--pict-modal-transition-duration) ease,\n\t transform var(--pict-modal-transition-duration) ease;\n\n\tmax-width: 90vw;\n\tmax-height: 90vh;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\tbackground: var(--pict-modal-bg);\n\tcolor: var(--pict-modal-fg);\n\tborder: 1px solid var(--pict-modal-border);\n\tborder-radius: var(--pict-modal-border-radius);\n\tbox-shadow: var(--pict-modal-shadow);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n}\n\n.pict-modal-dialog.pict-modal-visible\n{\n\topacity: 1;\n\ttransform: translate(-50%, -50%) translateY(0);\n}\n\n/* Unbounded modifier \u2014 lets callers opt out of the 90vh/90vw viewport cap.\n Use with caution: content taller than the viewport will push buttons\n below the fold. */\n.pict-modal-dialog.pict-modal-dialog--unbounded\n{\n\tmax-height: none;\n\tmax-width: none;\n}\n\n.pict-modal-dialog-header\n{\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 12px 16px;\n\tbackground: var(--pict-modal-header-bg);\n\tcolor: var(--pict-modal-header-fg);\n\tborder-bottom: 1px solid var(--pict-modal-header-border);\n\tborder-radius: var(--pict-modal-border-radius) var(--pict-modal-border-radius) 0 0;\n}\n\n.pict-modal-dialog-title\n{\n\tfont-size: var(--pict-modal-title-font-size);\n\tfont-weight: 600;\n}\n\n.pict-modal-dialog-close\n{\n\tbackground: none;\n\tborder: none;\n\tfont-size: 20px;\n\tcursor: pointer;\n\tcolor: var(--pict-modal-fg);\n\tpadding: 0 4px;\n\tline-height: 1;\n\topacity: 0.6;\n}\n\n.pict-modal-dialog-close:hover\n{\n\topacity: 1;\n}\n\n.pict-modal-dialog-body\n{\n\tpadding: 16px;\n\toverflow-y: auto;\n\tflex: 1;\n}\n\n.pict-modal-dialog-footer\n{\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tgap: 8px;\n\tpadding: 12px 16px;\n\tborder-top: 1px solid var(--pict-modal-border);\n}\n\n/* Buttons */\n.pict-modal-btn\n{\n\tpadding: 8px 16px;\n\tborder: none;\n\tborder-radius: var(--pict-modal-btn-border-radius);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n\tcursor: pointer;\n\tbackground: var(--pict-modal-btn-bg);\n\tcolor: var(--pict-modal-btn-fg);\n\ttransition: background var(--pict-modal-transition-duration) ease;\n}\n\n.pict-modal-btn:hover\n{\n\tbackground: var(--pict-modal-btn-hover-bg);\n}\n\n.pict-modal-btn:disabled\n{\n\topacity: 0.5;\n\tcursor: not-allowed;\n}\n\n.pict-modal-btn--primary\n{\n\tbackground: var(--pict-modal-btn-primary-bg);\n\tcolor: var(--pict-modal-btn-primary-fg);\n}\n\n.pict-modal-btn--primary:hover\n{\n\tbackground: var(--pict-modal-btn-primary-hover-bg);\n}\n\n.pict-modal-btn--danger\n{\n\tbackground: var(--pict-modal-btn-danger-bg);\n\tcolor: var(--pict-modal-btn-danger-fg);\n}\n\n.pict-modal-btn--danger:hover\n{\n\tbackground: var(--pict-modal-btn-danger-hover-bg);\n}\n\n/* Double confirm input */\n.pict-modal-confirm-input\n{\n\twidth: 100%;\n\tpadding: 8px 12px;\n\tmargin-top: 12px;\n\tborder: 1px solid var(--pict-modal-border);\n\tborder-radius: var(--pict-modal-btn-border-radius);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n\tbox-sizing: border-box;\n}\n\n.pict-modal-confirm-input:focus\n{\n\toutline: 2px solid var(--pict-modal-btn-primary-bg);\n\toutline-offset: -1px;\n}\n\n.pict-modal-confirm-prompt\n{\n\tmargin-top: 12px;\n\tfont-size: 13px;\n\tcolor: var(--pict-modal-fg);\n\topacity: 0.7;\n}\n\n/* Toast container */\n.pict-modal-toast-container\n{\n\tposition: fixed;\n\tz-index: 1030;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n\tpointer-events: none;\n\tmax-width: 400px;\n}\n\n.pict-modal-toast-container--top-right\n{\n\ttop: 16px;\n\tright: 16px;\n}\n\n.pict-modal-toast-container--top-left\n{\n\ttop: 16px;\n\tleft: 16px;\n}\n\n.pict-modal-toast-container--bottom-right\n{\n\tbottom: 16px;\n\tright: 16px;\n}\n\n.pict-modal-toast-container--bottom-left\n{\n\tbottom: 16px;\n\tleft: 16px;\n}\n\n.pict-modal-toast-container--top-center\n{\n\ttop: 16px;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n}\n\n.pict-modal-toast-container--bottom-center\n{\n\tbottom: 16px;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n}\n\n/* Toast */\n.pict-modal-toast\n{\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\tpadding: 12px 16px;\n\tborder-radius: var(--pict-modal-toast-border-radius);\n\tbox-shadow: var(--pict-modal-toast-shadow);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n\tbackground: var(--pict-modal-toast-bg);\n\tcolor: var(--pict-modal-toast-fg);\n\tpointer-events: auto;\n\topacity: 0;\n\ttransform: translateX(100%);\n\ttransition: opacity var(--pict-modal-transition-duration) ease,\n\t transform var(--pict-modal-transition-duration) ease;\n}\n\n.pict-modal-toast.pict-modal-visible\n{\n\topacity: 1;\n\ttransform: translateX(0);\n}\n\n.pict-modal-toast.pict-modal-toast-exit\n{\n\topacity: 0;\n\ttransform: translateX(100%);\n}\n\n.pict-modal-toast--info\n{\n\tbackground: var(--pict-modal-toast-info-bg);\n}\n\n.pict-modal-toast--success\n{\n\tbackground: var(--pict-modal-toast-success-bg);\n}\n\n.pict-modal-toast--warning\n{\n\tbackground: var(--pict-modal-toast-warning-bg);\n}\n\n.pict-modal-toast--error\n{\n\tbackground: var(--pict-modal-toast-error-bg);\n}\n\n.pict-modal-toast-message\n{\n\tflex: 1;\n}\n\n.pict-modal-toast-dismiss\n{\n\tbackground: none;\n\tborder: none;\n\tcolor: inherit;\n\tfont-size: 18px;\n\tcursor: pointer;\n\tpadding: 0 2px;\n\tline-height: 1;\n\topacity: 0.7;\n}\n\n.pict-modal-toast-dismiss:hover\n{\n\topacity: 1;\n}\n\n/* Tooltip */\n.pict-modal-tooltip\n{\n\tposition: fixed;\n\tz-index: 1020;\n\tpadding: 6px 10px;\n\tborder-radius: var(--pict-modal-tooltip-border-radius);\n\tbox-shadow: var(--pict-modal-tooltip-shadow);\n\tbackground: var(--pict-modal-tooltip-bg);\n\tcolor: var(--pict-modal-tooltip-fg);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: 13px;\n\tpointer-events: none;\n\topacity: 0;\n\ttransition: opacity var(--pict-modal-transition-duration) ease;\n\twhite-space: normal;\n\tword-wrap: break-word;\n}\n\n.pict-modal-tooltip.pict-modal-tooltip-interactive\n{\n\tpointer-events: auto;\n}\n\n.pict-modal-tooltip.pict-modal-visible\n{\n\topacity: 1;\n}\n\n.pict-modal-tooltip-arrow\n{\n\tposition: absolute;\n\twidth: 8px;\n\theight: 8px;\n\tbackground: var(--pict-modal-tooltip-bg);\n\ttransform: rotate(45deg);\n}\n\n.pict-modal-tooltip--top .pict-modal-tooltip-arrow\n{\n\tbottom: -4px;\n\tleft: 50%;\n\tmargin-left: -4px;\n}\n\n.pict-modal-tooltip--bottom .pict-modal-tooltip-arrow\n{\n\ttop: -4px;\n\tleft: 50%;\n\tmargin-left: -4px;\n}\n\n.pict-modal-tooltip--left .pict-modal-tooltip-arrow\n{\n\tright: -4px;\n\ttop: 50%;\n\tmargin-top: -4px;\n}\n\n.pict-modal-tooltip--right .pict-modal-tooltip-arrow\n{\n\tleft: -4px;\n\ttop: 50%;\n\tmargin-top: -4px;\n}\n\n/* \u2500\u2500 Dropdown \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Anchor-positioned menu (no overlay). Used for nav menus and\n \"split button\" addenda \u2014 see Pict-Modal-Dropdown.js.\n*/\n.pict-modal-dropdown\n{\n\tposition: fixed;\n\tz-index: 1025;\n\tmin-width: 160px;\n\tmax-width: 360px;\n\tmax-height: 60vh;\n\toverflow-y: auto;\n\tbackground: var(--pict-modal-dropdown-bg);\n\tcolor: var(--pict-modal-dropdown-fg);\n\tborder: 1px solid var(--pict-modal-dropdown-border);\n\tborder-radius: var(--pict-modal-dropdown-border-radius);\n\tbox-shadow: var(--pict-modal-dropdown-shadow);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n\tpadding: 4px 0;\n\topacity: 0;\n\ttransform: translateY(-4px);\n\ttransition: opacity var(--pict-modal-transition-duration) ease,\n\t transform var(--pict-modal-transition-duration) ease;\n}\n\n.pict-modal-dropdown.pict-modal-dropdown--above { transform: translateY(4px); }\n\n.pict-modal-dropdown.pict-modal-visible\n{\n\topacity: 1;\n\ttransform: translateY(0);\n}\n\n.pict-modal-dropdown-item\n{\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 7px 14px;\n\tcursor: pointer;\n\tuser-select: none;\n\tcolor: inherit;\n\toutline: none;\n}\n\n.pict-modal-dropdown-item:hover,\n.pict-modal-dropdown-item:focus\n{\n\tbackground: var(--pict-modal-dropdown-item-hover-bg);\n\tcolor: var(--pict-modal-dropdown-item-hover-fg);\n}\n\n.pict-modal-dropdown-item--disabled\n{\n\tcursor: not-allowed;\n\tcolor: var(--pict-modal-dropdown-item-disabled-fg);\n}\n\n.pict-modal-dropdown-item--disabled:hover,\n.pict-modal-dropdown-item--disabled:focus\n{\n\tbackground: transparent;\n\tcolor: var(--pict-modal-dropdown-item-disabled-fg);\n}\n\n.pict-modal-dropdown-item--primary { color: var(--pict-modal-dropdown-primary-fg); }\n.pict-modal-dropdown-item--danger { color: var(--pict-modal-dropdown-danger-fg); }\n\n.pict-modal-dropdown-item-icon\n{\n\tflex: 0 0 auto;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 16px;\n\theight: 16px;\n}\n\n.pict-modal-dropdown-item-icon svg { width: 100%; height: 100%; display: block; }\n\n.pict-modal-dropdown-item-label { flex: 1 1 auto; min-width: 0; }\n\n.pict-modal-dropdown-item-hint\n{\n\tflex: 0 0 auto;\n\tfont-size: 11px;\n\topacity: 0.6;\n\tmargin-left: 12px;\n}\n\n.pict-modal-dropdown-separator\n{\n\theight: 1px;\n\tbackground: var(--pict-modal-dropdown-separator);\n\tmargin: 4px 0;\n}\n\n.pict-modal-dropdown-header\n{\n\tpadding: 6px 14px 2px;\n\tfont-size: 11px;\n\tfont-weight: 600;\n\ttext-transform: uppercase;\n\tletter-spacing: 0.04em;\n\tcolor: var(--pict-modal-dropdown-header-fg);\n}\n\n/* \u2500\u2500 Resizable / Collapsible Panels \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pict-panel\n{\n\tposition: relative;\n\ttransition: width 0.2s ease;\n\tflex-shrink: 0;\n\toverflow: visible;\n}\n.pict-panel-collapsed\n{\n\twidth: 0 !important;\n\tmin-width: 0 !important;\n\toverflow: visible;\n}\n.pict-panel-collapsed > *:not(.pict-panel-edge)\n{\n\tdisplay: none;\n}\n\n/* Edge container \u2014 zero-width flex sibling of the panel.\n Sits next to the panel in the flex layout; children\n use absolute positioning to overlap the panel boundary. */\n.pict-panel-edge\n{\n\tposition: relative;\n\twidth: 0;\n\tflex-shrink: 0;\n\tz-index: 50;\n\toverflow: visible;\n}\n\n/* Resize handle \u2014 thin strip on the panel boundary */\n.pict-panel-resize\n{\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\twidth: 4px;\n\tcursor: col-resize;\n\tbackground: transparent;\n\ttransition: background 0.15s, width 0.15s;\n}\n.pict-panel-edge-right .pict-panel-resize\n{\n\tright: 0;\n\tborder-right: 1px solid var(--pict-panel-border, #DDD6CA);\n}\n.pict-panel-edge-left .pict-panel-resize\n{\n\tleft: 0;\n\tborder-left: 1px solid var(--pict-panel-border, #DDD6CA);\n}\n.pict-panel-resize:hover,\n.pict-panel-edge:hover .pict-panel-resize\n{\n\twidth: 5px;\n\tbackground: var(--pict-panel-accent, #2E7D74);\n\topacity: 0.5;\n}\n.pict-panel-resize.dragging\n{\n\twidth: 5px;\n\tbackground: var(--pict-panel-accent, #2E7D74);\n\topacity: 1;\n\ttransition: none;\n}\n.pict-panel-edge-collapsed .pict-panel-resize\n{\n\tdisplay: none;\n}\n\n/* Collapse tab \u2014 tucked sliver at rest, slides out on hover */\n.pict-panel-tab\n{\n\tposition: absolute;\n\ttop: 8px;\n\twidth: 8px;\n\theight: 24px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow: hidden;\n\tbackground: var(--pict-panel-border, #DDD6CA);\n\tborder: 1px solid var(--pict-panel-border, #DDD6CA);\n\tcursor: pointer;\n\tcolor: var(--pict-panel-fg, #8A7F72);\n\tfont-size: 10px;\n\tline-height: 1;\n\topacity: 0.5;\n\ttransition: opacity 0.25s, width 0.2s ease, height 0.2s ease, left 0.2s ease, right 0.2s ease, background 0.2s;\n\tz-index: 51;\n}\n.pict-panel-edge:hover .pict-panel-tab,\n.pict-panel-tab:hover\n{\n\twidth: 20px;\n\theight: 32px;\n\topacity: 1;\n\toverflow: visible;\n\tbackground: var(--pict-panel-bg, #FAF8F4);\n}\n/* Right panel: tab to the left of the edge */\n.pict-panel-edge-right .pict-panel-tab\n{\n\tright: 0;\n\tborder-right: none;\n\tborder-radius: 4px 0 0 4px;\n}\n.pict-panel-edge-right:hover .pict-panel-tab,\n.pict-panel-edge-right .pict-panel-tab:hover\n{\n\tright: 0;\n}\n/* Left panel: tab to the right of the edge */\n.pict-panel-edge-left .pict-panel-tab\n{\n\tleft: 0;\n\tborder-left: none;\n\tborder-radius: 0 4px 4px 0;\n}\n.pict-panel-edge-left:hover .pict-panel-tab,\n.pict-panel-edge-left .pict-panel-tab:hover\n{\n\tleft: 0;\n}\n/* When collapsed \u2014 more visible */\n.pict-panel-edge-collapsed .pict-panel-tab\n{\n\twidth: 10px;\n\theight: 28px;\n\topacity: 0.6;\n}\n.pict-panel-edge-collapsed .pict-panel-tab:hover,\n.pict-panel-edge-collapsed:hover .pict-panel-tab\n{\n\twidth: 20px;\n\theight: 32px;\n\topacity: 1;\n\toverflow: visible;\n\tbackground: var(--pict-panel-bg, #FAF8F4);\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n * Pict-Modal-Shell \u2014 viewport-managing layout for top / right /\n * bottom / left panels around a center.\n * \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.pict-modal-shell-host { display: block; height: 100%; min-height: 0; }\n.pict-modal-shell\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 0;\n\tposition: relative;\n\tcolor: var(--pict-modal-fg, var(--theme-color-text-primary, #1a1a1a));\n\tbackground: var(--theme-color-background-primary, transparent);\n}\n.pict-modal-shell-row { display: flex; min-width: 0; min-height: 0; }\n/* \"First added = at the edge\" convention is held by reversing the\n flex-direction on the bottom row + right side. That way, for ALL\n four sides, calling addPanel() N times stacks panel #1 against\n the viewport edge, panel #2 just inside it, panel #3 further in,\n and so on. Without these reverses, top + left worked that way but\n bottom + right inverted (first-added at content side, last-added\n at edge), which surprised callers. */\n.pict-modal-shell-row-top { flex: 0 0 auto; flex-direction: column; }\n.pict-modal-shell-row-bottom { flex: 0 0 auto; flex-direction: column-reverse; }\n.pict-modal-shell-row-middle\n{\n\tflex: 1 1 0;\n\tflex-direction: row;\n\tmin-height: 0;\n\tposition: relative;\n}\n.pict-modal-shell-side\n{\n\tdisplay: flex;\n\tflex: 0 0 auto;\n\tmin-height: 0;\n}\n.pict-modal-shell-side-left { flex-direction: row; }\n.pict-modal-shell-side-right { flex-direction: row-reverse; }\n.pict-modal-shell-center\n{\n\tflex: 1 1 0;\n\tmin-width: 0;\n\tmin-height: 0;\n\toverflow: auto;\n\tposition: relative;\n}\n.pict-modal-shell-center-content\n{\n\tmin-height: 100%;\n}\n/* Center column gains this class when at least one Scope:'center'\n panel is added. The center stops scrolling internally \u2014 that job\n moves to the content destination \u2014 and switches to a vertical flex\n so the destination and any inner panels stack cleanly. */\n.pict-modal-shell-center.pict-modal-shell-center-with-inner-panel\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n.pict-modal-shell-center.pict-modal-shell-center-with-inner-panel > .pict-modal-shell-center-content\n{\n\tflex: 1 1 0;\n\tmin-height: 0;\n\toverflow: auto;\n}\n.pict-modal-shell-center.pict-modal-shell-center-with-inner-panel > .pict-modal-shell-panel\n{\n\tflex: 0 0 auto;\n\twidth: 100%;\n}\n\n/* Panels \u2014 base */\n.pict-modal-shell-panel\n{\n\t/* How far the collapse-tab's panel-bg \"merge bar\" extends INTO\n\t the panel past the tab's geometric edge. Painted via box-shadow\n\t on the tab (no DOM impact), it masks any 1px theme border on an\n\t inner element, content padding offset, or resize-handle hover\n\t bleed in the strip between the tab's panel-facing edge and the\n\t first real pixel of panel content. Consumers can bump this for\n\t themes with thicker (2+px) inner borders. */\n\t--pict-modal-collapse-tab-merge: 2px;\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\tbox-sizing: border-box;\n\tbackground: var(--pict-modal-bg, var(--theme-color-background-panel, #ffffff));\n\tcolor: inherit;\n\tmin-width: 0;\n\tmin-height: 0;\n\ttransition: width 140ms ease, height 140ms ease;\n}\n.pict-modal-shell-panel-content\n{\n\tflex: 1 1 auto;\n\tmin-width: 0;\n\tmin-height: 0;\n\toverflow: auto;\n}\n/* Fixed-mode panels are pure chrome (topbars, status rows). Their\n content should fit the configured Size exactly \u2014 never scroll. The\n 1px border that .pict-modal-shell-panel-mode-fixed adds on the\n inner edge shaves 1px off the content's available height, which\n then triggers a sliver-scrollbar on any inner widget with\n min-height matching the panel Size. overflow:hidden here suppresses\n that without affecting resizable/collapsible panels (sidebars,\n drawers) where scrollable content is the whole point. */\n.pict-modal-shell-panel-mode-fixed > .pict-modal-shell-panel-content\n{\n\toverflow: hidden;\n}\n.pict-modal-shell-panel-content-inner\n{\n\tmin-height: 100%;\n}\n/* Panel boundary \u2014 fixed-mode panels get a hairline border for explicit\n demarcation. Collapsible / resizable panels DROP the boundary border\n (background contrast separates them from the center anyway) so the\n collapse tab can pull out cleanly without a hairline cutting across\n it. The host stylesheet still gets full control via the panel's own\n background. */\n.pict-modal-shell-panel-mode-fixed.pict-modal-shell-panel-top { border-bottom: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #e0e0e0)); }\n.pict-modal-shell-panel-mode-fixed.pict-modal-shell-panel-bottom { border-top: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #e0e0e0)); }\n.pict-modal-shell-panel-mode-fixed.pict-modal-shell-panel-left { border-right: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #e0e0e0)); }\n.pict-modal-shell-panel-mode-fixed.pict-modal-shell-panel-right { border-left: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #e0e0e0)); }\n\n/* Resize handle \u2014 absolute on the inner edge of each panel. */\n.pict-modal-shell-panel-resize-handle\n{\n\tposition: absolute;\n\tbackground: transparent;\n\tz-index: 5;\n\ttransition: background-color 120ms ease;\n}\n/* Resize handle hover \u2014 use the active brand's mode-aware primary\n color (set by pict-section-theme's Brand provider as\n --brand-color-primary-mode) so the resize affordance picks up the\n app's wordmark color. Falls back to the theme's brand-primary\n token if no brand is registered. */\n.pict-modal-shell-panel-resize-handle:hover\n{\n\tbackground: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\topacity: 0.4;\n}\n.pict-modal-shell-panel-left .pict-modal-shell-panel-resize-handle { right: -3px; top: 0; bottom: 0; width: 6px; cursor: col-resize; }\n.pict-modal-shell-panel-right .pict-modal-shell-panel-resize-handle { left: -3px; top: 0; bottom: 0; width: 6px; cursor: col-resize; }\n.pict-modal-shell-panel-top .pict-modal-shell-panel-resize-handle { bottom:-3px; left: 0; right: 0; height: 6px; cursor: row-resize; }\n.pict-modal-shell-panel-bottom .pict-modal-shell-panel-resize-handle { top: -3px; left: 0; right: 0; height: 6px; cursor: row-resize; }\n\n/* Collapse tab \u2014 slim sliver flush on the panel's OUTER boundary\n (where the resize handle sits), modelled on retold-content-system's\n sidebar tab. At rest it's a 6\xD728 px sliver; hover expands to\n 18\xD736 px without overlapping the panel's own content. The tab is\n positioned with its center on the boundary so half pokes into the\n adjacent area \u2014 the only place we can safely take over without\n stepping on app UI inside the panel. Title text only renders in the\n collapsed state where there's room for it. */\n.pict-modal-shell-panel-collapse-tab\n{\n\tposition: absolute;\n\tdisplay: flex; /* not inline-flex \u2014 avoids baseline alignment quirks */\n\talign-items: center;\n\tjustify-content: center;\n\toverflow: hidden;\n\tborder: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #d0d7de));\n\tbackground: var(--pict-modal-bg, var(--theme-color-background-panel, #ffffff));\n\tcolor: var(--theme-color-text-muted, #6b7280);\n\tfont: inherit;\n\tfont-size: 10px;\n\tletter-spacing: 0.4px;\n\ttext-transform: uppercase;\n\tcursor: pointer;\n\tz-index: 50;\n\topacity: 0.55;\n\tpadding: 0;\n\tbox-sizing: border-box;\n\tline-height: 0; /* keep child boxes from inflating around the rotated chevron */\n\t/* Geometry (width/height/right/left) is intentionally NOT animated.\n\t Sliding the tab's outer edge inward on hover-out makes it look like\n\t the tab is \"sliding into\" the panel content \u2014 weird visual.\n\t Snapping the size change instead, and animating only the appearance\n\t (opacity/color/shadow), gives a clean fade-in/out with no boundary\n\t weirdness. */\n\ttransition: opacity 160ms ease,\n\t background-color 160ms ease, color 160ms ease,\n\t border-color 160ms ease, box-shadow 160ms ease;\n}\n/* Hover state pulls accent color from the active brand (mode-aware,\n so it's legible in both light + dark) with theme brand-primary as\n fallback. The whole point of brand colors is that they show up\n across the app's chrome. */\n.pict-modal-shell-panel-collapse-tab:hover,\n.pict-modal-shell-panel:hover > .pict-modal-shell-panel-collapse-tab\n{\n\topacity: 1;\n\tcolor: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\tborder-color: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n}\n/* Drop shadow casts AWAY from the panel so the tab feels pulled out\n (extension of the panel) rather than floating across the boundary.\n The tab itself is now positioned fully OUTSIDE the panel boundary\n (see the per-side rules below), so we don't need a merge-bar shadow\n to mask any in-panel overlap \u2014 only the drop shadow remains. */\n.pict-modal-shell-panel-left:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-left > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbox-shadow: 3px 0 6px -2px rgba(0, 0, 0, 0.18);\n}\n.pict-modal-shell-panel-right:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-right > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbox-shadow: -3px 0 6px -2px rgba(0, 0, 0, 0.18);\n}\n.pict-modal-shell-panel-top:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-top > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbox-shadow: 0 3px 6px -2px rgba(0, 0, 0, 0.18);\n}\n.pict-modal-shell-panel-bottom:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-bottom > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbox-shadow: 0 -3px 6px -2px rgba(0, 0, 0, 0.18);\n}\n\n/* Per-side base positioning \u2014 the tab lives entirely OUTSIDE the\n panel's outer boundary. Its panel-facing edge touches the boundary\n (offset = -tabThickness) and the rest of the tab pokes out into the\n adjacent area (center / sibling panel). Border on the panel-facing\n edge is dropped so the tab looks attached to the panel rather than\n floating beside it.\n Why fully-outside? Earlier iterations had the tab straddling the\n boundary (1px inside + 4px outside) with a panel-bg-colored merge-bar\n masking the in-panel half \u2014 that worked geometrically but visually\n read as \"tab pinned into the panel,\" and any rendering inside the\n panel (especially custom borders or hover bleeds) could clip against\n the in-panel half. Fully-external positioning eliminates the overlap\n class of bugs and lets the tab live entirely in the adjacent area\n where there's no app content to step on. */\n.pict-modal-shell-panel-left > .pict-modal-shell-panel-collapse-tab\n{\n\tright: -6px; top: 14px; width: 6px; height: 28px;\n\tborder-radius: 0 4px 4px 0;\n\tborder-left: 0;\n}\n.pict-modal-shell-panel-right > .pict-modal-shell-panel-collapse-tab\n{\n\tleft: -6px; top: 14px; width: 6px; height: 28px;\n\tborder-radius: 4px 0 0 4px;\n\tborder-right: 0;\n}\n.pict-modal-shell-panel-top > .pict-modal-shell-panel-collapse-tab\n{\n\tbottom: -6px; right: 14px; width: 28px; height: 6px;\n\tborder-radius: 0 0 4px 4px;\n\tborder-top: 0;\n}\n.pict-modal-shell-panel-bottom > .pict-modal-shell-panel-collapse-tab\n{\n\ttop: -6px; right: 14px; width: 28px; height: 6px;\n\tborder-radius: 4px 4px 0 0;\n\tborder-bottom: 0;\n}\n\n/* Hover: tab grows OUTWARD into the adjacent area. The panel-facing\n edge stays glued to the boundary (offset = -tabThickness), so the\n tab still looks attached on hover \u2014 only its outer dimension grows.\n For side panels the height also grows (28 \u2192 36) downward; for top\n /bottom panels the width grows (28 \u2192 36) \u2014 see the next block for\n the perpendicular-axis offsets. */\n.pict-modal-shell-panel-left:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-left > .pict-modal-shell-panel-collapse-tab:hover\n{\n\twidth: 18px; height: 36px; right: -18px;\n}\n.pict-modal-shell-panel-right:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-right > .pict-modal-shell-panel-collapse-tab:hover\n{\n\twidth: 18px; height: 36px; left: -18px;\n}\n.pict-modal-shell-panel-top:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-top > .pict-modal-shell-panel-collapse-tab:hover\n{\n\twidth: 36px; height: 18px; bottom: -18px;\n}\n.pict-modal-shell-panel-bottom:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-bottom > .pict-modal-shell-panel-collapse-tab:hover\n{\n\twidth: 36px; height: 18px; top: -18px;\n}\n\n.pict-modal-shell-panel-collapse-tab-title { display: none; white-space: nowrap; }\n\n/* Auto-generated chevron glyph inside the tab \u2014 only visible once the\n tab is wide / tall enough to show it (i.e. hover state, or when the\n panel is collapsed). Direction follows side + state.\n Sized 5\xD75 (down from 6) so even with rotation the visual stays\n well clear of the tab's overflow:hidden bounds at 18\xD736 hover and\n the 24px collapsed tab strip width. flex-shrink:0 ensures the\n pseudo never collapses to zero in tight tab dimensions. */\n.pict-modal-shell-panel-collapse-tab::before\n{\n\tcontent: '';\n\tdisplay: block;\n\twidth: 5px; height: 5px;\n\tflex-shrink: 0;\n\topacity: 0;\n\tborder-right: 1.5px solid currentColor;\n\tborder-bottom: 1.5px solid currentColor;\n\ttransform: rotate(135deg);\n\ttransform-origin: center center;\n\ttransition: opacity 160ms ease, transform 160ms ease;\n}\n.pict-modal-shell-panel:hover > .pict-modal-shell-panel-collapse-tab::before,\n.pict-modal-shell-panel-collapse-tab:hover::before,\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before\n{\n\topacity: 1;\n}\n.pict-modal-shell-panel-right > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(-45deg); }\n.pict-modal-shell-panel-top > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(-135deg); }\n.pict-modal-shell-panel-bottom > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(45deg); }\n.pict-modal-shell-panel-left.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(-45deg); }\n.pict-modal-shell-panel-right.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(135deg); }\n.pict-modal-shell-panel-top.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(45deg); }\n.pict-modal-shell-panel-bottom.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(-135deg); }\n\n/* Collapsed state \u2014 content disappears, only the collapse tab remains. */\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-content\n{\n\tdisplay: none;\n}\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-resize-handle\n{\n\tdisplay: none;\n}\n.pict-modal-shell-panel-left.pict-modal-shell-panel-collapsed,\n.pict-modal-shell-panel-right.pict-modal-shell-panel-collapsed\n{\n\t/* When collapsed, side panels rotate the title for vertical reading. */\n\toverflow: hidden;\n}\n/* When collapsed: the entire panel becomes the tab strip \u2014 full width\n for sides, full height for top/bottom \u2014 with the title visible\n vertically (sides) or horizontally (top/bottom). The little sliver\n tab on the boundary disappears (we don't need it anymore \u2014 clicking\n anywhere on the panel toggles it back open). */\n.pict-modal-shell-panel-left.pict-modal-shell-panel-collapsed,\n.pict-modal-shell-panel-right.pict-modal-shell-panel-collapsed,\n.pict-modal-shell-panel-top.pict-modal-shell-panel-collapsed,\n.pict-modal-shell-panel-bottom.pict-modal-shell-panel-collapsed\n{\n\toverflow: hidden;\n}\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab\n{\n\t/* Promote the tab to FILL the collapsed panel (not just hug its\n\t content) so the centered chevron + title group sits in the middle\n\t of the panel. Without explicit width/height: 100%, the position:\n\t absolute element shrinks to its natural content size and the\n\t group ends up flush at the top of the panel \u2014 where the chevron\n\t gets clipped by the topbar. */\n\tposition: absolute !important;\n\ttop: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground: transparent;\n\topacity: 0.85;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 8px;\n\tpadding: 12px 4px; /* keeps chevron + title clear of edges */\n\tbox-shadow: none;\n\tcolor: var(--theme-color-text-muted, #6b7280);\n\tbox-sizing: border-box;\n\toverflow: hidden;\n}\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbackground: var(--theme-color-background-hover, var(--pict-modal-bg, #fff));\n\tcolor: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\tbox-shadow: none;\n}\n/* Side panels (collapsed): rotate the title for vertical reading. */\n.pict-modal-shell-panel-left.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-right.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab\n{\n\twriting-mode: vertical-rl;\n\ttext-orientation: mixed;\n}\n.pict-modal-shell-panel-collapsed .pict-modal-shell-panel-collapse-tab-title\n{\n\tdisplay: inline;\n}\n\n/* Hidden panels \u2014 when Hidden:true is passed to addPanel, the collapsed\n state has zero footprint: no collapse tab (the tab is never built),\n the panel root is display:none, and the resize handle vanishes. The\n only path to the open state is a programmatic expand()/toggle() from\n somewhere else in the app (e.g. a topbar gear button). When expanded,\n the panel renders normally \u2014 so resize/drag handles continue to work\n while the panel is open. */\n.pict-modal-shell-panel-hidden.pict-modal-shell-panel-collapsed\n{\n\tdisplay: none !important;\n}\n\n/* Overlay panels \u2014 float over the middle row instead of taking layout\n space. The overlay layer is positioned absolutely inside the middle\n row; individual overlay panels stack with positive z-index. */\n.pict-modal-shell-overlay-layer\n{\n\tposition: absolute;\n\tinset: 0;\n\tpointer-events: none;\n\tz-index: 10;\n}\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel\n{\n\tpointer-events: auto;\n\tposition: absolute;\n\tbox-shadow: 0 4px 24px rgba(0, 0, 0, 0.18);\n}\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel-left { left: 0; top: 0; bottom: 0; }\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel-right { right: 0; top: 0; bottom: 0; }\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel-top { top: 0; left: 0; right: 0; }\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel-bottom { bottom: 0; left: 0; right: 0; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Responsive drawer mode \u2014 .pict-modal-shell-drawer-active toggles\n onto the middle row when any panel with ResponsiveDrawer crosses\n below its breakpoint. Flips the row's flex-direction from row to\n column, stacking side panels above the center and stretching them\n to full width. Each opted-in panel itself gets the\n .pict-modal-shell-panel-drawer class so per-panel rules below\n target only the drawer-mode panels (right + non-drawer panels in\n the same row are unaffected). The drawer height is read from a\n per-panel --pict-modal-drawer-height CSS variable (default\n 33vh, set in JS from the DrawerHeight option).\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pict-modal-shell-row-middle.pict-modal-shell-drawer-active\n{\n\tflex-direction: column;\n\t/* The drawer tab lives outside the drawer's bottom edge \u2014 ancestor\n\t chain MUST allow it to escape clip. */\n\toverflow: visible;\n}\n.pict-modal-shell-row-middle.pict-modal-shell-drawer-active .pict-modal-shell-side\n{\n\t/* Side stacks stretch full-width and lay out their panels as a\n\t horizontal row of stacked drawers (so two drawers from the same\n\t side don't end up overlapping). overflow: visible so the\n\t per-panel tab can extend below the side stack into the workspace. */\n\twidth: 100% !important;\n\tflex-direction: column;\n\toverflow: visible;\n}\n/* The drawer-tagged panel itself: kill the inline width set by\n _applySize (we override with !important since the inline style has\n higher specificity than a class selector), then size by height\n from the CSS variable. Resize handle is hidden in drawer mode\n because horizontal dragging doesn't translate to vertical sizing\n and the user already has the collapse tab to dismiss / restore.\n\n padding-bottom reserves an 18px strip at the bottom of the panel\n for the tab. The tab sits INSIDE the drawer's footprint \u2014 never\n below it \u2014 so the workspace header below the drawer is never in\n the same vertical band as the tab. (Previously the tab hung\n below the drawer's bottom edge into the workspace's top padding;\n that made the tab visually compete with the workspace header,\n even when the tab box-model bounds technically cleared the\n header.) box-sizing: border-box so the padding eats from the\n 33vh, not adding to it. */\n.pict-modal-shell-panel-drawer\n{\n\twidth: 100% !important;\n\tmax-width: 100% !important;\n\theight: var(--pict-modal-drawer-height, 33vh);\n\ttransition: height 140ms ease;\n\tpadding-bottom: 18px;\n\tbox-sizing: border-box;\n\toverflow: visible !important;\n\t/* Clip the panel bg to its CONTENT area only \u2014 the 18px\n\t padding-bottom reserve (where the tab lives) becomes\n\t transparent, so the middle row's primary background shows\n\t through. Without this the reserve would render with the\n\t panel's chrome bg, creating a visible \"strip\" between the\n\t drawer content above and the workspace below \u2014 the tab would\n\t look like it's sitting on its own miscoloured band rather\n\t than at the seam between drawer and workspace. */\n\tbackground-clip: content-box;\n}\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed\n{\n\t/* Collapsed = \"just the tab strip is visible\". 18px matches the\n\t panel's tab reserve so the height is consistent across states.\n\t When this is 0 the tab would have nowhere to render and the\n\t user couldn't reopen the drawer. */\n\theight: 18px !important;\n\tpadding-bottom: 0 !important;\n\t/* Drop the panel's bg in collapsed state \u2014 without this the 18px\n\t strip shows the --pict-modal-bg (panel chrome) which doesn't\n\t match the workspace --theme-color-background-primary below it,\n\t creating a visible \"drawer band\" around the tab that breaks the\n\t illusion of the tab belonging to the workspace area. With\n\t transparent bg the middle row's primary background shows\n\t through, the strip blends with the workspace, and the tab pill\n\t reads as a free-floating handle. */\n\tbackground: transparent !important;\n}\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-resize-handle\n{\n\tdisplay: none;\n}\n/* The drawer's collapse tab is a horizontal pill protruding from the\n bottom of the drawer (rather than the inner edge of a side panel).\n Override the side-panel positioning rules from above so the tab\n always sits at the drawer's bottom-center seam, in both expanded\n and collapsed states. The expand-from-zero affordance: when\n collapsed (height: 0), the tab still hangs below \"where the\n drawer would be\" \u2014 a small handle the user can click to pull\n the drawer back down. */\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab\n{\n\tposition: absolute !important;\n\t/* Anchored to the panel's BOTTOM edge \u2014 the tab lives INSIDE the\n\t drawer's footprint (in the 18px reserve at the bottom), never\n\t below it into the workspace. This means the workspace below\n\t the drawer is never sharing a vertical band with the tab, so\n\t the workspace header doesn't optically compete with it.\n\t bottom: 4px aligns the tab's top edge exactly with the panel's\n\t CONTENT-AREA bottom (panel.height \u2212 padding-bottom 18px). With\n\t border-top: 0 on the tab, the seam between the drawer content\n\t above and the tab body is invisible \u2014 they share --pict-modal-bg\n\t and merge into one shape, the tab reading as a labelled\n\t extension of the drawer hanging downward. Collapsed state\n\t keeps the smaller offset (overridden below) because its panel\n\t has no padding-bottom, so the math doesn't apply. */\n\ttop: auto !important;\n\tbottom: 4px !important;\n\tleft: 50% !important;\n\tright: auto !important;\n\ttransform: translate(-50%, 0) !important;\n\twidth: 64px !important;\n\theight: 14px !important;\n\t/* CRITICAL: border-box + padding: 0 \u2014 the collapsed-state base\n\t rule inherits \"padding: 12px 4px\" (so the chevron clears the\n\t edges of a tab that fills a 24px-wide side strip). In drawer\n\t mode the tab is a 14px tall pill, NOT a strip-fill, so that\n\t 12px vertical padding would balloon the tab's outer height to\n\t ~38px and crash into the workspace header text. The chevron\n\t is centered via flex anyway. */\n\tbox-sizing: border-box !important;\n\tpadding: 0 !important;\n\t/* Rounded BOTTOM corners + no top border \u2014 the tab looks like a\n\t traditional drawer-handle/tab hanging from above. Its rounded\n\t bottom curves face the workspace (the \"open downward\" affordance\n\t for a top drawer). border-top: 0 lets the tab visually merge\n\t with whatever's directly above it inside the panel (sidebar\n\t content when expanded, the panel background when collapsed). */\n\tborder-radius: 0 0 8px 8px;\n\tborder: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #cfd5dd));\n\tborder-top: 0;\n\tbackground: var(--pict-modal-bg, var(--theme-color-background-panel, #fff));\n\topacity: 0.95;\n\tz-index: 20;\n\t/* The default side-panel hover-grow values would yank the tab off\n\t to the wrong spot in drawer mode \u2014 neutralise. */\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab:hover,\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab:hover\n{\n\topacity: 1;\n\twidth: 96px !important;\n\t/* height stays at 14px \u2014 the tab is anchored with bottom, so any\n\t height growth would push the tab's TOP edge UPWARD past the\n\t space available above it. In EXPANDED state that crashes into\n\t the drawer content above; in COLLAPSED state it crashes into\n\t the topbar's brand stripes. Width-only growth (64 to 96, +50%)\n\t still gives the \"tab is reaching toward me\" affordance without\n\t the encroachment. */\n\tcolor: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\tborder-color: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\tbox-shadow: 0 3px 6px -2px rgba(0, 0, 0, 0.18);\n}\n/* Collapsed-state bottom-offset override. Expanded panels have an\n 18px padding-bottom reserve, and \"bottom: 4px\" anchors the tab's\n top edge exactly at the content-area boundary (so it merges\n visually with the drawer above). Collapsed panels have\n padding-bottom: 0 and a total height of 18px \u2014 \"bottom: 4px\"\n there would put the tab's top at the panel's actual top edge,\n crashing the (border-top: 0) tab into the topbar. The smaller\n \"bottom: 2px\" keeps the 14px tab vertically centered in the 18px\n strip with 2px margins on either side. */\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab\n{\n\tbottom: 2px !important;\n}\n/* Chevron inside the tab: point UP when expanded (the drawer\n collapses UP / out of view, so the arrow indicates \"click me to\n send the drawer up\"), DOWN when collapsed (the drawer expands DOWN\n into view). Rotations come from the existing top-panel chevron\n table: rotate(-135deg) \u2192 UP arrow, rotate(45deg) \u2192 DOWN arrow. */\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab::before\n{\n\ttransform: rotate(-135deg) !important;\n}\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before\n{\n\ttransform: rotate(45deg) !important;\n}\n/* The collapse tab's existing title-text span is hidden when reduced\n to a pill \u2014 there's no horizontal room. The chevron alone reads\n correctly. */\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab .pict-modal-shell-panel-collapse-tab-title,\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab .pict-modal-shell-panel-collapse-tab-icon\n{\n\tdisplay: none;\n}\n\n/* Drag-active state \u2014 disable text selection + change cursor globally\n so resize feels solid even when the cursor briefly leaves the handle. */\n.pict-modal-shell-dragging-x, .pict-modal-shell-dragging-y { user-select: none; }\n.pict-modal-shell-dragging-x * { cursor: col-resize !important; }\n.pict-modal-shell-dragging-y * { cursor: row-resize !important; }\n\n/* Per-panel resize-active state \u2014 kills the panel's collapse/expand\n width/height transition for the duration of a drag. Without this,\n every pointermove starts a fresh 140 ms transition and the resize\n visibly lags behind the cursor (\"choppy\"). With it disabled the\n panel snaps to the new size on the same frame as the pointer, which\n feels native. */\n.pict-modal-shell-panel-resizing { transition: none !important; }\n.pict-modal-shell-panel-resizing > .pict-modal-shell-panel-resize-handle\n{\n\tbackground: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\topacity: 0.5;\n}\n\n/* Panel popup-attention flash \u2014 fires when popup() is called on an\n already-open panel. Brief brand-colored inset glow so the user sees\n that their click landed even though the panel didn't change shape.\n Class is added by the shell, auto-removed after ~700 ms. */\n@keyframes pict-modal-shell-panel-flash\n{\n\t0% { box-shadow: inset 0 0 0 0 transparent; }\n\t30% { box-shadow: inset 0 0 0 3px var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb)); }\n\t100% { box-shadow: inset 0 0 0 0 transparent; }\n}\n.pict-modal-shell-panel-flash\n{\n\tanimation: pict-modal-shell-panel-flash 600ms ease-out;\n}\n"};},{}],170:[function(require,module,exports){const libPictViewClass=require('pict-view');const libPictModalOverlay=require('./Pict-Modal-Overlay.js');const libPictModalConfirm=require('./Pict-Modal-Confirm.js');const libPictModalWindow=require('./Pict-Modal-Window.js');const libPictModalToast=require('./Pict-Modal-Toast.js');const libPictModalTooltip=require('./Pict-Modal-Tooltip.js');const libPictModalPanel=require('./Pict-Modal-Panel.js');const libPictModalDropdown=require('./Pict-Modal-Dropdown.js');const libPictModalShell=require('./Pict-Modal-Shell.js');const _DefaultConfiguration=require('./Pict-Section-Modal-DefaultConfiguration.js');class PictSectionModal extends libPictViewClass{constructor(pFable,pOptions,pServiceHash){let tmpOptions=Object.assign({},_DefaultConfiguration,pOptions);super(pFable,tmpOptions,pServiceHash);this._activeModals=[];this._activeTooltips=[];this._activeToasts=[];this._idCounter=0;this._overlay=new libPictModalOverlay(this);this._confirm=new libPictModalConfirm(this);this._window=new libPictModalWindow(this);this._toast=new libPictModalToast(this);this._tooltip=new libPictModalTooltip(this);this._panel=new libPictModalPanel(this);this._dropdown=new libPictModalDropdown(this);this._shell=new libPictModalShell(this);}onBeforeInitialize(){super.onBeforeInitialize();// Ensure the root class is on the body for CSS variable scoping
7422
+ */_escapeHTML(pText){if(typeof pText!=='string'){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=PictModalWindow;},{}],171:[function(require,module,exports){module.exports={"AutoInitialize":true,"AutoRender":false,"AutoSolveWithApp":false,"ViewIdentifier":"Pict-Section-Modal","OverlayClickDismisses":true,"DefaultConfirmOptions":{"title":"Confirm","confirmLabel":"OK","cancelLabel":"Cancel","dangerous":false,"unbounded":false},"DefaultDoubleConfirmOptions":{"title":"Are you sure?","confirmLabel":"Confirm","cancelLabel":"Cancel","phrasePrompt":"Type \"{phrase}\" to confirm:","confirmPhrase":"","unbounded":false},"DefaultModalOptions":{"title":"","content":"","buttons":[],"closeable":true,"width":"480px","unbounded":false},"DefaultTooltipOptions":{"position":"top","delay":200,"maxWidth":"300px","interactive":false},"DefaultToastOptions":{"type":"info","duration":3000,"position":"top-right","dismissible":true},"DefaultPanelOptions":{"position":"right","width":340,"minWidth":200,"maxWidth":600,"collapsible":true,"collapsed":false,"persist":false,"persistKey":""},"Templates":[],"Renderables":[],"CSS":/*css*/"\n/* pict-section-modal */\n.pict-modal-root\n{\n\t/* Defaults are routed through pict-provider-theme tokens so apps\n\t using the theme provider get themed modals automatically. Each\n\t var() carries its original hex as the fallback so apps that don't\n\t install pict-provider-theme look exactly as before. Apps may\n\t still override any --pict-modal-* var directly to layer over the\n\t theme-driven defaults. */\n\n\t/* Overlay */\n\t--pict-modal-overlay-bg: rgba(0, 0, 0, 0.5);\n\n\t/* Dialog */\n\t--pict-modal-bg: var(--theme-color-background-panel, #ffffff);\n\t--pict-modal-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-border: var(--theme-color-border-default, #e0e0e0);\n\t--pict-modal-border-radius: 8px;\n\t--pict-modal-shadow: 0 4px 24px rgba(0, 0, 0, 0.15);\n\t--pict-modal-header-bg: var(--theme-color-background-secondary, #f5f5f5);\n\t--pict-modal-header-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-header-border: var(--theme-color-border-default, #e0e0e0);\n\n\t/* Buttons */\n\t--pict-modal-btn-bg: var(--theme-color-background-secondary, #e0e0e0);\n\t--pict-modal-btn-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-btn-hover-bg: var(--theme-color-background-hover, #d0d0d0);\n\t--pict-modal-btn-primary-bg: var(--theme-color-brand-primary, #2563eb);\n\t--pict-modal-btn-primary-fg: var(--theme-color-text-on-brand, #ffffff);\n\t--pict-modal-btn-primary-hover-bg:var(--theme-color-brand-primary-hover,#1d4ed8);\n\t--pict-modal-btn-danger-bg: var(--theme-color-status-error, #dc2626);\n\t--pict-modal-btn-danger-fg: var(--theme-color-text-on-brand, #ffffff);\n\t--pict-modal-btn-danger-hover-bg: var(--theme-color-status-error, #b91c1c);\n\t--pict-modal-btn-border-radius: 4px;\n\n\t/* Toast */\n\t--pict-modal-toast-bg: var(--theme-color-background-panel, #333333);\n\t--pict-modal-toast-fg: var(--theme-color-text-primary, #ffffff);\n\t--pict-modal-toast-success-bg: var(--theme-color-status-success, #16a34a);\n\t--pict-modal-toast-warning-bg: var(--theme-color-status-warning, #d97706);\n\t--pict-modal-toast-error-bg: var(--theme-color-status-error, #dc2626);\n\t--pict-modal-toast-info-bg: var(--theme-color-status-info, #2563eb);\n\t--pict-modal-toast-border-radius: 6px;\n\t--pict-modal-toast-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);\n\n\t/* Tooltip */\n\t--pict-modal-tooltip-bg: var(--theme-color-background-tertiary,#1a1a1a);\n\t--pict-modal-tooltip-fg: var(--theme-color-text-primary, #ffffff);\n\t--pict-modal-tooltip-border-radius:4px;\n\t--pict-modal-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n\n\t/* Dropdown */\n\t--pict-modal-dropdown-bg: var(--theme-color-background-panel, #ffffff);\n\t--pict-modal-dropdown-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-dropdown-border: var(--theme-color-border-default, #e0e0e0);\n\t--pict-modal-dropdown-border-radius: 6px;\n\t--pict-modal-dropdown-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);\n\t--pict-modal-dropdown-item-hover-bg: var(--theme-color-background-hover, rgba(37, 99, 235, 0.10));\n\t--pict-modal-dropdown-item-hover-fg: var(--theme-color-text-primary, #1a1a1a);\n\t--pict-modal-dropdown-item-disabled-fg: var(--theme-color-text-muted, #9aa0a6);\n\t--pict-modal-dropdown-separator: var(--theme-color-border-light, #e8e8e8);\n\t--pict-modal-dropdown-header-fg: var(--theme-color-text-secondary, #6b7280);\n\t--pict-modal-dropdown-danger-fg: var(--theme-color-status-error, #dc2626);\n\t--pict-modal-dropdown-primary-fg: var(--theme-color-brand-primary, #2563eb);\n\n\t/* Typography */\n\t--pict-modal-font-family: var(--theme-typography-family-sans, system-ui, -apple-system, sans-serif);\n\t--pict-modal-font-size: 14px;\n\t--pict-modal-title-font-size: 16px;\n\n\t/* Animation */\n\t--pict-modal-transition-duration: 200ms;\n}\n\n/* Overlay */\n.pict-modal-overlay\n{\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1000;\n\tbackground: var(--pict-modal-overlay-bg);\n\topacity: 0;\n\ttransition: opacity var(--pict-modal-transition-duration) ease;\n}\n\n.pict-modal-overlay.pict-modal-visible\n{\n\topacity: 1;\n}\n\n/* Dialog */\n.pict-modal-dialog\n{\n\tposition: fixed;\n\tz-index: 1010;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%) translateY(-20px);\n\topacity: 0;\n\ttransition: opacity var(--pict-modal-transition-duration) ease,\n\t transform var(--pict-modal-transition-duration) ease;\n\n\tmax-width: 90vw;\n\tmax-height: 90vh;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\tbackground: var(--pict-modal-bg);\n\tcolor: var(--pict-modal-fg);\n\tborder: 1px solid var(--pict-modal-border);\n\tborder-radius: var(--pict-modal-border-radius);\n\tbox-shadow: var(--pict-modal-shadow);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n}\n\n.pict-modal-dialog.pict-modal-visible\n{\n\topacity: 1;\n\ttransform: translate(-50%, -50%) translateY(0);\n}\n\n/* Unbounded modifier \u2014 lets callers opt out of the 90vh/90vw viewport cap.\n Use with caution: content taller than the viewport will push buttons\n below the fold. */\n.pict-modal-dialog.pict-modal-dialog--unbounded\n{\n\tmax-height: none;\n\tmax-width: none;\n}\n\n.pict-modal-dialog-header\n{\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 12px 16px;\n\tbackground: var(--pict-modal-header-bg);\n\tcolor: var(--pict-modal-header-fg);\n\tborder-bottom: 1px solid var(--pict-modal-header-border);\n\tborder-radius: var(--pict-modal-border-radius) var(--pict-modal-border-radius) 0 0;\n}\n\n.pict-modal-dialog-title\n{\n\tfont-size: var(--pict-modal-title-font-size);\n\tfont-weight: 600;\n}\n\n.pict-modal-dialog-close\n{\n\tbackground: none;\n\tborder: none;\n\tfont-size: 20px;\n\tcursor: pointer;\n\tcolor: var(--pict-modal-fg);\n\tpadding: 0 4px;\n\tline-height: 1;\n\topacity: 0.6;\n}\n\n.pict-modal-dialog-close:hover\n{\n\topacity: 1;\n}\n\n.pict-modal-dialog-body\n{\n\tpadding: 16px;\n\toverflow-y: auto;\n\tflex: 1;\n}\n\n.pict-modal-dialog-footer\n{\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tgap: 8px;\n\tpadding: 12px 16px;\n\tborder-top: 1px solid var(--pict-modal-border);\n}\n\n/* Buttons */\n.pict-modal-btn\n{\n\tpadding: 8px 16px;\n\tborder: none;\n\tborder-radius: var(--pict-modal-btn-border-radius);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n\tcursor: pointer;\n\tbackground: var(--pict-modal-btn-bg);\n\tcolor: var(--pict-modal-btn-fg);\n\ttransition: background var(--pict-modal-transition-duration) ease;\n}\n\n.pict-modal-btn:hover\n{\n\tbackground: var(--pict-modal-btn-hover-bg);\n}\n\n.pict-modal-btn:disabled\n{\n\topacity: 0.5;\n\tcursor: not-allowed;\n}\n\n.pict-modal-btn--primary\n{\n\tbackground: var(--pict-modal-btn-primary-bg);\n\tcolor: var(--pict-modal-btn-primary-fg);\n}\n\n.pict-modal-btn--primary:hover\n{\n\tbackground: var(--pict-modal-btn-primary-hover-bg);\n}\n\n.pict-modal-btn--danger\n{\n\tbackground: var(--pict-modal-btn-danger-bg);\n\tcolor: var(--pict-modal-btn-danger-fg);\n}\n\n.pict-modal-btn--danger:hover\n{\n\tbackground: var(--pict-modal-btn-danger-hover-bg);\n}\n\n/* Double confirm input */\n.pict-modal-confirm-input\n{\n\twidth: 100%;\n\tpadding: 8px 12px;\n\tmargin-top: 12px;\n\tborder: 1px solid var(--pict-modal-border);\n\tborder-radius: var(--pict-modal-btn-border-radius);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n\tbox-sizing: border-box;\n}\n\n.pict-modal-confirm-input:focus\n{\n\toutline: 2px solid var(--pict-modal-btn-primary-bg);\n\toutline-offset: -1px;\n}\n\n.pict-modal-confirm-prompt\n{\n\tmargin-top: 12px;\n\tfont-size: 13px;\n\tcolor: var(--pict-modal-fg);\n\topacity: 0.7;\n}\n\n/* Toast container */\n.pict-modal-toast-container\n{\n\tposition: fixed;\n\tz-index: 1030;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n\tpointer-events: none;\n\tmax-width: 400px;\n}\n\n.pict-modal-toast-container--top-right\n{\n\ttop: 16px;\n\tright: 16px;\n}\n\n.pict-modal-toast-container--top-left\n{\n\ttop: 16px;\n\tleft: 16px;\n}\n\n.pict-modal-toast-container--bottom-right\n{\n\tbottom: 16px;\n\tright: 16px;\n}\n\n.pict-modal-toast-container--bottom-left\n{\n\tbottom: 16px;\n\tleft: 16px;\n}\n\n.pict-modal-toast-container--top-center\n{\n\ttop: 16px;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n}\n\n.pict-modal-toast-container--bottom-center\n{\n\tbottom: 16px;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n}\n\n/* Toast */\n.pict-modal-toast\n{\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\tpadding: 12px 16px;\n\tborder-radius: var(--pict-modal-toast-border-radius);\n\tbox-shadow: var(--pict-modal-toast-shadow);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n\tbackground: var(--pict-modal-toast-bg);\n\tcolor: var(--pict-modal-toast-fg);\n\tpointer-events: auto;\n\topacity: 0;\n\ttransform: translateX(100%);\n\ttransition: opacity var(--pict-modal-transition-duration) ease,\n\t transform var(--pict-modal-transition-duration) ease;\n}\n\n.pict-modal-toast.pict-modal-visible\n{\n\topacity: 1;\n\ttransform: translateX(0);\n}\n\n.pict-modal-toast.pict-modal-toast-exit\n{\n\topacity: 0;\n\ttransform: translateX(100%);\n}\n\n.pict-modal-toast--info\n{\n\tbackground: var(--pict-modal-toast-info-bg);\n}\n\n.pict-modal-toast--success\n{\n\tbackground: var(--pict-modal-toast-success-bg);\n}\n\n.pict-modal-toast--warning\n{\n\tbackground: var(--pict-modal-toast-warning-bg);\n}\n\n.pict-modal-toast--error\n{\n\tbackground: var(--pict-modal-toast-error-bg);\n}\n\n.pict-modal-toast-message\n{\n\tflex: 1;\n}\n\n.pict-modal-toast-dismiss\n{\n\tbackground: none;\n\tborder: none;\n\tcolor: inherit;\n\tfont-size: 18px;\n\tcursor: pointer;\n\tpadding: 0 2px;\n\tline-height: 1;\n\topacity: 0.7;\n}\n\n.pict-modal-toast-dismiss:hover\n{\n\topacity: 1;\n}\n\n/* Tooltip */\n.pict-modal-tooltip\n{\n\tposition: fixed;\n\tz-index: 1020;\n\tpadding: 6px 10px;\n\tborder-radius: var(--pict-modal-tooltip-border-radius);\n\tbox-shadow: var(--pict-modal-tooltip-shadow);\n\tbackground: var(--pict-modal-tooltip-bg);\n\tcolor: var(--pict-modal-tooltip-fg);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: 13px;\n\tpointer-events: none;\n\topacity: 0;\n\ttransition: opacity var(--pict-modal-transition-duration) ease;\n\twhite-space: normal;\n\tword-wrap: break-word;\n}\n\n.pict-modal-tooltip.pict-modal-tooltip-interactive\n{\n\tpointer-events: auto;\n}\n\n.pict-modal-tooltip.pict-modal-visible\n{\n\topacity: 1;\n}\n\n.pict-modal-tooltip-arrow\n{\n\tposition: absolute;\n\twidth: 8px;\n\theight: 8px;\n\tbackground: var(--pict-modal-tooltip-bg);\n\ttransform: rotate(45deg);\n}\n\n.pict-modal-tooltip--top .pict-modal-tooltip-arrow\n{\n\tbottom: -4px;\n\tleft: 50%;\n\tmargin-left: -4px;\n}\n\n.pict-modal-tooltip--bottom .pict-modal-tooltip-arrow\n{\n\ttop: -4px;\n\tleft: 50%;\n\tmargin-left: -4px;\n}\n\n.pict-modal-tooltip--left .pict-modal-tooltip-arrow\n{\n\tright: -4px;\n\ttop: 50%;\n\tmargin-top: -4px;\n}\n\n.pict-modal-tooltip--right .pict-modal-tooltip-arrow\n{\n\tleft: -4px;\n\ttop: 50%;\n\tmargin-top: -4px;\n}\n\n/* \u2500\u2500 Dropdown \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Anchor-positioned menu (no overlay). Used for nav menus and\n \"split button\" addenda \u2014 see Pict-Modal-Dropdown.js.\n*/\n.pict-modal-dropdown\n{\n\tposition: fixed;\n\tz-index: 1025;\n\tmin-width: 160px;\n\tmax-width: 360px;\n\tmax-height: 60vh;\n\toverflow-y: auto;\n\tbackground: var(--pict-modal-dropdown-bg);\n\tcolor: var(--pict-modal-dropdown-fg);\n\tborder: 1px solid var(--pict-modal-dropdown-border);\n\tborder-radius: var(--pict-modal-dropdown-border-radius);\n\tbox-shadow: var(--pict-modal-dropdown-shadow);\n\tfont-family: var(--pict-modal-font-family);\n\tfont-size: var(--pict-modal-font-size);\n\tpadding: 4px 0;\n\topacity: 0;\n\ttransform: translateY(-4px);\n\ttransition: opacity var(--pict-modal-transition-duration) ease,\n\t transform var(--pict-modal-transition-duration) ease;\n}\n\n.pict-modal-dropdown.pict-modal-dropdown--above { transform: translateY(4px); }\n\n.pict-modal-dropdown.pict-modal-visible\n{\n\topacity: 1;\n\ttransform: translateY(0);\n}\n\n.pict-modal-dropdown-item\n{\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 7px 14px;\n\tcursor: pointer;\n\tuser-select: none;\n\tcolor: inherit;\n\toutline: none;\n}\n\n.pict-modal-dropdown-item:hover,\n.pict-modal-dropdown-item:focus\n{\n\tbackground: var(--pict-modal-dropdown-item-hover-bg);\n\tcolor: var(--pict-modal-dropdown-item-hover-fg);\n}\n\n.pict-modal-dropdown-item--disabled\n{\n\tcursor: not-allowed;\n\tcolor: var(--pict-modal-dropdown-item-disabled-fg);\n}\n\n.pict-modal-dropdown-item--disabled:hover,\n.pict-modal-dropdown-item--disabled:focus\n{\n\tbackground: transparent;\n\tcolor: var(--pict-modal-dropdown-item-disabled-fg);\n}\n\n.pict-modal-dropdown-item--primary { color: var(--pict-modal-dropdown-primary-fg); }\n.pict-modal-dropdown-item--danger { color: var(--pict-modal-dropdown-danger-fg); }\n\n.pict-modal-dropdown-item-icon\n{\n\tflex: 0 0 auto;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 16px;\n\theight: 16px;\n}\n\n.pict-modal-dropdown-item-icon svg { width: 100%; height: 100%; display: block; }\n\n.pict-modal-dropdown-item-label { flex: 1 1 auto; min-width: 0; }\n\n.pict-modal-dropdown-item-hint\n{\n\tflex: 0 0 auto;\n\tfont-size: 11px;\n\topacity: 0.6;\n\tmargin-left: 12px;\n}\n\n.pict-modal-dropdown-separator\n{\n\theight: 1px;\n\tbackground: var(--pict-modal-dropdown-separator);\n\tmargin: 4px 0;\n}\n\n.pict-modal-dropdown-header\n{\n\tpadding: 6px 14px 2px;\n\tfont-size: 11px;\n\tfont-weight: 600;\n\ttext-transform: uppercase;\n\tletter-spacing: 0.04em;\n\tcolor: var(--pict-modal-dropdown-header-fg);\n}\n\n/* \u2500\u2500 Resizable / Collapsible Panels \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pict-panel\n{\n\tposition: relative;\n\ttransition: width 0.2s ease;\n\tflex-shrink: 0;\n\toverflow: visible;\n}\n.pict-panel-collapsed\n{\n\twidth: 0 !important;\n\tmin-width: 0 !important;\n\toverflow: visible;\n}\n.pict-panel-collapsed > *:not(.pict-panel-edge)\n{\n\tdisplay: none;\n}\n\n/* Edge container \u2014 zero-width flex sibling of the panel.\n Sits next to the panel in the flex layout; children\n use absolute positioning to overlap the panel boundary. */\n.pict-panel-edge\n{\n\tposition: relative;\n\twidth: 0;\n\tflex-shrink: 0;\n\tz-index: 50;\n\toverflow: visible;\n}\n\n/* Resize handle \u2014 thin strip on the panel boundary */\n.pict-panel-resize\n{\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\twidth: 4px;\n\tcursor: col-resize;\n\tbackground: transparent;\n\ttransition: background 0.15s, width 0.15s;\n}\n.pict-panel-edge-right .pict-panel-resize\n{\n\tright: 0;\n\tborder-right: 1px solid var(--pict-panel-border, #DDD6CA);\n}\n.pict-panel-edge-left .pict-panel-resize\n{\n\tleft: 0;\n\tborder-left: 1px solid var(--pict-panel-border, #DDD6CA);\n}\n.pict-panel-resize:hover,\n.pict-panel-edge:hover .pict-panel-resize\n{\n\twidth: 5px;\n\tbackground: var(--pict-panel-accent, #2E7D74);\n\topacity: 0.5;\n}\n.pict-panel-resize.dragging\n{\n\twidth: 5px;\n\tbackground: var(--pict-panel-accent, #2E7D74);\n\topacity: 1;\n\ttransition: none;\n}\n.pict-panel-edge-collapsed .pict-panel-resize\n{\n\tdisplay: none;\n}\n\n/* Collapse tab \u2014 tucked sliver at rest, slides out on hover */\n.pict-panel-tab\n{\n\tposition: absolute;\n\ttop: 8px;\n\twidth: 8px;\n\theight: 24px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow: hidden;\n\tbackground: var(--pict-panel-border, #DDD6CA);\n\tborder: 1px solid var(--pict-panel-border, #DDD6CA);\n\tcursor: pointer;\n\tcolor: var(--pict-panel-fg, #8A7F72);\n\tfont-size: 10px;\n\tline-height: 1;\n\topacity: 0.5;\n\ttransition: opacity 0.25s, width 0.2s ease, height 0.2s ease, left 0.2s ease, right 0.2s ease, background 0.2s;\n\tz-index: 51;\n}\n.pict-panel-edge:hover .pict-panel-tab,\n.pict-panel-tab:hover\n{\n\twidth: 20px;\n\theight: 32px;\n\topacity: 1;\n\toverflow: visible;\n\tbackground: var(--pict-panel-bg, #FAF8F4);\n}\n/* Right panel: tab to the left of the edge */\n.pict-panel-edge-right .pict-panel-tab\n{\n\tright: 0;\n\tborder-right: none;\n\tborder-radius: 4px 0 0 4px;\n}\n.pict-panel-edge-right:hover .pict-panel-tab,\n.pict-panel-edge-right .pict-panel-tab:hover\n{\n\tright: 0;\n}\n/* Left panel: tab to the right of the edge */\n.pict-panel-edge-left .pict-panel-tab\n{\n\tleft: 0;\n\tborder-left: none;\n\tborder-radius: 0 4px 4px 0;\n}\n.pict-panel-edge-left:hover .pict-panel-tab,\n.pict-panel-edge-left .pict-panel-tab:hover\n{\n\tleft: 0;\n}\n/* When collapsed \u2014 more visible */\n.pict-panel-edge-collapsed .pict-panel-tab\n{\n\twidth: 10px;\n\theight: 28px;\n\topacity: 0.6;\n}\n.pict-panel-edge-collapsed .pict-panel-tab:hover,\n.pict-panel-edge-collapsed:hover .pict-panel-tab\n{\n\twidth: 20px;\n\theight: 32px;\n\topacity: 1;\n\toverflow: visible;\n\tbackground: var(--pict-panel-bg, #FAF8F4);\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n * Pict-Modal-Shell \u2014 viewport-managing layout for top / right /\n * bottom / left panels around a center.\n * \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.pict-modal-shell-host { display: block; height: 100%; min-height: 0; }\n.pict-modal-shell\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 0;\n\tposition: relative;\n\tcolor: var(--pict-modal-fg, var(--theme-color-text-primary, #1a1a1a));\n\tbackground: var(--theme-color-background-primary, transparent);\n}\n.pict-modal-shell-row { display: flex; min-width: 0; min-height: 0; }\n/* \"First added = at the edge\" convention is held by reversing the\n flex-direction on the bottom row + right side. That way, for ALL\n four sides, calling addPanel() N times stacks panel #1 against\n the viewport edge, panel #2 just inside it, panel #3 further in,\n and so on. Without these reverses, top + left worked that way but\n bottom + right inverted (first-added at content side, last-added\n at edge), which surprised callers. */\n.pict-modal-shell-row-top { flex: 0 0 auto; flex-direction: column; }\n.pict-modal-shell-row-bottom { flex: 0 0 auto; flex-direction: column-reverse; }\n.pict-modal-shell-row-middle\n{\n\tflex: 1 1 0;\n\tflex-direction: row;\n\tmin-height: 0;\n\tposition: relative;\n}\n.pict-modal-shell-side\n{\n\tdisplay: flex;\n\tflex: 0 0 auto;\n\tmin-height: 0;\n}\n.pict-modal-shell-side-left { flex-direction: row; }\n.pict-modal-shell-side-right { flex-direction: row-reverse; }\n.pict-modal-shell-center\n{\n\tflex: 1 1 0;\n\tmin-width: 0;\n\tmin-height: 0;\n\toverflow: auto;\n\tposition: relative;\n}\n.pict-modal-shell-center-content\n{\n\tmin-height: 100%;\n}\n/* Center column gains this class when at least one Scope:'center'\n panel is added. The center stops scrolling internally \u2014 that job\n moves to the content destination \u2014 and switches to a vertical flex\n so the destination and any inner panels stack cleanly. */\n.pict-modal-shell-center.pict-modal-shell-center-with-inner-panel\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n.pict-modal-shell-center.pict-modal-shell-center-with-inner-panel > .pict-modal-shell-center-content\n{\n\tflex: 1 1 0;\n\tmin-height: 0;\n\toverflow: auto;\n}\n.pict-modal-shell-center.pict-modal-shell-center-with-inner-panel > .pict-modal-shell-panel\n{\n\tflex: 0 0 auto;\n\twidth: 100%;\n}\n\n/* Panels \u2014 base */\n.pict-modal-shell-panel\n{\n\t/* How far the collapse-tab's panel-bg \"merge bar\" extends INTO\n\t the panel past the tab's geometric edge. Painted via box-shadow\n\t on the tab (no DOM impact), it masks any 1px theme border on an\n\t inner element, content padding offset, or resize-handle hover\n\t bleed in the strip between the tab's panel-facing edge and the\n\t first real pixel of panel content. Consumers can bump this for\n\t themes with thicker (2+px) inner borders. */\n\t--pict-modal-collapse-tab-merge: 2px;\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\tbox-sizing: border-box;\n\tbackground: var(--pict-modal-bg, var(--theme-color-background-panel, #ffffff));\n\tcolor: inherit;\n\tmin-width: 0;\n\tmin-height: 0;\n\ttransition: width 140ms ease, height 140ms ease;\n}\n.pict-modal-shell-panel-content\n{\n\tflex: 1 1 auto;\n\tmin-width: 0;\n\tmin-height: 0;\n\toverflow: auto;\n}\n/* Fixed-mode panels are pure chrome (topbars, status rows). Their\n content should fit the configured Size exactly \u2014 never scroll. The\n 1px border that .pict-modal-shell-panel-mode-fixed adds on the\n inner edge shaves 1px off the content's available height, which\n then triggers a sliver-scrollbar on any inner widget with\n min-height matching the panel Size. overflow:hidden here suppresses\n that without affecting resizable/collapsible panels (sidebars,\n drawers) where scrollable content is the whole point. */\n.pict-modal-shell-panel-mode-fixed > .pict-modal-shell-panel-content\n{\n\toverflow: hidden;\n}\n.pict-modal-shell-panel-content-inner\n{\n\tmin-height: 100%;\n}\n/* Panel boundary \u2014 fixed-mode panels get a hairline border for explicit\n demarcation. Collapsible / resizable panels DROP the boundary border\n (background contrast separates them from the center anyway) so the\n collapse tab can pull out cleanly without a hairline cutting across\n it. The host stylesheet still gets full control via the panel's own\n background. */\n.pict-modal-shell-panel-mode-fixed.pict-modal-shell-panel-top { border-bottom: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #e0e0e0)); }\n.pict-modal-shell-panel-mode-fixed.pict-modal-shell-panel-bottom { border-top: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #e0e0e0)); }\n.pict-modal-shell-panel-mode-fixed.pict-modal-shell-panel-left { border-right: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #e0e0e0)); }\n.pict-modal-shell-panel-mode-fixed.pict-modal-shell-panel-right { border-left: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #e0e0e0)); }\n\n/* Resize handle \u2014 absolute on the inner edge of each panel. */\n.pict-modal-shell-panel-resize-handle\n{\n\tposition: absolute;\n\tbackground: transparent;\n\tz-index: 5;\n\ttransition: background-color 120ms ease;\n}\n/* Resize handle hover \u2014 use the active brand's mode-aware primary\n color (set by pict-section-theme's Brand provider as\n --brand-color-primary-mode) so the resize affordance picks up the\n app's wordmark color. Falls back to the theme's brand-primary\n token if no brand is registered. */\n.pict-modal-shell-panel-resize-handle:hover\n{\n\tbackground: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\topacity: 0.4;\n}\n.pict-modal-shell-panel-left .pict-modal-shell-panel-resize-handle { right: -3px; top: 0; bottom: 0; width: 6px; cursor: col-resize; }\n.pict-modal-shell-panel-right .pict-modal-shell-panel-resize-handle { left: -3px; top: 0; bottom: 0; width: 6px; cursor: col-resize; }\n.pict-modal-shell-panel-top .pict-modal-shell-panel-resize-handle { bottom:-3px; left: 0; right: 0; height: 6px; cursor: row-resize; }\n.pict-modal-shell-panel-bottom .pict-modal-shell-panel-resize-handle { top: -3px; left: 0; right: 0; height: 6px; cursor: row-resize; }\n\n/* Collapse tab \u2014 slim sliver flush on the panel's OUTER boundary\n (where the resize handle sits), modelled on retold-content-system's\n sidebar tab. At rest it's a 6\xD728 px sliver; hover expands to\n 18\xD736 px without overlapping the panel's own content. The tab is\n positioned with its center on the boundary so half pokes into the\n adjacent area \u2014 the only place we can safely take over without\n stepping on app UI inside the panel. Title text only renders in the\n collapsed state where there's room for it. */\n.pict-modal-shell-panel-collapse-tab\n{\n\tposition: absolute;\n\tdisplay: flex; /* not inline-flex \u2014 avoids baseline alignment quirks */\n\talign-items: center;\n\tjustify-content: center;\n\toverflow: hidden;\n\tborder: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #d0d7de));\n\tbackground: var(--pict-modal-bg, var(--theme-color-background-panel, #ffffff));\n\tcolor: var(--theme-color-text-muted, #6b7280);\n\tfont: inherit;\n\tfont-size: 10px;\n\tletter-spacing: 0.4px;\n\ttext-transform: uppercase;\n\tcursor: pointer;\n\tz-index: 50;\n\topacity: 0.55;\n\tpadding: 0;\n\tbox-sizing: border-box;\n\tline-height: 0; /* keep child boxes from inflating around the rotated chevron */\n\t/* Geometry (width/height/right/left) is intentionally NOT animated.\n\t Sliding the tab's outer edge inward on hover-out makes it look like\n\t the tab is \"sliding into\" the panel content \u2014 weird visual.\n\t Snapping the size change instead, and animating only the appearance\n\t (opacity/color/shadow), gives a clean fade-in/out with no boundary\n\t weirdness. */\n\ttransition: opacity 160ms ease,\n\t background-color 160ms ease, color 160ms ease,\n\t border-color 160ms ease, box-shadow 160ms ease;\n}\n/* Hover state pulls accent color from the active brand (mode-aware,\n so it's legible in both light + dark) with theme brand-primary as\n fallback. The whole point of brand colors is that they show up\n across the app's chrome. */\n.pict-modal-shell-panel-collapse-tab:hover,\n.pict-modal-shell-panel:hover > .pict-modal-shell-panel-collapse-tab\n{\n\topacity: 1;\n\tcolor: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\tborder-color: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n}\n/* Drop shadow casts AWAY from the panel so the tab feels pulled out\n (extension of the panel) rather than floating across the boundary.\n The tab itself is now positioned fully OUTSIDE the panel boundary\n (see the per-side rules below), so we don't need a merge-bar shadow\n to mask any in-panel overlap \u2014 only the drop shadow remains. */\n.pict-modal-shell-panel-left:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-left > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbox-shadow: 3px 0 6px -2px rgba(0, 0, 0, 0.18);\n}\n.pict-modal-shell-panel-right:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-right > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbox-shadow: -3px 0 6px -2px rgba(0, 0, 0, 0.18);\n}\n.pict-modal-shell-panel-top:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-top > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbox-shadow: 0 3px 6px -2px rgba(0, 0, 0, 0.18);\n}\n.pict-modal-shell-panel-bottom:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-bottom > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbox-shadow: 0 -3px 6px -2px rgba(0, 0, 0, 0.18);\n}\n\n/* Per-side base positioning \u2014 the tab lives entirely OUTSIDE the\n panel's outer boundary. Its panel-facing edge touches the boundary\n (offset = -tabThickness) and the rest of the tab pokes out into the\n adjacent area (center / sibling panel). Border on the panel-facing\n edge is dropped so the tab looks attached to the panel rather than\n floating beside it.\n Why fully-outside? Earlier iterations had the tab straddling the\n boundary (1px inside + 4px outside) with a panel-bg-colored merge-bar\n masking the in-panel half \u2014 that worked geometrically but visually\n read as \"tab pinned into the panel,\" and any rendering inside the\n panel (especially custom borders or hover bleeds) could clip against\n the in-panel half. Fully-external positioning eliminates the overlap\n class of bugs and lets the tab live entirely in the adjacent area\n where there's no app content to step on. */\n.pict-modal-shell-panel-left > .pict-modal-shell-panel-collapse-tab\n{\n\tright: -6px; top: 14px; width: 6px; height: 28px;\n\tborder-radius: 0 4px 4px 0;\n\tborder-left: 0;\n}\n.pict-modal-shell-panel-right > .pict-modal-shell-panel-collapse-tab\n{\n\tleft: -6px; top: 14px; width: 6px; height: 28px;\n\tborder-radius: 4px 0 0 4px;\n\tborder-right: 0;\n}\n.pict-modal-shell-panel-top > .pict-modal-shell-panel-collapse-tab\n{\n\tbottom: -6px; right: 14px; width: 28px; height: 6px;\n\tborder-radius: 0 0 4px 4px;\n\tborder-top: 0;\n}\n.pict-modal-shell-panel-bottom > .pict-modal-shell-panel-collapse-tab\n{\n\ttop: -6px; right: 14px; width: 28px; height: 6px;\n\tborder-radius: 4px 4px 0 0;\n\tborder-bottom: 0;\n}\n\n/* Hover: tab grows OUTWARD into the adjacent area. The panel-facing\n edge stays glued to the boundary (offset = -tabThickness), so the\n tab still looks attached on hover \u2014 only its outer dimension grows.\n For side panels the height also grows (28 \u2192 36) downward; for top\n /bottom panels the width grows (28 \u2192 36) \u2014 see the next block for\n the perpendicular-axis offsets. */\n.pict-modal-shell-panel-left:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-left > .pict-modal-shell-panel-collapse-tab:hover\n{\n\twidth: 18px; height: 36px; right: -18px;\n}\n.pict-modal-shell-panel-right:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-right > .pict-modal-shell-panel-collapse-tab:hover\n{\n\twidth: 18px; height: 36px; left: -18px;\n}\n.pict-modal-shell-panel-top:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-top > .pict-modal-shell-panel-collapse-tab:hover\n{\n\twidth: 36px; height: 18px; bottom: -18px;\n}\n.pict-modal-shell-panel-bottom:hover > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-bottom > .pict-modal-shell-panel-collapse-tab:hover\n{\n\twidth: 36px; height: 18px; top: -18px;\n}\n\n.pict-modal-shell-panel-collapse-tab-title { display: none; white-space: nowrap; }\n\n/* Auto-generated chevron glyph inside the tab \u2014 only visible once the\n tab is wide / tall enough to show it (i.e. hover state, or when the\n panel is collapsed). Direction follows side + state.\n Sized 5\xD75 (down from 6) so even with rotation the visual stays\n well clear of the tab's overflow:hidden bounds at 18\xD736 hover and\n the 24px collapsed tab strip width. flex-shrink:0 ensures the\n pseudo never collapses to zero in tight tab dimensions. */\n.pict-modal-shell-panel-collapse-tab::before\n{\n\tcontent: '';\n\tdisplay: block;\n\twidth: 5px; height: 5px;\n\tflex-shrink: 0;\n\topacity: 0;\n\tborder-right: 1.5px solid currentColor;\n\tborder-bottom: 1.5px solid currentColor;\n\ttransform: rotate(135deg);\n\ttransform-origin: center center;\n\ttransition: opacity 160ms ease, transform 160ms ease;\n}\n.pict-modal-shell-panel:hover > .pict-modal-shell-panel-collapse-tab::before,\n.pict-modal-shell-panel-collapse-tab:hover::before,\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before\n{\n\topacity: 1;\n}\n.pict-modal-shell-panel-right > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(-45deg); }\n.pict-modal-shell-panel-top > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(-135deg); }\n.pict-modal-shell-panel-bottom > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(45deg); }\n.pict-modal-shell-panel-left.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(-45deg); }\n.pict-modal-shell-panel-right.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(135deg); }\n.pict-modal-shell-panel-top.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(45deg); }\n.pict-modal-shell-panel-bottom.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before { transform: rotate(-135deg); }\n\n/* Collapsed state \u2014 content disappears, only the collapse tab remains. */\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-content\n{\n\tdisplay: none;\n}\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-resize-handle\n{\n\tdisplay: none;\n}\n.pict-modal-shell-panel-left.pict-modal-shell-panel-collapsed,\n.pict-modal-shell-panel-right.pict-modal-shell-panel-collapsed\n{\n\t/* When collapsed, side panels rotate the title for vertical reading. */\n\toverflow: hidden;\n}\n/* When collapsed: the entire panel becomes the tab strip \u2014 full width\n for sides, full height for top/bottom \u2014 with the title visible\n vertically (sides) or horizontally (top/bottom). The little sliver\n tab on the boundary disappears (we don't need it anymore \u2014 clicking\n anywhere on the panel toggles it back open). */\n.pict-modal-shell-panel-left.pict-modal-shell-panel-collapsed,\n.pict-modal-shell-panel-right.pict-modal-shell-panel-collapsed,\n.pict-modal-shell-panel-top.pict-modal-shell-panel-collapsed,\n.pict-modal-shell-panel-bottom.pict-modal-shell-panel-collapsed\n{\n\toverflow: hidden;\n}\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab\n{\n\t/* Promote the tab to FILL the collapsed panel (not just hug its\n\t content) so the centered chevron + title group sits in the middle\n\t of the panel. Without explicit width/height: 100%, the position:\n\t absolute element shrinks to its natural content size and the\n\t group ends up flush at the top of the panel \u2014 where the chevron\n\t gets clipped by the topbar. */\n\tposition: absolute !important;\n\ttop: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground: transparent;\n\topacity: 0.85;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 8px;\n\tpadding: 12px 4px; /* keeps chevron + title clear of edges */\n\tbox-shadow: none;\n\tcolor: var(--theme-color-text-muted, #6b7280);\n\tbox-sizing: border-box;\n\toverflow: hidden;\n}\n.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab:hover\n{\n\tbackground: var(--theme-color-background-hover, var(--pict-modal-bg, #fff));\n\tcolor: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\tbox-shadow: none;\n}\n/* Side panels (collapsed): rotate the title for vertical reading. */\n.pict-modal-shell-panel-left.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-right.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab\n{\n\twriting-mode: vertical-rl;\n\ttext-orientation: mixed;\n}\n.pict-modal-shell-panel-collapsed .pict-modal-shell-panel-collapse-tab-title\n{\n\tdisplay: inline;\n}\n\n/* Hidden panels \u2014 when Hidden:true is passed to addPanel, the collapsed\n state has zero footprint: no collapse tab (the tab is never built),\n the panel root is display:none, and the resize handle vanishes. The\n only path to the open state is a programmatic expand()/toggle() from\n somewhere else in the app (e.g. a topbar gear button). When expanded,\n the panel renders normally \u2014 so resize/drag handles continue to work\n while the panel is open. */\n.pict-modal-shell-panel-hidden.pict-modal-shell-panel-collapsed\n{\n\tdisplay: none !important;\n}\n\n/* Overlay panels \u2014 float over the middle row instead of taking layout\n space. The overlay layer is positioned absolutely inside the middle\n row; individual overlay panels stack with positive z-index. */\n.pict-modal-shell-overlay-layer\n{\n\tposition: absolute;\n\tinset: 0;\n\tpointer-events: none;\n\tz-index: 10;\n}\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel\n{\n\tpointer-events: auto;\n\tposition: absolute;\n\tbox-shadow: 0 4px 24px rgba(0, 0, 0, 0.18);\n}\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel-left { left: 0; top: 0; bottom: 0; }\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel-right { right: 0; top: 0; bottom: 0; }\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel-top { top: 0; left: 0; right: 0; }\n.pict-modal-shell-overlay-layer .pict-modal-shell-panel-bottom { bottom: 0; left: 0; right: 0; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Responsive drawer mode \u2014 .pict-modal-shell-drawer-active toggles\n onto the middle row when any panel with ResponsiveDrawer crosses\n below its breakpoint. Flips the row's flex-direction from row to\n column, stacking side panels above the center and stretching them\n to full width. Each opted-in panel itself gets the\n .pict-modal-shell-panel-drawer class so per-panel rules below\n target only the drawer-mode panels (right + non-drawer panels in\n the same row are unaffected). The drawer height is read from a\n per-panel --pict-modal-drawer-height CSS variable (default\n 33vh, set in JS from the DrawerHeight option).\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pict-modal-shell-row-middle.pict-modal-shell-drawer-active\n{\n\tflex-direction: column;\n\t/* The drawer tab lives outside the drawer's bottom edge \u2014 ancestor\n\t chain MUST allow it to escape clip. */\n\toverflow: visible;\n}\n.pict-modal-shell-row-middle.pict-modal-shell-drawer-active .pict-modal-shell-side\n{\n\t/* Side stacks stretch full-width and lay out their panels as a\n\t horizontal row of stacked drawers (so two drawers from the same\n\t side don't end up overlapping). overflow: visible so the\n\t per-panel tab can extend below the side stack into the workspace. */\n\twidth: 100% !important;\n\tflex-direction: column;\n\toverflow: visible;\n}\n/* The drawer-tagged panel itself: kill the inline width set by\n _applySize (we override with !important since the inline style has\n higher specificity than a class selector), then size by height\n from the CSS variable. Resize handle is hidden in drawer mode\n because horizontal dragging doesn't translate to vertical sizing\n and the user already has the collapse tab to dismiss / restore.\n\n padding-bottom reserves an 18px strip at the bottom of the panel\n for the tab. The tab sits INSIDE the drawer's footprint \u2014 never\n below it \u2014 so the workspace header below the drawer is never in\n the same vertical band as the tab. (Previously the tab hung\n below the drawer's bottom edge into the workspace's top padding;\n that made the tab visually compete with the workspace header,\n even when the tab box-model bounds technically cleared the\n header.) box-sizing: border-box so the padding eats from the\n 33vh, not adding to it. */\n.pict-modal-shell-panel-drawer\n{\n\twidth: 100% !important;\n\tmax-width: 100% !important;\n\theight: var(--pict-modal-drawer-height, 33vh);\n\ttransition: height 140ms ease;\n\tpadding-bottom: 18px;\n\tbox-sizing: border-box;\n\toverflow: visible !important;\n\t/* Clip the panel bg to its CONTENT area only \u2014 the 18px\n\t padding-bottom reserve (where the tab lives) becomes\n\t transparent, so the middle row's primary background shows\n\t through. Without this the reserve would render with the\n\t panel's chrome bg, creating a visible \"strip\" between the\n\t drawer content above and the workspace below \u2014 the tab would\n\t look like it's sitting on its own miscoloured band rather\n\t than at the seam between drawer and workspace. */\n\tbackground-clip: content-box;\n}\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed\n{\n\t/* Collapsed = \"just the tab strip is visible\". 18px matches the\n\t panel's tab reserve so the height is consistent across states.\n\t When this is 0 the tab would have nowhere to render and the\n\t user couldn't reopen the drawer. */\n\theight: 18px !important;\n\tpadding-bottom: 0 !important;\n\t/* Drop the panel's bg in collapsed state \u2014 without this the 18px\n\t strip shows the --pict-modal-bg (panel chrome) which doesn't\n\t match the workspace --theme-color-background-primary below it,\n\t creating a visible \"drawer band\" around the tab that breaks the\n\t illusion of the tab belonging to the workspace area. With\n\t transparent bg the middle row's primary background shows\n\t through, the strip blends with the workspace, and the tab pill\n\t reads as a free-floating handle. */\n\tbackground: transparent !important;\n}\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-resize-handle\n{\n\tdisplay: none;\n}\n/* The drawer's collapse tab is a horizontal pill protruding from the\n bottom of the drawer (rather than the inner edge of a side panel).\n Override the side-panel positioning rules from above so the tab\n always sits at the drawer's bottom-center seam, in both expanded\n and collapsed states. The expand-from-zero affordance: when\n collapsed (height: 0), the tab still hangs below \"where the\n drawer would be\" \u2014 a small handle the user can click to pull\n the drawer back down. */\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab,\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab\n{\n\tposition: absolute !important;\n\t/* Anchored to the panel's BOTTOM edge \u2014 the tab lives INSIDE the\n\t drawer's footprint (in the 18px reserve at the bottom), never\n\t below it into the workspace. This means the workspace below\n\t the drawer is never sharing a vertical band with the tab, so\n\t the workspace header doesn't optically compete with it.\n\t bottom: 4px aligns the tab's top edge exactly with the panel's\n\t CONTENT-AREA bottom (panel.height \u2212 padding-bottom 18px). With\n\t border-top: 0 on the tab, the seam between the drawer content\n\t above and the tab body is invisible \u2014 they share --pict-modal-bg\n\t and merge into one shape, the tab reading as a labelled\n\t extension of the drawer hanging downward. Collapsed state\n\t keeps the smaller offset (overridden below) because its panel\n\t has no padding-bottom, so the math doesn't apply. */\n\ttop: auto !important;\n\tbottom: 4px !important;\n\tleft: 50% !important;\n\tright: auto !important;\n\ttransform: translate(-50%, 0) !important;\n\twidth: 64px !important;\n\theight: 14px !important;\n\t/* CRITICAL: border-box + padding: 0 \u2014 the collapsed-state base\n\t rule inherits \"padding: 12px 4px\" (so the chevron clears the\n\t edges of a tab that fills a 24px-wide side strip). In drawer\n\t mode the tab is a 14px tall pill, NOT a strip-fill, so that\n\t 12px vertical padding would balloon the tab's outer height to\n\t ~38px and crash into the workspace header text. The chevron\n\t is centered via flex anyway. */\n\tbox-sizing: border-box !important;\n\tpadding: 0 !important;\n\t/* Rounded BOTTOM corners + no top border \u2014 the tab looks like a\n\t traditional drawer-handle/tab hanging from above. Its rounded\n\t bottom curves face the workspace (the \"open downward\" affordance\n\t for a top drawer). border-top: 0 lets the tab visually merge\n\t with whatever's directly above it inside the panel (sidebar\n\t content when expanded, the panel background when collapsed). */\n\tborder-radius: 0 0 8px 8px;\n\tborder: 1px solid var(--pict-modal-border, var(--theme-color-border-default, #cfd5dd));\n\tborder-top: 0;\n\tbackground: var(--pict-modal-bg, var(--theme-color-background-panel, #fff));\n\topacity: 0.95;\n\tz-index: 20;\n\t/* The default side-panel hover-grow values would yank the tab off\n\t to the wrong spot in drawer mode \u2014 neutralise. */\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab:hover,\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab:hover\n{\n\topacity: 1;\n\twidth: 96px !important;\n\t/* height stays at 14px \u2014 the tab is anchored with bottom, so any\n\t height growth would push the tab's TOP edge UPWARD past the\n\t space available above it. In EXPANDED state that crashes into\n\t the drawer content above; in COLLAPSED state it crashes into\n\t the topbar's brand stripes. Width-only growth (64 to 96, +50%)\n\t still gives the \"tab is reaching toward me\" affordance without\n\t the encroachment. */\n\tcolor: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\tborder-color: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\tbox-shadow: 0 3px 6px -2px rgba(0, 0, 0, 0.18);\n}\n/* Collapsed-state bottom-offset override. Expanded panels have an\n 18px padding-bottom reserve, and \"bottom: 4px\" anchors the tab's\n top edge exactly at the content-area boundary (so it merges\n visually with the drawer above). Collapsed panels have\n padding-bottom: 0 and a total height of 18px \u2014 \"bottom: 4px\"\n there would put the tab's top at the panel's actual top edge,\n crashing the (border-top: 0) tab into the topbar. The smaller\n \"bottom: 2px\" keeps the 14px tab vertically centered in the 18px\n strip with 2px margins on either side. */\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab\n{\n\tbottom: 2px !important;\n}\n/* Chevron inside the tab: point UP when expanded (the drawer\n collapses UP / out of view, so the arrow indicates \"click me to\n send the drawer up\"), DOWN when collapsed (the drawer expands DOWN\n into view). Rotations come from the existing top-panel chevron\n table: rotate(-135deg) \u2192 UP arrow, rotate(45deg) \u2192 DOWN arrow. */\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab::before\n{\n\ttransform: rotate(-135deg) !important;\n}\n.pict-modal-shell-panel-drawer.pict-modal-shell-panel-collapsed > .pict-modal-shell-panel-collapse-tab::before\n{\n\ttransform: rotate(45deg) !important;\n}\n/* The collapse tab's existing title-text span is hidden when reduced\n to a pill \u2014 there's no horizontal room. The chevron alone reads\n correctly. */\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab .pict-modal-shell-panel-collapse-tab-title,\n.pict-modal-shell-panel-drawer > .pict-modal-shell-panel-collapse-tab .pict-modal-shell-panel-collapse-tab-icon\n{\n\tdisplay: none;\n}\n\n/* Drag-active state \u2014 disable text selection + change cursor globally\n so resize feels solid even when the cursor briefly leaves the handle. */\n.pict-modal-shell-dragging-x, .pict-modal-shell-dragging-y { user-select: none; }\n.pict-modal-shell-dragging-x * { cursor: col-resize !important; }\n.pict-modal-shell-dragging-y * { cursor: row-resize !important; }\n\n/* Per-panel resize-active state \u2014 kills the panel's collapse/expand\n width/height transition for the duration of a drag. Without this,\n every pointermove starts a fresh 140 ms transition and the resize\n visibly lags behind the cursor (\"choppy\"). With it disabled the\n panel snaps to the new size on the same frame as the pointer, which\n feels native. */\n.pict-modal-shell-panel-resizing { transition: none !important; }\n.pict-modal-shell-panel-resizing > .pict-modal-shell-panel-resize-handle\n{\n\tbackground: var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb));\n\topacity: 0.5;\n}\n\n/* Panel popup-attention flash \u2014 fires when popup() is called on an\n already-open panel. Brief brand-colored inset glow so the user sees\n that their click landed even though the panel didn't change shape.\n Class is added by the shell, auto-removed after ~700 ms. */\n@keyframes pict-modal-shell-panel-flash\n{\n\t0% { box-shadow: inset 0 0 0 0 transparent; }\n\t30% { box-shadow: inset 0 0 0 3px var(--brand-color-primary-mode, var(--theme-color-brand-primary, #2563eb)); }\n\t100% { box-shadow: inset 0 0 0 0 transparent; }\n}\n.pict-modal-shell-panel-flash\n{\n\tanimation: pict-modal-shell-panel-flash 600ms ease-out;\n}\n"};},{}],172:[function(require,module,exports){const libPictViewClass=require('pict-view');const libPictModalOverlay=require('./Pict-Modal-Overlay.js');const libPictModalConfirm=require('./Pict-Modal-Confirm.js');const libPictModalWindow=require('./Pict-Modal-Window.js');const libPictModalToast=require('./Pict-Modal-Toast.js');const libPictModalTooltip=require('./Pict-Modal-Tooltip.js');const libPictModalPanel=require('./Pict-Modal-Panel.js');const libPictModalDropdown=require('./Pict-Modal-Dropdown.js');const libPictModalShell=require('./Pict-Modal-Shell.js');const _DefaultConfiguration=require('./Pict-Section-Modal-DefaultConfiguration.js');class PictSectionModal extends libPictViewClass{constructor(pFable,pOptions,pServiceHash){let tmpOptions=Object.assign({},_DefaultConfiguration,pOptions);super(pFable,tmpOptions,pServiceHash);this._activeModals=[];this._activeTooltips=[];this._activeToasts=[];this._idCounter=0;this._overlay=new libPictModalOverlay(this);this._confirm=new libPictModalConfirm(this);this._window=new libPictModalWindow(this);this._toast=new libPictModalToast(this);this._tooltip=new libPictModalTooltip(this);this._panel=new libPictModalPanel(this);this._dropdown=new libPictModalDropdown(this);this._shell=new libPictModalShell(this);}onBeforeInitialize(){super.onBeforeInitialize();// Ensure the root class is on the body for CSS variable scoping
7233
7423
  if(typeof document!=='undefined'&&document.body){if(!document.body.classList.contains('pict-modal-root')){document.body.classList.add('pict-modal-root');}}return super.onBeforeInitialize();}/**
7234
7424
  * Generate a unique ID for DOM elements.
7235
7425
  *
@@ -7324,7 +7514,7 @@ if(typeof document!=='undefined'&&document.body){if(!document.body.classList.con
7324
7514
  * Clean up all DOM elements when the view is destroyed.
7325
7515
  *//**
7326
7516
  * Destroy all active panels.
7327
- */destroyPanels(){this._panel.destroyAll();}destroy(){this.dismissAll();this.destroyPanels();this._overlay.destroy();this._toast.destroy();if(typeof super.destroy==='function'){return super.destroy();}}}module.exports=PictSectionModal;module.exports.default_configuration=_DefaultConfiguration;},{"./Pict-Modal-Confirm.js":161,"./Pict-Modal-Dropdown.js":162,"./Pict-Modal-Overlay.js":163,"./Pict-Modal-Panel.js":164,"./Pict-Modal-Shell.js":165,"./Pict-Modal-Toast.js":166,"./Pict-Modal-Tooltip.js":167,"./Pict-Modal-Window.js":168,"./Pict-Section-Modal-DefaultConfiguration.js":169,"pict-view":231}],171:[function(require,module,exports){/**
7517
+ */destroyPanels(){this._panel.destroyAll();}destroy(){this.dismissAll();this.destroyPanels();this._overlay.destroy();this._toast.destroy();if(typeof super.destroy==='function'){return super.destroy();}}}module.exports=PictSectionModal;module.exports.default_configuration=_DefaultConfiguration;},{"./Pict-Modal-Confirm.js":163,"./Pict-Modal-Dropdown.js":164,"./Pict-Modal-Overlay.js":165,"./Pict-Modal-Panel.js":166,"./Pict-Modal-Shell.js":167,"./Pict-Modal-Toast.js":168,"./Pict-Modal-Tooltip.js":169,"./Pict-Modal-Window.js":170,"./Pict-Section-Modal-DefaultConfiguration.js":171,"pict-view":234}],173:[function(require,module,exports){/**
7328
7518
  * pict-section-theme — entry point.
7329
7519
  *
7330
7520
  * Bundles every Retold-ecosystem theme and exposes five reusable views:
@@ -7353,7 +7543,7 @@ if(typeof document!=='undefined'&&document.body){if(!document.body.classList.con
7353
7543
  *
7354
7544
  * pict.addProvider('Theme-Section',
7355
7545
  * {
7356
- * ApplyDefault: 'pict-default',
7546
+ * ApplyDefault: 'retold-default',
7357
7547
  * DefaultMode: 'system',
7358
7548
  * DefaultScale: 1.0,
7359
7549
  * Brand: libRetoldManagerBrand
@@ -7523,7 +7713,7 @@ module.exports.Scale=libThemeScale;// the scale helper module
7523
7713
  module.exports.Persistence=libThemePersistence;// the persistence helper module
7524
7714
  // Theme-Logo is exposed as a sub-module path, not a top-level field —
7525
7715
  // see the comment near the imports above.
7526
- module.exports.registerCatalog=registerCatalog;module.exports.listCatalog=listCatalog;module.exports.install=install;module.exports.clearPersistence=clearPersistence;},{"./Theme-Brand.js":172,"./Theme-Persistence.js":174,"./Theme-Scale.js":175,"./themes/_catalog.js":179,"./views/PictView-Theme-BottomBar.js":220,"./views/PictView-Theme-Brand-Mark.js":221,"./views/PictView-Theme-BrandStrip.js":222,"./views/PictView-Theme-Button.js":223,"./views/PictView-Theme-ModeToggle.js":224,"./views/PictView-Theme-Picker.js":225,"./views/PictView-Theme-ScaleSelect.js":226,"./views/PictView-Theme-TopBar.js":227,"pict-provider":148,"pict-provider-theme":142}],172:[function(require,module,exports){/**
7716
+ module.exports.registerCatalog=registerCatalog;module.exports.listCatalog=listCatalog;module.exports.install=install;module.exports.clearPersistence=clearPersistence;},{"./Theme-Brand.js":174,"./Theme-Persistence.js":176,"./Theme-Scale.js":177,"./themes/_catalog.js":181,"./views/PictView-Theme-BottomBar.js":223,"./views/PictView-Theme-Brand-Mark.js":224,"./views/PictView-Theme-BrandStrip.js":225,"./views/PictView-Theme-Button.js":226,"./views/PictView-Theme-ModeToggle.js":227,"./views/PictView-Theme-Picker.js":228,"./views/PictView-Theme-ScaleSelect.js":229,"./views/PictView-Theme-TopBar.js":230,"pict-provider":149,"pict-provider-theme":142}],174:[function(require,module,exports){/**
7527
7717
  * Theme-Brand — app-level brand identity (icon + colors) that overlays
7528
7718
  * the active theme.
7529
7719
  *
@@ -7676,7 +7866,7 @@ let tmpDark='.theme-dark {\n'+'\t--brand-color-primary-mode: '+tmpC.PrimaryDa
7676
7866
  if(typeof console!=='undefined'&&console.warn){console.warn('Theme-Brand.applyBrand: bad brand object — needs Colors.Primary + Colors.Secondary as strings.');}return _activeBrand;}_activeBrand=tmpNorm;_injectStyleElement(_buildCSS(tmpNorm));_injectFaviconLinks(tmpNorm);_fireChange(tmpNorm,tmpPrev);return tmpNorm;}function getActive(){return _activeBrand;}function onChange(fCallback){if(typeof fCallback!=='function')return function(){};_listeners.push(fCallback);return function(){offChange(fCallback);};}function offChange(fCallback){let tmpIdx=_listeners.indexOf(fCallback);if(tmpIdx>=0)_listeners.splice(tmpIdx,1);}function _fireChange(pNew,pOld){for(let i=0;i<_listeners.length;i++){try{_listeners[i](pNew,pOld);}catch(pErr){/* swallow — listener failure must not break callers */}}}/**
7677
7867
  * Reset to no-brand state and detach the injected style. Tests use this;
7678
7868
  * runtime hosts rarely need it.
7679
- */function reset(){applyBrand(null);_listeners=[];}module.exports={applyBrand:applyBrand,getActive:getActive,onChange:onChange,offChange:offChange,reset:reset,STYLE_ELEMENT_ID:STYLE_ELEMENT_ID,FAVICON_LINK_ID:FAVICON_LINK_ID,FAVICON_DARK_LINK_ID:FAVICON_DARK_LINK_ID};},{}],173:[function(require,module,exports){/**
7869
+ */function reset(){applyBrand(null);_listeners=[];}module.exports={applyBrand:applyBrand,getActive:getActive,onChange:onChange,offChange:offChange,reset:reset,STYLE_ELEMENT_ID:STYLE_ELEMENT_ID,FAVICON_LINK_ID:FAVICON_LINK_ID,FAVICON_DARK_LINK_ID:FAVICON_DARK_LINK_ID};},{}],175:[function(require,module,exports){/**
7680
7870
  * Theme-Icons — single source of truth for the inline SVG glyphs the
7681
7871
  * theme section uses (sun, moon, system / monitor, plus a chevron for
7682
7872
  * dropdown triggers).
@@ -7732,7 +7922,7 @@ return'<svg class="pict-theme-icon pict-theme-icon-paired"'+' width="'+tmpSize*1
7732
7922
  * @param {string} pStrategy - 'single' or 'system'/'paired'
7733
7923
  * @param {string} pDefaultMode - 'light' or 'dark' (only consulted for single)
7734
7924
  * @param {number} [pSizePx]
7735
- */function iconForTheme(pStrategy,pDefaultMode,pSizePx){if(pStrategy==='single'){return pDefaultMode==='dark'?iconMoon(pSizePx):iconSun(pSizePx);}return iconPaired(pSizePx);}module.exports={iconSun:iconSun,iconMoon:iconMoon,iconSystem:iconSystem,iconPaired:iconPaired,iconChevronDown:iconChevronDown,iconForTheme:iconForTheme,DEFAULT_SIZE_PX:_DEFAULT_SIZE_PX};},{}],174:[function(require,module,exports){/**
7925
+ */function iconForTheme(pStrategy,pDefaultMode,pSizePx){if(pStrategy==='single'){return pDefaultMode==='dark'?iconMoon(pSizePx):iconSun(pSizePx);}return iconPaired(pSizePx);}module.exports={iconSun:iconSun,iconMoon:iconMoon,iconSystem:iconSystem,iconPaired:iconPaired,iconChevronDown:iconChevronDown,iconForTheme:iconForTheme,DEFAULT_SIZE_PX:_DEFAULT_SIZE_PX};},{}],176:[function(require,module,exports){/**
7736
7926
  * Theme-Persistence — reads and writes the user's selected theme + mode
7737
7927
  * to the browser's localStorage so a reload restores the same look.
7738
7928
  *
@@ -7805,7 +7995,7 @@ return'<svg class="pict-theme-icon pict-theme-icon-paired"'+' width="'+tmpSize*1
7805
7995
  */function save(pKey,pState){let tmpStore=_getStorage();if(!tmpStore)return false;if(!pState||typeof pState.ThemeHash!=='string'||pState.ThemeHash.length===0)return false;let tmpEntry={Version:SCHEMA_VERSION,ThemeHash:pState.ThemeHash,Mode:typeof pState.Mode==='string'&&pState.Mode.length>0?pState.Mode:null,Scale:typeof pState.Scale==='number'&&isFinite(pState.Scale)&&pState.Scale>0?pState.Scale:null,SavedAt:new Date().toISOString()};try{tmpStore.setItem(pKey,JSON.stringify(tmpEntry));return true;}catch(pErr){return false;}}/**
7806
7996
  * Remove the saved theme state for a key. Useful for "reset to
7807
7997
  * defaults" actions.
7808
- */function clear(pKey){let tmpStore=_getStorage();if(!tmpStore)return false;try{tmpStore.removeItem(pKey);return true;}catch(pErr){return false;}}module.exports={resolveKey:resolveKey,load:load,save:save,clear:clear,STORAGE_PREFIX:STORAGE_PREFIX,SCHEMA_VERSION:SCHEMA_VERSION};},{}],175:[function(require,module,exports){/**
7998
+ */function clear(pKey){let tmpStore=_getStorage();if(!tmpStore)return false;try{tmpStore.removeItem(pKey);return true;}catch(pErr){return false;}}module.exports={resolveKey:resolveKey,load:load,save:save,clear:clear,STORAGE_PREFIX:STORAGE_PREFIX,SCHEMA_VERSION:SCHEMA_VERSION};},{}],177:[function(require,module,exports){/**
7809
7999
  * Theme-Scale — viewport scale (zoom) selector independent of theme bundles.
7810
8000
  *
7811
8001
  * Scale is a *user preference*, not a property of any particular theme:
@@ -7861,7 +8051,7 @@ return':root {\n'+'\t'+CSS_VAR_NAME+': '+pScale+';\n'+'}\n'+'html {\n'+'\tzoom:
7861
8051
  */function applyScale(pScale){let tmpPrev=_activeScale;let tmpNext=_clamp(pScale);_activeScale=tmpNext;_injectStyleElement(_buildCSS(tmpNext));if(tmpPrev!==tmpNext){_fireChange(tmpNext,tmpPrev);}return tmpNext;}function getActive(){return _activeScale;}function onChange(fCallback){if(typeof fCallback!=='function')return function(){};_listeners.push(fCallback);return function(){offChange(fCallback);};}function offChange(fCallback){let tmpIdx=_listeners.indexOf(fCallback);if(tmpIdx>=0)_listeners.splice(tmpIdx,1);}function _fireChange(pNewScale,pOldScale){for(let i=0;i<_listeners.length;i++){try{_listeners[i](pNewScale,pOldScale);}catch(pErr){/* listener failures must not break callers */}}}/**
7862
8052
  * Reset to default scale and remove the injected style element. Useful
7863
8053
  * for tests + "reset to defaults" affordances.
7864
- */function reset(){_activeScale=DEFAULT_SCALE;if(typeof document!=='undefined'){let tmpStyleEl=document.getElementById(STYLE_ELEMENT_ID);if(tmpStyleEl&&tmpStyleEl.parentNode)tmpStyleEl.parentNode.removeChild(tmpStyleEl);}_listeners=[];}module.exports={applyScale:applyScale,getActive:getActive,onChange:onChange,offChange:offChange,reset:reset,PRESETS:PRESETS,DEFAULT_SCALE:DEFAULT_SCALE,MIN_SCALE:MIN_SCALE,MAX_SCALE:MAX_SCALE,STYLE_ELEMENT_ID:STYLE_ELEMENT_ID,CSS_VAR_NAME:CSS_VAR_NAME};},{}],176:[function(require,module,exports){module.exports={"Hash":"1970s-console","Name":"1970s Console","Category":"Fun","Version":"0.0.1","Description":"Amber phosphor on brown-black Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1A1000","Secondary":"#140C00","Tertiary":"#1E1400","Panel":"#1C1200","Viewer":"#100A00","Hover":"#2A1C00","Selected":"#3A2800","Thumb":"#140C00"},"Text":{"Primary":"#FFAA00","Secondary":"#DD8800","Muted":"#AA6600","Dim":"#884400","Placeholder":"#663300"},"Brand":{"Accent":"#FFCC00","AccentHover":"#FFDD44"},"Border":{"Default":"#2A1800","Light":"#3A2200"},"Status":{"Danger":"#FF4400","DangerMuted":"#AA3300"},"Scrollbar":{"Track":"#2A1800","Hover":"#3A2800"},"Selection":{"Background":"rgba(255, 204, 0, 0.2)"},"Focus":{"Outline":"#FFCC00"},"Syntax":{"Keyword":"#FFB000","String":"#FFD080","Number":"#FFB000","Comment":"#806020","Operator":"#FFB000","Punctuation":"#FFD080","Function":"#FFB000","Variable":"#FFE090","Type":"#FFB000","Builtin":"#FFB000","Property":"#FF6E40","Tag":"#FF6E40","AttrName":"#FFB000","AttrValue":"#FFD080"}},"Typography":{"Family":{"Sans":"'Courier New', 'Lucida Console', monospace","Mono":"'Courier New', 'Lucida Console', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#DD8800","Accent":"#FFCC00","Muted":"#884400","Light":"#1E1400","WarmBeige":"#201800","TealTint":"#1A1000","Lavender":"#1C1200","AmberTint":"#221800","PdfFill":"#201000","PdfText":"#FF4400"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.405Z","CompilerVersion":1};},{}],177:[function(require,module,exports){module.exports={"Hash":"1980s-console","Name":"1980s Console","Category":"Fun","Version":"0.0.1","Description":"Green phosphor on black Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#001200","Secondary":"#000E00","Tertiary":"#001600","Panel":"#001400","Viewer":"#000A00","Hover":"#002200","Selected":"#003800","Thumb":"#000E00"},"Text":{"Primary":"#00FF00","Secondary":"#00CC00","Muted":"#009900","Dim":"#006600","Placeholder":"#004400"},"Brand":{"Accent":"#00FF66","AccentHover":"#44FF88"},"Border":{"Default":"#002A00","Light":"#003A00"},"Status":{"Danger":"#FF0000","DangerMuted":"#AA0000"},"Scrollbar":{"Track":"#002A00","Hover":"#004400"},"Selection":{"Background":"rgba(0, 255, 102, 0.2)"},"Focus":{"Outline":"#00FF66"},"Syntax":{"Keyword":"#00FF00","String":"#90FF90","Number":"#FFFF00","Comment":"#208020","Operator":"#00FF00","Punctuation":"#90FF90","Function":"#00FF00","Variable":"#C0FFC0","Type":"#FFFF00","Builtin":"#FFFF00","Property":"#FF4040","Tag":"#FF4040","AttrName":"#FFFF00","AttrValue":"#90FF90"}},"Typography":{"Family":{"Sans":"'Courier New', monospace","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#00CC00","Accent":"#00FF66","Muted":"#006600","Light":"#001600","WarmBeige":"#001A00","TealTint":"#001200","Lavender":"#001400","AmberTint":"#001800","PdfFill":"#140000","PdfText":"#FF0000"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.406Z","CompilerVersion":1};},{}],178:[function(require,module,exports){module.exports={"Hash":"1990s-website","Name":"1990s Web Site","Category":"Fun","Version":"0.0.1","Description":"Blue links on grey, beveled Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#C0C0C0","Secondary":"#B0B0B0","Tertiary":"#A8A8A8","Panel":"#B8B8B8","Viewer":"#D0D0D0","Hover":"#B8B8D0","Selected":"#000080","Thumb":"#B0B0B0"},"Text":{"Primary":"#000000","Secondary":"#000080","Muted":"#404040","Dim":"#606060","Placeholder":"#808080"},"Brand":{"Accent":"#0000FF","AccentHover":"#0000CC"},"Border":{"Default":"#808080","Light":"#A0A0A0"},"Status":{"Danger":"#FF0000","DangerMuted":"#990000"},"Scrollbar":{"Track":"#808080","Hover":"#606060"},"Selection":{"Background":"rgba(0, 0, 128, 0.3)"},"Focus":{"Outline":"#0000FF"},"Syntax":{"Keyword":"#0000FF","String":"#008000","Number":"#A52A2A","Comment":"#808080","Operator":"#000080","Punctuation":"#000000","Function":"#0000A0","Variable":"#000000","Type":"#A52A2A","Builtin":"#A52A2A","Property":"#800080","Tag":"#800080","AttrName":"#A52A2A","AttrValue":"#008000"}},"Typography":{"Family":{"Sans":"'Times New Roman', Times, serif","Mono":"'Courier New', Courier, monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#000080","Accent":"#0000FF","Muted":"#606060","Light":"#A8A8A8","WarmBeige":"#B0B0B0","TealTint":"#A0A0A0","Lavender":"#ABABD0","AmberTint":"#B8B0A0","PdfFill":"#C0A0A0","PdfText":"#FF0000"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.406Z","CompilerVersion":1};},{}],179:[function(require,module,exports){/**
8054
+ */function reset(){_activeScale=DEFAULT_SCALE;if(typeof document!=='undefined'){let tmpStyleEl=document.getElementById(STYLE_ELEMENT_ID);if(tmpStyleEl&&tmpStyleEl.parentNode)tmpStyleEl.parentNode.removeChild(tmpStyleEl);}_listeners=[];}module.exports={applyScale:applyScale,getActive:getActive,onChange:onChange,offChange:offChange,reset:reset,PRESETS:PRESETS,DEFAULT_SCALE:DEFAULT_SCALE,MIN_SCALE:MIN_SCALE,MAX_SCALE:MAX_SCALE,STYLE_ELEMENT_ID:STYLE_ELEMENT_ID,CSS_VAR_NAME:CSS_VAR_NAME};},{}],178:[function(require,module,exports){module.exports={"Hash":"1970s-console","Name":"1970s Console","Category":"Fun","Version":"0.0.1","Description":"Amber phosphor on brown-black Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1A1000","Secondary":"#140C00","Tertiary":"#1E1400","Panel":"#1C1200","Viewer":"#100A00","Hover":"#2A1C00","Selected":"#3A2800","Thumb":"#140C00"},"Text":{"Primary":"#FFAA00","Secondary":"#DD8800","Muted":"#AA6600","Dim":"#884400","Placeholder":"#663300"},"Brand":{"Accent":"#FFCC00","AccentHover":"#FFDD44"},"Border":{"Default":"#2A1800","Light":"#3A2200"},"Status":{"Danger":"#FF4400","DangerMuted":"#AA3300"},"Scrollbar":{"Track":"#2A1800","Hover":"#3A2800"},"Selection":{"Background":"rgba(255, 204, 0, 0.2)"},"Focus":{"Outline":"#FFCC00"},"Syntax":{"Keyword":"#FFB000","String":"#FFD080","Number":"#FFB000","Comment":"#806020","Operator":"#FFB000","Punctuation":"#FFD080","Function":"#FFB000","Variable":"#FFE090","Type":"#FFB000","Builtin":"#FFB000","Property":"#FF6E40","Tag":"#FF6E40","AttrName":"#FFB000","AttrValue":"#FFD080"}},"Typography":{"Family":{"Sans":"'Courier New', 'Lucida Console', monospace","Mono":"'Courier New', 'Lucida Console', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#DD8800","Accent":"#FFCC00","Muted":"#884400","Light":"#1E1400","WarmBeige":"#201800","TealTint":"#1A1000","Lavender":"#1C1200","AmberTint":"#221800","PdfFill":"#201000","PdfText":"#FF4400"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.405Z","CompilerVersion":1};},{}],179:[function(require,module,exports){module.exports={"Hash":"1980s-console","Name":"1980s Console","Category":"Fun","Version":"0.0.1","Description":"Green phosphor on black Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#001200","Secondary":"#000E00","Tertiary":"#001600","Panel":"#001400","Viewer":"#000A00","Hover":"#002200","Selected":"#003800","Thumb":"#000E00"},"Text":{"Primary":"#00FF00","Secondary":"#00CC00","Muted":"#009900","Dim":"#006600","Placeholder":"#004400"},"Brand":{"Accent":"#00FF66","AccentHover":"#44FF88"},"Border":{"Default":"#002A00","Light":"#003A00"},"Status":{"Danger":"#FF0000","DangerMuted":"#AA0000"},"Scrollbar":{"Track":"#002A00","Hover":"#004400"},"Selection":{"Background":"rgba(0, 255, 102, 0.2)"},"Focus":{"Outline":"#00FF66"},"Syntax":{"Keyword":"#00FF00","String":"#90FF90","Number":"#FFFF00","Comment":"#208020","Operator":"#00FF00","Punctuation":"#90FF90","Function":"#00FF00","Variable":"#C0FFC0","Type":"#FFFF00","Builtin":"#FFFF00","Property":"#FF4040","Tag":"#FF4040","AttrName":"#FFFF00","AttrValue":"#90FF90"}},"Typography":{"Family":{"Sans":"'Courier New', monospace","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#00CC00","Accent":"#00FF66","Muted":"#006600","Light":"#001600","WarmBeige":"#001A00","TealTint":"#001200","Lavender":"#001400","AmberTint":"#001800","PdfFill":"#140000","PdfText":"#FF0000"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.406Z","CompilerVersion":1};},{}],180:[function(require,module,exports){module.exports={"Hash":"1990s-website","Name":"1990s Web Site","Category":"Fun","Version":"0.0.1","Description":"Blue links on grey, beveled Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#C0C0C0","Secondary":"#B0B0B0","Tertiary":"#A8A8A8","Panel":"#B8B8B8","Viewer":"#D0D0D0","Hover":"#B8B8D0","Selected":"#000080","Thumb":"#B0B0B0"},"Text":{"Primary":"#000000","Secondary":"#000080","Muted":"#404040","Dim":"#606060","Placeholder":"#808080"},"Brand":{"Accent":"#0000FF","AccentHover":"#0000CC"},"Border":{"Default":"#808080","Light":"#A0A0A0"},"Status":{"Danger":"#FF0000","DangerMuted":"#990000"},"Scrollbar":{"Track":"#808080","Hover":"#606060"},"Selection":{"Background":"rgba(0, 0, 128, 0.3)"},"Focus":{"Outline":"#0000FF"},"Syntax":{"Keyword":"#0000FF","String":"#008000","Number":"#A52A2A","Comment":"#808080","Operator":"#000080","Punctuation":"#000000","Function":"#0000A0","Variable":"#000000","Type":"#A52A2A","Builtin":"#A52A2A","Property":"#800080","Tag":"#800080","AttrName":"#A52A2A","AttrValue":"#008000"}},"Typography":{"Family":{"Sans":"'Times New Roman', Times, serif","Mono":"'Courier New', Courier, monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#000080","Accent":"#0000FF","Muted":"#606060","Light":"#A8A8A8","WarmBeige":"#B0B0B0","TealTint":"#A0A0A0","Lavender":"#ABABD0","AmberTint":"#B8B0A0","PdfFill":"#C0A0A0","PdfText":"#FF0000"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.406Z","CompilerVersion":1};},{}],181:[function(require,module,exports){/**
7865
8055
  * Theme Registry — runtime registry of every theme available to
7866
8056
  * pict-section-theme.
7867
8057
  *
@@ -7903,7 +8093,11 @@ this._loadStarterSet();}// ── Bundled starter set ────────
7903
8093
  // folder and append a row here. Runtime additions go via register()
7904
8094
  // from anywhere else in the codebase.
7905
8095
  _loadStarterSet(){const STARTER=[// Framework defaults
7906
- {Hash:'pict-default',Category:'Default',IsDefault:true,Bundle:require('./pict-default.json')},{Hash:'retold-mono',Category:'Default',Bundle:require('./retold-mono.json')},// App-extracted themes (named after their host app)
8096
+ // retold-default is the canonical ecosystem default (IsDefault).
8097
+ // pict-default is retained for backwards compatibility with any
8098
+ // consumer that explicitly opts in by Hash; it's no longer the
8099
+ // default theme returned when the picker resolves "the default".
8100
+ {Hash:'retold-default',Category:'Default',IsDefault:true,Bundle:require('./retold-default.json')},{Hash:'pict-default',Category:'Default',Bundle:require('./pict-default.json')},{Hash:'retold-mono',Category:'Default',Bundle:require('./retold-mono.json')},// App-extracted themes (named after their host app)
7907
8101
  {Hash:'retold-manager',Category:'App',Bundle:require('./retold-manager.json')},{Hash:'retold-content-system',Category:'App',Bundle:require('./retold-content-system.json')},{Hash:'retold-labs',Category:'App',Bundle:require('./retold-labs.json')},{Hash:'retold-labs-cyberpunk',Category:'App',Bundle:require('./retold-labs-cyberpunk.json')},{Hash:'retold-labs-retro',Category:'App',Bundle:require('./retold-labs-retro.json')},{Hash:'ultravisor-desert-dusk',Category:'App',Bundle:require('./ultravisor-desert-dusk.json')},{Hash:'ultravisor-desert-day',Category:'App',Bundle:require('./ultravisor-desert-day.json')},{Hash:'ultravisor-desert-sunset',Category:'App',Bundle:require('./ultravisor-desert-sunset.json')},{Hash:'ultravisor-professional-light',Category:'App',Bundle:require('./ultravisor-professional-light.json')},{Hash:'ultravisor-professional-dark',Category:'App',Bundle:require('./ultravisor-professional-dark.json')},{Hash:'ultravisor-desert-canyon',Category:'App',Bundle:require('./ultravisor-desert-canyon.json')},// Paired light/dark themes
7908
8102
  {Hash:'ocean',Category:'Paired',Bundle:require('./ocean.json')},{Hash:'playground-corp',Category:'Paired',Bundle:require('./playground-corp.json')},// Flow themes (originally pict-section-flow's internal presets; now first-class
7909
8103
  // pict-section-theme entries so other apps can adopt the same color identity)
@@ -7957,7 +8151,7 @@ get length(){return this._themes.size;}[Symbol.iterator](){return this._themes.v
7957
8151
  const _Registry=new ThemeRegistry();// Numeric-index proxy: `registry[0]` returns the first entry, matching
7958
8152
  // the legacy "catalog as array" shape. Wraps the singleton so existing
7959
8153
  // `tmpEntry = _CATALOG[i]` loops keep working.
7960
- const _IndexedRegistry=new Proxy(_Registry,{get(pTarget,pProp,pReceiver){if(typeof pProp==='string'&&/^\d+$/.test(pProp)){let tmpIdx=parseInt(pProp,10);let tmpList=pTarget.list();return tmpList[tmpIdx];}return Reflect.get(pTarget,pProp,pReceiver);},has(pTarget,pProp){if(typeof pProp==='string'&&/^\d+$/.test(pProp)){return parseInt(pProp,10)<pTarget.length;}return Reflect.has(pTarget,pProp);}});module.exports=_IndexedRegistry;module.exports.ThemeRegistry=ThemeRegistry;},{"./1970s-console.json":176,"./1980s-console.json":177,"./1990s-website.json":178,"./afternoon.json":180,"./cyberpunk.json":181,"./databeacon-beos.json":182,"./databeacon-mac-classic.json":183,"./databeacon-next.json":184,"./databeacon-nineteen-97.json":185,"./databeacon-sgi.json":186,"./daylight.json":187,"./early-2000s.json":188,"./evening.json":189,"./flow-blueprint.json":190,"./flow-modern.json":191,"./flow-mono.json":192,"./flow-retro-80s.json":193,"./flow-retro-90s.json":194,"./flow-sketch.json":195,"./flow-whiteboard.json":196,"./forest.json":197,"./hotdog.json":198,"./mobile-debug.json":199,"./neo-tokyo.json":200,"./night.json":201,"./ocean.json":202,"./pict-default.json":203,"./playground-corp.json":204,"./retold-content-system.json":205,"./retold-labs-cyberpunk.json":206,"./retold-labs-retro.json":207,"./retold-labs.json":208,"./retold-manager.json":209,"./retold-mono.json":210,"./solarized-dark.json":211,"./synthwave.json":212,"./twilight.json":213,"./ultravisor-desert-canyon.json":214,"./ultravisor-desert-day.json":215,"./ultravisor-desert-dusk.json":216,"./ultravisor-desert-sunset.json":217,"./ultravisor-professional-dark.json":218,"./ultravisor-professional-light.json":219}],180:[function(require,module,exports){module.exports={"Hash":"afternoon","Name":"Afternoon","Category":"Grey","Version":"0.0.1","Description":"Warm light grey, softer contrast Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#E8E4E0","Secondary":"#DAD6D2","Tertiary":"#D0CCC8","Panel":"#DDD9D5","Viewer":"#F0ECE8","Hover":"#CCC8C4","Selected":"#B8B4B0","Thumb":"#DAD6D2"},"Text":{"Primary":"#2A2A2A","Secondary":"#404040","Muted":"#707070","Dim":"#909090","Placeholder":"#B0B0B0"},"Brand":{"Accent":"#555555","AccentHover":"#333333"},"Border":{"Default":"#C0BCB8","Light":"#D0CCC8"},"Status":{"Danger":"#AA3333","DangerMuted":"#886655"},"Scrollbar":{"Track":"#B8B4B0","Hover":"#A0A09C"},"Selection":{"Background":"rgba(85, 85, 85, 0.2)"},"Focus":{"Outline":"#555555"},"Syntax":{"Keyword":"#7038A0","String":"#2E7A3A","Number":"#A86B00","Comment":"#888888","Operator":"#1F6FB5","Punctuation":"#666666","Function":"#3357C7","Variable":"#222222","Type":"#A86B00","Builtin":"#A86B00","Property":"#B62828","Tag":"#B62828","AttrName":"#A86B00","AttrValue":"#2E7A3A"}},"Typography":{"Family":{"Sans":"Georgia, 'Times New Roman', serif","Mono":"'Courier New', Courier, monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#404040","Accent":"#555555","Muted":"#909090","Light":"#D0CCC8","WarmBeige":"#DAD6D2","TealTint":"#CCC8C4","Lavender":"#D2D0CE","AmberTint":"#D8D2C8","PdfFill":"#D8C8C0","PdfText":"#AA3333"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.406Z","CompilerVersion":1};},{}],181:[function(require,module,exports){module.exports={"Hash":"cyberpunk","Name":"Cyberpunk","Category":"Fun","Version":"0.0.1","Description":"Electric green on black Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#0A0E0A","Secondary":"#060806","Tertiary":"#0E120E","Panel":"#0C100C","Viewer":"#040604","Hover":"#142014","Selected":"#1A3A1A","Thumb":"#060806"},"Text":{"Primary":"#C8FFC8","Secondary":"#A0D8A0","Muted":"#608860","Dim":"#406040","Placeholder":"#305030"},"Brand":{"Accent":"#00FF41","AccentHover":"#44FF77"},"Border":{"Default":"#1A2A1A","Light":"#224022"},"Status":{"Danger":"#FF3333","DangerMuted":"#AA2222"},"Scrollbar":{"Track":"#1A2A1A","Hover":"#2A4A2A"},"Selection":{"Background":"rgba(0, 255, 65, 0.2)"},"Focus":{"Outline":"#00FF41"},"Syntax":{"Keyword":"#FF00FF","String":"#00FF41","Number":"#FFFF00","Comment":"#406040","Operator":"#00FFFF","Punctuation":"#A0D8A0","Function":"#FF00FF","Variable":"#C8FFC8","Type":"#FFFF00","Builtin":"#FFFF00","Property":"#FF3333","Tag":"#FF3333","AttrName":"#FFFF00","AttrValue":"#00FF41"}},"Typography":{"Family":{"Sans":"'Lucida Console', 'Courier New', monospace","Mono":"'Lucida Console', 'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#A0D8A0","Accent":"#00FF41","Muted":"#406040","Light":"#0E120E","WarmBeige":"#101610","TealTint":"#0C140C","Lavender":"#0E120E","AmberTint":"#141810","PdfFill":"#181010","PdfText":"#FF3333"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.406Z","CompilerVersion":1};},{}],182:[function(require,module,exports){module.exports={"Hash":"databeacon-beos","Name":"DataBeacon \u2014 BeOS","Version":"0.0.1","Description":"BeOS palette \u2014 cool teals with orange accents. Light: sky-blue desktop. Dark: deep ocean panels with cyan highlights.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#e0e8ec","Dark":"#0a1a22"},"Secondary":{"Light":"#c8d6de","Dark":"#102530"},"Tertiary":{"Light":"#d4dfe5","Dark":"#0d1f29"},"Panel":{"Light":"#f0f4f6","Dark":"#142430"},"Input":{"Light":"#ffffff","Dark":"#1b313f"},"Hover":{"Light":"#d7dee2","Dark":"#091820"},"Selected":{"Light":"#c2d4da","Dark":"#19353e"}},"Text":{"Primary":{"Light":"#101820","Dark":"#b0d0e0"},"Secondary":{"Light":"#40525e","Dark":"#7a98a8"},"Muted":{"Light":"#6e828e","Dark":"#556a78"},"Placeholder":{"Light":"#95a5ae","Dark":"#3a4e59"},"OnBrand":{"Light":"#ffffff","Dark":"#0a1a22"}},"Brand":{"Primary":{"Light":"#3a7a8a","Dark":"#60b0c0"},"PrimaryHover":{"Light":"#4e98aa","Dark":"#80ccdc"},"Accent":{"Light":"#3a7a8a","Dark":"#60b0c0"},"AccentHover":{"Light":"#4e98aa","Dark":"#80ccdc"}},"Border":{"Default":{"Light":"#8ba3b0","Dark":"#466070"},"Light":{"Light":"#b5c5ce","Dark":"#283d49"},"Strong":{"Light":"#6f828c","Dark":"#384c59"}},"Status":{"Success":{"Light":"#2a7a4a","Dark":"#4ac06a"},"Warning":{"Light":"#cc9930","Dark":"#ffc860"},"Error":{"Light":"#cc5530","Dark":"#ff8060"},"Info":{"Light":"#3a7a8a","Dark":"#60b0c0"}},"Scrollbar":{"Track":{"Light":"#c8d6de","Dark":"#102530"},"Thumb":{"Light":"#7c929f","Dark":"#4d6574"},"Hover":{"Light":"#6e828e","Dark":"#556a78"}},"Selection":{"Background":{"Light":"#aac4cc","Dark":"#254a54"},"Text":{"Light":"#101820","Dark":"#b0d0e0"}},"Focus":{"Outline":{"Light":"#3a7a8a","Dark":"#60b0c0"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#cc5530","Dark":"#ff8060"},"String":{"Light":"#2a7a4a","Dark":"#4ac06a"},"Number":{"Light":"#cc9930","Dark":"#ffc860"},"Comment":{"Light":"#6e828e","Dark":"#556a78"},"Operator":{"Light":"#3a7a8a","Dark":"#60b0c0"},"Punctuation":{"Light":"#40525e","Dark":"#7a98a8"},"Function":{"Light":"#3a7a8a","Dark":"#60b0c0"},"Variable":{"Light":"#101820","Dark":"#b0d0e0"},"Type":{"Light":"#cc9930","Dark":"#ffc860"},"Builtin":{"Light":"#cc9930","Dark":"#ffc860"},"Property":{"Light":"#cc5530","Dark":"#ff8060"},"Tag":{"Light":"#cc5530","Dark":"#ff8060"},"AttrName":{"Light":"#cc9930","Dark":"#ffc860"},"AttrValue":{"Light":"#2a7a4a","Dark":"#4ac06a"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"BeOS","Tagline":"Connect, introspect, and expose remote databases"}};},{}],183:[function(require,module,exports){module.exports={"Hash":"databeacon-mac-classic","Name":"DataBeacon \u2014 Mac Classic","Version":"0.0.1","Description":"Mac OS 8/9 Platinum palette \u2014 soft greys with sky blue accents. Light: classic Mac platinum. Dark: charcoal panels with the same blue accent family.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#dddddd","Dark":"#202020"},"Secondary":{"Light":"#cccccc","Dark":"#2a2a2a"},"Tertiary":{"Light":"#d4d4d4","Dark":"#252525"},"Panel":{"Light":"#f0f0f0","Dark":"#2e2e2e"},"Input":{"Light":"#ffffff","Dark":"#3a3a3a"},"Hover":{"Light":"#d4d4d4","Dark":"#1e1e1e"},"Selected":{"Light":"#c0cce3","Dark":"#2b3748"}},"Text":{"Primary":{"Light":"#000000","Dark":"#dddddd"},"Secondary":{"Light":"#444444","Dark":"#b0b0b0"},"Muted":{"Light":"#777777","Dark":"#777777"},"Placeholder":{"Light":"#9a9a9a","Dark":"#585858"},"OnBrand":{"Light":"#ffffff","Dark":"#0a0a0a"}},"Brand":{"Primary":{"Light":"#4080ff","Dark":"#60a0ff"},"PrimaryHover":{"Light":"#60a0ff","Dark":"#80b8ff"},"Accent":{"Light":"#4080ff","Dark":"#60a0ff"},"AccentHover":{"Light":"#60a0ff","Dark":"#80b8ff"}},"Border":{"Default":{"Light":"#999999","Dark":"#555555"},"Light":{"Light":"#bbbbbb","Dark":"#3a3a3a"},"Strong":{"Light":"#7a7a7a","Dark":"#444444"}},"Status":{"Success":{"Light":"#339933","Dark":"#60cc60"},"Warning":{"Light":"#cc6600","Dark":"#ff9933"},"Error":{"Light":"#cc0000","Dark":"#ff4060"},"Info":{"Light":"#4080ff","Dark":"#60a0ff"}},"Scrollbar":{"Track":{"Light":"#cccccc","Dark":"#2a2a2a"},"Thumb":{"Light":"#888888","Dark":"#666666"},"Hover":{"Light":"#777777","Dark":"#777777"}},"Selection":{"Background":{"Light":"#aabfe7","Dark":"#344867"},"Text":{"Light":"#000000","Dark":"#dddddd"}},"Focus":{"Outline":{"Light":"#4080ff","Dark":"#60a0ff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#cc0000","Dark":"#ff4060"},"String":{"Light":"#339933","Dark":"#60cc60"},"Number":{"Light":"#cc6600","Dark":"#ff9933"},"Comment":{"Light":"#777777","Dark":"#777777"},"Operator":{"Light":"#4080ff","Dark":"#60a0ff"},"Punctuation":{"Light":"#444444","Dark":"#b0b0b0"},"Function":{"Light":"#4080ff","Dark":"#60a0ff"},"Variable":{"Light":"#000000","Dark":"#dddddd"},"Type":{"Light":"#cc6600","Dark":"#ff9933"},"Builtin":{"Light":"#cc6600","Dark":"#ff9933"},"Property":{"Light":"#cc0000","Dark":"#ff4060"},"Tag":{"Light":"#cc0000","Dark":"#ff4060"},"AttrName":{"Light":"#cc6600","Dark":"#ff9933"},"AttrValue":{"Light":"#339933","Dark":"#60cc60"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"Mac Classic","Tagline":"Connect, introspect, and expose remote databases"}};},{}],184:[function(require,module,exports){module.exports={"Hash":"databeacon-next","Name":"DataBeacon \u2014 NeXT","Version":"0.0.1","Description":"NeXTSTEP palette \u2014 stone backgrounds with rich purple accents. Light: warm stone. Dark: deep aubergine with lavender highlights.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#e8e6dd","Dark":"#1a1420"},"Secondary":{"Light":"#d6d3c8","Dark":"#221a2c"},"Tertiary":{"Light":"#dfdcd2","Dark":"#1e1726"},"Panel":{"Light":"#f5f3ed","Dark":"#251c2e"},"Input":{"Light":"#ffffff","Dark":"#2f253a"},"Hover":{"Light":"#dedcd4","Dark":"#18131e"},"Selected":{"Light":"#d1c7d2","Dark":"#352a42"}},"Text":{"Primary":{"Light":"#1e1a26","Dark":"#e8e6dd"},"Secondary":{"Light":"#4c465a","Dark":"#b8b4c6"},"Muted":{"Light":"#7a7488","Dark":"#7a7488"},"Placeholder":{"Light":"#a09ba5","Dark":"#585263"},"OnBrand":{"Light":"#ffffff","Dark":"#1a1420"}},"Brand":{"Primary":{"Light":"#6a3fa0","Dark":"#b090e0"},"PrimaryHover":{"Light":"#8557c0","Dark":"#c8aef0"},"Accent":{"Light":"#6a3fa0","Dark":"#b090e0"},"AccentHover":{"Light":"#8557c0","Dark":"#c8aef0"}},"Border":{"Default":{"Light":"#9a96a6","Dark":"#5e5468"},"Light":{"Light":"#c1bec1","Dark":"#3c3444"},"Strong":{"Light":"#7b7884","Dark":"#4b4353"}},"Status":{"Success":{"Light":"#3a7a3a","Dark":"#7acc7a"},"Warning":{"Light":"#b88a00","Dark":"#ffcf4a"},"Error":{"Light":"#aa2c3a","Dark":"#ff6a80"},"Info":{"Light":"#6a3fa0","Dark":"#b090e0"}},"Scrollbar":{"Track":{"Light":"#d6d3c8","Dark":"#221a2c"},"Thumb":{"Light":"#8a8597","Dark":"#6c6478"},"Hover":{"Light":"#7a7488","Dark":"#7a7488"}},"Selection":{"Background":{"Light":"#bfb0c9","Dark":"#4a3b5d"},"Text":{"Light":"#1e1a26","Dark":"#e8e6dd"}},"Focus":{"Outline":{"Light":"#6a3fa0","Dark":"#b090e0"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#aa2c3a","Dark":"#ff6a80"},"String":{"Light":"#3a7a3a","Dark":"#7acc7a"},"Number":{"Light":"#b88a00","Dark":"#ffcf4a"},"Comment":{"Light":"#7a7488","Dark":"#7a7488"},"Operator":{"Light":"#6a3fa0","Dark":"#b090e0"},"Punctuation":{"Light":"#4c465a","Dark":"#b8b4c6"},"Function":{"Light":"#6a3fa0","Dark":"#b090e0"},"Variable":{"Light":"#1e1a26","Dark":"#e8e6dd"},"Type":{"Light":"#b88a00","Dark":"#ffcf4a"},"Builtin":{"Light":"#b88a00","Dark":"#ffcf4a"},"Property":{"Light":"#aa2c3a","Dark":"#ff6a80"},"Tag":{"Light":"#aa2c3a","Dark":"#ff6a80"},"AttrName":{"Light":"#b88a00","Dark":"#ffcf4a"},"AttrValue":{"Light":"#3a7a3a","Dark":"#7acc7a"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"NeXT","Tagline":"Connect, introspect, and expose remote databases"}};},{}],185:[function(require,module,exports){module.exports={"Hash":"databeacon-nineteen-97","Name":"DataBeacon \u2014 1997 (Win95/98)","Version":"0.0.1","Description":"Windows 95/98 retro palette \u2014 beige + navy + maroon. Light: classic Win95 desktop. Dark: indigo-grey background with sky/coral accents.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ece9d8","Dark":"#1e1e2e"},"Secondary":{"Light":"#d8d3b8","Dark":"#26263a"},"Tertiary":{"Light":"#e2dec8","Dark":"#222234"},"Panel":{"Light":"#fffbf0","Dark":"#2a2a3a"},"Input":{"Light":"#ffffff","Dark":"#343450"},"Hover":{"Light":"#e2dfcf","Dark":"#1c1c2c"},"Selected":{"Light":"#c1bfc8","Dark":"#2f3553"}},"Text":{"Primary":{"Light":"#1a1a1a","Dark":"#ece9d8"},"Secondary":{"Light":"#4a4a4a","Dark":"#b8b6a8"},"Muted":{"Light":"#7a7a7a","Dark":"#7e7c70"},"Placeholder":{"Light":"#a1a09a","Dark":"#5c5b58"},"OnBrand":{"Light":"#ffffff","Dark":"#1a1a1a"}},"Brand":{"Primary":{"Light":"#000080","Dark":"#80a0ff"},"PrimaryHover":{"Light":"#0000cc","Dark":"#a0b8ff"},"Accent":{"Light":"#000080","Dark":"#80a0ff"},"AccentHover":{"Light":"#0000cc","Dark":"#a0b8ff"}},"Border":{"Default":{"Light":"#808080","Dark":"#4e4e68"},"Light":{"Light":"#b6b4ac","Dark":"#36364b"},"Strong":{"Light":"#666666","Dark":"#3e3e53"}},"Status":{"Success":{"Light":"#008000","Dark":"#80ff80"},"Warning":{"Light":"#808000","Dark":"#ffcc00"},"Error":{"Light":"#800000","Dark":"#ff8080"},"Info":{"Light":"#000080","Dark":"#80c0ff"}},"Scrollbar":{"Track":{"Light":"#d8d3b8","Dark":"#26263a"},"Thumb":{"Light":"#7d7d7d","Dark":"#66656c"},"Hover":{"Light":"#7a7a7a","Dark":"#7e7c70"}},"Selection":{"Background":{"Light":"#a09ebb","Dark":"#3d4770"},"Text":{"Light":"#1a1a1a","Dark":"#ece9d8"}},"Focus":{"Outline":{"Light":"#000080","Dark":"#80a0ff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#800000","Dark":"#ff8080"},"String":{"Light":"#008000","Dark":"#80ff80"},"Number":{"Light":"#808000","Dark":"#ffcc00"},"Comment":{"Light":"#7a7a7a","Dark":"#7e7c70"},"Operator":{"Light":"#000080","Dark":"#80a0ff"},"Punctuation":{"Light":"#4a4a4a","Dark":"#b8b6a8"},"Function":{"Light":"#000080","Dark":"#80c0ff"},"Variable":{"Light":"#1a1a1a","Dark":"#ece9d8"},"Type":{"Light":"#808000","Dark":"#ffcc00"},"Builtin":{"Light":"#808000","Dark":"#ffcc00"},"Property":{"Light":"#800000","Dark":"#ff8080"},"Tag":{"Light":"#800000","Dark":"#ff8080"},"AttrName":{"Light":"#808000","Dark":"#ffcc00"},"AttrValue":{"Light":"#008000","Dark":"#80ff80"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"1997 (Win95/98)","Tagline":"Connect, introspect, and expose remote databases"}};},{}],186:[function(require,module,exports){module.exports={"Hash":"databeacon-sgi","Name":"DataBeacon \u2014 SGI","Version":"0.0.1","Description":"SGI Indy / IRIX palette \u2014 magenta with cyan highlights. Light: signature SGI grey. Dark: deep workstation black with the same hot magenta.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#c8c8c8","Dark":"#1a1a1a"},"Secondary":{"Light":"#b8b8b8","Dark":"#232323"},"Tertiary":{"Light":"#c0c0c0","Dark":"#1e1e1e"},"Panel":{"Light":"#dcdcdc","Dark":"#252525"},"Input":{"Light":"#ffffff","Dark":"#2e2e2e"},"Hover":{"Light":"#c0c0c0","Dark":"#181818"},"Selected":{"Light":"#c8a9bb","Dark":"#432635"}},"Text":{"Primary":{"Light":"#202020","Dark":"#e0e0e0"},"Secondary":{"Light":"#4a4a4a","Dark":"#a8a8a8"},"Muted":{"Light":"#6e6e6e","Dark":"#707070"},"Placeholder":{"Light":"#8d8d8d","Dark":"#515151"},"OnBrand":{"Light":"#ffffff","Dark":"#0a0a0a"}},"Brand":{"Primary":{"Light":"#c82080","Dark":"#ff60b0"},"PrimaryHover":{"Light":"#e040a0","Dark":"#ff80c8"},"Accent":{"Light":"#c82080","Dark":"#ff60b0"},"AccentHover":{"Light":"#e040a0","Dark":"#ff80c8"}},"Border":{"Default":{"Light":"#808080","Dark":"#505050"},"Light":{"Light":"#a4a4a4","Dark":"#353535"},"Strong":{"Light":"#666666","Dark":"#404040"}},"Status":{"Success":{"Light":"#208040","Dark":"#50d080"},"Warning":{"Light":"#e8a818","Dark":"#ffd050"},"Error":{"Light":"#e83018","Dark":"#ff6060"},"Info":{"Light":"#3080c0","Dark":"#60c0ff"}},"Scrollbar":{"Track":{"Light":"#b8b8b8","Dark":"#232323"},"Thumb":{"Light":"#777777","Dark":"#606060"},"Hover":{"Light":"#6e6e6e","Dark":"#707070"}},"Selection":{"Background":{"Light":"#c892b0","Dark":"#63304a"},"Text":{"Light":"#202020","Dark":"#e0e0e0"}},"Focus":{"Outline":{"Light":"#c82080","Dark":"#ff60b0"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#e83018","Dark":"#ff6060"},"String":{"Light":"#208040","Dark":"#50d080"},"Number":{"Light":"#e8a818","Dark":"#ffd050"},"Comment":{"Light":"#6e6e6e","Dark":"#707070"},"Operator":{"Light":"#c82080","Dark":"#ff60b0"},"Punctuation":{"Light":"#4a4a4a","Dark":"#a8a8a8"},"Function":{"Light":"#3080c0","Dark":"#60c0ff"},"Variable":{"Light":"#202020","Dark":"#e0e0e0"},"Type":{"Light":"#e8a818","Dark":"#ffd050"},"Builtin":{"Light":"#e8a818","Dark":"#ffd050"},"Property":{"Light":"#e83018","Dark":"#ff6060"},"Tag":{"Light":"#e83018","Dark":"#ff6060"},"AttrName":{"Light":"#e8a818","Dark":"#ffd050"},"AttrValue":{"Light":"#208040","Dark":"#50d080"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"SGI","Tagline":"Connect, introspect, and expose remote databases"}};},{}],187:[function(require,module,exports){module.exports={"Hash":"daylight","Name":"Daylight","Category":"Grey","Version":"0.0.1","Description":"Bright white, dark text Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#FFFFFF","Secondary":"#F0F0F0","Tertiary":"#E8E8E8","Panel":"#F5F5F5","Viewer":"#FAFAFA","Hover":"#E0E0E0","Selected":"#C8C8C8","Thumb":"#F0F0F0"},"Text":{"Primary":"#1A1A1A","Secondary":"#333333","Muted":"#666666","Dim":"#888888","Placeholder":"#AAAAAA"},"Brand":{"Accent":"#444444","AccentHover":"#222222"},"Border":{"Default":"#D0D0D0","Light":"#E0E0E0"},"Status":{"Danger":"#CC0000","DangerMuted":"#884444"},"Scrollbar":{"Track":"#C0C0C0","Hover":"#A0A0A0"},"Selection":{"Background":"rgba(68, 68, 68, 0.2)"},"Focus":{"Outline":"#444444"},"Syntax":{"Keyword":"#7038A0","String":"#2E7A3A","Number":"#A86B00","Comment":"#888888","Operator":"#1F6FB5","Punctuation":"#444444","Function":"#3357C7","Variable":"#222222","Type":"#A86B00","Builtin":"#A86B00","Property":"#B62828","Tag":"#B62828","AttrName":"#A86B00","AttrValue":"#2E7A3A"}},"Typography":{"Family":{"Sans":"'Segoe UI', system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Fira Code', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#333333","Accent":"#444444","Muted":"#888888","Light":"#E8E8E8","WarmBeige":"#F0F0F0","TealTint":"#E0E0E0","Lavender":"#EBEBEB","AmberTint":"#F0EDE8","PdfFill":"#F0E0E0","PdfText":"#CC0000"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],188:[function(require,module,exports){module.exports={"Hash":"early-2000s","Name":"Early 2000s Web","Category":"Fun","Version":"0.0.1","Description":"Teal and silver, Web 2.0 Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#E8F4F8","Secondary":"#D0E8EE","Tertiary":"#C0DDE6","Panel":"#D8EEF2","Viewer":"#F0F8FA","Hover":"#B0D4E0","Selected":"#88C4D8","Thumb":"#D0E8EE"},"Text":{"Primary":"#1A3A4A","Secondary":"#2A4A5A","Muted":"#5A7A8A","Dim":"#7A9AAA","Placeholder":"#9ABACA"},"Brand":{"Accent":"#0099CC","AccentHover":"#00AADD"},"Border":{"Default":"#A0C8D8","Light":"#B8D8E4"},"Status":{"Danger":"#CC3300","DangerMuted":"#994422"},"Scrollbar":{"Track":"#A0C8D8","Hover":"#88B8CC"},"Selection":{"Background":"rgba(0, 153, 204, 0.2)"},"Focus":{"Outline":"#0099CC"},"Syntax":{"Keyword":"#1A4080","String":"#2E7A3A","Number":"#A86B00","Comment":"#888888","Operator":"#1F6FB5","Punctuation":"#333333","Function":"#3357C7","Variable":"#222222","Type":"#A86B00","Builtin":"#A86B00","Property":"#B62828","Tag":"#B62828","AttrName":"#A86B00","AttrValue":"#2E7A3A"}},"Typography":{"Family":{"Sans":"Verdana, Geneva, Tahoma, sans-serif","Mono":"'Lucida Console', Monaco, monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#2A4A5A","Accent":"#0099CC","Muted":"#7A9AAA","Light":"#C0DDE6","WarmBeige":"#D0E8EE","TealTint":"#B0D8E4","Lavender":"#C8DCE6","AmberTint":"#D8E0D0","PdfFill":"#E0C8C0","PdfText":"#CC3300"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],189:[function(require,module,exports){module.exports={"Hash":"evening","Name":"Evening","Category":"Grey","Version":"0.0.1","Description":"Medium grey, transitional Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#484848","Secondary":"#3C3C3C","Tertiary":"#424242","Panel":"#454545","Viewer":"#363636","Hover":"#525252","Selected":"#606060","Thumb":"#3C3C3C"},"Text":{"Primary":"#E0E0E0","Secondary":"#D0D0D0","Muted":"#A0A0A0","Dim":"#888888","Placeholder":"#707070"},"Brand":{"Accent":"#C0C0C0","AccentHover":"#E0E0E0"},"Border":{"Default":"#585858","Light":"#606060"},"Status":{"Danger":"#FF6666","DangerMuted":"#AA6666"},"Scrollbar":{"Track":"#585858","Hover":"#686868"},"Selection":{"Background":"rgba(192, 192, 192, 0.25)"},"Focus":{"Outline":"#C0C0C0"},"Syntax":{"Keyword":"#B894FF","String":"#A8D8B0","Number":"#FFB880","Comment":"#8A8A8A","Operator":"#7EC0FF","Punctuation":"#BBBBBB","Function":"#FFCC80","Variable":"#DDDDDD","Type":"#FFB880","Builtin":"#FFB880","Property":"#FF9494","Tag":"#FF9494","AttrName":"#FFB880","AttrValue":"#A8D8B0"}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Fira Code', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#D0D0D0","Accent":"#C0C0C0","Muted":"#888888","Light":"#424242","WarmBeige":"#484848","TealTint":"#3E3E3E","Lavender":"#444444","AmberTint":"#4A4640","PdfFill":"#4A3C3C","PdfText":"#FF6666"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],190:[function(require,module,exports){module.exports={"Hash":"flow-blueprint","Name":"Flow Blueprint","Version":"0.0.1","Description":"Technical-drawing aesthetic — white-on-navy with yellow selection. Single-mode (always dark blueprint).","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1a3a6a","Secondary":"#142e54","Tertiary":"rgba(255,255,255,0.1)","Panel":"#1a3a6a","Hover":"rgba(255,255,255,0.06)","Selected":"rgba(255,221,68,0.18)"},"Text":{"Primary":"#ffffff","Secondary":"rgba(255,255,255,0.7)","Muted":"rgba(255,255,255,0.5)","OnBrand":"#0d2244"},"Brand":{"Primary":"#ffdd44","PrimaryHover":"#ffe978","Accent":"#88ffbb"},"Border":{"Default":"rgba(255,255,255,0.6)","Light":"rgba(255,255,255,0.15)","Strong":"#ffffff"},"Status":{"Success":"#88ffbb","Warning":"#ffdd44","Error":"#ff8888","Info":"#88bbff"},"Scrollbar":{"Track":"rgba(255,255,255,0.05)","Thumb":"rgba(255,255,255,0.3)","Hover":"rgba(255,255,255,0.5)"},"Focus":{"Outline":"#ffdd44"},"Shadow":{"Color":"rgba(0, 0, 0, 0.4)"}}},"Brand":{"Name":"Flow Blueprint","Tagline":"Technical drawing on navy"}};},{}],191:[function(require,module,exports){module.exports={"Hash":"flow-modern","Name":"Flow Modern","Version":"0.0.1","Description":"The default modern look for pict-section-flow — clean, theme-neutral. Paired light/dark.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ffffff","Dark":"#1a1a1a"},"Secondary":{"Light":"#f5f5f5","Dark":"#242424"},"Tertiary":{"Light":"#ecf0f1","Dark":"#2e2e2e"},"Panel":{"Light":"#ffffff","Dark":"#222222"},"Hover":{"Light":"#eef3f7","Dark":"#2a2a2a"},"Selected":{"Light":"#dde7f3","Dark":"#2a3550"}},"Text":{"Primary":{"Light":"#2c3e50","Dark":"#ededed"},"Secondary":{"Light":"#7f8c8d","Dark":"#bdbdbd"},"Muted":{"Light":"#95a5a6","Dark":"#888888"},"OnBrand":{"Light":"#ffffff","Dark":"#1a1a1a"}},"Brand":{"Primary":{"Light":"#2255aa","Dark":"#5b8aff"},"PrimaryHover":{"Light":"#1a4488","Dark":"#7ba4ff"},"Accent":{"Light":"#1abc9c","Dark":"#4fd1b5"}},"Border":{"Default":{"Light":"#bdc3c7","Dark":"#3a3a3a"},"Light":{"Light":"#ecf0f1","Dark":"#2c2c2c"},"Strong":{"Light":"#95a5a6","Dark":"#5a5a5a"}},"Status":{"Success":{"Light":"#27ae60","Dark":"#5fc377"},"Warning":{"Light":"#f39c12","Dark":"#f0b84a"},"Error":{"Light":"#e74c3c","Dark":"#ff7373"},"Info":{"Light":"#3498db","Dark":"#5fb4ff"}},"Scrollbar":{"Track":{"Light":"#ecf0f1","Dark":"#1f1f1f"},"Thumb":{"Light":"#bdc3c7","Dark":"#3f3f3f"},"Hover":{"Light":"#95a5a6","Dark":"#5a5a5a"}},"Focus":{"Outline":{"Light":"#2255aa","Dark":"#5b8aff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}}}},"Brand":{"Name":"Flow Modern","Tagline":"Clean modern flow editor look"}};},{}],192:[function(require,module,exports){module.exports={"Hash":"flow-mono","Name":"Flow Mono","Version":"0.0.1","Description":"High-contrast monochrome flow editor look. Paired light/dark — pure black on white or white on black.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ffffff","Dark":"#000000"},"Secondary":{"Light":"#f0f0f0","Dark":"#1a1a1a"},"Tertiary":{"Light":"#e0e0e0","Dark":"#262626"},"Panel":{"Light":"#ffffff","Dark":"#000000"},"Hover":{"Light":"#eeeeee","Dark":"#1f1f1f"},"Selected":{"Light":"#dddddd","Dark":"#333333"}},"Text":{"Primary":{"Light":"#000000","Dark":"#ffffff"},"Secondary":{"Light":"#444444","Dark":"#cccccc"},"Muted":{"Light":"#888888","Dark":"#888888"},"OnBrand":{"Light":"#ffffff","Dark":"#000000"}},"Brand":{"Primary":{"Light":"#444444","Dark":"#bbbbbb"},"PrimaryHover":{"Light":"#222222","Dark":"#dddddd"},"Accent":{"Light":"#666666","Dark":"#999999"}},"Border":{"Default":{"Light":"#000000","Dark":"#ffffff"},"Light":{"Light":"#cccccc","Dark":"#333333"},"Strong":{"Light":"#000000","Dark":"#ffffff"}},"Status":{"Success":{"Light":"#000000","Dark":"#ffffff"},"Warning":{"Light":"#000000","Dark":"#ffffff"},"Error":{"Light":"#000000","Dark":"#ffffff"},"Info":{"Light":"#000000","Dark":"#ffffff"}},"Scrollbar":{"Track":{"Light":"#f0f0f0","Dark":"#1a1a1a"},"Thumb":{"Light":"#888888","Dark":"#888888"},"Hover":{"Light":"#444444","Dark":"#cccccc"}},"Focus":{"Outline":{"Light":"#000000","Dark":"#ffffff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.25)","Dark":"rgba(255, 255, 255, 0.25)"}}}},"Brand":{"Name":"Flow Mono","Tagline":"Monochrome ink-on-paper"}};},{}],193:[function(require,module,exports){module.exports={"Hash":"flow-retro-80s","Name":"Flow Retro 80s","Version":"0.0.1","Description":"Neon-on-purple synthwave aesthetic for the flow editor. Single-mode (always dark) — '80s arcade glow.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#0a0015","Secondary":"#1a0a2e","Tertiary":"#2a0a4e","Panel":"#1a0a2e","Hover":"#2a0a4e","Selected":"#3a1466"},"Text":{"Primary":"#00ffff","Secondary":"#ff66ff","Muted":"#9966cc","OnBrand":"#0a0015"},"Brand":{"Primary":"#ff00ff","PrimaryHover":"#ff66ff","Accent":"#00ffff"},"Border":{"Default":"#ff00ff","Light":"#2a0a4e","Strong":"#ff00ff"},"Status":{"Success":"#00ff66","Warning":"#ffdd44","Error":"#ff4477","Info":"#00ffff"},"Scrollbar":{"Track":"#1a0a2e","Thumb":"#ff00ff","Hover":"#ff66ff"},"Focus":{"Outline":"#00ffff"},"Shadow":{"Color":"rgba(255, 0, 255, 0.4)"}}},"Brand":{"Name":"Flow Retro 80s","Tagline":"Neon synthwave glow"}};},{}],194:[function(require,module,exports){module.exports={"Hash":"flow-retro-90s","Name":"Flow Retro 90s","Version":"0.0.1","Description":"Windows-95 aesthetic — gray panels, navy title bars, teal desktop. Single-mode (always its specific palette).","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#008080","Secondary":"#c0c0c0","Tertiary":"#d0d0d0","Panel":"#c0c0c0","Hover":"#d0d0d0","Selected":"#a8c8e0"},"Text":{"Primary":"#000000","Secondary":"#404040","Muted":"#606060","OnBrand":"#ffffff"},"Brand":{"Primary":"#000080","PrimaryHover":"#0000a0","Accent":"#008000"},"Border":{"Default":"#808080","Light":"#a0a0a0","Strong":"#404040"},"Status":{"Success":"#008000","Warning":"#808000","Error":"#800000","Info":"#000080"},"Scrollbar":{"Track":"#c0c0c0","Thumb":"#808080","Hover":"#404040"},"Focus":{"Outline":"#008080"},"Shadow":{"Color":"#404040"}}},"Brand":{"Name":"Flow Retro 90s","Tagline":"Workstation chrome from the 90s"}};},{}],195:[function(require,module,exports){module.exports={"Hash":"flow-sketch","Name":"Flow Sketch","Version":"0.0.1","Description":"Warm-paper sketch aesthetic for the flow editor. Single-mode (always light) — sketches live on paper.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#fffef5","Secondary":"#faf8ed","Tertiary":"#f0ece0","Panel":"#fffef5","Hover":"#f4f0e2","Selected":"#e8dfc8"},"Text":{"Primary":"#333333","Secondary":"#555555","Muted":"#888888","OnBrand":"#ffffff"},"Brand":{"Primary":"#2255aa","PrimaryHover":"#1a4488","Accent":"#c47b5a"},"Border":{"Default":"#444444","Light":"#ccccaa","Strong":"#222222"},"Status":{"Success":"#55aa77","Warning":"#d4a040","Error":"#c44836","Info":"#5577bb"},"Scrollbar":{"Track":"#f0ece0","Thumb":"#c5c0a8","Hover":"#9e9a82"},"Focus":{"Outline":"#2255aa"},"Shadow":{"Color":"rgba(0, 0, 0, 0.08)"}}},"Brand":{"Name":"Flow Sketch","Tagline":"Hand-drawn paper aesthetic"}};},{}],196:[function(require,module,exports){module.exports={"Hash":"flow-whiteboard","Name":"Flow Whiteboard","Version":"0.0.1","Description":"Minimal whiteboard aesthetic — transparent fills with colored brackets per node type. Single-mode (light).","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#ffffff","Secondary":"#fafafa","Tertiary":"#f5f5f5","Panel":"#ffffff","Hover":"#f0f0f0","Selected":"#e0eaff"},"Text":{"Primary":"#333333","Secondary":"#555555","Muted":"#999999","OnBrand":"#ffffff"},"Brand":{"Primary":"#2255aa","PrimaryHover":"#1a4488","Accent":"#1abc9c"},"Border":{"Default":"#888888","Light":"#cccccc","Strong":"#555555"},"Status":{"Success":"#27ae60","Warning":"#f39c12","Error":"#e74c3c","Info":"#3498db"},"Scrollbar":{"Track":"#f5f5f5","Thumb":"#cccccc","Hover":"#888888"},"Focus":{"Outline":"#2255aa"},"Shadow":{"Color":"rgba(0, 0, 0, 0.06)"}}},"Brand":{"Name":"Flow Whiteboard","Tagline":"Minimal whiteboard sketching"}};},{}],197:[function(require,module,exports){module.exports={"Hash":"forest","Name":"Forest","Category":"Fun","Version":"0.0.1","Description":"Deep greens and earth browns Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1A2018","Secondary":"#141A12","Tertiary":"#1E2620","Panel":"#1C221A","Viewer":"#101410","Hover":"#283828","Selected":"#344834","Thumb":"#141A12"},"Text":{"Primary":"#D0DCC8","Secondary":"#B0C4A8","Muted":"#809878","Dim":"#607858","Placeholder":"#486040"},"Brand":{"Accent":"#6AAF5C","AccentHover":"#88CC78"},"Border":{"Default":"#2A3A28","Light":"#3A4A38"},"Status":{"Danger":"#CC4422","DangerMuted":"#884422"},"Scrollbar":{"Track":"#2A3A28","Hover":"#3A4A38"},"Selection":{"Background":"rgba(106, 175, 92, 0.25)"},"Focus":{"Outline":"#6AAF5C"},"Syntax":{"Keyword":"#D4E157","String":"#A5D6A7","Number":"#FFB74D","Comment":"#5D6F58","Operator":"#80CBC4","Punctuation":"#A8C8A0","Function":"#FFCC80","Variable":"#C8E6C9","Type":"#FFB74D","Builtin":"#FFB74D","Property":"#FF8A65","Tag":"#FF8A65","AttrName":"#FFB74D","AttrValue":"#A5D6A7"}},"Typography":{"Family":{"Sans":"'Palatino Linotype', 'Book Antiqua', Palatino, serif","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#B0C4A8","Accent":"#6AAF5C","Muted":"#607858","Light":"#1E2620","WarmBeige":"#22281E","TealTint":"#1A221A","Lavender":"#1E2420","AmberTint":"#262218","PdfFill":"#261A18","PdfText":"#CC4422"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],198:[function(require,module,exports){module.exports={"Hash":"hotdog","Name":"Hotdog","Category":"Fun","Version":"0.0.1","Description":"Red and mustard yellow, garish Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#8B0000","Secondary":"#6B0000","Tertiary":"#7B0000","Panel":"#750000","Viewer":"#550000","Hover":"#AA1111","Selected":"#BB3300","Thumb":"#6B0000"},"Text":{"Primary":"#FFD700","Secondary":"#FFC000","Muted":"#CC9900","Dim":"#AA7700","Placeholder":"#886600"},"Brand":{"Accent":"#FFD700","AccentHover":"#FFEE44"},"Border":{"Default":"#AA2222","Light":"#BB3333"},"Status":{"Danger":"#FFFF00","DangerMuted":"#CCCC00"},"Scrollbar":{"Track":"#AA2222","Hover":"#CC3333"},"Selection":{"Background":"rgba(255, 215, 0, 0.3)"},"Focus":{"Outline":"#FFD700"},"Syntax":{"Keyword":"#FFD800","String":"#FFFFFF","Number":"#FFD800","Comment":"#9C2828","Operator":"#FFD800","Punctuation":"#FFFFFF","Function":"#FFD800","Variable":"#FFFFFF","Type":"#FFD800","Builtin":"#FFD800","Property":"#FFD800","Tag":"#FFD800","AttrName":"#FFD800","AttrValue":"#FFFFFF"}},"Typography":{"Family":{"Sans":"Impact, 'Arial Black', sans-serif","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#FFC000","Accent":"#FFD700","Muted":"#AA7700","Light":"#7B0000","WarmBeige":"#800000","TealTint":"#6B0000","Lavender":"#780000","AmberTint":"#7A1000","PdfFill":"#6B0000","PdfText":"#FFFF00"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],199:[function(require,module,exports){module.exports={"Hash":"mobile-debug","Name":"Mobile Container Debug","Category":"Debug","Version":"0.0.1","Description":"Unique color per container for layout debugging Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#FF0000","Secondary":"#00CCCC","Tertiary":"#00AA00","Panel":"#FFAA00","Viewer":"#333333","Hover":"rgba(255, 255, 255, 0.2)","Selected":"rgba(255, 255, 255, 0.3)","Thumb":"#AA00AA"},"Text":{"Primary":"#FFFFFF","Secondary":"#EEEEEE","Muted":"#CCCCCC","Dim":"#AAAAAA","Placeholder":"#888888"},"Brand":{"Accent":"#FFFF00","AccentHover":"#FFFF88"},"Border":{"Default":"#FFFFFF","Light":"#CCCCCC"},"Status":{"Danger":"#FF0000","DangerMuted":"#CC4444"},"Scrollbar":{"Track":"#888888","Hover":"#AAAAAA"},"Selection":{"Background":"rgba(255, 255, 0, 0.3)"},"Focus":{"Outline":"#FFFF00"},"Syntax":{"Keyword":"#A626A4","String":"#50A14F","Number":"#986801","Comment":"#A0A1A7","Operator":"#0184BC","Punctuation":"#383A42","Function":"#4078F2","Variable":"#383A42","Type":"#C18401","Builtin":"#986801","Property":"#E45649","Tag":"#E45649","AttrName":"#986801","AttrValue":"#50A14F"}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#FFFFFF","Accent":"#FFFF00","Muted":"#CCCCCC","Light":"#333333","WarmBeige":"#FFAA00","TealTint":"#00CCCC","Lavender":"#AA00AA","AmberTint":"#FFAA00","PdfFill":"#FF4444","PdfText":"#FFFFFF"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],200:[function(require,module,exports){module.exports={"Hash":"neo-tokyo","Name":"Neo-Tokyo","Category":"Fun","Version":"0.0.1","Description":"Neon pink on dark navy Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#0D0D2B","Secondary":"#080820","Tertiary":"#121235","Panel":"#0F0F28","Viewer":"#060615","Hover":"#1A1A42","Selected":"#2A1845","Thumb":"#080820"},"Text":{"Primary":"#E8E0F0","Secondary":"#D0C8E0","Muted":"#9088A8","Dim":"#6860A0","Placeholder":"#504888"},"Brand":{"Accent":"#FF2D8A","AccentHover":"#FF5AA0"},"Border":{"Default":"#2A2050","Light":"#382868"},"Status":{"Danger":"#FF4466","DangerMuted":"#AA3355"},"Scrollbar":{"Track":"#2A2050","Hover":"#3A3068"},"Selection":{"Background":"rgba(255, 45, 138, 0.25)"},"Focus":{"Outline":"#FF2D8A"},"Syntax":{"Keyword":"#FF4E9F","String":"#A1FFCE","Number":"#FFD93D","Comment":"#807A9E","Operator":"#7DF9FF","Punctuation":"#C0BCEB","Function":"#FFCC80","Variable":"#E0D8FF","Type":"#FFD93D","Builtin":"#FFD93D","Property":"#FF6E6E","Tag":"#FF6E6E","AttrName":"#FFD93D","AttrValue":"#A1FFCE"}},"Typography":{"Family":{"Sans":"'Courier New', monospace","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#D0C8E0","Accent":"#FF2D8A","Muted":"#6860A0","Light":"#121235","WarmBeige":"#141438","TealTint":"#100E30","Lavender":"#141232","AmberTint":"#1A1228","PdfFill":"#1A1028","PdfText":"#FF4466"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],201:[function(require,module,exports){module.exports={"Hash":"night","Name":"Night","Category":"Grey","Version":"0.0.1","Description":"Near-black, minimal contrast Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#0A0A0A","Secondary":"#060606","Tertiary":"#0E0E0E","Panel":"#0C0C0C","Viewer":"#040404","Hover":"#161616","Selected":"#252525","Thumb":"#060606"},"Text":{"Primary":"#888888","Secondary":"#707070","Muted":"#555555","Dim":"#444444","Placeholder":"#333333"},"Brand":{"Accent":"#666666","AccentHover":"#808080"},"Border":{"Default":"#1A1A1A","Light":"#222222"},"Status":{"Danger":"#AA4444","DangerMuted":"#663333"},"Scrollbar":{"Track":"#1A1A1A","Hover":"#2A2A2A"},"Selection":{"Background":"rgba(102, 102, 102, 0.2)"},"Focus":{"Outline":"#666666"},"Syntax":{"Keyword":"#C28FFF","String":"#B0E0B0","Number":"#FFA070","Comment":"#888888","Operator":"#80C8FF","Punctuation":"#BBBBBB","Function":"#FFD080","Variable":"#DDDDDD","Type":"#FFB870","Builtin":"#FFB870","Property":"#FF9090","Tag":"#FF9090","AttrName":"#FFB870","AttrValue":"#B0E0B0"}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Fira Code', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#707070","Accent":"#666666","Muted":"#444444","Light":"#0E0E0E","WarmBeige":"#121212","TealTint":"#0C0C0C","Lavender":"#101010","AmberTint":"#141210","PdfFill":"#141010","PdfText":"#AA4444"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],202:[function(require,module,exports){module.exports={"Hash":"ocean","Name":"Ocean","Version":"0.0.1","Description":"Cool blue-greens (180-235°) with warm coral / amber punctuation (5-30°). Paired light/dark; feels like sea + sun on the horizon.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#f4f9fb","Dark":"#0e1820"},"Secondary":{"Light":"#e8f1f5","Dark":"#15212b"},"Tertiary":{"Light":"#dde9ee","Dark":"#1f2c38"},"Panel":{"Light":"#ffffff","Dark":"#1a2632"},"Hover":{"Light":"#e0eef3","Dark":"#26323f"},"Selected":{"Light":"#c8e1ea","Dark":"#1e3a48"}},"Text":{"Primary":{"Light":"#0e2832","Dark":"#e1ecf0"},"Secondary":{"Light":"#3a5662","Dark":"#a8c0c8"},"Muted":{"Light":"#6c828b","Dark":"#7a8e96"},"Placeholder":{"Light":"#90a4ad","Dark":"#5a6e76"}},"Brand":{"Primary":{"Light":"#0e7c8a","Dark":"#4dc4d4"},"PrimaryHover":{"Light":"#0a6371","Dark":"#6dd4e2"},"Accent":{"Light":"#e8a050","Dark":"#f0b878"}},"Border":{"Default":{"Light":"#c0d5dc","Dark":"#2c3d49"},"Light":{"Light":"#d8e6ec","Dark":"#1f2c38"},"Strong":{"Light":"#90b0bc","Dark":"#4a6470"}},"Status":{"Success":{"Light":"#1f8a52","Dark":"#4dc97a"},"Warning":{"Light":"#d68910","Dark":"#f0b020"},"Error":{"Light":"#c93a3a","Dark":"#ff6464"},"Info":{"Light":"#0e7c8a","Dark":"#4dc4d4"}},"Data":{"1":{"Light":"#0e7c8a","Dark":"#4dc4d4"},"2":{"Light":"#e8a050","Dark":"#f0b878"},"3":{"Light":"#1f8a52","Dark":"#4dc97a"},"4":{"Light":"#c93a3a","Dark":"#ff6464"},"5":{"Light":"#b07bac","Dark":"#cda6cf"},"6":{"Light":"#d68910","Dark":"#f0b020"},"7":{"Light":"#5a7f9e","Dark":"#82a0c4"},"8":{"Light":"#6c828b","Dark":"#a8c0c8"}},"Scrollbar":{"Track":{"Light":"#dde9ee","Dark":"#15212b"},"Thumb":{"Light":"#a8c2cc","Dark":"#324658"},"Hover":{"Light":"#7a99a4","Dark":"#506876"}},"Selection":{"Background":{"Light":"#c8e1ea","Dark":"#1e3a48"},"Text":{"Light":"#0e2832","Dark":"#e1ecf0"}},"Focus":{"Outline":{"Light":"#0e7c8a","Dark":"#4dc4d4"}},"Shadow":{"Color":{"Light":"rgba(14, 40, 50, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#0e7c8a","Dark":"#4dc4d4"},"String":{"Light":"#1f8a52","Dark":"#4dc97a"},"Number":{"Light":"#d68910","Dark":"#f0b020"},"Comment":{"Light":"#90a4ad","Dark":"#5a6e76"},"Operator":{"Light":"#3a5662","Dark":"#a8c0c8"},"Punctuation":{"Light":"#3a5662","Dark":"#a8c0c8"},"Function":{"Light":"#0e7c8a","Dark":"#4dc4d4"},"Variable":{"Light":"#0e2832","Dark":"#e1ecf0"},"Type":{"Light":"#e8a050","Dark":"#f0b878"},"Builtin":{"Light":"#d68910","Dark":"#f0b020"},"Property":{"Light":"#c93a3a","Dark":"#ff6464"},"Tag":{"Light":"#c93a3a","Dark":"#ff6464"},"AttrName":{"Light":"#d68910","Dark":"#f0b020"},"AttrValue":{"Light":"#1f8a52","Dark":"#4dc97a"}},"Editor":{"LineNumberBackground":{"Light":"#e8f1f5","Dark":"#15212b"},"LineNumberText":{"Light":"#90a4ad","Dark":"#5a6e76"},"CurrentLineHighlight":{"Light":"#e0eef3","Dark":"#26323f"},"SelectionBackground":{"Light":"#c8e1ea","Dark":"#1e3a48"},"GutterBorder":{"Light":"#d8e6ec","Dark":"#1f2c38"}}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif","Serif":"Georgia, Cambria, Times New Roman, Times, serif","Mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.45","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Shadow":{"SM":"0 1px 2px var(--theme-color-shadow-color)","MD":"0 2px 6px var(--theme-color-shadow-color)","LG":"0 6px 18px var(--theme-color-shadow-color)"},"ZIndex":{"Base":"0","Dropdown":"100","Sticky":"200","Overlay":"900","Modal":"1000","Toast":"2000","Tooltip":"3000"},"Duration":{"Fast":"100ms","Normal":"200ms","Slow":"400ms"}},"Brand":{"Name":"Ocean","Tagline":"Cool waters, warm sun"}};},{}],203:[function(require,module,exports){module.exports={"Hash":"pict-default","Name":"Pict Default","Version":"0.0.1","Description":"The reference paired light/dark theme for pict-based applications. Neutral palette suitable for any app; dark mode is mid-grey rather than pure black to reduce eye strain.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ffffff","Dark":"#1a1a1a"},"Secondary":{"Light":"#f5f5f5","Dark":"#242424"},"Tertiary":{"Light":"#ebebeb","Dark":"#2e2e2e"},"Panel":{"Light":"#ffffff","Dark":"#222222"},"Hover":{"Light":"#f0f0f0","Dark":"#2a2a2a"},"Selected":{"Light":"#e0eaff","Dark":"#2a3550"}},"Text":{"Primary":{"Light":"#1a1a1a","Dark":"#ededed"},"Secondary":{"Light":"#454545","Dark":"#bdbdbd"},"Muted":{"Light":"#6b6b6b","Dark":"#888888"},"Placeholder":{"Light":"#9a9a9a","Dark":"#6a6a6a"}},"Brand":{"Primary":{"Light":"#3357c7","Dark":"#6b8eff"},"PrimaryHover":{"Light":"#2848b3","Dark":"#88a4ff"},"Accent":{"Light":"#c75033","Dark":"#ff8a6b"}},"Border":{"Default":{"Light":"#d6d6d6","Dark":"#3a3a3a"},"Light":{"Light":"#e9e9e9","Dark":"#2c2c2c"},"Strong":{"Light":"#a0a0a0","Dark":"#5a5a5a"}},"Status":{"Success":{"Light":"#2e7a3a","Dark":"#5fc377"},"Warning":{"Light":"#a86b00","Dark":"#f0b84a"},"Error":{"Light":"#b62828","Dark":"#ff7373"},"Info":{"Light":"#1f6fb5","Dark":"#5fb4ff"}},"Data":{"1":{"Light":"#3357c7","Dark":"#6b8eff"},"2":{"Light":"#c75033","Dark":"#ff8a6b"},"3":{"Light":"#2e7a3a","Dark":"#5fc377"},"4":{"Light":"#a86b00","Dark":"#f0b84a"},"5":{"Light":"#6b3aac","Dark":"#b08eff"},"6":{"Light":"#1f6fb5","Dark":"#5fb4ff"},"7":{"Light":"#c63a8e","Dark":"#ff7fb6"},"8":{"Light":"#6b6b6b","Dark":"#bdbdbd"}},"Scrollbar":{"Track":{"Light":"#ebebeb","Dark":"#1f1f1f"},"Thumb":{"Light":"#c2c2c2","Dark":"#3f3f3f"},"Hover":{"Light":"#a0a0a0","Dark":"#5a5a5a"}},"Selection":{"Background":{"Light":"#bcd2ff","Dark":"#3a4f7a"},"Text":{"Light":"#1a1a1a","Dark":"#ededed"}},"Focus":{"Outline":{"Light":"#3357c7","Dark":"#6b8eff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#a626a4","Dark":"#c678dd"},"String":{"Light":"#50a14f","Dark":"#98c379"},"Number":{"Light":"#986801","Dark":"#d19a66"},"Comment":{"Light":"#a0a1a7","Dark":"#7f848e"},"Operator":{"Light":"#0184bc","Dark":"#56b6c2"},"Punctuation":{"Light":"#383a42","Dark":"#abb2bf"},"Function":{"Light":"#4078f2","Dark":"#61afef"},"Variable":{"Light":"#383a42","Dark":"#e06c75"},"Type":{"Light":"#c18401","Dark":"#e5c07b"},"Builtin":{"Light":"#986801","Dark":"#d19a66"},"Property":{"Light":"#e45649","Dark":"#e06c75"},"Tag":{"Light":"#e45649","Dark":"#e06c75"},"AttrName":{"Light":"#986801","Dark":"#d19a66"},"AttrValue":{"Light":"#50a14f","Dark":"#98c379"}},"Editor":{"LineNumberBackground":{"Light":"#f5f5f5","Dark":"#1f1f1f"},"LineNumberText":{"Light":"#9a9a9a","Dark":"#6a6a6a"},"CurrentLineHighlight":{"Light":"#f0f0f0","Dark":"#2a2a2a"},"SelectionBackground":{"Light":"#bcd2ff","Dark":"#3a4f7a"},"GutterBorder":{"Light":"#e9e9e9","Dark":"#2c2c2c"}}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif","Serif":"Georgia, Cambria, Times New Roman, Times, serif","Mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.45","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Shadow":{"SM":"0 1px 2px var(--theme-color-shadow-color)","MD":"0 2px 6px var(--theme-color-shadow-color)","LG":"0 6px 18px var(--theme-color-shadow-color)"},"ZIndex":{"Base":"0","Dropdown":"100","Sticky":"200","Overlay":"900","Modal":"1000","Toast":"2000","Tooltip":"3000"},"Duration":{"Fast":"100ms","Normal":"200ms","Slow":"400ms"}},"Brand":{"Name":"Pict","Tagline":"A JavaScript MVC framework for building web applications."},"CSS":[{"Hash":"pict-default-brand-accents","Priority":600,"Content":"/* pict-default — subtle brand-aware accents.\n Falls back gracefully to theme-color tokens when no brand is registered,\n so non-branded apps still look right. */\na { text-decoration-color: var(--brand-color-primary-mode, var(--theme-color-brand-primary, currentColor)); text-decoration-thickness: 2px; text-underline-offset: 3px; }\nh1 { border-bottom: 2px solid var(--brand-color-primary-mode, var(--theme-color-border-default, transparent)); padding-bottom: 6px; }\nh2 { border-bottom: 1px solid var(--brand-color-secondary-mode, var(--theme-color-border-light, transparent)); padding-bottom: 4px; }"}]};},{}],204:[function(require,module,exports){module.exports={"Hash":"playground-corp","Name":"Playground Corp","Version":"0.0.1","Description":"A different paired starter — corporate teal palette, rounder corners.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#fbfbfd","Dark":"#0e1416"},"Secondary":{"Light":"#eef3f6","Dark":"#152024"},"Tertiary":{"Light":"#dde7ec","Dark":"#1e2c30"},"Panel":{"Light":"#ffffff","Dark":"#162126"},"Hover":{"Light":"#e5edf1","Dark":"#1d292e"}},"Text":{"Primary":{"Light":"#0a1d22","Dark":"#e3edf0"},"Secondary":{"Light":"#3a5b65","Dark":"#a8c0c8"},"Muted":{"Light":"#647e87","Dark":"#7a929a"},"OnBrand":{"Light":"#ffffff","Dark":"#ffffff"}},"Brand":{"Primary":{"Light":"#117a8b","Dark":"#3ec0d4"},"PrimaryHover":{"Light":"#0e6271","Dark":"#5fd0e0"},"Accent":{"Light":"#d97706","Dark":"#fb923c"}},"Border":{"Default":{"Light":"#cfdce1","Dark":"#2c3a3f"},"Strong":{"Light":"#86a3ac","Dark":"#4d5e64"}},"Status":{"Success":{"Light":"#0f7a52","Dark":"#34d399"},"Warning":{"Light":"#b45309","Dark":"#fbbf24"},"Error":{"Light":"#9f1239","Dark":"#fb7185"},"Info":{"Light":"#1e6fbe","Dark":"#60a5fa"}},"Syntax":{"Keyword":{"Light":"#a626a4","Dark":"#c678dd"},"String":{"Light":"#50a14f","Dark":"#98c379"},"Number":{"Light":"#986801","Dark":"#d19a66"},"Comment":{"Light":"#a0a1a7","Dark":"#7f848e"},"Operator":{"Light":"#0184bc","Dark":"#56b6c2"},"Punctuation":{"Light":"#383a42","Dark":"#abb2bf"},"Function":{"Light":"#4078f2","Dark":"#61afef"},"Variable":{"Light":"#383a42","Dark":"#e06c75"},"Type":{"Light":"#c18401","Dark":"#e5c07b"},"Builtin":{"Light":"#986801","Dark":"#d19a66"},"Property":{"Light":"#e45649","Dark":"#e06c75"},"Tag":{"Light":"#e45649","Dark":"#e06c75"},"AttrName":{"Light":"#986801","Dark":"#d19a66"},"AttrValue":{"Light":"#50a14f","Dark":"#98c379"}}},"Typography":{"Family":{"Sans":"Inter, system-ui, sans-serif","Mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"},"Size":{"SM":"0.875rem","MD":"1rem","LG":"1.25rem"},"Weight":{"Regular":"400","Bold":"700"}},"Spacing":{"XS":"4px","SM":"8px","MD":"14px","LG":"20px","XL":"28px"},"Radius":{"SM":"4px","MD":"10px","LG":"16px"}},"Brand":{"Name":"Corp"},"Aliases":{"--pict-modal-overlay-bg":"Color.Background.Tertiary","--pict-modal-bg":"Color.Background.Panel","--pict-modal-fg":"Color.Text.Primary","--pict-modal-border":"Color.Border.Default","--pict-modal-shadow":"Color.Border.Strong","--pict-modal-header-bg":"Color.Background.Secondary","--pict-modal-header-fg":"Color.Text.Primary","--pict-modal-header-border":"Color.Border.Default","--pict-modal-btn-bg":"Color.Background.Secondary","--pict-modal-btn-fg":"Color.Text.Primary","--pict-modal-btn-hover-bg":"Color.Background.Hover","--pict-modal-btn-primary-bg":"Color.Brand.Primary","--pict-modal-btn-primary-fg":"Color.Text.OnBrand","--pict-modal-btn-primary-hover-bg":"Color.Brand.PrimaryHover","--pict-modal-btn-danger-bg":"Color.Status.Error","--pict-modal-btn-danger-fg":"Color.Text.OnBrand","--pict-modal-btn-danger-hover-bg":"Color.Status.Error","--pict-modal-toast-bg":"Color.Background.Panel","--pict-modal-toast-fg":"Color.Text.Primary","--pict-modal-toast-shadow":"Color.Border.Strong","--pict-modal-toast-success-bg":"Color.Status.Success","--pict-modal-toast-error-bg":"Color.Status.Error","--pict-modal-toast-warning-bg":"Color.Status.Warning","--pict-modal-toast-info-bg":"Color.Status.Info","--pict-modal-tooltip-bg":"Color.Background.Tertiary","--pict-modal-tooltip-fg":"Color.Text.Primary","--pict-modal-font-family":"Typography.Family.Sans","--pict-um-bg":"Color.Background.Panel","--pict-um-fg":"Color.Text.Primary","--pict-um-muted":"Color.Text.Muted","--pict-um-accent":"Color.Brand.Primary","--pict-um-border":"Color.Border.Default","--pict-um-border-soft":"Color.Border.Light","--pict-um-input-bg":"Color.Background.Primary","--pict-um-pill-bg":"Color.Background.Tertiary","--pict-um-font":"Typography.Family.Sans"}};},{}],205:[function(require,module,exports){module.exports={"Hash":"retold-content-system","Name":"Retold Content System","Version":"0.0.1","Description":"Default palette for the Retold Content System editor — warm beige with teal accents. Light side preserves the original retold-content-system.css palette verbatim; dark side keeps the teal accent and warms the backgrounds into a deep walnut/charcoal range so dark mode reads as the same family of values rather than a generic dark theme.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#F5F3EE","Dark":"#1F1B17"},"Secondary":{"Light":"#FAF8F4","Dark":"#2A251F"},"Tertiary":{"Light":"#F0EDE8","Dark":"#332D26"},"Panel":{"Light":"#FFFFFF","Dark":"#26221C"},"Hover":{"Light":"#EDE9E3","Dark":"#383028"},"Selected":{"Light":"#DCE9E7","Dark":"#1E3833"}},"Text":{"Primary":{"Light":"#3D3229","Dark":"#E8DCC8"},"Secondary":{"Light":"#5E5549","Dark":"#C0B5A4"},"Muted":{"Light":"#8A7F72","Dark":"#8E8478"},"Placeholder":{"Light":"#A89E91","Dark":"#6E6457"},"OnBrand":{"Light":"#FFFFFF","Dark":"#1F1B17"}},"Brand":{"Primary":{"Light":"#2E7D74","Dark":"#4FB3A6"},"PrimaryHover":{"Light":"#3A9E92","Dark":"#65CBBE"},"Accent":{"Light":"#2E7D74","Dark":"#4FB3A6"},"AccentHover":{"Light":"#3A9E92","Dark":"#65CBBE"}},"Border":{"Default":{"Light":"#DDD6CA","Dark":"#3F362C"},"Light":{"Light":"#E8E2D7","Dark":"#33291F"},"Strong":{"Light":"#C4BDB0","Dark":"#5A4F40"}},"Status":{"Success":{"Light":"#7BC47F","Dark":"#8FD493"},"Warning":{"Light":"#E8A94D","Dark":"#F0BE6E"},"Error":{"Light":"#D9534F","Dark":"#E87B78"},"Info":{"Light":"#5DA6C7","Dark":"#7FBDD8"}},"Data":{"1":{"Light":"#2E7D74","Dark":"#4FB3A6"},"2":{"Light":"#E8A94D","Dark":"#F0BE6E"},"3":{"Light":"#7BC47F","Dark":"#8FD493"},"4":{"Light":"#D9534F","Dark":"#E87B78"},"5":{"Light":"#A07ACC","Dark":"#BCA0DC"},"6":{"Light":"#5DA6C7","Dark":"#7FBDD8"},"7":{"Light":"#C46B8A","Dark":"#D8919E"},"8":{"Light":"#8A7F72","Dark":"#B8AFA4"}},"Scrollbar":{"Track":{"Light":"#F5F0E8","Dark":"#26221C"},"Thumb":{"Light":"#C4BDB0","Dark":"#4A4036"},"Hover":{"Light":"#8A7F72","Dark":"#6A5F50"}},"Selection":{"Background":{"Light":"#CDE3E0","Dark":"#2E5B55"},"Text":{"Light":"#3D3229","Dark":"#E8DCC8"}},"Focus":{"Outline":{"Light":"#2E7D74","Dark":"#4FB3A6"}},"Shadow":{"Color":{"Light":"rgba(61, 50, 41, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#A0532E","Dark":"#E89A6E"},"String":{"Light":"#3F8A52","Dark":"#8FD493"},"Number":{"Light":"#A86B00","Dark":"#E8A94D"},"Comment":{"Light":"#8A7F72","Dark":"#8E8478"},"Operator":{"Light":"#2E7D74","Dark":"#4FB3A6"},"Punctuation":{"Light":"#5E5549","Dark":"#C0B5A4"},"Function":{"Light":"#2E5E96","Dark":"#7FBDD8"},"Variable":{"Light":"#3D3229","Dark":"#E8DCC8"},"Type":{"Light":"#A86B00","Dark":"#E8A94D"},"Builtin":{"Light":"#A86B00","Dark":"#E8A94D"},"Property":{"Light":"#A0532E","Dark":"#E89A6E"},"Tag":{"Light":"#A0532E","Dark":"#E89A6E"},"AttrName":{"Light":"#A86B00","Dark":"#E8A94D"},"AttrValue":{"Light":"#3F8A52","Dark":"#8FD493"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"250px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"Retold Content","Tagline":"Author content for the Retold ecosystem."}};},{}],206:[function(require,module,exports){module.exports={"Hash":"retold-labs-cyberpunk","Name":"Retold Labs Cyberpunk","Version":"0.0.1","Description":"retold-labs’ neon \"cyberpunk\" identity — cyan/magenta on near-black (dark) or violet on light. Preserves the original cyberpunk-light / cyberpunk-dark palettes verbatim.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#eae8f0","Dark":"#0a0a12"},"Secondary":{"Light":"#ddd8ea","Dark":"#12101e"},"Tertiary":{"Light":"#ddd8ea","Dark":"#12101e"},"Panel":{"Light":"#f4f2fa","Dark":"#1a1628"},"Sidebar":{"Light":"#1e1430","Dark":"#06060e"},"Hover":{"Light":"rgba(130, 0, 200, 0.06)","Dark":"rgba(0, 255, 255, 0.08)"},"Selected":{"Light":"rgba(138, 0, 212, 0.10)","Dark":"rgba(0, 229, 255, 0.12)"}},"Text":{"Primary":{"Light":"#1a1028","Dark":"#e8e0f0"},"Secondary":{"Light":"#4a3868","Dark":"#b0a8c8"},"Muted":{"Light":"#7a6a98","Dark":"#6a6488"},"Placeholder":{"Light":"#7a6a98","Dark":"#6a6488"},"OnBrand":{"Light":"#d0c8e0","Dark":"#d0c8e0"}},"Brand":{"Primary":{"Light":"#8a00d4","Dark":"#00e5ff"},"PrimaryHover":{"Light":"#b040f0","Dark":"#60f0ff"},"Accent":{"Light":"#8a00d4","Dark":"#00e5ff"},"AccentHover":{"Light":"#b040f0","Dark":"#60f0ff"}},"Border":{"Default":{"Light":"#c8c0d8","Dark":"#2a2440"},"Light":{"Light":"#c8c0d8","Dark":"#2a2440"},"Strong":{"Light":"#2a2040","Dark":"#1a1430"}},"Status":{"Success":{"Light":"#00a050","Dark":"#39ff14"},"Warning":{"Light":"#d41878","Dark":"#ff2ec4"},"Error":{"Light":"#c82050","Dark":"#ff3860"},"Info":{"Light":"#8a00d4","Dark":"#00e5ff"}},"Scrollbar":{"Track":{"Light":"#ddd8ea","Dark":"#12101e"},"Thumb":{"Light":"#c8c0d8","Dark":"#2a2440"},"Hover":{"Light":"#7a6a98","Dark":"#6a6488"}},"Selection":{"Background":{"Light":"rgba(138, 0, 212, 0.10)","Dark":"rgba(0, 229, 255, 0.12)"},"Text":{"Light":"#1a1028","Dark":"#e8e0f0"}},"Focus":{"Outline":{"Light":"#8a00d4","Dark":"#00e5ff"}},"Shadow":{"Color":{"Light":"rgba(26, 16, 40, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#8a00d4","Dark":"#00e5ff"},"String":{"Light":"#00a050","Dark":"#39ff14"},"Number":{"Light":"#d41878","Dark":"#ff2ec4"},"Comment":{"Light":"#7a6a98","Dark":"#6a6488"},"Operator":{"Light":"#8a00d4","Dark":"#00e5ff"},"Punctuation":{"Light":"#4a3868","Dark":"#b0a8c8"},"Function":{"Light":"#8a00d4","Dark":"#00e5ff"},"Variable":{"Light":"#1a1028","Dark":"#e8e0f0"},"Type":{"Light":"#d41878","Dark":"#ff2ec4"},"Builtin":{"Light":"#d41878","Dark":"#ff2ec4"},"Property":{"Light":"#c82050","Dark":"#ff3860"},"Tag":{"Light":"#8a00d4","Dark":"#00e5ff"},"AttrName":{"Light":"#d41878","Dark":"#ff2ec4"},"AttrValue":{"Light":"#00a050","Dark":"#39ff14"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"230px","TopbarHeight":"52px","StatusbarHeight":"28px"}},"Brand":{"Name":"Retold Labs","Tagline":"Run, compare, and distribute ML experiments across the mesh"}};},{}],207:[function(require,module,exports){module.exports={"Hash":"retold-labs-retro","Name":"Retold Labs Retro","Version":"0.0.1","Description":"retold-labs’ \"retro\" identity — amber/green phosphor on dark or sepia/olive on light. Preserves the original retro-light / retro-dark palettes verbatim.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#f5f0e0","Dark":"#0c0c08"},"Secondary":{"Light":"#ebe4d0","Dark":"#161610"},"Tertiary":{"Light":"#ebe4d0","Dark":"#161610"},"Panel":{"Light":"#faf6e8","Dark":"#1e1e14"},"Sidebar":{"Light":"#3a3020","Dark":"#080804"},"Hover":{"Light":"rgba(140, 80, 20, 0.06)","Dark":"rgba(255, 176, 0, 0.08)"},"Selected":{"Light":"rgba(140, 80, 20, 0.10)","Dark":"rgba(255, 176, 0, 0.12)"}},"Text":{"Primary":{"Light":"#2e2418","Dark":"#d0c8a0"},"Secondary":{"Light":"#5c4a30","Dark":"#a09870"},"Muted":{"Light":"#8a7450","Dark":"#706848"},"Placeholder":{"Light":"#8a7450","Dark":"#706848"},"OnBrand":{"Light":"#d8c8a0","Dark":"#c8b870"}},"Brand":{"Primary":{"Light":"#8c5014","Dark":"#ffb000"},"PrimaryHover":{"Light":"#b06820","Dark":"#ffc840"},"Accent":{"Light":"#8c5014","Dark":"#ffb000"},"AccentHover":{"Light":"#b06820","Dark":"#ffc840"}},"Border":{"Default":{"Light":"#d0c4a8","Dark":"#2a2a1e"},"Light":{"Light":"#d0c4a8","Dark":"#2a2a1e"},"Strong":{"Light":"#4a4030","Dark":"#1a1a10"}},"Status":{"Success":{"Light":"#2e7830","Dark":"#40c850"},"Warning":{"Light":"#2e7830","Dark":"#40c850"},"Error":{"Light":"#a03020","Dark":"#e04030"},"Info":{"Light":"#8c5014","Dark":"#ffb000"}},"Scrollbar":{"Track":{"Light":"#ebe4d0","Dark":"#161610"},"Thumb":{"Light":"#d0c4a8","Dark":"#2a2a1e"},"Hover":{"Light":"#8a7450","Dark":"#706848"}},"Selection":{"Background":{"Light":"rgba(140, 80, 20, 0.10)","Dark":"rgba(255, 176, 0, 0.12)"},"Text":{"Light":"#2e2418","Dark":"#d0c8a0"}},"Focus":{"Outline":{"Light":"#8c5014","Dark":"#ffb000"}},"Shadow":{"Color":{"Light":"rgba(46, 36, 24, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#8c5014","Dark":"#ffb000"},"String":{"Light":"#2e7830","Dark":"#40c850"},"Number":{"Light":"#2e7830","Dark":"#40c850"},"Comment":{"Light":"#8a7450","Dark":"#706848"},"Operator":{"Light":"#8c5014","Dark":"#ffb000"},"Punctuation":{"Light":"#5c4a30","Dark":"#a09870"},"Function":{"Light":"#8c5014","Dark":"#ffb000"},"Variable":{"Light":"#2e2418","Dark":"#d0c8a0"},"Type":{"Light":"#2e7830","Dark":"#40c850"},"Builtin":{"Light":"#2e7830","Dark":"#40c850"},"Property":{"Light":"#a03020","Dark":"#e04030"},"Tag":{"Light":"#8c5014","Dark":"#ffb000"},"AttrName":{"Light":"#2e7830","Dark":"#40c850"},"AttrValue":{"Light":"#2e7830","Dark":"#40c850"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"230px","TopbarHeight":"52px","StatusbarHeight":"28px"}},"Brand":{"Name":"Retold Labs","Tagline":"Run, compare, and distribute ML experiments across the mesh"}};},{}],208:[function(require,module,exports){module.exports={"Hash":"retold-labs","Name":"Retold Labs","Version":"0.0.1","Description":"retold-labs’ original \"professional\" identity — warm beige with teal accents and a deep teal sidebar. Light side preserves professional-light verbatim; dark side preserves professional-dark.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#faf6f0","Dark":"#14201e"},"Secondary":{"Light":"#f0ebe2","Dark":"#1a2c2a"},"Tertiary":{"Light":"#f0ebe2","Dark":"#1a2c2a"},"Panel":{"Light":"#ffffff","Dark":"#1e3532"},"Sidebar":{"Light":"#1a3a3a","Dark":"#0e1a18"},"Hover":{"Light":"rgba(13, 138, 138, 0.06)","Dark":"rgba(45, 212, 191, 0.08)"},"Selected":{"Light":"rgba(13, 138, 138, 0.10)","Dark":"rgba(45, 212, 191, 0.12)"}},"Text":{"Primary":{"Light":"#2c2416","Dark":"#e0ebe8"},"Secondary":{"Light":"#5c4f3d","Dark":"#a8bfb8"},"Muted":{"Light":"#8a7d6b","Dark":"#6a8a82"},"Placeholder":{"Light":"#8a7d6b","Dark":"#6a8a82"},"OnBrand":{"Light":"#c8dcd8","Dark":"#c8dcd8"}},"Brand":{"Primary":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"PrimaryHover":{"Light":"#14b8a6","Dark":"#5eead4"},"Accent":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"AccentHover":{"Light":"#14b8a6","Dark":"#5eead4"}},"Border":{"Default":{"Light":"#ddd5c8","Dark":"#2a4a44"},"Light":{"Light":"#ddd5c8","Dark":"#2a4a44"},"Strong":{"Light":"#2a5454","Dark":"#1e3a36"}},"Status":{"Success":{"Light":"#2e9e5a","Dark":"#4ade80"},"Warning":{"Light":"#e07830","Dark":"#f59e4a"},"Error":{"Light":"#c9442e","Dark":"#f87171"},"Info":{"Light":"#0d8a8a","Dark":"#2dd4bf"}},"Scrollbar":{"Track":{"Light":"#f0ebe2","Dark":"#1a2c2a"},"Thumb":{"Light":"#ddd5c8","Dark":"#2a4a44"},"Hover":{"Light":"#8a7d6b","Dark":"#6a8a82"}},"Selection":{"Background":{"Light":"rgba(13, 138, 138, 0.10)","Dark":"rgba(45, 212, 191, 0.12)"},"Text":{"Light":"#2c2416","Dark":"#e0ebe8"}},"Focus":{"Outline":{"Light":"#0d8a8a","Dark":"#2dd4bf"}},"Shadow":{"Color":{"Light":"rgba(44, 36, 22, 0.12)","Dark":"rgba(0, 0, 0, 0.45)"}},"Syntax":{"Keyword":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"String":{"Light":"#2e9e5a","Dark":"#4ade80"},"Number":{"Light":"#e07830","Dark":"#f59e4a"},"Comment":{"Light":"#8a7d6b","Dark":"#6a8a82"},"Operator":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"Punctuation":{"Light":"#5c4f3d","Dark":"#a8bfb8"},"Function":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"Variable":{"Light":"#2c2416","Dark":"#e0ebe8"},"Type":{"Light":"#e07830","Dark":"#f59e4a"},"Builtin":{"Light":"#e07830","Dark":"#f59e4a"},"Property":{"Light":"#c9442e","Dark":"#f87171"},"Tag":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"AttrName":{"Light":"#e07830","Dark":"#f59e4a"},"AttrValue":{"Light":"#2e9e5a","Dark":"#4ade80"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"230px","TopbarHeight":"52px","StatusbarHeight":"28px"}},"Brand":{"Name":"Retold Labs","Tagline":"Run, compare, and distribute ML experiments across the mesh"}};},{}],209:[function(require,module,exports){module.exports={"Hash":"retold-manager","Name":"Retold Manager","Description":"Default palette for the Retold Manager application — GitHub-style dark on slate with a parallel light variant. Dark side mirrors retold-manager.css's original colors verbatim; light side is a sympathetic translation tuned for daytime use. The retold-manager.css :root block proxies its --color-* names through these --theme-color-* tokens (with the original hexes as fallbacks), so this theme drives the whole app cleanly and other catalog themes still skin most of it.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#f6f8fa","Dark":"#0e1116"},"Secondary":{"Light":"#eef1f4","Dark":"#161b22"},"Tertiary":{"Light":"#e4e8ec","Dark":"#1c2128"},"Panel":{"Light":"#ffffff","Dark":"#161b22"},"PanelAlt":{"Light":"#f0f3f6","Dark":"#1c2128"},"Hover":{"Light":"#eaeef2","Dark":"#1c2128"},"Selected":{"Light":"#dbe7ff","Dark":"#243454"}},"Border":{"Default":{"Light":"#d0d7de","Dark":"#30363d"},"Light":{"Light":"#e1e4e8","Dark":"#21262d"},"Strong":{"Light":"#a8b1bb","Dark":"#484f58"}},"Brand":{"Primary":{"Light":"#0969da","Dark":"#2f81f7"},"PrimaryHover":{"Light":"#0550ae","Dark":"#1f6feb"},"Accent":{"Light":"#0969da","Dark":"#2f81f7"},"AccentHover":{"Light":"#0550ae","Dark":"#1f6feb"}},"Text":{"Primary":{"Light":"#1f2328","Dark":"#e6edf3"},"Secondary":{"Light":"#3b424a","Dark":"#c9d1d9"},"Muted":{"Light":"#656d76","Dark":"#8b949e"},"Placeholder":{"Light":"#8c959f","Dark":"#6e7681"},"OnBrand":{"Light":"#ffffff","Dark":"#ffffff"}},"Status":{"Success":{"Light":"#1a7f37","Dark":"#3fb950"},"Danger":{"Light":"#cf222e","Dark":"#f85149"},"Warning":{"Light":"#9a6700","Dark":"#d29922"},"Error":{"Light":"#cf222e","Dark":"#f85149"},"Info":{"Light":"#0969da","Dark":"#2f81f7"}},"Data":{"1":{"Light":"#0969da","Dark":"#2f81f7"},"2":{"Light":"#cf222e","Dark":"#f85149"},"3":{"Light":"#1a7f37","Dark":"#3fb950"},"4":{"Light":"#9a6700","Dark":"#d29922"},"5":{"Light":"#8250df","Dark":"#a371f7"},"6":{"Light":"#bf3989","Dark":"#db61a2"},"7":{"Light":"#1b7c83","Dark":"#39c5cf"},"8":{"Light":"#656d76","Dark":"#8b949e"}},"Scrollbar":{"Track":{"Light":"#eef1f4","Dark":"#161b22"},"Thumb":{"Light":"#c1c8cf","Dark":"#30363d"},"Hover":{"Light":"#a8b1bb","Dark":"#484f58"}},"Selection":{"Background":{"Light":"#cfe6ff","Dark":"#243454"},"Text":{"Light":"#1f2328","Dark":"#e6edf3"}},"Focus":{"Outline":{"Light":"#0969da","Dark":"#2f81f7"}},"Syntax":{"Keyword":{"Light":"#cf222e","Dark":"#ff7b72"},"String":{"Light":"#0a3069","Dark":"#a5d6ff"},"Number":{"Light":"#0550ae","Dark":"#79c0ff"},"Comment":{"Light":"#6e7781","Dark":"#8b949e"},"Operator":{"Light":"#cf222e","Dark":"#ff7b72"},"Punctuation":{"Light":"#24292f","Dark":"#c9d1d9"},"Function":{"Light":"#8250df","Dark":"#d2a8ff"},"Variable":{"Light":"#24292f","Dark":"#c9d1d9"},"Type":{"Light":"#953800","Dark":"#ffa657"},"Builtin":{"Light":"#0550ae","Dark":"#79c0ff"},"Property":{"Light":"#0550ae","Dark":"#79c0ff"},"Tag":{"Light":"#116329","Dark":"#7ee787"},"AttrName":{"Light":"#8250df","Dark":"#d2a8ff"},"AttrValue":{"Light":"#0a3069","Dark":"#a5d6ff"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, \"SF Pro\", \"Segoe UI\", sans-serif","Mono":"ui-monospace, \"SF Mono\", Menlo, Monaco, \"Courier New\", monospace"}},"Layout":{"SidebarWidth":"280px","TopbarHeight":"44px","StatusbarHeight":"28px"}}};},{}],210:[function(require,module,exports){module.exports={"Hash":"retold-mono","Name":"Retold Mono","Version":"0.0.2","Description":"High-contrast monochrome theme — black on white in light mode, white on black in dark mode. Useful for print, simple admin tooling, and as a paired-mode reference theme that proves the toggle works on something visually unmistakable.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ffffff","Dark":"#000000"},"Secondary":{"Light":"#f0f0f0","Dark":"#101010"},"Tertiary":{"Light":"#e2e2e2","Dark":"#1c1c1c"},"Panel":{"Light":"#ffffff","Dark":"#000000"},"Hover":{"Light":"#ebebeb","Dark":"#1a1a1a"},"Selected":{"Light":"#d6d6d6","Dark":"#2a2a2a"}},"Text":{"Primary":{"Light":"#000000","Dark":"#ffffff"},"Secondary":{"Light":"#222222","Dark":"#dddddd"},"Muted":{"Light":"#555555","Dark":"#aaaaaa"},"Placeholder":{"Light":"#888888","Dark":"#777777"}},"Brand":{"Primary":{"Light":"#000000","Dark":"#ffffff"},"PrimaryHover":{"Light":"#222222","Dark":"#dddddd"},"Accent":{"Light":"#444444","Dark":"#bbbbbb"}},"Border":{"Default":{"Light":"#888888","Dark":"#666666"},"Light":{"Light":"#cccccc","Dark":"#333333"},"Strong":{"Light":"#000000","Dark":"#ffffff"}},"Status":{"Success":{"Light":"#000000","Dark":"#ffffff"},"Warning":{"Light":"#000000","Dark":"#ffffff"},"Error":{"Light":"#000000","Dark":"#ffffff"},"Info":{"Light":"#000000","Dark":"#ffffff"}},"Data":{"1":{"Light":"#000000","Dark":"#ffffff"},"2":{"Light":"#262626","Dark":"#e0e0e0"},"3":{"Light":"#404040","Dark":"#c0c0c0"},"4":{"Light":"#595959","Dark":"#a0a0a0"},"5":{"Light":"#737373","Dark":"#808080"},"6":{"Light":"#8c8c8c","Dark":"#737373"},"7":{"Light":"#a6a6a6","Dark":"#595959"},"8":{"Light":"#bfbfbf","Dark":"#404040"}},"Scrollbar":{"Track":{"Light":"#e0e0e0","Dark":"#101010"},"Thumb":{"Light":"#888888","Dark":"#666666"},"Hover":{"Light":"#444444","Dark":"#bbbbbb"}},"Selection":{"Background":{"Light":"#000000","Dark":"#ffffff"},"Text":{"Light":"#ffffff","Dark":"#000000"}},"Focus":{"Outline":{"Light":"#000000","Dark":"#ffffff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.18)","Dark":"rgba(255, 255, 255, 0.18)"}},"Syntax":{"Keyword":{"Light":"#000000","Dark":"#ffffff"},"String":{"Light":"#555555","Dark":"#cccccc"},"Number":{"Light":"#000000","Dark":"#ffffff"},"Comment":{"Light":"#888888","Dark":"#888888"},"Operator":{"Light":"#000000","Dark":"#ffffff"},"Punctuation":{"Light":"#444444","Dark":"#bbbbbb"},"Function":{"Light":"#000000","Dark":"#ffffff"},"Variable":{"Light":"#000000","Dark":"#ffffff"},"Type":{"Light":"#222222","Dark":"#dddddd"},"Builtin":{"Light":"#222222","Dark":"#dddddd"},"Property":{"Light":"#444444","Dark":"#bbbbbb"},"Tag":{"Light":"#000000","Dark":"#ffffff"},"AttrName":{"Light":"#444444","Dark":"#bbbbbb"},"AttrValue":{"Light":"#555555","Dark":"#cccccc"}}},"Typography":{"Family":{"Sans":"Helvetica, Arial, sans-serif","Serif":"Georgia, Times New Roman, serif","Mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"600","Bold":"700"},"LineHeight":{"Tight":"1.15","Normal":"1.4","Loose":"1.65"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"0","MD":"0","LG":"0","XL":"0","Pill":"999px"},"Shadow":{"SM":"0 1px 0 var(--theme-color-shadow-color)","MD":"0 2px 0 var(--theme-color-shadow-color)","LG":"0 4px 0 var(--theme-color-shadow-color)"},"ZIndex":{"Base":"0","Dropdown":"100","Sticky":"200","Overlay":"900","Modal":"1000","Toast":"2000","Tooltip":"3000"},"Duration":{"Fast":"0ms","Normal":"0ms","Slow":"0ms"}},"Brand":{"Name":"Retold Mono","Tagline":"Black on white. White on black. Nothing else."},"CSS":[{"Hash":"retold-mono-brand-accents","Priority":600,"Content":"/* retold-mono — keeps the all-monochrome aesthetic but lets brand colors\n in for narrow accent moments. The thick rule under H1 is brand primary;\n the hair rule under H2 is brand secondary. Without a brand registered\n they fall back to mono black/grey. */\na { text-decoration-color: var(--brand-color-primary-mode, currentColor); text-decoration-thickness: 2px; text-underline-offset: 3px; }\nh1 { border-bottom: 3px solid var(--brand-color-primary-mode, var(--theme-color-text-primary, #000)); padding-bottom: 6px; }\nh2 { border-bottom: 1px solid var(--brand-color-secondary-mode, var(--theme-color-border-default, #888)); padding-bottom: 4px; }"}]};},{}],211:[function(require,module,exports){module.exports={"Hash":"solarized-dark","Name":"Solarized Dark","Category":"Fun","Version":"0.0.1","Description":"Schoonover's classic palette Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#002B36","Secondary":"#073642","Tertiary":"#003B4A","Panel":"#00303C","Viewer":"#001E28","Hover":"#0A4858","Selected":"#155868","Thumb":"#073642"},"Text":{"Primary":"#FDF6E3","Secondary":"#EEE8D5","Muted":"#93A1A1","Dim":"#839496","Placeholder":"#657B83"},"Brand":{"Accent":"#268BD2","AccentHover":"#45A0E0"},"Border":{"Default":"#0A4050","Light":"#125868"},"Status":{"Danger":"#DC322F","DangerMuted":"#AA2A28"},"Scrollbar":{"Track":"#0A4050","Hover":"#125868"},"Selection":{"Background":"rgba(38, 139, 210, 0.25)"},"Focus":{"Outline":"#268BD2"},"Syntax":{"Keyword":"#859900","String":"#2AA198","Number":"#D33682","Comment":"#586E75","Operator":"#268BD2","Punctuation":"#93A1A1","Function":"#B58900","Variable":"#FDF6E3","Type":"#B58900","Builtin":"#CB4B16","Property":"#268BD2","Tag":"#268BD2","AttrName":"#B58900","AttrValue":"#2AA198"}},"Typography":{"Family":{"Sans":"'Source Code Pro', 'Fira Code', monospace","Mono":"'Source Code Pro', 'Fira Code', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#EEE8D5","Accent":"#268BD2","Muted":"#839496","Light":"#003B4A","WarmBeige":"#073642","TealTint":"#004050","Lavender":"#003848","AmberTint":"#0A3A30","PdfFill":"#0A3028","PdfText":"#DC322F"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],212:[function(require,module,exports){module.exports={"Hash":"synthwave","Name":"Synthwave","Category":"Fun","Version":"0.0.1","Description":"Purple and pink neon Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1A0A2E","Secondary":"#140824","Tertiary":"#200E38","Panel":"#1C0C32","Viewer":"#100620","Hover":"#2A1848","Selected":"#3A2060","Thumb":"#140824"},"Text":{"Primary":"#E8C0F8","Secondary":"#D0A8E8","Muted":"#9878B8","Dim":"#7858A8","Placeholder":"#584088"},"Brand":{"Accent":"#FF71CE","AccentHover":"#FF99DD"},"Border":{"Default":"#302050","Light":"#402868"},"Status":{"Danger":"#FF4488","DangerMuted":"#AA3366"},"Scrollbar":{"Track":"#302050","Hover":"#402868"},"Selection":{"Background":"rgba(255, 113, 206, 0.25)"},"Focus":{"Outline":"#FF71CE"},"Syntax":{"Keyword":"#FF6AD5","String":"#FFE066","Number":"#FF6AD5","Comment":"#9C8AC1","Operator":"#26F0F1","Punctuation":"#C8B6E2","Function":"#26F0F1","Variable":"#FFE0FF","Type":"#FFD93D","Builtin":"#FFD93D","Property":"#FF477E","Tag":"#FF477E","AttrName":"#FFD93D","AttrValue":"#FFE066"}},"Typography":{"Family":{"Sans":"'Trebuchet MS', sans-serif","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#D0A8E8","Accent":"#FF71CE","Muted":"#7858A8","Light":"#200E38","WarmBeige":"#221040","TealTint":"#1A0C30","Lavender":"#1E0E36","AmberTint":"#241028","PdfFill":"#241020","PdfText":"#FF4488"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],213:[function(require,module,exports){module.exports={"Hash":"twilight","Name":"Twilight","Category":"Grey","Version":"0.0.1","Description":"Dark grey, low light. Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format. Single-mode (no light/dark bifurcation). Aliases preserve the legacy `--retold-*` variable names so existing CSS keeps working through the migration.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1E1E1E","Secondary":"#181818","Tertiary":"#252525","Panel":"#202020","Viewer":"#141414","Hover":"#2E2E2E","Selected":"#404040","Thumb":"#181818"},"Text":{"Primary":"#E0E0E0","Secondary":"#C8C8C8","Muted":"#909090","Dim":"#707070","Placeholder":"#585858"},"Brand":{"Accent":"#A0A0A0","AccentHover":"#C0C0C0"},"Border":{"Default":"#333333","Light":"#404040"},"Status":{"Danger":"#FF6666","DangerMuted":"#AA6666"},"Scrollbar":{"Track":"#404040","Hover":"#505050"},"Selection":{"Background":"rgba(160, 160, 160, 0.25)"},"Focus":{"Outline":"#A0A0A0"},"Syntax":{"Keyword":"#B58FFF","String":"#9CDFB0","Number":"#FFB870","Comment":"#6E6E6E","Operator":"#7CC5FF","Punctuation":"#C0C0C0","Function":"#FFD080","Variable":"#E0E0E0","Type":"#FFB870","Builtin":"#FFB870","Property":"#FF8B8B","Tag":"#FF8B8B","AttrName":"#FFB870","AttrValue":"#9CDFB0"}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Fira Code', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#C8C8C8","Accent":"#A0A0A0","Muted":"#707070","Light":"#252525","WarmBeige":"#2A2A2A","TealTint":"#222222","Lavender":"#282828","AmberTint":"#2E2A24","PdfFill":"#2E2224","PdfText":"#E06060"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],214:[function(require,module,exports){module.exports={"Hash":"ultravisor-desert-canyon","Name":"Ultravisor — Desert Canyon","Version":"0.0.1","Description":"Vibrant desert palette — orange brand and teal accents on deep canyon-brown backgrounds. Single-mode dark.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#18120e","Secondary":"#221a14","Tertiary":"#2e2018","Panel":"#221a14","Hover":"#3a2a1e","Selected":"#3a2a1e"},"Text":{"Primary":"#d8c8b0","Secondary":"#e8d8c0","Muted":"#a09080","Placeholder":"#685040","OnBrand":"#18120e"},"Brand":{"Primary":"#e8943a","PrimaryHover":"#f0a44a","Accent":"#18a0a0","AccentHover":"#30b0b0"},"Border":{"Default":"#3a2a1e","Light":"#2e2018","Strong":"#4a3a2e"},"Status":{"Success":"#18a0a0","Warning":"#e0c870","Error":"#e05830","Info":"#18a0a0"},"Scrollbar":{"Track":"#221a14","Thumb":"#3a2a1e","Hover":"#4a3a2e"},"Selection":{"Background":"#3a2a1e","Text":"#e8d8c0"},"Focus":{"Outline":"#e8943a"},"Shadow":{"Color":"rgba(0, 0, 0, 0.30)"},"Syntax":{"Keyword":"#E89A6E","String":"#8FD493","Number":"#E8A94D","Comment":"#8E8478","Operator":"#4FB3A6","Punctuation":"#C0B5A4","Function":"#7FBDD8","Variable":"#E8DCC8","Type":"#E8A94D","Builtin":"#E8A94D","Property":"#E89A6E","Tag":"#E89A6E","AttrName":"#E8A94D","AttrValue":"#8FD493"},"Editor":{"LineNumberBackground":"#221a14","LineNumberText":"#685040","CurrentLineHighlight":"#2e2018","SelectionBackground":"#3a2a1e","GutterBorder":"#2e2018"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],215:[function(require,module,exports){module.exports={"Hash":"ultravisor-desert-day","Name":"Ultravisor — Desert Day","Version":"0.0.1","Description":"Ultravisor's warm light palette — cream backgrounds, deep walnut text, teal accents. Single-mode light.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#faf6f0","Secondary":"#f0e6d6","Tertiary":"#e8ddd0","Panel":"#ffffff","Hover":"#f0e6d6","Selected":"#e8ddd0"},"Text":{"Primary":"#3d2b1f","Secondary":"#2e1e14","Muted":"#8a7560","Placeholder":"#a09080","OnBrand":"#ffffff"},"Brand":{"Primary":"#5c3d2e","PrimaryHover":"#7a5040","Accent":"#3a8a8c","AccentHover":"#2a7070"},"Border":{"Default":"#e0d0b8","Light":"#e8ddd0","Strong":"#c8b8a0"},"Status":{"Success":"#5a7a30","Warning":"#b08020","Error":"#a03040","Info":"#3a8a8c"},"Scrollbar":{"Track":"#f0e6d6","Thumb":"#d0c0a8","Hover":"#c0b098"},"Selection":{"Background":"#e8ddd0","Text":"#2e1e14"},"Focus":{"Outline":"#c2703e"},"Shadow":{"Color":"rgba(92, 61, 46, 0.10)"},"Syntax":{"Keyword":"#A0532E","String":"#3F8A52","Number":"#A86B00","Comment":"#8A7F72","Operator":"#2E7D74","Punctuation":"#5E5549","Function":"#2E5E96","Variable":"#3D3229","Type":"#A86B00","Builtin":"#A86B00","Property":"#A0532E","Tag":"#A0532E","AttrName":"#A86B00","AttrValue":"#3F8A52"},"Editor":{"LineNumberBackground":"#f0e6d6","LineNumberText":"#a09080","CurrentLineHighlight":"#f5ede0","SelectionBackground":"#e8ddd0","GutterBorder":"#e0d0b8"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],216:[function(require,module,exports){module.exports={"Hash":"ultravisor-desert-dusk","Name":"Ultravisor — Desert Dusk","Version":"0.0.1","Description":"Ultravisor's original default — warm tan brand on muted dark desert backgrounds. Single-mode dark.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1a1714","Secondary":"#252018","Tertiary":"#302818","Panel":"#252018","Hover":"#3a3028","Selected":"#3a3028"},"Text":{"Primary":"#c8b8a0","Secondary":"#d8c8a8","Muted":"#907860","Placeholder":"#706050","OnBrand":"#FFFFFF"},"Brand":{"Primary":"#c4956a","PrimaryHover":"#d4a57a","Accent":"#4a9090","AccentHover":"#5aacac"},"Border":{"Default":"#3a3028","Light":"#302818","Strong":"#4a4038"},"Status":{"Success":"#8a9a5a","Warning":"#c0a050","Error":"#b04050","Info":"#4a9090"},"Scrollbar":{"Track":"#252018","Thumb":"#3a3028","Hover":"#4a4038"},"Selection":{"Background":"#3a3028","Text":"#d8c8a8"},"Focus":{"Outline":"#c4956a"},"Shadow":{"Color":"rgba(0, 0, 0, 0.30)"},"Syntax":{"Keyword":"#E89A6E","String":"#8FD493","Number":"#E8A94D","Comment":"#8E8478","Operator":"#4FB3A6","Punctuation":"#C0B5A4","Function":"#7FBDD8","Variable":"#E8DCC8","Type":"#E8A94D","Builtin":"#E8A94D","Property":"#E89A6E","Tag":"#E89A6E","AttrName":"#E8A94D","AttrValue":"#8FD493"},"Editor":{"LineNumberBackground":"#252018","LineNumberText":"#706050","CurrentLineHighlight":"#302818","SelectionBackground":"#3a3028","GutterBorder":"#302818"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],217:[function(require,module,exports){module.exports={"Hash":"ultravisor-desert-sunset","Name":"Ultravisor — Desert Sunset","Version":"0.0.1","Description":"Ultravisor's golden-hour palette — orange brand on rust-warmed dark backgrounds. Single-mode dark.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1e1610","Secondary":"#2a2018","Tertiary":"#342818","Panel":"#2a2018","Hover":"#3a2e22","Selected":"#3a2e22"},"Text":{"Primary":"#d4c4aa","Secondary":"#e0d0b8","Muted":"#8a7560","Placeholder":"#6a5840","OnBrand":"#1e1610"},"Brand":{"Primary":"#e8943a","PrimaryHover":"#f0a44a","Accent":"#2a8a8a","AccentHover":"#3a9a9a"},"Border":{"Default":"#3a2e22","Light":"#342818","Strong":"#4a3e32"},"Status":{"Success":"#6a9a3a","Warning":"#d4a46a","Error":"#c44e2a","Info":"#2a8a8a"},"Scrollbar":{"Track":"#2a2018","Thumb":"#3a2e22","Hover":"#4a3e32"},"Selection":{"Background":"#3a2e22","Text":"#e0d0b8"},"Focus":{"Outline":"#e8943a"},"Shadow":{"Color":"rgba(0, 0, 0, 0.30)"},"Syntax":{"Keyword":"#E89A6E","String":"#8FD493","Number":"#E8A94D","Comment":"#8E8478","Operator":"#4FB3A6","Punctuation":"#C0B5A4","Function":"#7FBDD8","Variable":"#E8DCC8","Type":"#E8A94D","Builtin":"#E8A94D","Property":"#E89A6E","Tag":"#E89A6E","AttrName":"#E8A94D","AttrValue":"#8FD493"},"Editor":{"LineNumberBackground":"#2a2018","LineNumberText":"#6a5840","CurrentLineHighlight":"#342818","SelectionBackground":"#3a2e22","GutterBorder":"#342818"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],218:[function(require,module,exports){module.exports={"Hash":"ultravisor-professional-dark","Name":"Ultravisor — Professional Dark","Version":"0.0.1","Description":"Dark modern palette — slate-blue text on inky surfaces, sky-blue brand. Single-mode dark.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#111318","Secondary":"#1a1d24","Tertiary":"#22252e","Panel":"#1a1d24","Hover":"#282c34","Selected":"#282c34"},"Text":{"Primary":"#c8cdd5","Secondary":"#e0e4ea","Muted":"#8b92a0","Placeholder":"#5a6070","OnBrand":"#ffffff"},"Brand":{"Primary":"#60a5fa","PrimaryHover":"#93c5fd","Accent":"#60a5fa","AccentHover":"#93c5fd"},"Border":{"Default":"#282c34","Light":"#22252e","Strong":"#3a3f4a"},"Status":{"Success":"#34d399","Warning":"#fbbf24","Error":"#f87171","Info":"#60a5fa"},"Scrollbar":{"Track":"#1a1d24","Thumb":"#282c34","Hover":"#3a3f4a"},"Selection":{"Background":"#1e2230","Text":"#e0e4ea"},"Focus":{"Outline":"#60a5fa"},"Shadow":{"Color":"rgba(0, 0, 0, 0.30)"},"Syntax":{"Keyword":"#E89A6E","String":"#8FD493","Number":"#E8A94D","Comment":"#8E8478","Operator":"#4FB3A6","Punctuation":"#C0B5A4","Function":"#7FBDD8","Variable":"#E8DCC8","Type":"#E8A94D","Builtin":"#E8A94D","Property":"#E89A6E","Tag":"#E89A6E","AttrName":"#E8A94D","AttrValue":"#8FD493"},"Editor":{"LineNumberBackground":"#1a1d24","LineNumberText":"#5a6070","CurrentLineHighlight":"#22252e","SelectionBackground":"#1e2230","GutterBorder":"#22252e"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],219:[function(require,module,exports){module.exports={"Hash":"ultravisor-professional-light","Name":"Ultravisor — Professional Light","Version":"0.0.1","Description":"Bright modern palette — slate text on near-white backgrounds, royal-blue brand. Single-mode light.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#f5f6f8","Secondary":"#ffffff","Tertiary":"#e4e7ec","Panel":"#ffffff","Hover":"#f0f1f4","Selected":"#e4e7ec"},"Text":{"Primary":"#2d3748","Secondary":"#1a202c","Muted":"#6b7280","Placeholder":"#9ca3af","OnBrand":"#ffffff"},"Brand":{"Primary":"#3b82f6","PrimaryHover":"#2563eb","Accent":"#3b82f6","AccentHover":"#2563eb"},"Border":{"Default":"#e2e5ea","Light":"#eceef2","Strong":"#c8cdd5"},"Status":{"Success":"#10b981","Warning":"#f59e0b","Error":"#ef4444","Info":"#3b82f6"},"Scrollbar":{"Track":"#f0f1f4","Thumb":"#d1d5db","Hover":"#b0b5bd"},"Selection":{"Background":"#dbeafe","Text":"#1a202c"},"Focus":{"Outline":"#3b82f6"},"Shadow":{"Color":"rgba(0, 0, 0, 0.06)"},"Syntax":{"Keyword":"#A0532E","String":"#3F8A52","Number":"#A86B00","Comment":"#8A7F72","Operator":"#2E7D74","Punctuation":"#5E5549","Function":"#2E5E96","Variable":"#3D3229","Type":"#A86B00","Builtin":"#A86B00","Property":"#A0532E","Tag":"#A0532E","AttrName":"#A86B00","AttrValue":"#3F8A52"},"Editor":{"LineNumberBackground":"#f5f6f8","LineNumberText":"#9ca3af","CurrentLineHighlight":"#f0f1f4","SelectionBackground":"#dbeafe","GutterBorder":"#e2e5ea"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],220:[function(require,module,exports){/**
8154
+ const _IndexedRegistry=new Proxy(_Registry,{get(pTarget,pProp,pReceiver){if(typeof pProp==='string'&&/^\d+$/.test(pProp)){let tmpIdx=parseInt(pProp,10);let tmpList=pTarget.list();return tmpList[tmpIdx];}return Reflect.get(pTarget,pProp,pReceiver);},has(pTarget,pProp){if(typeof pProp==='string'&&/^\d+$/.test(pProp)){return parseInt(pProp,10)<pTarget.length;}return Reflect.has(pTarget,pProp);}});module.exports=_IndexedRegistry;module.exports.ThemeRegistry=ThemeRegistry;},{"./1970s-console.json":178,"./1980s-console.json":179,"./1990s-website.json":180,"./afternoon.json":182,"./cyberpunk.json":183,"./databeacon-beos.json":184,"./databeacon-mac-classic.json":185,"./databeacon-next.json":186,"./databeacon-nineteen-97.json":187,"./databeacon-sgi.json":188,"./daylight.json":189,"./early-2000s.json":190,"./evening.json":191,"./flow-blueprint.json":192,"./flow-modern.json":193,"./flow-mono.json":194,"./flow-retro-80s.json":195,"./flow-retro-90s.json":196,"./flow-sketch.json":197,"./flow-whiteboard.json":198,"./forest.json":199,"./hotdog.json":200,"./mobile-debug.json":201,"./neo-tokyo.json":202,"./night.json":203,"./ocean.json":204,"./pict-default.json":205,"./playground-corp.json":206,"./retold-content-system.json":207,"./retold-default.json":208,"./retold-labs-cyberpunk.json":209,"./retold-labs-retro.json":210,"./retold-labs.json":211,"./retold-manager.json":212,"./retold-mono.json":213,"./solarized-dark.json":214,"./synthwave.json":215,"./twilight.json":216,"./ultravisor-desert-canyon.json":217,"./ultravisor-desert-day.json":218,"./ultravisor-desert-dusk.json":219,"./ultravisor-desert-sunset.json":220,"./ultravisor-professional-dark.json":221,"./ultravisor-professional-light.json":222}],182:[function(require,module,exports){module.exports={"Hash":"afternoon","Name":"Afternoon","Category":"Grey","Version":"0.0.1","Description":"Warm light grey, softer contrast Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#E8E4E0","Secondary":"#DAD6D2","Tertiary":"#D0CCC8","Panel":"#DDD9D5","Viewer":"#F0ECE8","Hover":"#CCC8C4","Selected":"#B8B4B0","Thumb":"#DAD6D2"},"Text":{"Primary":"#2A2A2A","Secondary":"#404040","Muted":"#707070","Dim":"#909090","Placeholder":"#B0B0B0"},"Brand":{"Accent":"#555555","AccentHover":"#333333"},"Border":{"Default":"#C0BCB8","Light":"#D0CCC8"},"Status":{"Danger":"#AA3333","DangerMuted":"#886655"},"Scrollbar":{"Track":"#B8B4B0","Hover":"#A0A09C"},"Selection":{"Background":"rgba(85, 85, 85, 0.2)"},"Focus":{"Outline":"#555555"},"Syntax":{"Keyword":"#7038A0","String":"#2E7A3A","Number":"#A86B00","Comment":"#888888","Operator":"#1F6FB5","Punctuation":"#666666","Function":"#3357C7","Variable":"#222222","Type":"#A86B00","Builtin":"#A86B00","Property":"#B62828","Tag":"#B62828","AttrName":"#A86B00","AttrValue":"#2E7A3A"}},"Typography":{"Family":{"Sans":"Georgia, 'Times New Roman', serif","Mono":"'Courier New', Courier, monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#404040","Accent":"#555555","Muted":"#909090","Light":"#D0CCC8","WarmBeige":"#DAD6D2","TealTint":"#CCC8C4","Lavender":"#D2D0CE","AmberTint":"#D8D2C8","PdfFill":"#D8C8C0","PdfText":"#AA3333"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.406Z","CompilerVersion":1};},{}],183:[function(require,module,exports){module.exports={"Hash":"cyberpunk","Name":"Cyberpunk","Category":"Fun","Version":"0.0.1","Description":"Electric green on black Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#0A0E0A","Secondary":"#060806","Tertiary":"#0E120E","Panel":"#0C100C","Viewer":"#040604","Hover":"#142014","Selected":"#1A3A1A","Thumb":"#060806"},"Text":{"Primary":"#C8FFC8","Secondary":"#A0D8A0","Muted":"#608860","Dim":"#406040","Placeholder":"#305030"},"Brand":{"Accent":"#00FF41","AccentHover":"#44FF77"},"Border":{"Default":"#1A2A1A","Light":"#224022"},"Status":{"Danger":"#FF3333","DangerMuted":"#AA2222"},"Scrollbar":{"Track":"#1A2A1A","Hover":"#2A4A2A"},"Selection":{"Background":"rgba(0, 255, 65, 0.2)"},"Focus":{"Outline":"#00FF41"},"Syntax":{"Keyword":"#FF00FF","String":"#00FF41","Number":"#FFFF00","Comment":"#406040","Operator":"#00FFFF","Punctuation":"#A0D8A0","Function":"#FF00FF","Variable":"#C8FFC8","Type":"#FFFF00","Builtin":"#FFFF00","Property":"#FF3333","Tag":"#FF3333","AttrName":"#FFFF00","AttrValue":"#00FF41"}},"Typography":{"Family":{"Sans":"'Lucida Console', 'Courier New', monospace","Mono":"'Lucida Console', 'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#A0D8A0","Accent":"#00FF41","Muted":"#406040","Light":"#0E120E","WarmBeige":"#101610","TealTint":"#0C140C","Lavender":"#0E120E","AmberTint":"#141810","PdfFill":"#181010","PdfText":"#FF3333"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.406Z","CompilerVersion":1};},{}],184:[function(require,module,exports){module.exports={"Hash":"databeacon-beos","Name":"DataBeacon \u2014 BeOS","Version":"0.0.1","Description":"BeOS palette \u2014 cool teals with orange accents. Light: sky-blue desktop. Dark: deep ocean panels with cyan highlights.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#e0e8ec","Dark":"#0a1a22"},"Secondary":{"Light":"#c8d6de","Dark":"#102530"},"Tertiary":{"Light":"#d4dfe5","Dark":"#0d1f29"},"Panel":{"Light":"#f0f4f6","Dark":"#142430"},"Input":{"Light":"#ffffff","Dark":"#1b313f"},"Hover":{"Light":"#d7dee2","Dark":"#091820"},"Selected":{"Light":"#c2d4da","Dark":"#19353e"}},"Text":{"Primary":{"Light":"#101820","Dark":"#b0d0e0"},"Secondary":{"Light":"#40525e","Dark":"#7a98a8"},"Muted":{"Light":"#6e828e","Dark":"#556a78"},"Placeholder":{"Light":"#95a5ae","Dark":"#3a4e59"},"OnBrand":{"Light":"#ffffff","Dark":"#0a1a22"}},"Brand":{"Primary":{"Light":"#3a7a8a","Dark":"#60b0c0"},"PrimaryHover":{"Light":"#4e98aa","Dark":"#80ccdc"},"Accent":{"Light":"#3a7a8a","Dark":"#60b0c0"},"AccentHover":{"Light":"#4e98aa","Dark":"#80ccdc"}},"Border":{"Default":{"Light":"#8ba3b0","Dark":"#466070"},"Light":{"Light":"#b5c5ce","Dark":"#283d49"},"Strong":{"Light":"#6f828c","Dark":"#384c59"}},"Status":{"Success":{"Light":"#2a7a4a","Dark":"#4ac06a"},"Warning":{"Light":"#cc9930","Dark":"#ffc860"},"Error":{"Light":"#cc5530","Dark":"#ff8060"},"Info":{"Light":"#3a7a8a","Dark":"#60b0c0"}},"Scrollbar":{"Track":{"Light":"#c8d6de","Dark":"#102530"},"Thumb":{"Light":"#7c929f","Dark":"#4d6574"},"Hover":{"Light":"#6e828e","Dark":"#556a78"}},"Selection":{"Background":{"Light":"#aac4cc","Dark":"#254a54"},"Text":{"Light":"#101820","Dark":"#b0d0e0"}},"Focus":{"Outline":{"Light":"#3a7a8a","Dark":"#60b0c0"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#cc5530","Dark":"#ff8060"},"String":{"Light":"#2a7a4a","Dark":"#4ac06a"},"Number":{"Light":"#cc9930","Dark":"#ffc860"},"Comment":{"Light":"#6e828e","Dark":"#556a78"},"Operator":{"Light":"#3a7a8a","Dark":"#60b0c0"},"Punctuation":{"Light":"#40525e","Dark":"#7a98a8"},"Function":{"Light":"#3a7a8a","Dark":"#60b0c0"},"Variable":{"Light":"#101820","Dark":"#b0d0e0"},"Type":{"Light":"#cc9930","Dark":"#ffc860"},"Builtin":{"Light":"#cc9930","Dark":"#ffc860"},"Property":{"Light":"#cc5530","Dark":"#ff8060"},"Tag":{"Light":"#cc5530","Dark":"#ff8060"},"AttrName":{"Light":"#cc9930","Dark":"#ffc860"},"AttrValue":{"Light":"#2a7a4a","Dark":"#4ac06a"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"BeOS","Tagline":"Connect, introspect, and expose remote databases"}};},{}],185:[function(require,module,exports){module.exports={"Hash":"databeacon-mac-classic","Name":"DataBeacon \u2014 Mac Classic","Version":"0.0.1","Description":"Mac OS 8/9 Platinum palette \u2014 soft greys with sky blue accents. Light: classic Mac platinum. Dark: charcoal panels with the same blue accent family.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#dddddd","Dark":"#202020"},"Secondary":{"Light":"#cccccc","Dark":"#2a2a2a"},"Tertiary":{"Light":"#d4d4d4","Dark":"#252525"},"Panel":{"Light":"#f0f0f0","Dark":"#2e2e2e"},"Input":{"Light":"#ffffff","Dark":"#3a3a3a"},"Hover":{"Light":"#d4d4d4","Dark":"#1e1e1e"},"Selected":{"Light":"#c0cce3","Dark":"#2b3748"}},"Text":{"Primary":{"Light":"#000000","Dark":"#dddddd"},"Secondary":{"Light":"#444444","Dark":"#b0b0b0"},"Muted":{"Light":"#777777","Dark":"#777777"},"Placeholder":{"Light":"#9a9a9a","Dark":"#585858"},"OnBrand":{"Light":"#ffffff","Dark":"#0a0a0a"}},"Brand":{"Primary":{"Light":"#4080ff","Dark":"#60a0ff"},"PrimaryHover":{"Light":"#60a0ff","Dark":"#80b8ff"},"Accent":{"Light":"#4080ff","Dark":"#60a0ff"},"AccentHover":{"Light":"#60a0ff","Dark":"#80b8ff"}},"Border":{"Default":{"Light":"#999999","Dark":"#555555"},"Light":{"Light":"#bbbbbb","Dark":"#3a3a3a"},"Strong":{"Light":"#7a7a7a","Dark":"#444444"}},"Status":{"Success":{"Light":"#339933","Dark":"#60cc60"},"Warning":{"Light":"#cc6600","Dark":"#ff9933"},"Error":{"Light":"#cc0000","Dark":"#ff4060"},"Info":{"Light":"#4080ff","Dark":"#60a0ff"}},"Scrollbar":{"Track":{"Light":"#cccccc","Dark":"#2a2a2a"},"Thumb":{"Light":"#888888","Dark":"#666666"},"Hover":{"Light":"#777777","Dark":"#777777"}},"Selection":{"Background":{"Light":"#aabfe7","Dark":"#344867"},"Text":{"Light":"#000000","Dark":"#dddddd"}},"Focus":{"Outline":{"Light":"#4080ff","Dark":"#60a0ff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#cc0000","Dark":"#ff4060"},"String":{"Light":"#339933","Dark":"#60cc60"},"Number":{"Light":"#cc6600","Dark":"#ff9933"},"Comment":{"Light":"#777777","Dark":"#777777"},"Operator":{"Light":"#4080ff","Dark":"#60a0ff"},"Punctuation":{"Light":"#444444","Dark":"#b0b0b0"},"Function":{"Light":"#4080ff","Dark":"#60a0ff"},"Variable":{"Light":"#000000","Dark":"#dddddd"},"Type":{"Light":"#cc6600","Dark":"#ff9933"},"Builtin":{"Light":"#cc6600","Dark":"#ff9933"},"Property":{"Light":"#cc0000","Dark":"#ff4060"},"Tag":{"Light":"#cc0000","Dark":"#ff4060"},"AttrName":{"Light":"#cc6600","Dark":"#ff9933"},"AttrValue":{"Light":"#339933","Dark":"#60cc60"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"Mac Classic","Tagline":"Connect, introspect, and expose remote databases"}};},{}],186:[function(require,module,exports){module.exports={"Hash":"databeacon-next","Name":"DataBeacon \u2014 NeXT","Version":"0.0.1","Description":"NeXTSTEP palette \u2014 stone backgrounds with rich purple accents. Light: warm stone. Dark: deep aubergine with lavender highlights.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#e8e6dd","Dark":"#1a1420"},"Secondary":{"Light":"#d6d3c8","Dark":"#221a2c"},"Tertiary":{"Light":"#dfdcd2","Dark":"#1e1726"},"Panel":{"Light":"#f5f3ed","Dark":"#251c2e"},"Input":{"Light":"#ffffff","Dark":"#2f253a"},"Hover":{"Light":"#dedcd4","Dark":"#18131e"},"Selected":{"Light":"#d1c7d2","Dark":"#352a42"}},"Text":{"Primary":{"Light":"#1e1a26","Dark":"#e8e6dd"},"Secondary":{"Light":"#4c465a","Dark":"#b8b4c6"},"Muted":{"Light":"#7a7488","Dark":"#7a7488"},"Placeholder":{"Light":"#a09ba5","Dark":"#585263"},"OnBrand":{"Light":"#ffffff","Dark":"#1a1420"}},"Brand":{"Primary":{"Light":"#6a3fa0","Dark":"#b090e0"},"PrimaryHover":{"Light":"#8557c0","Dark":"#c8aef0"},"Accent":{"Light":"#6a3fa0","Dark":"#b090e0"},"AccentHover":{"Light":"#8557c0","Dark":"#c8aef0"}},"Border":{"Default":{"Light":"#9a96a6","Dark":"#5e5468"},"Light":{"Light":"#c1bec1","Dark":"#3c3444"},"Strong":{"Light":"#7b7884","Dark":"#4b4353"}},"Status":{"Success":{"Light":"#3a7a3a","Dark":"#7acc7a"},"Warning":{"Light":"#b88a00","Dark":"#ffcf4a"},"Error":{"Light":"#aa2c3a","Dark":"#ff6a80"},"Info":{"Light":"#6a3fa0","Dark":"#b090e0"}},"Scrollbar":{"Track":{"Light":"#d6d3c8","Dark":"#221a2c"},"Thumb":{"Light":"#8a8597","Dark":"#6c6478"},"Hover":{"Light":"#7a7488","Dark":"#7a7488"}},"Selection":{"Background":{"Light":"#bfb0c9","Dark":"#4a3b5d"},"Text":{"Light":"#1e1a26","Dark":"#e8e6dd"}},"Focus":{"Outline":{"Light":"#6a3fa0","Dark":"#b090e0"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#aa2c3a","Dark":"#ff6a80"},"String":{"Light":"#3a7a3a","Dark":"#7acc7a"},"Number":{"Light":"#b88a00","Dark":"#ffcf4a"},"Comment":{"Light":"#7a7488","Dark":"#7a7488"},"Operator":{"Light":"#6a3fa0","Dark":"#b090e0"},"Punctuation":{"Light":"#4c465a","Dark":"#b8b4c6"},"Function":{"Light":"#6a3fa0","Dark":"#b090e0"},"Variable":{"Light":"#1e1a26","Dark":"#e8e6dd"},"Type":{"Light":"#b88a00","Dark":"#ffcf4a"},"Builtin":{"Light":"#b88a00","Dark":"#ffcf4a"},"Property":{"Light":"#aa2c3a","Dark":"#ff6a80"},"Tag":{"Light":"#aa2c3a","Dark":"#ff6a80"},"AttrName":{"Light":"#b88a00","Dark":"#ffcf4a"},"AttrValue":{"Light":"#3a7a3a","Dark":"#7acc7a"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"NeXT","Tagline":"Connect, introspect, and expose remote databases"}};},{}],187:[function(require,module,exports){module.exports={"Hash":"databeacon-nineteen-97","Name":"DataBeacon \u2014 1997 (Win95/98)","Version":"0.0.1","Description":"Windows 95/98 retro palette \u2014 beige + navy + maroon. Light: classic Win95 desktop. Dark: indigo-grey background with sky/coral accents.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ece9d8","Dark":"#1e1e2e"},"Secondary":{"Light":"#d8d3b8","Dark":"#26263a"},"Tertiary":{"Light":"#e2dec8","Dark":"#222234"},"Panel":{"Light":"#fffbf0","Dark":"#2a2a3a"},"Input":{"Light":"#ffffff","Dark":"#343450"},"Hover":{"Light":"#e2dfcf","Dark":"#1c1c2c"},"Selected":{"Light":"#c1bfc8","Dark":"#2f3553"}},"Text":{"Primary":{"Light":"#1a1a1a","Dark":"#ece9d8"},"Secondary":{"Light":"#4a4a4a","Dark":"#b8b6a8"},"Muted":{"Light":"#7a7a7a","Dark":"#7e7c70"},"Placeholder":{"Light":"#a1a09a","Dark":"#5c5b58"},"OnBrand":{"Light":"#ffffff","Dark":"#1a1a1a"}},"Brand":{"Primary":{"Light":"#000080","Dark":"#80a0ff"},"PrimaryHover":{"Light":"#0000cc","Dark":"#a0b8ff"},"Accent":{"Light":"#000080","Dark":"#80a0ff"},"AccentHover":{"Light":"#0000cc","Dark":"#a0b8ff"}},"Border":{"Default":{"Light":"#808080","Dark":"#4e4e68"},"Light":{"Light":"#b6b4ac","Dark":"#36364b"},"Strong":{"Light":"#666666","Dark":"#3e3e53"}},"Status":{"Success":{"Light":"#008000","Dark":"#80ff80"},"Warning":{"Light":"#808000","Dark":"#ffcc00"},"Error":{"Light":"#800000","Dark":"#ff8080"},"Info":{"Light":"#000080","Dark":"#80c0ff"}},"Scrollbar":{"Track":{"Light":"#d8d3b8","Dark":"#26263a"},"Thumb":{"Light":"#7d7d7d","Dark":"#66656c"},"Hover":{"Light":"#7a7a7a","Dark":"#7e7c70"}},"Selection":{"Background":{"Light":"#a09ebb","Dark":"#3d4770"},"Text":{"Light":"#1a1a1a","Dark":"#ece9d8"}},"Focus":{"Outline":{"Light":"#000080","Dark":"#80a0ff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#800000","Dark":"#ff8080"},"String":{"Light":"#008000","Dark":"#80ff80"},"Number":{"Light":"#808000","Dark":"#ffcc00"},"Comment":{"Light":"#7a7a7a","Dark":"#7e7c70"},"Operator":{"Light":"#000080","Dark":"#80a0ff"},"Punctuation":{"Light":"#4a4a4a","Dark":"#b8b6a8"},"Function":{"Light":"#000080","Dark":"#80c0ff"},"Variable":{"Light":"#1a1a1a","Dark":"#ece9d8"},"Type":{"Light":"#808000","Dark":"#ffcc00"},"Builtin":{"Light":"#808000","Dark":"#ffcc00"},"Property":{"Light":"#800000","Dark":"#ff8080"},"Tag":{"Light":"#800000","Dark":"#ff8080"},"AttrName":{"Light":"#808000","Dark":"#ffcc00"},"AttrValue":{"Light":"#008000","Dark":"#80ff80"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"1997 (Win95/98)","Tagline":"Connect, introspect, and expose remote databases"}};},{}],188:[function(require,module,exports){module.exports={"Hash":"databeacon-sgi","Name":"DataBeacon \u2014 SGI","Version":"0.0.1","Description":"SGI Indy / IRIX palette \u2014 magenta with cyan highlights. Light: signature SGI grey. Dark: deep workstation black with the same hot magenta.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#c8c8c8","Dark":"#1a1a1a"},"Secondary":{"Light":"#b8b8b8","Dark":"#232323"},"Tertiary":{"Light":"#c0c0c0","Dark":"#1e1e1e"},"Panel":{"Light":"#dcdcdc","Dark":"#252525"},"Input":{"Light":"#ffffff","Dark":"#2e2e2e"},"Hover":{"Light":"#c0c0c0","Dark":"#181818"},"Selected":{"Light":"#c8a9bb","Dark":"#432635"}},"Text":{"Primary":{"Light":"#202020","Dark":"#e0e0e0"},"Secondary":{"Light":"#4a4a4a","Dark":"#a8a8a8"},"Muted":{"Light":"#6e6e6e","Dark":"#707070"},"Placeholder":{"Light":"#8d8d8d","Dark":"#515151"},"OnBrand":{"Light":"#ffffff","Dark":"#0a0a0a"}},"Brand":{"Primary":{"Light":"#c82080","Dark":"#ff60b0"},"PrimaryHover":{"Light":"#e040a0","Dark":"#ff80c8"},"Accent":{"Light":"#c82080","Dark":"#ff60b0"},"AccentHover":{"Light":"#e040a0","Dark":"#ff80c8"}},"Border":{"Default":{"Light":"#808080","Dark":"#505050"},"Light":{"Light":"#a4a4a4","Dark":"#353535"},"Strong":{"Light":"#666666","Dark":"#404040"}},"Status":{"Success":{"Light":"#208040","Dark":"#50d080"},"Warning":{"Light":"#e8a818","Dark":"#ffd050"},"Error":{"Light":"#e83018","Dark":"#ff6060"},"Info":{"Light":"#3080c0","Dark":"#60c0ff"}},"Scrollbar":{"Track":{"Light":"#b8b8b8","Dark":"#232323"},"Thumb":{"Light":"#777777","Dark":"#606060"},"Hover":{"Light":"#6e6e6e","Dark":"#707070"}},"Selection":{"Background":{"Light":"#c892b0","Dark":"#63304a"},"Text":{"Light":"#202020","Dark":"#e0e0e0"}},"Focus":{"Outline":{"Light":"#c82080","Dark":"#ff60b0"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#e83018","Dark":"#ff6060"},"String":{"Light":"#208040","Dark":"#50d080"},"Number":{"Light":"#e8a818","Dark":"#ffd050"},"Comment":{"Light":"#6e6e6e","Dark":"#707070"},"Operator":{"Light":"#c82080","Dark":"#ff60b0"},"Punctuation":{"Light":"#4a4a4a","Dark":"#a8a8a8"},"Function":{"Light":"#3080c0","Dark":"#60c0ff"},"Variable":{"Light":"#202020","Dark":"#e0e0e0"},"Type":{"Light":"#e8a818","Dark":"#ffd050"},"Builtin":{"Light":"#e8a818","Dark":"#ffd050"},"Property":{"Light":"#e83018","Dark":"#ff6060"},"Tag":{"Light":"#e83018","Dark":"#ff6060"},"AttrName":{"Light":"#e8a818","Dark":"#ffd050"},"AttrValue":{"Light":"#208040","Dark":"#50d080"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"220px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"SGI","Tagline":"Connect, introspect, and expose remote databases"}};},{}],189:[function(require,module,exports){module.exports={"Hash":"daylight","Name":"Daylight","Category":"Grey","Version":"0.0.1","Description":"Bright white, dark text Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#FFFFFF","Secondary":"#F0F0F0","Tertiary":"#E8E8E8","Panel":"#F5F5F5","Viewer":"#FAFAFA","Hover":"#E0E0E0","Selected":"#C8C8C8","Thumb":"#F0F0F0"},"Text":{"Primary":"#1A1A1A","Secondary":"#333333","Muted":"#666666","Dim":"#888888","Placeholder":"#AAAAAA"},"Brand":{"Accent":"#444444","AccentHover":"#222222"},"Border":{"Default":"#D0D0D0","Light":"#E0E0E0"},"Status":{"Danger":"#CC0000","DangerMuted":"#884444"},"Scrollbar":{"Track":"#C0C0C0","Hover":"#A0A0A0"},"Selection":{"Background":"rgba(68, 68, 68, 0.2)"},"Focus":{"Outline":"#444444"},"Syntax":{"Keyword":"#7038A0","String":"#2E7A3A","Number":"#A86B00","Comment":"#888888","Operator":"#1F6FB5","Punctuation":"#444444","Function":"#3357C7","Variable":"#222222","Type":"#A86B00","Builtin":"#A86B00","Property":"#B62828","Tag":"#B62828","AttrName":"#A86B00","AttrValue":"#2E7A3A"}},"Typography":{"Family":{"Sans":"'Segoe UI', system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Fira Code', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#333333","Accent":"#444444","Muted":"#888888","Light":"#E8E8E8","WarmBeige":"#F0F0F0","TealTint":"#E0E0E0","Lavender":"#EBEBEB","AmberTint":"#F0EDE8","PdfFill":"#F0E0E0","PdfText":"#CC0000"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],190:[function(require,module,exports){module.exports={"Hash":"early-2000s","Name":"Early 2000s Web","Category":"Fun","Version":"0.0.1","Description":"Teal and silver, Web 2.0 Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#E8F4F8","Secondary":"#D0E8EE","Tertiary":"#C0DDE6","Panel":"#D8EEF2","Viewer":"#F0F8FA","Hover":"#B0D4E0","Selected":"#88C4D8","Thumb":"#D0E8EE"},"Text":{"Primary":"#1A3A4A","Secondary":"#2A4A5A","Muted":"#5A7A8A","Dim":"#7A9AAA","Placeholder":"#9ABACA"},"Brand":{"Accent":"#0099CC","AccentHover":"#00AADD"},"Border":{"Default":"#A0C8D8","Light":"#B8D8E4"},"Status":{"Danger":"#CC3300","DangerMuted":"#994422"},"Scrollbar":{"Track":"#A0C8D8","Hover":"#88B8CC"},"Selection":{"Background":"rgba(0, 153, 204, 0.2)"},"Focus":{"Outline":"#0099CC"},"Syntax":{"Keyword":"#1A4080","String":"#2E7A3A","Number":"#A86B00","Comment":"#888888","Operator":"#1F6FB5","Punctuation":"#333333","Function":"#3357C7","Variable":"#222222","Type":"#A86B00","Builtin":"#A86B00","Property":"#B62828","Tag":"#B62828","AttrName":"#A86B00","AttrValue":"#2E7A3A"}},"Typography":{"Family":{"Sans":"Verdana, Geneva, Tahoma, sans-serif","Mono":"'Lucida Console', Monaco, monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#2A4A5A","Accent":"#0099CC","Muted":"#7A9AAA","Light":"#C0DDE6","WarmBeige":"#D0E8EE","TealTint":"#B0D8E4","Lavender":"#C8DCE6","AmberTint":"#D8E0D0","PdfFill":"#E0C8C0","PdfText":"#CC3300"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],191:[function(require,module,exports){module.exports={"Hash":"evening","Name":"Evening","Category":"Grey","Version":"0.0.1","Description":"Medium grey, transitional Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#484848","Secondary":"#3C3C3C","Tertiary":"#424242","Panel":"#454545","Viewer":"#363636","Hover":"#525252","Selected":"#606060","Thumb":"#3C3C3C"},"Text":{"Primary":"#E0E0E0","Secondary":"#D0D0D0","Muted":"#A0A0A0","Dim":"#888888","Placeholder":"#707070"},"Brand":{"Accent":"#C0C0C0","AccentHover":"#E0E0E0"},"Border":{"Default":"#585858","Light":"#606060"},"Status":{"Danger":"#FF6666","DangerMuted":"#AA6666"},"Scrollbar":{"Track":"#585858","Hover":"#686868"},"Selection":{"Background":"rgba(192, 192, 192, 0.25)"},"Focus":{"Outline":"#C0C0C0"},"Syntax":{"Keyword":"#B894FF","String":"#A8D8B0","Number":"#FFB880","Comment":"#8A8A8A","Operator":"#7EC0FF","Punctuation":"#BBBBBB","Function":"#FFCC80","Variable":"#DDDDDD","Type":"#FFB880","Builtin":"#FFB880","Property":"#FF9494","Tag":"#FF9494","AttrName":"#FFB880","AttrValue":"#A8D8B0"}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Fira Code', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#D0D0D0","Accent":"#C0C0C0","Muted":"#888888","Light":"#424242","WarmBeige":"#484848","TealTint":"#3E3E3E","Lavender":"#444444","AmberTint":"#4A4640","PdfFill":"#4A3C3C","PdfText":"#FF6666"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],192:[function(require,module,exports){module.exports={"Hash":"flow-blueprint","Name":"Flow Blueprint","Version":"0.0.1","Description":"Technical-drawing aesthetic — white-on-navy with yellow selection. Single-mode (always dark blueprint).","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1a3a6a","Secondary":"#142e54","Tertiary":"rgba(255,255,255,0.1)","Panel":"#1a3a6a","Hover":"rgba(255,255,255,0.06)","Selected":"rgba(255,221,68,0.18)"},"Text":{"Primary":"#ffffff","Secondary":"rgba(255,255,255,0.7)","Muted":"rgba(255,255,255,0.5)","OnBrand":"#0d2244"},"Brand":{"Primary":"#ffdd44","PrimaryHover":"#ffe978","Accent":"#88ffbb"},"Border":{"Default":"rgba(255,255,255,0.6)","Light":"rgba(255,255,255,0.15)","Strong":"#ffffff"},"Status":{"Success":"#88ffbb","Warning":"#ffdd44","Error":"#ff8888","Info":"#88bbff"},"Scrollbar":{"Track":"rgba(255,255,255,0.05)","Thumb":"rgba(255,255,255,0.3)","Hover":"rgba(255,255,255,0.5)"},"Focus":{"Outline":"#ffdd44"},"Shadow":{"Color":"rgba(0, 0, 0, 0.4)"}}},"Brand":{"Name":"Flow Blueprint","Tagline":"Technical drawing on navy"}};},{}],193:[function(require,module,exports){module.exports={"Hash":"flow-modern","Name":"Flow Modern","Version":"0.0.1","Description":"The default modern look for pict-section-flow — clean, theme-neutral. Paired light/dark.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ffffff","Dark":"#1a1a1a"},"Secondary":{"Light":"#f5f5f5","Dark":"#242424"},"Tertiary":{"Light":"#ecf0f1","Dark":"#2e2e2e"},"Panel":{"Light":"#ffffff","Dark":"#222222"},"Hover":{"Light":"#eef3f7","Dark":"#2a2a2a"},"Selected":{"Light":"#dde7f3","Dark":"#2a3550"}},"Text":{"Primary":{"Light":"#2c3e50","Dark":"#ededed"},"Secondary":{"Light":"#7f8c8d","Dark":"#bdbdbd"},"Muted":{"Light":"#95a5a6","Dark":"#888888"},"OnBrand":{"Light":"#ffffff","Dark":"#1a1a1a"}},"Brand":{"Primary":{"Light":"#2255aa","Dark":"#5b8aff"},"PrimaryHover":{"Light":"#1a4488","Dark":"#7ba4ff"},"Accent":{"Light":"#1abc9c","Dark":"#4fd1b5"}},"Border":{"Default":{"Light":"#bdc3c7","Dark":"#3a3a3a"},"Light":{"Light":"#ecf0f1","Dark":"#2c2c2c"},"Strong":{"Light":"#95a5a6","Dark":"#5a5a5a"}},"Status":{"Success":{"Light":"#27ae60","Dark":"#5fc377"},"Warning":{"Light":"#f39c12","Dark":"#f0b84a"},"Error":{"Light":"#e74c3c","Dark":"#ff7373"},"Info":{"Light":"#3498db","Dark":"#5fb4ff"}},"Scrollbar":{"Track":{"Light":"#ecf0f1","Dark":"#1f1f1f"},"Thumb":{"Light":"#bdc3c7","Dark":"#3f3f3f"},"Hover":{"Light":"#95a5a6","Dark":"#5a5a5a"}},"Focus":{"Outline":{"Light":"#2255aa","Dark":"#5b8aff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}}}},"Brand":{"Name":"Flow Modern","Tagline":"Clean modern flow editor look"}};},{}],194:[function(require,module,exports){module.exports={"Hash":"flow-mono","Name":"Flow Mono","Version":"0.0.1","Description":"High-contrast monochrome flow editor look. Paired light/dark — pure black on white or white on black.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ffffff","Dark":"#000000"},"Secondary":{"Light":"#f0f0f0","Dark":"#1a1a1a"},"Tertiary":{"Light":"#e0e0e0","Dark":"#262626"},"Panel":{"Light":"#ffffff","Dark":"#000000"},"Hover":{"Light":"#eeeeee","Dark":"#1f1f1f"},"Selected":{"Light":"#dddddd","Dark":"#333333"}},"Text":{"Primary":{"Light":"#000000","Dark":"#ffffff"},"Secondary":{"Light":"#444444","Dark":"#cccccc"},"Muted":{"Light":"#888888","Dark":"#888888"},"OnBrand":{"Light":"#ffffff","Dark":"#000000"}},"Brand":{"Primary":{"Light":"#444444","Dark":"#bbbbbb"},"PrimaryHover":{"Light":"#222222","Dark":"#dddddd"},"Accent":{"Light":"#666666","Dark":"#999999"}},"Border":{"Default":{"Light":"#000000","Dark":"#ffffff"},"Light":{"Light":"#cccccc","Dark":"#333333"},"Strong":{"Light":"#000000","Dark":"#ffffff"}},"Status":{"Success":{"Light":"#000000","Dark":"#ffffff"},"Warning":{"Light":"#000000","Dark":"#ffffff"},"Error":{"Light":"#000000","Dark":"#ffffff"},"Info":{"Light":"#000000","Dark":"#ffffff"}},"Scrollbar":{"Track":{"Light":"#f0f0f0","Dark":"#1a1a1a"},"Thumb":{"Light":"#888888","Dark":"#888888"},"Hover":{"Light":"#444444","Dark":"#cccccc"}},"Focus":{"Outline":{"Light":"#000000","Dark":"#ffffff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.25)","Dark":"rgba(255, 255, 255, 0.25)"}}}},"Brand":{"Name":"Flow Mono","Tagline":"Monochrome ink-on-paper"}};},{}],195:[function(require,module,exports){module.exports={"Hash":"flow-retro-80s","Name":"Flow Retro 80s","Version":"0.0.1","Description":"Neon-on-purple synthwave aesthetic for the flow editor. Single-mode (always dark) — '80s arcade glow.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#0a0015","Secondary":"#1a0a2e","Tertiary":"#2a0a4e","Panel":"#1a0a2e","Hover":"#2a0a4e","Selected":"#3a1466"},"Text":{"Primary":"#00ffff","Secondary":"#ff66ff","Muted":"#9966cc","OnBrand":"#0a0015"},"Brand":{"Primary":"#ff00ff","PrimaryHover":"#ff66ff","Accent":"#00ffff"},"Border":{"Default":"#ff00ff","Light":"#2a0a4e","Strong":"#ff00ff"},"Status":{"Success":"#00ff66","Warning":"#ffdd44","Error":"#ff4477","Info":"#00ffff"},"Scrollbar":{"Track":"#1a0a2e","Thumb":"#ff00ff","Hover":"#ff66ff"},"Focus":{"Outline":"#00ffff"},"Shadow":{"Color":"rgba(255, 0, 255, 0.4)"}}},"Brand":{"Name":"Flow Retro 80s","Tagline":"Neon synthwave glow"}};},{}],196:[function(require,module,exports){module.exports={"Hash":"flow-retro-90s","Name":"Flow Retro 90s","Version":"0.0.1","Description":"Windows-95 aesthetic — gray panels, navy title bars, teal desktop. Single-mode (always its specific palette).","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#008080","Secondary":"#c0c0c0","Tertiary":"#d0d0d0","Panel":"#c0c0c0","Hover":"#d0d0d0","Selected":"#a8c8e0"},"Text":{"Primary":"#000000","Secondary":"#404040","Muted":"#606060","OnBrand":"#ffffff"},"Brand":{"Primary":"#000080","PrimaryHover":"#0000a0","Accent":"#008000"},"Border":{"Default":"#808080","Light":"#a0a0a0","Strong":"#404040"},"Status":{"Success":"#008000","Warning":"#808000","Error":"#800000","Info":"#000080"},"Scrollbar":{"Track":"#c0c0c0","Thumb":"#808080","Hover":"#404040"},"Focus":{"Outline":"#008080"},"Shadow":{"Color":"#404040"}}},"Brand":{"Name":"Flow Retro 90s","Tagline":"Workstation chrome from the 90s"}};},{}],197:[function(require,module,exports){module.exports={"Hash":"flow-sketch","Name":"Flow Sketch","Version":"0.0.1","Description":"Warm-paper sketch aesthetic for the flow editor. Single-mode (always light) — sketches live on paper.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#fffef5","Secondary":"#faf8ed","Tertiary":"#f0ece0","Panel":"#fffef5","Hover":"#f4f0e2","Selected":"#e8dfc8"},"Text":{"Primary":"#333333","Secondary":"#555555","Muted":"#888888","OnBrand":"#ffffff"},"Brand":{"Primary":"#2255aa","PrimaryHover":"#1a4488","Accent":"#c47b5a"},"Border":{"Default":"#444444","Light":"#ccccaa","Strong":"#222222"},"Status":{"Success":"#55aa77","Warning":"#d4a040","Error":"#c44836","Info":"#5577bb"},"Scrollbar":{"Track":"#f0ece0","Thumb":"#c5c0a8","Hover":"#9e9a82"},"Focus":{"Outline":"#2255aa"},"Shadow":{"Color":"rgba(0, 0, 0, 0.08)"}}},"Brand":{"Name":"Flow Sketch","Tagline":"Hand-drawn paper aesthetic"}};},{}],198:[function(require,module,exports){module.exports={"Hash":"flow-whiteboard","Name":"Flow Whiteboard","Version":"0.0.1","Description":"Minimal whiteboard aesthetic — transparent fills with colored brackets per node type. Single-mode (light).","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#ffffff","Secondary":"#fafafa","Tertiary":"#f5f5f5","Panel":"#ffffff","Hover":"#f0f0f0","Selected":"#e0eaff"},"Text":{"Primary":"#333333","Secondary":"#555555","Muted":"#999999","OnBrand":"#ffffff"},"Brand":{"Primary":"#2255aa","PrimaryHover":"#1a4488","Accent":"#1abc9c"},"Border":{"Default":"#888888","Light":"#cccccc","Strong":"#555555"},"Status":{"Success":"#27ae60","Warning":"#f39c12","Error":"#e74c3c","Info":"#3498db"},"Scrollbar":{"Track":"#f5f5f5","Thumb":"#cccccc","Hover":"#888888"},"Focus":{"Outline":"#2255aa"},"Shadow":{"Color":"rgba(0, 0, 0, 0.06)"}}},"Brand":{"Name":"Flow Whiteboard","Tagline":"Minimal whiteboard sketching"}};},{}],199:[function(require,module,exports){module.exports={"Hash":"forest","Name":"Forest","Category":"Fun","Version":"0.0.1","Description":"Deep greens and earth browns Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1A2018","Secondary":"#141A12","Tertiary":"#1E2620","Panel":"#1C221A","Viewer":"#101410","Hover":"#283828","Selected":"#344834","Thumb":"#141A12"},"Text":{"Primary":"#D0DCC8","Secondary":"#B0C4A8","Muted":"#809878","Dim":"#607858","Placeholder":"#486040"},"Brand":{"Accent":"#6AAF5C","AccentHover":"#88CC78"},"Border":{"Default":"#2A3A28","Light":"#3A4A38"},"Status":{"Danger":"#CC4422","DangerMuted":"#884422"},"Scrollbar":{"Track":"#2A3A28","Hover":"#3A4A38"},"Selection":{"Background":"rgba(106, 175, 92, 0.25)"},"Focus":{"Outline":"#6AAF5C"},"Syntax":{"Keyword":"#D4E157","String":"#A5D6A7","Number":"#FFB74D","Comment":"#5D6F58","Operator":"#80CBC4","Punctuation":"#A8C8A0","Function":"#FFCC80","Variable":"#C8E6C9","Type":"#FFB74D","Builtin":"#FFB74D","Property":"#FF8A65","Tag":"#FF8A65","AttrName":"#FFB74D","AttrValue":"#A5D6A7"}},"Typography":{"Family":{"Sans":"'Palatino Linotype', 'Book Antiqua', Palatino, serif","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#B0C4A8","Accent":"#6AAF5C","Muted":"#607858","Light":"#1E2620","WarmBeige":"#22281E","TealTint":"#1A221A","Lavender":"#1E2420","AmberTint":"#262218","PdfFill":"#261A18","PdfText":"#CC4422"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],200:[function(require,module,exports){module.exports={"Hash":"hotdog","Name":"Hotdog","Category":"Fun","Version":"0.0.1","Description":"Red and mustard yellow, garish Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#8B0000","Secondary":"#6B0000","Tertiary":"#7B0000","Panel":"#750000","Viewer":"#550000","Hover":"#AA1111","Selected":"#BB3300","Thumb":"#6B0000"},"Text":{"Primary":"#FFD700","Secondary":"#FFC000","Muted":"#CC9900","Dim":"#AA7700","Placeholder":"#886600"},"Brand":{"Accent":"#FFD700","AccentHover":"#FFEE44"},"Border":{"Default":"#AA2222","Light":"#BB3333"},"Status":{"Danger":"#FFFF00","DangerMuted":"#CCCC00"},"Scrollbar":{"Track":"#AA2222","Hover":"#CC3333"},"Selection":{"Background":"rgba(255, 215, 0, 0.3)"},"Focus":{"Outline":"#FFD700"},"Syntax":{"Keyword":"#FFD800","String":"#FFFFFF","Number":"#FFD800","Comment":"#9C2828","Operator":"#FFD800","Punctuation":"#FFFFFF","Function":"#FFD800","Variable":"#FFFFFF","Type":"#FFD800","Builtin":"#FFD800","Property":"#FFD800","Tag":"#FFD800","AttrName":"#FFD800","AttrValue":"#FFFFFF"}},"Typography":{"Family":{"Sans":"Impact, 'Arial Black', sans-serif","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#FFC000","Accent":"#FFD700","Muted":"#AA7700","Light":"#7B0000","WarmBeige":"#800000","TealTint":"#6B0000","Lavender":"#780000","AmberTint":"#7A1000","PdfFill":"#6B0000","PdfText":"#FFFF00"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.407Z","CompilerVersion":1};},{}],201:[function(require,module,exports){module.exports={"Hash":"mobile-debug","Name":"Mobile Container Debug","Category":"Debug","Version":"0.0.1","Description":"Unique color per container for layout debugging Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#FF0000","Secondary":"#00CCCC","Tertiary":"#00AA00","Panel":"#FFAA00","Viewer":"#333333","Hover":"rgba(255, 255, 255, 0.2)","Selected":"rgba(255, 255, 255, 0.3)","Thumb":"#AA00AA"},"Text":{"Primary":"#FFFFFF","Secondary":"#EEEEEE","Muted":"#CCCCCC","Dim":"#AAAAAA","Placeholder":"#888888"},"Brand":{"Accent":"#FFFF00","AccentHover":"#FFFF88"},"Border":{"Default":"#FFFFFF","Light":"#CCCCCC"},"Status":{"Danger":"#FF0000","DangerMuted":"#CC4444"},"Scrollbar":{"Track":"#888888","Hover":"#AAAAAA"},"Selection":{"Background":"rgba(255, 255, 0, 0.3)"},"Focus":{"Outline":"#FFFF00"},"Syntax":{"Keyword":"#A626A4","String":"#50A14F","Number":"#986801","Comment":"#A0A1A7","Operator":"#0184BC","Punctuation":"#383A42","Function":"#4078F2","Variable":"#383A42","Type":"#C18401","Builtin":"#986801","Property":"#E45649","Tag":"#E45649","AttrName":"#986801","AttrValue":"#50A14F"}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#FFFFFF","Accent":"#FFFF00","Muted":"#CCCCCC","Light":"#333333","WarmBeige":"#FFAA00","TealTint":"#00CCCC","Lavender":"#AA00AA","AmberTint":"#FFAA00","PdfFill":"#FF4444","PdfText":"#FFFFFF"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],202:[function(require,module,exports){module.exports={"Hash":"neo-tokyo","Name":"Neo-Tokyo","Category":"Fun","Version":"0.0.1","Description":"Neon pink on dark navy Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#0D0D2B","Secondary":"#080820","Tertiary":"#121235","Panel":"#0F0F28","Viewer":"#060615","Hover":"#1A1A42","Selected":"#2A1845","Thumb":"#080820"},"Text":{"Primary":"#E8E0F0","Secondary":"#D0C8E0","Muted":"#9088A8","Dim":"#6860A0","Placeholder":"#504888"},"Brand":{"Accent":"#FF2D8A","AccentHover":"#FF5AA0"},"Border":{"Default":"#2A2050","Light":"#382868"},"Status":{"Danger":"#FF4466","DangerMuted":"#AA3355"},"Scrollbar":{"Track":"#2A2050","Hover":"#3A3068"},"Selection":{"Background":"rgba(255, 45, 138, 0.25)"},"Focus":{"Outline":"#FF2D8A"},"Syntax":{"Keyword":"#FF4E9F","String":"#A1FFCE","Number":"#FFD93D","Comment":"#807A9E","Operator":"#7DF9FF","Punctuation":"#C0BCEB","Function":"#FFCC80","Variable":"#E0D8FF","Type":"#FFD93D","Builtin":"#FFD93D","Property":"#FF6E6E","Tag":"#FF6E6E","AttrName":"#FFD93D","AttrValue":"#A1FFCE"}},"Typography":{"Family":{"Sans":"'Courier New', monospace","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#D0C8E0","Accent":"#FF2D8A","Muted":"#6860A0","Light":"#121235","WarmBeige":"#141438","TealTint":"#100E30","Lavender":"#141232","AmberTint":"#1A1228","PdfFill":"#1A1028","PdfText":"#FF4466"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],203:[function(require,module,exports){module.exports={"Hash":"night","Name":"Night","Category":"Grey","Version":"0.0.1","Description":"Near-black, minimal contrast Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#0A0A0A","Secondary":"#060606","Tertiary":"#0E0E0E","Panel":"#0C0C0C","Viewer":"#040404","Hover":"#161616","Selected":"#252525","Thumb":"#060606"},"Text":{"Primary":"#888888","Secondary":"#707070","Muted":"#555555","Dim":"#444444","Placeholder":"#333333"},"Brand":{"Accent":"#666666","AccentHover":"#808080"},"Border":{"Default":"#1A1A1A","Light":"#222222"},"Status":{"Danger":"#AA4444","DangerMuted":"#663333"},"Scrollbar":{"Track":"#1A1A1A","Hover":"#2A2A2A"},"Selection":{"Background":"rgba(102, 102, 102, 0.2)"},"Focus":{"Outline":"#666666"},"Syntax":{"Keyword":"#C28FFF","String":"#B0E0B0","Number":"#FFA070","Comment":"#888888","Operator":"#80C8FF","Punctuation":"#BBBBBB","Function":"#FFD080","Variable":"#DDDDDD","Type":"#FFB870","Builtin":"#FFB870","Property":"#FF9090","Tag":"#FF9090","AttrName":"#FFB870","AttrValue":"#B0E0B0"}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Fira Code', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#707070","Accent":"#666666","Muted":"#444444","Light":"#0E0E0E","WarmBeige":"#121212","TealTint":"#0C0C0C","Lavender":"#101010","AmberTint":"#141210","PdfFill":"#141010","PdfText":"#AA4444"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],204:[function(require,module,exports){module.exports={"Hash":"ocean","Name":"Ocean","Version":"0.0.1","Description":"Cool blue-greens (180-235°) with warm coral / amber punctuation (5-30°). Paired light/dark; feels like sea + sun on the horizon.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#f4f9fb","Dark":"#0e1820"},"Secondary":{"Light":"#e8f1f5","Dark":"#15212b"},"Tertiary":{"Light":"#dde9ee","Dark":"#1f2c38"},"Panel":{"Light":"#ffffff","Dark":"#1a2632"},"Hover":{"Light":"#e0eef3","Dark":"#26323f"},"Selected":{"Light":"#c8e1ea","Dark":"#1e3a48"}},"Text":{"Primary":{"Light":"#0e2832","Dark":"#e1ecf0"},"Secondary":{"Light":"#3a5662","Dark":"#a8c0c8"},"Muted":{"Light":"#6c828b","Dark":"#7a8e96"},"Placeholder":{"Light":"#90a4ad","Dark":"#5a6e76"}},"Brand":{"Primary":{"Light":"#0e7c8a","Dark":"#4dc4d4"},"PrimaryHover":{"Light":"#0a6371","Dark":"#6dd4e2"},"Accent":{"Light":"#e8a050","Dark":"#f0b878"}},"Border":{"Default":{"Light":"#c0d5dc","Dark":"#2c3d49"},"Light":{"Light":"#d8e6ec","Dark":"#1f2c38"},"Strong":{"Light":"#90b0bc","Dark":"#4a6470"}},"Status":{"Success":{"Light":"#1f8a52","Dark":"#4dc97a"},"Warning":{"Light":"#d68910","Dark":"#f0b020"},"Error":{"Light":"#c93a3a","Dark":"#ff6464"},"Info":{"Light":"#0e7c8a","Dark":"#4dc4d4"}},"Data":{"1":{"Light":"#0e7c8a","Dark":"#4dc4d4"},"2":{"Light":"#e8a050","Dark":"#f0b878"},"3":{"Light":"#1f8a52","Dark":"#4dc97a"},"4":{"Light":"#c93a3a","Dark":"#ff6464"},"5":{"Light":"#b07bac","Dark":"#cda6cf"},"6":{"Light":"#d68910","Dark":"#f0b020"},"7":{"Light":"#5a7f9e","Dark":"#82a0c4"},"8":{"Light":"#6c828b","Dark":"#a8c0c8"}},"Scrollbar":{"Track":{"Light":"#dde9ee","Dark":"#15212b"},"Thumb":{"Light":"#a8c2cc","Dark":"#324658"},"Hover":{"Light":"#7a99a4","Dark":"#506876"}},"Selection":{"Background":{"Light":"#c8e1ea","Dark":"#1e3a48"},"Text":{"Light":"#0e2832","Dark":"#e1ecf0"}},"Focus":{"Outline":{"Light":"#0e7c8a","Dark":"#4dc4d4"}},"Shadow":{"Color":{"Light":"rgba(14, 40, 50, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#0e7c8a","Dark":"#4dc4d4"},"String":{"Light":"#1f8a52","Dark":"#4dc97a"},"Number":{"Light":"#d68910","Dark":"#f0b020"},"Comment":{"Light":"#90a4ad","Dark":"#5a6e76"},"Operator":{"Light":"#3a5662","Dark":"#a8c0c8"},"Punctuation":{"Light":"#3a5662","Dark":"#a8c0c8"},"Function":{"Light":"#0e7c8a","Dark":"#4dc4d4"},"Variable":{"Light":"#0e2832","Dark":"#e1ecf0"},"Type":{"Light":"#e8a050","Dark":"#f0b878"},"Builtin":{"Light":"#d68910","Dark":"#f0b020"},"Property":{"Light":"#c93a3a","Dark":"#ff6464"},"Tag":{"Light":"#c93a3a","Dark":"#ff6464"},"AttrName":{"Light":"#d68910","Dark":"#f0b020"},"AttrValue":{"Light":"#1f8a52","Dark":"#4dc97a"}},"Editor":{"LineNumberBackground":{"Light":"#e8f1f5","Dark":"#15212b"},"LineNumberText":{"Light":"#90a4ad","Dark":"#5a6e76"},"CurrentLineHighlight":{"Light":"#e0eef3","Dark":"#26323f"},"SelectionBackground":{"Light":"#c8e1ea","Dark":"#1e3a48"},"GutterBorder":{"Light":"#d8e6ec","Dark":"#1f2c38"}}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif","Serif":"Georgia, Cambria, Times New Roman, Times, serif","Mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.45","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Shadow":{"SM":"0 1px 2px var(--theme-color-shadow-color)","MD":"0 2px 6px var(--theme-color-shadow-color)","LG":"0 6px 18px var(--theme-color-shadow-color)"},"ZIndex":{"Base":"0","Dropdown":"100","Sticky":"200","Overlay":"900","Modal":"1000","Toast":"2000","Tooltip":"3000"},"Duration":{"Fast":"100ms","Normal":"200ms","Slow":"400ms"}},"Brand":{"Name":"Ocean","Tagline":"Cool waters, warm sun"}};},{}],205:[function(require,module,exports){module.exports={"Hash":"pict-default","Name":"Pict Default","Version":"0.0.1","Description":"The reference paired light/dark theme for pict-based applications. Neutral palette suitable for any app; dark mode is mid-grey rather than pure black to reduce eye strain.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ffffff","Dark":"#1a1a1a"},"Secondary":{"Light":"#f5f5f5","Dark":"#242424"},"Tertiary":{"Light":"#ebebeb","Dark":"#2e2e2e"},"Panel":{"Light":"#ffffff","Dark":"#222222"},"Hover":{"Light":"#f0f0f0","Dark":"#2a2a2a"},"Selected":{"Light":"#e0eaff","Dark":"#2a3550"}},"Text":{"Primary":{"Light":"#1a1a1a","Dark":"#ededed"},"Secondary":{"Light":"#454545","Dark":"#bdbdbd"},"Muted":{"Light":"#6b6b6b","Dark":"#888888"},"Placeholder":{"Light":"#9a9a9a","Dark":"#6a6a6a"}},"Brand":{"Primary":{"Light":"#3357c7","Dark":"#6b8eff"},"PrimaryHover":{"Light":"#2848b3","Dark":"#88a4ff"},"Accent":{"Light":"#c75033","Dark":"#ff8a6b"}},"Border":{"Default":{"Light":"#d6d6d6","Dark":"#3a3a3a"},"Light":{"Light":"#e9e9e9","Dark":"#2c2c2c"},"Strong":{"Light":"#a0a0a0","Dark":"#5a5a5a"}},"Status":{"Success":{"Light":"#2e7a3a","Dark":"#5fc377"},"Warning":{"Light":"#a86b00","Dark":"#f0b84a"},"Error":{"Light":"#b62828","Dark":"#ff7373"},"Info":{"Light":"#1f6fb5","Dark":"#5fb4ff"}},"Data":{"1":{"Light":"#3357c7","Dark":"#6b8eff"},"2":{"Light":"#c75033","Dark":"#ff8a6b"},"3":{"Light":"#2e7a3a","Dark":"#5fc377"},"4":{"Light":"#a86b00","Dark":"#f0b84a"},"5":{"Light":"#6b3aac","Dark":"#b08eff"},"6":{"Light":"#1f6fb5","Dark":"#5fb4ff"},"7":{"Light":"#c63a8e","Dark":"#ff7fb6"},"8":{"Light":"#6b6b6b","Dark":"#bdbdbd"}},"Scrollbar":{"Track":{"Light":"#ebebeb","Dark":"#1f1f1f"},"Thumb":{"Light":"#c2c2c2","Dark":"#3f3f3f"},"Hover":{"Light":"#a0a0a0","Dark":"#5a5a5a"}},"Selection":{"Background":{"Light":"#bcd2ff","Dark":"#3a4f7a"},"Text":{"Light":"#1a1a1a","Dark":"#ededed"}},"Focus":{"Outline":{"Light":"#3357c7","Dark":"#6b8eff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#a626a4","Dark":"#c678dd"},"String":{"Light":"#50a14f","Dark":"#98c379"},"Number":{"Light":"#986801","Dark":"#d19a66"},"Comment":{"Light":"#a0a1a7","Dark":"#7f848e"},"Operator":{"Light":"#0184bc","Dark":"#56b6c2"},"Punctuation":{"Light":"#383a42","Dark":"#abb2bf"},"Function":{"Light":"#4078f2","Dark":"#61afef"},"Variable":{"Light":"#383a42","Dark":"#e06c75"},"Type":{"Light":"#c18401","Dark":"#e5c07b"},"Builtin":{"Light":"#986801","Dark":"#d19a66"},"Property":{"Light":"#e45649","Dark":"#e06c75"},"Tag":{"Light":"#e45649","Dark":"#e06c75"},"AttrName":{"Light":"#986801","Dark":"#d19a66"},"AttrValue":{"Light":"#50a14f","Dark":"#98c379"}},"Editor":{"LineNumberBackground":{"Light":"#f5f5f5","Dark":"#1f1f1f"},"LineNumberText":{"Light":"#9a9a9a","Dark":"#6a6a6a"},"CurrentLineHighlight":{"Light":"#f0f0f0","Dark":"#2a2a2a"},"SelectionBackground":{"Light":"#bcd2ff","Dark":"#3a4f7a"},"GutterBorder":{"Light":"#e9e9e9","Dark":"#2c2c2c"}}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif","Serif":"Georgia, Cambria, Times New Roman, Times, serif","Mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.45","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Shadow":{"SM":"0 1px 2px var(--theme-color-shadow-color)","MD":"0 2px 6px var(--theme-color-shadow-color)","LG":"0 6px 18px var(--theme-color-shadow-color)"},"ZIndex":{"Base":"0","Dropdown":"100","Sticky":"200","Overlay":"900","Modal":"1000","Toast":"2000","Tooltip":"3000"},"Duration":{"Fast":"100ms","Normal":"200ms","Slow":"400ms"}},"Brand":{"Name":"Pict","Tagline":"A JavaScript MVC framework for building web applications."},"CSS":[{"Hash":"pict-default-brand-accents","Priority":600,"Content":"/* pict-default — subtle brand-aware accents.\n Falls back gracefully to theme-color tokens when no brand is registered,\n so non-branded apps still look right. */\na { text-decoration-color: var(--brand-color-primary-mode, var(--theme-color-brand-primary, currentColor)); text-decoration-thickness: 2px; text-underline-offset: 3px; }\nh1 { border-bottom: 2px solid var(--brand-color-primary-mode, var(--theme-color-border-default, transparent)); padding-bottom: 6px; }\nh2 { border-bottom: 1px solid var(--brand-color-secondary-mode, var(--theme-color-border-light, transparent)); padding-bottom: 4px; }"}]};},{}],206:[function(require,module,exports){module.exports={"Hash":"playground-corp","Name":"Playground Corp","Version":"0.0.1","Description":"A different paired starter — corporate teal palette, rounder corners.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#fbfbfd","Dark":"#0e1416"},"Secondary":{"Light":"#eef3f6","Dark":"#152024"},"Tertiary":{"Light":"#dde7ec","Dark":"#1e2c30"},"Panel":{"Light":"#ffffff","Dark":"#162126"},"Hover":{"Light":"#e5edf1","Dark":"#1d292e"}},"Text":{"Primary":{"Light":"#0a1d22","Dark":"#e3edf0"},"Secondary":{"Light":"#3a5b65","Dark":"#a8c0c8"},"Muted":{"Light":"#647e87","Dark":"#7a929a"},"OnBrand":{"Light":"#ffffff","Dark":"#ffffff"}},"Brand":{"Primary":{"Light":"#117a8b","Dark":"#3ec0d4"},"PrimaryHover":{"Light":"#0e6271","Dark":"#5fd0e0"},"Accent":{"Light":"#d97706","Dark":"#fb923c"}},"Border":{"Default":{"Light":"#cfdce1","Dark":"#2c3a3f"},"Strong":{"Light":"#86a3ac","Dark":"#4d5e64"}},"Status":{"Success":{"Light":"#0f7a52","Dark":"#34d399"},"Warning":{"Light":"#b45309","Dark":"#fbbf24"},"Error":{"Light":"#9f1239","Dark":"#fb7185"},"Info":{"Light":"#1e6fbe","Dark":"#60a5fa"}},"Syntax":{"Keyword":{"Light":"#a626a4","Dark":"#c678dd"},"String":{"Light":"#50a14f","Dark":"#98c379"},"Number":{"Light":"#986801","Dark":"#d19a66"},"Comment":{"Light":"#a0a1a7","Dark":"#7f848e"},"Operator":{"Light":"#0184bc","Dark":"#56b6c2"},"Punctuation":{"Light":"#383a42","Dark":"#abb2bf"},"Function":{"Light":"#4078f2","Dark":"#61afef"},"Variable":{"Light":"#383a42","Dark":"#e06c75"},"Type":{"Light":"#c18401","Dark":"#e5c07b"},"Builtin":{"Light":"#986801","Dark":"#d19a66"},"Property":{"Light":"#e45649","Dark":"#e06c75"},"Tag":{"Light":"#e45649","Dark":"#e06c75"},"AttrName":{"Light":"#986801","Dark":"#d19a66"},"AttrValue":{"Light":"#50a14f","Dark":"#98c379"}}},"Typography":{"Family":{"Sans":"Inter, system-ui, sans-serif","Mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"},"Size":{"SM":"0.875rem","MD":"1rem","LG":"1.25rem"},"Weight":{"Regular":"400","Bold":"700"}},"Spacing":{"XS":"4px","SM":"8px","MD":"14px","LG":"20px","XL":"28px"},"Radius":{"SM":"4px","MD":"10px","LG":"16px"}},"Brand":{"Name":"Corp"},"Aliases":{"--pict-modal-overlay-bg":"Color.Background.Tertiary","--pict-modal-bg":"Color.Background.Panel","--pict-modal-fg":"Color.Text.Primary","--pict-modal-border":"Color.Border.Default","--pict-modal-shadow":"Color.Border.Strong","--pict-modal-header-bg":"Color.Background.Secondary","--pict-modal-header-fg":"Color.Text.Primary","--pict-modal-header-border":"Color.Border.Default","--pict-modal-btn-bg":"Color.Background.Secondary","--pict-modal-btn-fg":"Color.Text.Primary","--pict-modal-btn-hover-bg":"Color.Background.Hover","--pict-modal-btn-primary-bg":"Color.Brand.Primary","--pict-modal-btn-primary-fg":"Color.Text.OnBrand","--pict-modal-btn-primary-hover-bg":"Color.Brand.PrimaryHover","--pict-modal-btn-danger-bg":"Color.Status.Error","--pict-modal-btn-danger-fg":"Color.Text.OnBrand","--pict-modal-btn-danger-hover-bg":"Color.Status.Error","--pict-modal-toast-bg":"Color.Background.Panel","--pict-modal-toast-fg":"Color.Text.Primary","--pict-modal-toast-shadow":"Color.Border.Strong","--pict-modal-toast-success-bg":"Color.Status.Success","--pict-modal-toast-error-bg":"Color.Status.Error","--pict-modal-toast-warning-bg":"Color.Status.Warning","--pict-modal-toast-info-bg":"Color.Status.Info","--pict-modal-tooltip-bg":"Color.Background.Tertiary","--pict-modal-tooltip-fg":"Color.Text.Primary","--pict-modal-font-family":"Typography.Family.Sans","--pict-um-bg":"Color.Background.Panel","--pict-um-fg":"Color.Text.Primary","--pict-um-muted":"Color.Text.Muted","--pict-um-accent":"Color.Brand.Primary","--pict-um-border":"Color.Border.Default","--pict-um-border-soft":"Color.Border.Light","--pict-um-input-bg":"Color.Background.Primary","--pict-um-pill-bg":"Color.Background.Tertiary","--pict-um-font":"Typography.Family.Sans"}};},{}],207:[function(require,module,exports){module.exports={"Hash":"retold-content-system","Name":"Retold Content System","Version":"0.0.1","Description":"Default palette for the Retold Content System editor — warm beige with teal accents. Light side preserves the original retold-content-system.css palette verbatim; dark side keeps the teal accent and warms the backgrounds into a deep walnut/charcoal range so dark mode reads as the same family of values rather than a generic dark theme.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#F5F3EE","Dark":"#1F1B17"},"Secondary":{"Light":"#FAF8F4","Dark":"#2A251F"},"Tertiary":{"Light":"#F0EDE8","Dark":"#332D26"},"Panel":{"Light":"#FFFFFF","Dark":"#26221C"},"Hover":{"Light":"#EDE9E3","Dark":"#383028"},"Selected":{"Light":"#DCE9E7","Dark":"#1E3833"}},"Text":{"Primary":{"Light":"#3D3229","Dark":"#E8DCC8"},"Secondary":{"Light":"#5E5549","Dark":"#C0B5A4"},"Muted":{"Light":"#8A7F72","Dark":"#8E8478"},"Placeholder":{"Light":"#A89E91","Dark":"#6E6457"},"OnBrand":{"Light":"#FFFFFF","Dark":"#1F1B17"}},"Brand":{"Primary":{"Light":"#2E7D74","Dark":"#4FB3A6"},"PrimaryHover":{"Light":"#3A9E92","Dark":"#65CBBE"},"Accent":{"Light":"#2E7D74","Dark":"#4FB3A6"},"AccentHover":{"Light":"#3A9E92","Dark":"#65CBBE"}},"Border":{"Default":{"Light":"#DDD6CA","Dark":"#3F362C"},"Light":{"Light":"#E8E2D7","Dark":"#33291F"},"Strong":{"Light":"#C4BDB0","Dark":"#5A4F40"}},"Status":{"Success":{"Light":"#7BC47F","Dark":"#8FD493"},"Warning":{"Light":"#E8A94D","Dark":"#F0BE6E"},"Error":{"Light":"#D9534F","Dark":"#E87B78"},"Info":{"Light":"#5DA6C7","Dark":"#7FBDD8"}},"Data":{"1":{"Light":"#2E7D74","Dark":"#4FB3A6"},"2":{"Light":"#E8A94D","Dark":"#F0BE6E"},"3":{"Light":"#7BC47F","Dark":"#8FD493"},"4":{"Light":"#D9534F","Dark":"#E87B78"},"5":{"Light":"#A07ACC","Dark":"#BCA0DC"},"6":{"Light":"#5DA6C7","Dark":"#7FBDD8"},"7":{"Light":"#C46B8A","Dark":"#D8919E"},"8":{"Light":"#8A7F72","Dark":"#B8AFA4"}},"Scrollbar":{"Track":{"Light":"#F5F0E8","Dark":"#26221C"},"Thumb":{"Light":"#C4BDB0","Dark":"#4A4036"},"Hover":{"Light":"#8A7F72","Dark":"#6A5F50"}},"Selection":{"Background":{"Light":"#CDE3E0","Dark":"#2E5B55"},"Text":{"Light":"#3D3229","Dark":"#E8DCC8"}},"Focus":{"Outline":{"Light":"#2E7D74","Dark":"#4FB3A6"}},"Shadow":{"Color":{"Light":"rgba(61, 50, 41, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#A0532E","Dark":"#E89A6E"},"String":{"Light":"#3F8A52","Dark":"#8FD493"},"Number":{"Light":"#A86B00","Dark":"#E8A94D"},"Comment":{"Light":"#8A7F72","Dark":"#8E8478"},"Operator":{"Light":"#2E7D74","Dark":"#4FB3A6"},"Punctuation":{"Light":"#5E5549","Dark":"#C0B5A4"},"Function":{"Light":"#2E5E96","Dark":"#7FBDD8"},"Variable":{"Light":"#3D3229","Dark":"#E8DCC8"},"Type":{"Light":"#A86B00","Dark":"#E8A94D"},"Builtin":{"Light":"#A86B00","Dark":"#E8A94D"},"Property":{"Light":"#A0532E","Dark":"#E89A6E"},"Tag":{"Light":"#A0532E","Dark":"#E89A6E"},"AttrName":{"Light":"#A86B00","Dark":"#E8A94D"},"AttrValue":{"Light":"#3F8A52","Dark":"#8FD493"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"250px","TopbarHeight":"48px","StatusbarHeight":"28px"}},"Brand":{"Name":"Retold Content","Tagline":"Author content for the Retold ecosystem."}};},{}],208:[function(require,module,exports){module.exports={"Hash":"retold-default","Name":"Retold Default","Version":"0.0.1","Description":"The canonical paired light/dark theme for the Retold ecosystem. Neutral palette suitable for any retold-based app; dark mode is mid-grey rather than pure black to reduce eye strain.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ffffff","Dark":"#1a1a1a"},"Secondary":{"Light":"#f5f5f5","Dark":"#242424"},"Tertiary":{"Light":"#ebebeb","Dark":"#2e2e2e"},"Panel":{"Light":"#ffffff","Dark":"#222222"},"Hover":{"Light":"#f0f0f0","Dark":"#2a2a2a"},"Selected":{"Light":"#e0eaff","Dark":"#2a3550"}},"Text":{"Primary":{"Light":"#1a1a1a","Dark":"#ededed"},"Secondary":{"Light":"#454545","Dark":"#bdbdbd"},"Muted":{"Light":"#6b6b6b","Dark":"#888888"},"Placeholder":{"Light":"#9a9a9a","Dark":"#6a6a6a"}},"Brand":{"Primary":{"Light":"#3357c7","Dark":"#6b8eff"},"PrimaryHover":{"Light":"#2848b3","Dark":"#88a4ff"},"Accent":{"Light":"#c75033","Dark":"#ff8a6b"}},"Border":{"Default":{"Light":"#d6d6d6","Dark":"#3a3a3a"},"Light":{"Light":"#e9e9e9","Dark":"#2c2c2c"},"Strong":{"Light":"#a0a0a0","Dark":"#5a5a5a"}},"Status":{"Success":{"Light":"#2e7a3a","Dark":"#5fc377"},"Warning":{"Light":"#a86b00","Dark":"#f0b84a"},"Error":{"Light":"#b62828","Dark":"#ff7373"},"Info":{"Light":"#1f6fb5","Dark":"#5fb4ff"}},"Data":{"1":{"Light":"#3357c7","Dark":"#6b8eff"},"2":{"Light":"#c75033","Dark":"#ff8a6b"},"3":{"Light":"#2e7a3a","Dark":"#5fc377"},"4":{"Light":"#a86b00","Dark":"#f0b84a"},"5":{"Light":"#6b3aac","Dark":"#b08eff"},"6":{"Light":"#1f6fb5","Dark":"#5fb4ff"},"7":{"Light":"#c63a8e","Dark":"#ff7fb6"},"8":{"Light":"#6b6b6b","Dark":"#bdbdbd"}},"Scrollbar":{"Track":{"Light":"#ebebeb","Dark":"#1f1f1f"},"Thumb":{"Light":"#c2c2c2","Dark":"#3f3f3f"},"Hover":{"Light":"#a0a0a0","Dark":"#5a5a5a"}},"Selection":{"Background":{"Light":"#bcd2ff","Dark":"#3a4f7a"},"Text":{"Light":"#1a1a1a","Dark":"#ededed"}},"Focus":{"Outline":{"Light":"#3357c7","Dark":"#6b8eff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#a626a4","Dark":"#c678dd"},"String":{"Light":"#50a14f","Dark":"#98c379"},"Number":{"Light":"#986801","Dark":"#d19a66"},"Comment":{"Light":"#a0a1a7","Dark":"#7f848e"},"Operator":{"Light":"#0184bc","Dark":"#56b6c2"},"Punctuation":{"Light":"#383a42","Dark":"#abb2bf"},"Function":{"Light":"#4078f2","Dark":"#61afef"},"Variable":{"Light":"#383a42","Dark":"#e06c75"},"Type":{"Light":"#c18401","Dark":"#e5c07b"},"Builtin":{"Light":"#986801","Dark":"#d19a66"},"Property":{"Light":"#e45649","Dark":"#e06c75"},"Tag":{"Light":"#e45649","Dark":"#e06c75"},"AttrName":{"Light":"#986801","Dark":"#d19a66"},"AttrValue":{"Light":"#50a14f","Dark":"#98c379"}},"Editor":{"LineNumberBackground":{"Light":"#f5f5f5","Dark":"#1f1f1f"},"LineNumberText":{"Light":"#9a9a9a","Dark":"#6a6a6a"},"CurrentLineHighlight":{"Light":"#f0f0f0","Dark":"#2a2a2a"},"SelectionBackground":{"Light":"#bcd2ff","Dark":"#3a4f7a"},"GutterBorder":{"Light":"#e9e9e9","Dark":"#2c2c2c"}}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif","Serif":"Georgia, Cambria, Times New Roman, Times, serif","Mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.45","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Shadow":{"SM":"0 1px 2px var(--theme-color-shadow-color)","MD":"0 2px 6px var(--theme-color-shadow-color)","LG":"0 6px 18px var(--theme-color-shadow-color)"},"ZIndex":{"Base":"0","Dropdown":"100","Sticky":"200","Overlay":"900","Modal":"1000","Toast":"2000","Tooltip":"3000"},"Duration":{"Fast":"100ms","Normal":"200ms","Slow":"400ms"}},"Brand":{"Name":"Retold","Tagline":"What is software if not a tool to tell stories."},"CSS":[{"Hash":"retold-default-brand-accents","Priority":600,"Content":"/* pict-default \u2014 subtle brand-aware accents.\n Falls back gracefully to theme-color tokens when no brand is registered,\n so non-branded apps still look right. */\na { text-decoration-color: var(--brand-color-primary-mode, var(--theme-color-brand-primary, currentColor)); text-decoration-thickness: 2px; text-underline-offset: 3px; }\nh1 { border-bottom: 2px solid var(--brand-color-primary-mode, var(--theme-color-border-default, transparent)); padding-bottom: 6px; }\nh2 { border-bottom: 1px solid var(--brand-color-secondary-mode, var(--theme-color-border-light, transparent)); padding-bottom: 4px; }"}]};},{}],209:[function(require,module,exports){module.exports={"Hash":"retold-labs-cyberpunk","Name":"Retold Labs Cyberpunk","Version":"0.0.1","Description":"retold-labs’ neon \"cyberpunk\" identity — cyan/magenta on near-black (dark) or violet on light. Preserves the original cyberpunk-light / cyberpunk-dark palettes verbatim.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#eae8f0","Dark":"#0a0a12"},"Secondary":{"Light":"#ddd8ea","Dark":"#12101e"},"Tertiary":{"Light":"#ddd8ea","Dark":"#12101e"},"Panel":{"Light":"#f4f2fa","Dark":"#1a1628"},"Sidebar":{"Light":"#1e1430","Dark":"#06060e"},"Hover":{"Light":"rgba(130, 0, 200, 0.06)","Dark":"rgba(0, 255, 255, 0.08)"},"Selected":{"Light":"rgba(138, 0, 212, 0.10)","Dark":"rgba(0, 229, 255, 0.12)"}},"Text":{"Primary":{"Light":"#1a1028","Dark":"#e8e0f0"},"Secondary":{"Light":"#4a3868","Dark":"#b0a8c8"},"Muted":{"Light":"#7a6a98","Dark":"#6a6488"},"Placeholder":{"Light":"#7a6a98","Dark":"#6a6488"},"OnBrand":{"Light":"#d0c8e0","Dark":"#d0c8e0"}},"Brand":{"Primary":{"Light":"#8a00d4","Dark":"#00e5ff"},"PrimaryHover":{"Light":"#b040f0","Dark":"#60f0ff"},"Accent":{"Light":"#8a00d4","Dark":"#00e5ff"},"AccentHover":{"Light":"#b040f0","Dark":"#60f0ff"}},"Border":{"Default":{"Light":"#c8c0d8","Dark":"#2a2440"},"Light":{"Light":"#c8c0d8","Dark":"#2a2440"},"Strong":{"Light":"#2a2040","Dark":"#1a1430"}},"Status":{"Success":{"Light":"#00a050","Dark":"#39ff14"},"Warning":{"Light":"#d41878","Dark":"#ff2ec4"},"Error":{"Light":"#c82050","Dark":"#ff3860"},"Info":{"Light":"#8a00d4","Dark":"#00e5ff"}},"Scrollbar":{"Track":{"Light":"#ddd8ea","Dark":"#12101e"},"Thumb":{"Light":"#c8c0d8","Dark":"#2a2440"},"Hover":{"Light":"#7a6a98","Dark":"#6a6488"}},"Selection":{"Background":{"Light":"rgba(138, 0, 212, 0.10)","Dark":"rgba(0, 229, 255, 0.12)"},"Text":{"Light":"#1a1028","Dark":"#e8e0f0"}},"Focus":{"Outline":{"Light":"#8a00d4","Dark":"#00e5ff"}},"Shadow":{"Color":{"Light":"rgba(26, 16, 40, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#8a00d4","Dark":"#00e5ff"},"String":{"Light":"#00a050","Dark":"#39ff14"},"Number":{"Light":"#d41878","Dark":"#ff2ec4"},"Comment":{"Light":"#7a6a98","Dark":"#6a6488"},"Operator":{"Light":"#8a00d4","Dark":"#00e5ff"},"Punctuation":{"Light":"#4a3868","Dark":"#b0a8c8"},"Function":{"Light":"#8a00d4","Dark":"#00e5ff"},"Variable":{"Light":"#1a1028","Dark":"#e8e0f0"},"Type":{"Light":"#d41878","Dark":"#ff2ec4"},"Builtin":{"Light":"#d41878","Dark":"#ff2ec4"},"Property":{"Light":"#c82050","Dark":"#ff3860"},"Tag":{"Light":"#8a00d4","Dark":"#00e5ff"},"AttrName":{"Light":"#d41878","Dark":"#ff2ec4"},"AttrValue":{"Light":"#00a050","Dark":"#39ff14"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"230px","TopbarHeight":"52px","StatusbarHeight":"28px"}},"Brand":{"Name":"Retold Labs","Tagline":"Run, compare, and distribute ML experiments across the mesh"}};},{}],210:[function(require,module,exports){module.exports={"Hash":"retold-labs-retro","Name":"Retold Labs Retro","Version":"0.0.1","Description":"retold-labs’ \"retro\" identity — amber/green phosphor on dark or sepia/olive on light. Preserves the original retro-light / retro-dark palettes verbatim.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#f5f0e0","Dark":"#0c0c08"},"Secondary":{"Light":"#ebe4d0","Dark":"#161610"},"Tertiary":{"Light":"#ebe4d0","Dark":"#161610"},"Panel":{"Light":"#faf6e8","Dark":"#1e1e14"},"Sidebar":{"Light":"#3a3020","Dark":"#080804"},"Hover":{"Light":"rgba(140, 80, 20, 0.06)","Dark":"rgba(255, 176, 0, 0.08)"},"Selected":{"Light":"rgba(140, 80, 20, 0.10)","Dark":"rgba(255, 176, 0, 0.12)"}},"Text":{"Primary":{"Light":"#2e2418","Dark":"#d0c8a0"},"Secondary":{"Light":"#5c4a30","Dark":"#a09870"},"Muted":{"Light":"#8a7450","Dark":"#706848"},"Placeholder":{"Light":"#8a7450","Dark":"#706848"},"OnBrand":{"Light":"#d8c8a0","Dark":"#c8b870"}},"Brand":{"Primary":{"Light":"#8c5014","Dark":"#ffb000"},"PrimaryHover":{"Light":"#b06820","Dark":"#ffc840"},"Accent":{"Light":"#8c5014","Dark":"#ffb000"},"AccentHover":{"Light":"#b06820","Dark":"#ffc840"}},"Border":{"Default":{"Light":"#d0c4a8","Dark":"#2a2a1e"},"Light":{"Light":"#d0c4a8","Dark":"#2a2a1e"},"Strong":{"Light":"#4a4030","Dark":"#1a1a10"}},"Status":{"Success":{"Light":"#2e7830","Dark":"#40c850"},"Warning":{"Light":"#2e7830","Dark":"#40c850"},"Error":{"Light":"#a03020","Dark":"#e04030"},"Info":{"Light":"#8c5014","Dark":"#ffb000"}},"Scrollbar":{"Track":{"Light":"#ebe4d0","Dark":"#161610"},"Thumb":{"Light":"#d0c4a8","Dark":"#2a2a1e"},"Hover":{"Light":"#8a7450","Dark":"#706848"}},"Selection":{"Background":{"Light":"rgba(140, 80, 20, 0.10)","Dark":"rgba(255, 176, 0, 0.12)"},"Text":{"Light":"#2e2418","Dark":"#d0c8a0"}},"Focus":{"Outline":{"Light":"#8c5014","Dark":"#ffb000"}},"Shadow":{"Color":{"Light":"rgba(46, 36, 24, 0.12)","Dark":"rgba(0, 0, 0, 0.55)"}},"Syntax":{"Keyword":{"Light":"#8c5014","Dark":"#ffb000"},"String":{"Light":"#2e7830","Dark":"#40c850"},"Number":{"Light":"#2e7830","Dark":"#40c850"},"Comment":{"Light":"#8a7450","Dark":"#706848"},"Operator":{"Light":"#8c5014","Dark":"#ffb000"},"Punctuation":{"Light":"#5c4a30","Dark":"#a09870"},"Function":{"Light":"#8c5014","Dark":"#ffb000"},"Variable":{"Light":"#2e2418","Dark":"#d0c8a0"},"Type":{"Light":"#2e7830","Dark":"#40c850"},"Builtin":{"Light":"#2e7830","Dark":"#40c850"},"Property":{"Light":"#a03020","Dark":"#e04030"},"Tag":{"Light":"#8c5014","Dark":"#ffb000"},"AttrName":{"Light":"#2e7830","Dark":"#40c850"},"AttrValue":{"Light":"#2e7830","Dark":"#40c850"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"230px","TopbarHeight":"52px","StatusbarHeight":"28px"}},"Brand":{"Name":"Retold Labs","Tagline":"Run, compare, and distribute ML experiments across the mesh"}};},{}],211:[function(require,module,exports){module.exports={"Hash":"retold-labs","Name":"Retold Labs","Version":"0.0.1","Description":"retold-labs’ original \"professional\" identity — warm beige with teal accents and a deep teal sidebar. Light side preserves professional-light verbatim; dark side preserves professional-dark.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#faf6f0","Dark":"#14201e"},"Secondary":{"Light":"#f0ebe2","Dark":"#1a2c2a"},"Tertiary":{"Light":"#f0ebe2","Dark":"#1a2c2a"},"Panel":{"Light":"#ffffff","Dark":"#1e3532"},"Sidebar":{"Light":"#1a3a3a","Dark":"#0e1a18"},"Hover":{"Light":"rgba(13, 138, 138, 0.06)","Dark":"rgba(45, 212, 191, 0.08)"},"Selected":{"Light":"rgba(13, 138, 138, 0.10)","Dark":"rgba(45, 212, 191, 0.12)"}},"Text":{"Primary":{"Light":"#2c2416","Dark":"#e0ebe8"},"Secondary":{"Light":"#5c4f3d","Dark":"#a8bfb8"},"Muted":{"Light":"#8a7d6b","Dark":"#6a8a82"},"Placeholder":{"Light":"#8a7d6b","Dark":"#6a8a82"},"OnBrand":{"Light":"#c8dcd8","Dark":"#c8dcd8"}},"Brand":{"Primary":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"PrimaryHover":{"Light":"#14b8a6","Dark":"#5eead4"},"Accent":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"AccentHover":{"Light":"#14b8a6","Dark":"#5eead4"}},"Border":{"Default":{"Light":"#ddd5c8","Dark":"#2a4a44"},"Light":{"Light":"#ddd5c8","Dark":"#2a4a44"},"Strong":{"Light":"#2a5454","Dark":"#1e3a36"}},"Status":{"Success":{"Light":"#2e9e5a","Dark":"#4ade80"},"Warning":{"Light":"#e07830","Dark":"#f59e4a"},"Error":{"Light":"#c9442e","Dark":"#f87171"},"Info":{"Light":"#0d8a8a","Dark":"#2dd4bf"}},"Scrollbar":{"Track":{"Light":"#f0ebe2","Dark":"#1a2c2a"},"Thumb":{"Light":"#ddd5c8","Dark":"#2a4a44"},"Hover":{"Light":"#8a7d6b","Dark":"#6a8a82"}},"Selection":{"Background":{"Light":"rgba(13, 138, 138, 0.10)","Dark":"rgba(45, 212, 191, 0.12)"},"Text":{"Light":"#2c2416","Dark":"#e0ebe8"}},"Focus":{"Outline":{"Light":"#0d8a8a","Dark":"#2dd4bf"}},"Shadow":{"Color":{"Light":"rgba(44, 36, 22, 0.12)","Dark":"rgba(0, 0, 0, 0.45)"}},"Syntax":{"Keyword":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"String":{"Light":"#2e9e5a","Dark":"#4ade80"},"Number":{"Light":"#e07830","Dark":"#f59e4a"},"Comment":{"Light":"#8a7d6b","Dark":"#6a8a82"},"Operator":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"Punctuation":{"Light":"#5c4f3d","Dark":"#a8bfb8"},"Function":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"Variable":{"Light":"#2c2416","Dark":"#e0ebe8"},"Type":{"Light":"#e07830","Dark":"#f59e4a"},"Builtin":{"Light":"#e07830","Dark":"#f59e4a"},"Property":{"Light":"#c9442e","Dark":"#f87171"},"Tag":{"Light":"#0d8a8a","Dark":"#2dd4bf"},"AttrName":{"Light":"#e07830","Dark":"#f59e4a"},"AttrValue":{"Light":"#2e9e5a","Dark":"#4ade80"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"500","Bold":"700"},"LineHeight":{"Tight":"1.2","Normal":"1.5","Loose":"1.7"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"2px","MD":"4px","LG":"8px","XL":"12px","Pill":"999px"},"Layout":{"SidebarWidth":"230px","TopbarHeight":"52px","StatusbarHeight":"28px"}},"Brand":{"Name":"Retold Labs","Tagline":"Run, compare, and distribute ML experiments across the mesh"}};},{}],212:[function(require,module,exports){module.exports={"Hash":"retold-manager","Name":"Retold Manager","Description":"Default palette for the Retold Manager application — GitHub-style dark on slate with a parallel light variant. Dark side mirrors retold-manager.css's original colors verbatim; light side is a sympathetic translation tuned for daytime use. The retold-manager.css :root block proxies its --color-* names through these --theme-color-* tokens (with the original hexes as fallbacks), so this theme drives the whole app cleanly and other catalog themes still skin most of it.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#f6f8fa","Dark":"#0e1116"},"Secondary":{"Light":"#eef1f4","Dark":"#161b22"},"Tertiary":{"Light":"#e4e8ec","Dark":"#1c2128"},"Panel":{"Light":"#ffffff","Dark":"#161b22"},"PanelAlt":{"Light":"#f0f3f6","Dark":"#1c2128"},"Hover":{"Light":"#eaeef2","Dark":"#1c2128"},"Selected":{"Light":"#dbe7ff","Dark":"#243454"}},"Border":{"Default":{"Light":"#d0d7de","Dark":"#30363d"},"Light":{"Light":"#e1e4e8","Dark":"#21262d"},"Strong":{"Light":"#a8b1bb","Dark":"#484f58"}},"Brand":{"Primary":{"Light":"#0969da","Dark":"#2f81f7"},"PrimaryHover":{"Light":"#0550ae","Dark":"#1f6feb"},"Accent":{"Light":"#0969da","Dark":"#2f81f7"},"AccentHover":{"Light":"#0550ae","Dark":"#1f6feb"}},"Text":{"Primary":{"Light":"#1f2328","Dark":"#e6edf3"},"Secondary":{"Light":"#3b424a","Dark":"#c9d1d9"},"Muted":{"Light":"#656d76","Dark":"#8b949e"},"Placeholder":{"Light":"#8c959f","Dark":"#6e7681"},"OnBrand":{"Light":"#ffffff","Dark":"#ffffff"}},"Status":{"Success":{"Light":"#1a7f37","Dark":"#3fb950"},"Danger":{"Light":"#cf222e","Dark":"#f85149"},"Warning":{"Light":"#9a6700","Dark":"#d29922"},"Error":{"Light":"#cf222e","Dark":"#f85149"},"Info":{"Light":"#0969da","Dark":"#2f81f7"}},"Data":{"1":{"Light":"#0969da","Dark":"#2f81f7"},"2":{"Light":"#cf222e","Dark":"#f85149"},"3":{"Light":"#1a7f37","Dark":"#3fb950"},"4":{"Light":"#9a6700","Dark":"#d29922"},"5":{"Light":"#8250df","Dark":"#a371f7"},"6":{"Light":"#bf3989","Dark":"#db61a2"},"7":{"Light":"#1b7c83","Dark":"#39c5cf"},"8":{"Light":"#656d76","Dark":"#8b949e"}},"Scrollbar":{"Track":{"Light":"#eef1f4","Dark":"#161b22"},"Thumb":{"Light":"#c1c8cf","Dark":"#30363d"},"Hover":{"Light":"#a8b1bb","Dark":"#484f58"}},"Selection":{"Background":{"Light":"#cfe6ff","Dark":"#243454"},"Text":{"Light":"#1f2328","Dark":"#e6edf3"}},"Focus":{"Outline":{"Light":"#0969da","Dark":"#2f81f7"}},"Syntax":{"Keyword":{"Light":"#cf222e","Dark":"#ff7b72"},"String":{"Light":"#0a3069","Dark":"#a5d6ff"},"Number":{"Light":"#0550ae","Dark":"#79c0ff"},"Comment":{"Light":"#6e7781","Dark":"#8b949e"},"Operator":{"Light":"#cf222e","Dark":"#ff7b72"},"Punctuation":{"Light":"#24292f","Dark":"#c9d1d9"},"Function":{"Light":"#8250df","Dark":"#d2a8ff"},"Variable":{"Light":"#24292f","Dark":"#c9d1d9"},"Type":{"Light":"#953800","Dark":"#ffa657"},"Builtin":{"Light":"#0550ae","Dark":"#79c0ff"},"Property":{"Light":"#0550ae","Dark":"#79c0ff"},"Tag":{"Light":"#116329","Dark":"#7ee787"},"AttrName":{"Light":"#8250df","Dark":"#d2a8ff"},"AttrValue":{"Light":"#0a3069","Dark":"#a5d6ff"}}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, \"SF Pro\", \"Segoe UI\", sans-serif","Mono":"ui-monospace, \"SF Mono\", Menlo, Monaco, \"Courier New\", monospace"}},"Layout":{"SidebarWidth":"280px","TopbarHeight":"44px","StatusbarHeight":"28px"}}};},{}],213:[function(require,module,exports){module.exports={"Hash":"retold-mono","Name":"Retold Mono","Version":"0.0.2","Description":"High-contrast monochrome theme — black on white in light mode, white on black in dark mode. Useful for print, simple admin tooling, and as a paired-mode reference theme that proves the toggle works on something visually unmistakable.","Comprehensive":true,"Modes":{"Strategy":"system","Default":"system"},"Tokens":{"Color":{"Background":{"Primary":{"Light":"#ffffff","Dark":"#000000"},"Secondary":{"Light":"#f0f0f0","Dark":"#101010"},"Tertiary":{"Light":"#e2e2e2","Dark":"#1c1c1c"},"Panel":{"Light":"#ffffff","Dark":"#000000"},"Hover":{"Light":"#ebebeb","Dark":"#1a1a1a"},"Selected":{"Light":"#d6d6d6","Dark":"#2a2a2a"}},"Text":{"Primary":{"Light":"#000000","Dark":"#ffffff"},"Secondary":{"Light":"#222222","Dark":"#dddddd"},"Muted":{"Light":"#555555","Dark":"#aaaaaa"},"Placeholder":{"Light":"#888888","Dark":"#777777"}},"Brand":{"Primary":{"Light":"#000000","Dark":"#ffffff"},"PrimaryHover":{"Light":"#222222","Dark":"#dddddd"},"Accent":{"Light":"#444444","Dark":"#bbbbbb"}},"Border":{"Default":{"Light":"#888888","Dark":"#666666"},"Light":{"Light":"#cccccc","Dark":"#333333"},"Strong":{"Light":"#000000","Dark":"#ffffff"}},"Status":{"Success":{"Light":"#000000","Dark":"#ffffff"},"Warning":{"Light":"#000000","Dark":"#ffffff"},"Error":{"Light":"#000000","Dark":"#ffffff"},"Info":{"Light":"#000000","Dark":"#ffffff"}},"Data":{"1":{"Light":"#000000","Dark":"#ffffff"},"2":{"Light":"#262626","Dark":"#e0e0e0"},"3":{"Light":"#404040","Dark":"#c0c0c0"},"4":{"Light":"#595959","Dark":"#a0a0a0"},"5":{"Light":"#737373","Dark":"#808080"},"6":{"Light":"#8c8c8c","Dark":"#737373"},"7":{"Light":"#a6a6a6","Dark":"#595959"},"8":{"Light":"#bfbfbf","Dark":"#404040"}},"Scrollbar":{"Track":{"Light":"#e0e0e0","Dark":"#101010"},"Thumb":{"Light":"#888888","Dark":"#666666"},"Hover":{"Light":"#444444","Dark":"#bbbbbb"}},"Selection":{"Background":{"Light":"#000000","Dark":"#ffffff"},"Text":{"Light":"#ffffff","Dark":"#000000"}},"Focus":{"Outline":{"Light":"#000000","Dark":"#ffffff"}},"Shadow":{"Color":{"Light":"rgba(0, 0, 0, 0.18)","Dark":"rgba(255, 255, 255, 0.18)"}},"Syntax":{"Keyword":{"Light":"#000000","Dark":"#ffffff"},"String":{"Light":"#555555","Dark":"#cccccc"},"Number":{"Light":"#000000","Dark":"#ffffff"},"Comment":{"Light":"#888888","Dark":"#888888"},"Operator":{"Light":"#000000","Dark":"#ffffff"},"Punctuation":{"Light":"#444444","Dark":"#bbbbbb"},"Function":{"Light":"#000000","Dark":"#ffffff"},"Variable":{"Light":"#000000","Dark":"#ffffff"},"Type":{"Light":"#222222","Dark":"#dddddd"},"Builtin":{"Light":"#222222","Dark":"#dddddd"},"Property":{"Light":"#444444","Dark":"#bbbbbb"},"Tag":{"Light":"#000000","Dark":"#ffffff"},"AttrName":{"Light":"#444444","Dark":"#bbbbbb"},"AttrValue":{"Light":"#555555","Dark":"#cccccc"}}},"Typography":{"Family":{"Sans":"Helvetica, Arial, sans-serif","Serif":"Georgia, Times New Roman, serif","Mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"},"Size":{"XS":"0.75rem","SM":"0.875rem","MD":"1rem","LG":"1.125rem","XL":"1.375rem","XXL":"1.75rem"},"Weight":{"Regular":"400","Medium":"600","Bold":"700"},"LineHeight":{"Tight":"1.15","Normal":"1.4","Loose":"1.65"}},"Spacing":{"XS":"4px","SM":"8px","MD":"12px","LG":"16px","XL":"24px","XXL":"32px"},"Radius":{"None":"0","SM":"0","MD":"0","LG":"0","XL":"0","Pill":"999px"},"Shadow":{"SM":"0 1px 0 var(--theme-color-shadow-color)","MD":"0 2px 0 var(--theme-color-shadow-color)","LG":"0 4px 0 var(--theme-color-shadow-color)"},"ZIndex":{"Base":"0","Dropdown":"100","Sticky":"200","Overlay":"900","Modal":"1000","Toast":"2000","Tooltip":"3000"},"Duration":{"Fast":"0ms","Normal":"0ms","Slow":"0ms"}},"Brand":{"Name":"Retold Mono","Tagline":"Black on white. White on black. Nothing else."},"CSS":[{"Hash":"retold-mono-brand-accents","Priority":600,"Content":"/* retold-mono — keeps the all-monochrome aesthetic but lets brand colors\n in for narrow accent moments. The thick rule under H1 is brand primary;\n the hair rule under H2 is brand secondary. Without a brand registered\n they fall back to mono black/grey. */\na { text-decoration-color: var(--brand-color-primary-mode, currentColor); text-decoration-thickness: 2px; text-underline-offset: 3px; }\nh1 { border-bottom: 3px solid var(--brand-color-primary-mode, var(--theme-color-text-primary, #000)); padding-bottom: 6px; }\nh2 { border-bottom: 1px solid var(--brand-color-secondary-mode, var(--theme-color-border-default, #888)); padding-bottom: 4px; }"}]};},{}],214:[function(require,module,exports){module.exports={"Hash":"solarized-dark","Name":"Solarized Dark","Category":"Fun","Version":"0.0.1","Description":"Schoonover's classic palette Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#002B36","Secondary":"#073642","Tertiary":"#003B4A","Panel":"#00303C","Viewer":"#001E28","Hover":"#0A4858","Selected":"#155868","Thumb":"#073642"},"Text":{"Primary":"#FDF6E3","Secondary":"#EEE8D5","Muted":"#93A1A1","Dim":"#839496","Placeholder":"#657B83"},"Brand":{"Accent":"#268BD2","AccentHover":"#45A0E0"},"Border":{"Default":"#0A4050","Light":"#125868"},"Status":{"Danger":"#DC322F","DangerMuted":"#AA2A28"},"Scrollbar":{"Track":"#0A4050","Hover":"#125868"},"Selection":{"Background":"rgba(38, 139, 210, 0.25)"},"Focus":{"Outline":"#268BD2"},"Syntax":{"Keyword":"#859900","String":"#2AA198","Number":"#D33682","Comment":"#586E75","Operator":"#268BD2","Punctuation":"#93A1A1","Function":"#B58900","Variable":"#FDF6E3","Type":"#B58900","Builtin":"#CB4B16","Property":"#268BD2","Tag":"#268BD2","AttrName":"#B58900","AttrValue":"#2AA198"}},"Typography":{"Family":{"Sans":"'Source Code Pro', 'Fira Code', monospace","Mono":"'Source Code Pro', 'Fira Code', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#EEE8D5","Accent":"#268BD2","Muted":"#839496","Light":"#003B4A","WarmBeige":"#073642","TealTint":"#004050","Lavender":"#003848","AmberTint":"#0A3A30","PdfFill":"#0A3028","PdfText":"#DC322F"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],215:[function(require,module,exports){module.exports={"Hash":"synthwave","Name":"Synthwave","Category":"Fun","Version":"0.0.1","Description":"Purple and pink neon Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1A0A2E","Secondary":"#140824","Tertiary":"#200E38","Panel":"#1C0C32","Viewer":"#100620","Hover":"#2A1848","Selected":"#3A2060","Thumb":"#140824"},"Text":{"Primary":"#E8C0F8","Secondary":"#D0A8E8","Muted":"#9878B8","Dim":"#7858A8","Placeholder":"#584088"},"Brand":{"Accent":"#FF71CE","AccentHover":"#FF99DD"},"Border":{"Default":"#302050","Light":"#402868"},"Status":{"Danger":"#FF4488","DangerMuted":"#AA3366"},"Scrollbar":{"Track":"#302050","Hover":"#402868"},"Selection":{"Background":"rgba(255, 113, 206, 0.25)"},"Focus":{"Outline":"#FF71CE"},"Syntax":{"Keyword":"#FF6AD5","String":"#FFE066","Number":"#FF6AD5","Comment":"#9C8AC1","Operator":"#26F0F1","Punctuation":"#C8B6E2","Function":"#26F0F1","Variable":"#FFE0FF","Type":"#FFD93D","Builtin":"#FFD93D","Property":"#FF477E","Tag":"#FF477E","AttrName":"#FFD93D","AttrValue":"#FFE066"}},"Typography":{"Family":{"Sans":"'Trebuchet MS', sans-serif","Mono":"'Courier New', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#D0A8E8","Accent":"#FF71CE","Muted":"#7858A8","Light":"#200E38","WarmBeige":"#221040","TealTint":"#1A0C30","Lavender":"#1E0E36","AmberTint":"#241028","PdfFill":"#241020","PdfText":"#FF4488"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],216:[function(require,module,exports){module.exports={"Hash":"twilight","Name":"Twilight","Category":"Grey","Version":"0.0.1","Description":"Dark grey, low light. Ported from RetoldRemote-ThemeDefinitions.js to the pict-provider-theme manifest format. Single-mode (no light/dark bifurcation). Aliases preserve the legacy `--retold-*` variable names so existing CSS keeps working through the migration.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1E1E1E","Secondary":"#181818","Tertiary":"#252525","Panel":"#202020","Viewer":"#141414","Hover":"#2E2E2E","Selected":"#404040","Thumb":"#181818"},"Text":{"Primary":"#E0E0E0","Secondary":"#C8C8C8","Muted":"#909090","Dim":"#707070","Placeholder":"#585858"},"Brand":{"Accent":"#A0A0A0","AccentHover":"#C0C0C0"},"Border":{"Default":"#333333","Light":"#404040"},"Status":{"Danger":"#FF6666","DangerMuted":"#AA6666"},"Scrollbar":{"Track":"#404040","Hover":"#505050"},"Selection":{"Background":"rgba(160, 160, 160, 0.25)"},"Focus":{"Outline":"#A0A0A0"},"Syntax":{"Keyword":"#B58FFF","String":"#9CDFB0","Number":"#FFB870","Comment":"#6E6E6E","Operator":"#7CC5FF","Punctuation":"#C0C0C0","Function":"#FFD080","Variable":"#E0E0E0","Type":"#FFB870","Builtin":"#FFB870","Property":"#FF8B8B","Tag":"#FF8B8B","AttrName":"#FFB870","AttrValue":"#9CDFB0"}},"Typography":{"Family":{"Sans":"system-ui, -apple-system, sans-serif","Mono":"'SF Mono', 'Fira Code', 'Consolas', monospace"}}},"Aliases":{"--retold-bg-primary":"Color.Background.Primary","--retold-bg-secondary":"Color.Background.Secondary","--retold-bg-tertiary":"Color.Background.Tertiary","--retold-bg-panel":"Color.Background.Panel","--retold-bg-viewer":"Color.Background.Viewer","--retold-bg-hover":"Color.Background.Hover","--retold-bg-selected":"Color.Background.Selected","--retold-bg-thumb":"Color.Background.Thumb","--retold-text-primary":"Color.Text.Primary","--retold-text-secondary":"Color.Text.Secondary","--retold-text-muted":"Color.Text.Muted","--retold-text-dim":"Color.Text.Dim","--retold-text-placeholder":"Color.Text.Placeholder","--retold-accent":"Color.Brand.Accent","--retold-accent-hover":"Color.Brand.AccentHover","--retold-border":"Color.Border.Default","--retold-border-light":"Color.Border.Light","--retold-danger":"Color.Status.Danger","--retold-danger-muted":"Color.Status.DangerMuted","--retold-scrollbar":"Color.Scrollbar.Track","--retold-scrollbar-hover":"Color.Scrollbar.Hover","--retold-selection-bg":"Color.Selection.Background","--retold-focus-outline":"Color.Focus.Outline","--retold-font-family":"Typography.Family.Sans","--retold-font-mono":"Typography.Family.Mono"},"IconColors":{"Primary":"#C8C8C8","Accent":"#A0A0A0","Muted":"#707070","Light":"#252525","WarmBeige":"#2A2A2A","TealTint":"#222222","Lavender":"#282828","AmberTint":"#2E2A24","PdfFill":"#2E2224","PdfText":"#E06060"},"CSS":[],"SVG":{},"Image":{},"CompiledAt":"2026-05-03T18:12:53.408Z","CompilerVersion":1};},{}],217:[function(require,module,exports){module.exports={"Hash":"ultravisor-desert-canyon","Name":"Ultravisor — Desert Canyon","Version":"0.0.1","Description":"Vibrant desert palette — orange brand and teal accents on deep canyon-brown backgrounds. Single-mode dark.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#18120e","Secondary":"#221a14","Tertiary":"#2e2018","Panel":"#221a14","Hover":"#3a2a1e","Selected":"#3a2a1e"},"Text":{"Primary":"#d8c8b0","Secondary":"#e8d8c0","Muted":"#a09080","Placeholder":"#685040","OnBrand":"#18120e"},"Brand":{"Primary":"#e8943a","PrimaryHover":"#f0a44a","Accent":"#18a0a0","AccentHover":"#30b0b0"},"Border":{"Default":"#3a2a1e","Light":"#2e2018","Strong":"#4a3a2e"},"Status":{"Success":"#18a0a0","Warning":"#e0c870","Error":"#e05830","Info":"#18a0a0"},"Scrollbar":{"Track":"#221a14","Thumb":"#3a2a1e","Hover":"#4a3a2e"},"Selection":{"Background":"#3a2a1e","Text":"#e8d8c0"},"Focus":{"Outline":"#e8943a"},"Shadow":{"Color":"rgba(0, 0, 0, 0.30)"},"Syntax":{"Keyword":"#E89A6E","String":"#8FD493","Number":"#E8A94D","Comment":"#8E8478","Operator":"#4FB3A6","Punctuation":"#C0B5A4","Function":"#7FBDD8","Variable":"#E8DCC8","Type":"#E8A94D","Builtin":"#E8A94D","Property":"#E89A6E","Tag":"#E89A6E","AttrName":"#E8A94D","AttrValue":"#8FD493"},"Editor":{"LineNumberBackground":"#221a14","LineNumberText":"#685040","CurrentLineHighlight":"#2e2018","SelectionBackground":"#3a2a1e","GutterBorder":"#2e2018"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],218:[function(require,module,exports){module.exports={"Hash":"ultravisor-desert-day","Name":"Ultravisor — Desert Day","Version":"0.0.1","Description":"Ultravisor's warm light palette — cream backgrounds, deep walnut text, teal accents. Single-mode light.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#faf6f0","Secondary":"#f0e6d6","Tertiary":"#e8ddd0","Panel":"#ffffff","Hover":"#f0e6d6","Selected":"#e8ddd0"},"Text":{"Primary":"#3d2b1f","Secondary":"#2e1e14","Muted":"#8a7560","Placeholder":"#a09080","OnBrand":"#ffffff"},"Brand":{"Primary":"#5c3d2e","PrimaryHover":"#7a5040","Accent":"#3a8a8c","AccentHover":"#2a7070"},"Border":{"Default":"#e0d0b8","Light":"#e8ddd0","Strong":"#c8b8a0"},"Status":{"Success":"#5a7a30","Warning":"#b08020","Error":"#a03040","Info":"#3a8a8c"},"Scrollbar":{"Track":"#f0e6d6","Thumb":"#d0c0a8","Hover":"#c0b098"},"Selection":{"Background":"#e8ddd0","Text":"#2e1e14"},"Focus":{"Outline":"#c2703e"},"Shadow":{"Color":"rgba(92, 61, 46, 0.10)"},"Syntax":{"Keyword":"#A0532E","String":"#3F8A52","Number":"#A86B00","Comment":"#8A7F72","Operator":"#2E7D74","Punctuation":"#5E5549","Function":"#2E5E96","Variable":"#3D3229","Type":"#A86B00","Builtin":"#A86B00","Property":"#A0532E","Tag":"#A0532E","AttrName":"#A86B00","AttrValue":"#3F8A52"},"Editor":{"LineNumberBackground":"#f0e6d6","LineNumberText":"#a09080","CurrentLineHighlight":"#f5ede0","SelectionBackground":"#e8ddd0","GutterBorder":"#e0d0b8"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],219:[function(require,module,exports){module.exports={"Hash":"ultravisor-desert-dusk","Name":"Ultravisor — Desert Dusk","Version":"0.0.1","Description":"Ultravisor's original default — warm tan brand on muted dark desert backgrounds. Single-mode dark.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1a1714","Secondary":"#252018","Tertiary":"#302818","Panel":"#252018","Hover":"#3a3028","Selected":"#3a3028"},"Text":{"Primary":"#c8b8a0","Secondary":"#d8c8a8","Muted":"#907860","Placeholder":"#706050","OnBrand":"#FFFFFF"},"Brand":{"Primary":"#c4956a","PrimaryHover":"#d4a57a","Accent":"#4a9090","AccentHover":"#5aacac"},"Border":{"Default":"#3a3028","Light":"#302818","Strong":"#4a4038"},"Status":{"Success":"#8a9a5a","Warning":"#c0a050","Error":"#b04050","Info":"#4a9090"},"Scrollbar":{"Track":"#252018","Thumb":"#3a3028","Hover":"#4a4038"},"Selection":{"Background":"#3a3028","Text":"#d8c8a8"},"Focus":{"Outline":"#c4956a"},"Shadow":{"Color":"rgba(0, 0, 0, 0.30)"},"Syntax":{"Keyword":"#E89A6E","String":"#8FD493","Number":"#E8A94D","Comment":"#8E8478","Operator":"#4FB3A6","Punctuation":"#C0B5A4","Function":"#7FBDD8","Variable":"#E8DCC8","Type":"#E8A94D","Builtin":"#E8A94D","Property":"#E89A6E","Tag":"#E89A6E","AttrName":"#E8A94D","AttrValue":"#8FD493"},"Editor":{"LineNumberBackground":"#252018","LineNumberText":"#706050","CurrentLineHighlight":"#302818","SelectionBackground":"#3a3028","GutterBorder":"#302818"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],220:[function(require,module,exports){module.exports={"Hash":"ultravisor-desert-sunset","Name":"Ultravisor — Desert Sunset","Version":"0.0.1","Description":"Ultravisor's golden-hour palette — orange brand on rust-warmed dark backgrounds. Single-mode dark.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#1e1610","Secondary":"#2a2018","Tertiary":"#342818","Panel":"#2a2018","Hover":"#3a2e22","Selected":"#3a2e22"},"Text":{"Primary":"#d4c4aa","Secondary":"#e0d0b8","Muted":"#8a7560","Placeholder":"#6a5840","OnBrand":"#1e1610"},"Brand":{"Primary":"#e8943a","PrimaryHover":"#f0a44a","Accent":"#2a8a8a","AccentHover":"#3a9a9a"},"Border":{"Default":"#3a2e22","Light":"#342818","Strong":"#4a3e32"},"Status":{"Success":"#6a9a3a","Warning":"#d4a46a","Error":"#c44e2a","Info":"#2a8a8a"},"Scrollbar":{"Track":"#2a2018","Thumb":"#3a2e22","Hover":"#4a3e32"},"Selection":{"Background":"#3a2e22","Text":"#e0d0b8"},"Focus":{"Outline":"#e8943a"},"Shadow":{"Color":"rgba(0, 0, 0, 0.30)"},"Syntax":{"Keyword":"#E89A6E","String":"#8FD493","Number":"#E8A94D","Comment":"#8E8478","Operator":"#4FB3A6","Punctuation":"#C0B5A4","Function":"#7FBDD8","Variable":"#E8DCC8","Type":"#E8A94D","Builtin":"#E8A94D","Property":"#E89A6E","Tag":"#E89A6E","AttrName":"#E8A94D","AttrValue":"#8FD493"},"Editor":{"LineNumberBackground":"#2a2018","LineNumberText":"#6a5840","CurrentLineHighlight":"#342818","SelectionBackground":"#3a2e22","GutterBorder":"#342818"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],221:[function(require,module,exports){module.exports={"Hash":"ultravisor-professional-dark","Name":"Ultravisor — Professional Dark","Version":"0.0.1","Description":"Dark modern palette — slate-blue text on inky surfaces, sky-blue brand. Single-mode dark.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"dark"},"Tokens":{"Color":{"Background":{"Primary":"#111318","Secondary":"#1a1d24","Tertiary":"#22252e","Panel":"#1a1d24","Hover":"#282c34","Selected":"#282c34"},"Text":{"Primary":"#c8cdd5","Secondary":"#e0e4ea","Muted":"#8b92a0","Placeholder":"#5a6070","OnBrand":"#ffffff"},"Brand":{"Primary":"#60a5fa","PrimaryHover":"#93c5fd","Accent":"#60a5fa","AccentHover":"#93c5fd"},"Border":{"Default":"#282c34","Light":"#22252e","Strong":"#3a3f4a"},"Status":{"Success":"#34d399","Warning":"#fbbf24","Error":"#f87171","Info":"#60a5fa"},"Scrollbar":{"Track":"#1a1d24","Thumb":"#282c34","Hover":"#3a3f4a"},"Selection":{"Background":"#1e2230","Text":"#e0e4ea"},"Focus":{"Outline":"#60a5fa"},"Shadow":{"Color":"rgba(0, 0, 0, 0.30)"},"Syntax":{"Keyword":"#E89A6E","String":"#8FD493","Number":"#E8A94D","Comment":"#8E8478","Operator":"#4FB3A6","Punctuation":"#C0B5A4","Function":"#7FBDD8","Variable":"#E8DCC8","Type":"#E8A94D","Builtin":"#E8A94D","Property":"#E89A6E","Tag":"#E89A6E","AttrName":"#E8A94D","AttrValue":"#8FD493"},"Editor":{"LineNumberBackground":"#1a1d24","LineNumberText":"#5a6070","CurrentLineHighlight":"#22252e","SelectionBackground":"#1e2230","GutterBorder":"#22252e"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],222:[function(require,module,exports){module.exports={"Hash":"ultravisor-professional-light","Name":"Ultravisor — Professional Light","Version":"0.0.1","Description":"Bright modern palette — slate text on near-white backgrounds, royal-blue brand. Single-mode light.","Comprehensive":true,"Modes":{"Strategy":"single","Default":"light"},"Tokens":{"Color":{"Background":{"Primary":"#f5f6f8","Secondary":"#ffffff","Tertiary":"#e4e7ec","Panel":"#ffffff","Hover":"#f0f1f4","Selected":"#e4e7ec"},"Text":{"Primary":"#2d3748","Secondary":"#1a202c","Muted":"#6b7280","Placeholder":"#9ca3af","OnBrand":"#ffffff"},"Brand":{"Primary":"#3b82f6","PrimaryHover":"#2563eb","Accent":"#3b82f6","AccentHover":"#2563eb"},"Border":{"Default":"#e2e5ea","Light":"#eceef2","Strong":"#c8cdd5"},"Status":{"Success":"#10b981","Warning":"#f59e0b","Error":"#ef4444","Info":"#3b82f6"},"Scrollbar":{"Track":"#f0f1f4","Thumb":"#d1d5db","Hover":"#b0b5bd"},"Selection":{"Background":"#dbeafe","Text":"#1a202c"},"Focus":{"Outline":"#3b82f6"},"Shadow":{"Color":"rgba(0, 0, 0, 0.06)"},"Syntax":{"Keyword":"#A0532E","String":"#3F8A52","Number":"#A86B00","Comment":"#8A7F72","Operator":"#2E7D74","Punctuation":"#5E5549","Function":"#2E5E96","Variable":"#3D3229","Type":"#A86B00","Builtin":"#A86B00","Property":"#A0532E","Tag":"#A0532E","AttrName":"#A86B00","AttrValue":"#3F8A52"},"Editor":{"LineNumberBackground":"#f5f6f8","LineNumberText":"#9ca3af","CurrentLineHighlight":"#f0f1f4","SelectionBackground":"#dbeafe","GutterBorder":"#e2e5ea"}},"Typography":{"Family":{"Sans":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Serif":"Georgia, Cambria, 'Times New Roman', Times, serif","Mono":"'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace"}},"Layout":{"SidebarWidth":"260px","TopbarHeight":"56px","StatusbarHeight":"28px"}},"Brand":{"Name":"Ultravisor","Tagline":"Process supervision and workflow automation"}};},{}],223:[function(require,module,exports){/**
7961
8155
  * Theme-BottomBar — standard application footer row.
7962
8156
  *
7963
8157
  * The bottom-row counterpart to Theme-TopBar: a thin status / chrome bar
@@ -7996,7 +8190,7 @@ if(typeof document!=='undefined'&&this.options.Height){let tmpRoot=document.quer
7996
8190
  // Mirrors Theme-TopBar's setNavView / setUserView — call from a
7997
8191
  // router callback to swap the bottom bar's slot content as the
7998
8192
  // route changes (different status formats per page, etc.).
7999
- setStatusView(pViewIdentifier){this._setSlotView('StatusView','#Theme-BottomBar-Status',pViewIdentifier);}setInfoView(pViewIdentifier){this._setSlotView('InfoView','#Theme-BottomBar-Info',pViewIdentifier);}setActionsView(pViewIdentifier){this._setSlotView('ActionsView','#Theme-BottomBar-Actions',pViewIdentifier);}_setSlotView(pOptionKey,pDestSelector,pViewIdentifier){this.options[pOptionKey]=pViewIdentifier||null;if(typeof document!=='undefined'){let tmpDest=document.querySelector(pDestSelector);if(tmpDest){tmpDest.innerHTML='';}}if(!pViewIdentifier){return;}let tmpView=this.pict.views[pViewIdentifier];if(tmpView){tmpView.render();}else if(this.log&&this.log.warn){this.log.warn('Theme-BottomBar: view "'+pViewIdentifier+'" not registered');}}}module.exports=PictViewThemeBottomBar;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}],221:[function(require,module,exports){/**
8193
+ setStatusView(pViewIdentifier){this._setSlotView('StatusView','#Theme-BottomBar-Status',pViewIdentifier);}setInfoView(pViewIdentifier){this._setSlotView('InfoView','#Theme-BottomBar-Info',pViewIdentifier);}setActionsView(pViewIdentifier){this._setSlotView('ActionsView','#Theme-BottomBar-Actions',pViewIdentifier);}_setSlotView(pOptionKey,pDestSelector,pViewIdentifier){this.options[pOptionKey]=pViewIdentifier||null;if(typeof document!=='undefined'){let tmpDest=document.querySelector(pDestSelector);if(tmpDest){tmpDest.innerHTML='';}}if(!pViewIdentifier){return;}let tmpView=this.pict.views[pViewIdentifier];if(tmpView){tmpView.render();}else if(this.log&&this.log.warn){this.log.warn('Theme-BottomBar: view "'+pViewIdentifier+'" not registered');}}}module.exports=PictViewThemeBottomBar;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":234}],224:[function(require,module,exports){/**
8000
8194
  * Theme-Brand-Mark — single-row inline brand mark (icon + name).
8001
8195
  *
8002
8196
  * The drop-in counterpart to Theme-BrandStrip for apps that put the
@@ -8024,7 +8218,7 @@ ShowName:true,Templates:[{Hash:'Theme-Brand-Mark-Template',Template:/*html*/"{~T
8024
8218
  // reference `currentColor` inherit `--brand-color-primary-mode`.
8025
8219
  Hash:'Theme-Brand-Mark-IconSVG-Template',Template:/*html*/"<span class=\"pict-theme-brand-mark-icon\">{~D:Record.IconHTML~}</span>"},{Hash:'Theme-Brand-Mark-IconImg-Template',Template:/*html*/"<span class=\"pict-theme-brand-mark-icon\"><img src=\"{~D:Record.IconURL~}\" alt=\"\"></span>"},{Hash:'Theme-Brand-Mark-Name-Template',Template:/*html*/"<span class=\"pict-theme-brand-mark-name\">{~D:Record.Name~}</span>"}],Renderables:[{RenderableHash:'Theme-Brand-Mark-Renderable',TemplateHash:'Theme-Brand-Mark-Template',ContentDestinationAddress:'#Theme-Brand-Mark',RenderMethod:'replace'}],CSS:/*css*/"\n.pict-theme-brand-mark {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\t/* line-height: 1 collapses the inherited ~1.2 line-box around the\n\t name glyphs. Without this the inline-flex container is taller\n\t than its visible content, the line-box adds asymmetric space\n\t above the caps, and the whole mark looks pushed up vs.\n\t neighbouring buttons that sit on standard 12px-text baselines. */\n\tline-height: 1;\n\tcolor: var(--brand-color-primary-mode, var(--theme-color-text-primary, #1a1a1a));\n\tuser-select: none;\n}\n.pict-theme-brand-mark-icon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 22px;\n\theight: 22px;\n\tcolor: currentColor;\n}\n.pict-theme-brand-mark-icon img,\n.pict-theme-brand-mark-icon svg {\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: block;\n}\n.pict-theme-brand-mark-name {\n\t/* Font size dropped from 15 \u2192 14 so the brand name reads closer\n\t to the typical 12px action-button text height; bigger glyphs\n\t reaching higher into the row are why the mark looked optically\n\t high. The 2px brand-secondary underline keeps the mark feeling\n\t distinctly branded; padding-bottom: 1px was an asymmetric nudge\n\t that shifted the visual center up \u2014 removed. */\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tletter-spacing: 0.4px;\n\tborder-bottom: 2px solid var(--brand-color-secondary-mode, transparent);\n\twhite-space: nowrap;\n}\n/* Compact form \u2014 at narrow viewports the brand mark collapses to\n icon-only. The icon alone still reads as the brand (the deterministic\n logo is designed to be recognisable without the wordmark) and freeing\n up the wordmark's width keeps the nav buttons reachable on tablet /\n small-laptop widths. The threshold matches the topbar's compact\n breakpoint in Theme-TopBar. */\n@media (max-width: 720px) {\n\t.pict-theme-brand-mark-name {\n\t\tdisplay: none;\n\t}\n}",CSSPriority:500};class PictViewThemeBrandMark extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this._unsubscribeFromBrand=null;}onAfterInitialize(){this._subscribeToBrand();return super.onAfterInitialize?super.onAfterInitialize():undefined;}onBeforeRender(pRenderable){this._refreshAppData();return super.onBeforeRender?super.onBeforeRender(pRenderable):undefined;}onAfterRender(pRenderable,pAddress,pRecord,pContent){this.pict.CSSMap.injectCSS();return super.onAfterRender?super.onAfterRender(pRenderable,pAddress,pRecord,pContent):undefined;}_subscribeToBrand(){if(this._unsubscribeFromBrand)return;let tmpSelf=this;this._unsubscribeFromBrand=libThemeBrand.onChange(function(){tmpSelf.render();});}_refreshAppData(){let tmpBrand=libThemeBrand.getActive();this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};if(!tmpBrand){this.pict.AppData.PictSectionTheme.BrandMark={BodySlot:[]};return;}// Single-element array slot drives the {~TS:~} render. Empty
8026
8220
  // slots for icon-img/icon-svg/name suppress those sub-templates.
8027
- let tmpShowIcon=this.options.ShowIcon!==false;let tmpShowName=this.options.ShowName!==false;let tmpIconSVGSlot=tmpShowIcon&&tmpBrand.IconType==='svg'&&tmpBrand.Icon?[{IconHTML:tmpBrand.Icon}]:[];let tmpIconImgSlot=tmpShowIcon&&tmpBrand.IconType==='image'&&tmpBrand.Icon?[{IconURL:tmpBrand.Icon}]:[];let tmpNameSlot=tmpShowName&&tmpBrand.Name?[{Name:tmpBrand.Name}]:[];this.pict.AppData.PictSectionTheme.BrandMark={BodySlot:[{Tooltip:tmpBrand.Tagline||tmpBrand.Name||'',IconSVGSlot:tmpIconSVGSlot,IconImgSlot:tmpIconImgSlot,NameSlot:tmpNameSlot}]};}}module.exports=PictViewThemeBrandMark;module.exports.default_configuration=_ViewConfiguration;},{"../Theme-Brand.js":172,"pict-view":231}],222:[function(require,module,exports){/**
8221
+ let tmpShowIcon=this.options.ShowIcon!==false;let tmpShowName=this.options.ShowName!==false;let tmpIconSVGSlot=tmpShowIcon&&tmpBrand.IconType==='svg'&&tmpBrand.Icon?[{IconHTML:tmpBrand.Icon}]:[];let tmpIconImgSlot=tmpShowIcon&&tmpBrand.IconType==='image'&&tmpBrand.Icon?[{IconURL:tmpBrand.Icon}]:[];let tmpNameSlot=tmpShowName&&tmpBrand.Name?[{Name:tmpBrand.Name}]:[];this.pict.AppData.PictSectionTheme.BrandMark={BodySlot:[{Tooltip:tmpBrand.Tagline||tmpBrand.Name||'',IconSVGSlot:tmpIconSVGSlot,IconImgSlot:tmpIconImgSlot,NameSlot:tmpNameSlot}]};}}module.exports=PictViewThemeBrandMark;module.exports.default_configuration=_ViewConfiguration;},{"../Theme-Brand.js":174,"pict-view":234}],225:[function(require,module,exports){/**
8028
8222
  * Theme-BrandStrip — the subtle two-line brand signature that sits
8029
8223
  * under the application's navigation.
8030
8224
  *
@@ -8060,7 +8254,7 @@ Hash:'Theme-BrandStrip-IconSVG-Template',Template:/*html*/"<span class=\"pict-th
8060
8254
  Hash:'Theme-BrandStrip-IconImg-Template',Template:/*html*/"<span class=\"pict-theme-brandstrip-icon\"><img src=\"{~D:Record.IconURL~}\" alt=\"\"></span>"}],Renderables:[{RenderableHash:'Theme-BrandStrip-Renderable',TemplateHash:'Theme-BrandStrip-Template',ContentDestinationAddress:'#Theme-BrandStrip',RenderMethod:'replace'}],CSS:/*css*/"\n.pict-theme-brandstrip {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n\tuser-select: none;\n}\n.pict-theme-brandstrip-row {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 6px 12px 4px;\n\tfont-size: 12px;\n\tfont-weight: 600;\n\tletter-spacing: 0.4px;\n\ttext-transform: uppercase;\n\tcolor: var(--brand-color-primary, var(--theme-color-text-muted, #6b6b6b));\n}\n.pict-theme-brandstrip-name {\n\tborder-bottom: 2px solid var(--brand-color-secondary, transparent);\n\tpadding-bottom: 1px;\n}\n.pict-theme-brandstrip-icon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 16px; height: 16px;\n\tcolor: var(--brand-color-primary, currentColor);\n}\n.pict-theme-brandstrip-icon img,\n.pict-theme-brandstrip-icon svg {\n\twidth: 100%; height: 100%;\n\tdisplay: block;\n}\n.pict-theme-brandstrip-stripes {\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n}\n.pict-theme-brandstrip-stripe {\n\twidth: 100%;\n}\n.pict-theme-brandstrip-stripe-primary {\n\tbackground: var(--brand-color-primary, transparent);\n}\n.pict-theme-brandstrip-stripe-secondary {\n\tbackground: var(--brand-color-secondary, transparent);\n}",CSSPriority:500};class PictViewThemeBrandStrip extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this._unsubscribeFromBrand=null;}onAfterInitialize(){this._subscribeToBrand();return super.onAfterInitialize?super.onAfterInitialize():undefined;}onBeforeRender(pRenderable){this._refreshAppData();return super.onBeforeRender?super.onBeforeRender(pRenderable):undefined;}onAfterRender(pRenderable,pAddress,pRecord,pContent){this.pict.CSSMap.injectCSS();return super.onAfterRender?super.onAfterRender(pRenderable,pAddress,pRecord,pContent):undefined;}_subscribeToBrand(){if(this._unsubscribeFromBrand)return;let tmpSelf=this;this._unsubscribeFromBrand=libThemeBrand.onChange(function(){tmpSelf.render();});}_refreshAppData(){let tmpBrand=libThemeBrand.getActive();this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};// No brand → empty BodySlot → renderable emits nothing.
8061
8255
  if(!tmpBrand){this.pict.AppData.PictSectionTheme.BrandStrip={BodySlot:[]};return;}let tmpShowName=this.options.ShowName!==false;// Pick the right per-icon-type slot. Only one of these will be
8062
8256
  // non-empty so the template renders the right element.
8063
- let tmpIconSVGSlot=[];let tmpIconImgSlot=[];if(tmpBrand.IconType==='svg'&&tmpBrand.Icon){tmpIconSVGSlot=[{IconHTML:tmpBrand.Icon}];}else if(tmpBrand.IconType==='image'&&tmpBrand.Icon){tmpIconImgSlot=[{IconURL:tmpBrand.Icon}];}let tmpNameRowSlot=tmpShowName?[{Name:tmpBrand.Name,IconSVGSlot:tmpIconSVGSlot,IconImgSlot:tmpIconImgSlot}]:[];let tmpTooltip=tmpBrand.Name+(tmpBrand.Tagline?' — '+tmpBrand.Tagline:'');this.pict.AppData.PictSectionTheme.BrandStrip={BodySlot:[{Tooltip:tmpTooltip,NameRowSlot:tmpNameRowSlot,PrimaryHeight:this.options.PrimaryStripeHeight||3,SecondaryHeight:this.options.SecondaryStripeHeight||1}]};}}PictViewThemeBrandStrip.default_configuration=_ViewConfiguration;module.exports=PictViewThemeBrandStrip;},{"../Theme-Brand.js":172,"pict-view":231}],223:[function(require,module,exports){/**
8257
+ let tmpIconSVGSlot=[];let tmpIconImgSlot=[];if(tmpBrand.IconType==='svg'&&tmpBrand.Icon){tmpIconSVGSlot=[{IconHTML:tmpBrand.Icon}];}else if(tmpBrand.IconType==='image'&&tmpBrand.Icon){tmpIconImgSlot=[{IconURL:tmpBrand.Icon}];}let tmpNameRowSlot=tmpShowName?[{Name:tmpBrand.Name,IconSVGSlot:tmpIconSVGSlot,IconImgSlot:tmpIconImgSlot}]:[];let tmpTooltip=tmpBrand.Name+(tmpBrand.Tagline?' — '+tmpBrand.Tagline:'');this.pict.AppData.PictSectionTheme.BrandStrip={BodySlot:[{Tooltip:tmpTooltip,NameRowSlot:tmpNameRowSlot,PrimaryHeight:this.options.PrimaryStripeHeight||3,SecondaryHeight:this.options.SecondaryStripeHeight||1}]};}}PictViewThemeBrandStrip.default_configuration=_ViewConfiguration;module.exports=PictViewThemeBrandStrip;},{"../Theme-Brand.js":174,"pict-view":234}],226:[function(require,module,exports){/**
8064
8258
  * Theme-Button — an embeddable SVG button (sun/moon glyph) suitable for
8065
8259
  * application top bars. Clicking it opens a pict-section-modal popup
8066
8260
  * containing the Theme-Picker dropdown and the Theme-ModeToggle.
@@ -8088,7 +8282,7 @@ Template:/*html*/"\n<button type=\"button\"\n class=\"pict-theme-button\"
8088
8282
  tmpSelf._mountSubViews();}});}// ================================================================
8089
8283
  // Internals
8090
8284
  // ================================================================
8091
- _modal(){let tmpHash=this.options.ModalViewHash||'Pict-Section-Modal';return this.pict&&this.pict.views&&this.pict.views[tmpHash];}_mountSubViews(){let tmpPicker=this.pict.views[this.options.PickerViewHash||'Theme-Picker'];if(tmpPicker){tmpPicker.render();}let tmpToggle=this.pict.views[this.options.ModeToggleViewHash||'Theme-ModeToggle'];if(tmpToggle){tmpToggle.render();}let tmpScale=this.pict.views[this.options.ScaleSelectViewHash||'Theme-ScaleSelect'];if(tmpScale){tmpScale.render();}}_refreshAppData(){this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};this.pict.AppData.PictSectionTheme.Button={Title:this.options.Title||'Theme',AriaLabel:this.options.AriaLabel||'Open theme menu'};}}PictViewThemeButton.default_configuration=_ViewConfiguration;module.exports=PictViewThemeButton;},{"../Theme-Icons.js":173,"pict-view":231}],224:[function(require,module,exports){/**
8285
+ _modal(){let tmpHash=this.options.ModalViewHash||'Pict-Section-Modal';return this.pict&&this.pict.views&&this.pict.views[tmpHash];}_mountSubViews(){let tmpPicker=this.pict.views[this.options.PickerViewHash||'Theme-Picker'];if(tmpPicker){tmpPicker.render();}let tmpToggle=this.pict.views[this.options.ModeToggleViewHash||'Theme-ModeToggle'];if(tmpToggle){tmpToggle.render();}let tmpScale=this.pict.views[this.options.ScaleSelectViewHash||'Theme-ScaleSelect'];if(tmpScale){tmpScale.render();}}_refreshAppData(){this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};this.pict.AppData.PictSectionTheme.Button={Title:this.options.Title||'Theme',AriaLabel:this.options.AriaLabel||'Open theme menu'};}}PictViewThemeButton.default_configuration=_ViewConfiguration;module.exports=PictViewThemeButton;},{"../Theme-Icons.js":175,"pict-view":234}],227:[function(require,module,exports){/**
8092
8286
  * Theme-ModeToggle — three-segment toggle for Light / Dark / System mode.
8093
8287
  *
8094
8288
  * Calls `provider.setMode(...)` on click. Greys itself out (and the
@@ -8128,7 +8322,7 @@ let tmpModeRows=[{Mode:'light',Label:tmpLabels.Light||'Light'},{Mode:'dark',Labe
8128
8322
  let tmpLockedOut=tmpDisabled&&tmpRow.Mode!==tmpLockedToMode;let tmpTitle;if(tmpLockedOut){let tmpLockedLabel=tmpLockedToMode.charAt(0).toUpperCase()+tmpLockedToMode.slice(1);tmpTitle=tmpThemeName+' is fixed to '+tmpLockedLabel+' mode — pick a different theme to switch.';}else{tmpTitle=tmpRow.Label+' mode';}tmpButtons.push({Mode:tmpRow.Mode,Label:tmpRow.Label,Title:tmpTitle,Active:tmpIsActive,LockedOut:tmpLockedOut,IconLight:tmpShowIcons&&tmpRow.Mode==='light'?[{}]:[],IconDark:tmpShowIcons&&tmpRow.Mode==='dark'?[{}]:[],IconSystem:tmpShowIcons&&tmpRow.Mode==='system'?[{}]:[]});}// One-or-zero element array drives the locked-note template
8129
8323
  // (per CLAUDE.md "single-element-array trick"). Empty array →
8130
8324
  // note skipped entirely.
8131
- let tmpLockedNoteSlot=[];let tmpWrapTitle='';if(tmpDisabled){let tmpLockedLabel=tmpLockedToMode.charAt(0).toUpperCase()+tmpLockedToMode.slice(1);let tmpMessage=tmpThemeName+' is fixed to '+tmpLockedLabel+' mode';tmpLockedNoteSlot=[{Message:tmpMessage}];tmpWrapTitle=tmpMessage+' — pick a different theme to switch modes.';}this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};this.pict.AppData.PictSectionTheme.ModeToggle={ActiveMode:tmpActiveMode,Disabled:tmpDisabled,LockedToMode:tmpLockedToMode,ThemeName:tmpThemeName,Buttons:tmpButtons,LockedNoteSlot:tmpLockedNoteSlot,WrapTitle:tmpWrapTitle};}}PictViewThemeModeToggle.default_configuration=_ViewConfiguration;module.exports=PictViewThemeModeToggle;},{"../Theme-Icons.js":173,"pict-view":231}],225:[function(require,module,exports){/**
8325
+ let tmpLockedNoteSlot=[];let tmpWrapTitle='';if(tmpDisabled){let tmpLockedLabel=tmpLockedToMode.charAt(0).toUpperCase()+tmpLockedToMode.slice(1);let tmpMessage=tmpThemeName+' is fixed to '+tmpLockedLabel+' mode';tmpLockedNoteSlot=[{Message:tmpMessage}];tmpWrapTitle=tmpMessage+' — pick a different theme to switch modes.';}this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};this.pict.AppData.PictSectionTheme.ModeToggle={ActiveMode:tmpActiveMode,Disabled:tmpDisabled,LockedToMode:tmpLockedToMode,ThemeName:tmpThemeName,Buttons:tmpButtons,LockedNoteSlot:tmpLockedNoteSlot,WrapTitle:tmpWrapTitle};}}PictViewThemeModeToggle.default_configuration=_ViewConfiguration;module.exports=PictViewThemeModeToggle;},{"../Theme-Icons.js":175,"pict-view":234}],228:[function(require,module,exports){/**
8132
8326
  * Theme-Picker — a custom dropdown that lists every theme registered
8133
8327
  * with the Theme provider, grouped by category.
8134
8328
  *
@@ -8166,7 +8360,13 @@ ShowModeIcons:true,Templates:[{Hash:'Theme-Picker-Template',// Trigger button th
8166
8360
  Template:/*html*/"\n<button type=\"button\" class=\"pict-theme-picker\"\n title=\"{~D:AppData.PictSectionTheme.Picker.TriggerTooltip~}\"\n onclick=\"_Pict.views['Theme-Picker'].openMenu(this);\">\n\t{~TS:Theme-Picker-Trigger-Glyph:AppData.PictSectionTheme.Picker.TriggerGlyphSlot~}\n\t<span class=\"pict-theme-picker-name\">{~D:AppData.PictSectionTheme.Picker.ActiveLabel~}</span>\n\t<span class=\"pict-theme-picker-chevron\">{~D:AppData.PictSectionTheme.Picker.ChevronHTML~}</span>\n</button>"},{// Wrapped in a 1-or-0 element array so the trigger glyph is
8167
8361
  // optional (ShowModeIcons: false → empty slot, no leading
8168
8362
  // icon). Per CLAUDE.md "AppData stores data, not HTML".
8169
- Hash:'Theme-Picker-Trigger-Glyph',Template:/*html*/"<span class=\"pict-theme-picker-trigger-glyph\">{~D:Record.IconHTML~}</span>"}],Renderables:[{RenderableHash:'Theme-Picker-Renderable',TemplateHash:'Theme-Picker-Template',ContentDestinationAddress:'#Theme-Picker',RenderMethod:'replace'}],CSS:/*css*/"\n.pict-theme-picker {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\tmin-width: 200px;\n\tmax-width: 100%;\n\tpadding: 6px 10px;\n\tborder-radius: 6px;\n\tfont: inherit;\n\tfont-size: 13px;\n\tbackground: var(--theme-color-background-secondary, #fbfbfc);\n\tcolor: var(--theme-color-text-primary, #1f2933);\n\tborder: 1px solid var(--theme-color-border-default, #cfd5dd);\n\tcursor: pointer;\n\ttext-align: left;\n\ttransition: border-color 120ms ease, box-shadow 120ms ease;\n}\n.pict-theme-picker:hover { border-color: var(--theme-color-text-muted, #6b6b6b); }\n.pict-theme-picker:focus, .pict-theme-picker:focus-visible {\n\toutline: none;\n\tborder-color: var(--theme-color-brand-primary, #2563eb);\n\tbox-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);\n}\n.pict-theme-picker .pict-theme-picker-name {\n\tflex: 1;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n.pict-theme-picker .pict-theme-picker-chevron {\n\tcolor: var(--theme-color-text-muted, #6b6b6b);\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n.pict-theme-picker-trigger-glyph {\n\tdisplay: inline-flex; align-items: center;\n\tcolor: var(--theme-color-text-muted, #6b6b6b);\n}\n\n/* Skin the modal-dropdown items with cleaner spacing for our glyphs. */\n.pict-theme-picker-menu .pict-modal-dropdown-item-icon {\n\twidth: 28px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: flex-start;\n\tcolor: var(--theme-color-text-muted, #6b6b6b);\n}\n.pict-theme-picker-menu .pict-modal-dropdown-item--active {\n\tbackground: var(--theme-color-background-selected, #e0eaff);\n\tcolor: var(--theme-color-brand-primary, #2563eb);\n}\n.pict-theme-picker-menu .pict-modal-dropdown-item--active .pict-modal-dropdown-item-icon {\n\tcolor: var(--theme-color-brand-primary, #2563eb);\n}",CSSPriority:500};class PictViewThemePicker extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this._unsubscribeFromProvider=null;}onAfterInitialize(){this._subscribeToProvider();return super.onAfterInitialize?super.onAfterInitialize():undefined;}onBeforeRender(pRenderable){this._refreshAppData();return super.onBeforeRender?super.onBeforeRender(pRenderable):undefined;}onAfterRender(pRenderable,pAddress,pRecord,pContent){this.pict.CSSMap.injectCSS();return super.onAfterRender?super.onAfterRender(pRenderable,pAddress,pRecord,pContent):undefined;}/**
8363
+ Hash:'Theme-Picker-Trigger-Glyph',Template:/*html*/"<span class=\"pict-theme-picker-trigger-glyph\">{~D:Record.IconHTML~}</span>"}],Renderables:[{RenderableHash:'Theme-Picker-Renderable',TemplateHash:'Theme-Picker-Template',ContentDestinationAddress:'#Theme-Picker',RenderMethod:'replace'}],CSS:/*css*/"\n.pict-theme-picker {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\tmin-width: 200px;\n\tmax-width: 100%;\n\tpadding: 6px 10px;\n\tborder-radius: 6px;\n\tfont: inherit;\n\tfont-size: 13px;\n\tbackground: var(--theme-color-background-secondary, #fbfbfc);\n\tcolor: var(--theme-color-text-primary, #1f2933);\n\tborder: 1px solid var(--theme-color-border-default, #cfd5dd);\n\tcursor: pointer;\n\ttext-align: left;\n\ttransition: border-color 120ms ease, box-shadow 120ms ease;\n}\n.pict-theme-picker:hover { border-color: var(--theme-color-text-muted, #6b6b6b); }\n.pict-theme-picker:focus, .pict-theme-picker:focus-visible {\n\toutline: none;\n\tborder-color: var(--theme-color-brand-primary, #2563eb);\n\tbox-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);\n}\n.pict-theme-picker .pict-theme-picker-name {\n\tflex: 1;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n.pict-theme-picker .pict-theme-picker-chevron {\n\tcolor: var(--theme-color-text-muted, #6b6b6b);\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n.pict-theme-picker-trigger-glyph {\n\tdisplay: inline-flex; align-items: center;\n\tcolor: var(--theme-color-text-muted, #6b6b6b);\n}\n\n/* Skin the modal-dropdown items with cleaner spacing for our glyphs. */\n.pict-theme-picker-menu .pict-modal-dropdown-item-icon {\n\twidth: 28px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: flex-start;\n\tcolor: var(--theme-color-text-muted, #6b6b6b);\n}\n.pict-theme-picker-menu .pict-modal-dropdown-item--active {\n\tbackground: var(--theme-color-background-selected, #e0eaff);\n\tcolor: var(--theme-color-brand-primary, #2563eb);\n}\n.pict-theme-picker-menu .pict-modal-dropdown-item--active .pict-modal-dropdown-item-icon {\n\tcolor: var(--theme-color-brand-primary, #2563eb);\n}",CSSPriority:500};class PictViewThemePicker extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this._unsubscribeFromProvider=null;}onAfterInitialize(){this._subscribeToProvider();return super.onAfterInitialize?super.onAfterInitialize():undefined;}onBeforeRender(pRenderable){// Defensive resubscribe: onAfterInitialize attempts this once, but if the
8364
+ // Theme provider wasn't yet registered at that moment (a real race when
8365
+ // docuserve wires the Theme-Section after some views have already been
8366
+ // instantiated), the initial subscribe silently no-ops and the picker
8367
+ // never re-renders on applyTheme. The internal guard makes this cheap
8368
+ // when we're already subscribed.
8369
+ this._subscribeToProvider();this._refreshAppData();return super.onBeforeRender?super.onBeforeRender(pRenderable):undefined;}onAfterRender(pRenderable,pAddress,pRecord,pContent){this.pict.CSSMap.injectCSS();return super.onAfterRender?super.onAfterRender(pRenderable,pAddress,pRecord,pContent):undefined;}/**
8170
8370
  * onclick handler — open the rich dropdown menu via pict-section-modal.
8171
8371
  * @param {HTMLElement} pAnchor - the trigger button (click target)
8172
8372
  */openMenu(pAnchor){let tmpModal=this._modal();if(!tmpModal){if(typeof console!=='undefined'&&console.warn){console.warn('Theme-Picker: pict-section-modal not registered — cannot open menu.');}return null;}let tmpItems=this._buildMenuItems();let tmpSelf=this;return tmpModal.dropdown(pAnchor,{items:tmpItems,align:'left',minWidth:'260px',maxHeight:'60vh',className:'pict-theme-picker-menu',closeOnSelect:true,onSelect:function onSelect(pHash){tmpSelf.pick(pHash);}});}/**
@@ -8182,7 +8382,7 @@ _subscribeToProvider(){if(this._unsubscribeFromProvider)return;let tmpProvider=t
8182
8382
  * + the catalog's category metadata. One Header row per category,
8183
8383
  * one item per theme with a leading SVG capability glyph.
8184
8384
  */_buildMenuItems(){let tmpProvider=this._provider();let tmpThemes=tmpProvider?tmpProvider.listThemes():[];let tmpActive=tmpProvider?tmpProvider.getActiveTheme():{Hash:null};let tmpActiveHash=tmpActive&&tmpActive.Hash||null;let tmpCatalog=this._loadCatalog();let tmpCategoryByHash={};let tmpCategoryOrder=[];if(Array.isArray(this.options.Categories)){tmpCategoryOrder=this.options.Categories.slice();}for(let i=0;i<tmpCatalog.length;i++){let tmpEntry=tmpCatalog[i];let tmpCat=tmpEntry.Category||'Other';tmpCategoryByHash[tmpEntry.Hash]=tmpCat;if(tmpCategoryOrder.indexOf(tmpCat)<0)tmpCategoryOrder.push(tmpCat);}let tmpBuckets={};for(let i=0;i<tmpThemes.length;i++){let tmpTheme=tmpThemes[i];let tmpCat=tmpCategoryByHash[tmpTheme.Hash]||'Other';if(!tmpBuckets[tmpCat]){tmpBuckets[tmpCat]=[];if(tmpCategoryOrder.indexOf(tmpCat)<0)tmpCategoryOrder.push(tmpCat);}tmpBuckets[tmpCat].push(tmpTheme);}let tmpShowIcons=this.options.ShowModeIcons!==false;let tmpItems=[];for(let i=0;i<tmpCategoryOrder.length;i++){let tmpCat=tmpCategoryOrder[i];if(!tmpBuckets[tmpCat]||tmpBuckets[tmpCat].length===0)continue;tmpItems.push({Header:tmpCat});for(let j=0;j<tmpBuckets[tmpCat].length;j++){let tmpTheme=tmpBuckets[tmpCat][j];let tmpIcon=tmpShowIcons?libThemeIcons.iconForTheme(tmpTheme.Strategy,tmpTheme.DefaultMode,14):'';tmpItems.push({Hash:tmpTheme.Hash,Label:tmpTheme.Name||tmpTheme.Hash,Icon:tmpIcon,Style:tmpTheme.Hash===tmpActiveHash?'active':null,Tooltip:this._capabilityLabel(tmpTheme)});}}return tmpItems;}_capabilityLabel(pTheme){let tmpStrategy=pTheme.Strategy||'single';if(tmpStrategy==='single'){let tmpMode=pTheme.DefaultMode||'light';return(pTheme.Name||pTheme.Hash)+' — '+(tmpMode==='dark'?'dark only':'light only');}return(pTheme.Name||pTheme.Hash)+' — light + dark';}_refreshAppData(){let tmpProvider=this._provider();let tmpThemes=tmpProvider?tmpProvider.listThemes():[];let tmpActive=tmpProvider?tmpProvider.getActiveTheme():{Hash:null};let tmpActiveHash=tmpActive&&tmpActive.Hash||null;// Find the active theme's metadata for the trigger glyph.
8185
- let tmpActiveTheme=null;for(let i=0;i<tmpThemes.length;i++){if(tmpThemes[i].Hash===tmpActiveHash){tmpActiveTheme=tmpThemes[i];break;}}let tmpShowIcons=this.options.ShowModeIcons!==false;let tmpTriggerGlyphSlot=[];if(tmpShowIcons&&tmpActiveTheme){tmpTriggerGlyphSlot=[{IconHTML:libThemeIcons.iconForTheme(tmpActiveTheme.Strategy,tmpActiveTheme.DefaultMode,14)}];}this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};this.pict.AppData.PictSectionTheme.Picker={ActiveHash:tmpActiveHash,ActiveLabel:tmpActiveTheme?tmpActiveTheme.Name||tmpActiveTheme.Hash:'Choose a theme',TriggerTooltip:tmpActiveTheme?this._capabilityLabel(tmpActiveTheme)+' — click to change':'Choose a theme',TriggerGlyphSlot:tmpTriggerGlyphSlot,ChevronHTML:libThemeIcons.iconChevronDown(10)};this.pict.AppData.PictSectionTheme.AllThemes=tmpThemes;}_loadCatalog(){try{return require('../themes/_catalog.js');}catch(pError){return[];}}}PictViewThemePicker.default_configuration=_ViewConfiguration;PictViewThemePicker.APPDATA_ADDRESS=APPDATA_ADDRESS;module.exports=PictViewThemePicker;},{"../Theme-Icons.js":173,"../themes/_catalog.js":179,"pict-view":231}],226:[function(require,module,exports){/**
8385
+ let tmpActiveTheme=null;for(let i=0;i<tmpThemes.length;i++){if(tmpThemes[i].Hash===tmpActiveHash){tmpActiveTheme=tmpThemes[i];break;}}let tmpShowIcons=this.options.ShowModeIcons!==false;let tmpTriggerGlyphSlot=[];if(tmpShowIcons&&tmpActiveTheme){tmpTriggerGlyphSlot=[{IconHTML:libThemeIcons.iconForTheme(tmpActiveTheme.Strategy,tmpActiveTheme.DefaultMode,14)}];}this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};this.pict.AppData.PictSectionTheme.Picker={ActiveHash:tmpActiveHash,ActiveLabel:tmpActiveTheme?tmpActiveTheme.Name||tmpActiveTheme.Hash:'Choose a theme',TriggerTooltip:tmpActiveTheme?this._capabilityLabel(tmpActiveTheme)+' — click to change':'Choose a theme',TriggerGlyphSlot:tmpTriggerGlyphSlot,ChevronHTML:libThemeIcons.iconChevronDown(10)};this.pict.AppData.PictSectionTheme.AllThemes=tmpThemes;}_loadCatalog(){try{return require('../themes/_catalog.js');}catch(pError){return[];}}}PictViewThemePicker.default_configuration=_ViewConfiguration;PictViewThemePicker.APPDATA_ADDRESS=APPDATA_ADDRESS;module.exports=PictViewThemePicker;},{"../Theme-Icons.js":175,"../themes/_catalog.js":181,"pict-view":234}],229:[function(require,module,exports){/**
8186
8386
  * Theme-ScaleSelect — dropdown that picks a viewport scale (zoom).
8187
8387
  *
8188
8388
  * Independent of the active theme bundle: scale is a per-user
@@ -8205,7 +8405,7 @@ _subscribeToScale(){if(this._unsubscribeFromScale)return;let tmpSelf=this;this._
8205
8405
  // 1.10 from a hotkey nudge) that doesn't exactly equal any preset.
8206
8406
  // We highlight the nearest option so the dropdown still reflects
8207
8407
  // roughly where the user is.
8208
- let tmpClosestIdx=0;let tmpClosestDelta=Infinity;for(let i=0;i<tmpPresets.length;i++){let tmpDelta=Math.abs(tmpPresets[i].Value-tmpActive);if(tmpDelta<tmpClosestDelta){tmpClosestDelta=tmpDelta;tmpClosestIdx=i;}}let tmpOptions=[];for(let i=0;i<tmpPresets.length;i++){let tmpEntry=tmpPresets[i];tmpOptions.push({Value:tmpEntry.Value,Label:tmpEntry.Label,Selected:i===tmpClosestIdx});}let tmpTooltip='Viewport scale — currently '+Math.round(tmpActive*100)+'%';this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};this.pict.AppData.PictSectionTheme.ScaleSelect={ActiveScale:tmpActive,Tooltip:tmpTooltip,Options:tmpOptions};}}PictViewThemeScaleSelect.default_configuration=_ViewConfiguration;module.exports=PictViewThemeScaleSelect;},{"../Theme-Scale.js":175,"pict-view":231}],227:[function(require,module,exports){/**
8408
+ let tmpClosestIdx=0;let tmpClosestDelta=Infinity;for(let i=0;i<tmpPresets.length;i++){let tmpDelta=Math.abs(tmpPresets[i].Value-tmpActive);if(tmpDelta<tmpClosestDelta){tmpClosestDelta=tmpDelta;tmpClosestIdx=i;}}let tmpOptions=[];for(let i=0;i<tmpPresets.length;i++){let tmpEntry=tmpPresets[i];tmpOptions.push({Value:tmpEntry.Value,Label:tmpEntry.Label,Selected:i===tmpClosestIdx});}let tmpTooltip='Viewport scale — currently '+Math.round(tmpActive*100)+'%';this.pict.AppData.PictSectionTheme=this.pict.AppData.PictSectionTheme||{};this.pict.AppData.PictSectionTheme.ScaleSelect={ActiveScale:tmpActive,Tooltip:tmpTooltip,Options:tmpOptions};}}PictViewThemeScaleSelect.default_configuration=_ViewConfiguration;module.exports=PictViewThemeScaleSelect;},{"../Theme-Scale.js":177,"pict-view":234}],230:[function(require,module,exports){/**
8209
8409
  * Theme-TopBar — standard application chrome row.
8210
8410
  *
8211
8411
  * Provides the boilerplate every Pict / retold app remakes: a flex row
@@ -8346,7 +8546,7 @@ tmpStyleEl.textContent='.pict-theme-topbar-nav { display: flex !impor
8346
8546
  * Override on the instance (`view.openBurgerMenu = function() {...}`)
8347
8547
  * to customise the popup contents — e.g. emit a per-app menu view
8348
8548
  * instead of cloning the topbar DOM.
8349
- */openBurgerMenu(){if(typeof document==='undefined')return null;let tmpModal=this.pict.views['Pict-Section-Modal'];if(!tmpModal||typeof tmpModal.show!=='function'){if(typeof console!=='undefined'&&console.warn){console.warn('Theme-TopBar: pict-section-modal not registered — burger menu unavailable.');}return null;}let tmpSections=[];let tmpNav=document.querySelector('#Theme-TopBar-Nav');let tmpUser=document.querySelector('#Theme-TopBar-User');if(tmpNav&&tmpNav.innerHTML.trim()){tmpSections.push('<div class="pict-theme-burger-menu-section">'+tmpNav.innerHTML+'</div>');}if(tmpUser&&tmpUser.innerHTML.trim()){tmpSections.push('<div class="pict-theme-burger-menu-section">'+tmpUser.innerHTML+'</div>');}if(tmpSections.length===0){tmpSections.push('<div class="pict-theme-burger-menu-empty">No menu items configured.</div>');}let tmpHTML='<div class="pict-theme-burger-menu">'+tmpSections.join('')+'</div>';return tmpModal.show({title:'Menu',content:tmpHTML,width:'280px',closeable:true,buttons:[]});}}module.exports=PictViewThemeTopBar;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}],228:[function(require,module,exports){module.exports={"name":"pict-template","version":"1.0.15","description":"Pict Template Base Class","main":"source/Pict-Template.js","scripts":{"start":"node source/Pict-Template.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","types":"tsc -p ."},"types":"types/source/Pict-Template.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":{"pict":"^1.0.348","quackage":"^1.0.58","typescript":"^5.9.3"},"mocha":{"diff":true,"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"}};},{}],229:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');const libPackage=require('../package.json');/** @typedef {import('pict') & {
8549
+ */openBurgerMenu(){if(typeof document==='undefined')return null;let tmpModal=this.pict.views['Pict-Section-Modal'];if(!tmpModal||typeof tmpModal.show!=='function'){if(typeof console!=='undefined'&&console.warn){console.warn('Theme-TopBar: pict-section-modal not registered — burger menu unavailable.');}return null;}let tmpSections=[];let tmpNav=document.querySelector('#Theme-TopBar-Nav');let tmpUser=document.querySelector('#Theme-TopBar-User');if(tmpNav&&tmpNav.innerHTML.trim()){tmpSections.push('<div class="pict-theme-burger-menu-section">'+tmpNav.innerHTML+'</div>');}if(tmpUser&&tmpUser.innerHTML.trim()){tmpSections.push('<div class="pict-theme-burger-menu-section">'+tmpUser.innerHTML+'</div>');}if(tmpSections.length===0){tmpSections.push('<div class="pict-theme-burger-menu-empty">No menu items configured.</div>');}let tmpHTML='<div class="pict-theme-burger-menu">'+tmpSections.join('')+'</div>';return tmpModal.show({title:'Menu',content:tmpHTML,width:'280px',closeable:true,buttons:[]});}}module.exports=PictViewThemeTopBar;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":234}],231:[function(require,module,exports){module.exports={"name":"pict-template","version":"1.0.15","description":"Pict Template Base Class","main":"source/Pict-Template.js","scripts":{"start":"node source/Pict-Template.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","types":"tsc -p ."},"types":"types/source/Pict-Template.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":{"pict":"^1.0.348","quackage":"^1.0.58","typescript":"^5.9.3"},"mocha":{"diff":true,"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"}};},{}],232:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');const libPackage=require('../package.json');/** @typedef {import('pict') & {
8350
8550
  * [key: string]: any, // represent services for now as a workaround
8351
8551
  * }} Pict *//**
8352
8552
  * @class PictTemplateExpression
@@ -8394,7 +8594,7 @@ tmpStyleEl.textContent='.pict-theme-topbar-nav { display: flex !impor
8394
8594
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
8395
8595
  *
8396
8596
  * @return {any} The value at the given address, or undefined
8397
- */resolveStateFromAddress(pAddress,pRecord,pContextArray,pRootDataObject,pScope,pState){return this.pict.resolveStateFromAddress(pAddress,pRecord,pContextArray,pRootDataObject,pScope,pState);}}module.exports=PictTemplateExpression;module.exports.template_hash='Default';},{"../package.json":228,"fable-serviceproviderbase":59}],230:[function(require,module,exports){module.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":true,"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"}};},{}],231:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');const libPackage=require('../package.json');const defaultPictViewSettings={DefaultRenderable:false,DefaultDestinationAddress:false,DefaultTemplateRecordAddress:false,ViewIdentifier:false,// If this is set to true, when the App initializes this will.
8597
+ */resolveStateFromAddress(pAddress,pRecord,pContextArray,pRootDataObject,pScope,pState){return this.pict.resolveStateFromAddress(pAddress,pRecord,pContextArray,pRootDataObject,pScope,pState);}}module.exports=PictTemplateExpression;module.exports.template_hash='Default';},{"../package.json":231,"fable-serviceproviderbase":59}],233:[function(require,module,exports){module.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":true,"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"}};},{}],234:[function(require,module,exports){const libFableServiceBase=require('fable-serviceproviderbase');const libPackage=require('../package.json');const defaultPictViewSettings={DefaultRenderable:false,DefaultDestinationAddress:false,DefaultTemplateRecordAddress:false,ViewIdentifier:false,// If this is set to true, when the App initializes this will.
8398
8598
  // After the App initializes, initialize will be called as soon as it's added.
8399
8599
  AutoInitialize:true,AutoInitializeOrdinal:0,// If this is set to true, when the App autorenders (on load) this will.
8400
8600
  // After the App initializes, render will be called as soon as it's added.
@@ -8701,21 +8901,21 @@ if(tmpIsRootRenderable&&pRenderable&&pRenderable.TransactionHash){this.pict.Tran
8701
8901
  * Lifecycle hook that triggers after data is marshaled into the view (async flow).
8702
8902
  *
8703
8903
  * @param {ErrorCallback} fCallback - The callback to call when the async operation is complete.
8704
- */onAfterMarshalToViewAsync(fCallback){this.onAfterMarshalToView();return fCallback();}/** @return {boolean} - True if the object is a PictView. */get isPictView(){return true;}}module.exports=PictView;},{"../package.json":230,"fable-serviceproviderbase":59}],232:[function(require,module,exports){module.exports={"name":"pict","version":"1.0.372","description":"Pict browser library.","main":"source/Pict.js","scripts":{"start":"node source/Pict.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","prepublishOnly":"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-image:local","docker-dev-run":"docker run -it -d --name pict-dev -p 37447:8080 -p 19506:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/pict\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" pict-image:local","docker-dev-shell":"docker exec -it pict-dev /bin/bash","lint":"eslint source/**/*.js test/**/*.js","types":"tsc -p ."},"files":["source/","dist/","types/"],"types":"types/source/Pict.d.ts","mocha":{"diff":true,"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":"git+https://stevenvelozo@github.com/stevenvelozo/pict.git"},"author":"steven velozo <steven@velozo.com>","license":"MIT","bugs":{"url":"https://github.com/stevenvelozo/pict/issues"},"homepage":"https://github.com/stevenvelozo/pict#readme","devDependencies":{"@eslint/js":"^9.39.1","@types/jquery":"^3.5.33","@types/sinon":"^17.0.4","eslint":"^9.39.1","globals":"^16.5.0","pict-docuserve":"^1.3.2","quackage":"^1.2.3","sinon":"^20.0.0","typescript":"^5.9.3"},"dependencies":{"cachetrax":"^1.0.6","fable":"^3.1.74","pict-application":"^1.0.34","pict-provider":"^1.0.13","pict-template":"^1.0.15","pict-view":"^1.0.68"}};},{}],233:[function(require,module,exports){// This assumes Pict has been required in the browser. Delcare these as globals so linter can do its job.
8904
+ */onAfterMarshalToViewAsync(fCallback){this.onAfterMarshalToView();return fCallback();}/** @return {boolean} - True if the object is a PictView. */get isPictView(){return true;}}module.exports=PictView;},{"../package.json":233,"fable-serviceproviderbase":59}],235:[function(require,module,exports){module.exports={"name":"pict","version":"1.0.372","description":"Pict browser library.","main":"source/Pict.js","scripts":{"start":"node source/Pict.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","build":"npx quack build","prepublishOnly":"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-image:local","docker-dev-run":"docker run -it -d --name pict-dev -p 37447:8080 -p 19506:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/pict\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" pict-image:local","docker-dev-shell":"docker exec -it pict-dev /bin/bash","lint":"eslint source/**/*.js test/**/*.js","types":"tsc -p ."},"files":["source/","dist/","types/"],"types":"types/source/Pict.d.ts","mocha":{"diff":true,"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":"git+https://stevenvelozo@github.com/stevenvelozo/pict.git"},"author":"steven velozo <steven@velozo.com>","license":"MIT","bugs":{"url":"https://github.com/stevenvelozo/pict/issues"},"homepage":"https://github.com/stevenvelozo/pict#readme","devDependencies":{"@eslint/js":"^9.39.1","@types/jquery":"^3.5.33","@types/sinon":"^17.0.4","eslint":"^9.39.1","globals":"^16.5.0","pict-docuserve":"^1.3.2","quackage":"^1.2.3","sinon":"^20.0.0","typescript":"^5.9.3"},"dependencies":{"cachetrax":"^1.0.6","fable":"^3.1.74","pict-application":"^1.0.34","pict-provider":"^1.0.13","pict-template":"^1.0.15","pict-view":"^1.0.68"}};},{}],236:[function(require,module,exports){// This assumes Pict has been required in the browser. Delcare these as globals so linter can do its job.
8705
8905
  /* global Pict, _Pict: writeable *//**
8706
8906
  * Simple function to load a pict Application
8707
8907
  *
8708
8908
  * @param {import('pict-application')} [pPictApplication] - The pict application to load.
8709
8909
  * @param {number} [pLogNoisiness] - The log noisiness level.
8710
8910
  */module.exports=function(pPictApplication,pLogNoisiness){let tmpLogNoisiness=typeof pLogNoisiness=='undefined'?0:pLogNoisiness;// Set up a basal pict on the window object
8711
- if(pPictApplication&&typeof pPictApplication['default_configuration']==='object'&&'pict_configuration'in pPictApplication['default_configuration']){window._Pict=new Pict(pPictApplication['default_configuration'].pict_configuration);}else{window._Pict=new Pict();}window._Pict.LogNoisiness=tmpLogNoisiness;let tmpApplicationHash='DefaultApplication';let tmpDefaultConfiguration={};if('default_configuration'in pPictApplication){tmpDefaultConfiguration=pPictApplication.default_configuration;if('Hash'in tmpDefaultConfiguration&&typeof tmpDefaultConfiguration.Hash==='string'){tmpApplicationHash=tmpDefaultConfiguration.Hash;}}_Pict.log.info("Loading the pict application [".concat(tmpApplicationHash,"] and associated views."));_Pict.addApplication(tmpApplicationHash,tmpDefaultConfiguration,pPictApplication);_Pict.PictApplication.initializeAsync(function(pError){if(pError){console.log('Error initializing the pict application: '+pError);}_Pict.log.info('Loading the Application and associated views.');});};},{}],234:[function(require,module,exports){/**
8911
+ if(pPictApplication&&typeof pPictApplication['default_configuration']==='object'&&'pict_configuration'in pPictApplication['default_configuration']){window._Pict=new Pict(pPictApplication['default_configuration'].pict_configuration);}else{window._Pict=new Pict();}window._Pict.LogNoisiness=tmpLogNoisiness;let tmpApplicationHash='DefaultApplication';let tmpDefaultConfiguration={};if('default_configuration'in pPictApplication){tmpDefaultConfiguration=pPictApplication.default_configuration;if('Hash'in tmpDefaultConfiguration&&typeof tmpDefaultConfiguration.Hash==='string'){tmpApplicationHash=tmpDefaultConfiguration.Hash;}}_Pict.log.info("Loading the pict application [".concat(tmpApplicationHash,"] and associated views."));_Pict.addApplication(tmpApplicationHash,tmpDefaultConfiguration,pPictApplication);_Pict.PictApplication.initializeAsync(function(pError){if(pError){console.log('Error initializing the pict application: '+pError);}_Pict.log.info('Loading the Application and associated views.');});};},{}],237:[function(require,module,exports){/**
8712
8912
  * Provide a safe on document ready function (without needing a framework like jquery)
8713
8913
  *
8714
8914
  * @param {function} fCallback - The function to call when the document is ready
8715
8915
  */module.exports=function(fCallback){if(!document){console.log('No document object found; no initialization happening.');return;}// In case the document is already rendered
8716
8916
  if(document.readyState!='loading')fCallback();// Modern browsers have event listener capabilities
8717
8917
  else if(document.addEventListener)document.addEventListener('DOMContentLoaded',function(){fCallback();});//@ts-ignore IE <= 8 and ... other abominations
8718
- else document.attachEvent('onreadystatechange',function(){if(document.readyState=='complete')fCallback();});};},{}],235:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;const defaultConfiguration={// This is the address for the <script /> tag that contains the CSS.
8918
+ else document.attachEvent('onreadystatechange',function(){if(document.readyState=='complete')fCallback();});};},{}],238:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;const defaultConfiguration={// This is the address for the <script /> tag that contains the CSS.
8719
8919
  CSSElementAddress:'#PICT-CSS'};class PictCSS extends libFableServiceBase{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);/** @type {any} */this.options;/** @type {{ ContentAssignment: import('./Pict-Content-Assignment') }} */this.services;/** @type {import('fable')} */this.fable;// No merging of options necessary
8720
8920
  if(typeof this.options.CSSElementAddress==='undefined'){this.options.CSSElementAddress=defaultConfiguration.CSSElementAddress;}this.inlineCSSMap={};this.fable.addSolverFunction(this.fable.expressionParser,'createcsscolorrgbfromnumeric',this.createCssColorRGBFromNumeric.bind(this),'Create a CSS color from RGB components');}// Add a CSS fragment to the CSS map (each view can have its own CSS fragment)
8721
8921
  // Hash is shared across all views, so if 10 views all load the "My-Table-View" fragment, it will only be loaded once.
@@ -8727,7 +8927,7 @@ let tmpRed=parseFloat(pRed);let tmpGreen=parseFloat(pGreen);let tmpBlue=parseFlo
8727
8927
  else if(tmpRed<=255&&tmpGreen<=255&&tmpBlue<=255){tmpRed=Math.round(tmpRed);tmpGreen=Math.round(tmpGreen);tmpBlue=Math.round(tmpBlue);}// Otherwise get the maximum of the three and quantize them to 255
8728
8928
  else{let tmpMax=Math.max(Math.max(tmpRed,tmpGreen),tmpBlue);tmpRed=Math.round(tmpRed/tmpMax*255);tmpGreen=Math.round(tmpGreen/tmpMax*255);tmpBlue=Math.round(tmpBlue/tmpMax*255);}tmpRed=Math.abs(tmpRed);tmpGreen=Math.abs(tmpGreen);tmpBlue=Math.abs(tmpBlue);let tmpRedHex=tmpRed.toString(16).padStart(2,'0');let tmpGreenHex=tmpGreen.toString(16).padStart(2,'0');let tmpBlueHex=tmpBlue.toString(16).padStart(2,'0');return"#".concat(tmpRedHex).concat(tmpGreenHex).concat(tmpBlueHex);}generateCSS(){let tmpCSS='';let tmpCSSHashes=Object.keys(this.inlineCSSMap);// Sort the hashes by Priority
8729
8929
  tmpCSSHashes.sort((a,b)=>{return this.inlineCSSMap[a].Priority-this.inlineCSSMap[b].Priority;});for(let i=0;i<tmpCSSHashes.length;i++){let tmpCSSFragment=this.inlineCSSMap[tmpCSSHashes[i]];let tmpCSSComment=tmpCSSFragment.Hash;if(tmpCSSFragment.Hash!=tmpCSSFragment.Provider){tmpCSSComment="".concat(tmpCSSComment," from ").concat(tmpCSSFragment.Provider);}tmpCSS+="/* ".concat(tmpCSSComment," */\n").concat(tmpCSSFragment.Content,"\n");}return tmpCSS;}// Inject the CSS into the magic DOM element for it
8730
- injectCSS(){this.services.ContentAssignment.assignContent(this.options.CSSElementAddress,this.generateCSS());}}module.exports=PictCSS;},{"fable":68}],236:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;/**
8930
+ injectCSS(){this.services.ContentAssignment.assignContent(this.options.CSSElementAddress,this.generateCSS());}}module.exports=PictCSS;},{"fable":68}],239:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;/**
8731
8931
  * Class for moving content around in the DOM.
8732
8932
  */class PictContentAssignment extends libFableServiceBase{/**
8733
8933
  * @param {import('fable')} pFable - The Fable library instance.
@@ -8902,10 +9102,10 @@ const tmpTargetElement=typeof pAddress==='string'?window.jQuery(pAddress):window
8902
9102
  *
8903
9103
  * @param {string|HTMLElement} pAddress - The address of the element (a CSS selector), or the element itself.
8904
9104
  * @param {string} pClass - The class to check for.
8905
- */toggleClass(pAddress,pClass){if(this.hasClass(pAddress,pClass)){this.removeClass(pAddress,pClass);}else{this.addClass(pAddress,pClass);}}}module.exports=PictContentAssignment;},{"fable":68}],237:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;class PictDataProvider extends libFableServiceBase{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);/** @type {import('fable') & import('./Pict')} */this.fable;this.serviceType='PictDataProvider';}/**
9105
+ */toggleClass(pAddress,pClass){if(this.hasClass(pAddress,pClass)){this.removeClass(pAddress,pClass);}else{this.addClass(pAddress,pClass);}}}module.exports=PictContentAssignment;},{"fable":68}],240:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;class PictDataProvider extends libFableServiceBase{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);/** @type {import('fable') & import('./Pict')} */this.fable;this.serviceType='PictDataProvider';}/**
8906
9106
  * @param {string} pAddress - The address of the data to retrieve
8907
9107
  * @param {object} [pData] - (optional) The record to provide to the address resolver
8908
- */getDataByAddress(pAddress,pData){let tmpData=typeof pData==='undefined'?{}:pData;const tmpAddressSpace={Fable:this.fable,Pict:this.fable,AppData:this.fable.AppData,Bundle:this.fable.Bundle,Record:tmpData};return this.fable.manifest.getValueByHash(tmpAddressSpace,pAddress);}}module.exports=PictDataProvider;},{"fable":68}],238:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;class PictMeadowEntityProvider extends libFableServiceBase{constructor(pFable,pOptions,pServiceHash){var _this$fable$RestClien;super(pFable,pOptions,pServiceHash);/** @type {any} */this.options;/** @type {import('./Pict') & { settings: any } & { newAnticipate: any }} */this.fable;/** @type {any} */this.log;this.serviceType='PictMeadowProvider';if(this.fable.settings.PictDefaultURLPrefix){this.options.urlPrefix=this.fable.settings.PictDefaultURLPrefix;}else if(!this.options.urlPrefix){this.options.urlPrefix='/1.0/';}if(!this.options.downloadBatchSize){if(typeof this.fable.settings.PictDefaultDownloadBatchSize==='number'){this.options.downloadBatchSize=this.fable.settings.PictDefaultDownloadBatchSize;}else{this.options.downloadBatchSize=100;}}if(typeof this.options.downloadPageConcurrency!=='number'){this.options.downloadPageConcurrency=typeof this.fable.settings.PictDefaultDownloadPageConcurrency==='number'?this.fable.settings.PictDefaultDownloadPageConcurrency:4;}if(typeof this.options.maxBundleConcurrency!=='number'){this.options.maxBundleConcurrency=typeof this.fable.settings.PictDefaultMaxBundleConcurrency==='number'?this.fable.settings.PictDefaultMaxBundleConcurrency:8;}//@ts-ignore - FIXME - remove once we have fable types
9108
+ */getDataByAddress(pAddress,pData){let tmpData=typeof pData==='undefined'?{}:pData;const tmpAddressSpace={Fable:this.fable,Pict:this.fable,AppData:this.fable.AppData,Bundle:this.fable.Bundle,Record:tmpData};return this.fable.manifest.getValueByHash(tmpAddressSpace,pAddress);}}module.exports=PictDataProvider;},{"fable":68}],241:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;class PictMeadowEntityProvider extends libFableServiceBase{constructor(pFable,pOptions,pServiceHash){var _this$fable$RestClien;super(pFable,pOptions,pServiceHash);/** @type {any} */this.options;/** @type {import('./Pict') & { settings: any } & { newAnticipate: any }} */this.fable;/** @type {any} */this.log;this.serviceType='PictMeadowProvider';if(this.fable.settings.PictDefaultURLPrefix){this.options.urlPrefix=this.fable.settings.PictDefaultURLPrefix;}else if(!this.options.urlPrefix){this.options.urlPrefix='/1.0/';}if(!this.options.downloadBatchSize){if(typeof this.fable.settings.PictDefaultDownloadBatchSize==='number'){this.options.downloadBatchSize=this.fable.settings.PictDefaultDownloadBatchSize;}else{this.options.downloadBatchSize=100;}}if(typeof this.options.downloadPageConcurrency!=='number'){this.options.downloadPageConcurrency=typeof this.fable.settings.PictDefaultDownloadPageConcurrency==='number'?this.fable.settings.PictDefaultDownloadPageConcurrency:4;}if(typeof this.options.maxBundleConcurrency!=='number'){this.options.maxBundleConcurrency=typeof this.fable.settings.PictDefaultMaxBundleConcurrency==='number'?this.fable.settings.PictDefaultMaxBundleConcurrency:8;}//@ts-ignore - FIXME - remove once we have fable types
8909
9109
  this.restClient=(_this$fable$RestClien=this.fable.RestClient)!==null&&_this$fable$RestClien!==void 0?_this$fable$RestClien:this.fable.instantiateServiceProviderWithoutRegistration('RestClient');/** @type {Record<string, import('cachetrax')>} */this.recordCache={};/** @type {Record<string, import('cachetrax')>} */this.recordSetCache={};this.entityColumnTranslations={CreatingIDUser:'User',UpdatingIDUser:'User',DeletingIDUser:'User'};/** @type {(pOptions: Record<string, any>) => Record<string, any>} */this.prepareRequestOptions=pOptions=>{return pOptions;};/**
8910
9110
  * After buildBundleWaves() is called by gatherDataFromServer(), this
8911
9111
  * property holds the computed wave schedule for inspection/debugging.
@@ -9221,7 +9421,7 @@ let tmpEntitySet=[];for(let i=0;i<tmpPages.length;i++){if(Array.isArray(tmpPages
9221
9421
  * @param {(pError?: Error, pResult?: Record<string, any>) => void} fCallback - The callback to call when the request is complete.
9222
9422
  *
9223
9423
  * @return {void}
9224
- */deleteEntity(pEntityType,pIDRecord,fCallback){let tmpRequestOptions={url:this.formatUrl("".concat(pEntityType,"/").concat(pIDRecord))};this.restClient.delJSON(tmpRequestOptions,(pError,pResponse,pBody)=>{if(pError){this.log.error("Error deleting ".concat(pEntityType," record ID ").concat(pIDRecord,": ").concat(pError.message));}else{this.log.info("Deleted ".concat(pEntityType," record ID ").concat(pIDRecord));}return fCallback(pError,pBody);});}}module.exports=PictMeadowEntityProvider;},{"fable":68}],239:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;class PictTemplateAudit extends libFableServiceBase{/**
9424
+ */deleteEntity(pEntityType,pIDRecord,fCallback){let tmpRequestOptions={url:this.formatUrl("".concat(pEntityType,"/").concat(pIDRecord))};this.restClient.delJSON(tmpRequestOptions,(pError,pResponse,pBody)=>{if(pError){this.log.error("Error deleting ".concat(pEntityType," record ID ").concat(pIDRecord,": ").concat(pError.message));}else{this.log.info("Deleted ".concat(pEntityType," record ID ").concat(pIDRecord));}return fCallback(pError,pBody);});}}module.exports=PictMeadowEntityProvider;},{"fable":68}],242:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;class PictTemplateAudit extends libFableServiceBase{/**
9225
9425
  * @param {import('pict')} pFable - The Fable Framework instance
9226
9426
  * @param {Record<string, any>} [pOptions] - The options for the service
9227
9427
  * @param {string} [pServiceHash] - The hash of the service
@@ -9276,7 +9476,7 @@ this.auditLog.push(tmpAuditNode);}let tmpPreviousParent=pState&&pState._Template
9276
9476
  * Get a summary of the audit log.
9277
9477
  *
9278
9478
  * @return {object} Summary statistics
9279
- */getSummary(){let tmpTotalCalls=0;let tmpTotalDuration=0;let tmpMaxDepth=0;let fWalkNode=(pNode,pDepth)=>{tmpTotalCalls++;tmpTotalDuration+=pNode.Duration||0;if(pDepth>tmpMaxDepth){tmpMaxDepth=pDepth;}for(let i=0;i<pNode.ChildTemplates.length;i++){fWalkNode(pNode.ChildTemplates[i],pDepth+1);}};for(let i=0;i<this.auditLog.length;i++){fWalkNode(this.auditLog[i],0);}return{RootCalls:this.auditLog.length,TotalCalls:tmpTotalCalls,TotalDuration:tmpTotalDuration,MaxDepth:tmpMaxDepth};}}module.exports=PictTemplateAudit;/** @type {Record<string, any>} */PictTemplateAudit.default_configuration={};},{"fable":68}],240:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;class PictTemplateProvider extends libFableServiceBase{/**
9479
+ */getSummary(){let tmpTotalCalls=0;let tmpTotalDuration=0;let tmpMaxDepth=0;let fWalkNode=(pNode,pDepth)=>{tmpTotalCalls++;tmpTotalDuration+=pNode.Duration||0;if(pDepth>tmpMaxDepth){tmpMaxDepth=pDepth;}for(let i=0;i<pNode.ChildTemplates.length;i++){fWalkNode(pNode.ChildTemplates[i],pDepth+1);}};for(let i=0;i<this.auditLog.length;i++){fWalkNode(this.auditLog[i],0);}return{RootCalls:this.auditLog.length,TotalCalls:tmpTotalCalls,TotalDuration:tmpTotalDuration,MaxDepth:tmpMaxDepth};}}module.exports=PictTemplateAudit;/** @type {Record<string, any>} */PictTemplateAudit.default_configuration={};},{"fable":68}],243:[function(require,module,exports){const libFableServiceBase=require('fable').ServiceProviderBase;class PictTemplateProvider extends libFableServiceBase{/**
9280
9480
  * @param {Object} pFable - The Fable Framework instance
9281
9481
  * @param {Object} pOptions - The options for the service
9282
9482
  * @param {String} pServiceHash - The hash of the service
@@ -9324,7 +9524,7 @@ if(!(pTemplateHash in this.templates)){this.checkDefaultTemplateHash(pTemplateHa
9324
9524
  * Load a template by hash.
9325
9525
  *
9326
9526
  * @param {String} pTemplateHash - The hash of the template
9327
- */loadTemplate(pTemplateHash){let tmpTemplate=this.loadTemplateFunction(pTemplateHash);if(tmpTemplate){this.templates[pTemplateHash]=tmpTemplate.template;this.templateSources[pTemplateHash]="Loaded in loadTemplate('".concat(pTemplateHash,"') function by PictTemplateProvider [").concat(this.UUID,"]::[").concat(this.Hash,"] from [").concat(tmpTemplate.source,"]");}return tmpTemplate;}}module.exports=PictTemplateProvider;},{"fable":68}],241:[function(require,module,exports){/**
9527
+ */loadTemplate(pTemplateHash){let tmpTemplate=this.loadTemplateFunction(pTemplateHash);if(tmpTemplate){this.templates[pTemplateHash]=tmpTemplate.template;this.templateSources[pTemplateHash]="Loaded in loadTemplate('".concat(pTemplateHash,"') function by PictTemplateProvider [").concat(this.UUID,"]::[").concat(this.Hash,"] from [").concat(tmpTemplate.source,"]");}return tmpTemplate;}}module.exports=PictTemplateProvider;},{"fable":68}],244:[function(require,module,exports){/**
9328
9528
  * @author <steven@velozo.com>
9329
9529
  */const libFableServiceTransactionTracking=require("./services/Fable-Service-TransactionTracking.js");/**
9330
9530
  * @typedef {{
@@ -9623,7 +9823,7 @@ let tmpValue="";if(typeof fCallback=="function"){if(Array.isArray(pDataSet)||typ
9623
9823
  * @return {String?} The parsed template string, or undefined if a callback was provided
9624
9824
  */parseTemplateSetWithPayloadByHash(pTemplateHash,pDataSet,pPayload,fCallback,pContextArray,pScope,pState){let tmpTemplateString=this.TemplateProvider.getTemplate(pTemplateHash);// TODO: Unsure if returning empty is always the right behavior -- if it isn't we will use config to set the behavior
9625
9825
  if(!tmpTemplateString){tmpTemplateString="";}return this.parseTemplateSetWithPayload(tmpTemplateString,pDataSet,pPayload,fCallback,pContextArray,pScope,pState);}}module.exports=Pict;module.exports.ServiceProviderBase=require('fable-serviceproviderbase');module.exports.PictApplicationClass=require("pict-application");module.exports.PictViewClass=require("pict-view");module.exports.PictProviderClass=require("pict-provider");module.exports.PictTemplateClass=require("pict-template");module.exports.EnvironmentLog=require("./environments/Pict-Environment-Log.js");module.exports.EnvironmentObject=require("./environments/Pict-Environment-Object.js");module.exports.FilterClauseBase=require('./filters/FilterClauseBase.js');module.exports.FilterClauseLocal=require('./filters/FilterClauseLocal.js');module.exports.FilterClauseInternalJoin=require('./filters/FilterClauseInternalJoin.js');module.exports.FilterClauseExternalJoin=require('./filters/FilterClauseExternalJoin.js');// This is to help understand the type of enivironement we're executing in
9626
- module.exports.isBrowser=new Function("try {return (this===window);} catch(pError) {return false;}");module.exports.safeOnDocumentReady=require("./Pict-Browser-SafeOnDocumentReady.js");module.exports.safeLoadPictApplication=require("./Pict-Browser-SafeLoad.js");},{"../package.json":232,"./Pict-Browser-SafeLoad.js":233,"./Pict-Browser-SafeOnDocumentReady.js":234,"./Pict-CSS.js":235,"./Pict-Content-Assignment.js":236,"./Pict-DataProvider.js":237,"./Pict-Meadow-EntityProvider.js":238,"./Pict-Template-Audit.js":239,"./Pict-Template-Provider.js":240,"./environments/Pict-Environment-Log.js":242,"./environments/Pict-Environment-Object.js":243,"./filters/FilterClauseBase.js":245,"./filters/FilterClauseExternalJoin.js":246,"./filters/FilterClauseInternalJoin.js":247,"./filters/FilterClauseLocal.js":248,"./providers/Provider-DataBroker.js":250,"./providers/Provider-Filter-Manager.js":251,"./providers/Provider-Icon.js":252,"./services/Fable-Service-TransactionTracking.js":253,"./templates/Pict-Template-AddressedTemplate.js":254,"./templates/Pict-Template-Data.js":255,"./templates/Pict-Template-DataValueByKey.js":256,"./templates/Pict-Template-DataWithAbsoluteFallback.js":257,"./templates/Pict-Template-DataWithTemplateFallback.js":258,"./templates/Pict-Template-Entity.js":259,"./templates/Pict-Template-Function.js":260,"./templates/Pict-Template-Icon.js":261,"./templates/Pict-Template-InlineTemplate.js":262,"./templates/Pict-Template-Self.js":263,"./templates/Pict-Template-Solve.js":264,"./templates/Pict-Template-SolveByReference.js":265,"./templates/Pict-Template-Template.js":266,"./templates/Pict-Template-TemplateByDataAddress.js":267,"./templates/Pict-Template-TemplateByReference.js":268,"./templates/Pict-Template-TemplateByTypes.js":269,"./templates/Pict-Template-TemplateFromAddress.js":270,"./templates/Pict-Template-TemplateFromMap.js":271,"./templates/Pict-Template-TemplateSet.js":272,"./templates/Pict-Template-TemplateSetFromMap.js":273,"./templates/Pict-Template-TemplateSetWithPayload.js":274,"./templates/Pict-Template-TemplateValueSet.js":275,"./templates/Pict-Template-View.js":276,"./templates/data-generation/Pict-Template-RandomNumber.js":277,"./templates/data-generation/Pict-Template-RandomNumberString.js":278,"./templates/data/Pict-Template-DataEncodeJavascriptString.js":279,"./templates/data/Pict-Template-DataJson.js":280,"./templates/data/Pict-Template-DateOnlyFormat.js":281,"./templates/data/Pict-Template-DateOnlyYMD.js":282,"./templates/data/Pict-Template-DateTimeFormat.js":283,"./templates/data/Pict-Template-DateTimeYMD.js":284,"./templates/data/Pict-Template-Digits.js":285,"./templates/data/Pict-Template-Dollars.js":286,"./templates/data/Pict-Template-HtmlCommentEnd.js":287,"./templates/data/Pict-Template-HtmlCommentStart.js":288,"./templates/data/Pict-Template-Join.js":289,"./templates/data/Pict-Template-JoinUnique.js":290,"./templates/data/Pict-Template-PascalCaseIdentifier.js":291,"./templates/data/Pict-Template-PluckJoinUnique.js":292,"./templates/debugging/Pict-Template-Breakpoint.js":293,"./templates/debugging/Pict-Template-DataValueTree.js":294,"./templates/debugging/Pict-Template-LogStatement.js":295,"./templates/debugging/Pict-Template-LogValue.js":296,"./templates/debugging/Pict-Template-LogValueTree.js":297,"./templates/logic/Pict-Template-NotEmpty.js":298,"./templates/logic/Pict-Template-TemplateIf.js":300,"./templates/logic/Pict-Template-TemplateIfAbsolute.js":301,"fable":68,"fable-serviceproviderbase":59,"pict-application":141,"pict-provider":148,"pict-template":229,"pict-view":231}],242:[function(require,module,exports){/**
9826
+ module.exports.isBrowser=new Function("try {return (this===window);} catch(pError) {return false;}");module.exports.safeOnDocumentReady=require("./Pict-Browser-SafeOnDocumentReady.js");module.exports.safeLoadPictApplication=require("./Pict-Browser-SafeLoad.js");},{"../package.json":235,"./Pict-Browser-SafeLoad.js":236,"./Pict-Browser-SafeOnDocumentReady.js":237,"./Pict-CSS.js":238,"./Pict-Content-Assignment.js":239,"./Pict-DataProvider.js":240,"./Pict-Meadow-EntityProvider.js":241,"./Pict-Template-Audit.js":242,"./Pict-Template-Provider.js":243,"./environments/Pict-Environment-Log.js":245,"./environments/Pict-Environment-Object.js":246,"./filters/FilterClauseBase.js":248,"./filters/FilterClauseExternalJoin.js":249,"./filters/FilterClauseInternalJoin.js":250,"./filters/FilterClauseLocal.js":251,"./providers/Provider-DataBroker.js":253,"./providers/Provider-Filter-Manager.js":254,"./providers/Provider-Icon.js":255,"./services/Fable-Service-TransactionTracking.js":256,"./templates/Pict-Template-AddressedTemplate.js":257,"./templates/Pict-Template-Data.js":258,"./templates/Pict-Template-DataValueByKey.js":259,"./templates/Pict-Template-DataWithAbsoluteFallback.js":260,"./templates/Pict-Template-DataWithTemplateFallback.js":261,"./templates/Pict-Template-Entity.js":262,"./templates/Pict-Template-Function.js":263,"./templates/Pict-Template-Icon.js":264,"./templates/Pict-Template-InlineTemplate.js":265,"./templates/Pict-Template-Self.js":266,"./templates/Pict-Template-Solve.js":267,"./templates/Pict-Template-SolveByReference.js":268,"./templates/Pict-Template-Template.js":269,"./templates/Pict-Template-TemplateByDataAddress.js":270,"./templates/Pict-Template-TemplateByReference.js":271,"./templates/Pict-Template-TemplateByTypes.js":272,"./templates/Pict-Template-TemplateFromAddress.js":273,"./templates/Pict-Template-TemplateFromMap.js":274,"./templates/Pict-Template-TemplateSet.js":275,"./templates/Pict-Template-TemplateSetFromMap.js":276,"./templates/Pict-Template-TemplateSetWithPayload.js":277,"./templates/Pict-Template-TemplateValueSet.js":278,"./templates/Pict-Template-View.js":279,"./templates/data-generation/Pict-Template-RandomNumber.js":280,"./templates/data-generation/Pict-Template-RandomNumberString.js":281,"./templates/data/Pict-Template-DataEncodeJavascriptString.js":282,"./templates/data/Pict-Template-DataJson.js":283,"./templates/data/Pict-Template-DateOnlyFormat.js":284,"./templates/data/Pict-Template-DateOnlyYMD.js":285,"./templates/data/Pict-Template-DateTimeFormat.js":286,"./templates/data/Pict-Template-DateTimeYMD.js":287,"./templates/data/Pict-Template-Digits.js":288,"./templates/data/Pict-Template-Dollars.js":289,"./templates/data/Pict-Template-HtmlCommentEnd.js":290,"./templates/data/Pict-Template-HtmlCommentStart.js":291,"./templates/data/Pict-Template-Join.js":292,"./templates/data/Pict-Template-JoinUnique.js":293,"./templates/data/Pict-Template-PascalCaseIdentifier.js":294,"./templates/data/Pict-Template-PluckJoinUnique.js":295,"./templates/debugging/Pict-Template-Breakpoint.js":296,"./templates/debugging/Pict-Template-DataValueTree.js":297,"./templates/debugging/Pict-Template-LogStatement.js":298,"./templates/debugging/Pict-Template-LogValue.js":299,"./templates/debugging/Pict-Template-LogValueTree.js":300,"./templates/logic/Pict-Template-NotEmpty.js":301,"./templates/logic/Pict-Template-TemplateIf.js":303,"./templates/logic/Pict-Template-TemplateIfAbsolute.js":304,"fable":68,"fable-serviceproviderbase":59,"pict-application":141,"pict-provider":149,"pict-template":232,"pict-view":234}],245:[function(require,module,exports){/**
9627
9827
  * Pict browser shim loader
9628
9828
  * @author <steven@velozo.com>
9629
9829
  *
@@ -9691,7 +9891,7 @@ return this.contentMap[pAddress];}this.pict.log.warn("Mock read from Address ".c
9691
9891
  *
9692
9892
  * @param {string} pAddress - The address of the element.
9693
9893
  * @param {string} pAttribute - The attribute to set.
9694
- */customSetAttributeFunction(pAddress,pAttribute,pContent){if(pContent.length>this.truncateContentLength){this.pict.log.info("Mocking an SET ATTRIBUTE to Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Attribute:pAttribute,Content:pContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an SET ATTRIBUTE to Address -> [".concat(pAddress,"]"),{Attribute:pAttribute,Content:pContent});}return'';}}module.exports=PictEnvironmentLog;},{}],243:[function(require,module,exports){/**
9894
+ */customSetAttributeFunction(pAddress,pAttribute,pContent){if(pContent.length>this.truncateContentLength){this.pict.log.info("Mocking an SET ATTRIBUTE to Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Attribute:pAttribute,Content:pContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an SET ATTRIBUTE to Address -> [".concat(pAddress,"]"),{Attribute:pAttribute,Content:pContent});}return'';}}module.exports=PictEnvironmentLog;},{}],246:[function(require,module,exports){/**
9695
9895
  * Pict browser shim loader with Object statefulness for the environement
9696
9896
  * @author <steven@velozo.com>
9697
9897
  *
@@ -9721,7 +9921,7 @@ return this.contentMap[pAddress];}this.pict.log.warn("Mock read from Address ".c
9721
9921
  */constructor(pPict,pContentMap){this.contentMap=typeof pContentMap=='object'?pContentMap:{};this.contentMap._ATTRIBUTE_MAP={};this.contentMap._CLASS_MAP={};this.pict=pPict;// If this is set to false, we won't keep an array-based log of every read, assignment, append or get.
9722
9922
  this.truncateContentLength=256;this.storeEventLog=true;// Where to store each event type
9723
9923
  this.eventLog={};this.eventLog.GetElement=[];this.eventLog.Read=[];this.eventLog.Prepend=[];this.eventLog.Append=[];this.eventLog.Assign=[];this.eventLog.ReadAttribute=[];this.eventLog.SetAttribute=[];this.eventLog.RemoveAttribute=[];this.eventLog.ReadClass=[];this.eventLog.SetClass=[];this.eventLog.RemoveClass=[];this.pict.ContentAssignment.customGetElementFunction=this.customGetElementFunction.bind(this);this.pict.ContentAssignment.customReadFunction=this.customReadFunction.bind(this);this.pict.ContentAssignment.customAppendFunction=this.customAppendFunction.bind(this);this.pict.ContentAssignment.customPrependFunction=this.customPrependFunction.bind(this);this.pict.ContentAssignment.customAssignFunction=this.customAssignFunction.bind(this);this.pict.ContentAssignment.customReadAttributeFunction=this.customReadAttributeFunction.bind(this);this.pict.ContentAssignment.customSetAttributeFunction=this.customSetAttributeFunction.bind(this);this.pict.ContentAssignment.customRemoveAttributeFunction=this.customRemoveAttributeFunction.bind(this);this.pict.ContentAssignment.customReadClassFunction=this.customReadClassFunction.bind(this);this.pict.ContentAssignment.customSetClassFunction=this.customSetClassFunction.bind(this);this.pict.ContentAssignment.customRemoveClassFunction=this.customRemoveClassFunction.bind(this);}createEventLogEntry(pAddress,pContent){let tmpContent=typeof pContent=='undefined'?'':pContent;return{TimeStamp:this.pict.log.getTimeStamp(),Hash:pAddress,Content:tmpContent};}customGetElementFunction(pAddress){if(this.storeEventLog){this.eventLog.GetElement.push(this.createEventLogEntry(pAddress));}this.pict.log.info("Mocking an GET of Address -> [".concat(pAddress,"]"));return'';}customReadFunction(pAddress){if(this.storeEventLog){this.eventLog.Read.push(this.createEventLogEntry(pAddress));}this.pict.log.info("Mocking an READ from Address -> [".concat(pAddress,"]"));if(pAddress in this.contentMap){// The data is in the content map!
9724
- return this.contentMap[pAddress];}this.pict.log.warn("Mock read from Address ".concat(pAddress," did not find a value in the content map."));return'';}customAppendFunction(pAddress,pContent){this.contentMap[pAddress]=typeof this.contentMap[pAddress]=='undefined'?pContent:this.contentMap[pAddress]+pContent;if(this.storeEventLog){this.eventLog.Append.push(this.createEventLogEntry(pAddress,pContent));}if(pContent.length>this.truncateContentLength){this.pict.log.info("Mocking an APPEND to Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:pContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an APPEND to Address -> [".concat(pAddress,"]"),{Content:pContent});}return'';}customPrependFunction(pAddress,pContent){this.contentMap[pAddress]=typeof this.contentMap[pAddress]=='undefined'?pContent:pContent+this.contentMap[pAddress];if(this.storeEventLog){this.eventLog.Prepend.push(this.createEventLogEntry(pAddress,pContent));}if(pContent.length>this.truncateContentLength){this.pict.log.info("Mocking an PREPEND to Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:pContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an PREPEND to Address -> [".concat(pAddress,"]"),{Content:pContent});}return'';}customAssignFunction(pAddress,pContent){this.contentMap[pAddress]=pContent;if(this.storeEventLog){this.eventLog.Prepend.push(this.createEventLogEntry(pAddress,pContent));}if(pContent.length>this.truncateContentLength){this.pict.log.info("Mocking an ASSIGN to Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:pContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an ASSIGN to Address -> [".concat(pAddress,"]"),{Content:pContent});}return'';}initializeAttributeMapLocation(pAddress,pAttribute){if(!(pAddress in this.contentMap._ATTRIBUTE_MAP)){this.contentMap._ATTRIBUTE_MAP[pAddress]={};}if(!(pAttribute in this.contentMap._ATTRIBUTE_MAP[pAddress])){this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute]=false;}}initializeClassMapLocation(pAddress){if(!(pAddress in this.contentMap._CLASS_MAP)){this.contentMap._CLASS_MAP[pAddress]=[];}}customReadAttributeFunction(pAddress,pAttribute){this.initializeAttributeMapLocation(pAddress,pAttribute);let tmpContent=this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute];if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pAttribute));}if(tmpContent.length>this.truncateContentLength){this.pict.log.info("Mocking an ATTRIBUTE READ for Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:tmpContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an ATTRIBUTE READ for Address -> [".concat(pAddress,"]::[").concat(pAttribute,"]"),{Content:tmpContent});}return tmpContent;}customSetAttributeFunction(pAddress,pAttribute,pValue){this.initializeAttributeMapLocation(pAddress,pAttribute);this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute]=pValue;if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pAttribute));}if(pValue.length>this.truncateContentLength){this.pict.log.info("Mocking an ATTRIBUTE SET for Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:pValue.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an ATTRIBUTE SET for Address -> [".concat(pAddress,"]::[").concat(pAttribute,"]"),{Content:pValue});}return pValue;}customRemoveAttributeFunction(pAddress,pAttribute){this.initializeAttributeMapLocation(pAddress,pAttribute);let tmpContent=this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute];if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pAttribute));}if(tmpContent.length>this.truncateContentLength){this.pict.log.info("Mocking an ATTRIBUTE REMOVE for Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:tmpContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an ATTRIBUTE REMOVE for Address -> [".concat(pAddress,"]::[").concat(pAttribute,"]"),{Content:tmpContent});}delete this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute];return true;}customReadClassFunction(pAddress,pClass){this.initializeClassMapLocation(pAddress);const tmpContent=this.contentMap._CLASS_MAP[pAddress].indexOf(pClass)>-1;if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pClass));}this.pict.log.info("Mocking an CLASS READ for Address -> [".concat(pAddress,"]::[").concat(pClass,"]"),{Content:tmpContent});return tmpContent;}customSetClassFunction(pAddress,pClass){this.initializeClassMapLocation(pAddress);let tmpContent=this.contentMap._CLASS_MAP[pAddress];if(this.contentMap._CLASS_MAP[pAddress].indexOf(pClass)==-1){this.contentMap._CLASS_MAP[pAddress].push(pClass);}if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pClass));}this.pict.log.info("Mocking an CLASS SET for Address -> [".concat(pAddress,"]::[").concat(pClass,"]"),{Content:tmpContent.join(' ')});return tmpContent;}customRemoveClassFunction(pAddress,pClass){this.initializeClassMapLocation(pAddress);let tmpContent=this.contentMap._CLASS_MAP[pAddress];this.contentMap._CLASS_MAP[pAddress].splice(pClass);if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pClass));}this.pict.log.info("Mocking an CLASS REMOVE for Address -> [".concat(pAddress,"]::[").concat(pClass,"]"),{Content:tmpContent.join(' ')});return tmpContent;}}module.exports=PictEnvironmentObject;},{}],244:[function(require,module,exports){/**
9924
+ return this.contentMap[pAddress];}this.pict.log.warn("Mock read from Address ".concat(pAddress," did not find a value in the content map."));return'';}customAppendFunction(pAddress,pContent){this.contentMap[pAddress]=typeof this.contentMap[pAddress]=='undefined'?pContent:this.contentMap[pAddress]+pContent;if(this.storeEventLog){this.eventLog.Append.push(this.createEventLogEntry(pAddress,pContent));}if(pContent.length>this.truncateContentLength){this.pict.log.info("Mocking an APPEND to Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:pContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an APPEND to Address -> [".concat(pAddress,"]"),{Content:pContent});}return'';}customPrependFunction(pAddress,pContent){this.contentMap[pAddress]=typeof this.contentMap[pAddress]=='undefined'?pContent:pContent+this.contentMap[pAddress];if(this.storeEventLog){this.eventLog.Prepend.push(this.createEventLogEntry(pAddress,pContent));}if(pContent.length>this.truncateContentLength){this.pict.log.info("Mocking an PREPEND to Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:pContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an PREPEND to Address -> [".concat(pAddress,"]"),{Content:pContent});}return'';}customAssignFunction(pAddress,pContent){this.contentMap[pAddress]=pContent;if(this.storeEventLog){this.eventLog.Prepend.push(this.createEventLogEntry(pAddress,pContent));}if(pContent.length>this.truncateContentLength){this.pict.log.info("Mocking an ASSIGN to Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:pContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an ASSIGN to Address -> [".concat(pAddress,"]"),{Content:pContent});}return'';}initializeAttributeMapLocation(pAddress,pAttribute){if(!(pAddress in this.contentMap._ATTRIBUTE_MAP)){this.contentMap._ATTRIBUTE_MAP[pAddress]={};}if(!(pAttribute in this.contentMap._ATTRIBUTE_MAP[pAddress])){this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute]=false;}}initializeClassMapLocation(pAddress){if(!(pAddress in this.contentMap._CLASS_MAP)){this.contentMap._CLASS_MAP[pAddress]=[];}}customReadAttributeFunction(pAddress,pAttribute){this.initializeAttributeMapLocation(pAddress,pAttribute);let tmpContent=this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute];if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pAttribute));}if(tmpContent.length>this.truncateContentLength){this.pict.log.info("Mocking an ATTRIBUTE READ for Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:tmpContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an ATTRIBUTE READ for Address -> [".concat(pAddress,"]::[").concat(pAttribute,"]"),{Content:tmpContent});}return tmpContent;}customSetAttributeFunction(pAddress,pAttribute,pValue){this.initializeAttributeMapLocation(pAddress,pAttribute);this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute]=pValue;if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pAttribute));}if(pValue.length>this.truncateContentLength){this.pict.log.info("Mocking an ATTRIBUTE SET for Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:pValue.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an ATTRIBUTE SET for Address -> [".concat(pAddress,"]::[").concat(pAttribute,"]"),{Content:pValue});}return pValue;}customRemoveAttributeFunction(pAddress,pAttribute){this.initializeAttributeMapLocation(pAddress,pAttribute);let tmpContent=this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute];if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pAttribute));}if(tmpContent.length>this.truncateContentLength){this.pict.log.info("Mocking an ATTRIBUTE REMOVE for Address -> [".concat(pAddress,"] (log truncated to first ").concat(this.truncateContentLength," characters)"),{Content:tmpContent.substring(0,this.truncateContentLength)});}else{this.pict.log.info("Mocking an ATTRIBUTE REMOVE for Address -> [".concat(pAddress,"]::[").concat(pAttribute,"]"),{Content:tmpContent});}delete this.contentMap._ATTRIBUTE_MAP[pAddress][pAttribute];return true;}customReadClassFunction(pAddress,pClass){this.initializeClassMapLocation(pAddress);const tmpContent=this.contentMap._CLASS_MAP[pAddress].indexOf(pClass)>-1;if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pClass));}this.pict.log.info("Mocking an CLASS READ for Address -> [".concat(pAddress,"]::[").concat(pClass,"]"),{Content:tmpContent});return tmpContent;}customSetClassFunction(pAddress,pClass){this.initializeClassMapLocation(pAddress);let tmpContent=this.contentMap._CLASS_MAP[pAddress];if(this.contentMap._CLASS_MAP[pAddress].indexOf(pClass)==-1){this.contentMap._CLASS_MAP[pAddress].push(pClass);}if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pClass));}this.pict.log.info("Mocking an CLASS SET for Address -> [".concat(pAddress,"]::[").concat(pClass,"]"),{Content:tmpContent.join(' ')});return tmpContent;}customRemoveClassFunction(pAddress,pClass){this.initializeClassMapLocation(pAddress);let tmpContent=this.contentMap._CLASS_MAP[pAddress];this.contentMap._CLASS_MAP[pAddress].splice(pClass);if(this.storeEventLog){this.eventLog.Assign.push(this.createEventLogEntry(pAddress,pClass));}this.pict.log.info("Mocking an CLASS REMOVE for Address -> [".concat(pAddress,"]::[").concat(pClass,"]"),{Content:tmpContent.join(' ')});return tmpContent;}}module.exports=PictEnvironmentObject;},{}],247:[function(require,module,exports){/**
9725
9925
  * @typedef {{
9726
9926
  * ValueTemplate?: string,
9727
9927
  * Value?: string,
@@ -9836,7 +10036,7 @@ if(!pFilterState.Filter){pFilterState.Filter="".concat(pFilterState.Entity||'Unk
9836
10036
  *
9837
10037
  * @return {Array<string>}
9838
10038
  */_extractSortsFromFilter(pFilter){if(!pFilter||typeof pFilter!=='string'){return[pFilter,''];}let tmpSortStanzas=[];let tmpMicroStanzas=pFilter.split('~');for(let i=0;i<tmpMicroStanzas.length;i+=4){if(tmpMicroStanzas[i]==='FSF'){tmpSortStanzas.push(tmpMicroStanzas.slice(i,i+4).join('~'));tmpMicroStanzas=tmpMicroStanzas.slice(0,i).concat(tmpMicroStanzas.slice(i+4));i-=4;// adjust for removed elements
9839
- }}return[tmpMicroStanzas.join('~'),tmpSortStanzas.join('~')];}_compileSimpleFilterToString(pFilter){let tmpFilterString="".concat(pFilter.Instruction);tmpFilterString+="~".concat(pFilter.Field);tmpFilterString+="~".concat(pFilter.Operator);if(pFilter.ValueTemplate){tmpFilterString+="~".concat(pFilter.ValueTemplate);}else{tmpFilterString+="~".concat(pFilter.Value||'');}if(pFilter.OpenParen){tmpFilterString="".concat(pFilter.OpenParenOr?'FOPOR':'FOP',"~0~(~0~").concat(tmpFilterString);}if(pFilter.CloseParen){tmpFilterString="".concat(tmpFilterString,"~FCP~0~)~0");}return tmpFilterString;}}module.exports=FilterMeadowStanzaTokenGenerator;},{}],245:[function(require,module,exports){/**
10039
+ }}return[tmpMicroStanzas.join('~'),tmpSortStanzas.join('~')];}_compileSimpleFilterToString(pFilter){let tmpFilterString="".concat(pFilter.Instruction);tmpFilterString+="~".concat(pFilter.Field);tmpFilterString+="~".concat(pFilter.Operator);if(pFilter.ValueTemplate){tmpFilterString+="~".concat(pFilter.ValueTemplate);}else{tmpFilterString+="~".concat(pFilter.Value||'');}if(pFilter.OpenParen){tmpFilterString="".concat(pFilter.OpenParenOr?'FOPOR':'FOP',"~0~(~0~").concat(tmpFilterString);}if(pFilter.CloseParen){tmpFilterString="".concat(tmpFilterString,"~FCP~0~)~0");}return tmpFilterString;}}module.exports=FilterMeadowStanzaTokenGenerator;},{}],248:[function(require,module,exports){/**
9840
10040
  * @typedef {{
9841
10041
  * Type: 'None'
9842
10042
  * } | {
@@ -9933,25 +10133,25 @@ if(!pFilterState.Filter){pFilterState.Filter="".concat(pFilterState.Entity||'Unk
9933
10133
  * @return {import('./Filter.js').FilterType}
9934
10134
  */get type(){return this._type;}/**
9935
10135
  * @return {FilterClauseConfig}
9936
- */generateFilterClauseConfig(){return{Type:'None'};}}module.exports=FilterClauseBase;},{}],246:[function(require,module,exports){const libFilterClauseBase=require('./FilterClauseBase.js');/**
10136
+ */generateFilterClauseConfig(){return{Type:'None'};}}module.exports=FilterClauseBase;},{}],249:[function(require,module,exports){const libFilterClauseBase=require('./FilterClauseBase.js');/**
9937
10137
  * Manage filter state for a filter that works on a one level of indirect direct join.
9938
10138
  */class FilterClauseExternalJoin extends libFilterClauseBase{/**
9939
10139
  * @param {import('../Pict.js')} pFable
9940
10140
  */constructor(pFable){super(pFable);/** @type {import('./Filter.js').FilterType} */this.type='ExternalJoinMatch';/** @type {string[] | number[] | { Start?: string | number, End?: string | number }} */this.values=[];/** @type {boolean?} */this.exactMatch;/** @type {boolean?} */this.startExclusive;/** @type {boolean?} */this.endExclusive;/** @type {string?} */this.externalFilterByColumn;/** @type {string[]?} */this.externalFilterByColumns;/** @type {string} */this.coreConnectionColumn='';/** @type {string} */this.joinTable='';/** @type {string} */this.joinTableExternalConnectionColumn='';/** @type {string} */this.joinTableCoreConnectionColumn='';/** @type {string} */this.externalFilterByTable='';/** @type {string} */this.externalFilterTableLookupColumn='';/** @type {string} */this.externalFilterByTableConnectionColumn='';/** @type {string} */this.polyJoinRemoteType='';/** @type {string} */this.polyJoinRemoteColumn='';}/**
9941
10141
  * @return {import('./FilterClauseBase.js').FilterClauseConfig}
9942
- */generateFilterClauseConfig(){switch(this.type){case'ExternalJoinMatch':case'ExternalJoinStringMatch':case'ExternalJoinDateMatch':case'ExternalJoinNumericMatch':return{Type:this.type,Values:Array.isArray(this.values)?this.values:[],ExactMatch:this.exactMatch,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,CoreConnectionColumn:this.coreConnectionColumn,JoinTable:this.joinTable,JoinTableExternalConnectionColumn:this.joinTableExternalConnectionColumn,JoinTableCoreConnectionColumn:this.joinTableCoreConnectionColumn,ExternalFilterByTable:this.externalFilterByTable,ExternalFilterByTableConnectionColumn:this.externalFilterByTableConnectionColumn,PolyJoinRemoteType:this.polyJoinRemoteType,PolyJoinRemoteColumn:this.polyJoinRemoteColumn};case'ExternalJoinRange':case'ExternalJoinStringRange':case'ExternalJoinDateRange':case'ExternalJoinNumericRange':return{Type:this.type,Values:Array.isArray(this.values)?{Start:undefined,End:undefined}:Object.assign({},this.values),StartExclusive:this.startExclusive,EndExclusive:this.endExclusive,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,CoreConnectionColumn:this.coreConnectionColumn,JoinTable:this.joinTable,JoinTableExternalConnectionColumn:this.joinTableExternalConnectionColumn,JoinTableCoreConnectionColumn:this.joinTableCoreConnectionColumn,ExternalFilterByTable:this.externalFilterByTable,ExternalFilterByTableConnectionColumn:this.externalFilterByTableConnectionColumn,PolyJoinRemoteType:this.polyJoinRemoteType,PolyJoinRemoteColumn:this.polyJoinRemoteColumn};case'ExternalJoinSelectedValue':case'ExternalJoinSelectedValueList':return{Type:this.type,Values:Array.isArray(this.values)?{Start:undefined,End:undefined}:Object.assign({},this.values),StartExclusive:this.startExclusive,EndExclusive:this.endExclusive,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,CoreConnectionColumn:this.coreConnectionColumn,JoinTable:this.joinTable,JoinTableExternalConnectionColumn:this.joinTableExternalConnectionColumn,JoinTableCoreConnectionColumn:this.joinTableCoreConnectionColumn,ExternalFilterByTable:this.externalFilterByTable,ExternalFilterTableLookupColumn:this.externalFilterTableLookupColumn,ExternalFilterByTableConnectionColumn:this.externalFilterByTableConnectionColumn,PolyJoinRemoteType:this.polyJoinRemoteType,PolyJoinRemoteColumn:this.polyJoinRemoteColumn};default:throw new Error("Unsupported filter type: ".concat(this.type));}}}module.exports=FilterClauseExternalJoin;},{"./FilterClauseBase.js":245}],247:[function(require,module,exports){const libFilterClauseBase=require('./FilterClauseBase.js');/**
10142
+ */generateFilterClauseConfig(){switch(this.type){case'ExternalJoinMatch':case'ExternalJoinStringMatch':case'ExternalJoinDateMatch':case'ExternalJoinNumericMatch':return{Type:this.type,Values:Array.isArray(this.values)?this.values:[],ExactMatch:this.exactMatch,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,CoreConnectionColumn:this.coreConnectionColumn,JoinTable:this.joinTable,JoinTableExternalConnectionColumn:this.joinTableExternalConnectionColumn,JoinTableCoreConnectionColumn:this.joinTableCoreConnectionColumn,ExternalFilterByTable:this.externalFilterByTable,ExternalFilterByTableConnectionColumn:this.externalFilterByTableConnectionColumn,PolyJoinRemoteType:this.polyJoinRemoteType,PolyJoinRemoteColumn:this.polyJoinRemoteColumn};case'ExternalJoinRange':case'ExternalJoinStringRange':case'ExternalJoinDateRange':case'ExternalJoinNumericRange':return{Type:this.type,Values:Array.isArray(this.values)?{Start:undefined,End:undefined}:Object.assign({},this.values),StartExclusive:this.startExclusive,EndExclusive:this.endExclusive,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,CoreConnectionColumn:this.coreConnectionColumn,JoinTable:this.joinTable,JoinTableExternalConnectionColumn:this.joinTableExternalConnectionColumn,JoinTableCoreConnectionColumn:this.joinTableCoreConnectionColumn,ExternalFilterByTable:this.externalFilterByTable,ExternalFilterByTableConnectionColumn:this.externalFilterByTableConnectionColumn,PolyJoinRemoteType:this.polyJoinRemoteType,PolyJoinRemoteColumn:this.polyJoinRemoteColumn};case'ExternalJoinSelectedValue':case'ExternalJoinSelectedValueList':return{Type:this.type,Values:Array.isArray(this.values)?{Start:undefined,End:undefined}:Object.assign({},this.values),StartExclusive:this.startExclusive,EndExclusive:this.endExclusive,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,CoreConnectionColumn:this.coreConnectionColumn,JoinTable:this.joinTable,JoinTableExternalConnectionColumn:this.joinTableExternalConnectionColumn,JoinTableCoreConnectionColumn:this.joinTableCoreConnectionColumn,ExternalFilterByTable:this.externalFilterByTable,ExternalFilterTableLookupColumn:this.externalFilterTableLookupColumn,ExternalFilterByTableConnectionColumn:this.externalFilterByTableConnectionColumn,PolyJoinRemoteType:this.polyJoinRemoteType,PolyJoinRemoteColumn:this.polyJoinRemoteColumn};default:throw new Error("Unsupported filter type: ".concat(this.type));}}}module.exports=FilterClauseExternalJoin;},{"./FilterClauseBase.js":248}],250:[function(require,module,exports){const libFilterClauseBase=require('./FilterClauseBase.js');/**
9943
10143
  * Manage filter state for a filter that works on a one level of indirect direct join.
9944
10144
  */class FilterClauseInternalJoin extends libFilterClauseBase{/**
9945
10145
  * @param {import('../Pict.js')} pFable
9946
10146
  */constructor(pFable){super(pFable);/** @type {import('./Filter.js').FilterType} */this.type='None';/** @type {string[] | number[] | { Start?: string | number, End?: string | number }} */this.values=[];/** @type {boolean?} */this.exactMatch;/** @type {boolean?} */this.startExclusive;/** @type {boolean?} */this.endExclusive;/** @type {string} */this.remoteTable='';/** @type {string?} */this.externalFilterByColumn;/** @type {string[]?} */this.externalFilterByColumns;/** @type {string?} */this.externalFilterTableLookupColumn;/** @type {string} */this.joinExternalConnectionColumn='';/** @type {string} */this.joinInternalConnectionColumn='';}/**
9947
10147
  * @return {import('./FilterClauseBase.js').FilterClauseConfig}
9948
- */generateFilterClauseConfig(){switch(this._type){case'InternalJoinMatch':case'InternalJoinStringMatch':case'InternalJoinDateMatch':case'InternalJoinNumericMatch':return{Type:this._type,Values:Array.isArray(this.values)?this.values:[],ExactMatch:this.exactMatch,RemoteTable:this.remoteTable,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,JoinExternalConnectionColumn:this.joinExternalConnectionColumn,JoinInternalConnectionColumn:this.joinInternalConnectionColumn};case'InternalJoinSelectedValue':case'InternalJoinSelectedValueList':return{Type:this._type,Values:Array.isArray(this.values)?this.values:[],ExactMatch:this.exactMatch,RemoteTable:this.remoteTable,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,ExternalFilterTableLookupColumn:this.externalFilterTableLookupColumn,JoinExternalConnectionColumn:this.joinExternalConnectionColumn,JoinInternalConnectionColumn:this.joinInternalConnectionColumn};case'InternalJoinRange':case'InternalJoinStringRange':case'InternalJoinDateRange':case'InternalJoinNumericRange':return{Type:this._type,Values:Array.isArray(this.values)?{Start:undefined,End:undefined}:Object.assign({},this.values),StartExclusive:this.startExclusive,EndExclusive:this.endExclusive,RemoteTable:this.remoteTable,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,JoinExternalConnectionColumn:this.joinExternalConnectionColumn,JoinInternalConnectionColumn:this.joinInternalConnectionColumn};default:throw new Error("Unsupported filter type: ".concat(this.type));}}}module.exports=FilterClauseInternalJoin;},{"./FilterClauseBase.js":245}],248:[function(require,module,exports){const libFilterClauseBase=require('./FilterClauseBase.js');/**
10148
+ */generateFilterClauseConfig(){switch(this._type){case'InternalJoinMatch':case'InternalJoinStringMatch':case'InternalJoinDateMatch':case'InternalJoinNumericMatch':return{Type:this._type,Values:Array.isArray(this.values)?this.values:[],ExactMatch:this.exactMatch,RemoteTable:this.remoteTable,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,JoinExternalConnectionColumn:this.joinExternalConnectionColumn,JoinInternalConnectionColumn:this.joinInternalConnectionColumn};case'InternalJoinSelectedValue':case'InternalJoinSelectedValueList':return{Type:this._type,Values:Array.isArray(this.values)?this.values:[],ExactMatch:this.exactMatch,RemoteTable:this.remoteTable,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,ExternalFilterTableLookupColumn:this.externalFilterTableLookupColumn,JoinExternalConnectionColumn:this.joinExternalConnectionColumn,JoinInternalConnectionColumn:this.joinInternalConnectionColumn};case'InternalJoinRange':case'InternalJoinStringRange':case'InternalJoinDateRange':case'InternalJoinNumericRange':return{Type:this._type,Values:Array.isArray(this.values)?{Start:undefined,End:undefined}:Object.assign({},this.values),StartExclusive:this.startExclusive,EndExclusive:this.endExclusive,RemoteTable:this.remoteTable,ExternalFilterByColumn:this.externalFilterByColumn,ExternalFilterByColumns:this.externalFilterByColumns,JoinExternalConnectionColumn:this.joinExternalConnectionColumn,JoinInternalConnectionColumn:this.joinInternalConnectionColumn};default:throw new Error("Unsupported filter type: ".concat(this.type));}}}module.exports=FilterClauseInternalJoin;},{"./FilterClauseBase.js":248}],251:[function(require,module,exports){const libFilterClauseBase=require('./FilterClauseBase.js');/**
9949
10149
  * Manage filter state for a filter that only works on fields local to the table.
9950
10150
  */class FilterClauseLocal extends libFilterClauseBase{/**
9951
10151
  * @param {import('../Pict.js')} pFable
9952
10152
  */constructor(pFable){super(pFable);/** @type {import('./Filter.js').FilterType} */this._type='Match';/** @type {string} */this.filterByColumn;/** @type {boolean?} */this.exactMatch;/** @type {boolean?} */this.startExclusive;/** @type {boolean?} */this.endExclusive;}/**
9953
10153
  * @return {import('./FilterClauseBase.js').FilterClauseConfig}
9954
- */generateFilterClauseConfig(){switch(this._type){case'Match':case'StringMatch':case'DateMatch':case'NumericMatch':return{Type:this._type,Values:Array.isArray(this.values)?this.values:[],ExactMatch:this.exactMatch,FilterByColumn:this.filterByColumn};case'Range':case'StringRange':case'DateRange':case'NumericRange':return{Type:this._type,Values:Array.isArray(this.values)?{Start:undefined,End:undefined}:Object.assign({},this.values),StartExclusive:this.startExclusive,EndExclusive:this.endExclusive,FilterByColumn:this.filterByColumn};default:throw new Error("Unsupported filter type: ".concat(this.type));}}}module.exports=FilterClauseLocal;},{"./FilterClauseBase.js":245}],249:[function(require,module,exports){/**
10154
+ */generateFilterClauseConfig(){switch(this._type){case'Match':case'StringMatch':case'DateMatch':case'NumericMatch':return{Type:this._type,Values:Array.isArray(this.values)?this.values:[],ExactMatch:this.exactMatch,FilterByColumn:this.filterByColumn};case'Range':case'StringRange':case'DateRange':case'NumericRange':return{Type:this._type,Values:Array.isArray(this.values)?{Start:undefined,End:undefined}:Object.assign({},this.values),StartExclusive:this.startExclusive,EndExclusive:this.endExclusive,FilterByColumn:this.filterByColumn};default:throw new Error("Unsupported filter type: ".concat(this.type));}}}module.exports=FilterClauseLocal;},{"./FilterClauseBase.js":248}],252:[function(require,module,exports){/**
9955
10155
  * Built-in icon set for Pict-Provider-Icon.
9956
10156
  *
9957
10157
  * Every glyph is a full <svg> string with `viewBox="0 0 24 24"` and uses
@@ -9983,7 +10183,7 @@ if(!pFilterState.Filter){pFilterState.Filter="".concat(pFilterState.Entity||'Unk
9983
10183
  'Home':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10.5 12 3l9 7.5V20a1 1 0 0 1-1 1h-5v-7h-6v7H4a1 1 0 0 1-1-1v-9.5z"/></svg>','Settings':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.6 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>','Menu':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>','More':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><circle cx="5" cy="12" r="1.6"/><circle cx="12" cy="12" r="1.6"/><circle cx="19" cy="12" r="1.6"/></svg>','Eye':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>','EyeOff':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/><line x1="1" y1="1" x2="23" y2="23"/></svg>','Lock':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>','User':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>','Help':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>'};// Filled variants — only where the filled visual is meaningfully distinct
9984
10184
  // from the outline. Open-shape icons (Chevrons, Arrows, Close, Plus) have
9985
10185
  // no Filled variant; lookup falls back to Outline.
9986
- const _FilledVariants={'Folder':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M3 7.5V18a1.5 1.5 0 0 0 1.5 1.5h15A1.5 1.5 0 0 0 21 18V9a1.5 1.5 0 0 0-1.5-1.5h-7L10.5 6H4.5A1.5 1.5 0 0 0 3 7.5z"/></svg>','FolderOpen':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M3 8a1 1 0 0 1 1-1h6.5l2 2H20a1 1 0 0 1 1 1v8.5A1.5 1.5 0 0 1 19.5 20h-15A1.5 1.5 0 0 1 3 18.5V8z" fill-opacity="0.92"/></svg>','File':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-.5 7V3.5L19.5 9.5H14a.5.5 0 0 1-.5-.5z"/></svg>','FileText':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-.5 7V3.5L19.5 9.5H14a.5.5 0 0 1-.5-.5zM8 12.4a.6.6 0 0 1 .6-.6h6.8a.6.6 0 0 1 0 1.2H8.6a.6.6 0 0 1-.6-.6zm0 4a.6.6 0 0 1 .6-.6h4.8a.6.6 0 0 1 0 1.2H8.6a.6.6 0 0 1-.6-.6z"/></svg>','Spreadsheet':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M4 4h16a1.5 1.5 0 0 1 1.5 1.5v13A1.5 1.5 0 0 1 20 20H4a1.5 1.5 0 0 1-1.5-1.5v-13A1.5 1.5 0 0 1 4 4zm5 1.2H4.2v3.6H9V5.2zm10.8 0H10.2v3.6h9.6V5.2zM9 9.7H4.2v3.6H9V9.7zm10.8 0H10.2v3.6h9.6V9.7zM9 14.2H4.2v4.6H9v-4.6zm10.8 0H10.2v4.6h9.6v-4.6z"/></svg>','Home':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M11.3 2.2a1 1 0 0 1 1.4 0l9 7.5a1 1 0 0 1 .3.7V20a1 1 0 0 1-1 1h-5a.5.5 0 0 1-.5-.5V14a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 1-.5.5H4a1 1 0 0 1-1-1v-9.5a1 1 0 0 1 .3-.7l8-7.6z"/></svg>','Settings':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M19.43 12.98c.04-.32.07-.65.07-.98s-.03-.66-.07-.98l2.11-1.65a.5.5 0 0 0 .12-.64l-2-3.46a.5.5 0 0 0-.61-.22l-2.49 1a7.3 7.3 0 0 0-1.69-.98l-.38-2.65A.49.49 0 0 0 14 2h-4a.49.49 0 0 0-.49.42l-.38 2.65a7.6 7.6 0 0 0-1.69.98l-2.49-1a.51.51 0 0 0-.61.22l-2 3.46a.493.493 0 0 0 .12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65a.5.5 0 0 0-.12.64l2 3.46a.5.5 0 0 0 .61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65A.49.49 0 0 0 10 22h4a.49.49 0 0 0 .49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46a.5.5 0 0 0-.12-.64l-2.11-1.65zM12 15.5A3.5 3.5 0 1 1 12 8.5a3.5 3.5 0 0 1 0 7z"/></svg>','Trash':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M9 3a1 1 0 0 0-1 1v1H4.5a.5.5 0 0 0 0 1H5v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6h.5a.5.5 0 0 0 0-1H16V4a1 1 0 0 0-1-1H9zm1 5a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-1 0v-9a.5.5 0 0 1 .5-.5zm4 0a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-1 0v-9a.5.5 0 0 1 .5-.5z"/></svg>','User':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><circle cx="12" cy="7" r="4"/><path d="M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1H4z"/></svg>','Lock':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M12 2a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-1V7a5 5 0 0 0-5-5zm-3 5a3 3 0 0 1 6 0v3H9V7z"/></svg>','Info':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-.99 5.99a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM10.5 11h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-1 0V12h-1.5a.5.5 0 0 1 0-1z"/></svg>','Warning':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11.5 9a.5.5 0 0 1 1 0v4a.5.5 0 0 1-1 0V9zM12 17.5a.9.9 0 1 1 0-1.8.9.9 0 0 1 0 1.8z"/></svg>'};module.exports={Outline:_OutlineDefaults,Filled:_FilledVariants};},{}],250:[function(require,module,exports){const libPictProvider=require('pict-provider');/** @type {Record<string, any>} */const _DEFAULT_PROVIDER_CONFIGURATION={ProviderIdentifier:'Pict-Provider-DataBroker',AutoInitialize:true,AutoInitializeOrdinal:0};class PictDataBrokerProvider extends libPictProvider{constructor(pFable,pOptions,pServiceHash){let tmpOptions=Object.assign({},_DEFAULT_PROVIDER_CONFIGURATION,pOptions);super(pFable,tmpOptions,pServiceHash);/** @type {Record<string, any>} */this.options;/** @type {import('../Pict.js')} */this.pict;this.marshalDestination='AppData';}/**
10186
+ const _FilledVariants={'Folder':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M3 7.5V18a1.5 1.5 0 0 0 1.5 1.5h15A1.5 1.5 0 0 0 21 18V9a1.5 1.5 0 0 0-1.5-1.5h-7L10.5 6H4.5A1.5 1.5 0 0 0 3 7.5z"/></svg>','FolderOpen':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M3 8a1 1 0 0 1 1-1h6.5l2 2H20a1 1 0 0 1 1 1v8.5A1.5 1.5 0 0 1 19.5 20h-15A1.5 1.5 0 0 1 3 18.5V8z" fill-opacity="0.92"/></svg>','File':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-.5 7V3.5L19.5 9.5H14a.5.5 0 0 1-.5-.5z"/></svg>','FileText':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-.5 7V3.5L19.5 9.5H14a.5.5 0 0 1-.5-.5zM8 12.4a.6.6 0 0 1 .6-.6h6.8a.6.6 0 0 1 0 1.2H8.6a.6.6 0 0 1-.6-.6zm0 4a.6.6 0 0 1 .6-.6h4.8a.6.6 0 0 1 0 1.2H8.6a.6.6 0 0 1-.6-.6z"/></svg>','Spreadsheet':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M4 4h16a1.5 1.5 0 0 1 1.5 1.5v13A1.5 1.5 0 0 1 20 20H4a1.5 1.5 0 0 1-1.5-1.5v-13A1.5 1.5 0 0 1 4 4zm5 1.2H4.2v3.6H9V5.2zm10.8 0H10.2v3.6h9.6V5.2zM9 9.7H4.2v3.6H9V9.7zm10.8 0H10.2v3.6h9.6V9.7zM9 14.2H4.2v4.6H9v-4.6zm10.8 0H10.2v4.6h9.6v-4.6z"/></svg>','Home':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M11.3 2.2a1 1 0 0 1 1.4 0l9 7.5a1 1 0 0 1 .3.7V20a1 1 0 0 1-1 1h-5a.5.5 0 0 1-.5-.5V14a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 1-.5.5H4a1 1 0 0 1-1-1v-9.5a1 1 0 0 1 .3-.7l8-7.6z"/></svg>','Settings':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M19.43 12.98c.04-.32.07-.65.07-.98s-.03-.66-.07-.98l2.11-1.65a.5.5 0 0 0 .12-.64l-2-3.46a.5.5 0 0 0-.61-.22l-2.49 1a7.3 7.3 0 0 0-1.69-.98l-.38-2.65A.49.49 0 0 0 14 2h-4a.49.49 0 0 0-.49.42l-.38 2.65a7.6 7.6 0 0 0-1.69.98l-2.49-1a.51.51 0 0 0-.61.22l-2 3.46a.493.493 0 0 0 .12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65a.5.5 0 0 0-.12.64l2 3.46a.5.5 0 0 0 .61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65A.49.49 0 0 0 10 22h4a.49.49 0 0 0 .49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46a.5.5 0 0 0-.12-.64l-2.11-1.65zM12 15.5A3.5 3.5 0 1 1 12 8.5a3.5 3.5 0 0 1 0 7z"/></svg>','Trash':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M9 3a1 1 0 0 0-1 1v1H4.5a.5.5 0 0 0 0 1H5v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6h.5a.5.5 0 0 0 0-1H16V4a1 1 0 0 0-1-1H9zm1 5a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-1 0v-9a.5.5 0 0 1 .5-.5zm4 0a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-1 0v-9a.5.5 0 0 1 .5-.5z"/></svg>','User':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><circle cx="12" cy="7" r="4"/><path d="M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1H4z"/></svg>','Lock':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M12 2a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-1V7a5 5 0 0 0-5-5zm-3 5a3 3 0 0 1 6 0v3H9V7z"/></svg>','Info':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-.99 5.99a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM10.5 11h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-1 0V12h-1.5a.5.5 0 0 1 0-1z"/></svg>','Warning':'<svg viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11.5 9a.5.5 0 0 1 1 0v4a.5.5 0 0 1-1 0V9zM12 17.5a.9.9 0 1 1 0-1.8.9.9 0 0 1 0 1.8z"/></svg>'};module.exports={Outline:_OutlineDefaults,Filled:_FilledVariants};},{}],253:[function(require,module,exports){const libPictProvider=require('pict-provider');/** @type {Record<string, any>} */const _DEFAULT_PROVIDER_CONFIGURATION={ProviderIdentifier:'Pict-Provider-DataBroker',AutoInitialize:true,AutoInitializeOrdinal:0};class PictDataBrokerProvider extends libPictProvider{constructor(pFable,pOptions,pServiceHash){let tmpOptions=Object.assign({},_DEFAULT_PROVIDER_CONFIGURATION,pOptions);super(pFable,tmpOptions,pServiceHash);/** @type {Record<string, any>} */this.options;/** @type {import('../Pict.js')} */this.pict;this.marshalDestination='AppData';}/**
9987
10187
  * @param {string} pHash - The hash of the value to retrieve.
9988
10188
  */getValue(pHash){return this.getValueByHash(pHash);}/**
9989
10189
  * @param {string} pHash - The hash of the value to retrieve.
@@ -10002,7 +10202,7 @@ const _FilledVariants={'Folder':'<svg viewBox="0 0 24 24" fill="currentColor" st
10002
10202
  */get marshalDestinationObject(){const tmpMarshalDestinationAddress=this.marshalDestination;if(!tmpMarshalDestinationAddress){throw new Error("Attempt to access marshal destination object with no marshal destination set.");}//TODO: figure out a clean way to cache this object that sanely invalidates if the destination changes
10003
10203
  let tmpMarshalDestinationObject=this.pict.resolveStateFromAddress(tmpMarshalDestinationAddress);if(!tmpMarshalDestinationObject){this.log.error("Data Broker bootstrapping missing object at marshal destination address: ".concat(tmpMarshalDestinationAddress));this.pict.setStateValueAtAddress(tmpMarshalDestinationAddress,null,{});tmpMarshalDestinationObject=this.pict.resolveStateFromAddress(tmpMarshalDestinationAddress);if(!tmpMarshalDestinationObject){throw new Error("Attempt to access marshal destination object with no marshal destination set.");}}return tmpMarshalDestinationObject;}getMarshalDestinationObject(){return this.marshalDestinationObject;}/**
10004
10204
  * @param {string} [pOverrideMarshalDestination] - Optional override for the marshal destination address.
10005
- */resolveMarshalDestinationObject(pOverrideMarshalDestination){const tmpMarshalDestinationAddress=pOverrideMarshalDestination||this.marshalDestination;if(!tmpMarshalDestinationAddress){throw new Error("Attempt to resolve marshal destination object with no marshal destination set.");}let tmpMarshalDestinationObject;if(pOverrideMarshalDestination){tmpMarshalDestinationObject=this.pict.resolveStateFromAddress(pOverrideMarshalDestination);if(!tmpMarshalDestinationObject){this.log.error("Data Broker bootstrapping missing object at marshal destination address: ".concat(tmpMarshalDestinationAddress));this.pict.setStateValueAtAddress(tmpMarshalDestinationAddress,null,{});}}else{tmpMarshalDestinationObject=this.getMarshalDestinationObject();}return tmpMarshalDestinationObject;}}module.exports=PictDataBrokerProvider;module.exports.default_configuration=_DEFAULT_PROVIDER_CONFIGURATION;},{"pict-provider":148}],251:[function(require,module,exports){const libPictProvider=require('pict-provider');const libFilter=require('../filters/Filter.js');/** @type {Record<string, any>} */const _DEFAULT_PROVIDER_CONFIGURATION={ProviderIdentifier:'Pict-RecordSet-FilterManager',AutoInitialize:true,AutoInitializeOrdinal:0};class PictRecordSetFilterManager extends libPictProvider{constructor(pFable,pOptions,pServiceHash){let tmpOptions=Object.assign({},_DEFAULT_PROVIDER_CONFIGURATION,pOptions);super(pFable,tmpOptions,pServiceHash);/** @type {Record<string, any>} */this.options;/** @type {import('../Pict.js')} */this.pict;this.filters={};this.filterCriteria={};}/**
10205
+ */resolveMarshalDestinationObject(pOverrideMarshalDestination){const tmpMarshalDestinationAddress=pOverrideMarshalDestination||this.marshalDestination;if(!tmpMarshalDestinationAddress){throw new Error("Attempt to resolve marshal destination object with no marshal destination set.");}let tmpMarshalDestinationObject;if(pOverrideMarshalDestination){tmpMarshalDestinationObject=this.pict.resolveStateFromAddress(pOverrideMarshalDestination);if(!tmpMarshalDestinationObject){this.log.error("Data Broker bootstrapping missing object at marshal destination address: ".concat(tmpMarshalDestinationAddress));this.pict.setStateValueAtAddress(tmpMarshalDestinationAddress,null,{});}}else{tmpMarshalDestinationObject=this.getMarshalDestinationObject();}return tmpMarshalDestinationObject;}}module.exports=PictDataBrokerProvider;module.exports.default_configuration=_DEFAULT_PROVIDER_CONFIGURATION;},{"pict-provider":149}],254:[function(require,module,exports){const libPictProvider=require('pict-provider');const libFilter=require('../filters/Filter.js');/** @type {Record<string, any>} */const _DEFAULT_PROVIDER_CONFIGURATION={ProviderIdentifier:'Pict-RecordSet-FilterManager',AutoInitialize:true,AutoInitializeOrdinal:0};class PictRecordSetFilterManager extends libPictProvider{constructor(pFable,pOptions,pServiceHash){let tmpOptions=Object.assign({},_DEFAULT_PROVIDER_CONFIGURATION,pOptions);super(pFable,tmpOptions,pServiceHash);/** @type {Record<string, any>} */this.options;/** @type {import('../Pict.js')} */this.pict;this.filters={};this.filterCriteria={};}/**
10006
10206
  * @param {string} pFilterHash
10007
10207
  * @param {Record<string, any>} pFilterConfig
10008
10208
  *
@@ -10105,7 +10305,7 @@ tmpPageSize=10000;}/** @type {import('../filters/Filter.js').FilterState} */cons
10105
10305
  * @param {(pError?: Error) => void} fCallback
10106
10306
  *
10107
10307
  * @return {void}
10108
- */executeFilterCountUsingProvider(pEntityProvider,pFilterConfigurationAddress,pFilterExperienceAddress,fCallback){const tmpFilterConfiguration=this.pict.resolveStateFromAddress(pFilterConfigurationAddress);if(!Array.isArray(tmpFilterConfiguration)){return fCallback(new Error("Filter configuration at address ".concat(pFilterConfigurationAddress," is not an array.")));}const tmpFilterExperience=this.pict.resolveStateFromAddress(pFilterExperienceAddress);if(!tmpFilterExperience||typeof tmpFilterExperience!=='object'){return fCallback(new Error("Filter experience at address ".concat(pFilterExperienceAddress," is not an object.")));}return this.countRecordsByFilterUsingProivider(pEntityProvider,tmpFilterConfiguration,tmpFilterExperience,fCallback);}}module.exports=PictRecordSetFilterManager;module.exports.default_configuration=_DEFAULT_PROVIDER_CONFIGURATION;},{"../filters/Filter.js":244,"pict-provider":148}],252:[function(require,module,exports){const libPictProvider=require('pict-provider');const _BuiltInIcons=require('./Pict-Icons-Base.js');/**
10308
+ */executeFilterCountUsingProvider(pEntityProvider,pFilterConfigurationAddress,pFilterExperienceAddress,fCallback){const tmpFilterConfiguration=this.pict.resolveStateFromAddress(pFilterConfigurationAddress);if(!Array.isArray(tmpFilterConfiguration)){return fCallback(new Error("Filter configuration at address ".concat(pFilterConfigurationAddress," is not an array.")));}const tmpFilterExperience=this.pict.resolveStateFromAddress(pFilterExperienceAddress);if(!tmpFilterExperience||typeof tmpFilterExperience!=='object'){return fCallback(new Error("Filter experience at address ".concat(pFilterExperienceAddress," is not an object.")));}return this.countRecordsByFilterUsingProivider(pEntityProvider,tmpFilterConfiguration,tmpFilterExperience,fCallback);}}module.exports=PictRecordSetFilterManager;module.exports.default_configuration=_DEFAULT_PROVIDER_CONFIGURATION;},{"../filters/Filter.js":247,"pict-provider":149}],255:[function(require,module,exports){const libPictProvider=require('pict-provider');const _BuiltInIcons=require('./Pict-Icons-Base.js');/**
10109
10309
  * Pict-Provider-Icon — the central icon registry.
10110
10310
  *
10111
10311
  * Every glyph is an SVG string with `currentColor`-driven paint, so icons
@@ -10213,7 +10413,7 @@ this.log.warn('Pict-Provider-Icon: unknown icon ['+tmpName+']'+(tmpRequestedVari
10213
10413
  * @returns {string}
10214
10414
  */_wrap(pSvg,pOpts){let tmpOpts=pOpts||{};let tmpClass=this.options.DefaultIconClass;if(typeof tmpOpts.class==='string'&&tmpOpts.class.length>0){tmpClass+=' '+tmpOpts.class;}let tmpStyle='';if(typeof tmpOpts.size==='number'&&tmpOpts.size>0){tmpStyle=' style="font-size:'+tmpOpts.size+'px"';}else if(typeof tmpOpts.size==='string'&&tmpOpts.size.length>0){tmpStyle=' style="font-size:'+tmpOpts.size+'"';}// aria-hidden default true — most icons are decorative. Caller
10215
10415
  // passes ariaLabel to attach a label and flip aria-hidden off.
10216
- let tmpAria=' aria-hidden="true"';if(typeof tmpOpts.ariaLabel==='string'&&tmpOpts.ariaLabel.length>0){tmpAria=' role="img" aria-label="'+tmpOpts.ariaLabel.replace(/"/g,'&quot;')+'"';}return'<span class="'+tmpClass+'"'+tmpStyle+tmpAria+'>'+pSvg+'</span>';}}module.exports=PictProviderIcon;module.exports.default_configuration=_DefaultProviderConfiguration;},{"./Pict-Icons-Base.js":249,"pict-provider":148}],253:[function(require,module,exports){const libFableServiceProviderBase=require('fable-serviceproviderbase');/** @typedef {{ TimeStamp: Date, Category: string, Message: string }} TransactionLogEntry *//** @typedef {{ Timestamp: number, Data: any, Type: string }} TransactionQueueItem *//** @typedef {{ TransactionKey: string, Events: Record<string, Record<string, boolean>>, Log: Array<TransactionLogEntry>, TransactionQueue: Array<TransactionQueueItem> }} TransactionInfo *//*
10416
+ let tmpAria=' aria-hidden="true"';if(typeof tmpOpts.ariaLabel==='string'&&tmpOpts.ariaLabel.length>0){tmpAria=' role="img" aria-label="'+tmpOpts.ariaLabel.replace(/"/g,'&quot;')+'"';}return'<span class="'+tmpClass+'"'+tmpStyle+tmpAria+'>'+pSvg+'</span>';}}module.exports=PictProviderIcon;module.exports.default_configuration=_DefaultProviderConfiguration;},{"./Pict-Icons-Base.js":252,"pict-provider":149}],256:[function(require,module,exports){const libFableServiceProviderBase=require('fable-serviceproviderbase');/** @typedef {{ TimeStamp: Date, Category: string, Message: string }} TransactionLogEntry *//** @typedef {{ Timestamp: number, Data: any, Type: string }} TransactionQueueItem *//** @typedef {{ TransactionKey: string, Events: Record<string, Record<string, boolean>>, Log: Array<TransactionLogEntry>, TransactionQueue: Array<TransactionQueueItem> }} TransactionInfo *//*
10217
10417
  * Provides transaction tracking with keys and events, allowing us to block repeat attempts.
10218
10418
  * Once the shape is solidified, will move it back to the fable codebase
10219
10419
  */class TransactionTracking extends libFableServiceProviderBase{constructor(pFable,pOptions,pServiceHash){// Intersect default options, parent constructor, service information
@@ -10283,7 +10483,7 @@ return this.transactionMap[pKey];}this.transactionMap[pKey]={TransactionKey:pKey
10283
10483
  * @return {boolean} true if the event is new, false if it has already been registered
10284
10484
  */checkEvent(pKey,pEvent,pHash){let tmpHash=typeof pHash==='string'?pHash:'';let tmpTransaction=this.transactionMap[pKey];if(tmpTransaction==null){this.log.warn("TransactionTracking checkTransactionEvent event [".concat(pEvent,"]->[").concat(tmpHash,"] key [").concat(pKey,"] does not exist; auto creating..."));tmpTransaction=this.registerTransaction(pKey);}if(tmpTransaction.Events[pEvent]==null){tmpTransaction.Events[pEvent]={};}if(tmpHash in tmpTransaction.Events[pEvent]){//this.log.warn(`TransactionTracking checkTransactionEvent event [${pEvent}]->[${tmpHash}] key [${pKey}] firing a second time...`);
10285
10485
  this.logToTransaction(pKey,"Event [".concat(pEvent,"]->[").concat(tmpHash,"] already exists in transaction [").concat(pKey,"]"),'Event');return false;}else{//this.log.warn(`TransactionTracking checkTransactionEvent event [${pEvent}]->[${tmpHash}] key [${pKey}] firing a first time...`);
10286
- this.logToTransaction(pKey,"Event [".concat(pEvent,"]->[").concat(tmpHash,"] registered in transaction [").concat(pKey,"]"),'Event');tmpTransaction.Events[pEvent][tmpHash]=true;return true;}}}module.exports=TransactionTracking;/** @type {Record<string, any>} */TransactionTracking.default_configuration={};},{"fable-serviceproviderbase":59}],254:[function(require,module,exports){const libPictTemplate=require('pict-template');/**
10486
+ this.logToTransaction(pKey,"Event [".concat(pEvent,"]->[").concat(tmpHash,"] registered in transaction [").concat(pKey,"]"),'Event');tmpTransaction.Events[pEvent][tmpHash]=true;return true;}}}module.exports=TransactionTracking;/** @type {Record<string, any>} */TransactionTracking.default_configuration={};},{"fable-serviceproviderbase":59}],257:[function(require,module,exports){const libPictTemplate=require('pict-template');/**
10287
10487
  * Addressed Template expression.
10288
10488
  *
10289
10489
  * {[AppData.MyTemplate]}
@@ -10325,7 +10525,7 @@ this.logToTransaction(pKey,"Event [".concat(pEvent,"]->[").concat(tmpHash,"] reg
10325
10525
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
10326
10526
  *
10327
10527
  * @return {void}
10328
- */renderAsync(pTemplateHash,pRecord,fCallback,pContextArray,pScope,pState){let tmpAddress=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};let tmpCallback=typeof fCallback==='function'?fCallback:()=>{return'';};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fAddressedTemplateRenderAsync]::[".concat(tmpAddress,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>0){this.log.trace("PICT Template [fAddressedTemplateRenderAsync]::[".concat(tmpAddress,"]"));}if(tmpAddress.length<1){this.log.warn("Pict: Addressed Template Render: No address provided in expression [{[".concat(pTemplateHash,"]}]"));return tmpCallback(null,'');}let tmpTemplate=this.resolveStateFromAddress(tmpAddress,tmpRecord,pContextArray,null,pScope,pState);if(tmpTemplate==null){this.log.warn("Pict: Addressed Template Render: Address [".concat(tmpAddress,"] did not resolve for expression [{[").concat(pTemplateHash,"]}]"));return tmpCallback(null,'');}if(typeof tmpTemplate!=='string'){this.log.warn("Pict: Addressed Template Render: Address [".concat(tmpAddress,"] resolved to a non-string (").concat(typeof tmpTemplate,") for expression [{[").concat(pTemplateHash,"]}]"));return tmpCallback(null,'');}if(tmpTemplate.length<1){return tmpCallback(null,'');}this.pict.parseTemplate(tmpTemplate,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderAddressedTemplate;module.exports.template_hash='AddressedTemplate';},{"pict-template":229}],255:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderData extends libPictTemplate{/**
10528
+ */renderAsync(pTemplateHash,pRecord,fCallback,pContextArray,pScope,pState){let tmpAddress=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};let tmpCallback=typeof fCallback==='function'?fCallback:()=>{return'';};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fAddressedTemplateRenderAsync]::[".concat(tmpAddress,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>0){this.log.trace("PICT Template [fAddressedTemplateRenderAsync]::[".concat(tmpAddress,"]"));}if(tmpAddress.length<1){this.log.warn("Pict: Addressed Template Render: No address provided in expression [{[".concat(pTemplateHash,"]}]"));return tmpCallback(null,'');}let tmpTemplate=this.resolveStateFromAddress(tmpAddress,tmpRecord,pContextArray,null,pScope,pState);if(tmpTemplate==null){this.log.warn("Pict: Addressed Template Render: Address [".concat(tmpAddress,"] did not resolve for expression [{[").concat(pTemplateHash,"]}]"));return tmpCallback(null,'');}if(typeof tmpTemplate!=='string'){this.log.warn("Pict: Addressed Template Render: Address [".concat(tmpAddress,"] resolved to a non-string (").concat(typeof tmpTemplate,") for expression [{[").concat(pTemplateHash,"]}]"));return tmpCallback(null,'');}if(tmpTemplate.length<1){return tmpCallback(null,'');}this.pict.parseTemplate(tmpTemplate,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderAddressedTemplate;module.exports.template_hash='AddressedTemplate';},{"pict-template":232}],258:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderData extends libPictTemplate{/**
10329
10529
  * @param {Object} pFable - The Fable Framework instance
10330
10530
  * @param {Object} pOptions - The options for the service
10331
10531
  * @param {String} pServiceHash - The hash of the service
@@ -10339,7 +10539,7 @@ this.logToTransaction(pKey,"Event [".concat(pEvent,"]->[").concat(tmpHash,"] reg
10339
10539
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
10340
10540
  *
10341
10541
  * @return {string} The rendered template
10342
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"]"));}let tmpDefaultValue='';if(tmpHash.indexOf(':')>-1){tmpDefaultValue=tmpHash.split(':')[1];tmpHash=tmpHash.split(':')[0];}let tmpValue='';if(tmpHash!=null){tmpValue=this.resolveStateFromAddress(tmpHash,tmpRecord,pContextArray,null,pScope,pState);}if(tmpValue==null||tmpValue=='undefined'||typeof tmpValue=='undefined'||tmpValue===''){return tmpDefaultValue;}return tmpValue;}}module.exports=PictTemplateProviderData;},{"pict-template":229}],256:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDataValueByKey extends libPictTemplate{/**
10542
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"]"));}let tmpDefaultValue='';if(tmpHash.indexOf(':')>-1){tmpDefaultValue=tmpHash.split(':')[1];tmpHash=tmpHash.split(':')[0];}let tmpValue='';if(tmpHash!=null){tmpValue=this.resolveStateFromAddress(tmpHash,tmpRecord,pContextArray,null,pScope,pState);}if(tmpValue==null||tmpValue=='undefined'||typeof tmpValue=='undefined'||tmpValue===''){return tmpDefaultValue;}return tmpValue;}}module.exports=PictTemplateProviderData;},{"pict-template":232}],259:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDataValueByKey extends libPictTemplate{/**
10343
10543
  * @param {Object} pFable - The Fable Framework instance
10344
10544
  * @param {Object} pOptions - The options for the service
10345
10545
  * @param {String} pServiceHash - The hash of the service
@@ -10353,7 +10553,7 @@ this.logToTransaction(pKey,"Event [".concat(pEvent,"]->[").concat(tmpHash,"] reg
10353
10553
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
10354
10554
  *
10355
10555
  * @return {string} The rendered template
10356
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"]"));}let tmpHashArray=tmpHash.split(':');if(tmpHashArray.length<2){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] failed because there were not two stanzas in the expression [").concat(pTemplateHash,"]"));return'';}let tmpDefaultValue='';if(tmpHashArray.length>2){tmpDefaultValue=tmpHashArray[2];}let tmpValueObject=this.resolveStateFromAddress(tmpHashArray[0],tmpRecord,pContextArray,null,pScope,pState);let tmpValueAddress=this.resolveStateFromAddress(tmpHashArray[1],tmpRecord,pContextArray,null,pScope,pState);let tmpValue=this.pict.manifest.getValueByHash(tmpValueObject,tmpValueAddress);if(tmpValue==null||tmpValue=='undefined'||typeof tmpValue=='undefined'){return tmpDefaultValue;}return tmpValue;}}module.exports=PictTemplateProviderDataValueByKey;},{"pict-template":229}],257:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderData extends libPictTemplate{/**
10556
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"]"));}let tmpHashArray=tmpHash.split(':');if(tmpHashArray.length<2){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] failed because there were not two stanzas in the expression [").concat(pTemplateHash,"]"));return'';}let tmpDefaultValue='';if(tmpHashArray.length>2){tmpDefaultValue=tmpHashArray[2];}let tmpValueObject=this.resolveStateFromAddress(tmpHashArray[0],tmpRecord,pContextArray,null,pScope,pState);let tmpValueAddress=this.resolveStateFromAddress(tmpHashArray[1],tmpRecord,pContextArray,null,pScope,pState);let tmpValue=this.pict.manifest.getValueByHash(tmpValueObject,tmpValueAddress);if(tmpValue==null||tmpValue=='undefined'||typeof tmpValue=='undefined'){return tmpDefaultValue;}return tmpValue;}}module.exports=PictTemplateProviderDataValueByKey;},{"pict-template":232}],260:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderData extends libPictTemplate{/**
10357
10557
  * @param {Object} pFable - The Fable Framework instance
10358
10558
  * @param {Object} pOptions - The options for the service
10359
10559
  * @param {String} pServiceHash - The hash of the service
@@ -10381,7 +10581,7 @@ return tmpAbsoluteFallbackValue;}/**
10381
10581
  *
10382
10582
  * @return {void} The result is passed to the callback function
10383
10583
  */renderAsync(pTemplateHash,pRecord,fCallback,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};let tmpCallback=typeof fCallback==='function'?fCallback:()=>{return'';};if(this.pict.LogNoisiness>4){this.log.trace("PICT DataWithAbsoluteFallback [fDataRender]::[".concat(tmpHash,"] with tmpRecord:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT DataWithAbsoluteFallback [fDataRender]::[".concat(tmpHash,"]"));}let tmpAbsoluteFallbackValue='';if(tmpHash.indexOf(':')>-1){tmpAbsoluteFallbackValue=tmpHash.split(':')[1];tmpHash=tmpHash.split(':')[0];}let tmpValue='';if(tmpHash!=null){tmpValue=this.resolveStateFromAddress(tmpHash,tmpRecord,pContextArray,null,pScope,pState);if(tmpValue&&tmpValue!=='undefined'){if(this.pict.LogNoisiness>3){this.log.trace("PICT DataWithAbsoluteFallback [fDataRender]::[".concat(tmpHash,"] - Found value: ").concat(tmpValue));}return tmpCallback(null,tmpValue);}}// If the value is not found or is undefined, use the fallback value
10384
- return tmpCallback(null,tmpAbsoluteFallbackValue);}}module.exports=PictTemplateProviderData;},{"pict-template":229}],258:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderData extends libPictTemplate{/**
10584
+ return tmpCallback(null,tmpAbsoluteFallbackValue);}}module.exports=PictTemplateProviderData;},{"pict-template":232}],261:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderData extends libPictTemplate{/**
10385
10585
  * @param {Object} pFable - The Fable Framework instance
10386
10586
  * @param {Object} pOptions - The options for the service
10387
10587
  * @param {String} pServiceHash - The hash of the service
@@ -10411,7 +10611,7 @@ return'';}if(this.pict.LogNoisiness>3){this.log.trace("PICT DataWithTemplateFall
10411
10611
  * @return {void} The result is passed to the callback function
10412
10612
  */renderAsync(pTemplateHash,pRecord,fCallback,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};let tmpCallback=typeof fCallback==='function'?fCallback:()=>{return'';};if(this.pict.LogNoisiness>4){this.log.trace("PICT DataWithTemplateFallback [fDataRender]::[".concat(tmpHash,"] with tmpRecord:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT DataWithTemplateFallback [fDataRender]::[".concat(tmpHash,"]"));}let tmpTemplateFallbackAddress='';if(tmpHash.indexOf(':')>-1){tmpTemplateFallbackAddress=tmpHash.split(':')[1];tmpHash=tmpHash.split(':')[0];}let tmpValue='';if(tmpHash!=null){tmpValue=this.resolveStateFromAddress(tmpHash,tmpRecord,pContextArray,null,pScope,pState);if(tmpValue&&tmpValue!=='undefined'){if(this.pict.LogNoisiness>3){this.log.trace("PICT DataWithTemplateFallback [fDataRender]::[".concat(tmpHash,"] - Found value: ").concat(tmpValue));}return tmpCallback(null,tmpValue);}}// If the value is not found or is undefined, try to use the fallback template
10413
10613
  this.pict.parseTemplateByHash(tmpTemplateFallbackAddress,tmpRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}if(pValue==null||pValue===''){this.log.warn("PICT DataWithTemplateFallback [fDataRender]::[".concat(tmpHash,"] - No fallback template found at address: ").concat(tmpTemplateFallbackAddress));// If no fallback template is found, return an empty string
10414
- return tmpCallback(null,'');}if(this.pict.LogNoisiness>3){this.log.trace("PICT DataWithTemplateFallback [fDataRender]::[".concat(tmpHash,"] - Using fallback template from address: ").concat(tmpTemplateFallbackAddress));}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderData;},{"pict-template":229}],259:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderEntity extends libPictTemplate{/**
10614
+ return tmpCallback(null,'');}if(this.pict.LogNoisiness>3){this.log.trace("PICT DataWithTemplateFallback [fDataRender]::[".concat(tmpHash,"] - Using fallback template from address: ").concat(tmpTemplateFallbackAddress));}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderData;},{"pict-template":232}],262:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderEntity extends libPictTemplate{/**
10415
10615
  * @param {Object} pFable - The Fable Framework instance
10416
10616
  * @param {Object} pOptions - The options for the service
10417
10617
  * @param {String} pServiceHash - The hash of the service
@@ -10442,7 +10642,7 @@ let tmpAddressParts=tmpHash.split('^');if(tmpAddressParts.length<2){this.log.war
10442
10642
  tmpEntityID=this.resolveStateFromAddress(String(tmpEntityID),tmpData,pContextArray,null,pScope,pState);}// No Entity or EntityID
10443
10643
  if(!tmpEntity||!tmpEntityID){this.log.warn("Pict: Entity Render: Entity or entity ID not resolved for [".concat(tmpHash,"] Entity: ").concat(tmpEntity," ID: ").concat(tmpEntityID));return tmpCallback(null,'');}if(this.pict.LogNoisiness>3){this.log.trace("Pict: Entity Render: Entity [".concat(tmpEntity,"] with ID [").concat(tmpEntityID,"] as template [").concat(tmpEntityTemplate,"] from [").concat(tmpHash,"]"));}// Now try to get the entity
10444
10644
  this.pict.EntityProvider.getEntity(tmpEntity,tmpEntityID,function(pError,pRecord){if(pError){this.log.error("Pict: Entity Render: Error getting entity [".concat(tmpEntity,"] with ID [").concat(tmpEntityID,"] for [").concat(tmpHash,"]: ").concat(pError),pError);return tmpCallback(pError,'');}// Now render the template
10445
- if(tmpEntityTemplate){this.pict.parseTemplateByHash(tmpEntityTemplate,pRecord,tmpCallback,pContextArray,pScope,pState);}else{tmpCallback(null,'');}}.bind(this));}}module.exports=PictTemplateProviderEntity;},{"pict-template":229}],260:[function(require,module,exports){const libPictTemplate=require('pict-template');/**
10645
+ if(tmpEntityTemplate){this.pict.parseTemplateByHash(tmpEntityTemplate,pRecord,tmpCallback,pContextArray,pScope,pState);}else{tmpCallback(null,'');}}.bind(this));}}module.exports=PictTemplateProviderEntity;},{"pict-template":232}],263:[function(require,module,exports){const libPictTemplate=require('pict-template');/**
10446
10646
  * Function template expression.
10447
10647
  *
10448
10648
  * {~Function:Pict.providers.SomeProvider.makeThing:Record.X:Record.Y~}
@@ -10478,7 +10678,7 @@ if(tmpEntityTemplate){this.pict.parseTemplateByHash(tmpEntityTemplate,pRecord,tm
10478
10678
  *
10479
10679
  * @return {string} The function's return value, stringified by the template engine; '' if the function is missing or throws.
10480
10680
  */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fFunctionRender]::[".concat(tmpHash,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>0){this.log.trace("PICT Template [fFunctionRender]::[".concat(tmpHash,"]"));}let tmpParts=tmpHash.split(':');let tmpFunctionAddress=tmpParts.length>0?tmpParts[0].trim():'';if(tmpFunctionAddress.length<1){this.log.warn("Pict: Function Render: No function address provided in template [{~Function:".concat(tmpHash,"~}]"));return'';}let tmpFunction=this.resolveStateFromAddress(tmpFunctionAddress,tmpRecord,pContextArray,null,pScope,pState);if(typeof tmpFunction!=='function'){this.log.warn("Pict: Function Render: Function not found at address [".concat(tmpFunctionAddress,"] for template [{~Function:").concat(tmpHash,"~}]"));return'';}// Resolve `this` to the function's parent so instance methods bind naturally.
10481
- let tmpThis=null;let tmpLastDot=tmpFunctionAddress.lastIndexOf('.');if(tmpLastDot>0){let tmpParentAddress=tmpFunctionAddress.substring(0,tmpLastDot);tmpThis=this.resolveStateFromAddress(tmpParentAddress,tmpRecord,pContextArray,null,pScope,pState);}let tmpArguments=[];for(let i=1;i<tmpParts.length;i++){tmpArguments.push(this.resolveStateFromAddress(tmpParts[i],tmpRecord,pContextArray,null,pScope,pState));}try{let tmpResult=tmpFunction.apply(tmpThis,tmpArguments);if(tmpResult==null){return'';}return tmpResult;}catch(pError){this.log.warn("Pict: Function Render: Error invoking function at [".concat(tmpFunctionAddress,"] for template [{~Function:").concat(tmpHash,"~}]: ").concat(pError.message));return'';}}}module.exports=PictTemplateProviderFunction;module.exports.template_hash='Function';},{"pict-template":229}],261:[function(require,module,exports){const libPictTemplate=require('pict-template');/**
10681
+ let tmpThis=null;let tmpLastDot=tmpFunctionAddress.lastIndexOf('.');if(tmpLastDot>0){let tmpParentAddress=tmpFunctionAddress.substring(0,tmpLastDot);tmpThis=this.resolveStateFromAddress(tmpParentAddress,tmpRecord,pContextArray,null,pScope,pState);}let tmpArguments=[];for(let i=1;i<tmpParts.length;i++){tmpArguments.push(this.resolveStateFromAddress(tmpParts[i],tmpRecord,pContextArray,null,pScope,pState));}try{let tmpResult=tmpFunction.apply(tmpThis,tmpArguments);if(tmpResult==null){return'';}return tmpResult;}catch(pError){this.log.warn("Pict: Function Render: Error invoking function at [".concat(tmpFunctionAddress,"] for template [{~Function:").concat(tmpHash,"~}]: ").concat(pError.message));return'';}}}module.exports=PictTemplateProviderFunction;module.exports.template_hash='Function';},{"pict-template":232}],264:[function(require,module,exports){const libPictTemplate=require('pict-template');/**
10482
10682
  * Icon template tag — emits a themable SVG icon by PascalCase name.
10483
10683
  *
10484
10684
  * {~Icon:Home~} → default variant for 'Home'
@@ -10507,7 +10707,7 @@ let tmpThis=null;let tmpLastDot=tmpFunctionAddress.lastIndexOf('.');if(tmpLastDo
10507
10707
  */render(pTemplateHash){let tmpBody=(pTemplateHash||'').trim();if(tmpBody.length<1){return'';}let tmpName=tmpBody;let tmpVariant=null;let tmpColon=tmpBody.indexOf(':');if(tmpColon>-1){tmpName=tmpBody.slice(0,tmpColon).trim();tmpVariant=tmpBody.slice(tmpColon+1).trim();}let tmpProvider=this.pict&&this.pict.providers&&this.pict.providers.Icon;if(!tmpProvider||typeof tmpProvider.get!=='function'){// Provider missing — should never happen in a normally-booted
10508
10708
  // Pict app, but degrade silently rather than emit something
10509
10709
  // that looks like a template tag.
10510
- return'';}let tmpOpts=tmpVariant?{variant:tmpVariant}:undefined;return tmpProvider.get(tmpName,tmpOpts);}}module.exports=PictTemplateProviderIcon;},{"pict-template":229}],262:[function(require,module,exports){const libPictTemplate=require('pict-template');/**
10710
+ return'';}let tmpOpts=tmpVariant?{variant:tmpVariant}:undefined;return tmpProvider.get(tmpName,tmpOpts);}}module.exports=PictTemplateProviderIcon;},{"pict-template":232}],265:[function(require,module,exports){const libPictTemplate=require('pict-template');/**
10511
10711
  * Inline Template expression.
10512
10712
  *
10513
10713
  * Captures its raw contents (verbatim, including any other pict template
@@ -10546,7 +10746,7 @@ return'';}let tmpOpts=tmpVariant?{variant:tmpVariant}:undefined;return tmpProvid
10546
10746
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
10547
10747
  *
10548
10748
  * @return {void}
10549
- */renderAsync(pTemplateBody,pRecord,fCallback,pContextArray,pScope,pState){let tmpBody=typeof pTemplateBody==='string'?pTemplateBody:'';let tmpCallback=typeof fCallback==='function'?fCallback:()=>{return'';};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fInlineTemplateRenderAsync]::[".concat(tmpBody,"] with tmpData:"),pRecord);}else if(this.pict.LogNoisiness>0){this.log.trace("PICT Template [fInlineTemplateRenderAsync]::[".concat(tmpBody,"]"));}if(tmpBody.length<1){return tmpCallback(null,'');}this.pict.parseTemplate(tmpBody,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderInlineTemplate;module.exports.template_hash='InlineTemplate';},{"pict-template":229}],263:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderSelf extends libPictTemplate{/**
10749
+ */renderAsync(pTemplateBody,pRecord,fCallback,pContextArray,pScope,pState){let tmpBody=typeof pTemplateBody==='string'?pTemplateBody:'';let tmpCallback=typeof fCallback==='function'?fCallback:()=>{return'';};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fInlineTemplateRenderAsync]::[".concat(tmpBody,"] with tmpData:"),pRecord);}else if(this.pict.LogNoisiness>0){this.log.trace("PICT Template [fInlineTemplateRenderAsync]::[".concat(tmpBody,"]"));}if(tmpBody.length<1){return tmpCallback(null,'');}this.pict.parseTemplate(tmpBody,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderInlineTemplate;module.exports.template_hash='InlineTemplate';},{"pict-template":232}],266:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderSelf extends libPictTemplate{/**
10550
10750
  * @param {Object} pFable - The Fable Framework instance
10551
10751
  * @param {Object} pOptions - The options for the service
10552
10752
  * @param {String} pServiceHash - The hash of the service
@@ -10560,7 +10760,7 @@ return'';}let tmpOpts=tmpVariant?{variant:tmpVariant}:undefined;return tmpProvid
10560
10760
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
10561
10761
  *
10562
10762
  * @return {string} The rendered template
10563
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){return this.pict.browserAddress;}}module.exports=PictTemplateProviderSelf;},{"pict-template":229}],264:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderSolve extends libPictTemplate{/**
10763
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){return this.pict.browserAddress;}}module.exports=PictTemplateProviderSelf;},{"pict-template":232}],267:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderSolve extends libPictTemplate{/**
10564
10764
  * @param {Object} pFable - The Fable Framework instance
10565
10765
  * @param {Object} pOptions - The options for the service
10566
10766
  * @param {String} pServiceHash - The hash of the service
@@ -10575,7 +10775,7 @@ return'';}let tmpOpts=tmpVariant?{variant:tmpVariant}:undefined;return tmpProvid
10575
10775
  *
10576
10776
  * @return {string} The rendered template
10577
10777
  */render(pSolveParams,pRecord,pContextArray,pScope,pState){// {~S:ROUND(250*0.4129+Width,3):AppData.HomeworkRectangleSize:AppData.HomeworkManifest~}
10578
- const[tmpEquation,tmpRecordAddress,tmpManifestAddress]=pSolveParams.trim().split(':',3);const tmpContextualRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Solve [fTemplateRender]::[".concat(pSolveParams,"] with tmpData:"),tmpContextualRecord);}else if(this.pict.LogNoisiness>0){this.log.trace("PICT Solve [fTemplateRender]::[".concat(pSolveParams,"]"));}if(!tmpEquation){if(this.pict.LogNoisiness>2){this.log.warn("Pict: Solve: Equation not found for [".concat(tmpEquation,"]"));}return'';}const tmpRecord=tmpRecordAddress&&this.pict.resolveStateFromAddress(tmpRecordAddress,tmpContextualRecord,pContextArray,null,pScope,pState)||tmpContextualRecord;const tmpManifest=tmpManifestAddress&&this.pict.resolveStateFromAddress(tmpManifestAddress,tmpContextualRecord,pContextArray,null,pScope,pState)||this.pict.manifest;const expressionParser=this.fable.instantiateServiceProviderIfNotExists('ExpressionParser');const tmpResultObject={};return expressionParser.solve(tmpEquation,tmpRecord,tmpResultObject,tmpManifest,tmpRecord);}}module.exports=PictTemplateProviderSolve;},{"pict-template":229}],265:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderSolveByReference extends libPictTemplate{/**
10778
+ const[tmpEquation,tmpRecordAddress,tmpManifestAddress]=pSolveParams.trim().split(':',3);const tmpContextualRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Solve [fTemplateRender]::[".concat(pSolveParams,"] with tmpData:"),tmpContextualRecord);}else if(this.pict.LogNoisiness>0){this.log.trace("PICT Solve [fTemplateRender]::[".concat(pSolveParams,"]"));}if(!tmpEquation){if(this.pict.LogNoisiness>2){this.log.warn("Pict: Solve: Equation not found for [".concat(tmpEquation,"]"));}return'';}const tmpRecord=tmpRecordAddress&&this.pict.resolveStateFromAddress(tmpRecordAddress,tmpContextualRecord,pContextArray,null,pScope,pState)||tmpContextualRecord;const tmpManifest=tmpManifestAddress&&this.pict.resolveStateFromAddress(tmpManifestAddress,tmpContextualRecord,pContextArray,null,pScope,pState)||this.pict.manifest;const expressionParser=this.fable.instantiateServiceProviderIfNotExists('ExpressionParser');const tmpResultObject={};return expressionParser.solve(tmpEquation,tmpRecord,tmpResultObject,tmpManifest,tmpRecord);}}module.exports=PictTemplateProviderSolve;},{"pict-template":232}],268:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderSolveByReference extends libPictTemplate{/**
10579
10779
  * @param {Object} pFable - The Fable Framework instance
10580
10780
  * @param {Object} pOptions - The options for the service
10581
10781
  * @param {String} pServiceHash - The hash of the service
@@ -10590,7 +10790,7 @@ const[tmpEquation,tmpRecordAddress,tmpManifestAddress]=pSolveParams.trim().split
10590
10790
  *
10591
10791
  * @return {string} The rendered template
10592
10792
  */render(pSolveParams,pRecord,pContextArray,pScope,pState){// {~SBR:AppData.Equation:AppData.HomeworkRectangleSize:AppData.HomeworkManifest~}
10593
- const[tmpEquationAddress,tmpRecordAddress,tmpManifestAddress]=pSolveParams.trim().split(':',3);const tmpContextualRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT SolveByReference [fTemplateRender]::[".concat(pSolveParams,"] with tmpData:"),tmpContextualRecord);}else if(this.pict.LogNoisiness>0){this.log.trace("PICT SolveByReference [fTemplateRender]::[".concat(pSolveParams,"]"));}const tmpEquation=this.pict.resolveStateFromAddress(tmpEquationAddress,tmpContextualRecord,pContextArray,null,pScope,pState);if(!tmpEquation){if(this.pict.LogNoisiness>2){this.log.warn("Pict: SolveByReference: Equation not found for [".concat(tmpEquationAddress,"]"));}return'';}const tmpRecord=tmpRecordAddress&&this.pict.resolveStateFromAddress(tmpRecordAddress,tmpContextualRecord,pContextArray,null,pScope,pState)||tmpContextualRecord;const tmpManifest=tmpManifestAddress&&this.pict.resolveStateFromAddress(tmpManifestAddress,tmpContextualRecord,pContextArray,null,pScope,pState)||this.pict.manifest;const expressionParser=this.fable.instantiateServiceProviderIfNotExists('ExpressionParser');const tmpResultObject={};return expressionParser.solve(tmpEquation,tmpRecord,tmpResultObject,tmpManifest,tmpRecord);}}module.exports=PictTemplateProviderSolveByReference;},{"pict-template":229}],266:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplate extends libPictTemplate{/**
10793
+ const[tmpEquationAddress,tmpRecordAddress,tmpManifestAddress]=pSolveParams.trim().split(':',3);const tmpContextualRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT SolveByReference [fTemplateRender]::[".concat(pSolveParams,"] with tmpData:"),tmpContextualRecord);}else if(this.pict.LogNoisiness>0){this.log.trace("PICT SolveByReference [fTemplateRender]::[".concat(pSolveParams,"]"));}const tmpEquation=this.pict.resolveStateFromAddress(tmpEquationAddress,tmpContextualRecord,pContextArray,null,pScope,pState);if(!tmpEquation){if(this.pict.LogNoisiness>2){this.log.warn("Pict: SolveByReference: Equation not found for [".concat(tmpEquationAddress,"]"));}return'';}const tmpRecord=tmpRecordAddress&&this.pict.resolveStateFromAddress(tmpRecordAddress,tmpContextualRecord,pContextArray,null,pScope,pState)||tmpContextualRecord;const tmpManifest=tmpManifestAddress&&this.pict.resolveStateFromAddress(tmpManifestAddress,tmpContextualRecord,pContextArray,null,pScope,pState)||this.pict.manifest;const expressionParser=this.fable.instantiateServiceProviderIfNotExists('ExpressionParser');const tmpResultObject={};return expressionParser.solve(tmpEquation,tmpRecord,tmpResultObject,tmpManifest,tmpRecord);}}module.exports=PictTemplateProviderSolveByReference;},{"pict-template":232}],269:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplate extends libPictTemplate{/**
10594
10794
  * @param {Object} pFable - The Fable Framework instance
10595
10795
  * @param {Object} pOptions - The options for the service
10596
10796
  * @param {String} pServiceHash - The hash of the service
@@ -10622,7 +10822,7 @@ return this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,null,pContextArray,
10622
10822
  let tmpHashTemplateSeparator=tmpHash.indexOf(':');tmpTemplateHash=tmpHash.substring(0,tmpHashTemplateSeparator);if(tmpHashTemplateSeparator>-1){tmpAddressOfData=tmpHash.substring(tmpHashTemplateSeparator+1);}else{tmpTemplateHash=tmpHash;}// No template hash
10623
10823
  if(!tmpTemplateHash){this.log.warn("Pict: Template Render Async: TemplateHash not resolved for [".concat(tmpHash,"]"));return fCallback(null,'');}if(!tmpAddressOfData){// No address was provided, just render the template with what this template has.
10624
10824
  // The async portion of this is a mind bender because of how entry can happen dynamically from templates
10625
- this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateHash,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplate;},{"pict-template":229}],267:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateByDataAddress extends libPictTemplate{/**
10825
+ this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateHash,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplate;},{"pict-template":232}],270:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateByDataAddress extends libPictTemplate{/**
10626
10826
  * @param {Object} pFable - The Fable Framework instance
10627
10827
  * @param {Object} pOptions - The options for the service
10628
10828
  * @param {String} pServiceHash - The hash of the service
@@ -10654,7 +10854,7 @@ return this.pict.parseTemplate(tmpTemplate,pRecord,null,pContextArray,pScope,pSt
10654
10854
  let tmpHashTemplateSeparator=tmpDataAddress.indexOf(':');tmpTemplateDataAddress=tmpDataAddress.substring(0,tmpHashTemplateSeparator);if(tmpHashTemplateSeparator>-1){tmpAddressOfData=tmpDataAddress.substring(tmpHashTemplateSeparator+1);}else{tmpTemplateDataAddress=tmpDataAddress;}// No template hash
10655
10855
  if(!tmpTemplateDataAddress){this.log.warn("Pict: Template Render Async: TemplateHash not resolved for [".concat(tmpDataAddress,"]"));return tmpCallback(null,'');}let tmpTemplate=this.pict.resolveStateFromAddress(tmpTemplateDataAddress,pRecord,pContextArray,null,pScope,pState)||'';if(!tmpTemplate){if(this.pict.LogNoisiness>2){this.log.warn("Pict: Template Render: Template not found for [".concat(tmpTemplateDataAddress,"]"));}tmpTemplate='';}if(!tmpAddressOfData){// No address was provided, just render the template with what this template has.
10656
10856
  // The async portion of this is a mind bender because of how entry can happen dynamically from templates
10657
- this.pict.parseTemplate(tmpTemplate,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplate(tmpTemplate,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateByDataAddress;},{"pict-template":229}],268:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplate extends libPictTemplate{/**
10857
+ this.pict.parseTemplate(tmpTemplate,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplate(tmpTemplate,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateByDataAddress;},{"pict-template":232}],271:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplate extends libPictTemplate{/**
10658
10858
  * @param {Object} pFable - The Fable Framework instance
10659
10859
  * @param {Object} pOptions - The options for the service
10660
10860
  * @param {String} pServiceHash - The hash of the service
@@ -10690,7 +10890,7 @@ if(!tmpTemplateHashReferenceLocation){this.log.warn("Pict: Template Render Async
10690
10890
  let tmpTemplateHash=this.resolveStateFromAddress(tmpTemplateHashReferenceLocation,pRecord,pContextArray,null,pScope,pState);// No template hash
10691
10891
  if(!tmpTemplateHash){this.log.warn("Pict: Template Render Async: TemplateHash not resolved for [".concat(tmpHash,"]"));return fCallback(null,'');}if(!tmpAddressOfData){// No address was provided, just render the template with what this template has.
10692
10892
  // The async portion of this is a mind bender because of how entry can happen dynamically from templates
10693
- this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateHash,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplate;},{"pict-template":229}],269:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateByTypes extends libPictTemplate{/**
10893
+ this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateHash,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplate;},{"pict-template":232}],272:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateByTypes extends libPictTemplate{/**
10694
10894
  * @param {Object} pFable - The Fable Framework instance
10695
10895
  * @param {Object} pOptions - The options for the service
10696
10896
  * @param {String} pServiceHash - The hash of the service
@@ -10723,7 +10923,7 @@ return this.pict.parseTemplateByHash(tmpTemplateHash,tmpRecord,null,pContextArra
10723
10923
  let tmpTemplateHashes=tmpHash.trim().split(':');if(tmpTemplateHashes.length<3){return fCallback(null,'');}tmpAddressToTest=tmpTemplateHashes[0];tmpDataTypesToTest=tmpTemplateHashes[1].split(',');tmpTemplateHash=tmpTemplateHashes[2];if(tmpTemplateHashes.length>3){tmpAddressOfData=tmpTemplateHashes[3];}if(tmpTemplateHashes.length>4){tmpFallbackTemplate=tmpTemplateHashes[4];}// No template hash
10724
10924
  if(!tmpTemplateHash){return fCallback(null,'');}let tmpRecord=pRecord;if(tmpAddressOfData){tmpRecord=this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState);}const tmpValueAtAddress=this.resolveStateFromAddress(tmpAddressToTest,tmpData,pContextArray,null,pScope,pState);/** @type {string} */let tmpTypeOfDataAtAddress=typeof tmpValueAtAddress;if(tmpTypeOfDataAtAddress=='object'&&Array.isArray(tmpValueAtAddress)){tmpTypeOfDataAtAddress='array';}if(tmpDataTypesToTest.indexOf(tmpTypeOfDataAtAddress)===-1){// Type not found, use the fallback template if we have one.
10725
10925
  if(tmpFallbackTemplate){tmpTemplateHash=tmpFallbackTemplate;}else{return fCallback(null,'');}}// No address was provided, just render the template with what this template has.
10726
- this.pict.parseTemplateByHash(tmpTemplateHash,tmpRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderTemplateByTypes;},{"pict-template":229}],270:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateFromAddress extends libPictTemplate{/**
10926
+ this.pict.parseTemplateByHash(tmpTemplateHash,tmpRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderTemplateByTypes;},{"pict-template":232}],273:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateFromAddress extends libPictTemplate{/**
10727
10927
  * @param {Object} pFable - The Fable Framework instance
10728
10928
  * @param {Object} pOptions - The options for the service
10729
10929
  * @param {String} pServiceHash - The hash of the service
@@ -10759,7 +10959,7 @@ if(!tmpTemplateContentAddress){this.log.warn("Pict: Template Render Async: Templ
10759
10959
  let tmpTemplateContent=this.resolveStateFromAddress(tmpTemplateContentAddress,pRecord,pContextArray,null,pScope,pState);// No template hash
10760
10960
  if(!tmpTemplateContent){this.log.warn("Pict: Template Render Async: TemplateHash not resolved for [".concat(tmpHash,"]"));return fCallback(null,'');}if(!tmpAddressOfData){// No address was provided, just render the template with what this template has.
10761
10961
  // The async portion of this is a mind bender because of how entry can happen dynamically from templates
10762
- this.pict.parseTemplate(tmpTemplateContent,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplate(tmpTemplateContent,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateFromAddress;},{"pict-template":229}],271:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateFromMap extends libPictTemplate{/**
10962
+ this.pict.parseTemplate(tmpTemplateContent,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplate(tmpTemplateContent,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateFromAddress;},{"pict-template":232}],274:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateFromMap extends libPictTemplate{/**
10763
10963
  * @param {Object} pFable - The Fable Framework instance
10764
10964
  * @param {Object} pOptions - The options for the service
10765
10965
  * @param {String} pServiceHash - The hash of the service
@@ -10793,7 +10993,7 @@ let tmpTemplateHashPart=tmpHash.split(':');if(tmpTemplateHashPart.length<3){this
10793
10993
  if(!tmpTemplateFromMapHash){this.log.warn("Pict: TemplateFromMap Render Async: TemplateFromMapHash not resolved for [".concat(tmpHash,"]"));return fCallback(null,'');}// Now resolve the data
10794
10994
  let tmpMap=this.resolveStateFromAddress(tmpAddressOfMap,tmpData,pContextArray,null,pScope,pState);let tmpKey=this.resolveStateFromAddress(tmpAddressOfKey,tmpData,pContextArray,null,pScope,pState);if(!tmpMap){this.log.warn("Pict: TemplateFromMap Render: Map not resolved for [".concat(tmpHash,"]"));return fCallback(null,'');}tmpData=tmpMap[tmpKey];if(!tmpData){// No address was provided, just render the TemplateFromMap with what this TemplateFromMap has.
10795
10995
  // The async portion of this is a mind bender because of how entry can happen dynamically from TemplateFromMaps
10796
- this.pict.parseTemplateByHash(tmpTemplateFromMapHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateFromMapHash,tmpData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateFromMap;},{"pict-template":229}],272:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateSet extends libPictTemplate{/**
10996
+ this.pict.parseTemplateByHash(tmpTemplateFromMapHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateFromMapHash,tmpData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateFromMap;},{"pict-template":232}],275:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateSet extends libPictTemplate{/**
10797
10997
  * @param {Object} pFable - The Fable Framework instance
10798
10998
  * @param {Object} pOptions - The options for the service
10799
10999
  * @param {String} pServiceHash - The hash of the service
@@ -10826,7 +11026,7 @@ let tmpTemplateHashPart=tmpHash.split(':');if(tmpTemplateHashPart.length<2){this
10826
11026
  if(!tmpTemplateFromMapHash){this.log.warn("Pict: TemplateFromMap Render Async: TemplateFromMapHash not resolved for [".concat(tmpHash,"]"));return fCallback(null,'');}// Now resolve the data
10827
11027
  tmpData=this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState);if(!tmpData){// No address was provided, just render the template with what this template has.
10828
11028
  // The async portion of this is a mind bender because of how entry can happen dynamically from templates
10829
- this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,tmpData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateSet;},{"pict-template":229}],273:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateSetFromMap extends libPictTemplate{/**
11029
+ this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,tmpData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateSet;},{"pict-template":232}],276:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateSetFromMap extends libPictTemplate{/**
10830
11030
  * @param {Object} pFable - The Fable Framework instance
10831
11031
  * @param {Object} pOptions - The options for the service
10832
11032
  * @param {String} pServiceHash - The hash of the service
@@ -10860,7 +11060,7 @@ let tmpTemplateHashPart=tmpHash.split(':');if(tmpTemplateHashPart.length<3){this
10860
11060
  if(!tmpTemplateFromMapHash){this.log.warn("Pict: TemplateFromMapSet Render Async: TemplateFromMapHash not resolved for [".concat(tmpHash,"]"));return fCallback(null,'');}// Now resolve the data
10861
11061
  let tmpMap=this.resolveStateFromAddress(tmpAddressOfMap,tmpData,pContextArray,null,pScope,pState);let tmpKey=this.resolveStateFromAddress(tmpAddressOfKey,tmpData,pContextArray,null,pScope,pState);if(!tmpMap){this.log.warn("Pict: TemplateFromMapSet Render: Map not resolved for [".concat(tmpHash,"]"));return fCallback(null,'');}tmpData=tmpMap[tmpKey];if(!tmpData){// No address was provided, just render the TemplateFromMap with what this TemplateFromMap has.
10862
11062
  // The async portion of this is a mind bender because of how entry can happen dynamically from TemplateFromMaps
10863
- this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,tmpData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateSetFromMap;},{"pict-template":229}],274:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateSetWithPayload extends libPictTemplate{/**
11063
+ this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,tmpData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateSetFromMap;},{"pict-template":232}],277:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateSetWithPayload extends libPictTemplate{/**
10864
11064
  * @param {Object} pFable - The Fable Framework instance
10865
11065
  * @param {Object} pOptions - The options for the service
10866
11066
  * @param {String} pServiceHash - The hash of the service
@@ -10887,7 +11087,7 @@ let tmpTemplateHashes=tmpHash.trim().split(':');if(tmpTemplateHashes.length<3){t
10887
11087
  *
10888
11088
  * @return {void}
10889
11089
  */renderAsync(pTemplateHash,pRecord,fCallback,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpCallback=typeof fCallback==='function'?fCallback:()=>{return'';};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fTemplateSetWithPayloadRenderAsync]::[".concat(tmpHash,"]"));}else if(this.pict.LogNoisiness>0){this.log.trace("PICT Template [fTemplateSetWithPayloadRenderAsync]::[".concat(tmpHash,"]"));}let tmpTemplateHash;let tmpAddressOfData;let tmpAddressOfPayload;// This is just a simple 3 part hash (template, address of set, address of payload)
10890
- let tmpTemplateHashes=tmpHash.trim().split(':');if(tmpTemplateHashes.length<3){this.log.trace("PICT Template [fTemplateSetWithPayloadRender]::[".concat(tmpHash,"] failed because there were not three stanzas in the expression [").concat(pTemplateHash,"]"));return fCallback(null,'');}tmpTemplateHash=tmpTemplateHashes[0];tmpAddressOfData=tmpTemplateHashes[1];tmpAddressOfPayload=tmpTemplateHashes[2];let tmpData=this.resolveStateFromAddress(tmpAddressOfData,pRecord,pContextArray,null,pScope,pState);if(!tmpData){tmpData=pRecord;}if(!tmpData){tmpData={};}let tmpPayloadData=this.resolveStateFromAddress(tmpAddressOfPayload,pRecord,pContextArray,null,pScope,pState);if(!tmpPayloadData){tmpPayloadData=pRecord;}if(!tmpPayloadData){tmpPayloadData={};}this.pict.parseTemplateSetWithPayloadByHash(tmpTemplateHash,tmpData,tmpPayloadData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderTemplateSetWithPayload;},{"pict-template":229}],275:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateValueSet extends libPictTemplate{/**
11090
+ let tmpTemplateHashes=tmpHash.trim().split(':');if(tmpTemplateHashes.length<3){this.log.trace("PICT Template [fTemplateSetWithPayloadRender]::[".concat(tmpHash,"] failed because there were not three stanzas in the expression [").concat(pTemplateHash,"]"));return fCallback(null,'');}tmpTemplateHash=tmpTemplateHashes[0];tmpAddressOfData=tmpTemplateHashes[1];tmpAddressOfPayload=tmpTemplateHashes[2];let tmpData=this.resolveStateFromAddress(tmpAddressOfData,pRecord,pContextArray,null,pScope,pState);if(!tmpData){tmpData=pRecord;}if(!tmpData){tmpData={};}let tmpPayloadData=this.resolveStateFromAddress(tmpAddressOfPayload,pRecord,pContextArray,null,pScope,pState);if(!tmpPayloadData){tmpPayloadData=pRecord;}if(!tmpPayloadData){tmpPayloadData={};}this.pict.parseTemplateSetWithPayloadByHash(tmpTemplateHash,tmpData,tmpPayloadData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}module.exports=PictTemplateProviderTemplateSetWithPayload;},{"pict-template":232}],278:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateValueSet extends libPictTemplate{/**
10891
11091
  * @param {Object} pFable - The Fable Framework instance
10892
11092
  * @param {Object} pOptions - The options for the service
10893
11093
  * @param {String} pServiceHash - The hash of the service
@@ -10920,7 +11120,7 @@ let tmpTemplateHashPart=tmpHash.split(':');if(tmpTemplateHashPart.length<2){this
10920
11120
  if(!tmpTemplateFromMapHash){this.log.warn("Pict: TemplateFromMap Render Async: TemplateFromMapHash not resolved for [".concat(tmpHash,"]"));return fCallback(null,'');}// Now resolve the data
10921
11121
  tmpData=this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState);let tmpDataValueSet=[];if(Array.isArray(tmpData)){for(let i=0;i<tmpData.length;i++){tmpDataValueSet.push({Value:tmpData[i],Key:i});}}else if(typeof tmpData==='object'){let tmpValueKeys=Object.keys(tmpData);for(let i=0;i<tmpValueKeys.length;i++){tmpDataValueSet.push({Value:tmpData[tmpValueKeys[i]],Key:tmpData[tmpValueKeys[i]]});}}else{tmpDataValueSet.push({Value:tmpData});}tmpData=tmpDataValueSet;if(!tmpData){// No address was provided, just render the template with what this template has.
10922
11122
  // The async portion of this is a mind bender because of how entry can happen dynamically from templates
10923
- this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,tmpData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateValueSet;},{"pict-template":229}],276:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderView extends libPictTemplate{/**
11123
+ this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateSetByHash(tmpTemplateFromMapHash,tmpData,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}}module.exports=PictTemplateProviderTemplateValueSet;},{"pict-template":232}],279:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderView extends libPictTemplate{/**
10924
11124
  * @param {Object} pFable - The Fable Framework instance
10925
11125
  * @param {Object} pOptions - The options for the service
10926
11126
  * @param {String} pServiceHash - The hash of the service
@@ -10947,7 +11147,7 @@ return tmpResult;}/**
10947
11147
  * @return {void}
10948
11148
  */renderAsync(pTemplateHash,pRecord,fCallback,pContextArray,pScope,pState){const tmpViewHash=pTemplateHash.trim();if(!(tmpViewHash in this.pict.views)){this.log.warn("Pict: View Template Render: View not found for [".concat(tmpViewHash,"]"));return fCallback(null,'');}let tmpRenderGUID=this.pict.getUUID();const tmpView=this.pict.views[tmpViewHash];return tmpView.renderAsync('__Virtual',"__TemplateOutputCache.".concat(tmpRenderGUID),pRecord,pState?pState.RootRenderable:undefined,(pError,pResult)=>{if(pError){this.log.warn("Pict: View Template Render: Error rendering view [".concat(tmpViewHash,"]"),pError);return fCallback(pError,'');}let tmpResult=this.pict.__TemplateOutputCache[tmpRenderGUID];// TODO: Uncomment this when we like how it's working
10949
11149
  //delete this.pict.__TemplateOutputCache[tmpRenderGUID];
10950
- return fCallback(null,tmpResult);});}}module.exports=PictTemplateProviderView;},{"pict-template":229}],277:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderRandomNumber extends libPictTemplate{/**
11150
+ return fCallback(null,tmpResult);});}}module.exports=PictTemplateProviderView;},{"pict-template":232}],280:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderRandomNumber extends libPictTemplate{/**
10951
11151
  * @param {Object} pFable - The Fable Framework instance
10952
11152
  * @param {Object} pOptions - The options for the service
10953
11153
  * @param {String} pServiceHash - The hash of the service
@@ -10961,7 +11161,7 @@ return fCallback(null,tmpResult);});}}module.exports=PictTemplateProviderView;},
10961
11161
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
10962
11162
  *
10963
11163
  * @return {string} The rendered template
10964
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fRandomNumber]::[".concat(tmpHash,"]"));}let tmpMinimumNumber=0;let tmpMaxNumber=9999999;if(tmpHash.length>0){let tmpHashParts=tmpHash.split(',');if(tmpHashParts.length>0){try{tmpMinimumNumber=parseInt(tmpHashParts[0]);}catch(_unused4){tmpMinimumNumber=0;}}if(tmpHashParts.length>1){try{tmpMaxNumber=parseInt(tmpHashParts[1]);}catch(_unused5){tmpMaxNumber=9999999;}}}return this.fable.DataGeneration.randomIntegerBetween(tmpMinimumNumber,tmpMaxNumber);}}module.exports=PictTemplateProviderRandomNumber;},{"pict-template":229}],278:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderRandomNumberString extends libPictTemplate{/**
11164
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fRandomNumber]::[".concat(tmpHash,"]"));}let tmpMinimumNumber=0;let tmpMaxNumber=9999999;if(tmpHash.length>0){let tmpHashParts=tmpHash.split(',');if(tmpHashParts.length>0){try{tmpMinimumNumber=parseInt(tmpHashParts[0]);}catch(_unused4){tmpMinimumNumber=0;}}if(tmpHashParts.length>1){try{tmpMaxNumber=parseInt(tmpHashParts[1]);}catch(_unused5){tmpMaxNumber=9999999;}}}return this.fable.DataGeneration.randomIntegerBetween(tmpMinimumNumber,tmpMaxNumber);}}module.exports=PictTemplateProviderRandomNumber;},{"pict-template":232}],281:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderRandomNumberString extends libPictTemplate{/**
10965
11165
  * @param {Object} pFable - The Fable Framework instance
10966
11166
  * @param {Object} pOptions - The options for the service
10967
11167
  * @param {String} pServiceHash - The hash of the service
@@ -10975,7 +11175,7 @@ return fCallback(null,tmpResult);});}}module.exports=PictTemplateProviderView;},
10975
11175
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
10976
11176
  *
10977
11177
  * @return {string} The rendered template
10978
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fRandomNumberString]::[".concat(tmpHash,"]"));}let tmpStringLength=4;let tmpMaxNumber=9999;if(tmpHash.length>0){let tmpHashParts=tmpHash.split(',');if(tmpHashParts.length>0){try{tmpStringLength=parseInt(tmpHashParts[0]);}catch(_unused6){tmpStringLength=4;}}if(tmpHashParts.length>1){try{tmpMaxNumber=parseInt(tmpHashParts[1]);}catch(_unused7){tmpMaxNumber=9999;}}}return this.fable.DataGeneration.randomNumericString(tmpStringLength,tmpMaxNumber);}}module.exports=PictTemplateProviderRandomNumberString;},{"pict-template":229}],279:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDataEncodeJavascriptString extends libPictTemplate{/**
11178
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fRandomNumberString]::[".concat(tmpHash,"]"));}let tmpStringLength=4;let tmpMaxNumber=9999;if(tmpHash.length>0){let tmpHashParts=tmpHash.split(',');if(tmpHashParts.length>0){try{tmpStringLength=parseInt(tmpHashParts[0]);}catch(_unused6){tmpStringLength=4;}}if(tmpHashParts.length>1){try{tmpMaxNumber=parseInt(tmpHashParts[1]);}catch(_unused7){tmpMaxNumber=9999;}}}return this.fable.DataGeneration.randomNumericString(tmpStringLength,tmpMaxNumber);}}module.exports=PictTemplateProviderRandomNumberString;},{"pict-template":232}],282:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDataEncodeJavascriptString extends libPictTemplate{/**
10979
11179
  * @param {Object} pFable - The Fable Framework instance
10980
11180
  * @param {Object} pOptions - The options for the service
10981
11181
  * @param {String} pServiceHash - The hash of the service
@@ -10989,7 +11189,7 @@ return fCallback(null,tmpResult);});}}module.exports=PictTemplateProviderView;},
10989
11189
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
10990
11190
  *
10991
11191
  * @return {string} The rendered template
10992
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataJson]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataJson]::[".concat(tmpHash,"]"));}let tmpDataToEncode=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);return this.pict.DataFormat.stringEncodeForJavascript(tmpDataToEncode);}}module.exports=PictTemplateProviderDataEncodeJavascriptString;},{"pict-template":229}],280:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderJSONOutput extends libPictTemplate{/**
11192
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataJson]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataJson]::[".concat(tmpHash,"]"));}let tmpDataToEncode=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);return this.pict.DataFormat.stringEncodeForJavascript(tmpDataToEncode);}}module.exports=PictTemplateProviderDataEncodeJavascriptString;},{"pict-template":232}],283:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderJSONOutput extends libPictTemplate{/**
10993
11193
  * @param {Object} pFable - The Fable Framework instance
10994
11194
  * @param {Object} pOptions - The options for the service
10995
11195
  * @param {String} pServiceHash - The hash of the service
@@ -11003,7 +11203,7 @@ return fCallback(null,tmpResult);});}}module.exports=PictTemplateProviderView;},
11003
11203
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
11004
11204
  *
11005
11205
  * @return {string} The rendered template
11006
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataJson]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataJson]::[".concat(tmpHash,"]"));}let tmpDataToStringify=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);if(!tmpDataToStringify){tmpDataToStringify=pRecord;}return JSON.stringify(tmpDataToStringify);}}module.exports=PictTemplateProviderJSONOutput;},{"pict-template":229}],281:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDateOnlyFormat extends libPictTemplate{/**
11206
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataJson]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataJson]::[".concat(tmpHash,"]"));}let tmpDataToStringify=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);if(!tmpDataToStringify){tmpDataToStringify=pRecord;}return JSON.stringify(tmpDataToStringify);}}module.exports=PictTemplateProviderJSONOutput;},{"pict-template":232}],284:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDateOnlyFormat extends libPictTemplate{/**
11007
11207
  * @param {import('fable')} pFable - The Fable Framework instance
11008
11208
  * @param {any} pOptions - The options for the service
11009
11209
  * @param {String} pServiceHash - The hash of the service
@@ -11024,7 +11224,7 @@ let tmpDayJS=this.fable.Dates.dayJS.utc(tmpDateValue);return tmpDayJS.format(tmp
11024
11224
  ```javascript
11025
11225
 
11026
11226
  ```
11027
- */},{"pict-template":229}],282:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDateOnlyYMD extends libPictTemplate{/**
11227
+ */},{"pict-template":232}],285:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDateOnlyYMD extends libPictTemplate{/**
11028
11228
  * @param {Object} pFable - The Fable Framework instance
11029
11229
  * @param {Object} pOptions - The options for the service
11030
11230
  * @param {String} pServiceHash - The hash of the service
@@ -11042,7 +11242,7 @@ let tmpDayJS=this.fable.Dates.dayJS.utc(tmpDateValue);return tmpDayJS.format(tmp
11042
11242
  let tmpDayJS=this.fable.Dates.dayJS.utc(tmpDateValue);//FIXME: this is kind of wacked out; -62167219200000 is the unix ms timestamp for 0000-01-01 00:00:00 UTC
11043
11243
  // not even sure showing negative is right; showing the era is probably better (BCE vs CE)
11044
11244
  //const prefix = tmpDayJS.valueOf() < -62167219200000 ? '-' : '';
11045
- const tmpPrefix='';return tmpPrefix+tmpDayJS.format('YYYY-MM-DD');}}module.exports=PictTemplateProviderDateOnlyYMD;},{"pict-template":229}],283:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDateTimeFormat extends libPictTemplate{/**
11245
+ const tmpPrefix='';return tmpPrefix+tmpDayJS.format('YYYY-MM-DD');}}module.exports=PictTemplateProviderDateOnlyYMD;},{"pict-template":232}],286:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDateTimeFormat extends libPictTemplate{/**
11046
11246
  * @param {Object} pFable - The Fable Framework instance
11047
11247
  * @param {Object} pOptions - The options for the service
11048
11248
  * @param {String} pServiceHash - The hash of the service
@@ -11067,7 +11267,7 @@ try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.
11067
11267
  ```javascript
11068
11268
 
11069
11269
  ```
11070
- */},{"pict-template":229}],284:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDateTimeYMD extends libPictTemplate{/**
11270
+ */},{"pict-template":232}],287:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDateTimeYMD extends libPictTemplate{/**
11071
11271
  * @param {Object} pFable - The Fable Framework instance
11072
11272
  * @param {Object} pOptions - The options for the service
11073
11273
  * @param {String} pServiceHash - The hash of the service
@@ -11086,7 +11286,7 @@ try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.
11086
11286
  let tmpDayJS=this.fable.Dates.dayJS.utc(tmpDateValue);try{// Try to cast the day to be a specific timezone if one is set for the app
11087
11287
  if(this.pict.options.Timezone){tmpDayJS=tmpDayJS.tz(this.pict.options.Timezone);}else{try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.log.error("Error guessing dayJS guess() function; dates may be formatted to GMT by default. (".concat(pError.message||pError,")"));}}}catch(_unused9){//this.log.error(`Error casting timezone using tz .. casting to the browser guess which is [${this.fable.Dates.dayJS.tz.guess()}].`);
11088
11288
  // Day.js will try to guess the user's timezone for us
11089
- try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.log.error("Error guessing dayJS guess() function; dates may be formatted to GMT by default. (".concat(pError.message||pError,")"));}}return tmpDayJS.format('YYYY-MM-DD');}}module.exports=PictTemplateProviderDateTimeYMD;},{"pict-template":229}],285:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDigits extends libPictTemplate{/**
11289
+ try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.log.error("Error guessing dayJS guess() function; dates may be formatted to GMT by default. (".concat(pError.message||pError,")"));}}return tmpDayJS.format('YYYY-MM-DD');}}module.exports=PictTemplateProviderDateTimeYMD;},{"pict-template":232}],288:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDigits extends libPictTemplate{/**
11090
11290
  * @param {Object} pFable - The Fable Framework instance
11091
11291
  * @param {Object} pOptions - The options for the service
11092
11292
  * @param {String} pServiceHash - The hash of the service
@@ -11100,7 +11300,7 @@ try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.
11100
11300
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
11101
11301
  *
11102
11302
  * @return {string} The rendered template
11103
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDigits]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDigits]::[".concat(tmpHash,"]"));}let tmpColumnData=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);return this.fable.DataFormat.formatterAddCommasToNumber(this.fable.DataFormat.formatterRoundNumber(tmpColumnData,2));}}module.exports=PictTemplateProviderDigits;},{"pict-template":229}],286:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDollars extends libPictTemplate{/**
11303
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDigits]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDigits]::[".concat(tmpHash,"]"));}let tmpColumnData=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);return this.fable.DataFormat.formatterAddCommasToNumber(this.fable.DataFormat.formatterRoundNumber(tmpColumnData,2));}}module.exports=PictTemplateProviderDigits;},{"pict-template":232}],289:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDollars extends libPictTemplate{/**
11104
11304
  * @param {Object} pFable - The Fable Framework instance
11105
11305
  * @param {Object} pOptions - The options for the service
11106
11306
  * @param {String} pServiceHash - The hash of the service
@@ -11114,7 +11314,7 @@ try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.
11114
11314
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
11115
11315
  *
11116
11316
  * @return {string} The rendered template
11117
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDollars]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDollars]::[".concat(tmpHash,"]"));}let tmpColumnData=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);return this.fable.DataFormat.formatterDollars(tmpColumnData);}}module.exports=PictTemplateProviderDollars;},{"pict-template":229}],287:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderHTMLCommandEnd extends libPictTemplate{/**
11317
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDollars]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDollars]::[".concat(tmpHash,"]"));}let tmpColumnData=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);return this.fable.DataFormat.formatterDollars(tmpColumnData);}}module.exports=PictTemplateProviderDollars;},{"pict-template":232}],290:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderHTMLCommandEnd extends libPictTemplate{/**
11118
11318
  * @param {Object} pFable - The Fable Framework instance
11119
11319
  * @param {Object} pOptions - The options for the service
11120
11320
  * @param {String} pServiceHash - The hash of the service
@@ -11128,7 +11328,7 @@ try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.
11128
11328
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
11129
11329
  *
11130
11330
  * @return {string} The rendered template
11131
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"]"));}let tmpValue=false;const[tmpValueAddress,tmpPolarityStr]=tmpHash.split(':');if(tmpValueAddress!=null){tmpValue=this.resolveStateFromAddress(tmpValueAddress,tmpRecord,pContextArray,null,pScope,pState);}const tmpPolarity=tmpPolarityStr!=null?tmpPolarityStr==='1'||tmpPolarityStr.toLowerCase()==='true'||tmpPolarityStr.toLowerCase()==='t':false;if(Boolean(tmpValue)==tmpPolarity){return' -->';}return'';}}module.exports=PictTemplateProviderHTMLCommandEnd;},{"pict-template":229}],288:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderHTMLCommandStart extends libPictTemplate{/**
11331
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"]"));}let tmpValue=false;const[tmpValueAddress,tmpPolarityStr]=tmpHash.split(':');if(tmpValueAddress!=null){tmpValue=this.resolveStateFromAddress(tmpValueAddress,tmpRecord,pContextArray,null,pScope,pState);}const tmpPolarity=tmpPolarityStr!=null?tmpPolarityStr==='1'||tmpPolarityStr.toLowerCase()==='true'||tmpPolarityStr.toLowerCase()==='t':false;if(Boolean(tmpValue)==tmpPolarity){return' -->';}return'';}}module.exports=PictTemplateProviderHTMLCommandEnd;},{"pict-template":232}],291:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderHTMLCommandStart extends libPictTemplate{/**
11132
11332
  * @param {Object} pFable - The Fable Framework instance
11133
11333
  * @param {Object} pOptions - The options for the service
11134
11334
  * @param {String} pServiceHash - The hash of the service
@@ -11142,7 +11342,7 @@ try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.
11142
11342
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
11143
11343
  *
11144
11344
  * @return {string} The rendered template
11145
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"]"));}let tmpValue=false;const[tmpValueAddress,tmpPolarityStr]=tmpHash.split(':');if(tmpValueAddress!=null){tmpValue=this.resolveStateFromAddress(tmpValueAddress,tmpRecord,pContextArray,null,pScope,pState);}const tmpPolarity=tmpPolarityStr!=null?tmpPolarityStr==='1'||tmpPolarityStr.toLowerCase()==='true'||tmpPolarityStr.toLowerCase()==='t':false;if(Boolean(tmpValue)==tmpPolarity){return'<!-- ';}return'';}}module.exports=PictTemplateProviderHTMLCommandStart;},{"pict-template":229}],289:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderJoin extends libPictTemplate{/**
11345
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpRecord=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpRecord);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Template [fDataRender]::[".concat(tmpHash,"]"));}let tmpValue=false;const[tmpValueAddress,tmpPolarityStr]=tmpHash.split(':');if(tmpValueAddress!=null){tmpValue=this.resolveStateFromAddress(tmpValueAddress,tmpRecord,pContextArray,null,pScope,pState);}const tmpPolarity=tmpPolarityStr!=null?tmpPolarityStr==='1'||tmpPolarityStr.toLowerCase()==='true'||tmpPolarityStr.toLowerCase()==='t':false;if(Boolean(tmpValue)==tmpPolarity){return'<!-- ';}return'';}}module.exports=PictTemplateProviderHTMLCommandStart;},{"pict-template":232}],292:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderJoin extends libPictTemplate{/**
11146
11346
  * @param {Object} pFable - The Fable Framework instance
11147
11347
  * @param {Object} pOptions - The options for the service
11148
11348
  * @param {String} pServiceHash - The hash of the service
@@ -11157,7 +11357,7 @@ try{tmpDayJS=tmpDayJS.tz(this.fable.Dates.dayJS.tz.guess());}catch(pError){this.
11157
11357
  *
11158
11358
  * @return {string} The rendered template
11159
11359
  */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash;let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Join [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Join [fDataRender]::[".concat(tmpHash,"]"));}let tmpDataAddresses=tmpHash.split('^');if(tmpDataAddresses.length<2){return'';}// Get the separator string
11160
- let tmpSeparator=tmpDataAddresses.shift();let tmpValueList=[];for(let i=0;i<tmpDataAddresses.length;i++){let tmpValueSet=this.resolveStateFromAddress(tmpDataAddresses[i],tmpData,pContextArray,null,pScope,pState);if(tmpValueSet&&Array.isArray(tmpValueSet)){for(let j=0;j<tmpValueSet.length;j++){tmpValueList.push(tmpValueSet[j]);}}else if(tmpValueSet){tmpValueList.push(tmpValueSet);}}return tmpValueList.join(tmpSeparator);}}module.exports=PictTemplateProviderJoin;},{"pict-template":229}],290:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderJoinUnique extends libPictTemplate{/**
11360
+ let tmpSeparator=tmpDataAddresses.shift();let tmpValueList=[];for(let i=0;i<tmpDataAddresses.length;i++){let tmpValueSet=this.resolveStateFromAddress(tmpDataAddresses[i],tmpData,pContextArray,null,pScope,pState);if(tmpValueSet&&Array.isArray(tmpValueSet)){for(let j=0;j<tmpValueSet.length;j++){tmpValueList.push(tmpValueSet[j]);}}else if(tmpValueSet){tmpValueList.push(tmpValueSet);}}return tmpValueList.join(tmpSeparator);}}module.exports=PictTemplateProviderJoin;},{"pict-template":232}],293:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderJoinUnique extends libPictTemplate{/**
11161
11361
  * @param {Object} pFable - The Fable Framework instance
11162
11362
  * @param {Object} pOptions - The options for the service
11163
11363
  * @param {String} pServiceHash - The hash of the service
@@ -11172,7 +11372,7 @@ let tmpSeparator=tmpDataAddresses.shift();let tmpValueList=[];for(let i=0;i<tmpD
11172
11372
  *
11173
11373
  * @return {string} The rendered template
11174
11374
  */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash;let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Join Unique [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Join Unique [fDataRender]::[".concat(tmpHash,"]"));}let tmpDataAddresses=tmpHash.split('^');if(tmpDataAddresses.length<2){return'';}// Get the separator string
11175
- let tmpSeparator=tmpDataAddresses.shift();let tmpValueList=[];let tmpValueMap={};for(let i=0;i<tmpDataAddresses.length;i++){let tmpValueSet=this.resolveStateFromAddress(tmpDataAddresses[i],tmpData,pContextArray,null,pScope,pState);if(tmpValueSet&&Array.isArray(tmpValueSet)){for(let j=0;j<tmpValueSet.length;j++){if(!(tmpValueSet[j]in tmpValueMap)){tmpValueMap[tmpValueSet[j]]=true;tmpValueList.push(tmpValueSet[j]);}}}else if(tmpValueSet){if(!(tmpValueSet in tmpValueMap)){tmpValueMap[tmpValueSet]=true;tmpValueList.push(tmpValueSet);}}}return tmpValueList.join(tmpSeparator);}}module.exports=PictTemplateProviderJoinUnique;},{"pict-template":229}],291:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderPascalCaseIdentifier extends libPictTemplate{/**
11375
+ let tmpSeparator=tmpDataAddresses.shift();let tmpValueList=[];let tmpValueMap={};for(let i=0;i<tmpDataAddresses.length;i++){let tmpValueSet=this.resolveStateFromAddress(tmpDataAddresses[i],tmpData,pContextArray,null,pScope,pState);if(tmpValueSet&&Array.isArray(tmpValueSet)){for(let j=0;j<tmpValueSet.length;j++){if(!(tmpValueSet[j]in tmpValueMap)){tmpValueMap[tmpValueSet[j]]=true;tmpValueList.push(tmpValueSet[j]);}}}else if(tmpValueSet){if(!(tmpValueSet in tmpValueMap)){tmpValueMap[tmpValueSet]=true;tmpValueList.push(tmpValueSet);}}}return tmpValueList.join(tmpSeparator);}}module.exports=PictTemplateProviderJoinUnique;},{"pict-template":232}],294:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderPascalCaseIdentifier extends libPictTemplate{/**
11176
11376
  * @param {Object} pFable - The Fable Framework instance
11177
11377
  * @param {Object} pOptions - The options for the service
11178
11378
  * @param {String} pServiceHash - The hash of the service
@@ -11192,7 +11392,7 @@ let tmpSeparator=tmpDataAddresses.shift();let tmpValueList=[];let tmpValueMap={}
11192
11392
  ```javascript
11193
11393
 
11194
11394
  ```
11195
- */},{"pict-template":229}],292:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderPluckJoinUnique extends libPictTemplate{/**
11395
+ */},{"pict-template":232}],295:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderPluckJoinUnique extends libPictTemplate{/**
11196
11396
  * @param {Object} pFable - The Fable Framework instance
11197
11397
  * @param {Object} pOptions - The options for the service
11198
11398
  * @param {String} pServiceHash - The hash of the service
@@ -11208,7 +11408,7 @@ let tmpSeparator=tmpDataAddresses.shift();let tmpValueList=[];let tmpValueMap={}
11208
11408
  * @return {string} The rendered template
11209
11409
  */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash;let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Pluck Join Unique [fDataRender]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>3){this.log.trace("PICT Pluck Join Unique [fDataRender]::[".concat(tmpHash,"]"));}let tmpDataAddresses=tmpHash.split('^');if(tmpDataAddresses.length<3){return'';}// Get the separator string
11210
11410
  let tmpSeparator=tmpDataAddresses.shift();let tmpAddress=tmpDataAddresses.shift();let tmpValueList=[];let tmpValueMap={};for(let i=0;i<tmpDataAddresses.length;i++){let tmpValueSet=this.resolveStateFromAddress(tmpDataAddresses[i],tmpData,pContextArray,null,pScope,pState);if(tmpValueSet&&Array.isArray(tmpValueSet)){// This one only works on arrays of objects.
11211
- for(let j=0;j<tmpValueSet.length;j++){if(tmpValueSet[j]===null||typeof tmpValueSet!=='object'){continue;}let tmpValue=this.pict.manifest.getValueByHash(tmpValueSet[j],tmpAddress);if(!(tmpValue in tmpValueMap)){tmpValueMap[tmpValue]=true;tmpValueList.push(tmpValue);}}}else if(tmpValueSet){if(!(tmpValueSet in tmpValueMap)){tmpValueMap[tmpValueSet]=true;tmpValueList.push(tmpValueSet);}}}return tmpValueList.join(tmpSeparator);}}module.exports=PictTemplateProviderPluckJoinUnique;},{"pict-template":229}],293:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderBreakpoint extends libPictTemplate{/**
11411
+ for(let j=0;j<tmpValueSet.length;j++){if(tmpValueSet[j]===null||typeof tmpValueSet!=='object'){continue;}let tmpValue=this.pict.manifest.getValueByHash(tmpValueSet[j],tmpAddress);if(!(tmpValue in tmpValueMap)){tmpValueMap[tmpValue]=true;tmpValueList.push(tmpValue);}}}else if(tmpValueSet){if(!(tmpValueSet in tmpValueMap)){tmpValueMap[tmpValueSet]=true;tmpValueList.push(tmpValueSet);}}}return tmpValueList.join(tmpSeparator);}}module.exports=PictTemplateProviderPluckJoinUnique;},{"pict-template":232}],296:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderBreakpoint extends libPictTemplate{/**
11212
11412
  * @param {Object} pFable - The Fable Framework instance
11213
11413
  * @param {Object} pOptions - The options for the service
11214
11414
  * @param {String} pServiceHash - The hash of the service
@@ -11224,7 +11424,7 @@ for(let j=0;j<tmpValueSet.length;j++){if(tmpValueSet[j]===null||typeof tmpValueS
11224
11424
  * @return {string} The rendered template
11225
11425
  */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpError=new Error("PICT Template Breakpoint: ".concat(tmpHash));this.log.trace("PICT Template Breakpoint: ".concat(tmpHash),tmpError.stack);//throw tmpError;
11226
11426
  debugger;// eslint-disable-line no-debugger
11227
- return'';}}module.exports=PictTemplateProviderBreakpoint;},{"pict-template":229}],294:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDataValueTree extends libPictTemplate{/**
11427
+ return'';}}module.exports=PictTemplateProviderBreakpoint;},{"pict-template":232}],297:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderDataValueTree extends libPictTemplate{/**
11228
11428
  * @param {Object} pFable - The Fable Framework instance
11229
11429
  * @param {Object} pOptions - The options for the service
11230
11430
  * @param {String} pServiceHash - The hash of the service
@@ -11252,7 +11452,7 @@ tmpPictObjectWrapTemplate="<div class=\"PICT PICTObjectSet\">{~D:Record.ObjectVa
11252
11452
  *
11253
11453
  * @return {string} The rendered template
11254
11454
  */dataValueTreeObjectSet(pObject,pRootObject,pCurrentDepth,pMaxDepth,pContextArray,pScope,pState){let tmpTemplateResult='';if(typeof pObject!=='object'){return tmpTemplateResult;}let tmpObjectValueKeys=Object.keys(pObject);let tmpPictObjectBranchTemplate=this.pict.TemplateProvider.getTemplate('PICT-Object-Branch');if(!tmpPictObjectBranchTemplate){// This template is here because it is a default template. Users can override this template by providing their own as PICT-Object-Branch
11255
- tmpPictObjectBranchTemplate="\n<div class=\"PICTObjectBranchDepth_{~D:Record.CurrentDepth~}\"><div class=\"PICTObjectBranch\">{~D:Record.BranchKey~}</div><div class=\"PICTObjectBranchValue\">{~D:Record.BranchValue~}</div></div>\n";}for(let i=0;i<tmpObjectValueKeys.length;i++){let tmpBranchType=typeof pObject[tmpObjectValueKeys[i]];let tmpBranchValue='';switch(tmpBranchType){case'object':if(pCurrentDepth+1>pMaxDepth){tmpBranchValue='...';}else{tmpBranchValue=this.dataValueTreeObjectSet(pObject[tmpObjectValueKeys[i]],pRootObject,pCurrentDepth+1,pMaxDepth,pContextArray,pScope);}break;default:tmpBranchValue=pObject[tmpObjectValueKeys[i]];break;}let tmpDataValue={AppData:this.pict.AppData,Bundle:this.pict.Bundle,RootContainer:pRootObject,Container:pObject,BranchEntryCount:tmpObjectValueKeys.length,BranchIndex:i,BranchKey:tmpObjectValueKeys[i],BranchValue:tmpBranchValue,BranchDataType:tmpBranchType,CurrentDepth:pCurrentDepth,MaxDepth:pMaxDepth};tmpTemplateResult+=this.pict.parseTemplate(tmpPictObjectBranchTemplate,tmpDataValue,null,pContextArray,pScope,pState);}return tmpTemplateResult;}}module.exports=PictTemplateProviderDataValueTree;},{"pict-template":229}],295:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderLogStatement extends libPictTemplate{/**
11455
+ tmpPictObjectBranchTemplate="\n<div class=\"PICTObjectBranchDepth_{~D:Record.CurrentDepth~}\"><div class=\"PICTObjectBranch\">{~D:Record.BranchKey~}</div><div class=\"PICTObjectBranchValue\">{~D:Record.BranchValue~}</div></div>\n";}for(let i=0;i<tmpObjectValueKeys.length;i++){let tmpBranchType=typeof pObject[tmpObjectValueKeys[i]];let tmpBranchValue='';switch(tmpBranchType){case'object':if(pCurrentDepth+1>pMaxDepth){tmpBranchValue='...';}else{tmpBranchValue=this.dataValueTreeObjectSet(pObject[tmpObjectValueKeys[i]],pRootObject,pCurrentDepth+1,pMaxDepth,pContextArray,pScope);}break;default:tmpBranchValue=pObject[tmpObjectValueKeys[i]];break;}let tmpDataValue={AppData:this.pict.AppData,Bundle:this.pict.Bundle,RootContainer:pRootObject,Container:pObject,BranchEntryCount:tmpObjectValueKeys.length,BranchIndex:i,BranchKey:tmpObjectValueKeys[i],BranchValue:tmpBranchValue,BranchDataType:tmpBranchType,CurrentDepth:pCurrentDepth,MaxDepth:pMaxDepth};tmpTemplateResult+=this.pict.parseTemplate(tmpPictObjectBranchTemplate,tmpDataValue,null,pContextArray,pScope,pState);}return tmpTemplateResult;}}module.exports=PictTemplateProviderDataValueTree;},{"pict-template":232}],298:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderLogStatement extends libPictTemplate{/**
11256
11456
  * @param {Object} pFable - The Fable Framework instance
11257
11457
  * @param {Object} pOptions - The options for the service
11258
11458
  * @param {String} pServiceHash - The hash of the service
@@ -11266,7 +11466,7 @@ tmpPictObjectBranchTemplate="\n<div class=\"PICTObjectBranchDepth_{~D:Record.Cur
11266
11466
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
11267
11467
  *
11268
11468
  * @return {string} The rendered template
11269
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();this.log.trace("PICT Template Log Message: ".concat(tmpHash));return'';}}module.exports=PictTemplateProviderLogStatement;},{"pict-template":229}],296:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderLogValue extends libPictTemplate{/**
11469
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();this.log.trace("PICT Template Log Message: ".concat(tmpHash));return'';}}module.exports=PictTemplateProviderLogStatement;},{"pict-template":232}],299:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderLogValue extends libPictTemplate{/**
11270
11470
  * @param {Object} pFable - The Fable Framework instance
11271
11471
  * @param {Object} pOptions - The options for the service
11272
11472
  * @param {String} pServiceHash - The hash of the service
@@ -11280,7 +11480,7 @@ tmpPictObjectBranchTemplate="\n<div class=\"PICTObjectBranchDepth_{~D:Record.Cur
11280
11480
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
11281
11481
  *
11282
11482
  * @return {string} The rendered template
11283
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};let tmpValue=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);let tmpValueType=typeof tmpValue;if(tmpValue==null||tmpValueType=='undefined'){this.log.trace("PICT Template Log Value: [".concat(tmpHash,"] is ").concat(tmpValueType,"."));}else if(tmpValueType=='object'){this.log.trace("PICT Template Log Value: [".concat(tmpHash,"] is an object."),tmpValue);}else{this.log.trace("PICT Template Log Value: [".concat(tmpHash,"] is a ").concat(tmpValueType," = [").concat(tmpValue,"]"));}return'';}}module.exports=PictTemplateProviderLogValue;},{"pict-template":229}],297:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderLogValueTree extends libPictTemplate{/**
11483
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};let tmpValue=this.resolveStateFromAddress(tmpHash,tmpData,pContextArray,null,pScope,pState);let tmpValueType=typeof tmpValue;if(tmpValue==null||tmpValueType=='undefined'){this.log.trace("PICT Template Log Value: [".concat(tmpHash,"] is ").concat(tmpValueType,"."));}else if(tmpValueType=='object'){this.log.trace("PICT Template Log Value: [".concat(tmpHash,"] is an object."),tmpValue);}else{this.log.trace("PICT Template Log Value: [".concat(tmpHash,"] is a ").concat(tmpValueType," = [").concat(tmpValue,"]"));}return'';}}module.exports=PictTemplateProviderLogValue;},{"pict-template":232}],300:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderLogValueTree extends libPictTemplate{/**
11284
11484
  * @param {Object} pFable - The Fable Framework instance
11285
11485
  * @param {Object} pOptions - The options for the service
11286
11486
  * @param {String} pServiceHash - The hash of the service
@@ -11294,7 +11494,7 @@ tmpPictObjectBranchTemplate="\n<div class=\"PICTObjectBranchDepth_{~D:Record.Cur
11294
11494
  * @param {any} [pState] - A catchall state object for plumbing data through template processing.
11295
11495
  *
11296
11496
  * @return {string} The rendered template
11297
- */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpData=typeof pRecord==='object'?pRecord:{};tmpData.TemplateHash=pTemplateHash.trim();tmpData.ValueTreeParameters=tmpData.TemplateHash.split('^');if(tmpData.ValueTreeParameters.length<1){return'';}tmpData.ResolvedValue=this.resolveStateFromAddress(tmpData.ValueTreeParameters[0],tmpData,pContextArray,null,pScope,pState);tmpData.ResolvedValueType=typeof tmpData.ResolvedValue;try{tmpData.TreeMaxDepth=tmpData.ValueTreeParameters.length<2?1:parseInt(tmpData.ValueTreeParameters[1]);}catch(_unused1){tmpData.TreeMaxDepth=1;}if(tmpData.ResolvedValueType=='object'){this.logValueTreeObjectSet(tmpData.ResolvedValue,tmpData.ValueTreeParameters[0],tmpData.ResolvedValue,0,tmpData.TreeMaxDepth);}else{this.log.trace("PICT Template Log Value Tree: [".concat(tmpData.TemplateHash,"] resolved data is not an object."),tmpData.ResolvedValue);}return'';}}module.exports=PictTemplateProviderLogValueTree;},{"pict-template":229}],298:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderNotEmpty extends libPictTemplate{/**
11497
+ */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpData=typeof pRecord==='object'?pRecord:{};tmpData.TemplateHash=pTemplateHash.trim();tmpData.ValueTreeParameters=tmpData.TemplateHash.split('^');if(tmpData.ValueTreeParameters.length<1){return'';}tmpData.ResolvedValue=this.resolveStateFromAddress(tmpData.ValueTreeParameters[0],tmpData,pContextArray,null,pScope,pState);tmpData.ResolvedValueType=typeof tmpData.ResolvedValue;try{tmpData.TreeMaxDepth=tmpData.ValueTreeParameters.length<2?1:parseInt(tmpData.ValueTreeParameters[1]);}catch(_unused1){tmpData.TreeMaxDepth=1;}if(tmpData.ResolvedValueType=='object'){this.logValueTreeObjectSet(tmpData.ResolvedValue,tmpData.ValueTreeParameters[0],tmpData.ResolvedValue,0,tmpData.TreeMaxDepth);}else{this.log.trace("PICT Template Log Value Tree: [".concat(tmpData.TemplateHash,"] resolved data is not an object."),tmpData.ResolvedValue);}return'';}}module.exports=PictTemplateProviderLogValueTree;},{"pict-template":232}],301:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderNotEmpty extends libPictTemplate{/**
11298
11498
  * @param {Object} pFable - The Fable Framework instance
11299
11499
  * @param {Object} pOptions - The options for the service
11300
11500
  * @param {String} pServiceHash - The hash of the service
@@ -11309,11 +11509,11 @@ tmpPictObjectBranchTemplate="\n<div class=\"PICTObjectBranchDepth_{~D:Record.Cur
11309
11509
  *
11310
11510
  * @return {string} The rendered template
11311
11511
  */render(pTemplateHash,pRecord,pContextArray,pScope,pState){let tmpHash=pTemplateHash.trim();let tmpData=typeof pRecord==='object'?pRecord:{};if(this.pict.LogNoisiness>4){this.log.trace("PICT Template [fNotEmptyRender]::[".concat(tmpHash,"] with tmpData:"),tmpData);}else if(this.pict.LogNoisiness>2){this.log.trace("PICT Template [fNotEmptyRender]::[".concat(tmpHash,"]"));}let tmpHashParts=tmpHash.split('^');// For now just check truthiness. Not sure if this is grand.
11312
- if(this.resolveStateFromAddress(tmpHashParts[0],tmpData,pContextArray,null,pScope,pState)){return tmpHashParts[1];}return'';}}module.exports=PictTemplateProviderNotEmpty;},{"pict-template":229}],299:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateIfBase extends libPictTemplate{/**
11512
+ if(this.resolveStateFromAddress(tmpHashParts[0],tmpData,pContextArray,null,pScope,pState)){return tmpHashParts[1];}return'';}}module.exports=PictTemplateProviderNotEmpty;},{"pict-template":232}],302:[function(require,module,exports){const libPictTemplate=require('pict-template');class PictTemplateProviderTemplateIfBase extends libPictTemplate{/**
11313
11513
  * @param {Object} pFable - The Fable Framework instance
11314
11514
  * @param {Object} pOptions - The options for the service
11315
11515
  * @param {String} pServiceHash - The hash of the service
11316
- */constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);}compareValues(pValueLeft,pOperator,pValueRight){switch(pOperator){case'TRUE':return pValueLeft===true;case'FALSE':return pValueLeft===false;case'LNGT':case'LENGTH_GREATER_THAN':switch(typeof pValueLeft){case'string':return pValueLeft.length>pValueRight;case'object':return pValueLeft.length>pValueRight;default:return false;}case'LNLT':case'LENGTH_LESS_THAN':switch(typeof pValueLeft){case'string':return pValueLeft.length<pValueRight;case'object':return pValueLeft.length<pValueRight;default:return false;}case'!==':return pValueLeft!==pValueRight;case'!=':return pValueLeft!=pValueRight;case'<':return pValueLeft<pValueRight;case'>':return pValueLeft>pValueRight;case'<=':return pValueLeft<=pValueRight;case'>=':return pValueLeft>=pValueRight;case'===':return pValueLeft===pValueRight;case'==':return pValueLeft==pValueRight;default:return false;}}}module.exports=PictTemplateProviderTemplateIfBase;},{"pict-template":229}],300:[function(require,module,exports){const libPictTemplateIf=require('./Pict-Template-TemplateIf-Base.js');class PictTemplateProviderTemplateIf extends libPictTemplateIf{/**
11516
+ */constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);}compareValues(pValueLeft,pOperator,pValueRight){switch(pOperator){case'TRUE':return pValueLeft===true;case'FALSE':return pValueLeft===false;case'LNGT':case'LENGTH_GREATER_THAN':switch(typeof pValueLeft){case'string':return pValueLeft.length>pValueRight;case'object':return pValueLeft.length>pValueRight;default:return false;}case'LNLT':case'LENGTH_LESS_THAN':switch(typeof pValueLeft){case'string':return pValueLeft.length<pValueRight;case'object':return pValueLeft.length<pValueRight;default:return false;}case'!==':return pValueLeft!==pValueRight;case'!=':return pValueLeft!=pValueRight;case'<':return pValueLeft<pValueRight;case'>':return pValueLeft>pValueRight;case'<=':return pValueLeft<=pValueRight;case'>=':return pValueLeft>=pValueRight;case'===':return pValueLeft===pValueRight;case'==':return pValueLeft==pValueRight;default:return false;}}}module.exports=PictTemplateProviderTemplateIfBase;},{"pict-template":232}],303:[function(require,module,exports){const libPictTemplateIf=require('./Pict-Template-TemplateIf-Base.js');class PictTemplateProviderTemplateIf extends libPictTemplateIf{/**
11317
11517
  * @param {Object} pFable - The Fable Framework instance
11318
11518
  * @param {Object} pOptions - The options for the service
11319
11519
  * @param {String} pServiceHash - The hash of the service
@@ -11348,7 +11548,7 @@ if(!tmpTemplateHash){this.log.warn("Pict: Template Render: TemplateHash not reso
11348
11548
  if(!tmpComparisonOperation){this.log.warn("Pict: Template Render: Comparison Operation not resolved for [".concat(tmpHash,"]"));return tmpCallback(null,'');}// Now try to break the comparison into three parts...
11349
11549
  let tmpComparisonParts=tmpComparisonOperation.split('^');if(tmpComparisonParts.length<3){this.log.warn("Pict: Template Render: Comparison Operation not complete (three parts expected) for [".concat(tmpHash,"]"));return tmpCallback(null,'');}// Now look up the data at the comparison location
11350
11550
  try{// This is the only thing that's different from the absolute value function above. Collapse these.
11351
- let tmpComparisonResult=this.compareValues(this.resolveStateFromAddress(tmpComparisonParts[0],tmpData,pContextArray,null,pScope,pState),tmpComparisonParts[1],this.resolveStateFromAddress(tmpComparisonParts[2],tmpData,pContextArray,null,pScope,pState));if(!tmpComparisonResult){return tmpCallback(null,'');}if(!tmpAddressOfData){this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateHash,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}catch(pError){this.log.error("Pict: Template Render: Error looking up comparison data for [".concat(tmpHash,"]: ").concat(pError),pError);return tmpCallback(pError,'');}}}module.exports=PictTemplateProviderTemplateIf;},{"./Pict-Template-TemplateIf-Base.js":299}],301:[function(require,module,exports){const libPictTemplateIf=require('./Pict-Template-TemplateIf-Base.js');class PictTemplateProviderTemplateIfAbsolute extends libPictTemplateIf{/**
11551
+ let tmpComparisonResult=this.compareValues(this.resolveStateFromAddress(tmpComparisonParts[0],tmpData,pContextArray,null,pScope,pState),tmpComparisonParts[1],this.resolveStateFromAddress(tmpComparisonParts[2],tmpData,pContextArray,null,pScope,pState));if(!tmpComparisonResult){return tmpCallback(null,'');}if(!tmpAddressOfData){this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateHash,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}catch(pError){this.log.error("Pict: Template Render: Error looking up comparison data for [".concat(tmpHash,"]: ").concat(pError),pError);return tmpCallback(pError,'');}}}module.exports=PictTemplateProviderTemplateIf;},{"./Pict-Template-TemplateIf-Base.js":302}],304:[function(require,module,exports){const libPictTemplateIf=require('./Pict-Template-TemplateIf-Base.js');class PictTemplateProviderTemplateIfAbsolute extends libPictTemplateIf{/**
11352
11552
  * @param {Object} pFable - The Fable Framework instance
11353
11553
  * @param {Object} pOptions - The options for the service
11354
11554
  * @param {String} pServiceHash - The hash of the service
@@ -11382,7 +11582,7 @@ return this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,null,pContextArray,
11382
11582
  if(!tmpTemplateHash){this.log.warn("Pict: Template Render: TemplateHash not resolved for [".concat(tmpHash,"]"));return tmpCallback(null,'');}// No comparison operation
11383
11583
  if(!tmpComparisonOperation){this.log.warn("Pict: Template Render: Comparison Operation not resolved for [".concat(tmpHash,"]"));return tmpCallback(null,'');}// Now try to break the comparison into three parts...
11384
11584
  let tmpComparisonParts=tmpComparisonOperation.split('^');if(tmpComparisonParts.length<3){this.log.warn("Pict: Template Render: Comparison Operation not complete (three parts expected) for [".concat(tmpHash,"]"));return tmpCallback(null,'');}// Now look up the data at the comparison location
11385
- try{let tmpComparisonResult=this.compareValues(this.resolveStateFromAddress(tmpComparisonParts[0],tmpData,pContextArray,null,pScope,pState),tmpComparisonParts[1],tmpComparisonParts[2]);if(!tmpComparisonResult){return tmpCallback(null,'');}if(!tmpAddressOfData){this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateHash,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}catch(pError){this.log.error("Pict: Template Render: Error looking up comparison data for [".concat(tmpHash,"]: ").concat(pError),pError);return tmpCallback(pError,'');}}}module.exports=PictTemplateProviderTemplateIfAbsolute;},{"./Pict-Template-TemplateIf-Base.js":299}],302:[function(require,module,exports){/**
11585
+ try{let tmpComparisonResult=this.compareValues(this.resolveStateFromAddress(tmpComparisonParts[0],tmpData,pContextArray,null,pScope,pState),tmpComparisonParts[1],tmpComparisonParts[2]);if(!tmpComparisonResult){return tmpCallback(null,'');}if(!tmpAddressOfData){this.pict.parseTemplateByHash(tmpTemplateHash,pRecord,(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}else{this.pict.parseTemplateByHash(tmpTemplateHash,this.resolveStateFromAddress(tmpAddressOfData,tmpData,pContextArray,null,pScope,pState),(pError,pValue)=>{if(pError){return tmpCallback(pError,'');}return tmpCallback(null,pValue);},pContextArray,pScope,pState);}}catch(pError){this.log.error("Pict: Template Render: Error looking up comparison data for [".concat(tmpHash,"]: ").concat(pError),pError);return tmpCallback(pError,'');}}}module.exports=PictTemplateProviderTemplateIfAbsolute;},{"./Pict-Template-TemplateIf-Base.js":302}],305:[function(require,module,exports){/**
11386
11586
  * Precedent Meta-Templating
11387
11587
  *
11388
11588
  * @license MIT
@@ -11405,7 +11605,7 @@ try{let tmpComparisonResult=this.compareValues(this.resolveStateFromAddress(tmpC
11405
11605
  * @param {string} pString - The string to parse
11406
11606
  * @param {object} pData - Data to pass in as the second argument
11407
11607
  * @return {string} The result from the parser
11408
- */parseString(pString,pData){return this.StringParser.parseString(pString,this.ParseTree,pData);}}module.exports=Precedent;},{"./StringParser.js":303,"./WordTree.js":304}],303:[function(require,module,exports){/**
11608
+ */parseString(pString,pData){return this.StringParser.parseString(pString,this.ParseTree,pData);}}module.exports=Precedent;},{"./StringParser.js":306,"./WordTree.js":307}],306:[function(require,module,exports){/**
11409
11609
  * String Parser
11410
11610
  * @author Steven Velozo <steven@velozo.com>
11411
11611
  * @description Parse a string, properly processing each matched token in the word tree.
@@ -11458,7 +11658,7 @@ this.resetOutputBuffer(pParserState);this.appendOutputBuffer(pCharacter,pParserS
11458
11658
  * @param {string} pString - The string to parse.
11459
11659
  * @param {Object} pParseTree - The parse tree to begin parsing from (usually root)
11460
11660
  * @param {Object} pData - The data to pass to the function as a second parameter
11461
- */parseString(pString,pParseTree,pData){let tmpParserState=this.newParserState(pParseTree);for(var i=0;i<pString.length;i++){this.parseCharacter(pString[i],tmpParserState,pData);}this.flushOutputBuffer(tmpParserState);return tmpParserState.Output;}}module.exports=StringParser;},{}],304:[function(require,module,exports){/**
11661
+ */parseString(pString,pParseTree,pData){let tmpParserState=this.newParserState(pParseTree);for(var i=0;i<pString.length;i++){this.parseCharacter(pString[i],tmpParserState,pData);}this.flushOutputBuffer(tmpParserState);return tmpParserState.Output;}}module.exports=StringParser;},{}],307:[function(require,module,exports){/**
11462
11662
  * Word Tree
11463
11663
  * @author Steven Velozo <steven@velozo.com>
11464
11664
  * @description Create a tree (directed graph) of Javascript objects, one character per object.
@@ -11485,7 +11685,7 @@ this.resetOutputBuffer(pParserState);this.appendOutputBuffer(pCharacter,pParserS
11485
11685
  * @param {function} fParser - The function to parse if this is the matched pattern, once the Pattern End is met. If this is a string, a simple replacement occurs.
11486
11686
  * @return {bool} True if adding the pattern was successful
11487
11687
  */addPattern(pPatternStart,pPatternEnd,fParser){if(pPatternStart.length<1){return false;}if(typeof pPatternEnd==='string'&&pPatternEnd.length<1){return false;}let tmpLeaf=this.ParseTree;// Add the tree of leaves iteratively
11488
- for(var i=0;i<pPatternStart.length;i++){tmpLeaf=this.addChild(tmpLeaf,pPatternStart[i],i);}if(!tmpLeaf.hasOwnProperty('PatternEnd')){tmpLeaf.PatternEnd={};}let tmpPatternEnd=typeof pPatternEnd==='string'?pPatternEnd:pPatternStart;for(let i=0;i<tmpPatternEnd.length;i++){tmpLeaf=this.addEndChild(tmpLeaf,tmpPatternEnd[i],i);}tmpLeaf.PatternStartString=pPatternStart;tmpLeaf.PatternEndString=tmpPatternEnd;tmpLeaf.Parse=typeof fParser==='function'?fParser:typeof fParser==='string'?()=>{return fParser;}:pData=>{return pData;};return true;}}module.exports=WordTree;},{}],305:[function(require,module,exports){// shim for using process in browser
11688
+ for(var i=0;i<pPatternStart.length;i++){tmpLeaf=this.addChild(tmpLeaf,pPatternStart[i],i);}if(!tmpLeaf.hasOwnProperty('PatternEnd')){tmpLeaf.PatternEnd={};}let tmpPatternEnd=typeof pPatternEnd==='string'?pPatternEnd:pPatternStart;for(let i=0;i<tmpPatternEnd.length;i++){tmpLeaf=this.addEndChild(tmpLeaf,tmpPatternEnd[i],i);}tmpLeaf.PatternStartString=pPatternStart;tmpLeaf.PatternEndString=tmpPatternEnd;tmpLeaf.Parse=typeof fParser==='function'?fParser:typeof fParser==='string'?()=>{return fParser;}:pData=>{return pData;};return true;}}module.exports=WordTree;},{}],308:[function(require,module,exports){// shim for using process in browser
11489
11689
  var process=module.exports={};// cached from whatever global is present so that test runners that stub it
11490
11690
  // don't break things. But we need to wrap it in a try catch in case it is
11491
11691
  // wrapped in strict mode code which doesn't define any globals. It's inside a
@@ -11503,7 +11703,7 @@ return cachedClearTimeout.call(null,marker);}catch(e){// same as above but when
11503
11703
  // Some versions of I.E. have different rules for clearTimeout vs setTimeout
11504
11704
  return cachedClearTimeout.call(this,marker);}}}var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){if(!draining||!currentQueue){return;}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue);}else{queueIndex=-1;}if(queue.length){drainQueue();}}function drainQueue(){if(draining){return;}var timeout=runTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){if(currentQueue){currentQueue[queueIndex].run();}}queueIndex=-1;len=queue.length;}currentQueue=null;draining=false;runClearTimeout(timeout);}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i];}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){runTimeout(drainQueue);}};// v8 likes predictible objects
11505
11705
  function Item(fun,array){this.fun=fun;this.array=array;}Item.prototype.run=function(){this.fun.apply(null,this.array);};process.title='browser';process.browser=true;process.env={};process.argv=[];process.version='';// empty string to avoid regexp issues
11506
- process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.prependListener=noop;process.prependOnceListener=noop;process.listeners=function(name){return[];};process.binding=function(name){throw new Error('process.binding is not supported');};process.cwd=function(){return'/';};process.chdir=function(dir){throw new Error('process.chdir is not supported');};process.umask=function(){return 0;};},{}],306:[function(require,module,exports){(function(global){(function(){/*! https://mths.be/punycode v1.4.1 by @mathias */;(function(root){/** Detect free variables */var freeExports=typeof exports=='object'&&exports&&!exports.nodeType&&exports;var freeModule=typeof module=='object'&&module&&!module.nodeType&&module;var freeGlobal=typeof global=='object'&&global;if(freeGlobal.global===freeGlobal||freeGlobal.window===freeGlobal||freeGlobal.self===freeGlobal){root=freeGlobal;}/**
11706
+ process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.prependListener=noop;process.prependOnceListener=noop;process.listeners=function(name){return[];};process.binding=function(name){throw new Error('process.binding is not supported');};process.cwd=function(){return'/';};process.chdir=function(dir){throw new Error('process.chdir is not supported');};process.umask=function(){return 0;};},{}],309:[function(require,module,exports){(function(global){(function(){/*! https://mths.be/punycode v1.4.1 by @mathias */;(function(root){/** Detect free variables */var freeExports=typeof exports=='object'&&exports&&!exports.nodeType&&exports;var freeModule=typeof module=='object'&&module&&!module.nodeType&&module;var freeGlobal=typeof global=='object'&&global;if(freeGlobal.global===freeGlobal||freeGlobal.window===freeGlobal||freeGlobal.self===freeGlobal){root=freeGlobal;}/**
11507
11707
  * The `punycode` object.
11508
11708
  * @name punycode
11509
11709
  * @type Object
@@ -11658,7 +11858,7 @@ for/* no condition */(q=delta,k=base;;k+=base){t=k<=bias?tMin:k>=bias+tMax?tMax:
11658
11858
  if(typeof define=='function'&&typeof define.amd=='object'&&define.amd){define('punycode',function(){return punycode;});}else if(freeExports&&freeModule){if(module.exports==freeExports){// in Node.js, io.js, or RingoJS v0.8.0+
11659
11859
  freeModule.exports=punycode;}else{// in Narwhal or RingoJS v0.7.0-
11660
11860
  for(key in punycode){punycode.hasOwnProperty(key)&&(freeExports[key]=punycode[key]);}}}else{// in Rhino or a web browser
11661
- root.punycode=punycode;}})(this);}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],307:[function(require,module,exports){'use strict';var replace=String.prototype.replace;var percentTwenties=/%20/g;var Format={RFC1738:'RFC1738',RFC3986:'RFC3986'};module.exports={'default':Format.RFC3986,formatters:{RFC1738:function RFC1738(value){return replace.call(value,percentTwenties,'+');},RFC3986:function RFC3986(value){return String(value);}},RFC1738:Format.RFC1738,RFC3986:Format.RFC3986};},{}],308:[function(require,module,exports){'use strict';var stringify=require('./stringify');var parse=require('./parse');var formats=require('./formats');module.exports={formats:formats,parse:parse,stringify:stringify};},{"./formats":307,"./parse":309,"./stringify":310}],309:[function(require,module,exports){'use strict';var utils=require('./utils');var has=Object.prototype.hasOwnProperty;var isArray=Array.isArray;var defaults={allowDots:false,allowEmptyArrays:false,allowPrototypes:false,allowSparse:false,arrayLimit:20,charset:'utf-8',charsetSentinel:false,comma:false,decodeDotInKeys:false,decoder:utils.decode,delimiter:'&',depth:5,duplicates:'combine',ignoreQueryPrefix:false,interpretNumericEntities:false,parameterLimit:1000,parseArrays:true,plainObjects:false,strictDepth:false,strictMerge:true,strictNullHandling:false,throwOnLimitExceeded:false};var interpretNumericEntities=function interpretNumericEntities(str){return str.replace(/&#(\d+);/g,function($0,numberStr){return String.fromCharCode(parseInt(numberStr,10));});};var parseArrayValue=function parseArrayValue(val,options,currentArrayLength){if(val&&typeof val==='string'&&options.comma&&val.indexOf(',')>-1){return val.split(',');}if(options.throwOnLimitExceeded&&currentArrayLength>=options.arrayLimit){throw new RangeError('Array limit exceeded. Only '+options.arrayLimit+' element'+(options.arrayLimit===1?'':'s')+' allowed in an array.');}return val;};// This is what browsers will submit when the ✓ character occurs in an
11861
+ root.punycode=punycode;}})(this);}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],310:[function(require,module,exports){'use strict';var replace=String.prototype.replace;var percentTwenties=/%20/g;var Format={RFC1738:'RFC1738',RFC3986:'RFC3986'};module.exports={'default':Format.RFC3986,formatters:{RFC1738:function RFC1738(value){return replace.call(value,percentTwenties,'+');},RFC3986:function RFC3986(value){return String(value);}},RFC1738:Format.RFC1738,RFC3986:Format.RFC3986};},{}],311:[function(require,module,exports){'use strict';var stringify=require('./stringify');var parse=require('./parse');var formats=require('./formats');module.exports={formats:formats,parse:parse,stringify:stringify};},{"./formats":310,"./parse":312,"./stringify":313}],312:[function(require,module,exports){'use strict';var utils=require('./utils');var has=Object.prototype.hasOwnProperty;var isArray=Array.isArray;var defaults={allowDots:false,allowEmptyArrays:false,allowPrototypes:false,allowSparse:false,arrayLimit:20,charset:'utf-8',charsetSentinel:false,comma:false,decodeDotInKeys:false,decoder:utils.decode,delimiter:'&',depth:5,duplicates:'combine',ignoreQueryPrefix:false,interpretNumericEntities:false,parameterLimit:1000,parseArrays:true,plainObjects:false,strictDepth:false,strictMerge:true,strictNullHandling:false,throwOnLimitExceeded:false};var interpretNumericEntities=function interpretNumericEntities(str){return str.replace(/&#(\d+);/g,function($0,numberStr){return String.fromCharCode(parseInt(numberStr,10));});};var parseArrayValue=function parseArrayValue(val,options,currentArrayLength){if(val&&typeof val==='string'&&options.comma&&val.indexOf(',')>-1){return val.split(',');}if(options.throwOnLimitExceeded&&currentArrayLength>=options.arrayLimit){throw new RangeError('Array limit exceeded. Only '+options.arrayLimit+' element'+(options.arrayLimit===1?'':'s')+' allowed in an array.');}return val;};// This is what browsers will submit when the ✓ character occurs in an
11662
11862
  // application/x-www-form-urlencoded body and the encoding of the page containing
11663
11863
  // the form is iso-8859-1, or when the submitted form has an accept-charset
11664
11864
  // attribute of iso-8859-1. Presumably also with other charsets that do not contain
@@ -11671,13 +11871,13 @@ var i;var charset=options.charset;if(options.charsetSentinel){for(i=0;i<parts.le
11671
11871
  }}}for(i=0;i<parts.length;++i){if(i===skipIndex){continue;}var part=parts[i];var bracketEqualsPos=part.indexOf(']=');var pos=bracketEqualsPos===-1?part.indexOf('='):bracketEqualsPos+1;var key;var val;if(pos===-1){key=options.decoder(part,defaults.decoder,charset,'key');val=options.strictNullHandling?null:'';}else{key=options.decoder(part.slice(0,pos),defaults.decoder,charset,'key');if(key!==null){val=utils.maybeMap(parseArrayValue(part.slice(pos+1),options,isArray(obj[key])?obj[key].length:0),function(encodedVal){return options.decoder(encodedVal,defaults.decoder,charset,'value');});}}if(val&&options.interpretNumericEntities&&charset==='iso-8859-1'){val=interpretNumericEntities(String(val));}if(part.indexOf('[]=')>-1){val=isArray(val)?[val]:val;}if(options.comma&&isArray(val)&&val.length>options.arrayLimit){if(options.throwOnLimitExceeded){throw new RangeError('Array limit exceeded. Only '+options.arrayLimit+' element'+(options.arrayLimit===1?'':'s')+' allowed in an array.');}val=utils.combine([],val,options.arrayLimit,options.plainObjects);}if(key!==null){var existing=has.call(obj,key);if(existing&&(options.duplicates==='combine'||part.indexOf('[]=')>-1)){obj[key]=utils.combine(obj[key],val,options.arrayLimit,options.plainObjects);}else if(!existing||options.duplicates==='last'){obj[key]=val;}}}return obj;};var parseObject=function parseObject(chain,val,options,valuesParsed){var currentArrayLength=0;if(chain.length>0&&chain[chain.length-1]==='[]'){var parentKey=chain.slice(0,-1).join('');currentArrayLength=Array.isArray(val)&&val[parentKey]?val[parentKey].length:0;}var leaf=valuesParsed?val:parseArrayValue(val,options,currentArrayLength);for(var i=chain.length-1;i>=0;--i){var obj;var root=chain[i];if(root==='[]'&&options.parseArrays){if(utils.isOverflow(leaf)){// leaf is already an overflow object, preserve it
11672
11872
  obj=leaf;}else{obj=options.allowEmptyArrays&&(leaf===''||options.strictNullHandling&&leaf===null)?[]:utils.combine([],leaf,options.arrayLimit,options.plainObjects);}}else{obj=options.plainObjects?{__proto__:null}:{};var cleanRoot=root.charAt(0)==='['&&root.charAt(root.length-1)===']'?root.slice(1,-1):root;var decodedRoot=options.decodeDotInKeys?cleanRoot.replace(/%2E/g,'.'):cleanRoot;var index=parseInt(decodedRoot,10);var isValidArrayIndex=!isNaN(index)&&root!==decodedRoot&&String(index)===decodedRoot&&index>=0&&options.parseArrays;if(!options.parseArrays&&decodedRoot===''){obj={0:leaf};}else if(isValidArrayIndex&&index<options.arrayLimit){obj=[];obj[index]=leaf;}else if(isValidArrayIndex&&options.throwOnLimitExceeded){throw new RangeError('Array limit exceeded. Only '+options.arrayLimit+' element'+(options.arrayLimit===1?'':'s')+' allowed in an array.');}else if(isValidArrayIndex){obj[index]=leaf;utils.markOverflow(obj,index);}else if(decodedRoot!=='__proto__'){obj[decodedRoot]=leaf;}}leaf=obj;}return leaf;};var splitKeyIntoSegments=function splitKeyIntoSegments(givenKey,options){var key=options.allowDots?givenKey.replace(/\.([^.[]+)/g,'[$1]'):givenKey;if(options.depth<=0){if(!options.plainObjects&&has.call(Object.prototype,key)){if(!options.allowPrototypes){return;}}return[key];}var brackets=/(\[[^[\]]*])/;var child=/(\[[^[\]]*])/g;var segment=brackets.exec(key);var parent=segment?key.slice(0,segment.index):key;var keys=[];if(parent){if(!options.plainObjects&&has.call(Object.prototype,parent)){if(!options.allowPrototypes){return;}}keys[keys.length]=parent;}var i=0;while((segment=child.exec(key))!==null&&i<options.depth){i+=1;var segmentContent=segment[1].slice(1,-1);if(!options.plainObjects&&has.call(Object.prototype,segmentContent)){if(!options.allowPrototypes){return;}}keys[keys.length]=segment[1];}if(segment){if(options.strictDepth===true){throw new RangeError('Input depth exceeded depth option of '+options.depth+' and strictDepth is true');}keys[keys.length]='['+key.slice(segment.index)+']';}return keys;};var parseKeys=function parseQueryStringKeys(givenKey,val,options,valuesParsed){if(!givenKey){return;}var keys=splitKeyIntoSegments(givenKey,options);if(!keys){return;}return parseObject(keys,val,options,valuesParsed);};var normalizeParseOptions=function normalizeParseOptions(opts){if(!opts){return defaults;}if(typeof opts.allowEmptyArrays!=='undefined'&&typeof opts.allowEmptyArrays!=='boolean'){throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');}if(typeof opts.decodeDotInKeys!=='undefined'&&typeof opts.decodeDotInKeys!=='boolean'){throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');}if(opts.decoder!==null&&typeof opts.decoder!=='undefined'&&typeof opts.decoder!=='function'){throw new TypeError('Decoder has to be a function.');}if(typeof opts.charset!=='undefined'&&opts.charset!=='utf-8'&&opts.charset!=='iso-8859-1'){throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');}if(typeof opts.throwOnLimitExceeded!=='undefined'&&typeof opts.throwOnLimitExceeded!=='boolean'){throw new TypeError('`throwOnLimitExceeded` option must be a boolean');}var charset=typeof opts.charset==='undefined'?defaults.charset:opts.charset;var duplicates=typeof opts.duplicates==='undefined'?defaults.duplicates:opts.duplicates;if(duplicates!=='combine'&&duplicates!=='first'&&duplicates!=='last'){throw new TypeError('The duplicates option must be either combine, first, or last');}var allowDots=typeof opts.allowDots==='undefined'?opts.decodeDotInKeys===true?true:defaults.allowDots:!!opts.allowDots;return{allowDots:allowDots,allowEmptyArrays:typeof opts.allowEmptyArrays==='boolean'?!!opts.allowEmptyArrays:defaults.allowEmptyArrays,allowPrototypes:typeof opts.allowPrototypes==='boolean'?opts.allowPrototypes:defaults.allowPrototypes,allowSparse:typeof opts.allowSparse==='boolean'?opts.allowSparse:defaults.allowSparse,arrayLimit:typeof opts.arrayLimit==='number'?opts.arrayLimit:defaults.arrayLimit,charset:charset,charsetSentinel:typeof opts.charsetSentinel==='boolean'?opts.charsetSentinel:defaults.charsetSentinel,comma:typeof opts.comma==='boolean'?opts.comma:defaults.comma,decodeDotInKeys:typeof opts.decodeDotInKeys==='boolean'?opts.decodeDotInKeys:defaults.decodeDotInKeys,decoder:typeof opts.decoder==='function'?opts.decoder:defaults.decoder,delimiter:typeof opts.delimiter==='string'||utils.isRegExp(opts.delimiter)?opts.delimiter:defaults.delimiter,// eslint-disable-next-line no-implicit-coercion, no-extra-parens
11673
11873
  depth:typeof opts.depth==='number'||opts.depth===false?+opts.depth:defaults.depth,duplicates:duplicates,ignoreQueryPrefix:opts.ignoreQueryPrefix===true,interpretNumericEntities:typeof opts.interpretNumericEntities==='boolean'?opts.interpretNumericEntities:defaults.interpretNumericEntities,parameterLimit:typeof opts.parameterLimit==='number'?opts.parameterLimit:defaults.parameterLimit,parseArrays:opts.parseArrays!==false,plainObjects:typeof opts.plainObjects==='boolean'?opts.plainObjects:defaults.plainObjects,strictDepth:typeof opts.strictDepth==='boolean'?!!opts.strictDepth:defaults.strictDepth,strictMerge:typeof opts.strictMerge==='boolean'?!!opts.strictMerge:defaults.strictMerge,strictNullHandling:typeof opts.strictNullHandling==='boolean'?opts.strictNullHandling:defaults.strictNullHandling,throwOnLimitExceeded:typeof opts.throwOnLimitExceeded==='boolean'?opts.throwOnLimitExceeded:false};};module.exports=function(str,opts){var options=normalizeParseOptions(opts);if(str===''||str===null||typeof str==='undefined'){return options.plainObjects?{__proto__:null}:{};}var tempObj=typeof str==='string'?parseValues(str,options):str;var obj=options.plainObjects?{__proto__:null}:{};// Iterate over the keys and setup the new object
11674
- var keys=Object.keys(tempObj);for(var i=0;i<keys.length;++i){var key=keys[i];var newObj=parseKeys(key,tempObj[key],options,typeof str==='string');obj=utils.merge(obj,newObj,options);}if(options.allowSparse===true){return obj;}return utils.compact(obj);};},{"./utils":311}],310:[function(require,module,exports){'use strict';var getSideChannel=require('side-channel');var utils=require('./utils');var formats=require('./formats');var has=Object.prototype.hasOwnProperty;var arrayPrefixGenerators={brackets:function brackets(prefix){return prefix+'[]';},comma:'comma',indices:function indices(prefix,key){return prefix+'['+key+']';},repeat:function repeat(prefix){return prefix;}};var isArray=Array.isArray;var push=Array.prototype.push;var pushToArray=function pushToArray(arr,valueOrArray){push.apply(arr,isArray(valueOrArray)?valueOrArray:[valueOrArray]);};var toISO=Date.prototype.toISOString;var defaultFormat=formats['default'];var defaults={addQueryPrefix:false,allowDots:false,allowEmptyArrays:false,arrayFormat:'indices',charset:'utf-8',charsetSentinel:false,commaRoundTrip:false,delimiter:'&',encode:true,encodeDotInKeys:false,encoder:utils.encode,encodeValuesOnly:false,filter:void undefined,format:defaultFormat,formatter:formats.formatters[defaultFormat],// deprecated
11874
+ var keys=Object.keys(tempObj);for(var i=0;i<keys.length;++i){var key=keys[i];var newObj=parseKeys(key,tempObj[key],options,typeof str==='string');obj=utils.merge(obj,newObj,options);}if(options.allowSparse===true){return obj;}return utils.compact(obj);};},{"./utils":314}],313:[function(require,module,exports){'use strict';var getSideChannel=require('side-channel');var utils=require('./utils');var formats=require('./formats');var has=Object.prototype.hasOwnProperty;var arrayPrefixGenerators={brackets:function brackets(prefix){return prefix+'[]';},comma:'comma',indices:function indices(prefix,key){return prefix+'['+key+']';},repeat:function repeat(prefix){return prefix;}};var isArray=Array.isArray;var push=Array.prototype.push;var pushToArray=function pushToArray(arr,valueOrArray){push.apply(arr,isArray(valueOrArray)?valueOrArray:[valueOrArray]);};var toISO=Date.prototype.toISOString;var defaultFormat=formats['default'];var defaults={addQueryPrefix:false,allowDots:false,allowEmptyArrays:false,arrayFormat:'indices',charset:'utf-8',charsetSentinel:false,commaRoundTrip:false,delimiter:'&',encode:true,encodeDotInKeys:false,encoder:utils.encode,encodeValuesOnly:false,filter:void undefined,format:defaultFormat,formatter:formats.formatters[defaultFormat],// deprecated
11675
11875
  indices:false,serializeDate:function serializeDate(date){return toISO.call(date);},skipNulls:false,strictNullHandling:false};var isNonNullishPrimitive=function isNonNullishPrimitive(v){return typeof v==='string'||typeof v==='number'||typeof v==='boolean'||typeof v==='symbol'||typeof v==='bigint';};var sentinel={};var stringify=function stringify(object,prefix,generateArrayPrefix,commaRoundTrip,allowEmptyArrays,strictNullHandling,skipNulls,encodeDotInKeys,encoder,filter,sort,allowDots,serializeDate,format,formatter,encodeValuesOnly,charset,sideChannel){var obj=object;var tmpSc=sideChannel;var step=0;var findFlag=false;while((tmpSc=tmpSc.get(sentinel))!==void undefined&&!findFlag){// Where object last appeared in the ref tree
11676
11876
  var pos=tmpSc.get(object);step+=1;if(typeof pos!=='undefined'){if(pos===step){throw new RangeError('Cyclic object value');}else{findFlag=true;// Break while
11677
11877
  }}if(typeof tmpSc.get(sentinel)==='undefined'){step=0;}}if(typeof filter==='function'){obj=filter(prefix,obj);}else if(obj instanceof Date){obj=serializeDate(obj);}else if(generateArrayPrefix==='comma'&&isArray(obj)){obj=utils.maybeMap(obj,function(value){if(value instanceof Date){return serializeDate(value);}return value;});}if(obj===null){if(strictNullHandling){return encoder&&!encodeValuesOnly?encoder(prefix,defaults.encoder,charset,'key',format):prefix;}obj='';}if(isNonNullishPrimitive(obj)||utils.isBuffer(obj)){if(encoder){var keyValue=encodeValuesOnly?prefix:encoder(prefix,defaults.encoder,charset,'key',format);return[formatter(keyValue)+'='+formatter(encoder(obj,defaults.encoder,charset,'value',format))];}return[formatter(prefix)+'='+formatter(String(obj))];}var values=[];if(typeof obj==='undefined'){return values;}var objKeys;if(generateArrayPrefix==='comma'&&isArray(obj)){// we need to join elements in
11678
11878
  if(encodeValuesOnly&&encoder){obj=utils.maybeMap(obj,encoder);}objKeys=[{value:obj.length>0?obj.join(',')||null:void undefined}];}else if(isArray(filter)){objKeys=filter;}else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys;}var encodedPrefix=encodeDotInKeys?String(prefix).replace(/\./g,'%2E'):String(prefix);var adjustedPrefix=commaRoundTrip&&isArray(obj)&&obj.length===1?encodedPrefix+'[]':encodedPrefix;if(allowEmptyArrays&&isArray(obj)&&obj.length===0){return adjustedPrefix+'[]';}for(var j=0;j<objKeys.length;++j){var key=objKeys[j];var value=typeof key==='object'&&key&&typeof key.value!=='undefined'?key.value:obj[key];if(skipNulls&&value===null){continue;}var encodedKey=allowDots&&encodeDotInKeys?String(key).replace(/\./g,'%2E'):String(key);var keyPrefix=isArray(obj)?typeof generateArrayPrefix==='function'?generateArrayPrefix(adjustedPrefix,encodedKey):adjustedPrefix:adjustedPrefix+(allowDots?'.'+encodedKey:'['+encodedKey+']');sideChannel.set(object,step);var valueSideChannel=getSideChannel();valueSideChannel.set(sentinel,sideChannel);pushToArray(values,stringify(value,keyPrefix,generateArrayPrefix,commaRoundTrip,allowEmptyArrays,strictNullHandling,skipNulls,encodeDotInKeys,generateArrayPrefix==='comma'&&encodeValuesOnly&&isArray(obj)?null:encoder,filter,sort,allowDots,serializeDate,format,formatter,encodeValuesOnly,charset,valueSideChannel));}return values;};var normalizeStringifyOptions=function normalizeStringifyOptions(opts){if(!opts){return defaults;}if(typeof opts.allowEmptyArrays!=='undefined'&&typeof opts.allowEmptyArrays!=='boolean'){throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');}if(typeof opts.encodeDotInKeys!=='undefined'&&typeof opts.encodeDotInKeys!=='boolean'){throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');}if(opts.encoder!==null&&typeof opts.encoder!=='undefined'&&typeof opts.encoder!=='function'){throw new TypeError('Encoder has to be a function.');}var charset=opts.charset||defaults.charset;if(typeof opts.charset!=='undefined'&&opts.charset!=='utf-8'&&opts.charset!=='iso-8859-1'){throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');}var format=formats['default'];if(typeof opts.format!=='undefined'){if(!has.call(formats.formatters,opts.format)){throw new TypeError('Unknown format option provided.');}format=opts.format;}var formatter=formats.formatters[format];var filter=defaults.filter;if(typeof opts.filter==='function'||isArray(opts.filter)){filter=opts.filter;}var arrayFormat;if(opts.arrayFormat in arrayPrefixGenerators){arrayFormat=opts.arrayFormat;}else if('indices'in opts){arrayFormat=opts.indices?'indices':'repeat';}else{arrayFormat=defaults.arrayFormat;}if('commaRoundTrip'in opts&&typeof opts.commaRoundTrip!=='boolean'){throw new TypeError('`commaRoundTrip` must be a boolean, or absent');}var allowDots=typeof opts.allowDots==='undefined'?opts.encodeDotInKeys===true?true:defaults.allowDots:!!opts.allowDots;return{addQueryPrefix:typeof opts.addQueryPrefix==='boolean'?opts.addQueryPrefix:defaults.addQueryPrefix,allowDots:allowDots,allowEmptyArrays:typeof opts.allowEmptyArrays==='boolean'?!!opts.allowEmptyArrays:defaults.allowEmptyArrays,arrayFormat:arrayFormat,charset:charset,charsetSentinel:typeof opts.charsetSentinel==='boolean'?opts.charsetSentinel:defaults.charsetSentinel,commaRoundTrip:!!opts.commaRoundTrip,delimiter:typeof opts.delimiter==='undefined'?defaults.delimiter:opts.delimiter,encode:typeof opts.encode==='boolean'?opts.encode:defaults.encode,encodeDotInKeys:typeof opts.encodeDotInKeys==='boolean'?opts.encodeDotInKeys:defaults.encodeDotInKeys,encoder:typeof opts.encoder==='function'?opts.encoder:defaults.encoder,encodeValuesOnly:typeof opts.encodeValuesOnly==='boolean'?opts.encodeValuesOnly:defaults.encodeValuesOnly,filter:filter,format:format,formatter:formatter,serializeDate:typeof opts.serializeDate==='function'?opts.serializeDate:defaults.serializeDate,skipNulls:typeof opts.skipNulls==='boolean'?opts.skipNulls:defaults.skipNulls,sort:typeof opts.sort==='function'?opts.sort:null,strictNullHandling:typeof opts.strictNullHandling==='boolean'?opts.strictNullHandling:defaults.strictNullHandling};};module.exports=function(object,opts){var obj=object;var options=normalizeStringifyOptions(opts);var objKeys;var filter;if(typeof options.filter==='function'){filter=options.filter;obj=filter('',obj);}else if(isArray(options.filter)){filter=options.filter;objKeys=filter;}var keys=[];if(typeof obj!=='object'||obj===null){return'';}var generateArrayPrefix=arrayPrefixGenerators[options.arrayFormat];var commaRoundTrip=generateArrayPrefix==='comma'&&options.commaRoundTrip;if(!objKeys){objKeys=Object.keys(obj);}if(options.sort){objKeys.sort(options.sort);}var sideChannel=getSideChannel();for(var i=0;i<objKeys.length;++i){var key=objKeys[i];var value=obj[key];if(options.skipNulls&&value===null){continue;}pushToArray(keys,stringify(value,key,generateArrayPrefix,commaRoundTrip,options.allowEmptyArrays,options.strictNullHandling,options.skipNulls,options.encodeDotInKeys,options.encode?options.encoder:null,options.filter,options.sort,options.allowDots,options.serializeDate,options.format,options.formatter,options.encodeValuesOnly,options.charset,sideChannel));}var joined=keys.join(options.delimiter);var prefix=options.addQueryPrefix===true?'?':'';if(options.charsetSentinel){if(options.charset==='iso-8859-1'){// encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
11679
11879
  prefix+='utf8=%26%2310003%3B&';}else{// encodeURIComponent('✓')
11680
- prefix+='utf8=%E2%9C%93&';}}return joined.length>0?prefix+joined:'';};},{"./formats":307,"./utils":311,"side-channel":319}],311:[function(require,module,exports){'use strict';var formats=require('./formats');var getSideChannel=require('side-channel');var has=Object.prototype.hasOwnProperty;var isArray=Array.isArray;// Track objects created from arrayLimit overflow using side-channel
11880
+ prefix+='utf8=%E2%9C%93&';}}return joined.length>0?prefix+joined:'';};},{"./formats":310,"./utils":314,"side-channel":322}],314:[function(require,module,exports){'use strict';var formats=require('./formats');var getSideChannel=require('side-channel');var has=Object.prototype.hasOwnProperty;var isArray=Array.isArray;// Track objects created from arrayLimit overflow using side-channel
11681
11881
  // Stores the current max numeric index for O(1) lookup
11682
11882
  var overflowChannel=getSideChannel();var markOverflow=function markOverflow(obj,maxIndex){overflowChannel.set(obj,maxIndex);return obj;};var isOverflow=function isOverflow(obj){return overflowChannel.has(obj);};var getMaxIndex=function getMaxIndex(obj){return overflowChannel.get(obj);};var setMaxIndex=function setMaxIndex(obj,maxIndex){overflowChannel.set(obj,maxIndex);};var hexTable=function(){var array=[];for(var i=0;i<256;++i){array[array.length]='%'+((i<16?'0':'')+i.toString(16)).toUpperCase();}return array;}();var compactQueue=function compactQueue(queue){while(queue.length>1){var item=queue.pop();var obj=item.obj[item.prop];if(isArray(obj)){var compacted=[];for(var j=0;j<obj.length;++j){if(typeof obj[j]!=='undefined'){compacted[compacted.length]=obj[j];}}item.obj[item.prop]=compacted;}}};var arrayToObject=function arrayToObject(source,options){var obj=options&&options.plainObjects?{__proto__:null}:{};for(var i=0;i<source.length;++i){if(typeof source[i]!=='undefined'){obj[i]=source[i];}}return obj;};var merge=function merge(target,source,options){/* eslint no-param-reassign: 0 */if(!source){return target;}if(typeof source!=='object'&&typeof source!=='function'){if(isArray(target)){var nextIndex=target.length;if(options&&typeof options.arrayLimit==='number'&&nextIndex>options.arrayLimit){return markOverflow(arrayToObject(target.concat(source),options),nextIndex);}target[nextIndex]=source;}else if(target&&typeof target==='object'){if(isOverflow(target)){// Add at next numeric index for overflow objects
11683
11883
  var newIndex=getMaxIndex(target)+1;target[newIndex]=source;setMaxIndex(target,newIndex);}else if(options&&options.strictMerge){return[target,source];}else if(options&&(options.plainObjects||options.allowPrototypes)||!has.call(Object.prototype,source)){target[source]=true;}}else{return[target,source];}return target;}if(!target||typeof target!=='object'){if(isOverflow(source)){// Create new object with target at 0, source values shifted by 1
@@ -11694,7 +11894,7 @@ if(str.length===0){return str;}var string=str;if(typeof str==='symbol'){string=S
11694
11894
  ||c>=0x61&&c<=0x7A// A-Z
11695
11895
  ||format===formats.RFC1738&&(c===0x28||c===0x29)// ( )
11696
11896
  ){arr[arr.length]=segment.charAt(i);continue;}if(c<0x80){arr[arr.length]=hexTable[c];continue;}if(c<0x800){arr[arr.length]=hexTable[0xC0|c>>6]+hexTable[0x80|c&0x3F];continue;}if(c<0xD800||c>=0xE000){arr[arr.length]=hexTable[0xE0|c>>12]+hexTable[0x80|c>>6&0x3F]+hexTable[0x80|c&0x3F];continue;}i+=1;c=0x10000+((c&0x3FF)<<10|segment.charCodeAt(i)&0x3FF);arr[arr.length]=hexTable[0xF0|c>>18]+hexTable[0x80|c>>12&0x3F]+hexTable[0x80|c>>6&0x3F]+hexTable[0x80|c&0x3F];}out+=arr.join('');}return out;};var compact=function compact(value){var queue=[{obj:{o:value},prop:'o'}];var refs=[];for(var i=0;i<queue.length;++i){var item=queue[i];var obj=item.obj[item.prop];var keys=Object.keys(obj);for(var j=0;j<keys.length;++j){var key=keys[j];var val=obj[key];if(typeof val==='object'&&val!==null&&refs.indexOf(val)===-1){queue[queue.length]={obj:obj,prop:key};refs[refs.length]=val;}}}compactQueue(queue);return value;};var isRegExp=function isRegExp(obj){return Object.prototype.toString.call(obj)==='[object RegExp]';};var isBuffer=function isBuffer(obj){if(!obj||typeof obj!=='object'){return false;}return!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj));};var combine=function combine(a,b,arrayLimit,plainObjects){// If 'a' is already an overflow object, add to it
11697
- if(isOverflow(a)){var newIndex=getMaxIndex(a)+1;a[newIndex]=b;setMaxIndex(a,newIndex);return a;}var result=[].concat(a,b);if(result.length>arrayLimit){return markOverflow(arrayToObject(result,{plainObjects:plainObjects}),result.length-1);}return result;};var maybeMap=function maybeMap(val,fn){if(isArray(val)){var mapped=[];for(var i=0;i<val.length;i+=1){mapped[mapped.length]=fn(val[i]);}return mapped;}return fn(val);};module.exports={arrayToObject:arrayToObject,assign:assign,combine:combine,compact:compact,decode:decode,encode:encode,isBuffer:isBuffer,isOverflow:isOverflow,isRegExp:isRegExp,markOverflow:markOverflow,maybeMap:maybeMap,merge:merge};},{"./formats":307,"side-channel":319}],312:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
11897
+ if(isOverflow(a)){var newIndex=getMaxIndex(a)+1;a[newIndex]=b;setMaxIndex(a,newIndex);return a;}var result=[].concat(a,b);if(result.length>arrayLimit){return markOverflow(arrayToObject(result,{plainObjects:plainObjects}),result.length-1);}return result;};var maybeMap=function maybeMap(val,fn){if(isArray(val)){var mapped=[];for(var i=0;i<val.length;i+=1){mapped[mapped.length]=fn(val[i]);}return mapped;}return fn(val);};module.exports={arrayToObject:arrayToObject,assign:assign,combine:combine,compact:compact,decode:decode,encode:encode,isBuffer:isBuffer,isOverflow:isOverflow,isRegExp:isRegExp,markOverflow:markOverflow,maybeMap:maybeMap,merge:merge};},{"./formats":310,"side-channel":322}],315:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
11698
11898
  //
11699
11899
  // Permission is hereby granted, free of charge, to any person obtaining a
11700
11900
  // copy of this software and associated documentation files (the
@@ -11718,7 +11918,7 @@ if(isOverflow(a)){var newIndex=getMaxIndex(a)+1;a[newIndex]=b;setMaxIndex(a,newI
11718
11918
  // obj.hasOwnProperty(prop) will break.
11719
11919
  // See: https://github.com/joyent/node/issues/1707
11720
11920
  function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop);}module.exports=function(qs,sep,eq,options){sep=sep||'&';eq=eq||'=';var obj={};if(typeof qs!=='string'||qs.length===0){return obj;}var regexp=/\+/g;qs=qs.split(sep);var maxKeys=1000;if(options&&typeof options.maxKeys==='number'){maxKeys=options.maxKeys;}var len=qs.length;// maxKeys <= 0 means that we should not limit keys count
11721
- if(maxKeys>0&&len>maxKeys){len=maxKeys;}for(var i=0;i<len;++i){var x=qs[i].replace(regexp,'%20'),idx=x.indexOf(eq),kstr,vstr,k,v;if(idx>=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1);}else{kstr=x;vstr='';}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v;}else if(isArray(obj[k])){obj[k].push(v);}else{obj[k]=[obj[k],v];}}return obj;};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};},{}],313:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
11921
+ if(maxKeys>0&&len>maxKeys){len=maxKeys;}for(var i=0;i<len;++i){var x=qs[i].replace(regexp,'%20'),idx=x.indexOf(eq),kstr,vstr,k,v;if(idx>=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1);}else{kstr=x;vstr='';}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v;}else if(isArray(obj[k])){obj[k].push(v);}else{obj[k]=[obj[k],v];}}return obj;};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};},{}],316:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
11722
11922
  //
11723
11923
  // Permission is hereby granted, free of charge, to any person obtaining a
11724
11924
  // copy of this software and associated documentation files (the
@@ -11738,10 +11938,10 @@ if(maxKeys>0&&len>maxKeys){len=maxKeys;}for(var i=0;i<len;++i){var x=qs[i].repla
11738
11938
  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11739
11939
  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11740
11940
  // USE OR OTHER DEALINGS IN THE SOFTWARE.
11741
- 'use strict';var stringifyPrimitive=function stringifyPrimitive(v){switch(typeof v){case'string':return v;case'boolean':return v?'true':'false';case'number':return isFinite(v)?v:'';default:return'';}};module.exports=function(obj,sep,eq,name){sep=sep||'&';eq=eq||'=';if(obj===null){obj=undefined;}if(typeof obj==='object'){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v));}).join(sep);}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]));}}).join(sep);}if(!name)return'';return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj));};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i<xs.length;i++){res.push(f(xs[i],i));}return res;}var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))res.push(key);}return res;};},{}],314:[function(require,module,exports){'use strict';exports.decode=exports.parse=require('./decode');exports.encode=exports.stringify=require('./encode');},{"./decode":312,"./encode":313}],315:[function(require,module,exports){/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *//* eslint-disable node/no-deprecated-api */var buffer=require('buffer');var Buffer=buffer.Buffer;// alternative to using Object.keys for old browsers
11941
+ 'use strict';var stringifyPrimitive=function stringifyPrimitive(v){switch(typeof v){case'string':return v;case'boolean':return v?'true':'false';case'number':return isFinite(v)?v:'';default:return'';}};module.exports=function(obj,sep,eq,name){sep=sep||'&';eq=eq||'=';if(obj===null){obj=undefined;}if(typeof obj==='object'){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v));}).join(sep);}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]));}}).join(sep);}if(!name)return'';return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj));};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i<xs.length;i++){res.push(f(xs[i],i));}return res;}var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))res.push(key);}return res;};},{}],317:[function(require,module,exports){'use strict';exports.decode=exports.parse=require('./decode');exports.encode=exports.stringify=require('./encode');},{"./decode":315,"./encode":316}],318:[function(require,module,exports){/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *//* eslint-disable node/no-deprecated-api */var buffer=require('buffer');var Buffer=buffer.Buffer;// alternative to using Object.keys for old browsers
11742
11942
  function copyProps(src,dst){for(var key in src){dst[key]=src[key];}}if(Buffer.from&&Buffer.alloc&&Buffer.allocUnsafe&&Buffer.allocUnsafeSlow){module.exports=buffer;}else{// Copy properties from require('buffer')
11743
11943
  copyProps(buffer,exports);exports.Buffer=SafeBuffer;}function SafeBuffer(arg,encodingOrOffset,length){return Buffer(arg,encodingOrOffset,length);}SafeBuffer.prototype=Object.create(Buffer.prototype);// Copy static methods from Buffer
11744
- copyProps(Buffer,SafeBuffer);SafeBuffer.from=function(arg,encodingOrOffset,length){if(typeof arg==='number'){throw new TypeError('Argument must not be a number');}return Buffer(arg,encodingOrOffset,length);};SafeBuffer.alloc=function(size,fill,encoding){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}var buf=Buffer(size);if(fill!==undefined){if(typeof encoding==='string'){buf.fill(fill,encoding);}else{buf.fill(fill);}}else{buf.fill(0);}return buf;};SafeBuffer.allocUnsafe=function(size){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}return Buffer(size);};SafeBuffer.allocUnsafeSlow=function(size){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}return buffer.SlowBuffer(size);};},{"buffer":20}],316:[function(require,module,exports){'use strict';var inspect=require('object-inspect');var $TypeError=require('es-errors/type');/*
11944
+ copyProps(Buffer,SafeBuffer);SafeBuffer.from=function(arg,encodingOrOffset,length){if(typeof arg==='number'){throw new TypeError('Argument must not be a number');}return Buffer(arg,encodingOrOffset,length);};SafeBuffer.alloc=function(size,fill,encoding){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}var buf=Buffer(size);if(fill!==undefined){if(typeof encoding==='string'){buf.fill(fill,encoding);}else{buf.fill(fill);}}else{buf.fill(0);}return buf;};SafeBuffer.allocUnsafe=function(size){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}return Buffer(size);};SafeBuffer.allocUnsafeSlow=function(size){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}return buffer.SlowBuffer(size);};},{"buffer":20}],319:[function(require,module,exports){'use strict';var inspect=require('object-inspect');var $TypeError=require('es-errors/type');/*
11745
11945
  * This function traverses the list returning the node corresponding to the given key.
11746
11946
  *
11747
11947
  * That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.
@@ -11756,13 +11956,13 @@ key:key,next:objects.next,value:value};}};/** @type {import('./list.d.ts').listH
11756
11956
  var listDelete=function listDelete(objects,key){if(objects){return listGetNode(objects,key,true);}};/** @type {import('.')} */module.exports=function getSideChannelList(){/** @typedef {ReturnType<typeof getSideChannelList>} Channel *//** @typedef {Parameters<Channel['get']>[0]} K *//** @typedef {Parameters<Channel['set']>[1]} V *//** @type {import('./list.d.ts').RootNode<V, K> | undefined} */var $o;/** @type {Channel} */var channel={assert:function assert(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function _delete(key){var root=$o&&$o.next;var deletedNode=listDelete($o,key);if(deletedNode&&root&&root===deletedNode){$o=void undefined;}return!!deletedNode;},get:function get(key){return listGet($o,key);},has:function has(key){return listHas($o,key);},set:function set(key,value){if(!$o){// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head
11757
11957
  $o={next:void undefined};}// eslint-disable-next-line no-extra-parens
11758
11958
  listSet(/** @type {NonNullable<typeof $o>} */$o,key,value);}};// @ts-expect-error TODO: figure out why this is erroring
11759
- return channel;};},{"es-errors/type":47,"object-inspect":137}],317:[function(require,module,exports){'use strict';var GetIntrinsic=require('get-intrinsic');var callBound=require('call-bound');var inspect=require('object-inspect');var $TypeError=require('es-errors/type');var $Map=GetIntrinsic('%Map%',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */var $mapGet=callBound('Map.prototype.get',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */var $mapSet=callBound('Map.prototype.set',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */var $mapHas=callBound('Map.prototype.has',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */var $mapDelete=callBound('Map.prototype.delete',true);/** @type {<K, V>(thisArg: Map<K, V>) => number} */var $mapSize=callBound('Map.prototype.size',true);/** @type {import('.')} */module.exports=!!$Map&&/** @type {Exclude<import('.'), false>} */function getSideChannelMap(){/** @typedef {ReturnType<typeof getSideChannelMap>} Channel *//** @typedef {Parameters<Channel['get']>[0]} K *//** @typedef {Parameters<Channel['set']>[1]} V *//** @type {Map<K, V> | undefined} */var $m;/** @type {Channel} */var channel={assert:function assert(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function _delete(key){if($m){var result=$mapDelete($m,key);if($mapSize($m)===0){$m=void undefined;}return result;}return false;},get:function get(key){// eslint-disable-line consistent-return
11959
+ return channel;};},{"es-errors/type":47,"object-inspect":137}],320:[function(require,module,exports){'use strict';var GetIntrinsic=require('get-intrinsic');var callBound=require('call-bound');var inspect=require('object-inspect');var $TypeError=require('es-errors/type');var $Map=GetIntrinsic('%Map%',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */var $mapGet=callBound('Map.prototype.get',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */var $mapSet=callBound('Map.prototype.set',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */var $mapHas=callBound('Map.prototype.has',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */var $mapDelete=callBound('Map.prototype.delete',true);/** @type {<K, V>(thisArg: Map<K, V>) => number} */var $mapSize=callBound('Map.prototype.size',true);/** @type {import('.')} */module.exports=!!$Map&&/** @type {Exclude<import('.'), false>} */function getSideChannelMap(){/** @typedef {ReturnType<typeof getSideChannelMap>} Channel *//** @typedef {Parameters<Channel['get']>[0]} K *//** @typedef {Parameters<Channel['set']>[1]} V *//** @type {Map<K, V> | undefined} */var $m;/** @type {Channel} */var channel={assert:function assert(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function _delete(key){if($m){var result=$mapDelete($m,key);if($mapSize($m)===0){$m=void undefined;}return result;}return false;},get:function get(key){// eslint-disable-line consistent-return
11760
11960
  if($m){return $mapGet($m,key);}},has:function has(key){if($m){return $mapHas($m,key);}return false;},set:function set(key,value){if(!$m){// @ts-expect-error TS can't handle narrowing a variable inside a closure
11761
11961
  $m=new $Map();}$mapSet($m,key,value);}};// @ts-expect-error TODO: figure out why TS is erroring here
11762
- return channel;};},{"call-bound":30,"es-errors/type":47,"get-intrinsic":104,"object-inspect":137}],318:[function(require,module,exports){'use strict';var GetIntrinsic=require('get-intrinsic');var callBound=require('call-bound');var inspect=require('object-inspect');var getSideChannelMap=require('side-channel-map');var $TypeError=require('es-errors/type');var $WeakMap=GetIntrinsic('%WeakMap%',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */var $weakMapGet=callBound('WeakMap.prototype.get',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */var $weakMapSet=callBound('WeakMap.prototype.set',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */var $weakMapHas=callBound('WeakMap.prototype.has',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */var $weakMapDelete=callBound('WeakMap.prototype.delete',true);/** @type {import('.')} */module.exports=$WeakMap?/** @type {Exclude<import('.'), false>} */function getSideChannelWeakMap(){/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel *//** @typedef {Parameters<Channel['get']>[0]} K *//** @typedef {Parameters<Channel['set']>[1]} V *//** @type {WeakMap<K & object, V> | undefined} */var $wm;/** @type {Channel | undefined} */var $m;/** @type {Channel} */var channel={assert:function assert(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function _delete(key){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if($wm){return $weakMapDelete($wm,key);}}else if(getSideChannelMap){if($m){return $m['delete'](key);}}return false;},get:function get(key){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if($wm){return $weakMapGet($wm,key);}}return $m&&$m.get(key);},has:function has(key){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if($wm){return $weakMapHas($wm,key);}}return!!$m&&$m.has(key);},set:function set(key,value){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if(!$wm){$wm=new $WeakMap();}$weakMapSet($wm,key,value);}else if(getSideChannelMap){if(!$m){$m=getSideChannelMap();}// eslint-disable-next-line no-extra-parens
11962
+ return channel;};},{"call-bound":30,"es-errors/type":47,"get-intrinsic":104,"object-inspect":137}],321:[function(require,module,exports){'use strict';var GetIntrinsic=require('get-intrinsic');var callBound=require('call-bound');var inspect=require('object-inspect');var getSideChannelMap=require('side-channel-map');var $TypeError=require('es-errors/type');var $WeakMap=GetIntrinsic('%WeakMap%',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */var $weakMapGet=callBound('WeakMap.prototype.get',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */var $weakMapSet=callBound('WeakMap.prototype.set',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */var $weakMapHas=callBound('WeakMap.prototype.has',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */var $weakMapDelete=callBound('WeakMap.prototype.delete',true);/** @type {import('.')} */module.exports=$WeakMap?/** @type {Exclude<import('.'), false>} */function getSideChannelWeakMap(){/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel *//** @typedef {Parameters<Channel['get']>[0]} K *//** @typedef {Parameters<Channel['set']>[1]} V *//** @type {WeakMap<K & object, V> | undefined} */var $wm;/** @type {Channel | undefined} */var $m;/** @type {Channel} */var channel={assert:function assert(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function _delete(key){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if($wm){return $weakMapDelete($wm,key);}}else if(getSideChannelMap){if($m){return $m['delete'](key);}}return false;},get:function get(key){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if($wm){return $weakMapGet($wm,key);}}return $m&&$m.get(key);},has:function has(key){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if($wm){return $weakMapHas($wm,key);}}return!!$m&&$m.has(key);},set:function set(key,value){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if(!$wm){$wm=new $WeakMap();}$weakMapSet($wm,key,value);}else if(getSideChannelMap){if(!$m){$m=getSideChannelMap();}// eslint-disable-next-line no-extra-parens
11763
11963
  /** @type {NonNullable<typeof $m>} */$m.set(key,value);}}};// @ts-expect-error TODO: figure out why this is erroring
11764
- return channel;}:getSideChannelMap;},{"call-bound":30,"es-errors/type":47,"get-intrinsic":104,"object-inspect":137,"side-channel-map":317}],319:[function(require,module,exports){'use strict';var $TypeError=require('es-errors/type');var inspect=require('object-inspect');var getSideChannelList=require('side-channel-list');var getSideChannelMap=require('side-channel-map');var getSideChannelWeakMap=require('side-channel-weakmap');var makeChannel=getSideChannelWeakMap||getSideChannelMap||getSideChannelList;/** @type {import('.')} */module.exports=function getSideChannel(){/** @typedef {ReturnType<typeof getSideChannel>} Channel *//** @type {Channel | undefined} */var $channelData;/** @type {Channel} */var channel={assert:function assert(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function _delete(key){return!!$channelData&&$channelData['delete'](key);},get:function get(key){return $channelData&&$channelData.get(key);},has:function has(key){return!!$channelData&&$channelData.has(key);},set:function set(key,value){if(!$channelData){$channelData=makeChannel();}$channelData.set(key,value);}};// @ts-expect-error TODO: figure out why this is erroring
11765
- return channel;};},{"es-errors/type":47,"object-inspect":137,"side-channel-list":316,"side-channel-map":317,"side-channel-weakmap":318}],320:[function(require,module,exports){(function(Buffer){(function(){/*! simple-concat. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */module.exports=function(stream,cb){var chunks=[];stream.on('data',function(chunk){chunks.push(chunk);});stream.once('end',function(){if(cb)cb(null,Buffer.concat(chunks));cb=null;});stream.once('error',function(err){if(cb)cb(err);cb=null;});};}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":20}],321:[function(require,module,exports){(function(Buffer){(function(){/*! simple-get. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */module.exports=simpleGet;const concat=require('simple-concat');const decompressResponse=require('decompress-response');// excluded from browser build
11964
+ return channel;}:getSideChannelMap;},{"call-bound":30,"es-errors/type":47,"get-intrinsic":104,"object-inspect":137,"side-channel-map":320}],322:[function(require,module,exports){'use strict';var $TypeError=require('es-errors/type');var inspect=require('object-inspect');var getSideChannelList=require('side-channel-list');var getSideChannelMap=require('side-channel-map');var getSideChannelWeakMap=require('side-channel-weakmap');var makeChannel=getSideChannelWeakMap||getSideChannelMap||getSideChannelList;/** @type {import('.')} */module.exports=function getSideChannel(){/** @typedef {ReturnType<typeof getSideChannel>} Channel *//** @type {Channel | undefined} */var $channelData;/** @type {Channel} */var channel={assert:function assert(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function _delete(key){return!!$channelData&&$channelData['delete'](key);},get:function get(key){return $channelData&&$channelData.get(key);},has:function has(key){return!!$channelData&&$channelData.has(key);},set:function set(key,value){if(!$channelData){$channelData=makeChannel();}$channelData.set(key,value);}};// @ts-expect-error TODO: figure out why this is erroring
11965
+ return channel;};},{"es-errors/type":47,"object-inspect":137,"side-channel-list":319,"side-channel-map":320,"side-channel-weakmap":321}],323:[function(require,module,exports){(function(Buffer){(function(){/*! simple-concat. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */module.exports=function(stream,cb){var chunks=[];stream.on('data',function(chunk){chunks.push(chunk);});stream.once('end',function(){if(cb)cb(null,Buffer.concat(chunks));cb=null;});stream.once('error',function(err){if(cb)cb(err);cb=null;});};}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":20}],324:[function(require,module,exports){(function(Buffer){(function(){/*! simple-get. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */module.exports=simpleGet;const concat=require('simple-concat');const decompressResponse=require('decompress-response');// excluded from browser build
11766
11966
  const http=require('http');const https=require('https');const once=require('once');const querystring=require('querystring');const url=require('url');const isStream=o=>o!==null&&typeof o==='object'&&typeof o.pipe==='function';function simpleGet(opts,cb){opts=Object.assign({maxRedirects:10},typeof opts==='string'?{url:opts}:opts);cb=once(cb);if(opts.url){const{hostname,port,protocol,auth,path}=url.parse(opts.url);// eslint-disable-line node/no-deprecated-api
11767
11967
  delete opts.url;if(!hostname&&!port&&!protocol&&!auth)opts.path=path;// Relative redirect
11768
11968
  else Object.assign(opts,{hostname,port,protocol,auth,path});// Absolute redirect
@@ -11774,13 +11974,13 @@ res.resume();// Discard response
11774
11974
  const redirectHost=url.parse(opts.url).hostname;// eslint-disable-line node/no-deprecated-api
11775
11975
  // If redirected host is different than original host, drop headers to prevent cookie leak (#73)
11776
11976
  if(redirectHost!==null&&redirectHost!==originalHost){delete opts.headers.cookie;delete opts.headers.authorization;}if(opts.method==='POST'&&[301,302].includes(res.statusCode)){opts.method='GET';// On 301/302 redirect, change POST to GET (see #35)
11777
- delete opts.headers['content-length'];delete opts.headers['content-type'];}if(opts.maxRedirects--===0)return cb(new Error('too many redirects'));else return simpleGet(opts,cb);}const tryUnzip=typeof decompressResponse==='function'&&opts.method!=='HEAD';cb(null,tryUnzip?decompressResponse(res):res);});req.on('timeout',()=>{req.abort();cb(new Error('Request timed out'));});req.on('error',cb);if(isStream(body))body.on('error',cb).pipe(req);else req.end(body);return req;}simpleGet.concat=(opts,cb)=>{return simpleGet(opts,(err,res)=>{if(err)return cb(err);concat(res,(err,data)=>{if(err)return cb(err);if(opts.json){try{data=JSON.parse(data.toString());}catch(err){return cb(err,res,data);}}cb(null,res,data);});});};['get','post','put','patch','head','delete'].forEach(method=>{simpleGet[method]=(opts,cb)=>{if(typeof opts==='string')opts={url:opts};return simpleGet(Object.assign({method:method.toUpperCase()},opts),cb);};});}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":20,"decompress-response":18,"http":322,"https":113,"once":138,"querystring":314,"simple-concat":320,"url":343}],322:[function(require,module,exports){(function(global){(function(){var ClientRequest=require('./lib/request');var response=require('./lib/response');var extend=require('xtend');var statusCodes=require('builtin-status-codes');var url=require('url');var http=exports;http.request=function(opts,cb){if(typeof opts==='string')opts=url.parse(opts);else opts=extend(opts);// Normally, the page is loaded from http or https, so not specifying a protocol
11977
+ delete opts.headers['content-length'];delete opts.headers['content-type'];}if(opts.maxRedirects--===0)return cb(new Error('too many redirects'));else return simpleGet(opts,cb);}const tryUnzip=typeof decompressResponse==='function'&&opts.method!=='HEAD';cb(null,tryUnzip?decompressResponse(res):res);});req.on('timeout',()=>{req.abort();cb(new Error('Request timed out'));});req.on('error',cb);if(isStream(body))body.on('error',cb).pipe(req);else req.end(body);return req;}simpleGet.concat=(opts,cb)=>{return simpleGet(opts,(err,res)=>{if(err)return cb(err);concat(res,(err,data)=>{if(err)return cb(err);if(opts.json){try{data=JSON.parse(data.toString());}catch(err){return cb(err,res,data);}}cb(null,res,data);});});};['get','post','put','patch','head','delete'].forEach(method=>{simpleGet[method]=(opts,cb)=>{if(typeof opts==='string')opts={url:opts};return simpleGet(Object.assign({method:method.toUpperCase()},opts),cb);};});}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":20,"decompress-response":18,"http":325,"https":113,"once":138,"querystring":317,"simple-concat":323,"url":346}],325:[function(require,module,exports){(function(global){(function(){var ClientRequest=require('./lib/request');var response=require('./lib/response');var extend=require('xtend');var statusCodes=require('builtin-status-codes');var url=require('url');var http=exports;http.request=function(opts,cb){if(typeof opts==='string')opts=url.parse(opts);else opts=extend(opts);// Normally, the page is loaded from http or https, so not specifying a protocol
11778
11978
  // will result in a (valid) protocol-relative url. However, this won't work if
11779
11979
  // the protocol is something else, like 'file:'
11780
11980
  var defaultProtocol=global.location.protocol.search(/^https?:$/)===-1?'http:':'';var protocol=opts.protocol||defaultProtocol;var host=opts.hostname||opts.host;var port=opts.port;var path=opts.path||'/';// Necessary for IPv6 addresses
11781
11981
  if(host&&host.indexOf(':')!==-1)host='['+host+']';// This may be a relative url. The browser should always be able to interpret it correctly.
11782
11982
  opts.url=(host?protocol+'//'+host:'')+(port?':'+port:'')+path;opts.method=(opts.method||'GET').toUpperCase();opts.headers=opts.headers||{};// Also valid opts.auth, opts.mode
11783
- var req=new ClientRequest(opts);if(cb)req.on('response',cb);return req;};http.get=function get(opts,cb){var req=http.request(opts,cb);req.end();return req;};http.ClientRequest=ClientRequest;http.IncomingMessage=response.IncomingMessage;http.Agent=function(){};http.Agent.defaultMaxSockets=4;http.globalAgent=new http.Agent();http.STATUS_CODES=statusCodes;http.METHODS=['CHECKOUT','CONNECT','COPY','DELETE','GET','HEAD','LOCK','M-SEARCH','MERGE','MKACTIVITY','MKCOL','MOVE','NOTIFY','OPTIONS','PATCH','POST','PROPFIND','PROPPATCH','PURGE','PUT','REPORT','SEARCH','SUBSCRIBE','TRACE','UNLOCK','UNSUBSCRIBE'];}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"./lib/request":324,"./lib/response":325,"builtin-status-codes":21,"url":343,"xtend":346}],323:[function(require,module,exports){(function(global){(function(){exports.fetch=isFunction(global.fetch)&&isFunction(global.ReadableStream);exports.writableStream=isFunction(global.WritableStream);exports.abortController=isFunction(global.AbortController);// The xhr request to example.com may violate some restrictive CSP configurations,
11983
+ var req=new ClientRequest(opts);if(cb)req.on('response',cb);return req;};http.get=function get(opts,cb){var req=http.request(opts,cb);req.end();return req;};http.ClientRequest=ClientRequest;http.IncomingMessage=response.IncomingMessage;http.Agent=function(){};http.Agent.defaultMaxSockets=4;http.globalAgent=new http.Agent();http.STATUS_CODES=statusCodes;http.METHODS=['CHECKOUT','CONNECT','COPY','DELETE','GET','HEAD','LOCK','M-SEARCH','MERGE','MKACTIVITY','MKCOL','MOVE','NOTIFY','OPTIONS','PATCH','POST','PROPFIND','PROPPATCH','PURGE','PUT','REPORT','SEARCH','SUBSCRIBE','TRACE','UNLOCK','UNSUBSCRIBE'];}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"./lib/request":327,"./lib/response":328,"builtin-status-codes":21,"url":346,"xtend":349}],326:[function(require,module,exports){(function(global){(function(){exports.fetch=isFunction(global.fetch)&&isFunction(global.ReadableStream);exports.writableStream=isFunction(global.WritableStream);exports.abortController=isFunction(global.AbortController);// The xhr request to example.com may violate some restrictive CSP configurations,
11784
11984
  // so if we're running in a browser that supports `fetch`, avoid calling getXHR()
11785
11985
  // and assume support for certain features below.
11786
11986
  var xhr;function getXHR(){// Cache the xhr value
@@ -11795,7 +11995,7 @@ exports.arraybuffer=exports.fetch||checkTypeSupport('arraybuffer');// These next
11795
11995
  exports.msstream=!exports.fetch&&checkTypeSupport('ms-stream');exports.mozchunkedarraybuffer=!exports.fetch&&checkTypeSupport('moz-chunked-arraybuffer');// If fetch is supported, then overrideMimeType will be supported too. Skip calling
11796
11996
  // getXHR().
11797
11997
  exports.overrideMimeType=exports.fetch||(getXHR()?isFunction(getXHR().overrideMimeType):false);function isFunction(value){return typeof value==='function';}xhr=null;// Help gc
11798
- }).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],324:[function(require,module,exports){(function(process,global,Buffer){(function(){var capability=require('./capability');var inherits=require('inherits');var response=require('./response');var stream=require('readable-stream');var IncomingMessage=response.IncomingMessage;var rStates=response.readyStates;function decideMode(preferBinary,useFetch){if(capability.fetch&&useFetch){return'fetch';}else if(capability.mozchunkedarraybuffer){return'moz-chunked-arraybuffer';}else if(capability.msstream){return'ms-stream';}else if(capability.arraybuffer&&preferBinary){return'arraybuffer';}else{return'text';}}var ClientRequest=module.exports=function(opts){var self=this;stream.Writable.call(self);self._opts=opts;self._body=[];self._headers={};if(opts.auth)self.setHeader('Authorization','Basic '+Buffer.from(opts.auth).toString('base64'));Object.keys(opts.headers).forEach(function(name){self.setHeader(name,opts.headers[name]);});var preferBinary;var useFetch=true;if(opts.mode==='disable-fetch'||'requestTimeout'in opts&&!capability.abortController){// If the use of XHR should be preferred. Not typically needed.
11998
+ }).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],327:[function(require,module,exports){(function(process,global,Buffer){(function(){var capability=require('./capability');var inherits=require('inherits');var response=require('./response');var stream=require('readable-stream');var IncomingMessage=response.IncomingMessage;var rStates=response.readyStates;function decideMode(preferBinary,useFetch){if(capability.fetch&&useFetch){return'fetch';}else if(capability.mozchunkedarraybuffer){return'moz-chunked-arraybuffer';}else if(capability.msstream){return'ms-stream';}else if(capability.arraybuffer&&preferBinary){return'arraybuffer';}else{return'text';}}var ClientRequest=module.exports=function(opts){var self=this;stream.Writable.call(self);self._opts=opts;self._body=[];self._headers={};if(opts.auth)self.setHeader('Authorization','Basic '+Buffer.from(opts.auth).toString('base64'));Object.keys(opts.headers).forEach(function(name){self.setHeader(name,opts.headers[name]);});var preferBinary;var useFetch=true;if(opts.mode==='disable-fetch'||'requestTimeout'in opts&&!capability.abortController){// If the use of XHR should be preferred. Not typically needed.
11799
11999
  useFetch=false;preferBinary=true;}else if(opts.mode==='prefer-streaming'){// If streaming is a high priority but binary compatibility and
11800
12000
  // the accuracy of the 'content-type' header aren't
11801
12001
  preferBinary=false;}else if(opts.mode==='allow-wrong-content-type'){// If streaming is more important than preserving the 'content-type' header
@@ -11812,7 +12012,7 @@ if(self._mode==='moz-chunked-arraybuffer'){xhr.onprogress=function(){self._onXHR
11812
12012
  * Even though the spec says it should be available in readyState 3,
11813
12013
  * accessing it throws an exception in IE8
11814
12014
  */function statusValid(xhr){try{var status=xhr.status;return status!==null&&status!==0;}catch(e){return false;}}ClientRequest.prototype._onXHRProgress=function(){var self=this;self._resetTimers(false);if(!statusValid(self._xhr)||self._destroyed)return;if(!self._response)self._connect();self._response._onXHRProgress(self._resetTimers.bind(self));};ClientRequest.prototype._connect=function(){var self=this;if(self._destroyed)return;self._response=new IncomingMessage(self._xhr,self._fetchResponse,self._mode,self._resetTimers.bind(self));self._response.on('error',function(err){self.emit('error',err);});self.emit('response',self._response);};ClientRequest.prototype._write=function(chunk,encoding,cb){var self=this;self._body.push(chunk);cb();};ClientRequest.prototype._resetTimers=function(done){var self=this;global.clearTimeout(self._socketTimer);self._socketTimer=null;if(done){global.clearTimeout(self._fetchTimer);self._fetchTimer=null;}else if(self._socketTimeout){self._socketTimer=global.setTimeout(function(){self.emit('timeout');},self._socketTimeout);}};ClientRequest.prototype.abort=ClientRequest.prototype.destroy=function(err){var self=this;self._destroyed=true;self._resetTimers(true);if(self._response)self._response._destroyed=true;if(self._xhr)self._xhr.abort();else if(self._fetchAbortController)self._fetchAbortController.abort();if(err)self.emit('error',err);};ClientRequest.prototype.end=function(data,encoding,cb){var self=this;if(typeof data==='function'){cb=data;data=undefined;}stream.Writable.prototype.end.call(self,data,encoding,cb);};ClientRequest.prototype.setTimeout=function(timeout,cb){var self=this;if(cb)self.once('timeout',cb);self._socketTimeout=timeout;self._resetTimers(false);};ClientRequest.prototype.flushHeaders=function(){};ClientRequest.prototype.setNoDelay=function(){};ClientRequest.prototype.setSocketKeepAlive=function(){};// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method
11815
- var unsafeHeaders=['accept-charset','accept-encoding','access-control-request-headers','access-control-request-method','connection','content-length','cookie','cookie2','date','dnt','expect','host','keep-alive','origin','referer','te','trailer','transfer-encoding','upgrade','via'];}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer);},{"./capability":323,"./response":325,"_process":305,"buffer":20,"inherits":115,"readable-stream":340}],325:[function(require,module,exports){(function(process,global,Buffer){(function(){var capability=require('./capability');var inherits=require('inherits');var stream=require('readable-stream');var rStates=exports.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4};var IncomingMessage=exports.IncomingMessage=function(xhr,response,mode,resetTimers){var self=this;stream.Readable.call(self);self._mode=mode;self.headers={};self.rawHeaders=[];self.trailers={};self.rawTrailers=[];// Fake the 'close' event, but only once 'end' fires
12015
+ var unsafeHeaders=['accept-charset','accept-encoding','access-control-request-headers','access-control-request-method','connection','content-length','cookie','cookie2','date','dnt','expect','host','keep-alive','origin','referer','te','trailer','transfer-encoding','upgrade','via'];}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer);},{"./capability":326,"./response":328,"_process":308,"buffer":20,"inherits":115,"readable-stream":343}],328:[function(require,module,exports){(function(process,global,Buffer){(function(){var capability=require('./capability');var inherits=require('inherits');var stream=require('readable-stream');var rStates=exports.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4};var IncomingMessage=exports.IncomingMessage=function(xhr,response,mode,resetTimers){var self=this;stream.Readable.call(self);self._mode=mode;self.headers={};self.rawHeaders=[];self.trailers={};self.rawTrailers=[];// Fake the 'close' event, but only once 'end' fires
11816
12016
  self.on('end',function(){// The nextTick is necessary to prevent the 'request' module from causing an infinite loop
11817
12017
  process.nextTick(function(){self.emit('close');});});if(mode==='fetch'){self._fetchResponse=response;self.url=response.url;self.statusCode=response.status;self.statusMessage=response.statusText;response.headers.forEach(function(header,key){self.headers[key.toLowerCase()]=header;self.rawHeaders.push(key,header);});if(capability.writableStream){var writable=new WritableStream({write:function write(chunk){resetTimers(false);return new Promise(function(resolve,reject){if(self._destroyed){reject();}else if(self.push(Buffer.from(chunk))){resolve();}else{self._resumeFetch=resolve;}});},close:function close(){resetTimers(true);if(!self._destroyed)self.push(null);},abort:function abort(err){resetTimers(true);if(!self._destroyed)self.emit('error',err);}});try{response.body.pipeTo(writable).catch(function(err){resetTimers(true);if(!self._destroyed)self.emit('error',err);});return;}catch(e){}// pipeTo method isn't defined. Can't find a better way to feature test this
11818
12018
  }// fallback for when writableStream or pipeTo aren't available
@@ -11820,13 +12020,13 @@ var reader=response.body.getReader();function read(){reader.read().then(function
11820
12020
  }}};inherits(IncomingMessage,stream.Readable);IncomingMessage.prototype._read=function(){var self=this;var resolve=self._resumeFetch;if(resolve){self._resumeFetch=null;resolve();}};IncomingMessage.prototype._onXHRProgress=function(resetTimers){var self=this;var xhr=self._xhr;var response=null;switch(self._mode){case'text':response=xhr.responseText;if(response.length>self._pos){var newData=response.substr(self._pos);if(self._charset==='x-user-defined'){var buffer=Buffer.alloc(newData.length);for(var i=0;i<newData.length;i++)buffer[i]=newData.charCodeAt(i)&0xff;self.push(buffer);}else{self.push(newData,self._charset);}self._pos=response.length;}break;case'arraybuffer':if(xhr.readyState!==rStates.DONE||!xhr.response)break;response=xhr.response;self.push(Buffer.from(new Uint8Array(response)));break;case'moz-chunked-arraybuffer':// take whole
11821
12021
  response=xhr.response;if(xhr.readyState!==rStates.LOADING||!response)break;self.push(Buffer.from(new Uint8Array(response)));break;case'ms-stream':response=xhr.response;if(xhr.readyState!==rStates.LOADING)break;var reader=new global.MSStreamReader();reader.onprogress=function(){if(reader.result.byteLength>self._pos){self.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))));self._pos=reader.result.byteLength;}};reader.onload=function(){resetTimers(true);self.push(null);};// reader.onerror = ??? // TODO: this
11822
12022
  reader.readAsArrayBuffer(response);break;}// The ms-stream case handles end separately in reader.onload()
11823
- if(self._xhr.readyState===rStates.DONE&&self._mode!=='ms-stream'){resetTimers(true);self.push(null);}};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer);},{"./capability":323,"_process":305,"buffer":20,"inherits":115,"readable-stream":340}],326:[function(require,module,exports){'use strict';function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}var codes={};function createErrorType(code,message,Base){if(!Base){Base=Error;}function getMessage(arg1,arg2,arg3){if(typeof message==='string'){return message;}else{return message(arg1,arg2,arg3);}}var NodeError=/*#__PURE__*/function(_Base){_inheritsLoose(NodeError,_Base);function NodeError(arg1,arg2,arg3){return _Base.call(this,getMessage(arg1,arg2,arg3))||this;}return NodeError;}(Base);NodeError.prototype.name=Base.name;NodeError.prototype.code=code;codes[code]=NodeError;}// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
12023
+ if(self._xhr.readyState===rStates.DONE&&self._mode!=='ms-stream'){resetTimers(true);self.push(null);}};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer);},{"./capability":326,"_process":308,"buffer":20,"inherits":115,"readable-stream":343}],329:[function(require,module,exports){'use strict';function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}var codes={};function createErrorType(code,message,Base){if(!Base){Base=Error;}function getMessage(arg1,arg2,arg3){if(typeof message==='string'){return message;}else{return message(arg1,arg2,arg3);}}var NodeError=/*#__PURE__*/function(_Base){_inheritsLoose(NodeError,_Base);function NodeError(arg1,arg2,arg3){return _Base.call(this,getMessage(arg1,arg2,arg3))||this;}return NodeError;}(Base);NodeError.prototype.name=Base.name;NodeError.prototype.code=code;codes[code]=NodeError;}// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
11824
12024
  function oneOf(expected,thing){if(Array.isArray(expected)){var len=expected.length;expected=expected.map(function(i){return String(i);});if(len>2){return"one of ".concat(thing," ").concat(expected.slice(0,len-1).join(', '),", or ")+expected[len-1];}else if(len===2){return"one of ".concat(thing," ").concat(expected[0]," or ").concat(expected[1]);}else{return"of ".concat(thing," ").concat(expected[0]);}}else{return"of ".concat(thing," ").concat(String(expected));}}// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
11825
12025
  function startsWith(str,search,pos){return str.substr(!pos||pos<0?0:+pos,search.length)===search;}// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
11826
12026
  function endsWith(str,search,this_len){if(this_len===undefined||this_len>str.length){this_len=str.length;}return str.substring(this_len-search.length,this_len)===search;}// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
11827
12027
  function includes(str,search,start){if(typeof start!=='number'){start=0;}if(start+search.length>str.length){return false;}else{return str.indexOf(search,start)!==-1;}}createErrorType('ERR_INVALID_OPT_VALUE',function(name,value){return'The value "'+value+'" is invalid for option "'+name+'"';},TypeError);createErrorType('ERR_INVALID_ARG_TYPE',function(name,expected,actual){// determiner: 'must be' or 'must not be'
11828
12028
  var determiner;if(typeof expected==='string'&&startsWith(expected,'not ')){determiner='must not be';expected=expected.replace(/^not /,'');}else{determiner='must be';}var msg;if(endsWith(name,' argument')){// For cases like 'first argument'
11829
- msg="The ".concat(name," ").concat(determiner," ").concat(oneOf(expected,'type'));}else{var type=includes(name,'.')?'property':'argument';msg="The \"".concat(name,"\" ").concat(type," ").concat(determiner," ").concat(oneOf(expected,'type'));}msg+=". Received type ".concat(typeof actual);return msg;},TypeError);createErrorType('ERR_STREAM_PUSH_AFTER_EOF','stream.push() after EOF');createErrorType('ERR_METHOD_NOT_IMPLEMENTED',function(name){return'The '+name+' method is not implemented';});createErrorType('ERR_STREAM_PREMATURE_CLOSE','Premature close');createErrorType('ERR_STREAM_DESTROYED',function(name){return'Cannot call '+name+' after a stream was destroyed';});createErrorType('ERR_MULTIPLE_CALLBACK','Callback called multiple times');createErrorType('ERR_STREAM_CANNOT_PIPE','Cannot pipe, not readable');createErrorType('ERR_STREAM_WRITE_AFTER_END','write after end');createErrorType('ERR_STREAM_NULL_VALUES','May not write null values to stream',TypeError);createErrorType('ERR_UNKNOWN_ENCODING',function(arg){return'Unknown encoding: '+arg;},TypeError);createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT','stream.unshift() after end event');module.exports.codes=codes;},{}],327:[function(require,module,exports){(function(process){(function(){// Copyright Joyent, Inc. and other Node contributors.
12029
+ msg="The ".concat(name," ").concat(determiner," ").concat(oneOf(expected,'type'));}else{var type=includes(name,'.')?'property':'argument';msg="The \"".concat(name,"\" ").concat(type," ").concat(determiner," ").concat(oneOf(expected,'type'));}msg+=". Received type ".concat(typeof actual);return msg;},TypeError);createErrorType('ERR_STREAM_PUSH_AFTER_EOF','stream.push() after EOF');createErrorType('ERR_METHOD_NOT_IMPLEMENTED',function(name){return'The '+name+' method is not implemented';});createErrorType('ERR_STREAM_PREMATURE_CLOSE','Premature close');createErrorType('ERR_STREAM_DESTROYED',function(name){return'Cannot call '+name+' after a stream was destroyed';});createErrorType('ERR_MULTIPLE_CALLBACK','Callback called multiple times');createErrorType('ERR_STREAM_CANNOT_PIPE','Cannot pipe, not readable');createErrorType('ERR_STREAM_WRITE_AFTER_END','write after end');createErrorType('ERR_STREAM_NULL_VALUES','May not write null values to stream',TypeError);createErrorType('ERR_UNKNOWN_ENCODING',function(arg){return'Unknown encoding: '+arg;},TypeError);createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT','stream.unshift() after end event');module.exports.codes=codes;},{}],330:[function(require,module,exports){(function(process){(function(){// Copyright Joyent, Inc. and other Node contributors.
11830
12030
  //
11831
12031
  // Permission is hereby granted, free of charge, to any person obtaining a
11832
12032
  // copy of this software and associated documentation files (the
@@ -11871,7 +12071,7 @@ enumerable:false,get:function get(){if(this._readableState===undefined||this._wr
11871
12071
  // has not been initialized yet
11872
12072
  if(this._readableState===undefined||this._writableState===undefined){return;}// backward compatibility, the user is explicitly
11873
12073
  // managing destroyed
11874
- this._readableState.destroyed=value;this._writableState.destroyed=value;}});}).call(this);}).call(this,require('_process'));},{"./_stream_readable":329,"./_stream_writable":331,"_process":305,"inherits":115}],328:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
12074
+ this._readableState.destroyed=value;this._writableState.destroyed=value;}});}).call(this);}).call(this,require('_process'));},{"./_stream_readable":332,"./_stream_writable":334,"_process":308,"inherits":115}],331:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
11875
12075
  //
11876
12076
  // Permission is hereby granted, free of charge, to any person obtaining a
11877
12077
  // copy of this software and associated documentation files (the
@@ -11894,7 +12094,7 @@ this._readableState.destroyed=value;this._writableState.destroyed=value;}});}).c
11894
12094
  // a passthrough stream.
11895
12095
  // basically just the most minimal sort of Transform stream.
11896
12096
  // Every written chunk gets output as-is.
11897
- 'use strict';module.exports=PassThrough;var Transform=require('./_stream_transform');require('inherits')(PassThrough,Transform);function PassThrough(options){if(!(this instanceof PassThrough))return new PassThrough(options);Transform.call(this,options);}PassThrough.prototype._transform=function(chunk,encoding,cb){cb(null,chunk);};},{"./_stream_transform":330,"inherits":115}],329:[function(require,module,exports){(function(process,global){(function(){// Copyright Joyent, Inc. and other Node contributors.
12097
+ 'use strict';module.exports=PassThrough;var Transform=require('./_stream_transform');require('inherits')(PassThrough,Transform);function PassThrough(options){if(!(this instanceof PassThrough))return new PassThrough(options);Transform.call(this,options);}PassThrough.prototype._transform=function(chunk,encoding,cb){cb(null,chunk);};},{"./_stream_transform":333,"inherits":115}],332:[function(require,module,exports){(function(process,global){(function(){// Copyright Joyent, Inc. and other Node contributors.
11898
12098
  //
11899
12099
  // Permission is hereby granted, free of charge, to any person obtaining a
11900
12100
  // copy of this software and associated documentation files (the
@@ -12146,7 +12346,7 @@ if(state.decoder)ret=state.buffer.join('');else if(state.buffer.length===1)ret=s
12146
12346
  ret=state.buffer.consume(n,state.decoder);}return ret;}function endReadable(stream){var state=stream._readableState;debug('endReadable',state.endEmitted);if(!state.endEmitted){state.ended=true;process.nextTick(endReadableNT,state,stream);}}function endReadableNT(state,stream){debug('endReadableNT',state.endEmitted,state.length);// Check that we didn't get one last unshift.
12147
12347
  if(!state.endEmitted&&state.length===0){state.endEmitted=true;stream.readable=false;stream.emit('end');if(state.autoDestroy){// In case of duplex streams we need a way to detect
12148
12348
  // if the writable side is ready for autoDestroy as well
12149
- var wState=stream._writableState;if(!wState||wState.autoDestroy&&wState.finished){stream.destroy();}}}}if(typeof Symbol==='function'){Readable.from=function(iterable,opts){if(from===undefined){from=require('./internal/streams/from');}return from(Readable,iterable,opts);};}function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++){if(xs[i]===x)return i;}return-1;}}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":326,"./_stream_duplex":327,"./internal/streams/async_iterator":332,"./internal/streams/buffer_list":333,"./internal/streams/destroy":334,"./internal/streams/from":336,"./internal/streams/state":338,"./internal/streams/stream":339,"_process":305,"buffer":20,"events":50,"inherits":115,"string_decoder/":341,"util":18}],330:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
12349
+ var wState=stream._writableState;if(!wState||wState.autoDestroy&&wState.finished){stream.destroy();}}}}if(typeof Symbol==='function'){Readable.from=function(iterable,opts){if(from===undefined){from=require('./internal/streams/from');}return from(Readable,iterable,opts);};}function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++){if(xs[i]===x)return i;}return-1;}}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":329,"./_stream_duplex":330,"./internal/streams/async_iterator":335,"./internal/streams/buffer_list":336,"./internal/streams/destroy":337,"./internal/streams/from":339,"./internal/streams/state":341,"./internal/streams/stream":342,"_process":308,"buffer":20,"events":50,"inherits":115,"string_decoder/":344,"util":18}],333:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
12150
12350
  //
12151
12351
  // Permission is hereby granted, free of charge, to any person obtaining a
12152
12352
  // copy of this software and associated documentation files (the
@@ -12232,7 +12432,7 @@ ts.needTransform=true;}};Transform.prototype._destroy=function(err,cb){Duplex.pr
12232
12432
  stream.push(data);// TODO(BridgeAR): Write a test for these two error cases
12233
12433
  // if there's nothing in the write buffer, then that means
12234
12434
  // that nothing more will ever be provided
12235
- if(stream._writableState.length)throw new ERR_TRANSFORM_WITH_LENGTH_0();if(stream._transformState.transforming)throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();return stream.push(null);}},{"../errors":326,"./_stream_duplex":327,"inherits":115}],331:[function(require,module,exports){(function(process,global){(function(){// Copyright Joyent, Inc. and other Node contributors.
12435
+ if(stream._writableState.length)throw new ERR_TRANSFORM_WITH_LENGTH_0();if(stream._transformState.transforming)throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();return stream.push(null);}},{"../errors":329,"./_stream_duplex":330,"inherits":115}],334:[function(require,module,exports){(function(process,global){(function(){// Copyright Joyent, Inc. and other Node contributors.
12236
12436
  //
12237
12437
  // Permission is hereby granted, free of charge, to any person obtaining a
12238
12438
  // copy of this software and associated documentation files (the
@@ -12367,7 +12567,7 @@ enumerable:false,get:function get(){if(this._writableState===undefined){return f
12367
12567
  // has not been initialized yet
12368
12568
  if(!this._writableState){return;}// backward compatibility, the user is explicitly
12369
12569
  // managing destroyed
12370
- this._writableState.destroyed=value;}});Writable.prototype.destroy=destroyImpl.destroy;Writable.prototype._undestroy=destroyImpl.undestroy;Writable.prototype._destroy=function(err,cb){cb(err);};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":326,"./_stream_duplex":327,"./internal/streams/destroy":334,"./internal/streams/state":338,"./internal/streams/stream":339,"_process":305,"buffer":20,"inherits":115,"util-deprecate":344}],332:[function(require,module,exports){(function(process){(function(){'use strict';var _Object$setPrototypeO;function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(typeof input!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(typeof res!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var finished=require('./end-of-stream');var kLastResolve=Symbol('lastResolve');var kLastReject=Symbol('lastReject');var kError=Symbol('error');var kEnded=Symbol('ended');var kLastPromise=Symbol('lastPromise');var kHandlePromise=Symbol('handlePromise');var kStream=Symbol('stream');function createIterResult(value,done){return{value:value,done:done};}function readAndResolve(iter){var resolve=iter[kLastResolve];if(resolve!==null){var data=iter[kStream].read();// we defer if data is null
12570
+ this._writableState.destroyed=value;}});Writable.prototype.destroy=destroyImpl.destroy;Writable.prototype._undestroy=destroyImpl.undestroy;Writable.prototype._destroy=function(err,cb){cb(err);};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":329,"./_stream_duplex":330,"./internal/streams/destroy":337,"./internal/streams/state":341,"./internal/streams/stream":342,"_process":308,"buffer":20,"inherits":115,"util-deprecate":347}],335:[function(require,module,exports){(function(process){(function(){'use strict';var _Object$setPrototypeO;function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(typeof input!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(typeof res!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var finished=require('./end-of-stream');var kLastResolve=Symbol('lastResolve');var kLastReject=Symbol('lastReject');var kError=Symbol('error');var kEnded=Symbol('ended');var kLastPromise=Symbol('lastPromise');var kHandlePromise=Symbol('handlePromise');var kStream=Symbol('stream');function createIterResult(value,done){return{value:value,done:done};}function readAndResolve(iter){var resolve=iter[kLastResolve];if(resolve!==null){var data=iter[kStream].read();// we defer if data is null
12371
12571
  // we can be expecting either 'end' or
12372
12572
  // 'error'
12373
12573
  if(data!==null){iter[kLastPromise]=null;iter[kLastResolve]=null;iter[kLastReject]=null;resolve(createIterResult(data,false));}}}function onReadable(iter){// we wait for the next tick, because it might
@@ -12389,7 +12589,7 @@ var data=this[kStream].read();if(data!==null){return Promise.resolve(createIterR
12389
12589
  // Readable class this is attached to
12390
12590
  return new Promise(function(resolve,reject){_this2[kStream].destroy(null,function(err){if(err){reject(err);return;}resolve(createIterResult(undefined,true));});});}),_Object$setPrototypeO),AsyncIteratorPrototype);var createReadableStreamAsyncIterator=function createReadableStreamAsyncIterator(stream){var _Object$create;var iterator=Object.create(ReadableStreamAsyncIteratorPrototype,(_Object$create={},_defineProperty(_Object$create,kStream,{value:stream,writable:true}),_defineProperty(_Object$create,kLastResolve,{value:null,writable:true}),_defineProperty(_Object$create,kLastReject,{value:null,writable:true}),_defineProperty(_Object$create,kError,{value:null,writable:true}),_defineProperty(_Object$create,kEnded,{value:stream._readableState.endEmitted,writable:true}),_defineProperty(_Object$create,kHandlePromise,{value:function value(resolve,reject){var data=iterator[kStream].read();if(data){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;resolve(createIterResult(data,false));}else{iterator[kLastResolve]=resolve;iterator[kLastReject]=reject;}},writable:true}),_Object$create));iterator[kLastPromise]=null;finished(stream,function(err){if(err&&err.code!=='ERR_STREAM_PREMATURE_CLOSE'){var reject=iterator[kLastReject];// reject if we are waiting for data in the Promise
12391
12591
  // returned by next() and store the error
12392
- if(reject!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;reject(err);}iterator[kError]=err;return;}var resolve=iterator[kLastResolve];if(resolve!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;resolve(createIterResult(undefined,true));}iterator[kEnded]=true;});stream.on('readable',onReadable.bind(null,iterator));return iterator;};module.exports=createReadableStreamAsyncIterator;}).call(this);}).call(this,require('_process'));},{"./end-of-stream":335,"_process":305}],333:[function(require,module,exports){'use strict';function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;})),keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target;}function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,_toPropertyKey(descriptor.key),descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);Object.defineProperty(Constructor,"prototype",{writable:false});return Constructor;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(typeof input!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(typeof res!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var _require=require('buffer'),Buffer=_require.Buffer;var _require2=require('util'),inspect=_require2.inspect;var custom=inspect&&inspect.custom||'inspect';function copyBuffer(src,target,offset){Buffer.prototype.copy.call(src,target,offset);}module.exports=/*#__PURE__*/function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0;}_createClass(BufferList,[{key:"push",value:function push(v){var entry={data:v,next:null};if(this.length>0)this.tail.next=entry;else this.head=entry;this.tail=entry;++this.length;}},{key:"unshift",value:function unshift(v){var entry={data:v,next:this.head};if(this.length===0)this.tail=entry;this.head=entry;++this.length;}},{key:"shift",value:function shift(){if(this.length===0)return;var ret=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return ret;}},{key:"clear",value:function clear(){this.head=this.tail=null;this.length=0;}},{key:"join",value:function join(s){if(this.length===0)return'';var p=this.head;var ret=''+p.data;while(p=p.next)ret+=s+p.data;return ret;}},{key:"concat",value:function concat(n){if(this.length===0)return Buffer.alloc(0);var ret=Buffer.allocUnsafe(n>>>0);var p=this.head;var i=0;while(p){copyBuffer(p.data,ret,i);i+=p.data.length;p=p.next;}return ret;}// Consumes a specified amount of bytes or characters from the buffered data.
12592
+ if(reject!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;reject(err);}iterator[kError]=err;return;}var resolve=iterator[kLastResolve];if(resolve!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;resolve(createIterResult(undefined,true));}iterator[kEnded]=true;});stream.on('readable',onReadable.bind(null,iterator));return iterator;};module.exports=createReadableStreamAsyncIterator;}).call(this);}).call(this,require('_process'));},{"./end-of-stream":338,"_process":308}],336:[function(require,module,exports){'use strict';function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;})),keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target;}function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,_toPropertyKey(descriptor.key),descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);Object.defineProperty(Constructor,"prototype",{writable:false});return Constructor;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(typeof input!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(typeof res!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var _require=require('buffer'),Buffer=_require.Buffer;var _require2=require('util'),inspect=_require2.inspect;var custom=inspect&&inspect.custom||'inspect';function copyBuffer(src,target,offset){Buffer.prototype.copy.call(src,target,offset);}module.exports=/*#__PURE__*/function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0;}_createClass(BufferList,[{key:"push",value:function push(v){var entry={data:v,next:null};if(this.length>0)this.tail.next=entry;else this.head=entry;this.tail=entry;++this.length;}},{key:"unshift",value:function unshift(v){var entry={data:v,next:this.head};if(this.length===0)this.tail=entry;this.head=entry;++this.length;}},{key:"shift",value:function shift(){if(this.length===0)return;var ret=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return ret;}},{key:"clear",value:function clear(){this.head=this.tail=null;this.length=0;}},{key:"join",value:function join(s){if(this.length===0)return'';var p=this.head;var ret=''+p.data;while(p=p.next)ret+=s+p.data;return ret;}},{key:"concat",value:function concat(n){if(this.length===0)return Buffer.alloc(0);var ret=Buffer.allocUnsafe(n>>>0);var p=this.head;var i=0;while(p){copyBuffer(p.data,ret,i);i+=p.data.length;p=p.next;}return ret;}// Consumes a specified amount of bytes or characters from the buffered data.
12393
12593
  },{key:"consume",value:function consume(n,hasStrings){var ret;if(n<this.head.data.length){// `slice` is the same for buffers and strings.
12394
12594
  ret=this.head.data.slice(0,n);this.head.data=this.head.data.slice(n);}else if(n===this.head.data.length){// First chunk is a perfect match.
12395
12595
  ret=this.shift();}else{// Result spans more than one buffer.
@@ -12398,7 +12598,7 @@ ret=hasStrings?this._getString(n):this._getBuffer(n);}return ret;}},{key:"first"
12398
12598
  },{key:"_getBuffer",value:function _getBuffer(n){var ret=Buffer.allocUnsafe(n);var p=this.head;var c=1;p.data.copy(ret);n-=p.data.length;while(p=p.next){var buf=p.data;var nb=n>buf.length?buf.length:n;buf.copy(ret,ret.length-n,0,nb);n-=nb;if(n===0){if(nb===buf.length){++c;if(p.next)this.head=p.next;else this.head=this.tail=null;}else{this.head=p;p.data=buf.slice(nb);}break;}++c;}this.length-=c;return ret;}// Make sure the linked list only shows the minimal necessary information.
12399
12599
  },{key:custom,value:function value(_,options){return inspect(this,_objectSpread(_objectSpread({},options),{},{// Only inspect one level.
12400
12600
  depth:0,// It should not recurse.
12401
- customInspect:false}));}}]);return BufferList;}();},{"buffer":20,"util":18}],334:[function(require,module,exports){(function(process){(function(){'use strict';// undocumented cb() API, needed for core, not for public API
12601
+ customInspect:false}));}}]);return BufferList;}();},{"buffer":20,"util":18}],337:[function(require,module,exports){(function(process){(function(){'use strict';// undocumented cb() API, needed for core, not for public API
12402
12602
  function destroy(err,cb){var _this=this;var readableDestroyed=this._readableState&&this._readableState.destroyed;var writableDestroyed=this._writableState&&this._writableState.destroyed;if(readableDestroyed||writableDestroyed){if(cb){cb(err);}else if(err){if(!this._writableState){process.nextTick(emitErrorNT,this,err);}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;process.nextTick(emitErrorNT,this,err);}}return this;}// we set destroyed to true before firing error callbacks in order
12403
12603
  // to make it re-entrance safe in case destroy() is called within callbacks
12404
12604
  if(this._readableState){this._readableState.destroyed=true;}// if this is a duplex stream mark the writable part as destroyed as well
@@ -12407,15 +12607,15 @@ if(this._writableState){this._writableState.destroyed=true;}this._destroy(err||n
12407
12607
  // For now when you opt-in to autoDestroy we allow
12408
12608
  // the error to be emitted nextTick. In a future
12409
12609
  // semver major update we should change the default to this.
12410
- var rState=stream._readableState;var wState=stream._writableState;if(rState&&rState.autoDestroy||wState&&wState.autoDestroy)stream.destroy(err);else stream.emit('error',err);}module.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy};}).call(this);}).call(this,require('_process'));},{"_process":305}],335:[function(require,module,exports){// Ported from https://github.com/mafintosh/end-of-stream with
12610
+ var rState=stream._readableState;var wState=stream._writableState;if(rState&&rState.autoDestroy||wState&&wState.autoDestroy)stream.destroy(err);else stream.emit('error',err);}module.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy};}).call(this);}).call(this,require('_process'));},{"_process":308}],338:[function(require,module,exports){// Ported from https://github.com/mafintosh/end-of-stream with
12411
12611
  // permission from the author, Mathias Buus (@mafintosh).
12412
12612
  'use strict';var ERR_STREAM_PREMATURE_CLOSE=require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;function once(callback){var called=false;return function(){if(called)return;called=true;for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}callback.apply(this,args);};}function noop(){}function isRequest(stream){return stream.setHeader&&typeof stream.abort==='function';}function eos(stream,opts,callback){if(typeof opts==='function')return eos(stream,null,opts);if(!opts)opts={};callback=once(callback||noop);var readable=opts.readable||opts.readable!==false&&stream.readable;var writable=opts.writable||opts.writable!==false&&stream.writable;var onlegacyfinish=function onlegacyfinish(){if(!stream.writable)onfinish();};var writableEnded=stream._writableState&&stream._writableState.finished;var onfinish=function onfinish(){writable=false;writableEnded=true;if(!readable)callback.call(stream);};var readableEnded=stream._readableState&&stream._readableState.endEmitted;var onend=function onend(){readable=false;readableEnded=true;if(!writable)callback.call(stream);};var onerror=function onerror(err){callback.call(stream,err);};var onclose=function onclose(){var err;if(readable&&!readableEnded){if(!stream._readableState||!stream._readableState.ended)err=new ERR_STREAM_PREMATURE_CLOSE();return callback.call(stream,err);}if(writable&&!writableEnded){if(!stream._writableState||!stream._writableState.ended)err=new ERR_STREAM_PREMATURE_CLOSE();return callback.call(stream,err);}};var onrequest=function onrequest(){stream.req.on('finish',onfinish);};if(isRequest(stream)){stream.on('complete',onfinish);stream.on('abort',onclose);if(stream.req)onrequest();else stream.on('request',onrequest);}else if(writable&&!stream._writableState){// legacy streams
12413
- stream.on('end',onlegacyfinish);stream.on('close',onlegacyfinish);}stream.on('end',onend);stream.on('finish',onfinish);if(opts.error!==false)stream.on('error',onerror);stream.on('close',onclose);return function(){stream.removeListener('complete',onfinish);stream.removeListener('abort',onclose);stream.removeListener('request',onrequest);if(stream.req)stream.req.removeListener('finish',onfinish);stream.removeListener('end',onlegacyfinish);stream.removeListener('close',onlegacyfinish);stream.removeListener('finish',onfinish);stream.removeListener('end',onend);stream.removeListener('error',onerror);stream.removeListener('close',onclose);};}module.exports=eos;},{"../../../errors":326}],336:[function(require,module,exports){module.exports=function(){throw new Error('Readable.from is not available in the browser');};},{}],337:[function(require,module,exports){// Ported from https://github.com/mafintosh/pump with
12613
+ stream.on('end',onlegacyfinish);stream.on('close',onlegacyfinish);}stream.on('end',onend);stream.on('finish',onfinish);if(opts.error!==false)stream.on('error',onerror);stream.on('close',onclose);return function(){stream.removeListener('complete',onfinish);stream.removeListener('abort',onclose);stream.removeListener('request',onrequest);if(stream.req)stream.req.removeListener('finish',onfinish);stream.removeListener('end',onlegacyfinish);stream.removeListener('close',onlegacyfinish);stream.removeListener('finish',onfinish);stream.removeListener('end',onend);stream.removeListener('error',onerror);stream.removeListener('close',onclose);};}module.exports=eos;},{"../../../errors":329}],339:[function(require,module,exports){module.exports=function(){throw new Error('Readable.from is not available in the browser');};},{}],340:[function(require,module,exports){// Ported from https://github.com/mafintosh/pump with
12414
12614
  // permission from the author, Mathias Buus (@mafintosh).
12415
12615
  'use strict';var eos;function once(callback){var called=false;return function(){if(called)return;called=true;callback.apply(void 0,arguments);};}var _require$codes=require('../../../errors').codes,ERR_MISSING_ARGS=_require$codes.ERR_MISSING_ARGS,ERR_STREAM_DESTROYED=_require$codes.ERR_STREAM_DESTROYED;function noop(err){// Rethrow the error if it exists to avoid swallowing it
12416
12616
  if(err)throw err;}function isRequest(stream){return stream.setHeader&&typeof stream.abort==='function';}function destroyer(stream,reading,writing,callback){callback=once(callback);var closed=false;stream.on('close',function(){closed=true;});if(eos===undefined)eos=require('./end-of-stream');eos(stream,{readable:reading,writable:writing},function(err){if(err)return callback(err);closed=true;callback();});var destroyed=false;return function(err){if(closed)return;if(destroyed)return;destroyed=true;// request.destroy just do .end - .abort is what we want
12417
- if(isRequest(stream))return stream.abort();if(typeof stream.destroy==='function')return stream.destroy();callback(err||new ERR_STREAM_DESTROYED('pipe'));};}function call(fn){fn();}function pipe(from,to){return from.pipe(to);}function popCallback(streams){if(!streams.length)return noop;if(typeof streams[streams.length-1]!=='function')return noop;return streams.pop();}function pipeline(){for(var _len=arguments.length,streams=new Array(_len),_key=0;_key<_len;_key++){streams[_key]=arguments[_key];}var callback=popCallback(streams);if(Array.isArray(streams[0]))streams=streams[0];if(streams.length<2){throw new ERR_MISSING_ARGS('streams');}var error;var destroys=streams.map(function(stream,i){var reading=i<streams.length-1;var writing=i>0;return destroyer(stream,reading,writing,function(err){if(!error)error=err;if(err)destroys.forEach(call);if(reading)return;destroys.forEach(call);callback(error);});});return streams.reduce(pipe);}module.exports=pipeline;},{"../../../errors":326,"./end-of-stream":335}],338:[function(require,module,exports){'use strict';var ERR_INVALID_OPT_VALUE=require('../../../errors').codes.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(options,isDuplex,duplexKey){return options.highWaterMark!=null?options.highWaterMark:isDuplex?options[duplexKey]:null;}function getHighWaterMark(state,options,duplexKey,isDuplex){var hwm=highWaterMarkFrom(options,isDuplex,duplexKey);if(hwm!=null){if(!(isFinite(hwm)&&Math.floor(hwm)===hwm)||hwm<0){var name=isDuplex?duplexKey:'highWaterMark';throw new ERR_INVALID_OPT_VALUE(name,hwm);}return Math.floor(hwm);}// Default value
12418
- return state.objectMode?16:16*1024;}module.exports={getHighWaterMark:getHighWaterMark};},{"../../../errors":326}],339:[function(require,module,exports){module.exports=require('events').EventEmitter;},{"events":50}],340:[function(require,module,exports){exports=module.exports=require('./lib/_stream_readable.js');exports.Stream=exports;exports.Readable=exports;exports.Writable=require('./lib/_stream_writable.js');exports.Duplex=require('./lib/_stream_duplex.js');exports.Transform=require('./lib/_stream_transform.js');exports.PassThrough=require('./lib/_stream_passthrough.js');exports.finished=require('./lib/internal/streams/end-of-stream.js');exports.pipeline=require('./lib/internal/streams/pipeline.js');},{"./lib/_stream_duplex.js":327,"./lib/_stream_passthrough.js":328,"./lib/_stream_readable.js":329,"./lib/_stream_transform.js":330,"./lib/_stream_writable.js":331,"./lib/internal/streams/end-of-stream.js":335,"./lib/internal/streams/pipeline.js":337}],341:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
12617
+ if(isRequest(stream))return stream.abort();if(typeof stream.destroy==='function')return stream.destroy();callback(err||new ERR_STREAM_DESTROYED('pipe'));};}function call(fn){fn();}function pipe(from,to){return from.pipe(to);}function popCallback(streams){if(!streams.length)return noop;if(typeof streams[streams.length-1]!=='function')return noop;return streams.pop();}function pipeline(){for(var _len=arguments.length,streams=new Array(_len),_key=0;_key<_len;_key++){streams[_key]=arguments[_key];}var callback=popCallback(streams);if(Array.isArray(streams[0]))streams=streams[0];if(streams.length<2){throw new ERR_MISSING_ARGS('streams');}var error;var destroys=streams.map(function(stream,i){var reading=i<streams.length-1;var writing=i>0;return destroyer(stream,reading,writing,function(err){if(!error)error=err;if(err)destroys.forEach(call);if(reading)return;destroys.forEach(call);callback(error);});});return streams.reduce(pipe);}module.exports=pipeline;},{"../../../errors":329,"./end-of-stream":338}],341:[function(require,module,exports){'use strict';var ERR_INVALID_OPT_VALUE=require('../../../errors').codes.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(options,isDuplex,duplexKey){return options.highWaterMark!=null?options.highWaterMark:isDuplex?options[duplexKey]:null;}function getHighWaterMark(state,options,duplexKey,isDuplex){var hwm=highWaterMarkFrom(options,isDuplex,duplexKey);if(hwm!=null){if(!(isFinite(hwm)&&Math.floor(hwm)===hwm)||hwm<0){var name=isDuplex?duplexKey:'highWaterMark';throw new ERR_INVALID_OPT_VALUE(name,hwm);}return Math.floor(hwm);}// Default value
12618
+ return state.objectMode?16:16*1024;}module.exports={getHighWaterMark:getHighWaterMark};},{"../../../errors":329}],342:[function(require,module,exports){module.exports=require('events').EventEmitter;},{"events":50}],343:[function(require,module,exports){exports=module.exports=require('./lib/_stream_readable.js');exports.Stream=exports;exports.Readable=exports;exports.Writable=require('./lib/_stream_writable.js');exports.Duplex=require('./lib/_stream_duplex.js');exports.Transform=require('./lib/_stream_transform.js');exports.PassThrough=require('./lib/_stream_passthrough.js');exports.finished=require('./lib/internal/streams/end-of-stream.js');exports.pipeline=require('./lib/internal/streams/pipeline.js');},{"./lib/_stream_duplex.js":330,"./lib/_stream_passthrough.js":331,"./lib/_stream_readable.js":332,"./lib/_stream_transform.js":333,"./lib/_stream_writable.js":334,"./lib/internal/streams/end-of-stream.js":338,"./lib/internal/streams/pipeline.js":340}],344:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
12419
12619
  //
12420
12620
  // Permission is hereby granted, free of charge, to any person obtaining a
12421
12621
  // copy of this software and associated documentation files (the
@@ -12469,13 +12669,13 @@ function utf8End(buf){var r=buf&&buf.length?this.write(buf):'';if(this.lastNeed)
12469
12669
  function utf16Text(buf,i){if((buf.length-i)%2===0){var r=buf.toString('utf16le',i);if(r){var c=r.charCodeAt(r.length-1);if(c>=0xD800&&c<=0xDBFF){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=buf[buf.length-2];this.lastChar[1]=buf[buf.length-1];return r.slice(0,-1);}}return r;}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=buf[buf.length-1];return buf.toString('utf16le',i,buf.length-1);}// For UTF-16LE we do not explicitly append special replacement characters if we
12470
12670
  // end on a partial character, we simply let v8 handle that.
12471
12671
  function utf16End(buf){var r=buf&&buf.length?this.write(buf):'';if(this.lastNeed){var end=this.lastTotal-this.lastNeed;return r+this.lastChar.toString('utf16le',0,end);}return r;}function base64Text(buf,i){var n=(buf.length-i)%3;if(n===0)return buf.toString('base64',i);this.lastNeed=3-n;this.lastTotal=3;if(n===1){this.lastChar[0]=buf[buf.length-1];}else{this.lastChar[0]=buf[buf.length-2];this.lastChar[1]=buf[buf.length-1];}return buf.toString('base64',i,buf.length-n);}function base64End(buf){var r=buf&&buf.length?this.write(buf):'';if(this.lastNeed)return r+this.lastChar.toString('base64',0,3-this.lastNeed);return r;}// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
12472
- function simpleWrite(buf){return buf.toString(this.encoding);}function simpleEnd(buf){return buf&&buf.length?this.write(buf):'';}},{"safe-buffer":315}],342:[function(require,module,exports){(function(setImmediate,clearImmediate){(function(){var nextTick=require('process/browser.js').nextTick;var apply=Function.prototype.apply;var slice=Array.prototype.slice;var immediateIds={};var nextImmediateId=0;// DOM APIs, for completeness
12672
+ function simpleWrite(buf){return buf.toString(this.encoding);}function simpleEnd(buf){return buf&&buf.length?this.write(buf):'';}},{"safe-buffer":318}],345:[function(require,module,exports){(function(setImmediate,clearImmediate){(function(){var nextTick=require('process/browser.js').nextTick;var apply=Function.prototype.apply;var slice=Array.prototype.slice;var immediateIds={};var nextImmediateId=0;// DOM APIs, for completeness
12473
12673
  exports.setTimeout=function(){return new Timeout(apply.call(setTimeout,window,arguments),clearTimeout);};exports.setInterval=function(){return new Timeout(apply.call(setInterval,window,arguments),clearInterval);};exports.clearTimeout=exports.clearInterval=function(timeout){timeout.close();};function Timeout(id,clearFn){this._id=id;this._clearFn=clearFn;}Timeout.prototype.unref=Timeout.prototype.ref=function(){};Timeout.prototype.close=function(){this._clearFn.call(window,this._id);};// Does not start the time, just sets up the members needed.
12474
12674
  exports.enroll=function(item,msecs){clearTimeout(item._idleTimeoutId);item._idleTimeout=msecs;};exports.unenroll=function(item){clearTimeout(item._idleTimeoutId);item._idleTimeout=-1;};exports._unrefActive=exports.active=function(item){clearTimeout(item._idleTimeoutId);var msecs=item._idleTimeout;if(msecs>=0){item._idleTimeoutId=setTimeout(function onTimeout(){if(item._onTimeout)item._onTimeout();},msecs);}};// That's not how node.js implements it but the exposed api is the same.
12475
12675
  exports.setImmediate=typeof setImmediate==="function"?setImmediate:function(fn){var id=nextImmediateId++;var args=arguments.length<2?false:slice.call(arguments,1);immediateIds[id]=true;nextTick(function onNextTick(){if(immediateIds[id]){// fn.call() is faster so we optimize for the common use-case
12476
12676
  // @see http://jsperf.com/call-apply-segu
12477
12677
  if(args){fn.apply(null,args);}else{fn.call(null);}// Prevent ids from leaking
12478
- exports.clearImmediate(id);}});return id;};exports.clearImmediate=typeof clearImmediate==="function"?clearImmediate:function(id){delete immediateIds[id];};}).call(this);}).call(this,require("timers").setImmediate,require("timers").clearImmediate);},{"process/browser.js":305,"timers":342}],343:[function(require,module,exports){/*
12678
+ exports.clearImmediate(id);}});return id;};exports.clearImmediate=typeof clearImmediate==="function"?clearImmediate:function(id){delete immediateIds[id];};}).call(this);}).call(this,require("timers").setImmediate,require("timers").clearImmediate);},{"process/browser.js":308,"timers":345}],346:[function(require,module,exports){/*
12479
12679
  * Copyright Joyent, Inc. and other Node contributors.
12480
12680
  *
12481
12681
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -12653,7 +12853,7 @@ if(psychotic){result.hostname=isAbsolute?'':srcPath.length?srcPath.shift():'';re
12653
12853
  * this especially happens in cases like
12654
12854
  * url.resolveObject('mailto:local1@domain1', 'local2@domain2')
12655
12855
  */var authInHost=result.host&&result.host.indexOf('@')>0?result.host.split('@'):false;if(authInHost){result.auth=authInHost.shift();result.hostname=authInHost.shift();result.host=result.hostname;}}mustEndAbs=mustEndAbs||result.host&&srcPath.length;if(mustEndAbs&&!isAbsolute){srcPath.unshift('');}if(srcPath.length>0){result.pathname=srcPath.join('/');}else{result.pathname=null;result.path=null;}// to support request.http
12656
- if(result.pathname!==null||result.search!==null){result.path=(result.pathname?result.pathname:'')+(result.search?result.search:'');}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result;};Url.prototype.parseHost=function(){var host=this.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==':'){this.port=port.substr(1);}host=host.substr(0,host.length-port.length);}if(host){this.hostname=host;}};exports.parse=urlParse;exports.resolve=urlResolve;exports.resolveObject=urlResolveObject;exports.format=urlFormat;exports.Url=Url;},{"punycode/":306,"qs":308}],344:[function(require,module,exports){(function(global){(function(){/**
12856
+ if(result.pathname!==null||result.search!==null){result.path=(result.pathname?result.pathname:'')+(result.search?result.search:'');}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result;};Url.prototype.parseHost=function(){var host=this.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==':'){this.port=port.substr(1);}host=host.substr(0,host.length-port.length);}if(host){this.hostname=host;}};exports.parse=urlParse;exports.resolve=urlResolve;exports.resolveObject=urlResolveObject;exports.format=urlFormat;exports.Url=Url;},{"punycode/":309,"qs":311}],347:[function(require,module,exports){(function(global){(function(){/**
12657
12857
  * Module exports.
12658
12858
  */module.exports=deprecate;/**
12659
12859
  * Mark that a method should not be used.
@@ -12678,12 +12878,12 @@ if(result.pathname!==null||result.search!==null){result.path=(result.pathname?re
12678
12878
  * @returns {Boolean}
12679
12879
  * @api private
12680
12880
  */function config(name){// accessing global.localStorage can trigger a DOMException in sandboxed iframes
12681
- try{if(!global.localStorage)return false;}catch(_){return false;}var val=global.localStorage[name];if(null==val)return false;return String(val).toLowerCase()==='true';}}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],345:[function(require,module,exports){// Returns a wrapper function that returns a wrapped callback
12881
+ try{if(!global.localStorage)return false;}catch(_){return false;}var val=global.localStorage[name];if(null==val)return false;return String(val).toLowerCase()==='true';}}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],348:[function(require,module,exports){// Returns a wrapper function that returns a wrapped callback
12682
12882
  // The wrapper function should do some stuff, and return a
12683
12883
  // presumably different callback function.
12684
12884
  // This makes sure that own properties are retained, so that
12685
12885
  // decorations and such are not lost along the way.
12686
- module.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(typeof fn!=='function')throw new TypeError('need wrapper function');Object.keys(fn).forEach(function(k){wrapper[k]=fn[k];});return wrapper;function wrapper(){var args=new Array(arguments.length);for(var i=0;i<args.length;i++){args[i]=arguments[i];}var ret=fn.apply(this,args);var cb=args[args.length-1];if(typeof ret==='function'&&ret!==cb){Object.keys(cb).forEach(function(k){ret[k]=cb[k];});}return ret;}}},{}],346:[function(require,module,exports){module.exports=extend;var hasOwnProperty=Object.prototype.hasOwnProperty;function extend(){var target={};for(var i=0;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}},{}],347:[function(require,module,exports){module.exports={"name":"pict-docuserve","version":"1.4.5","description":"Pict Documentation Server - A single-page documentation viewer built on Pict","main":"source/Pict-Application-Docuserve.js","bin":{"pict-docuserve":"source/cli/Docuserve-CLI-Run.js"},"files":["source/","dist/","html/"],"scripts":{"start":"node source/cli/Docuserve-CLI-Run.js serve","brand":"node node_modules/pict-section-theme/bin/pict-section-theme-brand.js --manifest ../../../Retold-Modules-Manifest.json --module pict-docuserve","build":"npx quack build && npx quack copy","build-docs":"npx quack build && npx quack copy && node source/cli/Docuserve-CLI-Run.js inject ./docs && node example_applications/build-examples.js stage-docs","serve-docs":"node source/cli/Docuserve-CLI-Run.js serve ./docs","serve-examples":"node example_applications/build-examples.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","prepublishOnly":"npm run build"},"author":"steven velozo <steven@velozo.com>","license":"MIT","dependencies":{"fable-serviceproviderbase":"^3.0.19","lunr":"^2.3.9","pict":"^1.0.372","pict-application":"^1.0.34","pict-provider":"^1.0.13","pict-section-code":"^1.0.11","pict-section-content":"^1.0.8","pict-section-histogram":"^1.0.1","pict-section-modal":"^1.1.4","pict-section-theme":"^1.1.0","pict-service-commandlineutility":"^1.0.19","pict-view":"^1.0.68"},"devDependencies":{"pict-docuserve":"^1.4.4","quackage":"^1.3.0"},"copyFilesSettings":{"whenFileExists":"overwrite"},"copyFiles":[{"from":"./html/*","to":"./dist/"}],"mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},"retold":{"brand":{"Hash":"pict-docuserve","Name":"Pict Docuserve","Tagline":"A documentation viewer built on Pict","Palette":"default","Icon":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"frame-pict-docuserve-filled-light\">\n\t\t\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\" fill=\"#692bbf\"/>\n\t\t<g clip-path=\"url(#frame-pict-docuserve-filled-light)\"><rect x=\"18\" y=\"30\" width=\"48\" height=\"48\" rx=\"8\" fill=\"#c13ccd\" opacity=\"0.9\"/>\n\t\t\t\t\t<rect x=\"30\" y=\"18\" width=\"48\" height=\"48\" rx=\"8\" fill=\"rgba(255,255,255,0.18)\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"38\" font-weight=\"600\"\n\t\t\tfill=\"#ffffff\" letter-spacing=\"-1\">PD</text>\n\t</svg>","IconType":"svg","Favicon":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"fav-pict-docuserve-light\">\n\t\t\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\" fill=\"#692bbf\"/>\n\t\t<g clip-path=\"url(#fav-pict-docuserve-light)\"><rect x=\"28\" y=\"16\" width=\"52\" height=\"52\" rx=\"9\" fill=\"rgba(255,255,255,0.22)\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"60\" font-weight=\"800\"\n\t\t\tfill=\"#ffffff\" letter-spacing=\"-1\">P</text>\n\t</svg>","FaviconDark":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"fav-pict-docuserve-dark\">\n\t\t\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\" fill=\"#9a6fd8\"/>\n\t\t<g clip-path=\"url(#fav-pict-docuserve-dark)\"><rect x=\"28\" y=\"16\" width=\"52\" height=\"52\" rx=\"9\" fill=\"rgba(255,255,255,0.22)\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"60\" font-weight=\"800\"\n\t\t\tfill=\"#101418\" letter-spacing=\"-1\">P</text>\n\t</svg>","Colors":{"Primary":"#692bbf","Secondary":"#c13ccd","PrimaryLight":"#692bbf","PrimaryDark":"#9a6fd8","SecondaryLight":"#c13ccd","SecondaryDark":"#d48adb"}}}};},{}],348:[function(require,module,exports){/**
12886
+ module.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(typeof fn!=='function')throw new TypeError('need wrapper function');Object.keys(fn).forEach(function(k){wrapper[k]=fn[k];});return wrapper;function wrapper(){var args=new Array(arguments.length);for(var i=0;i<args.length;i++){args[i]=arguments[i];}var ret=fn.apply(this,args);var cb=args[args.length-1];if(typeof ret==='function'&&ret!==cb){Object.keys(cb).forEach(function(k){ret[k]=cb[k];});}return ret;}}},{}],349:[function(require,module,exports){module.exports=extend;var hasOwnProperty=Object.prototype.hasOwnProperty;function extend(){var target={};for(var i=0;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}},{}],350:[function(require,module,exports){module.exports={"name":"pict-docuserve","version":"1.4.7","description":"Pict Documentation Server - A single-page documentation viewer built on Pict","main":"source/Pict-Application-Docuserve.js","bin":{"pict-docuserve":"source/cli/Docuserve-CLI-Run.js"},"files":["source/","dist/","html/"],"scripts":{"start":"node source/cli/Docuserve-CLI-Run.js serve","brand":"node node_modules/pict-section-theme/bin/pict-section-theme-brand.js --manifest ../../../Retold-Modules-Manifest.json --module pict-docuserve","build":"npx quack build && npx quack copy","build-docs":"npx quack build && npx quack copy && node source/cli/Docuserve-CLI-Run.js inject ./docs && node example_applications/build-examples.js stage-docs","serve-docs":"node source/cli/Docuserve-CLI-Run.js serve ./docs","serve-examples":"node example_applications/build-examples.js","test":"npx quack test","tests":"npx quack test -g","coverage":"npx quack coverage","prepublishOnly":"npm run build"},"author":"steven velozo <steven@velozo.com>","license":"MIT","dependencies":{"fable-serviceproviderbase":"^3.0.19","lunr":"^2.3.9","pict":"^1.0.372","pict-application":"^1.0.34","pict-provider":"^1.0.13","pict-provider-theme":"^1.1.1","pict-section-code":"^1.0.11","pict-section-content":"^1.0.8","pict-section-histogram":"^1.0.1","pict-section-modal":"^1.1.4","pict-section-theme":"^1.1.1","pict-service-commandlineutility":"^1.0.19","pict-view":"^1.0.68"},"devDependencies":{"pict-docuserve":"^1.4.4","quackage":"^1.3.0"},"copyFilesSettings":{"whenFileExists":"overwrite"},"copyFiles":[{"from":"./html/*","to":"./dist/"}],"mocha":{"diff":true,"extension":["js"],"package":"./package.json","reporter":"spec","slow":"75","timeout":"5000","ui":"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},"retold":{"brand":{"Hash":"pict-docuserve","Name":"Pict Docuserve","Tagline":"A documentation viewer built on Pict","Palette":"default","Icon":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"frame-pict-docuserve-filled-light\">\n\t\t\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\" fill=\"#692bbf\"/>\n\t\t<g clip-path=\"url(#frame-pict-docuserve-filled-light)\"><rect x=\"18\" y=\"30\" width=\"48\" height=\"48\" rx=\"8\" fill=\"#c13ccd\" opacity=\"0.9\"/>\n\t\t\t\t\t<rect x=\"30\" y=\"18\" width=\"48\" height=\"48\" rx=\"8\" fill=\"rgba(255,255,255,0.18)\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"38\" font-weight=\"600\"\n\t\t\tfill=\"#ffffff\" letter-spacing=\"-1\">PD</text>\n\t</svg>","IconType":"svg","Favicon":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"fav-pict-docuserve-light\">\n\t\t\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\" fill=\"#692bbf\"/>\n\t\t<g clip-path=\"url(#fav-pict-docuserve-light)\"><rect x=\"28\" y=\"16\" width=\"52\" height=\"52\" rx=\"9\" fill=\"rgba(255,255,255,0.22)\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"60\" font-weight=\"800\"\n\t\t\tfill=\"#ffffff\" letter-spacing=\"-1\">P</text>\n\t</svg>","FaviconDark":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"fav-pict-docuserve-dark\">\n\t\t\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 2 48\n\t\t\tC 2 18.0222416, 18.0222416 2, 48 2\n\t\t\tC 77.9777584 2, 94 18.0222416, 94 48\n\t\t\tC 94 77.9777584, 77.9777584 94, 48 94\n\t\t\tC 18.0222416 94, 2 77.9777584, 2 48 Z\" fill=\"#9a6fd8\"/>\n\t\t<g clip-path=\"url(#fav-pict-docuserve-dark)\"><rect x=\"28\" y=\"16\" width=\"52\" height=\"52\" rx=\"9\" fill=\"rgba(255,255,255,0.22)\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"60\" font-weight=\"800\"\n\t\t\tfill=\"#101418\" letter-spacing=\"-1\">P</text>\n\t</svg>","Colors":{"Primary":"#692bbf","Secondary":"#c13ccd","PrimaryLight":"#692bbf","PrimaryDark":"#9a6fd8","SecondaryLight":"#c13ccd","SecondaryDark":"#d48adb"}}}};},{}],351:[function(require,module,exports){/**
12687
12887
  * Docuserve-Brand — docuserve's own wordmark, used only as a fallback.
12688
12888
  *
12689
12889
  * Docuserve is a viewer: the docs being served dictate the brand, not
@@ -12714,7 +12914,7 @@ module.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(
12714
12914
  * Curated palette keys: mix, default, desert, ocean, forest, synthwave,
12715
12915
  * twilight, cosmos, carnival.
12716
12916
  */// Path: source/ → up 1 to pict-docuserve/.
12717
- const tmpPackage=require('../package.json');if(!tmpPackage.retold||!tmpPackage.retold.brand){throw new Error('pict-docuserve: package.json is missing retold.brand — '+'run `npm run brand` (which calls pict-section-theme-brand) before building');}module.exports=tmpPackage.retold.brand;},{"../package.json":347}],349:[function(require,module,exports){module.exports={"Name":"Pict Docuserve","Hash":"Docuserve","MainViewportViewIdentifier":"Docuserve-Layout","AutoSolveAfterInitialize":true,"AutoRenderMainViewportViewAfterInitialize":false,"AutoRenderViewsAfterInitialize":false,"pict_configuration":{"Product":"Docuserve-Pict-Application"}};},{}],350:[function(require,module,exports){const libPictApplication=require('pict-application');// Provider
12917
+ const tmpPackage=require('../package.json');if(!tmpPackage.retold||!tmpPackage.retold.brand){throw new Error('pict-docuserve: package.json is missing retold.brand — '+'run `npm run brand` (which calls pict-section-theme-brand) before building');}module.exports=tmpPackage.retold.brand;},{"../package.json":350}],352:[function(require,module,exports){module.exports={"Name":"Pict Docuserve","Hash":"Docuserve","MainViewportViewIdentifier":"Docuserve-Layout","AutoSolveAfterInitialize":true,"AutoRenderMainViewportViewAfterInitialize":false,"AutoRenderViewsAfterInitialize":false,"pict_configuration":{"Product":"Docuserve-Pict-Application"}};},{}],353:[function(require,module,exports){const libPictApplication=require('pict-application');// Provider
12718
12918
  const libDocumentationProvider=require('./providers/Pict-Provider-Docuserve-Documentation.js');const libDemosProvider=require('./providers/Pict-Provider-Docuserve-Demos.js');// Shared modal + theme stack
12719
12919
  const libPictSectionModal=require('pict-section-modal');const libPictSectionTheme=require('pict-section-theme');// Precomputed brand (icon, name, palette, colors). Generated by
12720
12920
  // `npm run brand` from Retold-Modules-Manifest.json + this module's
@@ -12896,7 +13096,7 @@ tmpContentView.displayContent(pHTML);},'','',tmpPath);}/**
12896
13096
  */navigateToSearch(pQuery){let tmpSidebarView=this.pict.views['Docuserve-Sidebar'];let tmpSearchView=this.pict.views['Docuserve-Search'];// Update state
12897
13097
  this.pict.AppData.Docuserve.CurrentGroup='';this.pict.AppData.Docuserve.CurrentModule='';this.pict.AppData.Docuserve.CurrentPath='';// Clear module-specific sidebar nav
12898
13098
  tmpSidebarView.clearModuleNav();tmpSidebarView.renderSidebarGroups();// Render the search view with the query
12899
- tmpSearchView.render();tmpSearchView.showSearch(pQuery||'');this._syncPlaygroundVisibility();}}module.exports=DocuserveApplication;module.exports.default_configuration=require('./Pict-Application-Docuserve-Configuration.json');},{"./Docuserve-Brand.js":348,"./Pict-Application-Docuserve-Configuration.json":349,"./providers/Pict-Provider-Docuserve-Demos.js":351,"./providers/Pict-Provider-Docuserve-Documentation.js":352,"./views/PictView-Docuserve-Content.js":353,"./views/PictView-Docuserve-Demo.js":354,"./views/PictView-Docuserve-Fable-Playground.js":355,"./views/PictView-Docuserve-Layout.js":356,"./views/PictView-Docuserve-Search.js":357,"./views/PictView-Docuserve-Section-Playground.js":358,"./views/PictView-Docuserve-Sidebar.js":359,"./views/PictView-Docuserve-Splash.js":360,"./views/PictView-Docuserve-TopBar-Nav.js":361,"./views/PictView-Docuserve-TopBar-User.js":362,"pict-application":141,"pict-section-modal":170,"pict-section-theme":171}],351:[function(require,module,exports){const libPictProvider=require('pict-provider');/**
13099
+ tmpSearchView.render();tmpSearchView.showSearch(pQuery||'');this._syncPlaygroundVisibility();}}module.exports=DocuserveApplication;module.exports.default_configuration=require('./Pict-Application-Docuserve-Configuration.json');},{"./Docuserve-Brand.js":351,"./Pict-Application-Docuserve-Configuration.json":352,"./providers/Pict-Provider-Docuserve-Demos.js":354,"./providers/Pict-Provider-Docuserve-Documentation.js":355,"./views/PictView-Docuserve-Content.js":356,"./views/PictView-Docuserve-Demo.js":357,"./views/PictView-Docuserve-Fable-Playground.js":358,"./views/PictView-Docuserve-Layout.js":359,"./views/PictView-Docuserve-Search.js":360,"./views/PictView-Docuserve-Section-Playground.js":361,"./views/PictView-Docuserve-Sidebar.js":362,"./views/PictView-Docuserve-Splash.js":363,"./views/PictView-Docuserve-TopBar-Nav.js":364,"./views/PictView-Docuserve-TopBar-User.js":365,"pict-application":141,"pict-section-modal":172,"pict-section-theme":173}],354:[function(require,module,exports){const libPictProvider=require('pict-provider');/**
12900
13100
  * Highest demo-entry schema version this provider understands.
12901
13101
  *
12902
13102
  * Each demo entry declares `DemoSchemaVersion` (defaults to 1 when
@@ -12984,7 +13184,7 @@ let tmpExisting=this._byKey[tmpKey];if(tmpExisting){let tmpAllIdx=this._all.inde
12984
13184
  *
12985
13185
  * @param {Array<object>} pEntries
12986
13186
  * @returns {number} count of successfully registered entries
12987
- */registerAll(pEntries){if(!Array.isArray(pEntries)){return 0;}let tmpCount=0;for(let i=0;i<pEntries.length;i++){if(this.register(pEntries[i])){tmpCount++;}}return tmpCount;}get(pGroup,pModule,pHash){return this._byKey[pGroup+'/'+pModule+'/'+pHash]||null;}listAll(){return this._all.slice();}listByModule(pGroup,pModule){let tmpList=this._byModule[pGroup+'/'+pModule];return tmpList?tmpList.slice():[];}hasDemos(pGroup,pModule){let tmpList=this._byModule[pGroup+'/'+pModule];return!!(tmpList&&tmpList.length>0);}}module.exports=PictProviderDocuserveDemos;module.exports.default_configuration={ProviderIdentifier:'Docuserve-Demos'};module.exports.MAX_DEMO_SCHEMA_VERSION=MAX_DEMO_SCHEMA_VERSION;},{"pict-provider":148}],352:[function(require,module,exports){const libPictProvider=require('pict-provider');const libLunr=require('lunr');const libPictSectionContent=require('pict-section-content');const libPictContentProvider=libPictSectionContent.PictContentProvider;/**
13187
+ */registerAll(pEntries){if(!Array.isArray(pEntries)){return 0;}let tmpCount=0;for(let i=0;i<pEntries.length;i++){if(this.register(pEntries[i])){tmpCount++;}}return tmpCount;}get(pGroup,pModule,pHash){return this._byKey[pGroup+'/'+pModule+'/'+pHash]||null;}listAll(){return this._all.slice();}listByModule(pGroup,pModule){let tmpList=this._byModule[pGroup+'/'+pModule];return tmpList?tmpList.slice():[];}hasDemos(pGroup,pModule){let tmpList=this._byModule[pGroup+'/'+pModule];return!!(tmpList&&tmpList.length>0);}}module.exports=PictProviderDocuserveDemos;module.exports.default_configuration={ProviderIdentifier:'Docuserve-Demos'};module.exports.MAX_DEMO_SCHEMA_VERSION=MAX_DEMO_SCHEMA_VERSION;},{"pict-provider":149}],355:[function(require,module,exports){const libPictProvider=require('pict-provider');const libLunr=require('lunr');const libPictSectionContent=require('pict-section-content');const libPictContentProvider=libPictSectionContent.PictContentProvider;/**
12988
13188
  * Documentation Provider for Docuserve
12989
13189
  *
12990
13190
  * Loads the Indoctrinate-generated catalog and keyword index,
@@ -13452,7 +13652,7 @@ let tmpParts=tmpPath.split('/');if(tmpParts.length>=2){if(this.isGroupInCatalog(
13452
13652
  if(pCurrentGroup&&pCurrentModule){// Determine the directory of the current document
13453
13653
  let tmpDocDir='';if(pCurrentDocPath){let tmpDirParts=pCurrentDocPath.split('/');if(tmpDirParts.length>1){tmpDirParts.pop();// Remove filename
13454
13654
  tmpDocDir=tmpDirParts.join('/')+'/';}}return'#/doc/'+pCurrentGroup+'/'+pCurrentModule+'/'+tmpDocDir+tmpPath;}// Local doc page (no module context)
13455
- if(tmpPath.match(/\.md$/)){let tmpPageKey=tmpPath.replace(/\.md$/,'');return'#/page/'+tmpPageKey;}return'#/page/'+tmpPath;}}module.exports=DocuserveDocumentationProvider;module.exports.default_configuration={ProviderIdentifier:"Docuserve-Documentation",AutoInitialize:true,AutoInitializeOrdinal:0};},{"lunr":116,"pict-provider":148,"pict-section-content":153}],353:[function(require,module,exports){const libPictContentView=require('pict-section-content');const _ViewConfiguration={ViewIdentifier:"Docuserve-Content",DefaultRenderable:"Docuserve-Content-Display",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:false,// The parent pict-section-content CSS must be included here because
13655
+ if(tmpPath.match(/\.md$/)){let tmpPageKey=tmpPath.replace(/\.md$/,'');return'#/page/'+tmpPageKey;}return'#/page/'+tmpPath;}}module.exports=DocuserveDocumentationProvider;module.exports.default_configuration={ProviderIdentifier:"Docuserve-Documentation",AutoInitialize:true,AutoInitializeOrdinal:0};},{"lunr":116,"pict-provider":149,"pict-section-content":154}],356:[function(require,module,exports){const libPictContentView=require('pict-section-content');const _ViewConfiguration={ViewIdentifier:"Docuserve-Content",DefaultRenderable:"Docuserve-Content-Display",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:false,// The parent pict-section-content CSS must be included here because
13456
13656
  // pict-view's Object.assign replaces the CSS property entirely when
13457
13657
  // the child provides its own. We cannot read the parent's
13458
13658
  // default_configuration.CSS at module scope because browserify's
@@ -13513,7 +13713,7 @@ tmpActions.appendChild(tmpBtn);tmpContainer.setAttribute('data-tryplay-wired','t
13513
13713
  * @param {HTMLElement} pButtonEl - The Try button that was clicked.
13514
13714
  */tryInPlayground(pButtonEl){if(!pButtonEl){return;}let tmpContainer=pButtonEl.closest('.pict-content-code-container');if(!tmpContainer){return;}let tmpCodeEl=tmpContainer.querySelector('code');if(!tmpCodeEl){return;}let tmpPlayground=this.pict.views['Docuserve-Fable-Playground'];if(tmpPlayground&&typeof tmpPlayground.loadCode==='function'){tmpPlayground.loadCode(tmpCodeEl.textContent);}}/**
13515
13715
  * Show a loading indicator.
13516
- */showLoading(){super.showLoading('Loading documentation...','Docuserve-Content-Body');}}module.exports=DocuserveContentView;module.exports.default_configuration=_ViewConfiguration;},{"pict-section-content":153}],354:[function(require,module,exports){const libPictView=require('pict-view');/**
13716
+ */showLoading(){super.showLoading('Loading documentation...','Docuserve-Content-Body');}}module.exports=DocuserveContentView;module.exports.default_configuration=_ViewConfiguration;},{"pict-section-content":154}],357:[function(require,module,exports){const libPictView=require('pict-view');/**
13517
13717
  * Docuserve-Demo — renders one interactive demo registered with the
13518
13718
  * Docuserve-Demos provider.
13519
13719
  *
@@ -13552,7 +13752,7 @@ tmpActions.appendChild(tmpBtn);tmpContainer.setAttribute('data-tryplay-wired','t
13552
13752
  let tmpHTML=this.pict.parseTemplateByHash('Docuserve-Demo-Template',{});this.pict.ContentAssignment.assignContent('#Docuserve-Content-Container',tmpHTML);this.pict.CSSMap.injectCSS();// Populate header
13553
13753
  let tmpTitleEl=document.getElementById('Docuserve-Demo-Title');let tmpMetaEl=document.getElementById('Docuserve-Demo-Meta');let tmpDescEl=document.getElementById('Docuserve-Demo-Description');if(tmpTitleEl){tmpTitleEl.textContent=tmpEntry.Name||tmpEntry.Hash;}if(tmpMetaEl){tmpMetaEl.innerHTML=this._escapeHTML(tmpEntry.Group)+' · '+'<a href="#/doc/'+this._escapeHTML(tmpEntry.Group)+'/'+this._escapeHTML(tmpEntry.Module)+'">'+this._escapeHTML(tmpEntry.Module)+'</a>';}if(tmpDescEl){tmpDescEl.textContent=tmpEntry.Description||'';}// Populate live container by calling the demo's Mount.
13554
13754
  let tmpLiveEl=document.getElementById('Docuserve-Demo-Live');let tmpSourcesEl=document.getElementById('Docuserve-Demo-Sources');if(tmpLiveEl){let tmpHasSources=Array.isArray(tmpEntry.Sources)&&tmpEntry.Sources.length>0;if(tmpSourcesEl){tmpSourcesEl.style.display=tmpHasSources?'':'none';tmpLiveEl.classList.toggle('full-width',!tmpHasSources);}try{tmpEntry.Mount(this.pict,tmpLiveEl,tmpEntry.Spec||{});}catch(pError){this.log.warn('Docuserve-Demo: Mount() threw for '+pHash+': '+(pError&&pError.message?pError.message:pError));tmpLiveEl.innerHTML='<div class="docuserve-demo-empty">Demo failed to mount: '+this._escapeHTML(pError&&pError.message?pError.message:String(pError))+'</div>';}}// Populate sources tabs.
13555
- if(Array.isArray(tmpEntry.Sources)&&tmpEntry.Sources.length>0){this._renderSources(tmpEntry.Sources);}}_renderSources(pSources){let tmpTabsEl=document.getElementById('Docuserve-Demo-Sources-Tabs');let tmpBodyEl=document.getElementById('Docuserve-Demo-Sources-Body');if(!tmpTabsEl||!tmpBodyEl){return;}let tmpTabsHTML='';let tmpBodyHTML='';for(let i=0;i<pSources.length;i++){let tmpSrc=pSources[i];let tmpActiveCls=i===0?' active':'';let tmpLabel=this._escapeHTML(tmpSrc.Name||'source-'+(i+1));tmpTabsHTML+='<button type="button" class="docuserve-demo-sources-tab'+tmpActiveCls+'" '+'data-source-idx="'+i+'" '+'onclick="_Pict.views[\'Docuserve-Demo\']._switchSourceTab('+i+')">'+tmpLabel+'</button>';tmpBodyHTML+='<div class="docuserve-demo-source-pane'+tmpActiveCls+'" data-source-idx="'+i+'">'+'<pre><code>'+this._escapeHTML(tmpSrc.Content||'')+'</code></pre>'+'</div>';}tmpTabsEl.innerHTML=tmpTabsHTML;tmpBodyEl.innerHTML=tmpBodyHTML;}_switchSourceTab(pIdx){let tmpTabs=document.querySelectorAll('.docuserve-demo-sources-tab');let tmpPanes=document.querySelectorAll('.docuserve-demo-source-pane');for(let i=0;i<tmpTabs.length;i++){let tmpIdx=parseInt(tmpTabs[i].getAttribute('data-source-idx'),10);tmpTabs[i].classList.toggle('active',tmpIdx===pIdx);}for(let i=0;i<tmpPanes.length;i++){let tmpIdx=parseInt(tmpPanes[i].getAttribute('data-source-idx'),10);tmpPanes[i].classList.toggle('active',tmpIdx===pIdx);}}_escapeHTML(pText){if(pText==null){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=DocuserveDemoView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}],355:[function(require,module,exports){const libPictView=require('pict-view');const libPictSectionCode=require('pict-section-code');const libFableServiceProviderBase=require('fable-serviceproviderbase');const libPict=require('pict');const libPictSectionHistogram=require('pict-section-histogram');// Note: we deliberately do NOT `require('fable')` here. Fable is already
13755
+ if(Array.isArray(tmpEntry.Sources)&&tmpEntry.Sources.length>0){this._renderSources(tmpEntry.Sources);}}_renderSources(pSources){let tmpTabsEl=document.getElementById('Docuserve-Demo-Sources-Tabs');let tmpBodyEl=document.getElementById('Docuserve-Demo-Sources-Body');if(!tmpTabsEl||!tmpBodyEl){return;}let tmpTabsHTML='';let tmpBodyHTML='';for(let i=0;i<pSources.length;i++){let tmpSrc=pSources[i];let tmpActiveCls=i===0?' active':'';let tmpLabel=this._escapeHTML(tmpSrc.Name||'source-'+(i+1));tmpTabsHTML+='<button type="button" class="docuserve-demo-sources-tab'+tmpActiveCls+'" '+'data-source-idx="'+i+'" '+'onclick="_Pict.views[\'Docuserve-Demo\']._switchSourceTab('+i+')">'+tmpLabel+'</button>';tmpBodyHTML+='<div class="docuserve-demo-source-pane'+tmpActiveCls+'" data-source-idx="'+i+'">'+'<pre><code>'+this._escapeHTML(tmpSrc.Content||'')+'</code></pre>'+'</div>';}tmpTabsEl.innerHTML=tmpTabsHTML;tmpBodyEl.innerHTML=tmpBodyHTML;}_switchSourceTab(pIdx){let tmpTabs=document.querySelectorAll('.docuserve-demo-sources-tab');let tmpPanes=document.querySelectorAll('.docuserve-demo-source-pane');for(let i=0;i<tmpTabs.length;i++){let tmpIdx=parseInt(tmpTabs[i].getAttribute('data-source-idx'),10);tmpTabs[i].classList.toggle('active',tmpIdx===pIdx);}for(let i=0;i<tmpPanes.length;i++){let tmpIdx=parseInt(tmpPanes[i].getAttribute('data-source-idx'),10);tmpPanes[i].classList.toggle('active',tmpIdx===pIdx);}}_escapeHTML(pText){if(pText==null){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=DocuserveDemoView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":234}],358:[function(require,module,exports){const libPictView=require('pict-view');const libPictSectionCode=require('pict-section-code');const libFableServiceProviderBase=require('fable-serviceproviderbase');const libPict=require('pict');const libPictSectionHistogram=require('pict-section-histogram');// Note: we deliberately do NOT `require('fable')` here. Fable is already
13556
13756
  // bundled into the host page's pict.min.js (via pict's own dep tree);
13557
13757
  // each playground Run reads the Fable class off the live pict instance:
13558
13758
  // `new this.fable.constructor({ ... })`
@@ -13837,7 +14037,7 @@ _loadSavedCode(){try{return window.localStorage.getItem(_LocalStorageKey);}catch
13837
14037
  // Misc helpers
13838
14038
  // ─────────────────────────────────────────────
13839
14039
  _getCurrentCode(){let tmpEditor=this.pict.views[_CodeEditorViewId];if(tmpEditor&&typeof tmpEditor.getCode==='function'){let tmpCode=tmpEditor.getCode();if(typeof tmpCode==='string'){return tmpCode;}}// Fallback to whatever's last-known in AppData.
13840
- return this.pict.AppData.Docuserve.Playground.Code||'';}_setStatus(pText){let tmpEl=document.getElementById('Docuserve-Fable-Playground-Status');if(!tmpEl){return;}tmpEl.textContent=pText;if(this._statusClearTimer){clearTimeout(this._statusClearTimer);}this._statusClearTimer=setTimeout(()=>{if(tmpEl.textContent===pText){tmpEl.textContent='';}},1200);}_formatTime(pMs){let tmpMs=Math.max(0,Math.floor(pMs||0));let tmpPadded=String(tmpMs);while(tmpPadded.length<4){tmpPadded=' '+tmpPadded;}return tmpPadded+'ms';}_formatDatum(pDatum){if(typeof pDatum==='string'){return pDatum;}try{return JSON.stringify(pDatum);}catch(pError){return'(unserializable: '+this._errorMessage(pError)+')';}}_errorMessage(pError){if(!pError){return'';}if(pError.message){return pError.message;}return String(pError);}_escapeHTML(pText){if(pText==null){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=DocuserveFablePlaygroundView;module.exports.default_configuration=_ViewConfiguration;},{"fable-serviceproviderbase":59,"pict":241,"pict-section-code":151,"pict-section-histogram":157,"pict-view":231}],356:[function(require,module,exports){const libPictView=require('pict-view');/**
14040
+ return this.pict.AppData.Docuserve.Playground.Code||'';}_setStatus(pText){let tmpEl=document.getElementById('Docuserve-Fable-Playground-Status');if(!tmpEl){return;}tmpEl.textContent=pText;if(this._statusClearTimer){clearTimeout(this._statusClearTimer);}this._statusClearTimer=setTimeout(()=>{if(tmpEl.textContent===pText){tmpEl.textContent='';}},1200);}_formatTime(pMs){let tmpMs=Math.max(0,Math.floor(pMs||0));let tmpPadded=String(tmpMs);while(tmpPadded.length<4){tmpPadded=' '+tmpPadded;}return tmpPadded+'ms';}_formatDatum(pDatum){if(typeof pDatum==='string'){return pDatum;}try{return JSON.stringify(pDatum);}catch(pError){return'(unserializable: '+this._errorMessage(pError)+')';}}_errorMessage(pError){if(!pError){return'';}if(pError.message){return pError.message;}return String(pError);}_escapeHTML(pText){if(pText==null){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=DocuserveFablePlaygroundView;module.exports.default_configuration=_ViewConfiguration;},{"fable-serviceproviderbase":59,"pict":244,"pict-section-code":152,"pict-section-histogram":159,"pict-view":234}],359:[function(require,module,exports){const libPictView=require('pict-view');/**
13841
14041
  * Docuserve-Layout — application chrome built on pict-section-modal's
13842
14042
  * shell() API.
13843
14043
  *
@@ -13933,7 +14133,7 @@ let tmpPanel=this.getPlaygroundPanel();if(tmpPanel&&typeof tmpPanel.collapse==='
13933
14133
  * navigation.
13934
14134
  *
13935
14135
  * @param {string} pTitle - The label to show on the collapsed tab.
13936
- */setPlaygroundTitle(pTitle){let tmpPanel=this.getPlaygroundPanel();if(!tmpPanel||!tmpPanel.El){return;}let tmpClean=typeof pTitle==='string'&&pTitle.length>0?pTitle:'JS Playground';tmpPanel.Title=tmpClean;if(tmpPanel._collapseTab){tmpPanel._collapseTab.setAttribute('aria-label','Toggle '+tmpClean);tmpPanel._collapseTab.title=tmpClean;let tmpTitleEl=tmpPanel._collapseTab.querySelector('.pict-modal-shell-panel-collapse-tab-title');if(tmpTitleEl){tmpTitleEl.textContent=tmpClean;}}}collapsePlayground(){let tmpPanel=this.getPlaygroundPanel();if(tmpPanel&&typeof tmpPanel.collapse==='function'){tmpPanel.collapse();}}togglePlayground(){let tmpPanel=this.getPlaygroundPanel();if(tmpPanel&&typeof tmpPanel.toggle==='function'){tmpPanel.toggle();}}}module.exports=DocuserveLayoutView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}],357:[function(require,module,exports){const libPictView=require('pict-view');const _ViewConfiguration={ViewIdentifier:"Docuserve-Search",DefaultRenderable:"Docuserve-Search-Display",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:false,CSS:/*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: var(--theme-color-text-primary, #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 var(--theme-color-border-default, #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: var(--theme-color-brand-primary, #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: var(--theme-color-text-muted, #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 var(--theme-color-border-light, #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: var(--theme-color-brand-primary, #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: var(--theme-color-brand-primary, #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: var(--theme-color-text-muted, #8A7F72);\n\t\t\tmargin-bottom: 0.2em;\n\t\t}\n\t\t.docuserve-search-result-breadcrumb-sep {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: middle;\n\t\t\tfont-size: 0.85em;\n\t\t\tmargin: 0 0.15em;\n\t\t\topacity: 0.7;\n\t\t}\n\t\t.docuserve-search-result-path {\n\t\t\tfont-size: 0.8em;\n\t\t\tcolor: var(--theme-color-text-muted, #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: var(--theme-color-text-muted, #8A7F72);\n\t\t\tfont-size: 1em;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Search-Template",Template:/*html*/"<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...\" oninput=\"{~P~}.views['Docuserve-Search'].onSearchInput(this.value)\">\n\t\t<div id=\"Docuserve-Search-Status\" class=\"docuserve-search-status\">{~D:AppData.Docuserve.SearchStatus~}</div>\n\t</div>\n\t<div id=\"Docuserve-Search-Results\" class=\"docuserve-search-results\">\n\t\t{~TS:Docuserve-Search-Result-Template:AppData.Docuserve.SearchResults~}\n\t</div>\n</div>"},{Hash:"Docuserve-Search-ResultsBody-Template",Template:/*html*/"{~TS:Docuserve-Search-Result-Template:AppData.Docuserve.SearchResults~}"},{Hash:"Docuserve-Search-Result-Template",Template:/*html*/"<a class=\"docuserve-search-result\" href=\"{~D:Record.Route~}\">\n\t<div class=\"docuserve-search-result-title\">{~D:Record.Title~}</div>\n\t{~TS:Docuserve-Search-Result-Breadcrumb-Template:Record.BreadcrumbSlot~}\n\t{~TS:Docuserve-Search-Result-Path-Template:Record.PathSlot~}\n</a>"},{Hash:"Docuserve-Search-Result-Breadcrumb-Template",Template:/*html*/"<div class=\"docuserve-search-result-breadcrumb\">{~D:Record.Group~} <span class=\"docuserve-search-result-breadcrumb-sep\">{~I:ChevronRight~}</span> {~D:Record.Module~}</div>"},{Hash:"Docuserve-Search-Result-Path-Template",Template:/*html*/"<div class=\"docuserve-search-result-path\">{~D:Record.DocPath~}</div>"}],Renderables:[{RenderableHash:"Docuserve-Search-Display",TemplateHash:"Docuserve-Search-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]};class DocuserveSearchView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this._SearchDebounceTimer=null;}/**
14136
+ */setPlaygroundTitle(pTitle){let tmpPanel=this.getPlaygroundPanel();if(!tmpPanel||!tmpPanel.El){return;}let tmpClean=typeof pTitle==='string'&&pTitle.length>0?pTitle:'JS Playground';tmpPanel.Title=tmpClean;if(tmpPanel._collapseTab){tmpPanel._collapseTab.setAttribute('aria-label','Toggle '+tmpClean);tmpPanel._collapseTab.title=tmpClean;let tmpTitleEl=tmpPanel._collapseTab.querySelector('.pict-modal-shell-panel-collapse-tab-title');if(tmpTitleEl){tmpTitleEl.textContent=tmpClean;}}}collapsePlayground(){let tmpPanel=this.getPlaygroundPanel();if(tmpPanel&&typeof tmpPanel.collapse==='function'){tmpPanel.collapse();}}togglePlayground(){let tmpPanel=this.getPlaygroundPanel();if(tmpPanel&&typeof tmpPanel.toggle==='function'){tmpPanel.toggle();}}}module.exports=DocuserveLayoutView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":234}],360:[function(require,module,exports){const libPictView=require('pict-view');const _ViewConfiguration={ViewIdentifier:"Docuserve-Search",DefaultRenderable:"Docuserve-Search-Display",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:false,CSS:/*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: var(--theme-color-text-primary, #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 var(--theme-color-border-default, #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: var(--theme-color-brand-primary, #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: var(--theme-color-text-muted, #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 var(--theme-color-border-light, #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: var(--theme-color-brand-primary, #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: var(--theme-color-brand-primary, #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: var(--theme-color-text-muted, #8A7F72);\n\t\t\tmargin-bottom: 0.2em;\n\t\t}\n\t\t.docuserve-search-result-breadcrumb-sep {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: middle;\n\t\t\tfont-size: 0.85em;\n\t\t\tmargin: 0 0.15em;\n\t\t\topacity: 0.7;\n\t\t}\n\t\t.docuserve-search-result-path {\n\t\t\tfont-size: 0.8em;\n\t\t\tcolor: var(--theme-color-text-muted, #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: var(--theme-color-text-muted, #8A7F72);\n\t\t\tfont-size: 1em;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Search-Template",Template:/*html*/"<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...\" oninput=\"{~P~}.views['Docuserve-Search'].onSearchInput(this.value)\">\n\t\t<div id=\"Docuserve-Search-Status\" class=\"docuserve-search-status\">{~D:AppData.Docuserve.SearchStatus~}</div>\n\t</div>\n\t<div id=\"Docuserve-Search-Results\" class=\"docuserve-search-results\">\n\t\t{~TS:Docuserve-Search-Result-Template:AppData.Docuserve.SearchResults~}\n\t</div>\n</div>"},{Hash:"Docuserve-Search-ResultsBody-Template",Template:/*html*/"{~TS:Docuserve-Search-Result-Template:AppData.Docuserve.SearchResults~}"},{Hash:"Docuserve-Search-Result-Template",Template:/*html*/"<a class=\"docuserve-search-result\" href=\"{~D:Record.Route~}\">\n\t<div class=\"docuserve-search-result-title\">{~D:Record.Title~}</div>\n\t{~TS:Docuserve-Search-Result-Breadcrumb-Template:Record.BreadcrumbSlot~}\n\t{~TS:Docuserve-Search-Result-Path-Template:Record.PathSlot~}\n</a>"},{Hash:"Docuserve-Search-Result-Breadcrumb-Template",Template:/*html*/"<div class=\"docuserve-search-result-breadcrumb\">{~D:Record.Group~} <span class=\"docuserve-search-result-breadcrumb-sep\">{~I:ChevronRight~}</span> {~D:Record.Module~}</div>"},{Hash:"Docuserve-Search-Result-Path-Template",Template:/*html*/"<div class=\"docuserve-search-result-path\">{~D:Record.DocPath~}</div>"}],Renderables:[{RenderableHash:"Docuserve-Search-Display",TemplateHash:"Docuserve-Search-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]};class DocuserveSearchView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this._SearchDebounceTimer=null;}/**
13937
14137
  * Show the search page with an optional initial query.
13938
14138
  *
13939
14139
  * Re-renders the view (so the input value gets stamped from AppData),
@@ -13956,7 +14156,7 @@ let tmpContentContainer=document.getElementById('Docuserve-Content-Container');i
13956
14156
  */performSearch(pQuery){let tmpDocuserve=this.pict.AppData.Docuserve;if(!pQuery||!pQuery.trim()){this._setIdleStatus(pQuery);tmpDocuserve.SearchResults=[];this._renderResultsRegion();this._renderStatusRegion();return;}let tmpDocProvider=this.pict.providers['Docuserve-Documentation'];let tmpResults=tmpDocProvider.search(pQuery);if(tmpResults.length===0){tmpDocuserve.SearchResults=[];tmpDocuserve.SearchStatus='No results found for \''+this._escapeHTML(pQuery)+'\'.';this._renderResultsRegion();this._renderStatusRegion();return;}let tmpRecords=[];for(let i=0;i<tmpResults.length;i++){let tmpResult=tmpResults[i];tmpRecords.push({Title:tmpResult.Title,Route:tmpResult.Route,Group:tmpResult.Group||'',Module:tmpResult.Module||'',BreadcrumbSlot:tmpResult.Group&&tmpResult.Module?[{Group:tmpResult.Group,Module:tmpResult.Module}]:[],PathSlot:tmpResult.DocPath?[{DocPath:tmpResult.DocPath}]:[],DocPath:tmpResult.DocPath||''});}tmpDocuserve.SearchResults=tmpRecords;tmpDocuserve.SearchStatus=tmpResults.length+' result'+(tmpResults.length!==1?'s':'')+' for \''+this._escapeHTML(pQuery)+'\'';this._renderResultsRegion();this._renderStatusRegion();}// ─────────────────────────────────────────────
13957
14157
  // Private helpers
13958
14158
  // ─────────────────────────────────────────────
13959
- _setIdleStatus(pQuery){let tmpDocCount=this.pict.AppData.Docuserve.KeywordDocumentCount||0;this.pict.AppData.Docuserve.SearchStatus=tmpDocCount>0?'Search across '+tmpDocCount+' documents.':'Enter a search term to find documentation.';}_renderResultsRegion(){let tmpHTML=this.pict.parseTemplateByHash('Docuserve-Search-ResultsBody-Template',{});this.pict.ContentAssignment.assignContent('#Docuserve-Search-Results',tmpHTML);}_renderStatusRegion(){this.pict.ContentAssignment.assignContent('#Docuserve-Search-Status',this.pict.AppData.Docuserve.SearchStatus||'');}_escapeHTML(pText){if(!pText){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=DocuserveSearchView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}],358:[function(require,module,exports){const libPictView=require('pict-view');const libPictSectionCode=require('pict-section-code');// CodeJar (used by pict-section-code) ships as an ES module. Browserify
14159
+ _setIdleStatus(pQuery){let tmpDocCount=this.pict.AppData.Docuserve.KeywordDocumentCount||0;this.pict.AppData.Docuserve.SearchStatus=tmpDocCount>0?'Search across '+tmpDocCount+' documents.':'Enter a search term to find documentation.';}_renderResultsRegion(){let tmpHTML=this.pict.parseTemplateByHash('Docuserve-Search-ResultsBody-Template',{});this.pict.ContentAssignment.assignContent('#Docuserve-Search-Results',tmpHTML);}_renderStatusRegion(){this.pict.ContentAssignment.assignContent('#Docuserve-Search-Status',this.pict.AppData.Docuserve.SearchStatus||'');}_escapeHTML(pText){if(!pText){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=DocuserveSearchView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":234}],361:[function(require,module,exports){const libPictView=require('pict-view');const libPictSectionCode=require('pict-section-code');// CodeJar (used by pict-section-code) ships as an ES module. Browserify
13960
14160
  // can't `require()` it, so we lazy-load from jsDelivr via dynamic import
13961
14161
  // the same way Pict-Docuserve's Fable playground does, then hand the
13962
14162
  // constructor to each editor via connectCodeJarPrototype().
@@ -14223,7 +14423,7 @@ this._loadCodeJar().then(function(pCodeJar){for(let n=0;n<tmpSelf._editors.lengt
14223
14423
  *
14224
14424
  * @throws Error on a parse failure — caller surfaces to the UI.
14225
14425
  */_readAndValidateEditors(){let tmpOut={manifest:undefined,pictConfig:undefined,appConfig:undefined,appData:undefined};for(let i=0;i<this._editors.length;i++){let tmpEd=this._editors[i];let tmpAddress=this._editorCodeAddress(tmpEd.Hash);let tmpRaw=this.pict.manifest.getValueByHash(this.pict.AppData,tmpAddress);if(typeof tmpRaw!=='string'){tmpRaw=tmpEd.Code||'';}let tmpValue;if((tmpEd.Language||'json').toLowerCase()==='json'){if(tmpRaw.trim()===''){tmpValue={};}else{try{tmpValue=JSON.parse(tmpRaw);}catch(pError){throw new Error('JSON parse error in "'+tmpEd.Label+'": '+pError.message);}}}else{tmpValue=tmpRaw;}// Map editor hash to a known config slot, or carry through unchanged.
14226
- if(tmpOut.hasOwnProperty(tmpEd.Hash)){tmpOut[tmpEd.Hash]=tmpValue;}else{tmpOut[tmpEd.Hash]=tmpValue;}}return tmpOut;}_setStatus(pMessage,pIsError,pAutoHideMs){let tmpEl=document.getElementById('Docuserve-Section-Playground-Status');if(!tmpEl)return;tmpEl.textContent=pMessage;tmpEl.classList.add('show');if(pIsError){tmpEl.classList.add('error');}else{tmpEl.classList.remove('error');}if(this._statusTimer){clearTimeout(this._statusTimer);}let tmpDelay=typeof pAutoHideMs==='number'?pAutoHideMs:2500;this._statusTimer=setTimeout(function(){tmpEl.classList.remove('show');tmpEl.classList.remove('error');},tmpDelay);}_renderError(pMessage){let tmpHTML='<div class="docuserve-section-playground-emptystate">'+'<div class="docuserve-section-playground-emptystate-title">Playground unavailable</div>'+'<div>'+this._escape(pMessage)+'</div>'+'</div>';this.pict.ContentAssignment.assignContent('#Docuserve-Content-Container',tmpHTML);}_escape(pText){return String(pText||'').replace(/[&<>"']/g,function(pChar){return{'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[pChar];});}onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent){this.pict.CSSMap.injectCSS();return super.onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent);}}module.exports=DocuserveSectionPlaygroundView;module.exports.default_configuration=_ViewConfiguration;},{"pict-section-code":151,"pict-view":231}],359:[function(require,module,exports){const libPictView=require('pict-view');const _ViewConfiguration={ViewIdentifier:"Docuserve-Sidebar",DefaultRenderable:"Docuserve-Sidebar-Content",DefaultDestinationAddress:"#Docuserve-Sidebar-Container",AutoRender:false,CSS:/*css*/"\n\t\t.docuserve-sidebar {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tbackground: var(--theme-color-background-secondary, #FAF7F1);\n\t\t\tborder-right: 1px solid var(--theme-color-border-default, #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\ttransition: background-color 0.15s ease;\n\t\t}\n\t\t.docuserve-sidebar-header {\n\t\t\tdisplay: none;\n\t\t\tjustify-content: flex-end;\n\t\t\tpadding: 0.4em 0.5em 0;\n\t\t}\n\t\t/* The \"X\" close button is only useful when the sidebar is acting\n\t\t as a responsive drawer (narrow viewports where the panel slid\n\t\t in over the content area). In docked desktop mode the\n\t\t pict-section-modal collapse tab on the panel's outer edge is\n\t\t the canonical collapse affordance \u2014 a second X inside the\n\t\t panel competes with it and looks messy. Show the X only in\n\t\t drawer mode. */\n\t\t.pict-modal-shell-panel-drawer .docuserve-sidebar-header {\n\t\t\tdisplay: flex;\n\t\t}\n\t\t.docuserve-sidebar-close {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\n\t\t\tfont-size: 1.1em;\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(--theme-color-brand-primary, #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 var(--theme-color-border-light, #E5DED1);\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(--theme-color-background-panel, #FFFFFF);\n\t\t\tcolor: var(--theme-color-text-primary, #2A241E);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\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(--theme-color-brand-primary, #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: var(--theme-color-text-primary, #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: var(--theme-color-background-hover, #EAE3D8);\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-sidebar-search-result-title {\n\t\t\tfont-weight: 600;\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t}\n\t\t.docuserve-sidebar-search-results a:hover .docuserve-sidebar-search-result-title {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-sidebar-search-result-meta {\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: var(--theme-color-text-muted, #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: var(--theme-color-brand-primary, #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 var(--theme-color-border-light, #E5DED1);\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-search-empty {\n\t\t\tpadding: 0.4em 0.5em;\n\t\t\tfont-size: 0.82em;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\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(--theme-color-text-secondary, #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: var(--theme-color-brand-primary, #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: var(--theme-color-text-primary, #3D3229);\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(--theme-color-brand-primary, #2E7D74);\n\t\t\tbackground-color: var(--theme-color-background-hover, #EAE3D8);\n\t\t}\n\t\ta.docuserve-sidebar-group-title.active {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tbackground-color: var(--theme-color-background-tertiary, #E5DED1);\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(--theme-color-text-secondary, #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: var(--theme-color-background-hover, #EAE3D8);\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-sidebar-modules a.active {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tfont-weight: 600;\n\t\t\tbackground-color: var(--theme-color-background-tertiary, #E5DED1);\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(--theme-color-text-muted, #8A7F72);\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(--theme-color-border-light, #E5DED1);\n\t\t\tmargin-top: 0.5em;\n\t\t\tpadding-top: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-module-nav:empty {\n\t\t\tdisplay: none;\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(--theme-color-text-muted, #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: var(--theme-color-text-secondary, #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: var(--theme-color-background-hover, #EAE3D8);\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-sidebar-module-nav a.active {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tfont-weight: 600;\n\t\t\tbackground-color: var(--theme-color-background-tertiary, #E5DED1);\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(--theme-color-border-light, #E5DED1);\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(--theme-color-text-secondary, #5E5549);\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(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-version-meta {\n\t\t\tfont-size: 0.7em;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\n\t\t\tmargin-top: 0.15em;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Sidebar-Template",Template:/*html*/"\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()\" aria-label=\"Close sidebar\">{~I:Close~}</button>\n\t</div>\n\t{~TS:Docuserve-Sidebar-Search-Slot-Template:AppData.Docuserve.SidebarSearchSlot~}\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\">\n\t\t{~TS:Docuserve-Sidebar-Group-Template:AppData.Docuserve.SidebarGroupRecords~}\n\t</div>\n\t<div id=\"Docuserve-Sidebar-ModuleNav\" class=\"docuserve-sidebar-module-nav\">\n\t\t{~TS:Docuserve-Sidebar-ModuleNav-Section-Template:AppData.Docuserve.ModuleNavSections~}\n\t</div>\n\t<div class=\"docuserve-sidebar-footer\">\n\t\t{~TS:Docuserve-Sidebar-Footer-Template:AppData.Docuserve.FooterSlot~}\n\t</div>\n</div>\n"},{Hash:"Docuserve-Sidebar-Search-Slot-Template",Template:/*html*/"<div id=\"Docuserve-Sidebar-Search\" class=\"docuserve-sidebar-search\">\n\t<input type=\"text\" placeholder=\"Search docs...\" id=\"Docuserve-Sidebar-Search-Input\" oninput=\"{~P~}.views['Docuserve-Sidebar'].onSidebarSearchInput(this.value)\">\n\t<div id=\"Docuserve-Sidebar-Search-Results\" class=\"docuserve-sidebar-search-results\"></div>\n</div>"},{Hash:"Docuserve-Sidebar-Group-Template",Template:/*html*/"<div class=\"docuserve-sidebar-group\">\n\t{~TS:Docuserve-Sidebar-Group-Title-Link-Template:Record.TitleLink~}{~TS:Docuserve-Sidebar-Group-Title-Plain-Template:Record.TitlePlain~}\n\t<ul class=\"docuserve-sidebar-modules\">\n\t\t{~TS:Docuserve-Sidebar-Module-Doc-Template:Record.Modules~}\n\t</ul>\n</div>"},{Hash:"Docuserve-Sidebar-Group-Title-Link-Template",Template:/*html*/"<a class=\"docuserve-sidebar-group-title{~D:Record.ActiveClass~}\" href=\"{~D:Record.Route~}\">{~D:Record.Name~}</a>"},{Hash:"Docuserve-Sidebar-Group-Title-Plain-Template",Template:/*html*/"<div class=\"docuserve-sidebar-group-title\">{~D:Record.Name~}</div>"},{Hash:"Docuserve-Sidebar-Module-Doc-Template",Template:/*html*/"<li>{~TS:Docuserve-Sidebar-Module-Link-Template:Record.LinkSlot~}{~TS:Docuserve-Sidebar-Module-NoDoc-Template:Record.NoDocSlot~}</li>"},{Hash:"Docuserve-Sidebar-Module-Link-Template",Template:/*html*/"<a class=\"{~D:Record.ActiveClass~}\" href=\"{~D:Record.Route~}\">{~D:Record.Name~}</a>"},{Hash:"Docuserve-Sidebar-Module-NoDoc-Template",Template:/*html*/"<span class=\"no-docs\">{~D:Record.Name~}</span>"},{Hash:"Docuserve-Sidebar-ModuleNav-Section-Template",Template:/*html*/"{~TS:Docuserve-Sidebar-ModuleNav-SectionTitle-Template:Record.TitleSlot~}{~TS:Docuserve-Sidebar-ModuleNav-Item-Template:Record.Items~}"},{Hash:"Docuserve-Sidebar-ModuleNav-SectionTitle-Template",Template:/*html*/"<div class=\"docuserve-sidebar-module-nav-section\">{~D:Record.Title~}</div>"},{Hash:"Docuserve-Sidebar-ModuleNav-Item-Template",Template:/*html*/"<a class=\"{~D:Record.ActiveClass~}\" href=\"{~D:Record.Route~}\">{~D:Record.Title~}</a>"},{Hash:"Docuserve-Sidebar-Footer-Template",Template:/*html*/"<div class=\"docuserve-version-placard\">\n\t{~TS:Docuserve-Sidebar-Footer-Name-Template:Record.NameSlot~}\n\t<div class=\"docuserve-version-number\">v{~D:Record.Version~}</div>\n\t{~TS:Docuserve-Sidebar-Footer-Meta-Template:Record.MetaSlot~}\n</div>"},{Hash:"Docuserve-Sidebar-Footer-Name-Template",Template:/*html*/"<div class=\"docuserve-version-name\">{~D:Record.Name~}</div>"},{Hash:"Docuserve-Sidebar-Footer-Meta-Template",Template:/*html*/"<div class=\"docuserve-version-meta\">{~D:Record.Meta~}</div>"},{Hash:"Docuserve-Sidebar-Search-ResultsBody-Template",Template:/*html*/"{~TS:Docuserve-Sidebar-Search-Result-Template:AppData.Docuserve.SidebarSearchResults~}{~TS:Docuserve-Sidebar-Search-Overflow-Template:AppData.Docuserve.SidebarSearchOverflow~}{~TS:Docuserve-Sidebar-Search-Empty-Template:AppData.Docuserve.SidebarSearchEmpty~}"},{Hash:"Docuserve-Sidebar-Search-Result-Template",Template:/*html*/"<a href=\"{~D:Record.Route~}\">\n\t<div class=\"docuserve-sidebar-search-result-title\">{~D:Record.Title~}</div>\n\t{~TS:Docuserve-Sidebar-Search-Result-Meta-Template:Record.MetaSlot~}\n</a>"},{Hash:"Docuserve-Sidebar-Search-Result-Meta-Template",Template:/*html*/"<div class=\"docuserve-sidebar-search-result-meta\">{~D:Record.Meta~}</div>"},{Hash:"Docuserve-Sidebar-Search-Overflow-Template",Template:/*html*/"<a class=\"docuserve-sidebar-search-all\" href=\"#/search/{~D:Record.EncodedQuery~}\">See all {~D:Record.TotalCount~} results</a>"},{Hash:"Docuserve-Sidebar-Search-Empty-Template",Template:/*html*/"<div class=\"docuserve-sidebar-search-empty\">No results found.</div>"}],Renderables:[{RenderableHash:"Docuserve-Sidebar-Content",TemplateHash:"Docuserve-Sidebar-Template",DestinationAddress:"#Docuserve-Sidebar-Container",RenderMethod:"replace"}]};class DocusserveSidebarView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this._SidebarSearchDebounceTimer=null;}onBeforeRender(pRenderable){// Derive every template-iteration record from raw AppData state.
14426
+ if(tmpOut.hasOwnProperty(tmpEd.Hash)){tmpOut[tmpEd.Hash]=tmpValue;}else{tmpOut[tmpEd.Hash]=tmpValue;}}return tmpOut;}_setStatus(pMessage,pIsError,pAutoHideMs){let tmpEl=document.getElementById('Docuserve-Section-Playground-Status');if(!tmpEl)return;tmpEl.textContent=pMessage;tmpEl.classList.add('show');if(pIsError){tmpEl.classList.add('error');}else{tmpEl.classList.remove('error');}if(this._statusTimer){clearTimeout(this._statusTimer);}let tmpDelay=typeof pAutoHideMs==='number'?pAutoHideMs:2500;this._statusTimer=setTimeout(function(){tmpEl.classList.remove('show');tmpEl.classList.remove('error');},tmpDelay);}_renderError(pMessage){let tmpHTML='<div class="docuserve-section-playground-emptystate">'+'<div class="docuserve-section-playground-emptystate-title">Playground unavailable</div>'+'<div>'+this._escape(pMessage)+'</div>'+'</div>';this.pict.ContentAssignment.assignContent('#Docuserve-Content-Container',tmpHTML);}_escape(pText){return String(pText||'').replace(/[&<>"']/g,function(pChar){return{'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[pChar];});}onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent){this.pict.CSSMap.injectCSS();return super.onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent);}}module.exports=DocuserveSectionPlaygroundView;module.exports.default_configuration=_ViewConfiguration;},{"pict-section-code":152,"pict-view":234}],362:[function(require,module,exports){const libPictView=require('pict-view');const _ViewConfiguration={ViewIdentifier:"Docuserve-Sidebar",DefaultRenderable:"Docuserve-Sidebar-Content",DefaultDestinationAddress:"#Docuserve-Sidebar-Container",AutoRender:false,CSS:/*css*/"\n\t\t.docuserve-sidebar {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tbackground: var(--theme-color-background-secondary, #FAF7F1);\n\t\t\tborder-right: 1px solid var(--theme-color-border-default, #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\ttransition: background-color 0.15s ease;\n\t\t}\n\t\t.docuserve-sidebar-header {\n\t\t\tdisplay: none;\n\t\t\tjustify-content: flex-end;\n\t\t\tpadding: 0.4em 0.5em 0;\n\t\t}\n\t\t/* The \"X\" close button is only useful when the sidebar is acting\n\t\t as a responsive drawer (narrow viewports where the panel slid\n\t\t in over the content area). In docked desktop mode the\n\t\t pict-section-modal collapse tab on the panel's outer edge is\n\t\t the canonical collapse affordance \u2014 a second X inside the\n\t\t panel competes with it and looks messy. Show the X only in\n\t\t drawer mode. */\n\t\t.pict-modal-shell-panel-drawer .docuserve-sidebar-header {\n\t\t\tdisplay: flex;\n\t\t}\n\t\t.docuserve-sidebar-close {\n\t\t\tdisplay: inline-flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\n\t\t\tfont-size: 1.1em;\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(--theme-color-brand-primary, #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 var(--theme-color-border-light, #E5DED1);\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(--theme-color-background-panel, #FFFFFF);\n\t\t\tcolor: var(--theme-color-text-primary, #2A241E);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\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(--theme-color-brand-primary, #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: var(--theme-color-text-primary, #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: var(--theme-color-background-hover, #EAE3D8);\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-sidebar-search-result-title {\n\t\t\tfont-weight: 600;\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t}\n\t\t.docuserve-sidebar-search-results a:hover .docuserve-sidebar-search-result-title {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-sidebar-search-result-meta {\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: var(--theme-color-text-muted, #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: var(--theme-color-brand-primary, #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 var(--theme-color-border-light, #E5DED1);\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-search-empty {\n\t\t\tpadding: 0.4em 0.5em;\n\t\t\tfont-size: 0.82em;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\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(--theme-color-text-secondary, #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: var(--theme-color-brand-primary, #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: var(--theme-color-text-primary, #3D3229);\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(--theme-color-brand-primary, #2E7D74);\n\t\t\tbackground-color: var(--theme-color-background-hover, #EAE3D8);\n\t\t}\n\t\ta.docuserve-sidebar-group-title.active {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tbackground-color: var(--theme-color-background-tertiary, #E5DED1);\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(--theme-color-text-secondary, #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: var(--theme-color-background-hover, #EAE3D8);\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-sidebar-modules a.active {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tfont-weight: 600;\n\t\t\tbackground-color: var(--theme-color-background-tertiary, #E5DED1);\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(--theme-color-text-muted, #8A7F72);\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(--theme-color-border-light, #E5DED1);\n\t\t\tmargin-top: 0.5em;\n\t\t\tpadding-top: 0.5em;\n\t\t}\n\t\t.docuserve-sidebar-module-nav:empty {\n\t\t\tdisplay: none;\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(--theme-color-text-muted, #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: var(--theme-color-text-secondary, #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: var(--theme-color-background-hover, #EAE3D8);\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-sidebar-module-nav a.active {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tfont-weight: 600;\n\t\t\tbackground-color: var(--theme-color-background-tertiary, #E5DED1);\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(--theme-color-border-light, #E5DED1);\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(--theme-color-text-secondary, #5E5549);\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(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-version-meta {\n\t\t\tfont-size: 0.7em;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\n\t\t\tmargin-top: 0.15em;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Sidebar-Template",Template:/*html*/"\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()\" aria-label=\"Close sidebar\">{~I:Close~}</button>\n\t</div>\n\t{~TS:Docuserve-Sidebar-Search-Slot-Template:AppData.Docuserve.SidebarSearchSlot~}\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\">\n\t\t{~TS:Docuserve-Sidebar-Group-Template:AppData.Docuserve.SidebarGroupRecords~}\n\t</div>\n\t<div id=\"Docuserve-Sidebar-ModuleNav\" class=\"docuserve-sidebar-module-nav\">\n\t\t{~TS:Docuserve-Sidebar-ModuleNav-Section-Template:AppData.Docuserve.ModuleNavSections~}\n\t</div>\n\t<div class=\"docuserve-sidebar-footer\">\n\t\t{~TS:Docuserve-Sidebar-Footer-Template:AppData.Docuserve.FooterSlot~}\n\t</div>\n</div>\n"},{Hash:"Docuserve-Sidebar-Search-Slot-Template",Template:/*html*/"<div id=\"Docuserve-Sidebar-Search\" class=\"docuserve-sidebar-search\">\n\t<input type=\"text\" placeholder=\"Search docs...\" id=\"Docuserve-Sidebar-Search-Input\" oninput=\"{~P~}.views['Docuserve-Sidebar'].onSidebarSearchInput(this.value)\">\n\t<div id=\"Docuserve-Sidebar-Search-Results\" class=\"docuserve-sidebar-search-results\"></div>\n</div>"},{Hash:"Docuserve-Sidebar-Group-Template",Template:/*html*/"<div class=\"docuserve-sidebar-group\">\n\t{~TS:Docuserve-Sidebar-Group-Title-Link-Template:Record.TitleLink~}{~TS:Docuserve-Sidebar-Group-Title-Plain-Template:Record.TitlePlain~}\n\t<ul class=\"docuserve-sidebar-modules\">\n\t\t{~TS:Docuserve-Sidebar-Module-Doc-Template:Record.Modules~}\n\t</ul>\n</div>"},{Hash:"Docuserve-Sidebar-Group-Title-Link-Template",Template:/*html*/"<a class=\"docuserve-sidebar-group-title{~D:Record.ActiveClass~}\" href=\"{~D:Record.Route~}\">{~D:Record.Name~}</a>"},{Hash:"Docuserve-Sidebar-Group-Title-Plain-Template",Template:/*html*/"<div class=\"docuserve-sidebar-group-title\">{~D:Record.Name~}</div>"},{Hash:"Docuserve-Sidebar-Module-Doc-Template",Template:/*html*/"<li>{~TS:Docuserve-Sidebar-Module-Link-Template:Record.LinkSlot~}{~TS:Docuserve-Sidebar-Module-NoDoc-Template:Record.NoDocSlot~}</li>"},{Hash:"Docuserve-Sidebar-Module-Link-Template",Template:/*html*/"<a class=\"{~D:Record.ActiveClass~}\" href=\"{~D:Record.Route~}\">{~D:Record.Name~}</a>"},{Hash:"Docuserve-Sidebar-Module-NoDoc-Template",Template:/*html*/"<span class=\"no-docs\">{~D:Record.Name~}</span>"},{Hash:"Docuserve-Sidebar-ModuleNav-Section-Template",Template:/*html*/"{~TS:Docuserve-Sidebar-ModuleNav-SectionTitle-Template:Record.TitleSlot~}{~TS:Docuserve-Sidebar-ModuleNav-Item-Template:Record.Items~}"},{Hash:"Docuserve-Sidebar-ModuleNav-SectionTitle-Template",Template:/*html*/"<div class=\"docuserve-sidebar-module-nav-section\">{~D:Record.Title~}</div>"},{Hash:"Docuserve-Sidebar-ModuleNav-Item-Template",Template:/*html*/"<a class=\"{~D:Record.ActiveClass~}\" href=\"{~D:Record.Route~}\">{~D:Record.Title~}</a>"},{Hash:"Docuserve-Sidebar-Footer-Template",Template:/*html*/"<div class=\"docuserve-version-placard\">\n\t{~TS:Docuserve-Sidebar-Footer-Name-Template:Record.NameSlot~}\n\t<div class=\"docuserve-version-number\">v{~D:Record.Version~}</div>\n\t{~TS:Docuserve-Sidebar-Footer-Meta-Template:Record.MetaSlot~}\n</div>"},{Hash:"Docuserve-Sidebar-Footer-Name-Template",Template:/*html*/"<div class=\"docuserve-version-name\">{~D:Record.Name~}</div>"},{Hash:"Docuserve-Sidebar-Footer-Meta-Template",Template:/*html*/"<div class=\"docuserve-version-meta\">{~D:Record.Meta~}</div>"},{Hash:"Docuserve-Sidebar-Search-ResultsBody-Template",Template:/*html*/"{~TS:Docuserve-Sidebar-Search-Result-Template:AppData.Docuserve.SidebarSearchResults~}{~TS:Docuserve-Sidebar-Search-Overflow-Template:AppData.Docuserve.SidebarSearchOverflow~}{~TS:Docuserve-Sidebar-Search-Empty-Template:AppData.Docuserve.SidebarSearchEmpty~}"},{Hash:"Docuserve-Sidebar-Search-Result-Template",Template:/*html*/"<a href=\"{~D:Record.Route~}\">\n\t<div class=\"docuserve-sidebar-search-result-title\">{~D:Record.Title~}</div>\n\t{~TS:Docuserve-Sidebar-Search-Result-Meta-Template:Record.MetaSlot~}\n</a>"},{Hash:"Docuserve-Sidebar-Search-Result-Meta-Template",Template:/*html*/"<div class=\"docuserve-sidebar-search-result-meta\">{~D:Record.Meta~}</div>"},{Hash:"Docuserve-Sidebar-Search-Overflow-Template",Template:/*html*/"<a class=\"docuserve-sidebar-search-all\" href=\"#/search/{~D:Record.EncodedQuery~}\">See all {~D:Record.TotalCount~} results</a>"},{Hash:"Docuserve-Sidebar-Search-Empty-Template",Template:/*html*/"<div class=\"docuserve-sidebar-search-empty\">No results found.</div>"}],Renderables:[{RenderableHash:"Docuserve-Sidebar-Content",TemplateHash:"Docuserve-Sidebar-Template",DestinationAddress:"#Docuserve-Sidebar-Container",RenderMethod:"replace"}]};class DocusserveSidebarView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);this._SidebarSearchDebounceTimer=null;}onBeforeRender(pRenderable){// Derive every template-iteration record from raw AppData state.
14227
14427
  // Each refresh writes a single AppData address that drives one
14228
14428
  // {~TS:~} tag in the template tree. Doing this here keeps the
14229
14429
  // public surface tiny — callers just set the navigation state
@@ -14272,7 +14472,7 @@ let tmpGroupRoute=tmpGroup.Route||'';if(!tmpGroupRoute){for(let k=0;k<tmpGroup.M
14272
14472
  // new section each time the title changes.
14273
14473
  if(tmpSidebar&&tmpSidebar.length>0){let tmpCurrentSection=null;for(let i=0;i<tmpSidebar.length;i++){let tmpEntry=tmpSidebar[i];if(tmpEntry.Children){tmpCurrentSection={TitleSlot:[{Title:tmpEntry.Title}],Items:[]};tmpSections.push(tmpCurrentSection);for(let j=0;j<tmpEntry.Children.length;j++){let tmpChild=tmpEntry.Children[j];if(tmpChild.Path){tmpCurrentSection.Items.push({Title:tmpChild.Title,Route:tmpRoutePrefix+tmpChild.Path,ActiveClass:''});}}}else if(tmpEntry.Path){if(!tmpCurrentSection||tmpCurrentSection.TitleSlot.length>0){tmpCurrentSection={TitleSlot:[],Items:[]};tmpSections.push(tmpCurrentSection);}tmpCurrentSection.Items.push({Title:tmpEntry.Title,Route:tmpRoutePrefix+tmpEntry.Path,ActiveClass:''});}}}// Demos sub-section: titled, with active state mirroring the
14274
14474
  // current demo route.
14275
- if(tmpDemos.length>0){let tmpDemoSection={TitleSlot:[{Title:'Demos'}],Items:[]};for(let i=0;i<tmpDemos.length;i++){let tmpDemo=tmpDemos[i];tmpDemoSection.Items.push({Title:tmpDemo.Name||tmpDemo.Hash,Route:tmpDemoPrefix+tmpDemo.Hash,ActiveClass:tmpDemo.Hash===tmpCurrentDemo?'active':''});}tmpSections.push(tmpDemoSection);}this.pict.AppData.Docuserve.ModuleNavSections=tmpSections;}_refreshSearchResults(pQuery){let tmpDocuserve=this.pict.AppData.Docuserve;if(!pQuery||!pQuery.trim()){tmpDocuserve.SidebarSearchResults=[];tmpDocuserve.SidebarSearchOverflow=[];tmpDocuserve.SidebarSearchEmpty=[];return;}let tmpDocProvider=this.pict.providers['Docuserve-Documentation'];let tmpResults=tmpDocProvider.search(pQuery);if(tmpResults.length===0){tmpDocuserve.SidebarSearchResults=[];tmpDocuserve.SidebarSearchOverflow=[];tmpDocuserve.SidebarSearchEmpty=[{}];return;}let tmpMaxResults=8;let tmpDisplayResults=[];for(let i=0;i<tmpResults.length&&i<tmpMaxResults;i++){let tmpResult=tmpResults[i];let tmpMeta=tmpResult.Group&&tmpResult.Module?tmpResult.Group+' / '+tmpResult.Module:'';tmpDisplayResults.push({Title:tmpResult.Title,Route:tmpResult.Route,MetaSlot:tmpMeta?[{Meta:tmpMeta}]:[]});}tmpDocuserve.SidebarSearchResults=tmpDisplayResults;tmpDocuserve.SidebarSearchEmpty=[];if(tmpResults.length>tmpMaxResults){tmpDocuserve.SidebarSearchOverflow=[{EncodedQuery:encodeURIComponent(pQuery),TotalCount:tmpResults.length}];}else{tmpDocuserve.SidebarSearchOverflow=[];}}}module.exports=DocusserveSidebarView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}],360:[function(require,module,exports){const libPictView=require('pict-view');const _ViewConfiguration={ViewIdentifier:"Docuserve-Splash",DefaultRenderable:"Docuserve-Splash-Content",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:false,CSS:/*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(--theme-color-background-primary, #FDFBF7);\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(--theme-color-text-primary, #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: var(--theme-color-text-muted, #8A7F72);\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(--theme-color-text-secondary, #5E5549);\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(--theme-color-text-secondary, #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: var(--theme-color-background-panel, #FFFFFF);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #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.12);\n\t\t\tborder-color: var(--theme-color-brand-primary, #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: var(--theme-color-text-primary, #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: var(--theme-color-text-secondary, #5E5549);\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(--theme-color-brand-primary, #2E7D74);\n\t\t\t/* text-on-brand falls to a fixed light hex \u2014 never to background-panel,\n\t\t\t which inverts contrast in dark themes (dark text on brand bg). */\n\t\t\tcolor: var(--theme-color-text-on-brand, #fff);\n\t\t}\n\t\t.docuserve-splash-actions .primary:hover {\n\t\t\tbackground-color: var(--theme-color-brand-primary-hover, #236660);\n\t\t}\n\t\t.docuserve-splash-actions .secondary {\n\t\t\tbackground-color: var(--theme-color-background-panel, #FFFFFF);\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder: 2px solid var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-splash-actions .secondary:hover {\n\t\t\tborder-color: var(--theme-color-brand-primary-hover, #236660);\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-splash-examples {\n\t\t\tmax-width: 900px;\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 2.5em;\n\t\t}\n\t\t/* No staged examples \u2014 collapse the section entirely. */\n\t\t.docuserve-splash-examples:empty {\n\t\t\tdisplay: none;\n\t\t\tmargin: 0;\n\t\t}\n\t\t.docuserve-splash-examples-heading {\n\t\t\tfont-size: 0.95em;\n\t\t\tfont-weight: 700;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.08em;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\n\t\t\tmargin: 0 0 0.85em 0;\n\t\t}\n\t\t.docuserve-splash-examples table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tborder-radius: 8px;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t.docuserve-splash-examples thead th {\n\t\t\ttext-align: left;\n\t\t\tfont-size: 0.72em;\n\t\t\tfont-weight: 700;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.06em;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\n\t\t\tpadding: 0.7em 1.1em;\n\t\t\tbackground: var(--theme-color-background-tertiary, #F4EFE6);\n\t\t}\n\t\t.docuserve-splash-examples tbody td {\n\t\t\tpadding: 0.7em 1.1em;\n\t\t\tborder-top: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: var(--theme-color-text-secondary, #5E5549);\n\t\t\ttext-align: left;\n\t\t}\n\t\t.docuserve-splash-examples tbody tr:hover td {\n\t\t\tbackground: var(--theme-color-background-tertiary, #F4EFE6);\n\t\t}\n\t\t.docuserve-splash-examples a {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tfont-weight: 600;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.docuserve-splash-examples a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t/* docs/README.md content rendered beneath the hero. */\n\t\t.docuserve-splash-readme {\n\t\t\tmax-width: 820px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 3.5em 2em 5em 2em;\n\t\t\ttext-align: left;\n\t\t}\n\t\t.docuserve-splash-readme:empty {\n\t\t\tdisplay: none;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Splash-Template",Template:/*html*/"\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-examples\" id=\"Docuserve-Splash-Examples\"></div>\n\t<div class=\"docuserve-splash-actions\" id=\"Docuserve-Splash-Actions\"></div>\n</div>\n<div class=\"docuserve-splash-readme\" id=\"Docuserve-Splash-Readme\"></div>\n"}],Renderables:[{RenderableHash:"Docuserve-Splash-Content",TemplateHash:"Docuserve-Splash-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]};class DocusserveSplashView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);}onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent){let tmpDocuserve=this.pict.AppData.Docuserve;if(tmpDocuserve.CoverLoaded&&tmpDocuserve.Cover){this.renderFromCover(tmpDocuserve.Cover);this.renderExamples(tmpDocuserve.Cover);}else{this.renderFromCatalog(tmpDocuserve);}// Conditionally append a "Playground" button to the action row when
14475
+ if(tmpDemos.length>0){let tmpDemoSection={TitleSlot:[{Title:'Demos'}],Items:[]};for(let i=0;i<tmpDemos.length;i++){let tmpDemo=tmpDemos[i];tmpDemoSection.Items.push({Title:tmpDemo.Name||tmpDemo.Hash,Route:tmpDemoPrefix+tmpDemo.Hash,ActiveClass:tmpDemo.Hash===tmpCurrentDemo?'active':''});}tmpSections.push(tmpDemoSection);}this.pict.AppData.Docuserve.ModuleNavSections=tmpSections;}_refreshSearchResults(pQuery){let tmpDocuserve=this.pict.AppData.Docuserve;if(!pQuery||!pQuery.trim()){tmpDocuserve.SidebarSearchResults=[];tmpDocuserve.SidebarSearchOverflow=[];tmpDocuserve.SidebarSearchEmpty=[];return;}let tmpDocProvider=this.pict.providers['Docuserve-Documentation'];let tmpResults=tmpDocProvider.search(pQuery);if(tmpResults.length===0){tmpDocuserve.SidebarSearchResults=[];tmpDocuserve.SidebarSearchOverflow=[];tmpDocuserve.SidebarSearchEmpty=[{}];return;}let tmpMaxResults=8;let tmpDisplayResults=[];for(let i=0;i<tmpResults.length&&i<tmpMaxResults;i++){let tmpResult=tmpResults[i];let tmpMeta=tmpResult.Group&&tmpResult.Module?tmpResult.Group+' / '+tmpResult.Module:'';tmpDisplayResults.push({Title:tmpResult.Title,Route:tmpResult.Route,MetaSlot:tmpMeta?[{Meta:tmpMeta}]:[]});}tmpDocuserve.SidebarSearchResults=tmpDisplayResults;tmpDocuserve.SidebarSearchEmpty=[];if(tmpResults.length>tmpMaxResults){tmpDocuserve.SidebarSearchOverflow=[{EncodedQuery:encodeURIComponent(pQuery),TotalCount:tmpResults.length}];}else{tmpDocuserve.SidebarSearchOverflow=[];}}}module.exports=DocusserveSidebarView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":234}],363:[function(require,module,exports){const libPictView=require('pict-view');const _ViewConfiguration={ViewIdentifier:"Docuserve-Splash",DefaultRenderable:"Docuserve-Splash-Content",DefaultDestinationAddress:"#Docuserve-Content-Container",AutoRender:false,CSS:/*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(--theme-color-background-primary, #FDFBF7);\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(--theme-color-text-primary, #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: var(--theme-color-text-muted, #8A7F72);\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(--theme-color-text-secondary, #5E5549);\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(--theme-color-text-secondary, #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: var(--theme-color-background-panel, #FFFFFF);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #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.12);\n\t\t\tborder-color: var(--theme-color-brand-primary, #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: var(--theme-color-text-primary, #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: var(--theme-color-text-secondary, #5E5549);\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(--theme-color-brand-primary, #2E7D74);\n\t\t\t/* text-on-brand falls to a fixed light hex \u2014 never to background-panel,\n\t\t\t which inverts contrast in dark themes (dark text on brand bg). */\n\t\t\tcolor: var(--theme-color-text-on-brand, #fff);\n\t\t}\n\t\t.docuserve-splash-actions .primary:hover {\n\t\t\tbackground-color: var(--theme-color-brand-primary-hover, #236660);\n\t\t}\n\t\t.docuserve-splash-actions .secondary {\n\t\t\tbackground-color: var(--theme-color-background-panel, #FFFFFF);\n\t\t\tcolor: var(--theme-color-text-primary, #3D3229);\n\t\t\tborder: 2px solid var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-splash-actions .secondary:hover {\n\t\t\tborder-color: var(--theme-color-brand-primary-hover, #236660);\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t}\n\t\t.docuserve-splash-examples {\n\t\t\tmax-width: 900px;\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 2.5em;\n\t\t}\n\t\t/* No staged examples \u2014 collapse the section entirely. */\n\t\t.docuserve-splash-examples:empty {\n\t\t\tdisplay: none;\n\t\t\tmargin: 0;\n\t\t}\n\t\t.docuserve-splash-examples-heading {\n\t\t\tfont-size: 0.95em;\n\t\t\tfont-weight: 700;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.08em;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\n\t\t\tmargin: 0 0 0.85em 0;\n\t\t}\n\t\t.docuserve-splash-examples table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\t\t\tborder: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tborder-radius: 8px;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t.docuserve-splash-examples thead th {\n\t\t\ttext-align: left;\n\t\t\tfont-size: 0.72em;\n\t\t\tfont-weight: 700;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.06em;\n\t\t\tcolor: var(--theme-color-text-muted, #8A7F72);\n\t\t\tpadding: 0.7em 1.1em;\n\t\t\tbackground: var(--theme-color-background-tertiary, #F4EFE6);\n\t\t}\n\t\t.docuserve-splash-examples tbody td {\n\t\t\tpadding: 0.7em 1.1em;\n\t\t\tborder-top: 1px solid var(--theme-color-border-default, #DDD6CA);\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: var(--theme-color-text-secondary, #5E5549);\n\t\t\ttext-align: left;\n\t\t}\n\t\t.docuserve-splash-examples tbody tr:hover td {\n\t\t\tbackground: var(--theme-color-background-tertiary, #F4EFE6);\n\t\t}\n\t\t.docuserve-splash-examples a {\n\t\t\tcolor: var(--theme-color-brand-primary, #2E7D74);\n\t\t\tfont-weight: 600;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.docuserve-splash-examples a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t/* docs/README.md content rendered beneath the hero. */\n\t\t.docuserve-splash-readme {\n\t\t\tmax-width: 820px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 3.5em 2em 5em 2em;\n\t\t\ttext-align: left;\n\t\t}\n\t\t.docuserve-splash-readme:empty {\n\t\t\tdisplay: none;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-Splash-Template",Template:/*html*/"\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-examples\" id=\"Docuserve-Splash-Examples\"></div>\n\t<div class=\"docuserve-splash-actions\" id=\"Docuserve-Splash-Actions\"></div>\n</div>\n<div class=\"docuserve-splash-readme\" id=\"Docuserve-Splash-Readme\"></div>\n"}],Renderables:[{RenderableHash:"Docuserve-Splash-Content",TemplateHash:"Docuserve-Splash-Template",DestinationAddress:"#Docuserve-Content-Container",RenderMethod:"replace"}]};class DocusserveSplashView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);}onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent){let tmpDocuserve=this.pict.AppData.Docuserve;if(tmpDocuserve.CoverLoaded&&tmpDocuserve.Cover){this.renderFromCover(tmpDocuserve.Cover);this.renderExamples(tmpDocuserve.Cover);}else{this.renderFromCatalog(tmpDocuserve);}// Conditionally append a "Playground" button to the action row when
14276
14476
  // the current module ships a _playground.json. Async — the button
14277
14477
  // pops in once the config resolves.
14278
14478
  this.renderPlaygroundButton();// Render docs/README.md beneath the hero — the splash fills the
@@ -14328,14 +14528,14 @@ return this.escapeHTML(pText).replace(/&lt;small&gt;/gi,'<small>').replace(/&lt;
14328
14528
  *
14329
14529
  * @param {string} pText - The text to escape
14330
14530
  * @returns {string} The escaped text
14331
- */escapeHTML(pText){if(!pText){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=DocusserveSplashView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}],361:[function(require,module,exports){const libPictView=require('pict-view');/**
14531
+ */escapeHTML(pText){if(!pText){return'';}return pText.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}}module.exports=DocusserveSplashView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":234}],364:[function(require,module,exports){const libPictView=require('pict-view');/**
14332
14532
  * PictView-Docuserve-TopBar-Nav — slot view rendered into Theme-TopBar's
14333
14533
  * NavView slot. Hosts navigation links (Home + any links declared in
14334
14534
  * _topbar.md) and the version chip (sourced from _version.json).
14335
14535
  *
14336
14536
  * Re-renders on demand when AppData.Docuserve.TopBar / Version data
14337
14537
  * is loaded by the documentation provider.
14338
- */const _ViewConfiguration={ViewIdentifier:"Docuserve-TopBar-Nav",DefaultRenderable:"Docuserve-TopBar-Nav-Display",DefaultDestinationAddress:"#Theme-TopBar-Nav",AutoRender:false,CSS:/*css*/"\n\t\t.docuserve-nav\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\theight: 100%;\n\t\t\tgap: 0.6em;\n\t\t\tpadding: 0 0.75em;\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-primary, #E8E0D4));\n\t\t}\n\t\t.docuserve-nav-links\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 0.25em;\n\t\t}\n\t\t.docuserve-nav-links a\n\t\t{\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-primary, #E8E0D4));\n\t\t\ttext-decoration: none;\n\t\t\tpadding: 0.45em 0.7em;\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-nav-links a:hover\n\t\t{\n\t\t\tbackground-color: var(--theme-color-background-hover, rgba(255, 255, 255, 0.06));\n\t\t\t/* Keep the text token chain on hover \u2014 falling to background-panel\n\t\t\t here inverts contrast (dark text on dark hover) in themes that\n\t\t\t don't define text-on-brand (e.g. night, twilight). */\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-primary, #ffffff));\n\t\t}\n\t\t.docuserve-nav-version\n\t\t{\n\t\t\tfont-size: 0.72em;\n\t\t\tfont-weight: 500;\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-muted, #B5AA9A));\n\t\t\tbackground: var(--theme-color-background-hover, rgba(255, 255, 255, 0.06));\n\t\t\tborder: 1px solid var(--theme-color-border-light, rgba(255, 255, 255, 0.08));\n\t\t\tpadding: 0.12em 0.55em;\n\t\t\tborder-radius: 10px;\n\t\t\tfont-family: var(--theme-typography-family-mono, 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-nav-version:empty\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-TopBar-Nav-Template",Template:/*html*/"\n<div class=\"docuserve-nav\">\n\t<div id=\"Docuserve-Nav-Links\" class=\"docuserve-nav-links\"></div>\n\t<span id=\"Docuserve-Nav-Version\" class=\"docuserve-nav-version\" title=\"\"></span>\n</div>"}],Renderables:[{RenderableHash:"Docuserve-TopBar-Nav-Display",TemplateHash:"Docuserve-TopBar-Nav-Template",DestinationAddress:"#Theme-TopBar-Nav",RenderMethod:"replace"}]};class DocuserveTopBarNavView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);}onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent){this.pict.CSSMap.injectCSS();this._renderNavLinks();this._renderVersionChip();return super.onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent);}_renderNavLinks(){let tmpDocuserve=this.pict.AppData.Docuserve||{};let tmpLinksEl=document.getElementById('Docuserve-Nav-Links');if(!tmpLinksEl){return;}let tmpHTML='<a href="#/Home">Home</a>';if(tmpDocuserve.TopBarLoaded&&tmpDocuserve.TopBar&&Array.isArray(tmpDocuserve.TopBar.NavLinks)){for(let i=0;i<tmpDocuserve.TopBar.NavLinks.length;i++){let tmpLink=tmpDocuserve.TopBar.NavLinks[i];tmpHTML+='<a href="'+this._escapeHTML(tmpLink.Href||'#')+'">'+this._escapeHTML(tmpLink.Text||'')+'</a>';}}tmpLinksEl.innerHTML=tmpHTML;}_renderVersionChip(){let tmpDocuserve=this.pict.AppData.Docuserve||{};let tmpEl=document.getElementById('Docuserve-Nav-Version');if(!tmpEl){return;}if(!tmpDocuserve.VersionLoaded||!tmpDocuserve.Version||!tmpDocuserve.Version.Version){tmpEl.innerHTML='';tmpEl.setAttribute('title','');return;}let tmpVersion=tmpDocuserve.Version;tmpEl.innerHTML='v'+this._escapeHTML(tmpVersion.Version);let tmpTooltipParts=[];tmpTooltipParts.push((tmpVersion.Name?tmpVersion.Name+' ':'')+'v'+tmpVersion.Version);if(tmpVersion.GeneratedAt){let tmpMatch=String(tmpVersion.GeneratedAt).match(/^(\d{4}-\d{2}-\d{2})/);tmpTooltipParts.push('built '+(tmpMatch?tmpMatch[1]:tmpVersion.GeneratedAt));}if(tmpVersion.GitCommit){tmpTooltipParts.push(tmpVersion.GitCommit);}tmpEl.setAttribute('title',tmpTooltipParts.join(' · '));}_escapeHTML(pText){if(pText==null){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=DocuserveTopBarNavView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}],362:[function(require,module,exports){const libPictView=require('pict-view');/**
14538
+ */const _ViewConfiguration={ViewIdentifier:"Docuserve-TopBar-Nav",DefaultRenderable:"Docuserve-TopBar-Nav-Display",DefaultDestinationAddress:"#Theme-TopBar-Nav",AutoRender:false,CSS:/*css*/"\n\t\t.docuserve-nav\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\theight: 100%;\n\t\t\tgap: 0.6em;\n\t\t\tpadding: 0 0.75em;\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-primary, #E8E0D4));\n\t\t}\n\t\t.docuserve-nav-links\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 0.25em;\n\t\t}\n\t\t.docuserve-nav-links a\n\t\t{\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-primary, #E8E0D4));\n\t\t\ttext-decoration: none;\n\t\t\tpadding: 0.45em 0.7em;\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-nav-links a:hover\n\t\t{\n\t\t\tbackground-color: var(--theme-color-background-hover, rgba(255, 255, 255, 0.06));\n\t\t\t/* Keep the text token chain on hover \u2014 falling to background-panel\n\t\t\t here inverts contrast (dark text on dark hover) in themes that\n\t\t\t don't define text-on-brand (e.g. night, twilight). */\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-primary, #ffffff));\n\t\t}\n\t\t.docuserve-nav-version\n\t\t{\n\t\t\tfont-size: 0.72em;\n\t\t\tfont-weight: 500;\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-muted, #B5AA9A));\n\t\t\tbackground: var(--theme-color-background-hover, rgba(255, 255, 255, 0.06));\n\t\t\tborder: 1px solid var(--theme-color-border-light, rgba(255, 255, 255, 0.08));\n\t\t\tpadding: 0.12em 0.55em;\n\t\t\tborder-radius: 10px;\n\t\t\tfont-family: var(--theme-typography-family-mono, 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-nav-version:empty\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t",Templates:[{Hash:"Docuserve-TopBar-Nav-Template",Template:/*html*/"\n<div class=\"docuserve-nav\">\n\t<div id=\"Docuserve-Nav-Links\" class=\"docuserve-nav-links\"></div>\n\t<span id=\"Docuserve-Nav-Version\" class=\"docuserve-nav-version\" title=\"\"></span>\n</div>"}],Renderables:[{RenderableHash:"Docuserve-TopBar-Nav-Display",TemplateHash:"Docuserve-TopBar-Nav-Template",DestinationAddress:"#Theme-TopBar-Nav",RenderMethod:"replace"}]};class DocuserveTopBarNavView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);}onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent){this.pict.CSSMap.injectCSS();this._renderNavLinks();this._renderVersionChip();return super.onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent);}_renderNavLinks(){let tmpDocuserve=this.pict.AppData.Docuserve||{};let tmpLinksEl=document.getElementById('Docuserve-Nav-Links');if(!tmpLinksEl){return;}let tmpHTML='<a href="#/Home">Home</a>';if(tmpDocuserve.TopBarLoaded&&tmpDocuserve.TopBar&&Array.isArray(tmpDocuserve.TopBar.NavLinks)){for(let i=0;i<tmpDocuserve.TopBar.NavLinks.length;i++){let tmpLink=tmpDocuserve.TopBar.NavLinks[i];tmpHTML+='<a href="'+this._escapeHTML(tmpLink.Href||'#')+'">'+this._escapeHTML(tmpLink.Text||'')+'</a>';}}tmpLinksEl.innerHTML=tmpHTML;}_renderVersionChip(){let tmpDocuserve=this.pict.AppData.Docuserve||{};let tmpEl=document.getElementById('Docuserve-Nav-Version');if(!tmpEl){return;}if(!tmpDocuserve.VersionLoaded||!tmpDocuserve.Version||!tmpDocuserve.Version.Version){tmpEl.innerHTML='';tmpEl.setAttribute('title','');return;}let tmpVersion=tmpDocuserve.Version;tmpEl.innerHTML='v'+this._escapeHTML(tmpVersion.Version);let tmpTooltipParts=[];tmpTooltipParts.push((tmpVersion.Name?tmpVersion.Name+' ':'')+'v'+tmpVersion.Version);if(tmpVersion.GeneratedAt){let tmpMatch=String(tmpVersion.GeneratedAt).match(/^(\d{4}-\d{2}-\d{2})/);tmpTooltipParts.push('built '+(tmpMatch?tmpMatch[1]:tmpVersion.GeneratedAt));}if(tmpVersion.GitCommit){tmpTooltipParts.push(tmpVersion.GitCommit);}tmpEl.setAttribute('title',tmpTooltipParts.join(' · '));}_escapeHTML(pText){if(pText==null){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=DocuserveTopBarNavView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":234}],365:[function(require,module,exports){const libPictView=require('pict-view');/**
14339
14539
  * PictView-Docuserve-TopBar-User — slot view rendered into Theme-TopBar's
14340
14540
  * UserView slot. Hosts the Search link (when a keyword index is loaded)
14341
14541
  * and any external links declared in _topbar.md.
@@ -14348,5 +14548,5 @@ return this.escapeHTML(pText).replace(/&lt;small&gt;/gi,'<small>').replace(/&lt;
14348
14548
  * KeywordIndexLoaded changes.
14349
14549
  */const _ViewConfiguration={ViewIdentifier:"Docuserve-TopBar-User",DefaultRenderable:"Docuserve-TopBar-User-Display",DefaultDestinationAddress:"#Theme-TopBar-User",AutoRender:false,CSS:/*css*/"\n\t\t.docuserve-user\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\theight: 100%;\n\t\t\tgap: 0.25em;\n\t\t\tpadding: 0 0.75em;\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-secondary, #B5AA9A));\n\t\t}\n\t\t.docuserve-user a\n\t\t{\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-secondary, #B5AA9A));\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-user a:hover\n\t\t{\n\t\t\tbackground-color: var(--theme-color-background-hover, rgba(255, 255, 255, 0.06));\n\t\t\tcolor: var(--theme-color-text-on-brand, var(--theme-color-text-primary, #E8E0D4));\n\t\t}\n\t",Templates:[{Hash:"Docuserve-TopBar-User-Template",Template:/*html*/"<div class=\"docuserve-user\" id=\"Docuserve-User-Links\"></div>"}],Renderables:[{RenderableHash:"Docuserve-TopBar-User-Display",TemplateHash:"Docuserve-TopBar-User-Template",DestinationAddress:"#Theme-TopBar-User",RenderMethod:"replace"}]};class DocuserveTopBarUserView extends libPictView{constructor(pFable,pOptions,pServiceHash){super(pFable,pOptions,pServiceHash);}onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent){this.pict.CSSMap.injectCSS();this._renderLinks();return super.onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent);}_renderLinks(){let tmpDocuserve=this.pict.AppData.Docuserve||{};let tmpEl=document.getElementById('Docuserve-User-Links');if(!tmpEl){return;}let tmpHTML='';// Search link comes first when a keyword index is available.
14350
14550
  if(tmpDocuserve.KeywordIndexLoaded){tmpHTML+='<a href="#/search/">Search</a>';}// External links from _topbar.md.
14351
- if(tmpDocuserve.TopBarLoaded&&tmpDocuserve.TopBar&&Array.isArray(tmpDocuserve.TopBar.ExternalLinks)){for(let i=0;i<tmpDocuserve.TopBar.ExternalLinks.length;i++){let tmpLink=tmpDocuserve.TopBar.ExternalLinks[i];let tmpHref=this._escapeHTML(tmpLink.Href||'#');let tmpText=this._escapeHTML(tmpLink.Text||'');let tmpIsExternal=/^https?:/i.test(tmpLink.Href||'');tmpHTML+='<a href="'+tmpHref+'"'+(tmpIsExternal?' target="_blank" rel="noopener"':'')+'>'+tmpText+'</a>';}}tmpEl.innerHTML=tmpHTML;}_escapeHTML(pText){if(pText==null){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=DocuserveTopBarUserView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":231}]},{},[350])(350);});
14551
+ if(tmpDocuserve.TopBarLoaded&&tmpDocuserve.TopBar&&Array.isArray(tmpDocuserve.TopBar.ExternalLinks)){for(let i=0;i<tmpDocuserve.TopBar.ExternalLinks.length;i++){let tmpLink=tmpDocuserve.TopBar.ExternalLinks[i];let tmpHref=this._escapeHTML(tmpLink.Href||'#');let tmpText=this._escapeHTML(tmpLink.Text||'');let tmpIsExternal=/^https?:/i.test(tmpLink.Href||'');tmpHTML+='<a href="'+tmpHref+'"'+(tmpIsExternal?' target="_blank" rel="noopener"':'')+'>'+tmpText+'</a>';}}tmpEl.innerHTML=tmpHTML;}_escapeHTML(pText){if(pText==null){return'';}return String(pText).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}}module.exports=DocuserveTopBarUserView;module.exports.default_configuration=_ViewConfiguration;},{"pict-view":234}]},{},[353])(353);});
14352
14552
  //# sourceMappingURL=pict-docuserve.js.map