pict-section-form 1.1.9 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/docs/Configuration.md +1 -0
- package/docs/Layouts.md +60 -0
- package/docs/_version.json +3 -3
- package/docs/examples/README.md +1 -1
- package/docs/examples/change_tracking/change_tracking.js +322 -20
- package/docs/examples/diagram_form/diagram_form_example.min.js +2 -2
- package/docs/examples/dynamic_analysis/dynamic_analysis_application.js +301 -20
- package/docs/examples/gradebook/README.md +43 -1
- package/docs/examples/gradebook/gradebook_application.min.js +2 -2
- package/docs/examples/ndt_field_test/ndt_field_test.js +322 -20
- package/docs/examples/richtext_form/richtext_form_example.min.js +2 -3
- package/docs/examples/scope_mathematics/scope_mathematics.js +322 -20
- package/docs/examples/simple_table/README.md +1 -0
- package/docs/examples/simple_table/simple_tabular_application.min.js +2 -2
- package/docs/examples/superhero_studio/superhero_studio_example.min.js +2 -3
- package/docs/index.html +2 -2
- package/docs/retold-catalog.json +1 -1
- package/docs/retold-keyword-index.json +10252 -9612
- package/example_applications/complex_table/Complex-Tabular-Application.js +5 -0
- package/example_applications/gradebook/Gradebook-Application.js +19 -4
- package/example_applications/gradebook/package.json +2 -2
- package/example_applications/simple_table/README-SimpleTable.md +9 -0
- package/example_applications/simple_table/Simple-Tabular-Application.js +6 -1
- package/package.json +1 -1
- package/source/providers/layouts/Pict-Layout-Tabular.js +639 -1
- package/test/PictSectionForm-Tabular-Features_tests.js +293 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray2(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray2(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray2(t,e);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?_arrayLikeToArray2(t,e):void 0}}function _arrayLikeToArray2(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=Array(e);i<e;i++)n[i]=t[i];return n}function _iterableToArrayLimit(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var n,r,o,a,s=[],c=!0,l=!1;try{if(o=(i=i.call(t)).next,0===e){if(Object(i)!==i)return;c=!1}else for(;!(c=(n=o.call(i)).done)&&(s.push(n.value),s.length!==e);c=!0);}catch(t){l=!0,r=t}finally{try{if(!c&&null!=i.return&&(a=i.return(),Object(a)!==a))return}finally{if(l)throw r}}return s}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _defineProperty(t,e,i){return(e=_toPropertyKey2(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function _toPropertyKey2(t){var e=_toPrimitive2(t,"string");return"symbol"==typeof e?e:e+""}function _toPrimitive2(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).RichtextFormExample=t()}}(function(){return function t(e,i,n){function r(a,s){if(!i[a]){if(!e[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var p=i[a]={exports:{}};e[a][0].call(p.exports,function(t){return r(e[a][1][t]||t)},p,p.exports,t,e,i,n)}return i[a].exports}for(var o="function"==typeof require&&require,a=0;a<n.length;a++)r(n[a]);return r}({1:[function(t,e,i){t("pict-application");const n=t("../../source/Pict-Section-Form.js"),r={Body:{Name:"Body",Hash:"Body",DataType:"String",PictForm:{Section:"Article",Row:1,Width:12,InputType:"RichText",RichText:{AllowImages:!0,ImageUploader:"uploadImage",Height:"320px"}}}},o={Scope:"RichTextDemoForm",Sections:[{Hash:"Article",Name:"Article Body"}],Descriptors:r};class a extends n.PictFormApplication{constructor(t,e,i){super(t,e,i);let r=n.RichTextInput;this.pict.addProvider(r.default_configuration.ProviderIdentifier,r.default_configuration,r),this.pict.AppData.RichTextDemoForm={Body:'## Welcome\n\nThis form is in **view** mode by default. Click *Edit* to swap a field into the markdown editor.\n\n- Boot-time DOM is just rendered markdown — no CodeMirror loaded.\n- First `setMode("edit")` lazy-loads the editor bundle.\n- Image uploads are routed through `uploadImage(file, descriptor, cb)`.'},this._imageUploaderEnabled=!0}onAfterInitializeAsync(t){this.pict.views.PictFormMetacontroller&&(this.pict.views.PictFormMetacontroller.viewMarshalDestination="AppData.RichTextDemoForm"),super.onAfterInitializeAsync(()=>{try{this.marshalDataFromAppDataToDynamicViews()}catch(t){this.log&&this.log.warn("[richtext_form] initial marshal failed",{error:t.message})}return t()})}uploadImage(t,e,i){return!!this._imageUploaderEnabled&&(setTimeout(()=>{let e="/uploads/"+Date.now()+"-"+(t.name||"image.png").replace(/[^A-Za-z0-9._-]/g,"_");i(null,e),this.log&&this.log.info("[richtext_form demo] uploadImage resolved",{url:e})},600),!0)}demo_toggleMode(t){let e=this.pict.providers["Pict-Input-RichText"];e&&e.toggleMode(t,e=>{e&&this.log&&this.log.warn("[richtext_form demo] toggleMode error",{error:e.message}),this._refreshModeLabel(t)})}demo_setAllowImages(t,e){let i=r[t];i&&(i.PictForm.RichText.AllowImages=!!e)}demo_setUploaderEnabled(t){this._imageUploaderEnabled=!!t}_refreshModeLabel(t){let e=this.pict.providers["Pict-Input-RichText"];if(!e)return;let i="edit"===e.getMode(t)?"Done":"Edit",n="undefined"!=typeof document?document.getElementById("toggle-"+t):null;n&&(n.textContent=i)}}e.exports=a,e.exports.default_configuration=Object.assign({},n.PictFormApplication.default_configuration,{Name:"RichText Form Example",Hash:"RichTextFormExample",pict_configuration:{Product:"RichTextForm-Example",DefaultFormManifest:o}})},{"../../source/Pict-Section-Form.js":40,"pict-application":6}],2:[function(t,e,i){e.exports={name:"fable-serviceproviderbase",version:"3.0.19",description:"Simple base classes for fable services.",main:"source/Fable-ServiceProviderBase.js",scripts:{start:"node source/Fable-ServiceProviderBase.js",test:"npx quack test",tests:"npx quack test -g",coverage:"npx quack coverage",build:"npx quack build",types:"tsc -p ./tsconfig.build.json",check:"tsc -p . --noEmit"},types:"types/source/Fable-ServiceProviderBase.d.ts",mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},repository:{type:"git",url:"https://github.com/stevenvelozo/fable-serviceproviderbase.git"},keywords:["entity","behavior"],author:"Steven Velozo <steven@velozo.com> (http://velozo.com/)",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/fable-serviceproviderbase/issues"},homepage:"https://github.com/stevenvelozo/fable-serviceproviderbase",devDependencies:{"@types/mocha":"^10.0.10",fable:"^3.1.62",quackage:"^1.0.58",typescript:"^5.9.3"}}},{}],3:[function(t,e,i){const n=t("../package.json");class r{constructor(t,e,i){this.fable,this.UUID,this.options,this.services,this.servicesMap,"object"==typeof t&&t.isFable?this.connectFable(t):this.fable=!1,this._PackageFableServiceProvider=n,this.fable?(this.UUID=t.getUUID(),this.options="object"==typeof e?e:{}):(this.options="object"!=typeof t||t.isFable?"object"==typeof e?e:{}:t,this.UUID="CORE-SVC-".concat(Math.floor(89999*Math.random()+1e4))),this.serviceType="Unknown-".concat(this.UUID),this.Hash="string"==typeof i?i:this.fable||"string"!=typeof e?"".concat(this.UUID):e}connectFable(t){if("object"!=typeof t||!t.isFable){let e="Fable Service Provider Base: Cannot connect to Fable, invalid Fable object passed in. The pFable parameter was a [".concat(typeof t,"].}");return console.log(e),new Error(e)}return this.fable||(this.fable=t),this.log||(this.log=this.fable.Logging),this.services||(this.services=this.fable.services),this.servicesMap||(this.servicesMap=this.fable.servicesMap),!0}}_defineProperty(r,"isFableService",!0),e.exports=r,e.exports.CoreServiceProviderBase=r},{"../package.json":2}],4:[function(t,e,i){!function(t,n){"object"==typeof i&&void 0!==e?n(i):n((t="undefined"!=typeof globalThis?globalThis:t||self).marked={})}(this,function(t){function e(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function i(){return i=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},i.apply(this,arguments)}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}function r(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(i)return(i=i.call(t)).next.bind(i);if(Array.isArray(t)||(i=function(t,e){if(t){if("string"==typeof t)return n(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?n(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}function a(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}t.defaults={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};var s=/[&<>"']/,c=new RegExp(s.source,"g"),l=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,p=new RegExp(l.source,"g"),d={"&":"&","<":"<",">":">",'"':""","'":"'"},u=function(t){return d[t]};function h(t,e){if(e){if(s.test(t))return t.replace(c,u)}else if(l.test(t))return t.replace(p,u);return t}var m=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function g(t){return t.replace(m,function(t,e){return"colon"===(e=e.toLowerCase())?":":"#"===e.charAt(0)?"x"===e.charAt(1)?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):""})}var f=/(^|[^\[])\^/g;function D(t,e){t="string"==typeof t?t:t.source,e=e||"";var i={replace:function(e,n){return n=(n=n.source||n).replace(f,"$1"),t=t.replace(e,n),i},getRegex:function(){return new RegExp(t,e)}};return i}var y=/[^\w:]/g,v=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function b(t,e,i){if(t){var n;try{n=decodeURIComponent(g(i)).replace(y,"").toLowerCase()}catch(t){return null}if(0===n.indexOf("javascript:")||0===n.indexOf("vbscript:")||0===n.indexOf("data:"))return null}e&&!v.test(i)&&(i=function(t,e){T[" "+t]||(w.test(t)?T[" "+t]=t+"/":T[" "+t]=A(t,"/",!0));t=T[" "+t];var i=-1===t.indexOf(":");return"//"===e.substring(0,2)?i?e:t.replace(S,"$1")+e:"/"===e.charAt(0)?i?e:t.replace(P,"$1")+e:t+e}(e,i));try{i=encodeURI(i).replace(/%25/g,"%")}catch(t){return null}return i}var T={},w=/^[^:]+:\/*[^/]*$/,S=/^([^:]+:)[\s\S]*$/,P=/^([^:]+:\/*[^/]*)[\s\S]*$/;var x={exec:function(){}};function I(t,e){var i=t.replace(/\|/g,function(t,e,i){for(var n=!1,r=e;--r>=0&&"\\"===i[r];)n=!n;return n?"|":" |"}).split(/ \|/),n=0;if(i[0].trim()||i.shift(),i.length>0&&!i[i.length-1].trim()&&i.pop(),i.length>e)i.splice(e);else for(;i.length<e;)i.push("");for(;n<i.length;n++)i[n]=i[n].trim().replace(/\\\|/g,"|");return i}function A(t,e,i){var n=t.length;if(0===n)return"";for(var r=0;r<n;){var o=t.charAt(n-r-1);if(o!==e||i){if(o===e||!i)break;r++}else r++}return t.slice(0,n-r)}function C(t,e){if(e<1)return"";for(var i="";e>1;)1&e&&(i+=t),e>>=1,t+=t;return i+t}function F(t,e,i,n){var r=e.href,o=e.title?h(e.title):null,a=t[1].replace(/\\([\[\]])/g,"$1");if("!"!==t[0].charAt(0)){n.state.inLink=!0;var s={type:"link",raw:i,href:r,title:o,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,s}return{type:"image",raw:i,href:r,title:o,text:h(a)}}var R=function(){function e(e){this.options=e||t.defaults}var i=e.prototype;return i.space=function(t){var e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}},i.code=function(t){var e=this.rules.block.code.exec(t);if(e){var i=e[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?i:A(i,"\n")}}},i.fences=function(t){var e=this.rules.block.fences.exec(t);if(e){var i=e[0],n=function(t,e){var i=t.match(/^(\s+)(?:```)/);if(null===i)return e;var n=i[1];return e.split("\n").map(function(t){var e=t.match(/^\s+/);return null===e?t:e[0].length>=n.length?t.slice(n.length):t}).join("\n")}(i,e[3]||"");return{type:"code",raw:i,lang:e[2]?e[2].trim().replace(this.rules.inline._escapes,"$1"):e[2],text:n}}},i.heading=function(t){var e=this.rules.block.heading.exec(t);if(e){var i=e[2].trim();if(/#$/.test(i)){var n=A(i,"#");this.options.pedantic?i=n.trim():n&&!/ $/.test(n)||(i=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:i,tokens:this.lexer.inline(i)}}},i.hr=function(t){var e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:e[0]}},i.blockquote=function(t){var e=this.rules.block.blockquote.exec(t);if(e){var i=e[0].replace(/^ *>[ \t]?/gm,""),n=this.lexer.state.top;this.lexer.state.top=!0;var r=this.lexer.blockTokens(i);return this.lexer.state.top=n,{type:"blockquote",raw:e[0],tokens:r,text:i}}},i.list=function(t){var e=this.rules.block.list.exec(t);if(e){var i,n,r,o,a,s,c,l,p,d,u,h,m=e[1].trim(),g=m.length>1,f={type:"list",raw:"",ordered:g,start:g?+m.slice(0,-1):"",loose:!1,items:[]};m=g?"\\d{1,9}\\"+m.slice(-1):"\\"+m,this.options.pedantic&&(m=g?m:"[*+-]");for(var D=new RegExp("^( {0,3}"+m+")((?:[\t ][^\\n]*)?(?:\\n|$))");t&&(h=!1,e=D.exec(t))&&!this.rules.block.hr.test(t);){if(i=e[0],t=t.substring(i.length),l=e[2].split("\n",1)[0].replace(/^\t+/,function(t){return" ".repeat(3*t.length)}),p=t.split("\n",1)[0],this.options.pedantic?(o=2,u=l.trimLeft()):(o=(o=e[2].search(/[^ ]/))>4?1:o,u=l.slice(o),o+=e[1].length),s=!1,!l&&/^ *$/.test(p)&&(i+=p+"\n",t=t.substring(p.length+1),h=!0),!h)for(var y=new RegExp("^ {0,"+Math.min(3,o-1)+"}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))"),v=new RegExp("^ {0,"+Math.min(3,o-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),b=new RegExp("^ {0,"+Math.min(3,o-1)+"}(?:```|~~~)"),T=new RegExp("^ {0,"+Math.min(3,o-1)+"}#");t&&(p=d=t.split("\n",1)[0],this.options.pedantic&&(p=p.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!b.test(p))&&!T.test(p)&&!y.test(p)&&!v.test(t);){if(p.search(/[^ ]/)>=o||!p.trim())u+="\n"+p.slice(o);else{if(s)break;if(l.search(/[^ ]/)>=4)break;if(b.test(l))break;if(T.test(l))break;if(v.test(l))break;u+="\n"+p}s||p.trim()||(s=!0),i+=d+"\n",t=t.substring(d.length+1),l=p.slice(o)}f.loose||(c?f.loose=!0:/\n *\n *$/.test(i)&&(c=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(u))&&(r="[ ] "!==n[0],u=u.replace(/^\[[ xX]\] +/,"")),f.items.push({type:"list_item",raw:i,task:!!n,checked:r,loose:!1,text:u}),f.raw+=i}f.items[f.items.length-1].raw=i.trimRight(),f.items[f.items.length-1].text=u.trimRight(),f.raw=f.raw.trimRight();var w=f.items.length;for(a=0;a<w;a++)if(this.lexer.state.top=!1,f.items[a].tokens=this.lexer.blockTokens(f.items[a].text,[]),!f.loose){var S=f.items[a].tokens.filter(function(t){return"space"===t.type}),P=S.length>0&&S.some(function(t){return/\n.*\n/.test(t.raw)});f.loose=P}if(f.loose)for(a=0;a<w;a++)f.items[a].loose=!0;return f}},i.html=function(t){var e=this.rules.block.html.exec(t);if(e){var i={type:"html",raw:e[0],pre:!this.options.sanitizer&&("pre"===e[1]||"script"===e[1]||"style"===e[1]),text:e[0]};if(this.options.sanitize){var n=this.options.sanitizer?this.options.sanitizer(e[0]):h(e[0]);i.type="paragraph",i.text=n,i.tokens=this.lexer.inline(n)}return i}},i.def=function(t){var e=this.rules.block.def.exec(t);if(e){var i=e[1].toLowerCase().replace(/\s+/g," "),n=e[2]?e[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",r=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"):e[3];return{type:"def",tag:i,raw:e[0],href:n,title:r}}},i.table=function(t){var e=this.rules.block.table.exec(t);if(e){var i={type:"table",header:I(e[1]).map(function(t){return{text:t}}),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(i.header.length===i.align.length){i.raw=e[0];var n,r,o,a,s=i.align.length;for(n=0;n<s;n++)/^ *-+: *$/.test(i.align[n])?i.align[n]="right":/^ *:-+: *$/.test(i.align[n])?i.align[n]="center":/^ *:-+ *$/.test(i.align[n])?i.align[n]="left":i.align[n]=null;for(s=i.rows.length,n=0;n<s;n++)i.rows[n]=I(i.rows[n],i.header.length).map(function(t){return{text:t}});for(s=i.header.length,r=0;r<s;r++)i.header[r].tokens=this.lexer.inline(i.header[r].text);for(s=i.rows.length,r=0;r<s;r++)for(a=i.rows[r],o=0;o<a.length;o++)a[o].tokens=this.lexer.inline(a[o].text);return i}}},i.lheading=function(t){var e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:"="===e[2].charAt(0)?1:2,text:e[1],tokens:this.lexer.inline(e[1])}},i.paragraph=function(t){var e=this.rules.block.paragraph.exec(t);if(e){var i="\n"===e[1].charAt(e[1].length-1)?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:i,tokens:this.lexer.inline(i)}}},i.text=function(t){var e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}},i.escape=function(t){var e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:h(e[1])}},i.tag=function(t){var e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&/^<a /i.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):h(e[0]):e[0]}},i.link=function(t){var e=this.rules.inline.link.exec(t);if(e){var i=e[2].trim();if(!this.options.pedantic&&/^</.test(i)){if(!/>$/.test(i))return;var n=A(i.slice(0,-1),"\\");if((i.length-n.length)%2==0)return}else{var r=function(t,e){if(-1===t.indexOf(e[1]))return-1;for(var i=t.length,n=0,r=0;r<i;r++)if("\\"===t[r])r++;else if(t[r]===e[0])n++;else if(t[r]===e[1]&&--n<0)return r;return-1}(e[2],"()");if(r>-1){var o=(0===e[0].indexOf("!")?5:4)+e[1].length+r;e[2]=e[2].substring(0,r),e[0]=e[0].substring(0,o).trim(),e[3]=""}}var a=e[2],s="";if(this.options.pedantic){var c=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);c&&(a=c[1],s=c[3])}else s=e[3]?e[3].slice(1,-1):"";return a=a.trim(),/^</.test(a)&&(a=this.options.pedantic&&!/>$/.test(i)?a.slice(1):a.slice(1,-1)),F(e,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:s?s.replace(this.rules.inline._escapes,"$1"):s},e[0],this.lexer)}},i.reflink=function(t,e){var i;if((i=this.rules.inline.reflink.exec(t))||(i=this.rules.inline.nolink.exec(t))){var n=(i[2]||i[1]).replace(/\s+/g," ");if(!(n=e[n.toLowerCase()])){var r=i[0].charAt(0);return{type:"text",raw:r,text:r}}return F(i,n,i[0],this.lexer)}},i.emStrong=function(t,e,i){void 0===i&&(i="");var n=this.rules.inline.emStrong.lDelim.exec(t);if(n&&(!n[3]||!i.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=n[1]||n[2]||"";if(!r||r&&(""===i||this.rules.inline.punctuation.exec(i))){var o,a,s=n[0].length-1,c=s,l=0,p="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(p.lastIndex=0,e=e.slice(-1*t.length+s);null!=(n=p.exec(e));)if(o=n[1]||n[2]||n[3]||n[4]||n[5]||n[6])if(a=o.length,n[3]||n[4])c+=a;else if(!((n[5]||n[6])&&s%3)||(s+a)%3){if(!((c-=a)>0)){a=Math.min(a,a+c+l);var d=t.slice(0,s+n.index+(n[0].length-o.length)+a);if(Math.min(s,a)%2){var u=d.slice(1,-1);return{type:"em",raw:d,text:u,tokens:this.lexer.inlineTokens(u)}}var h=d.slice(2,-2);return{type:"strong",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}else l+=a}}},i.codespan=function(t){var e=this.rules.inline.code.exec(t);if(e){var i=e[2].replace(/\n/g," "),n=/[^ ]/.test(i),r=/^ /.test(i)&&/ $/.test(i);return n&&r&&(i=i.substring(1,i.length-1)),i=h(i,!0),{type:"codespan",raw:e[0],text:i}}},i.br=function(t){var e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}},i.del=function(t){var e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}},i.autolink=function(t,e){var i,n,r=this.rules.inline.autolink.exec(t);if(r)return n="@"===r[2]?"mailto:"+(i=h(this.options.mangle?e(r[1]):r[1])):i=h(r[1]),{type:"link",raw:r[0],text:i,href:n,tokens:[{type:"text",raw:i,text:i}]}},i.url=function(t,e){var i;if(i=this.rules.inline.url.exec(t)){var n,r;if("@"===i[2])r="mailto:"+(n=h(this.options.mangle?e(i[0]):i[0]));else{var o;do{o=i[0],i[0]=this.rules.inline._backpedal.exec(i[0])[0]}while(o!==i[0]);n=h(i[0]),r="www."===i[1]?"http://"+i[0]:i[0]}return{type:"link",raw:i[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},i.inlineText=function(t,e){var i,n=this.rules.inline.text.exec(t);if(n)return i=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):h(n[0]):n[0]:h(this.options.smartypants?e(n[0]):n[0]),{type:"text",raw:n[0],text:i}},e}(),M={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:x,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};M.def=D(M.def).replace("label",M._label).replace("title",M._title).getRegex(),M.bullet=/(?:[*+-]|\d{1,9}[.)])/,M.listItemStart=D(/^( *)(bull) */).replace("bull",M.bullet).getRegex(),M.list=D(M.list).replace(/bull/g,M.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+M.def.source+")").getRegex(),M._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",M._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,M.html=D(M.html,"i").replace("comment",M._comment).replace("tag",M._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),M.paragraph=D(M._paragraph).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",M._tag).getRegex(),M.blockquote=D(M.blockquote).replace("paragraph",M.paragraph).getRegex(),M.normal=i({},M),M.gfm=i({},M.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),M.gfm.table=D(M.gfm.table).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",M._tag).getRegex(),M.gfm.paragraph=D(M._paragraph).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",M.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",M._tag).getRegex(),M.pedantic=i({},M.normal,{html:D("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",M._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:x,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:D(M.normal._paragraph).replace("hr",M.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",M.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var E={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:x,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:x,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};function H(t){return t.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")}function L(t){var e,i,n="",r=t.length;for(e=0;e<r;e++)i=t.charCodeAt(e),Math.random()>.5&&(i="x"+i.toString(16)),n+="&#"+i+";";return n}E._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",E.punctuation=D(E.punctuation).replace(/punctuation/g,E._punctuation).getRegex(),E.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,E.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,E._comment=D(M._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),E.emStrong.lDelim=D(E.emStrong.lDelim).replace(/punct/g,E._punctuation).getRegex(),E.emStrong.rDelimAst=D(E.emStrong.rDelimAst,"g").replace(/punct/g,E._punctuation).getRegex(),E.emStrong.rDelimUnd=D(E.emStrong.rDelimUnd,"g").replace(/punct/g,E._punctuation).getRegex(),E._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,E._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,E._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,E.autolink=D(E.autolink).replace("scheme",E._scheme).replace("email",E._email).getRegex(),E._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,E.tag=D(E.tag).replace("comment",E._comment).replace("attribute",E._attribute).getRegex(),E._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,E._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,E._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,E.link=D(E.link).replace("label",E._label).replace("href",E._href).replace("title",E._title).getRegex(),E.reflink=D(E.reflink).replace("label",E._label).replace("ref",M._label).getRegex(),E.nolink=D(E.nolink).replace("ref",M._label).getRegex(),E.reflinkSearch=D(E.reflinkSearch,"g").replace("reflink",E.reflink).replace("nolink",E.nolink).getRegex(),E.normal=i({},E),E.pedantic=i({},E.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:D(/^!?\[(label)\]\((.*?)\)/).replace("label",E._label).getRegex(),reflink:D(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",E._label).getRegex()}),E.gfm=i({},E.normal,{escape:D(E.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/}),E.gfm.url=D(E.gfm.url,"i").replace("email",E.gfm._extended_email).getRegex(),E.breaks=i({},E.gfm,{br:D(E.br).replace("{2,}","*").getRegex(),text:D(E.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var _=function(){function i(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||t.defaults,this.options.tokenizer=this.options.tokenizer||new R,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var i={block:M.normal,inline:E.normal};this.options.pedantic?(i.block=M.pedantic,i.inline=E.pedantic):this.options.gfm&&(i.block=M.gfm,this.options.breaks?i.inline=E.breaks:i.inline=E.gfm),this.tokenizer.rules=i}i.lex=function(t,e){return new i(e).lex(t)},i.lexInline=function(t,e){return new i(e).inlineTokens(t)};var n,r,o,a=i.prototype;return a.lex=function(t){var e;for(t=t.replace(/\r\n|\r/g,"\n"),this.blockTokens(t,this.tokens);e=this.inlineQueue.shift();)this.inlineTokens(e.src,e.tokens);return this.tokens},a.blockTokens=function(t,e){var i,n,r,o,a=this;for(void 0===e&&(e=[]),t=this.options.pedantic?t.replace(/\t/g," ").replace(/^ +$/gm,""):t.replace(/^( *)(\t+)/gm,function(t,e,i){return e+" ".repeat(i.length)});t;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(function(n){return!!(i=n.call({lexer:a},t,e))&&(t=t.substring(i.raw.length),e.push(i),!0)})))if(i=this.tokenizer.space(t))t=t.substring(i.raw.length),1===i.raw.length&&e.length>0?e[e.length-1].raw+="\n":e.push(i);else if(i=this.tokenizer.code(t))t=t.substring(i.raw.length),!(n=e[e.length-1])||"paragraph"!==n.type&&"text"!==n.type?e.push(i):(n.raw+="\n"+i.raw,n.text+="\n"+i.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(i=this.tokenizer.fences(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.heading(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.hr(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.blockquote(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.list(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.html(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.def(t))t=t.substring(i.raw.length),!(n=e[e.length-1])||"paragraph"!==n.type&&"text"!==n.type?this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title}):(n.raw+="\n"+i.raw,n.text+="\n"+i.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(i=this.tokenizer.table(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.lheading(t))t=t.substring(i.raw.length),e.push(i);else if(r=t,this.options.extensions&&this.options.extensions.startBlock&&function(){var e=1/0,i=t.slice(1),n=void 0;a.options.extensions.startBlock.forEach(function(t){"number"==typeof(n=t.call({lexer:this},i))&&n>=0&&(e=Math.min(e,n))}),e<1/0&&e>=0&&(r=t.substring(0,e+1))}(),this.state.top&&(i=this.tokenizer.paragraph(r)))n=e[e.length-1],o&&"paragraph"===n.type?(n.raw+="\n"+i.raw,n.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):e.push(i),o=r.length!==t.length,t=t.substring(i.raw.length);else if(i=this.tokenizer.text(t))t=t.substring(i.raw.length),(n=e[e.length-1])&&"text"===n.type?(n.raw+="\n"+i.raw,n.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):e.push(i);else if(t){var s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}throw new Error(s)}return this.state.top=!0,e},a.inline=function(t,e){return void 0===e&&(e=[]),this.inlineQueue.push({src:t,tokens:e}),e},a.inlineTokens=function(t,e){var i,n,r,o=this;void 0===e&&(e=[]);var a,s,c,l=t;if(this.tokens.links){var p=Object.keys(this.tokens.links);if(p.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(l));)p.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,a.index)+"["+C("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,a.index)+"["+C("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(a=this.tokenizer.rules.inline.escapedEmSt.exec(l));)l=l.slice(0,a.index+a[0].length-2)+"++"+l.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;t;)if(s||(c=""),s=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(function(n){return!!(i=n.call({lexer:o},t,e))&&(t=t.substring(i.raw.length),e.push(i),!0)})))if(i=this.tokenizer.escape(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.tag(t))t=t.substring(i.raw.length),(n=e[e.length-1])&&"text"===i.type&&"text"===n.type?(n.raw+=i.raw,n.text+=i.text):e.push(i);else if(i=this.tokenizer.link(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.reflink(t,this.tokens.links))t=t.substring(i.raw.length),(n=e[e.length-1])&&"text"===i.type&&"text"===n.type?(n.raw+=i.raw,n.text+=i.text):e.push(i);else if(i=this.tokenizer.emStrong(t,l,c))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.codespan(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.br(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.del(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.autolink(t,L))t=t.substring(i.raw.length),e.push(i);else if(this.state.inLink||!(i=this.tokenizer.url(t,L))){if(r=t,this.options.extensions&&this.options.extensions.startInline&&function(){var e=1/0,i=t.slice(1),n=void 0;o.options.extensions.startInline.forEach(function(t){"number"==typeof(n=t.call({lexer:this},i))&&n>=0&&(e=Math.min(e,n))}),e<1/0&&e>=0&&(r=t.substring(0,e+1))}(),i=this.tokenizer.inlineText(r,H))t=t.substring(i.raw.length),"_"!==i.raw.slice(-1)&&(c=i.raw.slice(-1)),s=!0,(n=e[e.length-1])&&"text"===n.type?(n.raw+=i.raw,n.text+=i.text):e.push(i);else if(t){var d="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}else t=t.substring(i.raw.length),e.push(i);return e},n=i,o=[{key:"rules",get:function(){return{block:M,inline:E}}}],(r=null)&&e(n.prototype,r),o&&e(n,o),Object.defineProperty(n,"prototype",{writable:!1}),i}(),V=function(){function e(e){this.options=e||t.defaults}var i=e.prototype;return i.code=function(t,e,i){var n=(e||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(t,n);null!=r&&r!==t&&(i=!0,t=r)}return t=t.replace(/\n$/,"")+"\n",n?'<pre><code class="'+this.options.langPrefix+h(n)+'">'+(i?t:h(t,!0))+"</code></pre>\n":"<pre><code>"+(i?t:h(t,!0))+"</code></pre>\n"},i.blockquote=function(t){return"<blockquote>\n"+t+"</blockquote>\n"},i.html=function(t){return t},i.heading=function(t,e,i,n){return this.options.headerIds?"<h"+e+' id="'+(this.options.headerPrefix+n.slug(i))+'">'+t+"</h"+e+">\n":"<h"+e+">"+t+"</h"+e+">\n"},i.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},i.list=function(t,e,i){var n=e?"ol":"ul";return"<"+n+(e&&1!==i?' start="'+i+'"':"")+">\n"+t+"</"+n+">\n"},i.listitem=function(t){return"<li>"+t+"</li>\n"},i.checkbox=function(t){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},i.paragraph=function(t){return"<p>"+t+"</p>\n"},i.table=function(t,e){return e&&(e="<tbody>"+e+"</tbody>"),"<table>\n<thead>\n"+t+"</thead>\n"+e+"</table>\n"},i.tablerow=function(t){return"<tr>\n"+t+"</tr>\n"},i.tablecell=function(t,e){var i=e.header?"th":"td";return(e.align?"<"+i+' align="'+e.align+'">':"<"+i+">")+t+"</"+i+">\n"},i.strong=function(t){return"<strong>"+t+"</strong>"},i.em=function(t){return"<em>"+t+"</em>"},i.codespan=function(t){return"<code>"+t+"</code>"},i.br=function(){return this.options.xhtml?"<br/>":"<br>"},i.del=function(t){return"<del>"+t+"</del>"},i.link=function(t,e,i){if(null===(t=b(this.options.sanitize,this.options.baseUrl,t)))return i;var n='<a href="'+t+'"';return e&&(n+=' title="'+e+'"'),n+=">"+i+"</a>"},i.image=function(t,e,i){if(null===(t=b(this.options.sanitize,this.options.baseUrl,t)))return i;var n='<img src="'+t+'" alt="'+i+'"';return e&&(n+=' title="'+e+'"'),n+=this.options.xhtml?"/>":">"},i.text=function(t){return t},e}(),k=function(){function t(){}var e=t.prototype;return e.strong=function(t){return t},e.em=function(t){return t},e.codespan=function(t){return t},e.del=function(t){return t},e.html=function(t){return t},e.text=function(t){return t},e.link=function(t,e,i){return""+i},e.image=function(t,e,i){return""+i},e.br=function(){return""},t}(),O=function(){function t(){this.seen={}}var e=t.prototype;return e.serialize=function(t){return t.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},e.getNextSafeSlug=function(t,e){var i=t,n=0;if(this.seen.hasOwnProperty(i)){n=this.seen[t];do{i=t+"-"+ ++n}while(this.seen.hasOwnProperty(i))}return e||(this.seen[t]=n,this.seen[i]=0),i},e.slug=function(t,e){void 0===e&&(e={});var i=this.serialize(t);return this.getNextSafeSlug(i,e.dryrun)},t}(),U=function(){function e(e){this.options=e||t.defaults,this.options.renderer=this.options.renderer||new V,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new k,this.slugger=new O}e.parse=function(t,i){return new e(i).parse(t)},e.parseInline=function(t,i){return new e(i).parseInline(t)};var i=e.prototype;return i.parse=function(t,e){void 0===e&&(e=!0);var i,n,r,o,a,s,c,l,p,d,u,h,m,f,D,y,v,b,T,w="",S=t.length;for(i=0;i<S;i++)if(d=t[i],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[d.type])||!1===(T=this.options.extensions.renderers[d.type].call({parser:this},d))&&["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(d.type))switch(d.type){case"space":continue;case"hr":w+=this.renderer.hr();continue;case"heading":w+=this.renderer.heading(this.parseInline(d.tokens),d.depth,g(this.parseInline(d.tokens,this.textRenderer)),this.slugger);continue;case"code":w+=this.renderer.code(d.text,d.lang,d.escaped);continue;case"table":for(l="",c="",o=d.header.length,n=0;n<o;n++)c+=this.renderer.tablecell(this.parseInline(d.header[n].tokens),{header:!0,align:d.align[n]});for(l+=this.renderer.tablerow(c),p="",o=d.rows.length,n=0;n<o;n++){for(c="",a=(s=d.rows[n]).length,r=0;r<a;r++)c+=this.renderer.tablecell(this.parseInline(s[r].tokens),{header:!1,align:d.align[r]});p+=this.renderer.tablerow(c)}w+=this.renderer.table(l,p);continue;case"blockquote":p=this.parse(d.tokens),w+=this.renderer.blockquote(p);continue;case"list":for(u=d.ordered,h=d.start,m=d.loose,o=d.items.length,p="",n=0;n<o;n++)y=(D=d.items[n]).checked,v=D.task,f="",D.task&&(b=this.renderer.checkbox(y),m?D.tokens.length>0&&"paragraph"===D.tokens[0].type?(D.tokens[0].text=b+" "+D.tokens[0].text,D.tokens[0].tokens&&D.tokens[0].tokens.length>0&&"text"===D.tokens[0].tokens[0].type&&(D.tokens[0].tokens[0].text=b+" "+D.tokens[0].tokens[0].text)):D.tokens.unshift({type:"text",text:b}):f+=b),f+=this.parse(D.tokens,m),p+=this.renderer.listitem(f,v,y);w+=this.renderer.list(p,u,h);continue;case"html":w+=this.renderer.html(d.text);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(d.tokens));continue;case"text":for(p=d.tokens?this.parseInline(d.tokens):d.text;i+1<S&&"text"===t[i+1].type;)p+="\n"+((d=t[++i]).tokens?this.parseInline(d.tokens):d.text);w+=e?this.renderer.paragraph(p):p;continue;default:var P='Token with "'+d.type+'" type was not found.';if(this.options.silent)return void console.error(P);throw new Error(P)}else w+=T||"";return w},i.parseInline=function(t,e){e=e||this.renderer;var i,n,r,o="",a=t.length;for(i=0;i<a;i++)if(n=t[i],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[n.type])||!1===(r=this.options.extensions.renderers[n.type].call({parser:this},n))&&["escape","html","link","image","strong","em","codespan","br","del","text"].includes(n.type))switch(n.type){case"escape":case"text":o+=e.text(n.text);break;case"html":o+=e.html(n.text);break;case"link":o+=e.link(n.href,n.title,this.parseInline(n.tokens,e));break;case"image":o+=e.image(n.href,n.title,n.text);break;case"strong":o+=e.strong(this.parseInline(n.tokens,e));break;case"em":o+=e.em(this.parseInline(n.tokens,e));break;case"codespan":o+=e.codespan(n.text);break;case"br":o+=e.br();break;case"del":o+=e.del(this.parseInline(n.tokens,e));break;default:var s='Token with "'+n.type+'" type was not found.';if(this.options.silent)return void console.error(s);throw new Error(s)}else o+=r||"";return o},e}(),j=function(){function e(e){this.options=e||t.defaults}var i=e.prototype;return i.preprocess=function(t){return t},i.postprocess=function(t){return t},e}();function B(t,e){return function(n,r,o){"function"==typeof r&&(o=r,r=null);var a=i({},r),s=function(t,e,i){return function(n){if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",t){var r="<p>An error occurred:</p><pre>"+h(n.message+"",!0)+"</pre>";return e?Promise.resolve(r):i?void i(null,r):r}if(e)return Promise.reject(n);if(!i)throw n;i(n)}}((r=i({},N.defaults,a)).silent,r.async,o);if(null==n)return s(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof n)return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(function(t){t&&t.sanitize&&!t.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}(r),r.hooks&&(r.hooks.options=r),o){var c,l=r.highlight;try{r.hooks&&(n=r.hooks.preprocess(n)),c=t(n,r)}catch(t){return s(t)}var p=function(t){var i;if(!t)try{r.walkTokens&&N.walkTokens(c,r.walkTokens),i=e(c,r),r.hooks&&(i=r.hooks.postprocess(i))}catch(e){t=e}return r.highlight=l,t?s(t):o(null,i)};if(!l||l.length<3)return p();if(delete r.highlight,!c.length)return p();var d=0;return N.walkTokens(c,function(t){"code"===t.type&&(d++,setTimeout(function(){l(t.text,t.lang,function(e,i){if(e)return p(e);null!=i&&i!==t.text&&(t.text=i,t.escaped=!0),0===--d&&p()})},0))}),void(0===d&&p())}if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(n):n).then(function(e){return t(e,r)}).then(function(t){return r.walkTokens?Promise.all(N.walkTokens(t,r.walkTokens)).then(function(){return t}):t}).then(function(t){return e(t,r)}).then(function(t){return r.hooks?r.hooks.postprocess(t):t}).catch(s);try{r.hooks&&(n=r.hooks.preprocess(n));var u=t(n,r);r.walkTokens&&N.walkTokens(u,r.walkTokens);var m=e(u,r);return r.hooks&&(m=r.hooks.postprocess(m)),m}catch(t){return s(t)}}}function N(t,e,i){return B(_.lex,U.parse)(t,e,i)}j.passThroughHooks=new Set(["preprocess","postprocess"]),N.options=N.setOptions=function(e){var n;return N.defaults=i({},N.defaults,e),n=N.defaults,t.defaults=n,N},N.getDefaults=a,N.defaults=t.defaults,N.use=function(){for(var t=N.defaults.extensions||{renderers:{},childTokens:{}},e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.forEach(function(e){var n=i({},e);if(n.async=N.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(function(e){if(!e.name)throw new Error("extension name required");if(e.renderer){var i=t.renderers[e.name];t.renderers[e.name]=i?function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var o=e.renderer.apply(this,n);return!1===o&&(o=i.apply(this,n)),o}:e.renderer}if(e.tokenizer){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");t[e.level]?t[e.level].unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer&&function(){var t=N.defaults.renderer||new V,i=function(i){var n=t[i];t[i]=function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var s=e.renderer[i].apply(t,o);return!1===s&&(s=n.apply(t,o)),s}};for(var r in e.renderer)i(r);n.renderer=t}(),e.tokenizer&&function(){var t=N.defaults.tokenizer||new R,i=function(i){var n=t[i];t[i]=function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var s=e.tokenizer[i].apply(t,o);return!1===s&&(s=n.apply(t,o)),s}};for(var r in e.tokenizer)i(r);n.tokenizer=t}(),e.hooks&&function(){var t=N.defaults.hooks||new j,i=function(i){var n=t[i];j.passThroughHooks.has(i)?t[i]=function(r){if(N.defaults.async)return Promise.resolve(e.hooks[i].call(t,r)).then(function(e){return n.call(t,e)});var o=e.hooks[i].call(t,r);return n.call(t,o)}:t[i]=function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var s=e.hooks[i].apply(t,o);return!1===s&&(s=n.apply(t,o)),s}};for(var r in e.hooks)i(r);n.hooks=t}(),e.walkTokens){var r=N.defaults.walkTokens;n.walkTokens=function(t){var i=[];return i.push(e.walkTokens.call(this,t)),r&&(i=i.concat(r.call(this,t))),i}}N.setOptions(n)})},N.walkTokens=function(t,e){for(var i,n=[],o=function(){var t=i.value;switch(n=n.concat(e.call(N,t)),t.type){case"table":for(var o,a=r(t.header);!(o=a()).done;){var s=o.value;n=n.concat(N.walkTokens(s.tokens,e))}for(var c,l=r(t.rows);!(c=l()).done;)for(var p,d=r(c.value);!(p=d()).done;){var u=p.value;n=n.concat(N.walkTokens(u.tokens,e))}break;case"list":n=n.concat(N.walkTokens(t.items,e));break;default:N.defaults.extensions&&N.defaults.extensions.childTokens&&N.defaults.extensions.childTokens[t.type]?N.defaults.extensions.childTokens[t.type].forEach(function(i){n=n.concat(N.walkTokens(t[i],e))}):t.tokens&&(n=n.concat(N.walkTokens(t.tokens,e)))}},a=r(t);!(i=a()).done;)o();return n},N.parseInline=B(_.lexInline,U.parseInline),N.Parser=U,N.parser=U.parse,N.Renderer=V,N.TextRenderer=k,N.Lexer=_,N.lexer=_.lex,N.Tokenizer=R,N.Slugger=O,N.Hooks=j,N.parse=N;var G=N.options,z=N.setOptions,q=N.use,W=N.walkTokens,J=N.parseInline,K=N,$=U.parse,Y=_.lex;t.Hooks=j,t.Lexer=_,t.Parser=U,t.Renderer=V,t.Slugger=O,t.TextRenderer=k,t.Tokenizer=R,t.getDefaults=a,t.lexer=Y,t.marked=N,t.options=G,t.parse=K,t.parseInline=J,t.parser=$,t.setOptions=z,t.use=q,t.walkTokens=W})},{}],5:[function(t,e,i){e.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:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{"fable-serviceproviderbase":"^3.0.19"}}},{}],6:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../package.json"),o={Name:"DefaultPictApplication",MainViewportViewIdentifier:"Default-View",MainViewportRenderableHash:!1,MainViewportDestinationAddress:!1,MainViewportDefaultDataAddress:!1,AutoSolveAfterInitialize:!0,AutoRenderMainViewportViewAfterInitialize:!0,AutoRenderViewsAfterInitialize:!1,AutoLoginAfterInitialize:!1,AutoLoadDataAfterLogin:!1,ConfigurationOnlyViews:[],Manifests:{},IdentifierAddressPrefix:"PICT-"};e.exports=class extends n{constructor(t,e,i){let n="object"==typeof t.settings.PictApplicationConfiguration?t.settings.PictApplicationConfiguration:{};super(t,Object.assign({},JSON.parse(JSON.stringify(o)),n,e),i),this.options,this.log,this.fable,this.UUID,this.Hash,this.servicesMap,this.serviceType="PictApplication",this._Package=r,this.pict=this.fable,this.AppData=this.fable.AppData,this.Bundle=this.fable.Bundle,this.initializeTimestamp,this.lastSolvedTimestamp,this.lastLoginTimestamp,this.lastMarshalFromViewsTimestamp,this.lastMarshalToViewsTimestamp,this.lastAutoRenderTimestamp,this.lastLoadDataTimestamp;let a=Object.keys(this.options.Manifests);if(a.length>0)for(let t=0;t<a.length;t++){let e=a[t];this.fable.instantiateServiceProvider("Manifest",this.options.Manifests[e],e)}}onPreSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onPreSolve:")),!0}onPreSolveAsync(t){return this.onPreSolve(),t()}onBeforeSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeSolve:")),!0}onBeforeSolveAsync(t){return this.onBeforeSolve(),t()}onSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onSolve:")),!0}onSolveAsync(t){return this.onSolve(),t()}solve(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing solve() function..."));let t=Object.keys(this.pict.providers),e=[];for(let i=0;i<t.length;i++){let n=this.pict.providers[t[i]];n.options.AutoSolveWithApp&&e.push(n)}e.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<e.length;t++)e[t].solve(e[t]);this.onBeforeSolve();let i=Object.keys(this.pict.views),n=[];for(let t=0;t<i.length;t++){let e=this.pict.views[i[t]];e.options.AutoInitialize&&n.push(e)}n.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<n.length;t++)n[t].solve();return this.onSolve(),this.onAfterSolve(),this.lastSolvedTimestamp=this.fable.log.getTimeStamp(),!0}solveAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");e.anticipate(this.onBeforeSolveAsync.bind(this));let i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync Auto Callback Error: ").concat(t),t)});let n=Object.keys(this.pict.providers),r=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoSolveWithApp&&r.push(e)}r.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<r.length;t++)e.anticipate(r[t].solveAsync.bind(r[t]));let o=Object.keys(this.pict.views),a=[];for(let t=0;t<o.length;t++){let e=this.pict.views[o[t]];e.options.AutoSolveWithApp&&a.push(e)}a.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<a.length;t++)e.anticipate(a[t].solveAsync.bind(a[t]));e.anticipate(this.onSolveAsync.bind(this)),e.anticipate(this.onAfterSolveAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync() complete.")),this.lastSolvedTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterSolve:")),!0}onAfterSolveAsync(t){return this.onAfterSolve(),t()}onBeforeLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeLoginAsync:")),t()}onLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onLoginAsync:")),t()}loginAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let i=t;"function"!=typeof i&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeLoginAsync.bind(this)),e.anticipate(this.onLoginAsync.bind(this)),e.anticipate(this.onAfterLoginAsync.bind(this)),this.options.AutoLoadDataAfterLogin&&e.anticipate(t=>{if(!this.isLoggedIn())return t();this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto loading data after login...")),this.loadDataAsync(e=>{t(e)})}),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync() complete.")),this.lastLoginTimestamp=this.fable.log.getTimeStamp(),i(t)))}isLoggedIn(){return!0}onAfterLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterLoginAsync:")),t()}onBeforeLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeLoadDataAsync:")),t()}onLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onLoadDataAsync:")),t()}loadDataAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let i=t;"function"!=typeof i&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeLoadDataAsync.bind(this));let n=Object.keys(this.pict.providers),r=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoLoadDataWithApp&&r.push(e)}r.sort((t,e)=>t.options.AutoLoadDataOrdinal-e.options.AutoLoadDataOrdinal);for(const t of r)e.anticipate(t.onBeforeLoadDataAsync.bind(t));e.anticipate(this.onLoadDataAsync.bind(this));for(const t of r)e.anticipate(t.onLoadDataAsync.bind(t));e.anticipate(this.onAfterLoadDataAsync.bind(this));for(const t of r)e.anticipate(t.onAfterLoadDataAsync.bind(t));e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync() complete.")),this.lastLoadDataTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterLoadDataAsync:")),t()}onBeforeSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeSaveDataAsync:")),t()}onSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onSaveDataAsync:")),t()}saveDataAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let i=t;"function"!=typeof i&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeSaveDataAsync.bind(this));let n=Object.keys(this.pict.providers),r=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoSaveDataWithApp&&r.push(e)}r.sort((t,e)=>t.options.AutoSaveDataOrdinal-e.options.AutoSaveDataOrdinal);for(const t of r)e.anticipate(t.onBeforeSaveDataAsync.bind(t));e.anticipate(this.onSaveDataAsync.bind(this));for(const t of r)e.anticipate(t.onSaveDataAsync.bind(t));e.anticipate(this.onAfterSaveDataAsync.bind(this));for(const t of r)e.anticipate(t.onAfterSaveDataAsync.bind(t));e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync() complete.")),this.lastSaveDataTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterSaveDataAsync:")),t()}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialize:")),this.initializeTimestamp)return this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialize called but initialization is already completed. Aborting.")),!1;{if(this.onBeforeInitialize(),"ConfigurationOnlyViews"in this.options)for(let t=0;t<this.options.ConfigurationOnlyViews.length;t++){let e=void 0===this.options.ConfigurationOnlyViews[t].ViewIdentifier?"AutoView-".concat(this.fable.getUUID()):this.options.ConfigurationOnlyViews[t].ViewIdentifier;this.log.info("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," adding configuration only view: ").concat(e)),this.pict.addView(e,this.options.ConfigurationOnlyViews[t])}this.onInitialize();let t=Object.keys(this.pict.providers),e=[];for(let i=0;i<t.length;i++){let n=this.pict.providers[t[i]];n.options.AutoInitialize&&e.push(n)}e.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<e.length;t++)e[t].initialize();let i=Object.keys(this.pict.views),n=[];for(let t=0;t<i.length;t++){let e=this.pict.views[i[t]];e.options.AutoInitialize&&n.push(e)}n.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<n.length;t++)n[t].initialize();return this.onAfterInitialize(),this.options.AutoSolveAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto solving after initialization...")),this.solve()),this.options.AutoRenderMainViewportViewAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto rendering after initialization...")),this.render()),this.initializeTimestamp=this.fable.log.getTimeStamp(),this.onCompletionOfInitialize(),!0}}initializeAsync(t){this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync:"));let e="function"==typeof t&&t;if(e||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),e=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync Auto Callback Error: ").concat(t),t)}),this.initializeTimestamp)return this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," async initialize called but initialization is already completed. Aborting.")),this.onCompletionOfInitializeAsync(e);{let t=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");if(this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning initialization...")),"ConfigurationOnlyViews"in this.options)for(let t=0;t<this.options.ConfigurationOnlyViews.length;t++){let e=void 0===this.options.ConfigurationOnlyViews[t].ViewIdentifier?"AutoView-".concat(this.fable.getUUID()):this.options.ConfigurationOnlyViews[t].ViewIdentifier;this.log.info("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," adding configuration only view: ").concat(e)),this.pict.addView(e,this.options.ConfigurationOnlyViews[t])}t.anticipate(this.onBeforeInitializeAsync.bind(this)),t.anticipate(this.onInitializeAsync.bind(this));let i=Object.keys(this.pict.providers),n=[];for(let t=0;t<i.length;t++){let e=this.pict.providers[i[t]];e.options.AutoInitialize&&n.push(e)}n.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let e=0;e<n.length;e++)t.anticipate(n[e].initializeAsync.bind(n[e]));let r=Object.keys(this.pict.views),o=[];for(let t=0;t<r.length;t++){let e=this.pict.views[r[t]];e.options.AutoInitialize&&o.push(e)}o.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let e=0;e<o.length;e++){let i=o[e];t.anticipate(i.initializeAsync.bind(i))}t.anticipate(this.onAfterInitializeAsync.bind(this)),this.options.AutoLoginAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto login (asynchronously) after initialization...")),t.anticipate(this.loginAsync.bind(this))),this.options.AutoSolveAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto solving (asynchronously) after initialization...")),t.anticipate(this.solveAsync.bind(this))),this.options.AutoRenderMainViewportViewAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto rendering (asynchronously) after initialization...")),t.anticipate(this.renderMainViewportAsync.bind(this))),t.wait(t=>(t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync Error: ").concat(t.message||t),{stack:t.stack}),this.initializeTimestamp=this.fable.log.getTimeStamp(),this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialization complete.")),e()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onCompletionOfInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onCompletionOfInitialize:")),!0}onCompletionOfInitializeAsync(t){return this.onCompletionOfInitialize(),t()}onBeforeMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeMarshalFromViews:")),!0}onBeforeMarshalFromViewsAsync(t){return this.onBeforeMarshalFromViews(),t()}onMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onMarshalFromViews:")),!0}onMarshalFromViewsAsync(t){return this.onMarshalFromViews(),t()}marshalFromViews(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing marshalFromViews() function...")),this.onBeforeMarshalFromViews();let t=Object.keys(this.pict.views),e=[];for(let i=0;i<t.length;i++){let n=this.pict.views[t[i]];e.push(n)}for(let t=0;t<e.length;t++)e[t].marshalFromView();return this.onMarshalFromViews(),this.onAfterMarshalFromViews(),this.lastMarshalFromViewsTimestamp=this.fable.log.getTimeStamp(),!0}marshalFromViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalFromViewsAsync.bind(this));let n=Object.keys(this.pict.views),r=[];for(let t=0;t<n.length;t++){let e=this.pict.views[n[t]];r.push(e)}for(let t=0;t<r.length;t++)e.anticipate(r[t].marshalFromViewAsync.bind(r[t]));e.anticipate(this.onMarshalFromViewsAsync.bind(this)),e.anticipate(this.onAfterMarshalFromViewsAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync() complete.")),this.lastMarshalFromViewsTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterMarshalFromViews:")),!0}onAfterMarshalFromViewsAsync(t){return this.onAfterMarshalFromViews(),t()}onBeforeMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeMarshalToViews:")),!0}onBeforeMarshalToViewsAsync(t){return this.onBeforeMarshalToViews(),t()}onMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onMarshalToViews:")),!0}onMarshalToViewsAsync(t){return this.onMarshalToViews(),t()}marshalToViews(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing marshalToViews() function...")),this.onBeforeMarshalToViews();let t=Object.keys(this.pict.views),e=[];for(let i=0;i<t.length;i++){let n=this.pict.views[t[i]];e.push(n)}for(let t=0;t<e.length;t++)e[t].marshalToView();return this.onMarshalToViews(),this.onAfterMarshalToViews(),this.lastMarshalToViewsTimestamp=this.fable.log.getTimeStamp(),!0}marshalToViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalToViewsAsync.bind(this));let n=Object.keys(this.pict.views),r=[];for(let t=0;t<n.length;t++){let e=this.pict.views[n[t]];r.push(e)}for(let t=0;t<r.length;t++)e.anticipate(r[t].marshalToViewAsync.bind(r[t]));e.anticipate(this.onMarshalToViewsAsync.bind(this)),e.anticipate(this.onAfterMarshalToViewsAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync() complete.")),this.lastMarshalToViewsTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterMarshalToViews:")),!0}onAfterMarshalToViewsAsync(t){return this.onAfterMarshalToViews(),t()}onBeforeRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeRender:")),!0}onBeforeRenderAsync(t){return this.onBeforeRender(),t()}render(t,e,i,n){let r="string"!=typeof t?this.options.MainViewportViewIdentifier:t,o="string"!=typeof e?this.options.MainViewportRenderableHash:e,a="string"!=typeof i?this.options.MainViewportDestinationAddress:i,s="string"!=typeof n?this.options.MainViewportDefaultDataAddress:n;this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," VIEW Renderable[").concat(o,"] Destination[").concat(a,"] TemplateDataAddress[").concat(s,"] render:")),this.onBeforeRender();let c="string"==typeof r&&this.servicesMap.PictView[r];return c?(this.onRender(),c.render(o,a,s),this.onAfterRender(),!0):(this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," could not render from View ").concat(r," because it is not a valid view.")),!1)}onRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onRender:")),!0}onRenderAsync(t){return this.onRender(),t()}renderAsync(t,e,i,n,r){let o="string"!=typeof t?this.options.MainViewportViewIdentifier:t,a="string"!=typeof e?this.options.MainViewportRenderableHash:e,s="string"!=typeof i?this.options.MainViewportDestinationAddress:i,c="string"!=typeof n?this.options.MainViewportDefaultDataAddress:n,l="function"==typeof r?r:"function"==typeof n?n:"function"==typeof i?i:"function"==typeof e?e:"function"==typeof t&&t;l||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),l=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync Auto Callback Error: ").concat(t),t)}),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," VIEW Renderable[").concat(a,"] Destination[").concat(s,"] TemplateDataAddress[").concat(c,"] renderAsync:"));let p=this.fable.newAnticipate();p.anticipate(this.onBeforeRenderAsync.bind(this));let d="string"==typeof o&&this.servicesMap.PictView[o];if(!d){let t="PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," could not asynchronously render from View ").concat(o," because it is not a valid view.");return this.pict.LogNoisiness>3&&this.log.error(t),l(new Error(t))}return p.anticipate(this.onRenderAsync.bind(this)),p.anticipate(t=>{d.renderAsync.call(d,a,s,c,t)}),p.anticipate(this.onAfterRenderAsync.bind(this)),p.wait(l)}onAfterRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterRender:")),!0}onAfterRenderAsync(t){return this.onAfterRender(),t()}renderMainViewport(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderMainViewport:")),this.render()}renderMainViewportAsync(t){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderMainViewportAsync:")),this.renderAsync(t)}renderAutoViews(){this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning renderAutoViews..."));let t=Object.keys(this.pict.views);t.sort((t,e)=>this.pict.views[t].options.AutoRenderOrdinal-this.pict.views[e].options.AutoRenderOrdinal);for(let e=0;e<t.length;e++){let i=this.pict.views[t[e]];i.options.AutoRender&&i.render()}this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync complete."))}renderAutoViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync Auto Callback Error: ").concat(t),t)}),this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning renderAutoViewsAsync..."));let n=Object.keys(this.pict.views);n.sort((t,e)=>this.pict.views[t].options.AutoRenderOrdinal-this.pict.views[e].options.AutoRenderOrdinal);for(let t=0;t<n.length;t++){let i=this.pict.views[n[t]];i.options.AutoRender&&e.anticipate(i.renderAsync.bind(i))}e.wait(t=>(this.lastAutoRenderTimestamp=this.fable.log.getTimeStamp(),this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync complete.")),i(t)))}get isPictApplication(){return!0}}},{"../package.json":5,"fable-serviceproviderbase":3}],7:[function(t,e,i){
|
|
1
|
+
"use strict";function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray2(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray2(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray2(t,e);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?_arrayLikeToArray2(t,e):void 0}}function _arrayLikeToArray2(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=Array(e);i<e;i++)n[i]=t[i];return n}function _iterableToArrayLimit(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var n,r,o,a,s=[],c=!0,l=!1;try{if(o=(i=i.call(t)).next,0===e){if(Object(i)!==i)return;c=!1}else for(;!(c=(n=o.call(i)).done)&&(s.push(n.value),s.length!==e);c=!0);}catch(t){l=!0,r=t}finally{try{if(!c&&null!=i.return&&(a=i.return(),Object(a)!==a))return}finally{if(l)throw r}}return s}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _defineProperty(t,e,i){return(e=_toPropertyKey2(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function _toPropertyKey2(t){var e=_toPrimitive2(t,"string");return"symbol"==typeof e?e:e+""}function _toPrimitive2(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).RichtextFormExample=t()}}(function(){return function t(e,i,n){function r(a,s){if(!i[a]){if(!e[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var p=i[a]={exports:{}};e[a][0].call(p.exports,function(t){return r(e[a][1][t]||t)},p,p.exports,t,e,i,n)}return i[a].exports}for(var o="function"==typeof require&&require,a=0;a<n.length;a++)r(n[a]);return r}({1:[function(t,e,i){t("pict-application");const n=t("../../source/Pict-Section-Form.js"),r={Body:{Name:"Body",Hash:"Body",DataType:"String",PictForm:{Section:"Article",Row:1,Width:12,InputType:"RichText",RichText:{AllowImages:!0,ImageUploader:"uploadImage",Height:"320px"}}}},o={Scope:"RichTextDemoForm",Sections:[{Hash:"Article",Name:"Article Body"}],Descriptors:r};class a extends n.PictFormApplication{constructor(t,e,i){super(t,e,i);let r=n.RichTextInput;this.pict.addProvider(r.default_configuration.ProviderIdentifier,r.default_configuration,r),this.pict.AppData.RichTextDemoForm={Body:'## Welcome\n\nThis form is in **view** mode by default. Click *Edit* to swap a field into the markdown editor.\n\n- Boot-time DOM is just rendered markdown — no CodeMirror loaded.\n- First `setMode("edit")` lazy-loads the editor bundle.\n- Image uploads are routed through `uploadImage(file, descriptor, cb)`.'},this._imageUploaderEnabled=!0}onAfterInitializeAsync(t){this.pict.views.PictFormMetacontroller&&(this.pict.views.PictFormMetacontroller.viewMarshalDestination="AppData.RichTextDemoForm"),super.onAfterInitializeAsync(()=>{try{this.marshalDataFromAppDataToDynamicViews()}catch(t){this.log&&this.log.warn("[richtext_form] initial marshal failed",{error:t.message})}return t()})}uploadImage(t,e,i){return!!this._imageUploaderEnabled&&(setTimeout(()=>{let e="/uploads/"+Date.now()+"-"+(t.name||"image.png").replace(/[^A-Za-z0-9._-]/g,"_");i(null,e),this.log&&this.log.info("[richtext_form demo] uploadImage resolved",{url:e})},600),!0)}demo_toggleMode(t){let e=this.pict.providers["Pict-Input-RichText"];e&&e.toggleMode(t,e=>{e&&this.log&&this.log.warn("[richtext_form demo] toggleMode error",{error:e.message}),this._refreshModeLabel(t)})}demo_setAllowImages(t,e){let i=r[t];i&&(i.PictForm.RichText.AllowImages=!!e)}demo_setUploaderEnabled(t){this._imageUploaderEnabled=!!t}_refreshModeLabel(t){let e=this.pict.providers["Pict-Input-RichText"];if(!e)return;let i="edit"===e.getMode(t)?"Done":"Edit",n="undefined"!=typeof document?document.getElementById("toggle-"+t):null;n&&(n.textContent=i)}}e.exports=a,e.exports.default_configuration=Object.assign({},n.PictFormApplication.default_configuration,{Name:"RichText Form Example",Hash:"RichTextFormExample",pict_configuration:{Product:"RichTextForm-Example",DefaultFormManifest:o}})},{"../../source/Pict-Section-Form.js":40,"pict-application":6}],2:[function(t,e,i){e.exports={name:"fable-serviceproviderbase",version:"3.0.19",description:"Simple base classes for fable services.",main:"source/Fable-ServiceProviderBase.js",scripts:{start:"node source/Fable-ServiceProviderBase.js",test:"npx quack test",tests:"npx quack test -g",coverage:"npx quack coverage",build:"npx quack build",types:"tsc -p ./tsconfig.build.json",check:"tsc -p . --noEmit"},types:"types/source/Fable-ServiceProviderBase.d.ts",mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},repository:{type:"git",url:"https://github.com/stevenvelozo/fable-serviceproviderbase.git"},keywords:["entity","behavior"],author:"Steven Velozo <steven@velozo.com> (http://velozo.com/)",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/fable-serviceproviderbase/issues"},homepage:"https://github.com/stevenvelozo/fable-serviceproviderbase",devDependencies:{"@types/mocha":"^10.0.10",fable:"^3.1.62",quackage:"^1.0.58",typescript:"^5.9.3"}}},{}],3:[function(t,e,i){const n=t("../package.json");class r{constructor(t,e,i){this.fable,this.UUID,this.options,this.services,this.servicesMap,"object"==typeof t&&t.isFable?this.connectFable(t):this.fable=!1,this._PackageFableServiceProvider=n,this.fable?(this.UUID=t.getUUID(),this.options="object"==typeof e?e:{}):(this.options="object"!=typeof t||t.isFable?"object"==typeof e?e:{}:t,this.UUID="CORE-SVC-".concat(Math.floor(89999*Math.random()+1e4))),this.serviceType="Unknown-".concat(this.UUID),this.Hash="string"==typeof i?i:this.fable||"string"!=typeof e?"".concat(this.UUID):e}connectFable(t){if("object"!=typeof t||!t.isFable){let e="Fable Service Provider Base: Cannot connect to Fable, invalid Fable object passed in. The pFable parameter was a [".concat(typeof t,"].}");return console.log(e),new Error(e)}return this.fable||(this.fable=t),this.log||(this.log=this.fable.Logging),this.services||(this.services=this.fable.services),this.servicesMap||(this.servicesMap=this.fable.servicesMap),!0}}_defineProperty(r,"isFableService",!0),e.exports=r,e.exports.CoreServiceProviderBase=r},{"../package.json":2}],4:[function(t,e,i){!function(t,n){"object"==typeof i&&void 0!==e?n(i):n((t="undefined"!=typeof globalThis?globalThis:t||self).marked={})}(this,function(t){function e(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function i(){return i=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},i.apply(this,arguments)}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}function r(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(i)return(i=i.call(t)).next.bind(i);if(Array.isArray(t)||(i=function(t,e){if(t){if("string"==typeof t)return n(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?n(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}function a(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}t.defaults={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};var s=/[&<>"']/,c=new RegExp(s.source,"g"),l=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,p=new RegExp(l.source,"g"),d={"&":"&","<":"<",">":">",'"':""","'":"'"},u=function(t){return d[t]};function h(t,e){if(e){if(s.test(t))return t.replace(c,u)}else if(l.test(t))return t.replace(p,u);return t}var m=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function g(t){return t.replace(m,function(t,e){return"colon"===(e=e.toLowerCase())?":":"#"===e.charAt(0)?"x"===e.charAt(1)?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):""})}var f=/(^|[^\[])\^/g;function D(t,e){t="string"==typeof t?t:t.source,e=e||"";var i={replace:function(e,n){return n=(n=n.source||n).replace(f,"$1"),t=t.replace(e,n),i},getRegex:function(){return new RegExp(t,e)}};return i}var y=/[^\w:]/g,v=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function b(t,e,i){if(t){var n;try{n=decodeURIComponent(g(i)).replace(y,"").toLowerCase()}catch(t){return null}if(0===n.indexOf("javascript:")||0===n.indexOf("vbscript:")||0===n.indexOf("data:"))return null}e&&!v.test(i)&&(i=function(t,e){T[" "+t]||(w.test(t)?T[" "+t]=t+"/":T[" "+t]=A(t,"/",!0));t=T[" "+t];var i=-1===t.indexOf(":");return"//"===e.substring(0,2)?i?e:t.replace(S,"$1")+e:"/"===e.charAt(0)?i?e:t.replace(P,"$1")+e:t+e}(e,i));try{i=encodeURI(i).replace(/%25/g,"%")}catch(t){return null}return i}var T={},w=/^[^:]+:\/*[^/]*$/,S=/^([^:]+:)[\s\S]*$/,P=/^([^:]+:\/*[^/]*)[\s\S]*$/;var x={exec:function(){}};function I(t,e){var i=t.replace(/\|/g,function(t,e,i){for(var n=!1,r=e;--r>=0&&"\\"===i[r];)n=!n;return n?"|":" |"}).split(/ \|/),n=0;if(i[0].trim()||i.shift(),i.length>0&&!i[i.length-1].trim()&&i.pop(),i.length>e)i.splice(e);else for(;i.length<e;)i.push("");for(;n<i.length;n++)i[n]=i[n].trim().replace(/\\\|/g,"|");return i}function A(t,e,i){var n=t.length;if(0===n)return"";for(var r=0;r<n;){var o=t.charAt(n-r-1);if(o!==e||i){if(o===e||!i)break;r++}else r++}return t.slice(0,n-r)}function C(t,e){if(e<1)return"";for(var i="";e>1;)1&e&&(i+=t),e>>=1,t+=t;return i+t}function F(t,e,i,n){var r=e.href,o=e.title?h(e.title):null,a=t[1].replace(/\\([\[\]])/g,"$1");if("!"!==t[0].charAt(0)){n.state.inLink=!0;var s={type:"link",raw:i,href:r,title:o,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,s}return{type:"image",raw:i,href:r,title:o,text:h(a)}}var R=function(){function e(e){this.options=e||t.defaults}var i=e.prototype;return i.space=function(t){var e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}},i.code=function(t){var e=this.rules.block.code.exec(t);if(e){var i=e[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?i:A(i,"\n")}}},i.fences=function(t){var e=this.rules.block.fences.exec(t);if(e){var i=e[0],n=function(t,e){var i=t.match(/^(\s+)(?:```)/);if(null===i)return e;var n=i[1];return e.split("\n").map(function(t){var e=t.match(/^\s+/);return null===e?t:e[0].length>=n.length?t.slice(n.length):t}).join("\n")}(i,e[3]||"");return{type:"code",raw:i,lang:e[2]?e[2].trim().replace(this.rules.inline._escapes,"$1"):e[2],text:n}}},i.heading=function(t){var e=this.rules.block.heading.exec(t);if(e){var i=e[2].trim();if(/#$/.test(i)){var n=A(i,"#");this.options.pedantic?i=n.trim():n&&!/ $/.test(n)||(i=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:i,tokens:this.lexer.inline(i)}}},i.hr=function(t){var e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:e[0]}},i.blockquote=function(t){var e=this.rules.block.blockquote.exec(t);if(e){var i=e[0].replace(/^ *>[ \t]?/gm,""),n=this.lexer.state.top;this.lexer.state.top=!0;var r=this.lexer.blockTokens(i);return this.lexer.state.top=n,{type:"blockquote",raw:e[0],tokens:r,text:i}}},i.list=function(t){var e=this.rules.block.list.exec(t);if(e){var i,n,r,o,a,s,c,l,p,d,u,h,m=e[1].trim(),g=m.length>1,f={type:"list",raw:"",ordered:g,start:g?+m.slice(0,-1):"",loose:!1,items:[]};m=g?"\\d{1,9}\\"+m.slice(-1):"\\"+m,this.options.pedantic&&(m=g?m:"[*+-]");for(var D=new RegExp("^( {0,3}"+m+")((?:[\t ][^\\n]*)?(?:\\n|$))");t&&(h=!1,e=D.exec(t))&&!this.rules.block.hr.test(t);){if(i=e[0],t=t.substring(i.length),l=e[2].split("\n",1)[0].replace(/^\t+/,function(t){return" ".repeat(3*t.length)}),p=t.split("\n",1)[0],this.options.pedantic?(o=2,u=l.trimLeft()):(o=(o=e[2].search(/[^ ]/))>4?1:o,u=l.slice(o),o+=e[1].length),s=!1,!l&&/^ *$/.test(p)&&(i+=p+"\n",t=t.substring(p.length+1),h=!0),!h)for(var y=new RegExp("^ {0,"+Math.min(3,o-1)+"}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))"),v=new RegExp("^ {0,"+Math.min(3,o-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),b=new RegExp("^ {0,"+Math.min(3,o-1)+"}(?:```|~~~)"),T=new RegExp("^ {0,"+Math.min(3,o-1)+"}#");t&&(p=d=t.split("\n",1)[0],this.options.pedantic&&(p=p.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!b.test(p))&&!T.test(p)&&!y.test(p)&&!v.test(t);){if(p.search(/[^ ]/)>=o||!p.trim())u+="\n"+p.slice(o);else{if(s)break;if(l.search(/[^ ]/)>=4)break;if(b.test(l))break;if(T.test(l))break;if(v.test(l))break;u+="\n"+p}s||p.trim()||(s=!0),i+=d+"\n",t=t.substring(d.length+1),l=p.slice(o)}f.loose||(c?f.loose=!0:/\n *\n *$/.test(i)&&(c=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(u))&&(r="[ ] "!==n[0],u=u.replace(/^\[[ xX]\] +/,"")),f.items.push({type:"list_item",raw:i,task:!!n,checked:r,loose:!1,text:u}),f.raw+=i}f.items[f.items.length-1].raw=i.trimRight(),f.items[f.items.length-1].text=u.trimRight(),f.raw=f.raw.trimRight();var w=f.items.length;for(a=0;a<w;a++)if(this.lexer.state.top=!1,f.items[a].tokens=this.lexer.blockTokens(f.items[a].text,[]),!f.loose){var S=f.items[a].tokens.filter(function(t){return"space"===t.type}),P=S.length>0&&S.some(function(t){return/\n.*\n/.test(t.raw)});f.loose=P}if(f.loose)for(a=0;a<w;a++)f.items[a].loose=!0;return f}},i.html=function(t){var e=this.rules.block.html.exec(t);if(e){var i={type:"html",raw:e[0],pre:!this.options.sanitizer&&("pre"===e[1]||"script"===e[1]||"style"===e[1]),text:e[0]};if(this.options.sanitize){var n=this.options.sanitizer?this.options.sanitizer(e[0]):h(e[0]);i.type="paragraph",i.text=n,i.tokens=this.lexer.inline(n)}return i}},i.def=function(t){var e=this.rules.block.def.exec(t);if(e){var i=e[1].toLowerCase().replace(/\s+/g," "),n=e[2]?e[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",r=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"):e[3];return{type:"def",tag:i,raw:e[0],href:n,title:r}}},i.table=function(t){var e=this.rules.block.table.exec(t);if(e){var i={type:"table",header:I(e[1]).map(function(t){return{text:t}}),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(i.header.length===i.align.length){i.raw=e[0];var n,r,o,a,s=i.align.length;for(n=0;n<s;n++)/^ *-+: *$/.test(i.align[n])?i.align[n]="right":/^ *:-+: *$/.test(i.align[n])?i.align[n]="center":/^ *:-+ *$/.test(i.align[n])?i.align[n]="left":i.align[n]=null;for(s=i.rows.length,n=0;n<s;n++)i.rows[n]=I(i.rows[n],i.header.length).map(function(t){return{text:t}});for(s=i.header.length,r=0;r<s;r++)i.header[r].tokens=this.lexer.inline(i.header[r].text);for(s=i.rows.length,r=0;r<s;r++)for(a=i.rows[r],o=0;o<a.length;o++)a[o].tokens=this.lexer.inline(a[o].text);return i}}},i.lheading=function(t){var e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:"="===e[2].charAt(0)?1:2,text:e[1],tokens:this.lexer.inline(e[1])}},i.paragraph=function(t){var e=this.rules.block.paragraph.exec(t);if(e){var i="\n"===e[1].charAt(e[1].length-1)?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:i,tokens:this.lexer.inline(i)}}},i.text=function(t){var e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}},i.escape=function(t){var e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:h(e[1])}},i.tag=function(t){var e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&/^<a /i.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):h(e[0]):e[0]}},i.link=function(t){var e=this.rules.inline.link.exec(t);if(e){var i=e[2].trim();if(!this.options.pedantic&&/^</.test(i)){if(!/>$/.test(i))return;var n=A(i.slice(0,-1),"\\");if((i.length-n.length)%2==0)return}else{var r=function(t,e){if(-1===t.indexOf(e[1]))return-1;for(var i=t.length,n=0,r=0;r<i;r++)if("\\"===t[r])r++;else if(t[r]===e[0])n++;else if(t[r]===e[1]&&--n<0)return r;return-1}(e[2],"()");if(r>-1){var o=(0===e[0].indexOf("!")?5:4)+e[1].length+r;e[2]=e[2].substring(0,r),e[0]=e[0].substring(0,o).trim(),e[3]=""}}var a=e[2],s="";if(this.options.pedantic){var c=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);c&&(a=c[1],s=c[3])}else s=e[3]?e[3].slice(1,-1):"";return a=a.trim(),/^</.test(a)&&(a=this.options.pedantic&&!/>$/.test(i)?a.slice(1):a.slice(1,-1)),F(e,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:s?s.replace(this.rules.inline._escapes,"$1"):s},e[0],this.lexer)}},i.reflink=function(t,e){var i;if((i=this.rules.inline.reflink.exec(t))||(i=this.rules.inline.nolink.exec(t))){var n=(i[2]||i[1]).replace(/\s+/g," ");if(!(n=e[n.toLowerCase()])){var r=i[0].charAt(0);return{type:"text",raw:r,text:r}}return F(i,n,i[0],this.lexer)}},i.emStrong=function(t,e,i){void 0===i&&(i="");var n=this.rules.inline.emStrong.lDelim.exec(t);if(n&&(!n[3]||!i.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=n[1]||n[2]||"";if(!r||r&&(""===i||this.rules.inline.punctuation.exec(i))){var o,a,s=n[0].length-1,c=s,l=0,p="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(p.lastIndex=0,e=e.slice(-1*t.length+s);null!=(n=p.exec(e));)if(o=n[1]||n[2]||n[3]||n[4]||n[5]||n[6])if(a=o.length,n[3]||n[4])c+=a;else if(!((n[5]||n[6])&&s%3)||(s+a)%3){if(!((c-=a)>0)){a=Math.min(a,a+c+l);var d=t.slice(0,s+n.index+(n[0].length-o.length)+a);if(Math.min(s,a)%2){var u=d.slice(1,-1);return{type:"em",raw:d,text:u,tokens:this.lexer.inlineTokens(u)}}var h=d.slice(2,-2);return{type:"strong",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}else l+=a}}},i.codespan=function(t){var e=this.rules.inline.code.exec(t);if(e){var i=e[2].replace(/\n/g," "),n=/[^ ]/.test(i),r=/^ /.test(i)&&/ $/.test(i);return n&&r&&(i=i.substring(1,i.length-1)),i=h(i,!0),{type:"codespan",raw:e[0],text:i}}},i.br=function(t){var e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}},i.del=function(t){var e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}},i.autolink=function(t,e){var i,n,r=this.rules.inline.autolink.exec(t);if(r)return n="@"===r[2]?"mailto:"+(i=h(this.options.mangle?e(r[1]):r[1])):i=h(r[1]),{type:"link",raw:r[0],text:i,href:n,tokens:[{type:"text",raw:i,text:i}]}},i.url=function(t,e){var i;if(i=this.rules.inline.url.exec(t)){var n,r;if("@"===i[2])r="mailto:"+(n=h(this.options.mangle?e(i[0]):i[0]));else{var o;do{o=i[0],i[0]=this.rules.inline._backpedal.exec(i[0])[0]}while(o!==i[0]);n=h(i[0]),r="www."===i[1]?"http://"+i[0]:i[0]}return{type:"link",raw:i[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},i.inlineText=function(t,e){var i,n=this.rules.inline.text.exec(t);if(n)return i=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):h(n[0]):n[0]:h(this.options.smartypants?e(n[0]):n[0]),{type:"text",raw:n[0],text:i}},e}(),M={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:x,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};M.def=D(M.def).replace("label",M._label).replace("title",M._title).getRegex(),M.bullet=/(?:[*+-]|\d{1,9}[.)])/,M.listItemStart=D(/^( *)(bull) */).replace("bull",M.bullet).getRegex(),M.list=D(M.list).replace(/bull/g,M.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+M.def.source+")").getRegex(),M._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",M._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,M.html=D(M.html,"i").replace("comment",M._comment).replace("tag",M._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),M.paragraph=D(M._paragraph).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",M._tag).getRegex(),M.blockquote=D(M.blockquote).replace("paragraph",M.paragraph).getRegex(),M.normal=i({},M),M.gfm=i({},M.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),M.gfm.table=D(M.gfm.table).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",M._tag).getRegex(),M.gfm.paragraph=D(M._paragraph).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",M.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",M._tag).getRegex(),M.pedantic=i({},M.normal,{html:D("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",M._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:x,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:D(M.normal._paragraph).replace("hr",M.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",M.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var E={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:x,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:x,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};function H(t){return t.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")}function _(t){var e,i,n="",r=t.length;for(e=0;e<r;e++)i=t.charCodeAt(e),Math.random()>.5&&(i="x"+i.toString(16)),n+="&#"+i+";";return n}E._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",E.punctuation=D(E.punctuation).replace(/punctuation/g,E._punctuation).getRegex(),E.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,E.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,E._comment=D(M._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),E.emStrong.lDelim=D(E.emStrong.lDelim).replace(/punct/g,E._punctuation).getRegex(),E.emStrong.rDelimAst=D(E.emStrong.rDelimAst,"g").replace(/punct/g,E._punctuation).getRegex(),E.emStrong.rDelimUnd=D(E.emStrong.rDelimUnd,"g").replace(/punct/g,E._punctuation).getRegex(),E._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,E._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,E._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,E.autolink=D(E.autolink).replace("scheme",E._scheme).replace("email",E._email).getRegex(),E._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,E.tag=D(E.tag).replace("comment",E._comment).replace("attribute",E._attribute).getRegex(),E._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,E._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,E._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,E.link=D(E.link).replace("label",E._label).replace("href",E._href).replace("title",E._title).getRegex(),E.reflink=D(E.reflink).replace("label",E._label).replace("ref",M._label).getRegex(),E.nolink=D(E.nolink).replace("ref",M._label).getRegex(),E.reflinkSearch=D(E.reflinkSearch,"g").replace("reflink",E.reflink).replace("nolink",E.nolink).getRegex(),E.normal=i({},E),E.pedantic=i({},E.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:D(/^!?\[(label)\]\((.*?)\)/).replace("label",E._label).getRegex(),reflink:D(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",E._label).getRegex()}),E.gfm=i({},E.normal,{escape:D(E.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/}),E.gfm.url=D(E.gfm.url,"i").replace("email",E.gfm._extended_email).getRegex(),E.breaks=i({},E.gfm,{br:D(E.br).replace("{2,}","*").getRegex(),text:D(E.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var V=function(){function i(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||t.defaults,this.options.tokenizer=this.options.tokenizer||new R,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var i={block:M.normal,inline:E.normal};this.options.pedantic?(i.block=M.pedantic,i.inline=E.pedantic):this.options.gfm&&(i.block=M.gfm,this.options.breaks?i.inline=E.breaks:i.inline=E.gfm),this.tokenizer.rules=i}i.lex=function(t,e){return new i(e).lex(t)},i.lexInline=function(t,e){return new i(e).inlineTokens(t)};var n,r,o,a=i.prototype;return a.lex=function(t){var e;for(t=t.replace(/\r\n|\r/g,"\n"),this.blockTokens(t,this.tokens);e=this.inlineQueue.shift();)this.inlineTokens(e.src,e.tokens);return this.tokens},a.blockTokens=function(t,e){var i,n,r,o,a=this;for(void 0===e&&(e=[]),t=this.options.pedantic?t.replace(/\t/g," ").replace(/^ +$/gm,""):t.replace(/^( *)(\t+)/gm,function(t,e,i){return e+" ".repeat(i.length)});t;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(function(n){return!!(i=n.call({lexer:a},t,e))&&(t=t.substring(i.raw.length),e.push(i),!0)})))if(i=this.tokenizer.space(t))t=t.substring(i.raw.length),1===i.raw.length&&e.length>0?e[e.length-1].raw+="\n":e.push(i);else if(i=this.tokenizer.code(t))t=t.substring(i.raw.length),!(n=e[e.length-1])||"paragraph"!==n.type&&"text"!==n.type?e.push(i):(n.raw+="\n"+i.raw,n.text+="\n"+i.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(i=this.tokenizer.fences(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.heading(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.hr(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.blockquote(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.list(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.html(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.def(t))t=t.substring(i.raw.length),!(n=e[e.length-1])||"paragraph"!==n.type&&"text"!==n.type?this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title}):(n.raw+="\n"+i.raw,n.text+="\n"+i.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(i=this.tokenizer.table(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.lheading(t))t=t.substring(i.raw.length),e.push(i);else if(r=t,this.options.extensions&&this.options.extensions.startBlock&&function(){var e=1/0,i=t.slice(1),n=void 0;a.options.extensions.startBlock.forEach(function(t){"number"==typeof(n=t.call({lexer:this},i))&&n>=0&&(e=Math.min(e,n))}),e<1/0&&e>=0&&(r=t.substring(0,e+1))}(),this.state.top&&(i=this.tokenizer.paragraph(r)))n=e[e.length-1],o&&"paragraph"===n.type?(n.raw+="\n"+i.raw,n.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):e.push(i),o=r.length!==t.length,t=t.substring(i.raw.length);else if(i=this.tokenizer.text(t))t=t.substring(i.raw.length),(n=e[e.length-1])&&"text"===n.type?(n.raw+="\n"+i.raw,n.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):e.push(i);else if(t){var s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}throw new Error(s)}return this.state.top=!0,e},a.inline=function(t,e){return void 0===e&&(e=[]),this.inlineQueue.push({src:t,tokens:e}),e},a.inlineTokens=function(t,e){var i,n,r,o=this;void 0===e&&(e=[]);var a,s,c,l=t;if(this.tokens.links){var p=Object.keys(this.tokens.links);if(p.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(l));)p.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,a.index)+"["+C("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,a.index)+"["+C("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(a=this.tokenizer.rules.inline.escapedEmSt.exec(l));)l=l.slice(0,a.index+a[0].length-2)+"++"+l.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;t;)if(s||(c=""),s=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(function(n){return!!(i=n.call({lexer:o},t,e))&&(t=t.substring(i.raw.length),e.push(i),!0)})))if(i=this.tokenizer.escape(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.tag(t))t=t.substring(i.raw.length),(n=e[e.length-1])&&"text"===i.type&&"text"===n.type?(n.raw+=i.raw,n.text+=i.text):e.push(i);else if(i=this.tokenizer.link(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.reflink(t,this.tokens.links))t=t.substring(i.raw.length),(n=e[e.length-1])&&"text"===i.type&&"text"===n.type?(n.raw+=i.raw,n.text+=i.text):e.push(i);else if(i=this.tokenizer.emStrong(t,l,c))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.codespan(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.br(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.del(t))t=t.substring(i.raw.length),e.push(i);else if(i=this.tokenizer.autolink(t,_))t=t.substring(i.raw.length),e.push(i);else if(this.state.inLink||!(i=this.tokenizer.url(t,_))){if(r=t,this.options.extensions&&this.options.extensions.startInline&&function(){var e=1/0,i=t.slice(1),n=void 0;o.options.extensions.startInline.forEach(function(t){"number"==typeof(n=t.call({lexer:this},i))&&n>=0&&(e=Math.min(e,n))}),e<1/0&&e>=0&&(r=t.substring(0,e+1))}(),i=this.tokenizer.inlineText(r,H))t=t.substring(i.raw.length),"_"!==i.raw.slice(-1)&&(c=i.raw.slice(-1)),s=!0,(n=e[e.length-1])&&"text"===n.type?(n.raw+=i.raw,n.text+=i.text):e.push(i);else if(t){var d="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}else t=t.substring(i.raw.length),e.push(i);return e},n=i,o=[{key:"rules",get:function(){return{block:M,inline:E}}}],(r=null)&&e(n.prototype,r),o&&e(n,o),Object.defineProperty(n,"prototype",{writable:!1}),i}(),L=function(){function e(e){this.options=e||t.defaults}var i=e.prototype;return i.code=function(t,e,i){var n=(e||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(t,n);null!=r&&r!==t&&(i=!0,t=r)}return t=t.replace(/\n$/,"")+"\n",n?'<pre><code class="'+this.options.langPrefix+h(n)+'">'+(i?t:h(t,!0))+"</code></pre>\n":"<pre><code>"+(i?t:h(t,!0))+"</code></pre>\n"},i.blockquote=function(t){return"<blockquote>\n"+t+"</blockquote>\n"},i.html=function(t){return t},i.heading=function(t,e,i,n){return this.options.headerIds?"<h"+e+' id="'+(this.options.headerPrefix+n.slug(i))+'">'+t+"</h"+e+">\n":"<h"+e+">"+t+"</h"+e+">\n"},i.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},i.list=function(t,e,i){var n=e?"ol":"ul";return"<"+n+(e&&1!==i?' start="'+i+'"':"")+">\n"+t+"</"+n+">\n"},i.listitem=function(t){return"<li>"+t+"</li>\n"},i.checkbox=function(t){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},i.paragraph=function(t){return"<p>"+t+"</p>\n"},i.table=function(t,e){return e&&(e="<tbody>"+e+"</tbody>"),"<table>\n<thead>\n"+t+"</thead>\n"+e+"</table>\n"},i.tablerow=function(t){return"<tr>\n"+t+"</tr>\n"},i.tablecell=function(t,e){var i=e.header?"th":"td";return(e.align?"<"+i+' align="'+e.align+'">':"<"+i+">")+t+"</"+i+">\n"},i.strong=function(t){return"<strong>"+t+"</strong>"},i.em=function(t){return"<em>"+t+"</em>"},i.codespan=function(t){return"<code>"+t+"</code>"},i.br=function(){return this.options.xhtml?"<br/>":"<br>"},i.del=function(t){return"<del>"+t+"</del>"},i.link=function(t,e,i){if(null===(t=b(this.options.sanitize,this.options.baseUrl,t)))return i;var n='<a href="'+t+'"';return e&&(n+=' title="'+e+'"'),n+=">"+i+"</a>"},i.image=function(t,e,i){if(null===(t=b(this.options.sanitize,this.options.baseUrl,t)))return i;var n='<img src="'+t+'" alt="'+i+'"';return e&&(n+=' title="'+e+'"'),n+=this.options.xhtml?"/>":">"},i.text=function(t){return t},e}(),k=function(){function t(){}var e=t.prototype;return e.strong=function(t){return t},e.em=function(t){return t},e.codespan=function(t){return t},e.del=function(t){return t},e.html=function(t){return t},e.text=function(t){return t},e.link=function(t,e,i){return""+i},e.image=function(t,e,i){return""+i},e.br=function(){return""},t}(),O=function(){function t(){this.seen={}}var e=t.prototype;return e.serialize=function(t){return t.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},e.getNextSafeSlug=function(t,e){var i=t,n=0;if(this.seen.hasOwnProperty(i)){n=this.seen[t];do{i=t+"-"+ ++n}while(this.seen.hasOwnProperty(i))}return e||(this.seen[t]=n,this.seen[i]=0),i},e.slug=function(t,e){void 0===e&&(e={});var i=this.serialize(t);return this.getNextSafeSlug(i,e.dryrun)},t}(),U=function(){function e(e){this.options=e||t.defaults,this.options.renderer=this.options.renderer||new L,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new k,this.slugger=new O}e.parse=function(t,i){return new e(i).parse(t)},e.parseInline=function(t,i){return new e(i).parseInline(t)};var i=e.prototype;return i.parse=function(t,e){void 0===e&&(e=!0);var i,n,r,o,a,s,c,l,p,d,u,h,m,f,D,y,v,b,T,w="",S=t.length;for(i=0;i<S;i++)if(d=t[i],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[d.type])||!1===(T=this.options.extensions.renderers[d.type].call({parser:this},d))&&["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(d.type))switch(d.type){case"space":continue;case"hr":w+=this.renderer.hr();continue;case"heading":w+=this.renderer.heading(this.parseInline(d.tokens),d.depth,g(this.parseInline(d.tokens,this.textRenderer)),this.slugger);continue;case"code":w+=this.renderer.code(d.text,d.lang,d.escaped);continue;case"table":for(l="",c="",o=d.header.length,n=0;n<o;n++)c+=this.renderer.tablecell(this.parseInline(d.header[n].tokens),{header:!0,align:d.align[n]});for(l+=this.renderer.tablerow(c),p="",o=d.rows.length,n=0;n<o;n++){for(c="",a=(s=d.rows[n]).length,r=0;r<a;r++)c+=this.renderer.tablecell(this.parseInline(s[r].tokens),{header:!1,align:d.align[r]});p+=this.renderer.tablerow(c)}w+=this.renderer.table(l,p);continue;case"blockquote":p=this.parse(d.tokens),w+=this.renderer.blockquote(p);continue;case"list":for(u=d.ordered,h=d.start,m=d.loose,o=d.items.length,p="",n=0;n<o;n++)y=(D=d.items[n]).checked,v=D.task,f="",D.task&&(b=this.renderer.checkbox(y),m?D.tokens.length>0&&"paragraph"===D.tokens[0].type?(D.tokens[0].text=b+" "+D.tokens[0].text,D.tokens[0].tokens&&D.tokens[0].tokens.length>0&&"text"===D.tokens[0].tokens[0].type&&(D.tokens[0].tokens[0].text=b+" "+D.tokens[0].tokens[0].text)):D.tokens.unshift({type:"text",text:b}):f+=b),f+=this.parse(D.tokens,m),p+=this.renderer.listitem(f,v,y);w+=this.renderer.list(p,u,h);continue;case"html":w+=this.renderer.html(d.text);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(d.tokens));continue;case"text":for(p=d.tokens?this.parseInline(d.tokens):d.text;i+1<S&&"text"===t[i+1].type;)p+="\n"+((d=t[++i]).tokens?this.parseInline(d.tokens):d.text);w+=e?this.renderer.paragraph(p):p;continue;default:var P='Token with "'+d.type+'" type was not found.';if(this.options.silent)return void console.error(P);throw new Error(P)}else w+=T||"";return w},i.parseInline=function(t,e){e=e||this.renderer;var i,n,r,o="",a=t.length;for(i=0;i<a;i++)if(n=t[i],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[n.type])||!1===(r=this.options.extensions.renderers[n.type].call({parser:this},n))&&["escape","html","link","image","strong","em","codespan","br","del","text"].includes(n.type))switch(n.type){case"escape":case"text":o+=e.text(n.text);break;case"html":o+=e.html(n.text);break;case"link":o+=e.link(n.href,n.title,this.parseInline(n.tokens,e));break;case"image":o+=e.image(n.href,n.title,n.text);break;case"strong":o+=e.strong(this.parseInline(n.tokens,e));break;case"em":o+=e.em(this.parseInline(n.tokens,e));break;case"codespan":o+=e.codespan(n.text);break;case"br":o+=e.br();break;case"del":o+=e.del(this.parseInline(n.tokens,e));break;default:var s='Token with "'+n.type+'" type was not found.';if(this.options.silent)return void console.error(s);throw new Error(s)}else o+=r||"";return o},e}(),j=function(){function e(e){this.options=e||t.defaults}var i=e.prototype;return i.preprocess=function(t){return t},i.postprocess=function(t){return t},e}();function B(t,e){return function(n,r,o){"function"==typeof r&&(o=r,r=null);var a=i({},r),s=function(t,e,i){return function(n){if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",t){var r="<p>An error occurred:</p><pre>"+h(n.message+"",!0)+"</pre>";return e?Promise.resolve(r):i?void i(null,r):r}if(e)return Promise.reject(n);if(!i)throw n;i(n)}}((r=i({},N.defaults,a)).silent,r.async,o);if(null==n)return s(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof n)return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(function(t){t&&t.sanitize&&!t.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}(r),r.hooks&&(r.hooks.options=r),o){var c,l=r.highlight;try{r.hooks&&(n=r.hooks.preprocess(n)),c=t(n,r)}catch(t){return s(t)}var p=function(t){var i;if(!t)try{r.walkTokens&&N.walkTokens(c,r.walkTokens),i=e(c,r),r.hooks&&(i=r.hooks.postprocess(i))}catch(e){t=e}return r.highlight=l,t?s(t):o(null,i)};if(!l||l.length<3)return p();if(delete r.highlight,!c.length)return p();var d=0;return N.walkTokens(c,function(t){"code"===t.type&&(d++,setTimeout(function(){l(t.text,t.lang,function(e,i){if(e)return p(e);null!=i&&i!==t.text&&(t.text=i,t.escaped=!0),0===--d&&p()})},0))}),void(0===d&&p())}if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(n):n).then(function(e){return t(e,r)}).then(function(t){return r.walkTokens?Promise.all(N.walkTokens(t,r.walkTokens)).then(function(){return t}):t}).then(function(t){return e(t,r)}).then(function(t){return r.hooks?r.hooks.postprocess(t):t}).catch(s);try{r.hooks&&(n=r.hooks.preprocess(n));var u=t(n,r);r.walkTokens&&N.walkTokens(u,r.walkTokens);var m=e(u,r);return r.hooks&&(m=r.hooks.postprocess(m)),m}catch(t){return s(t)}}}function N(t,e,i){return B(V.lex,U.parse)(t,e,i)}j.passThroughHooks=new Set(["preprocess","postprocess"]),N.options=N.setOptions=function(e){var n;return N.defaults=i({},N.defaults,e),n=N.defaults,t.defaults=n,N},N.getDefaults=a,N.defaults=t.defaults,N.use=function(){for(var t=N.defaults.extensions||{renderers:{},childTokens:{}},e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.forEach(function(e){var n=i({},e);if(n.async=N.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(function(e){if(!e.name)throw new Error("extension name required");if(e.renderer){var i=t.renderers[e.name];t.renderers[e.name]=i?function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var o=e.renderer.apply(this,n);return!1===o&&(o=i.apply(this,n)),o}:e.renderer}if(e.tokenizer){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");t[e.level]?t[e.level].unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer&&function(){var t=N.defaults.renderer||new L,i=function(i){var n=t[i];t[i]=function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var s=e.renderer[i].apply(t,o);return!1===s&&(s=n.apply(t,o)),s}};for(var r in e.renderer)i(r);n.renderer=t}(),e.tokenizer&&function(){var t=N.defaults.tokenizer||new R,i=function(i){var n=t[i];t[i]=function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var s=e.tokenizer[i].apply(t,o);return!1===s&&(s=n.apply(t,o)),s}};for(var r in e.tokenizer)i(r);n.tokenizer=t}(),e.hooks&&function(){var t=N.defaults.hooks||new j,i=function(i){var n=t[i];j.passThroughHooks.has(i)?t[i]=function(r){if(N.defaults.async)return Promise.resolve(e.hooks[i].call(t,r)).then(function(e){return n.call(t,e)});var o=e.hooks[i].call(t,r);return n.call(t,o)}:t[i]=function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var s=e.hooks[i].apply(t,o);return!1===s&&(s=n.apply(t,o)),s}};for(var r in e.hooks)i(r);n.hooks=t}(),e.walkTokens){var r=N.defaults.walkTokens;n.walkTokens=function(t){var i=[];return i.push(e.walkTokens.call(this,t)),r&&(i=i.concat(r.call(this,t))),i}}N.setOptions(n)})},N.walkTokens=function(t,e){for(var i,n=[],o=function(){var t=i.value;switch(n=n.concat(e.call(N,t)),t.type){case"table":for(var o,a=r(t.header);!(o=a()).done;){var s=o.value;n=n.concat(N.walkTokens(s.tokens,e))}for(var c,l=r(t.rows);!(c=l()).done;)for(var p,d=r(c.value);!(p=d()).done;){var u=p.value;n=n.concat(N.walkTokens(u.tokens,e))}break;case"list":n=n.concat(N.walkTokens(t.items,e));break;default:N.defaults.extensions&&N.defaults.extensions.childTokens&&N.defaults.extensions.childTokens[t.type]?N.defaults.extensions.childTokens[t.type].forEach(function(i){n=n.concat(N.walkTokens(t[i],e))}):t.tokens&&(n=n.concat(N.walkTokens(t.tokens,e)))}},a=r(t);!(i=a()).done;)o();return n},N.parseInline=B(V.lexInline,U.parseInline),N.Parser=U,N.parser=U.parse,N.Renderer=L,N.TextRenderer=k,N.Lexer=V,N.lexer=V.lex,N.Tokenizer=R,N.Slugger=O,N.Hooks=j,N.parse=N;var G=N.options,z=N.setOptions,q=N.use,W=N.walkTokens,J=N.parseInline,K=N,$=U.parse,Y=V.lex;t.Hooks=j,t.Lexer=V,t.Parser=U,t.Renderer=L,t.Slugger=O,t.TextRenderer=k,t.Tokenizer=R,t.getDefaults=a,t.lexer=Y,t.marked=N,t.options=G,t.parse=K,t.parseInline=J,t.parser=$,t.setOptions=z,t.use=q,t.walkTokens=W})},{}],5:[function(t,e,i){e.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:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{"fable-serviceproviderbase":"^3.0.19"}}},{}],6:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../package.json"),o={Name:"DefaultPictApplication",MainViewportViewIdentifier:"Default-View",MainViewportRenderableHash:!1,MainViewportDestinationAddress:!1,MainViewportDefaultDataAddress:!1,AutoSolveAfterInitialize:!0,AutoRenderMainViewportViewAfterInitialize:!0,AutoRenderViewsAfterInitialize:!1,AutoLoginAfterInitialize:!1,AutoLoadDataAfterLogin:!1,ConfigurationOnlyViews:[],Manifests:{},IdentifierAddressPrefix:"PICT-"};e.exports=class extends n{constructor(t,e,i){let n="object"==typeof t.settings.PictApplicationConfiguration?t.settings.PictApplicationConfiguration:{};super(t,Object.assign({},JSON.parse(JSON.stringify(o)),n,e),i),this.options,this.log,this.fable,this.UUID,this.Hash,this.servicesMap,this.serviceType="PictApplication",this._Package=r,this.pict=this.fable,this.AppData=this.fable.AppData,this.Bundle=this.fable.Bundle,this.initializeTimestamp,this.lastSolvedTimestamp,this.lastLoginTimestamp,this.lastMarshalFromViewsTimestamp,this.lastMarshalToViewsTimestamp,this.lastAutoRenderTimestamp,this.lastLoadDataTimestamp;let a=Object.keys(this.options.Manifests);if(a.length>0)for(let t=0;t<a.length;t++){let e=a[t];this.fable.instantiateServiceProvider("Manifest",this.options.Manifests[e],e)}}onPreSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onPreSolve:")),!0}onPreSolveAsync(t){return this.onPreSolve(),t()}onBeforeSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeSolve:")),!0}onBeforeSolveAsync(t){return this.onBeforeSolve(),t()}onSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onSolve:")),!0}onSolveAsync(t){return this.onSolve(),t()}solve(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing solve() function..."));let t=Object.keys(this.pict.providers),e=[];for(let i=0;i<t.length;i++){let n=this.pict.providers[t[i]];n.options.AutoSolveWithApp&&e.push(n)}e.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<e.length;t++)e[t].solve(e[t]);this.onBeforeSolve();let i=Object.keys(this.pict.views),n=[];for(let t=0;t<i.length;t++){let e=this.pict.views[i[t]];e.options.AutoInitialize&&n.push(e)}n.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<n.length;t++)n[t].solve();return this.onSolve(),this.onAfterSolve(),this.lastSolvedTimestamp=this.fable.log.getTimeStamp(),!0}solveAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");e.anticipate(this.onBeforeSolveAsync.bind(this));let i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync Auto Callback Error: ").concat(t),t)});let n=Object.keys(this.pict.providers),r=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoSolveWithApp&&r.push(e)}r.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<r.length;t++)e.anticipate(r[t].solveAsync.bind(r[t]));let o=Object.keys(this.pict.views),a=[];for(let t=0;t<o.length;t++){let e=this.pict.views[o[t]];e.options.AutoSolveWithApp&&a.push(e)}a.sort((t,e)=>t.options.AutoSolveOrdinal-e.options.AutoSolveOrdinal);for(let t=0;t<a.length;t++)e.anticipate(a[t].solveAsync.bind(a[t]));e.anticipate(this.onSolveAsync.bind(this)),e.anticipate(this.onAfterSolveAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync() complete.")),this.lastSolvedTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterSolve:")),!0}onAfterSolveAsync(t){return this.onAfterSolve(),t()}onBeforeLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeLoginAsync:")),t()}onLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onLoginAsync:")),t()}loginAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let i=t;"function"!=typeof i&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeLoginAsync.bind(this)),e.anticipate(this.onLoginAsync.bind(this)),e.anticipate(this.onAfterLoginAsync.bind(this)),this.options.AutoLoadDataAfterLogin&&e.anticipate(t=>{if(!this.isLoggedIn())return t();this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto loading data after login...")),this.loadDataAsync(e=>{t(e)})}),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loginAsync() complete.")),this.lastLoginTimestamp=this.fable.log.getTimeStamp(),i(t)))}isLoggedIn(){return!0}onAfterLoginAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterLoginAsync:")),t()}onBeforeLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeLoadDataAsync:")),t()}onLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onLoadDataAsync:")),t()}loadDataAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let i=t;"function"!=typeof i&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeLoadDataAsync.bind(this));let n=Object.keys(this.pict.providers),r=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoLoadDataWithApp&&r.push(e)}r.sort((t,e)=>t.options.AutoLoadDataOrdinal-e.options.AutoLoadDataOrdinal);for(const t of r)e.anticipate(t.onBeforeLoadDataAsync.bind(t));e.anticipate(this.onLoadDataAsync.bind(this));for(const t of r)e.anticipate(t.onLoadDataAsync.bind(t));e.anticipate(this.onAfterLoadDataAsync.bind(this));for(const t of r)e.anticipate(t.onAfterLoadDataAsync.bind(t));e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," loadDataAsync() complete.")),this.lastLoadDataTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterLoadDataAsync:")),t()}onBeforeSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeSaveDataAsync:")),t()}onSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onSaveDataAsync:")),t()}saveDataAsync(t){const e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");let i=t;"function"!=typeof i&&(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeSaveDataAsync.bind(this));let n=Object.keys(this.pict.providers),r=[];for(let t=0;t<n.length;t++){let e=this.pict.providers[n[t]];e.options.AutoSaveDataWithApp&&r.push(e)}r.sort((t,e)=>t.options.AutoSaveDataOrdinal-e.options.AutoSaveDataOrdinal);for(const t of r)e.anticipate(t.onBeforeSaveDataAsync.bind(t));e.anticipate(this.onSaveDataAsync.bind(this));for(const t of r)e.anticipate(t.onSaveDataAsync.bind(t));e.anticipate(this.onAfterSaveDataAsync.bind(this));for(const t of r)e.anticipate(t.onAfterSaveDataAsync.bind(t));e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," saveDataAsync() complete.")),this.lastSaveDataTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterSaveDataAsync:")),t()}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialize:")),this.initializeTimestamp)return this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialize called but initialization is already completed. Aborting.")),!1;{if(this.onBeforeInitialize(),"ConfigurationOnlyViews"in this.options)for(let t=0;t<this.options.ConfigurationOnlyViews.length;t++){let e=void 0===this.options.ConfigurationOnlyViews[t].ViewIdentifier?"AutoView-".concat(this.fable.getUUID()):this.options.ConfigurationOnlyViews[t].ViewIdentifier;this.log.info("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," adding configuration only view: ").concat(e)),this.pict.addView(e,this.options.ConfigurationOnlyViews[t])}this.onInitialize();let t=Object.keys(this.pict.providers),e=[];for(let i=0;i<t.length;i++){let n=this.pict.providers[t[i]];n.options.AutoInitialize&&e.push(n)}e.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<e.length;t++)e[t].initialize();let i=Object.keys(this.pict.views),n=[];for(let t=0;t<i.length;t++){let e=this.pict.views[i[t]];e.options.AutoInitialize&&n.push(e)}n.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let t=0;t<n.length;t++)n[t].initialize();return this.onAfterInitialize(),this.options.AutoSolveAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto solving after initialization...")),this.solve()),this.options.AutoRenderMainViewportViewAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto rendering after initialization...")),this.render()),this.initializeTimestamp=this.fable.log.getTimeStamp(),this.onCompletionOfInitialize(),!0}}initializeAsync(t){this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync:"));let e="function"==typeof t&&t;if(e||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),e=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync Auto Callback Error: ").concat(t),t)}),this.initializeTimestamp)return this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," async initialize called but initialization is already completed. Aborting.")),this.onCompletionOfInitializeAsync(e);{let t=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate");if(this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning initialization...")),"ConfigurationOnlyViews"in this.options)for(let t=0;t<this.options.ConfigurationOnlyViews.length;t++){let e=void 0===this.options.ConfigurationOnlyViews[t].ViewIdentifier?"AutoView-".concat(this.fable.getUUID()):this.options.ConfigurationOnlyViews[t].ViewIdentifier;this.log.info("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," adding configuration only view: ").concat(e)),this.pict.addView(e,this.options.ConfigurationOnlyViews[t])}t.anticipate(this.onBeforeInitializeAsync.bind(this)),t.anticipate(this.onInitializeAsync.bind(this));let i=Object.keys(this.pict.providers),n=[];for(let t=0;t<i.length;t++){let e=this.pict.providers[i[t]];e.options.AutoInitialize&&n.push(e)}n.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let e=0;e<n.length;e++)t.anticipate(n[e].initializeAsync.bind(n[e]));let r=Object.keys(this.pict.views),o=[];for(let t=0;t<r.length;t++){let e=this.pict.views[r[t]];e.options.AutoInitialize&&o.push(e)}o.sort((t,e)=>t.options.AutoInitializeOrdinal-e.options.AutoInitializeOrdinal);for(let e=0;e<o.length;e++){let i=o[e];t.anticipate(i.initializeAsync.bind(i))}t.anticipate(this.onAfterInitializeAsync.bind(this)),this.options.AutoLoginAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto login (asynchronously) after initialization...")),t.anticipate(this.loginAsync.bind(this))),this.options.AutoSolveAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto solving (asynchronously) after initialization...")),t.anticipate(this.solveAsync.bind(this))),this.options.AutoRenderMainViewportViewAfterInitialize&&(this.pict.LogNoisiness>1&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," auto rendering (asynchronously) after initialization...")),t.anticipate(this.renderMainViewportAsync.bind(this))),t.wait(t=>(t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initializeAsync Error: ").concat(t.message||t),{stack:t.stack}),this.initializeTimestamp=this.fable.log.getTimeStamp(),this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," initialization complete.")),e()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onCompletionOfInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onCompletionOfInitialize:")),!0}onCompletionOfInitializeAsync(t){return this.onCompletionOfInitialize(),t()}onBeforeMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeMarshalFromViews:")),!0}onBeforeMarshalFromViewsAsync(t){return this.onBeforeMarshalFromViews(),t()}onMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onMarshalFromViews:")),!0}onMarshalFromViewsAsync(t){return this.onMarshalFromViews(),t()}marshalFromViews(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing marshalFromViews() function...")),this.onBeforeMarshalFromViews();let t=Object.keys(this.pict.views),e=[];for(let i=0;i<t.length;i++){let n=this.pict.views[t[i]];e.push(n)}for(let t=0;t<e.length;t++)e[t].marshalFromView();return this.onMarshalFromViews(),this.onAfterMarshalFromViews(),this.lastMarshalFromViewsTimestamp=this.fable.log.getTimeStamp(),!0}marshalFromViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalFromViewsAsync.bind(this));let n=Object.keys(this.pict.views),r=[];for(let t=0;t<n.length;t++){let e=this.pict.views[n[t]];r.push(e)}for(let t=0;t<r.length;t++)e.anticipate(r[t].marshalFromViewAsync.bind(r[t]));e.anticipate(this.onMarshalFromViewsAsync.bind(this)),e.anticipate(this.onAfterMarshalFromViewsAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewsAsync() complete.")),this.lastMarshalFromViewsTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterMarshalFromViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterMarshalFromViews:")),!0}onAfterMarshalFromViewsAsync(t){return this.onAfterMarshalFromViews(),t()}onBeforeMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeMarshalToViews:")),!0}onBeforeMarshalToViewsAsync(t){return this.onBeforeMarshalToViews(),t()}onMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onMarshalToViews:")),!0}onMarshalToViewsAsync(t){return this.onMarshalToViews(),t()}marshalToViews(){this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," executing marshalToViews() function...")),this.onBeforeMarshalToViews();let t=Object.keys(this.pict.views),e=[];for(let i=0;i<t.length;i++){let n=this.pict.views[t[i]];e.push(n)}for(let t=0;t<e.length;t++)e[t].marshalToView();return this.onMarshalToViews(),this.onAfterMarshalToViews(),this.lastMarshalToViewsTimestamp=this.fable.log.getTimeStamp(),!0}marshalToViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalToViewsAsync.bind(this));let n=Object.keys(this.pict.views),r=[];for(let t=0;t<n.length;t++){let e=this.pict.views[n[t]];r.push(e)}for(let t=0;t<r.length;t++)e.anticipate(r[t].marshalToViewAsync.bind(r[t]));e.anticipate(this.onMarshalToViewsAsync.bind(this)),e.anticipate(this.onAfterMarshalToViewsAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewsAsync() complete.")),this.lastMarshalToViewsTimestamp=this.fable.log.getTimeStamp(),i(t)))}onAfterMarshalToViews(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterMarshalToViews:")),!0}onAfterMarshalToViewsAsync(t){return this.onAfterMarshalToViews(),t()}onBeforeRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onBeforeRender:")),!0}onBeforeRenderAsync(t){return this.onBeforeRender(),t()}render(t,e,i,n){let r="string"!=typeof t?this.options.MainViewportViewIdentifier:t,o="string"!=typeof e?this.options.MainViewportRenderableHash:e,a="string"!=typeof i?this.options.MainViewportDestinationAddress:i,s="string"!=typeof n?this.options.MainViewportDefaultDataAddress:n;this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," VIEW Renderable[").concat(o,"] Destination[").concat(a,"] TemplateDataAddress[").concat(s,"] render:")),this.onBeforeRender();let c="string"==typeof r&&this.servicesMap.PictView[r];return c?(this.onRender(),c.render(o,a,s),this.onAfterRender(),!0):(this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," could not render from View ").concat(r," because it is not a valid view.")),!1)}onRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onRender:")),!0}onRenderAsync(t){return this.onRender(),t()}renderAsync(t,e,i,n,r){let o="string"!=typeof t?this.options.MainViewportViewIdentifier:t,a="string"!=typeof e?this.options.MainViewportRenderableHash:e,s="string"!=typeof i?this.options.MainViewportDestinationAddress:i,c="string"!=typeof n?this.options.MainViewportDefaultDataAddress:n,l="function"==typeof r?r:"function"==typeof n?n:"function"==typeof i?i:"function"==typeof e?e:"function"==typeof t&&t;l||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),l=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync Auto Callback Error: ").concat(t),t)}),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," VIEW Renderable[").concat(a,"] Destination[").concat(s,"] TemplateDataAddress[").concat(c,"] renderAsync:"));let p=this.fable.newAnticipate();p.anticipate(this.onBeforeRenderAsync.bind(this));let d="string"==typeof o&&this.servicesMap.PictView[o];if(!d){let t="PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," could not asynchronously render from View ").concat(o," because it is not a valid view.");return this.pict.LogNoisiness>3&&this.log.error(t),l(new Error(t))}return p.anticipate(this.onRenderAsync.bind(this)),p.anticipate(t=>{d.renderAsync.call(d,a,s,c,t)}),p.anticipate(this.onAfterRenderAsync.bind(this)),p.wait(l)}onAfterRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," onAfterRender:")),!0}onAfterRenderAsync(t){return this.onAfterRender(),t()}renderMainViewport(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderMainViewport:")),this.render()}renderMainViewportAsync(t){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow APPLICATION [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderMainViewportAsync:")),this.renderAsync(t)}renderAutoViews(){this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning renderAutoViews..."));let t=Object.keys(this.pict.views);t.sort((t,e)=>this.pict.views[t].options.AutoRenderOrdinal-this.pict.views[e].options.AutoRenderOrdinal);for(let e=0;e<t.length;e++){let i=this.pict.views[t[e]];i.options.AutoRender&&i.render()}this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync complete."))}renderAutoViewsAsync(t){let e=this.fable.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t&&t;i||(this.log.warn("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync Auto Callback Error: ").concat(t),t)}),this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," beginning renderAutoViewsAsync..."));let n=Object.keys(this.pict.views);n.sort((t,e)=>this.pict.views[t].options.AutoRenderOrdinal-this.pict.views[e].options.AutoRenderOrdinal);for(let t=0;t<n.length;t++){let i=this.pict.views[n[t]];i.options.AutoRender&&e.anticipate(i.renderAsync.bind(i))}e.wait(t=>(this.lastAutoRenderTimestamp=this.fable.log.getTimeStamp(),this.pict.LogNoisiness>0&&this.log.trace("PictApp [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAutoViewsAsync complete.")),i(t)))}get isPictApplication(){return!0}}},{"../package.json":5,"fable-serviceproviderbase":3}],7:[function(t,e,i){
|
|
2
2
|
/**
|
|
3
3
|
* Theme Diagram Adapter
|
|
4
4
|
*
|
|
@@ -39,5 +39,4 @@
|
|
|
39
39
|
* @author Steven Velozo <steven@velozo.com>
|
|
40
40
|
* @license MIT
|
|
41
41
|
*/
|
|
42
|
-
const n=[{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"},{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"},{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"},{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"},{Key:"errorBkgColor",Var:"--theme-color-status-error",Fallback:"#b62828"},{Key:"errorTextColor",Var:"--theme-color-text-on-brand",Fallback:"#ffffff"},{Key:"fontFamily",Var:"--theme-typography-family-sans",Fallback:"inherit"}];function r(t,e,i){if("undefined"==typeof window||"undefined"==typeof document)return e||"";let n=i||document.documentElement;return n?(getComputedStyle(n).getPropertyValue(t)||"").trim()||e||"":e||""}function o(t){let e={};for(let t=0;t<n.length;t++){let i=n[t];e[i.Key]=r(i.Var,i.Fallback)}if(t&&"object"==typeof t){let i=Object.keys(t);for(let n=0;n<i.length;n++)e[i[n]]=t[i[n]]}return e}function a(t,e){if(!t||"function"!=typeof t.initialize)return!1;let i=e||{},n=i.themeVariables,r=i.config||{},a=o(n),s=Object.assign({startOnLoad:!1,theme:"base",securityLevel:"loose"},r,{themeVariables:a});return t.initialize(s),!0}function s(t){if("undefined"==typeof document)return null;let e="undefined"!=typeof mermaid?mermaid:null;if(!e||"function"!=typeof e.run)return null;let i=function(t){let e="pre.mermaid[data-mermaid-source]";if(!t)return document.querySelectorAll(e);if("string"==typeof t){let i=document.querySelector(t);return i?i.querySelectorAll(e):[]}if(t.querySelectorAll)return t.querySelectorAll(e);return[]}(t);if(!i||i.length<1)return null;for(let t=0;t<i.length;t++){let e=i[t],n=e.getAttribute("data-mermaid-source");null!==n&&(e.textContent=n),e.removeAttribute("data-processed"),e.classList&&"function"==typeof e.classList.remove&&e.classList.remove("mermaid-rendered")}try{let t=e.run({nodes:i});return t&&"function"==typeof t.then?t.then(function(){return c(i),t}):(c(i),t)}catch(t){return Promise.reject(t)}}function c(t){if("undefined"==typeof document)return 0;let e;if(t)if("string"==typeof t){let i=document.querySelector(t);e=i?i.querySelectorAll("pre.mermaid"):[]}else if(void 0!==t.length)e=t;else{if(!t.querySelectorAll)return 0;e=t.querySelectorAll("pre.mermaid")}else e=document.querySelectorAll("pre.mermaid");let i=0;for(let t=0;t<e.length;t++){let n=e[t];if(!n||!n.querySelectorAll)continue;let r=n.querySelectorAll('.node rect[style*="!important"], .node polygon[style*="!important"], .node circle[style*="!important"], .node ellipse[style*="!important"], .node path[style*="!important"], .cluster rect[style*="!important"]');for(let t=0;t<r.length;t++){let e=r[t],n=e.getAttribute("style")||"";n.indexOf("!important")<0||(e.setAttribute("style",n.replace(/\s*!important\s*/gi,"")),i++)}}return i}e.exports={MERMAID_TOKEN_MAP:n,readCSSVar:r,getMermaidTokenMap:function(){return n.map(t=>({Key:t.Key,Var:t.Var,Fallback:t.Fallback}))},buildMermaidThemeVariables:o,initializeMermaid:a,stashMermaidSource:function(t){if(t&&!(t.length<1))for(let e=0;e<t.length;e++){let i=t[e];i&&"function"==typeof i.getAttribute&&(i.hasAttribute("data-mermaid-source")||i.setAttribute("data-mermaid-source",i.textContent))}},refreshMermaidDiagrams:s,stripMermaidStyleImportance:c,adaptMermaid:function(t,e,i){let n=i||{},r={themeVariables:n.themeOverrides,config:n.configOverrides};a(e,r);let o=function(t){if("function"==typeof n.onBeforeRefresh)try{n.onBeforeRefresh(t||{})}catch(t){}a(e,r);let i=s(n.refreshScope);return i&&"function"==typeof i.then&&"function"==typeof n.onAfterRefresh&&i.then(()=>{try{n.onAfterRefresh(t||{})}catch(t){}},()=>{try{n.onAfterRefresh(t||{})}catch(t){}}),i},c=function(){},l=!1;return t&&"function"==typeof t.onApply&&(c=t.onApply(function(t,e){o(e||{})}),l=!0),{dispose:function(){"function"==typeof c&&c()},refresh:o,reinitialize:function(){a(e,r)},subscribed:l}}}},{}],8:[function(t,e,i){e.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:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]}}},{}],9:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../package.json"),o={ProviderIdentifier:!1,AutoInitialize:!0,AutoInitializeOrdinal:0,AutoLoadDataWithApp:!0,AutoLoadDataOrdinal:0,AutoSolveWithApp:!0,AutoSolveOrdinal:0,Manifests:{},Templates:[]};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(o)),e),i),this.fable,this.pict,this.log,this.options,this.UUID,this.Hash,this.options.ProviderIdentifier||(this.options.ProviderIdentifier="AutoProviderID-".concat(this.fable.getUUID())),this.serviceType="PictProvider",this._Package=r,this.pict=this.fable,this.AppData=this.pict.AppData,this.Bundle=this.pict.Bundle,this.initializeTimestamp=!1,this.lastSolvedTimestamp=!1;for(let t=0;t<this.options.Templates.length;t++){let e=this.options.Templates[t];e.hasOwnProperty("Postfix")&&e.hasOwnProperty("Template")?(e.Source||(e.Source="PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," options object.")),this.pict.TemplateProvider.addDefaultTemplate(e.Prefix,e.Postfix,e.Template,e.Source)):this.log.error("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," could not load Default Template ").concat(t," in the options array."),e)}}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow PROVIDER [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialize:")),this.initializeTimestamp?(this.log.warn("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialize called but initialization is already completed. Aborting.")),!1):(this.onBeforeInitialize(),this.onInitialize(),this.onAfterInitialize(),this.initializeTimestamp=this.pict.log.getTimeStamp(),!0)}initializeAsync(t){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow PROVIDER [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initializeAsync:")),this.initializeTimestamp)return this.log.warn("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," async initialize called but initialization is already completed. Aborting.")),t();{let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate");this.pict.LogNoisiness>0&&this.log.info("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," beginning initialization...")),e.anticipate(this.onBeforeInitializeAsync.bind(this)),e.anticipate(this.onInitializeAsync.bind(this)),e.anticipate(this.onAfterInitializeAsync.bind(this)),e.wait(e=>(this.initializeTimestamp=this.pict.log.getTimeStamp(),e?this.log.error("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialization failed: ").concat(e.message||e),{Stack:e.stack}):this.pict.LogNoisiness>0&&this.log.info("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialization complete.")),t()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onPreRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onPreRender:")),!0}onPreRenderAsync(t){return this.onPreRender(),t()}render(){return this.onPreRender()}renderAsync(t){return this.onPreRender(),t()}onPreSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onPreSolve:")),!0}onPreSolveAsync(t){return this.onPreSolve(),t()}solve(){return this.onPreSolve()}solveAsync(t){return this.onPreSolve(),t()}onBeforeLoadDataAsync(t){return t()}onLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onLoadDataAsync:")),t()}onAfterLoadDataAsync(t){return t()}onBeforeSaveDataAsync(t){return t()}onSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onSaveDataAsync:")),t()}onAfterSaveDataAsync(t){return t()}}},{"../package.json":8,"fable-serviceproviderbase":3}],10:[function(t,e,i){const n={javascript:{tokenizer:/(\/\/[^\n]*|\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2|(`(?:[^`\\]|\\.)*?`)|(\/(?![/*])(?:\\.|\[(?:\\.|[^\]])*\]|[^/\\\n])+\/[gimsuvy]*)/g,keywords:/\b(async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|export|extends|finally|for|from|function|get|if|import|in|instanceof|let|new|of|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/g,builtins:/\b(true|false|null|undefined|NaN|Infinity|console|window|document|Math|JSON|Array|Object|String|Number|Boolean|Date|RegExp|Map|Set|Promise|Error|Symbol|parseInt|parseFloat|require|module|exports)\b/g,numbers:/\b(\d+\.?\d*(?:e[+-]?\d+)?|0x[0-9a-fA-F]+|0b[01]+|0o[0-7]+)\b/g},json:{tokenizer:/(\/\/[^\n]*|\/\*[\s\S]*?\*\/)|("(?:[^"\\]|\\.)*")/g,keywords:/\b(true|false|null)\b/g,numbers:/-?\b\d+\.?\d*(?:e[+-]?\d+)?\b/g},html:{tokenizer:/(<!--[\s\S]*?-->)|(["'])(?:(?!\2|\\).|\\.)*?\2|(<\/?[a-zA-Z][a-zA-Z0-9-]*(?:\s+[a-zA-Z-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*\/?>)/g,tagGroupIndex:3},css:{tokenizer:/(\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2/g,selectors:/([.#]?[a-zA-Z_][\w-]*(?:\s*[>+~]\s*[.#]?[a-zA-Z_][\w-]*)*)\s*\{/g,properties:/\b([a-zA-Z-]+)\s*:/g,numbers:/\b(\d+\.?\d*)(px|em|rem|%|vh|vw|s|ms|deg|fr)?\b/g,keywords:/\b(important|inherit|initial|unset|none|auto|block|inline|flex|grid)\b/g},sql:{tokenizer:/(--[^\n]*|\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2/g,keywords:/\b(SELECT|FROM|WHERE|AND|OR|INSERT|INTO|VALUES|UPDATE|SET|DELETE|CREATE|TABLE|DROP|ALTER|ADD|COLUMN|INDEX|JOIN|LEFT|RIGHT|INNER|OUTER|ON|AS|ORDER|BY|GROUP|HAVING|LIMIT|OFFSET|UNION|ALL|DISTINCT|COUNT|SUM|AVG|MIN|MAX|NOT|NULL|IS|IN|BETWEEN|LIKE|EXISTS|CASE|WHEN|THEN|ELSE|END|PRIMARY|KEY|FOREIGN|REFERENCES|CONSTRAINT|DEFAULT|CHECK|UNIQUE|CASCADE|GRANT|REVOKE|COMMIT|ROLLBACK|BEGIN|TRANSACTION|INT|VARCHAR|DATETIME|AUTO_INCREMENT|CURRENT_TIMESTAMP)\b/gi,numbers:/\b\d+\.?\d*\b/g}};function r(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function o(t,e){let i=t;return e.selectors&&(e.selectors.lastIndex=0,i=i.replace(e.selectors,'<span class="function-name">$1</span>{')),e.properties&&(e.properties.lastIndex=0,i=i.replace(e.properties,'<span class="property">$1</span>:')),e.keywords&&(e.keywords.lastIndex=0,i=i.replace(e.keywords,'<span class="keyword">$1</span>')),e.builtins&&(e.builtins.lastIndex=0,i=i.replace(e.builtins,'<span class="keyword">$1</span>')),e.numbers&&(e.numbers.lastIndex=0,i=i.replace(e.numbers,t=>'<span class="number">'.concat(t,"</span>"))),i}function a(t){let e="",i=t,n=i.match(/^(<\/?)([a-zA-Z][a-zA-Z0-9-]*)/);if(!n)return r(t);e+=r(n[1]),e+='<span class="tag">'+r(n[2])+"</span>",i=i.substring(n[0].length);let o,a=/^(\s+)([a-zA-Z-]+)(?:(\s*=\s*)(["'])([^"']*?)\4)?/;for(;null!==(o=i.match(a));)e+=o[1],e+='<span class="attr-name">'+r(o[2])+"</span>",o[3]&&(e+=r(o[3]),e+='<span class="attr-value">'+r(o[4])+r(o[5])+r(o[4])+"</span>"),i=i.substring(o[0].length);return e+=r(i),e}n.js=n.javascript,n.htm=n.html,e.exports=function(t){return function(e){let i=e.textContent,s="string"==typeof t?t.toLowerCase():"javascript",c=n[s];if(!c)return void(e.innerHTML=r(i));if(!c.tokenizer)return void(e.innerHTML=o(r(i),c));let l,p="",d=0,u=c.tagGroupIndex||0;for(c.tokenizer.lastIndex=0;null!==(l=c.tokenizer.exec(i));){if(l.index>d){p+=o(r(i.substring(d,l.index)),c)}let t=l[0];l[1]?p+='<span class="comment">'.concat(r(t),"</span>"):u>0&&l[u]?p+=a(t):p+='<span class="string">'.concat(r(t),"</span>"),d=c.tokenizer.lastIndex}if(d<i.length){p+=o(r(i.substring(d)),c)}e.innerHTML=p}},e.exports.LanguageDefinitions=n},{}],11:[function(t,e,i){e.exports={RenderOnLoad:!0,DefaultRenderable:"CodeEditor-Wrap",DefaultDestinationAddress:"#CodeEditor-Container-Div",Templates:[{Hash:"CodeEditor-Container",Template:"\x3c!-- CodeEditor-Container Rendering Soon --\x3e"}],Renderables:[{RenderableHash:"CodeEditor-Wrap",TemplateHash:"CodeEditor-Container",DestinationAddress:"#CodeEditor-Container-Div"}],TargetElementAddress:"#CodeEditor-Container-Div",CodeDataAddress:!1,Language:"javascript",ReadOnly:!1,Tab:"\t",IndentOn:/[({[]$/,MoveToNewLine:/^[)}\]]/,AddClosing:!0,CatchTab:!0,LineNumbers:!0,DefaultCode:"// Enter your code here\n",CSS:".pict-code-editor-wrap\n{\n\tdisplay: flex;\n\tfont-family: 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 — 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 — 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 — 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"}},{}],12:[function(t,e,i){const n=t("pict-view"),r=t("./Pict-Code-Highlighter.js"),o=t("./Pict-Section-Code-DefaultConfiguration.js");e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},o,e),i),this.initialRenderComplete=!1,this.codeJar=null,this._highlightFunction=null,this._language=this.options.Language||"javascript"}onBeforeInitialize(){return super.onBeforeInitialize(),this._codeJarPrototype=null,this.targetElement=!1,this._highlightFunction=r(this._language),super.onBeforeInitialize()}connectCodeJarPrototype(t){if("function"!=typeof t)return"undefined"!=typeof window&&"function"==typeof window.CodeJar?(this.log.trace("PICT-Code Found CodeJar in window.CodeJar."),void(this._codeJarPrototype=window.CodeJar)):(this.log.error("PICT-Code No CodeJar prototype found. Include codejar via script tag or call connectCodeJarPrototype(CodeJar) explicitly."),!1);this._codeJarPrototype=t}onAfterRender(t){return this.pict.CSSMap.injectCSS(),this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),super.onAfterRender(t)}onAfterInitialRender(){if(this._codeJarPrototype||this.connectCodeJarPrototype(),!this._codeJarPrototype)return this.log.error("PICT-Code Cannot initialize editor; no CodeJar prototype available."),!1;if(this.codeJar)return this.log.error("PICT-Code editor is already initialized!"),!1;let t=this.services.ContentAssignment.getElement(this.options.TargetElementAddress);if(!t||t.length<1)return this.log.error("PICT-Code Could not find target element [".concat(this.options.TargetElementAddress,"]!")),this.targetElement=!1,!1;this.targetElement=t[0],this._buildEditorDOM();let e=this._resolveCodeContent(),i={};this.options.Tab&&(i.tab=this.options.Tab),this.options.IndentOn&&(i.indentOn=this.options.IndentOn),this.options.MoveToNewLine&&(i.moveToNewLine=this.options.MoveToNewLine),void 0!==this.options.AddClosing&&(i.addClosing=this.options.AddClosing),void 0!==this.options.CatchTab&&(i.catchTab=this.options.CatchTab),this.customConfigureEditorOptions(i);let n=this._editorElement;if(this.codeJar=this._codeJarPrototype(n,this._highlightFunction,i),this._resetEditorWrapStyles(),e&&this.codeJar.updateCode(e),this.codeJar.onUpdate(t=>{this._updateLineNumbers(),this.onCodeChange(t)}),this._updateLineNumbers(),this._lineNumbersElement){let t=this._lineNumbersElement;n.addEventListener("scroll",function(){t.style.transform="translateY(-"+n.scrollTop+"px)"},{passive:!0})}if(this._syncGutterMetrics(),this._lineNumbersElement&&"function"==typeof ResizeObserver){let t=this;this._editorResizeObserver=new ResizeObserver(function(){t._syncGutterMetrics()}),this._editorResizeObserver.observe(n)}if(this._lineNumbersElement&&"function"==typeof MutationObserver){let t=this;this._editorStyleObserver=new MutationObserver(function(){t._syncGutterMetrics()}),this._editorStyleObserver.observe(n,{attributes:!0,attributeFilter:["style","class"]})}this.options.ReadOnly&&n.setAttribute("contenteditable","false")}_buildEditorDOM(){this.targetElement.innerHTML="";let t=document.createElement("div");if(t.className="pict-code-editor-wrap",this.options.LineNumbers){let e=document.createElement("div");e.className="pict-code-line-numbers",t.appendChild(e),this._lineNumbersElement=e}let e=document.createElement("div");e.className="pict-code-editor language-"+this._language,this.options.LineNumbers||(e.className+=" pict-code-no-line-numbers"),t.appendChild(e),this.targetElement.appendChild(t),this._editorElement=e,this._wrapElement=t}_updateLineNumbers(){if(!this.options.LineNumbers||!this._lineNumbersElement||!this._editorElement)return;let t=(this._editorElement.textContent||"").split("\n").length,e="";for(let i=1;i<=t;i++)e+="<span>".concat(i,"</span>");this._lineNumbersElement.innerHTML=e,this._syncGutterMetrics()}_syncGutterMetrics(){if(!this._lineNumbersElement||!this._editorElement)return;if("undefined"==typeof window||"function"!=typeof window.getComputedStyle)return;let t=window.getComputedStyle(this._editorElement),e=t.lineHeight;if(e&&"normal"!==e&&(this._lineNumbersElement.style.lineHeight=e),t.paddingTop&&(this._lineNumbersElement.style.paddingTop=t.paddingTop),t.paddingBottom&&(this._lineNumbersElement.style.paddingBottom=t.paddingBottom),t.fontFamily&&(this._lineNumbersElement.style.fontFamily=t.fontFamily),"undefined"!=typeof console&&console.warn){let t=this._lineNumbersElement.querySelector("span");if(t){let i=t.getBoundingClientRect().height,n=parseFloat(e);i&&n&&Math.abs(i-n)>.5&&console.warn("[pict-section-code] gutter/editor row-height mismatch: gutter "+i+"px vs editor "+n+"px — line numbers will drift. Check for CSS overriding .pict-code-line-numbers line-height.")}}}syncMetrics(){this._syncGutterMetrics()}_resetEditorWrapStyles(){this._editorElement&&(this._editorElement.style.whiteSpace="pre",this._editorElement.style.overflowWrap="normal")}_resolveCodeContent(){if(this.options.CodeDataAddress){const t={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};let e=this.fable.manifest.getValueByHash(t,this.options.CodeDataAddress);if("string"==typeof e)return e;this.log.warn("PICT-Code Address [".concat(this.options.CodeDataAddress,"] did not return a string; it was ").concat(typeof e,"."))}return this.options.DefaultCode||""}customConfigureEditorOptions(t){}onCodeChange(t){if(this.options.CodeDataAddress){const e={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};this.fable.manifest.setValueByHash(e,this.options.CodeDataAddress,t)}}getCode(){return this.codeJar?this.codeJar.toString():(this.log.warn("PICT-Code getCode called before editor initialized."),"")}setCode(t){this.codeJar?(this.codeJar.updateCode(t),this._updateLineNumbers()):this.log.warn("PICT-Code setCode called before editor initialized.")}setLanguage(t){if(this._language=t,this._highlightFunction=r(t),this._editorElement&&(this._editorElement.className="pict-code-editor language-"+t,this.options.LineNumbers||(this._editorElement.className+=" pict-code-no-line-numbers")),this.codeJar){let t=this.codeJar.toString();this.codeJar.destroy(),this.codeJar=this._codeJarPrototype(this._editorElement,this._highlightFunction,{tab:this.options.Tab,catchTab:this.options.CatchTab,addClosing:this.options.AddClosing}),this._resetEditorWrapStyles(),this.codeJar.updateCode(t),this.codeJar.onUpdate(t=>{this._updateLineNumbers(),this.onCodeChange(t)})}}setHighlightFunction(t){if("function"==typeof t){if(this._highlightFunction=t,this.codeJar){let t=this.codeJar.toString();this.codeJar.destroy(),this.codeJar=this._codeJarPrototype(this._editorElement,this._highlightFunction,{tab:this.options.Tab,catchTab:this.options.CatchTab,addClosing:this.options.AddClosing}),this._resetEditorWrapStyles(),this.codeJar.updateCode(t),this.codeJar.onUpdate(t=>{this._updateLineNumbers(),this.onCodeChange(t)})}}else this.log.error("PICT-Code setHighlightFunction requires a function.")}setReadOnly(t){this.options.ReadOnly=t,this._editorElement&&this._editorElement.setAttribute("contenteditable",t?"false":"true")}destroy(){this._editorResizeObserver&&(this._editorResizeObserver.disconnect(),this._editorResizeObserver=null),this._editorStyleObserver&&(this._editorStyleObserver.disconnect(),this._editorStyleObserver=null),this.codeJar&&(this.codeJar.destroy(),this.codeJar=null)}marshalToView(){if(super.marshalToView(),this.codeJar&&this.options.CodeDataAddress){let t=this._resolveCodeContent();"string"==typeof t&&(this.codeJar.updateCode(t),this._updateLineNumbers())}}marshalFromView(){super.marshalFromView(),this.codeJar&&this.options.CodeDataAddress&&this.onCodeChange(this.codeJar.toString())}},e.exports.default_configuration=o,e.exports.createHighlighter=r;const a=t("./demos");e.exports.demos=a.demos,e.exports.registerWithDocuserve=a.registerWithDocuserve},{"./Pict-Code-Highlighter.js":10,"./Pict-Section-Code-DefaultConfiguration.js":11,"./demos":13,"pict-view":38}],13:[function(t,e,i){const n=t("../Pict-Section-Code.js");function r(t,e,i){let r="demo-code-"+(i.Hash||"unnamed")+"-"+Date.now();e.innerHTML='<div id="'+r+'"></div>';let o={ViewIdentifier:"Demo-Code-"+r,DefaultDestinationAddress:"#"+r,Templates:[{Hash:"CodeEditor-Container",Template:"\x3c!-- demo code editor renders here --\x3e"}],Renderables:[{RenderableHash:"CodeEditor-Wrap",TemplateHash:"CodeEditor-Container",DestinationAddress:"#"+r}],TargetElementAddress:"#"+r,Language:i.Language||"javascript",ReadOnly:!!i.ReadOnly,LineNumbers:!1!==i.LineNumbers,Tab:i.Tab||"\t",AddClosing:!1!==i.AddClosing,CatchTab:!1!==i.CatchTab,DefaultCode:i.Code||"// example code\n",AutoRender:!1,RenderOnLoad:!1},a=t.addView(o.ViewIdentifier,o,n);if(!a)return null;if("undefined"!=typeof window&&(window.CodeJarModules&&"function"==typeof window.CodeJarModules.CodeJar?a.connectCodeJarPrototype(window.CodeJarModules.CodeJar):"function"==typeof window.CodeJar&&a.connectCodeJarPrototype(window.CodeJar),window.CodeJarModules&&window.CodeJarModules.hljs)){let t=window.CodeJarModules.hljs,e=o.Language;a._highlightFunction=function(i){i.removeAttribute("data-highlighted"),delete i.dataset.highlighted,i.className=i.className.replace(/\bhljs\b/g,"").replace(/\blanguage-\S+/g,"").trim(),i.classList.add("language-"+e);try{t.highlightElement(i)}catch(t){}}}try{a.render()}catch(t){}return a}const o=[{DemoSchemaVersion:1,Hash:"javascript-editor",Group:"pict",Module:"pict-section-code",Name:"JavaScript editor",Description:"Default pict-section-code configuration — line numbers on, highlight.js for JavaScript, two-space tab.",Spec:{Hash:"javascript-editor",Language:"javascript",LineNumbers:!0,Tab:" ",Code:"// A small example — try editing me.\nfunction fibonacci(n) {\n if (n <= 1) return n;\n return fibonacci(n - 1) + fibonacci(n - 2);\n}\n\nfor (let i = 0; i < 10; i++) {\n console.log(`fib(${i}) =`, fibonacci(i));\n}\n"},Mount:r,Sources:[{Name:"spec.json",Language:"json",Content:'{\n "Language": "javascript",\n "LineNumbers": true,\n "Tab": " ",\n "Code": "function fibonacci(n) { … }"\n}'}]},{DemoSchemaVersion:1,Hash:"json-readonly",Group:"pict",Module:"pict-section-code",Name:"JSON viewer (read-only)",Description:'Read-only mode with line numbers off — useful for embedded "show me the payload" surfaces in dashboards.',Spec:{Hash:"json-readonly",Language:"json",ReadOnly:!0,LineNumbers:!1,Code:'{\n "version": "1.0.7",\n "syntax": {\n "keyword": "#A626A4",\n "string": "#50A14F",\n "number": "#986801",\n "function": "#4078F2"\n },\n "features": ["highlighting", "line-numbers", "readonly", "themed"]\n}\n'},Mount:r,Sources:[{Name:"spec.json",Language:"json",Content:'{\n "Language": "json",\n "ReadOnly": true,\n "LineNumbers": false\n}'}]},{DemoSchemaVersion:1,Hash:"css-editor",Group:"pict",Module:"pict-section-code",Name:"CSS editor (4-space tab)",Description:"CSS-flavoured highlighting with a 4-space tab and bracket auto-close turned off — leaner editing for stylesheet snippets.",Spec:{Hash:"css-editor",Language:"css",LineNumbers:!0,Tab:" ",AddClosing:!1,Code:"/* Theme-aware token usage */\n.docuserve-demo-title {\n color: var(--theme-color-text-primary, #3D3229);\n font-size: 1.5em;\n font-weight: 600;\n}\n\n.docuserve-demo-description {\n color: var(--theme-color-text-secondary, #5E5549);\n line-height: 1.55;\n}\n"},Mount:r,Sources:[{Name:"spec.json",Language:"json",Content:'{\n "Language": "css",\n "LineNumbers": true,\n "Tab": " ",\n "AddClosing": false\n}'}]}];e.exports=o,e.exports.demos=o,e.exports.registerWithDocuserve=function(t){return t&&t.providers&&t.providers["Docuserve-Demos"]?t.providers["Docuserve-Demos"].registerAll(o):0}},{"../Pict-Section-Code.js":12}],14:[function(t,e,i){e.exports=t("./views/Pict-View-Content.js"),e.exports.PictContentProvider=t("./providers/Pict-Provider-Content.js"),e.exports.PictContentDemoView=t("./views/PictView-Content-Demo.js")},{"./providers/Pict-Provider-Content.js":15,"./views/Pict-View-Content.js":16,"./views/PictView-Content-Demo.js":17}],15:[function(t,e,i){const n=t("pict-provider"),r=t("pict-section-code").createHighlighter;e.exports=class extends n{constructor(t,e,i){super(t,e,i)}highlightCode(t,e){if(!t)return"";let i={textContent:t,innerHTML:""};return r(e)(i),i.innerHTML}generateLineNumbers(t){if(!t)return"<span>1</span>";let e=t.split("\n").length,i="";for(let t=1;t<=e;t++)i+="<span>"+t+"</span>";return i}parseMarkdown(t,e,i,n){if(!t)return"";let r=t.split("\n"),o=[],a=!1,s=0,c="",l=[],p=!1,d="",u=!1,h=[],m=!1,g=[],f=[],D=()=>{f.length>0&&(o.push("<p>"+f.map(t=>this.parseInline(t,e,i,n)).join(" ")+"</p>"),f=[])};for(let t=0;t<r.length;t++){let y=r[t];if(!a&&y.trim().match(/^\$\$/)){m?(o.push('<div class="pict-content-katex-display">'+g.join("\n")+"</div>"),m=!1,g=[]):(D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),u&&(o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,i,n)+"</blockquote>"),u=!1,h=[]),m=!0);continue}if(m){g.push(y);continue}let v=y.match(/^(`{3,})/);if(v){let t=v[1].length;if(a){if(t>=s&&y.trim()===v[1]){if("mermaid"===c)o.push('<pre class="mermaid">'+l.join("\n")+"</pre>");else if("excalidraw"===c){let t,e=l.join("\n");try{t=encodeURIComponent(e)}catch(e){t=""}o.push('<div class="pict-excalidraw-fence" data-scene="'+t+'"><div class="pict-excalidraw-fence-loading">Rendering Excalidraw diagram…</div></div>')}else{let t=l.join("\n"),e=this.highlightCode(t,c),i=this.generateLineNumbers(t);o.push('<div class="pict-content-code-wrap"><div class="pict-content-code-line-numbers">'+i+'</div><pre><code class="language-'+this.escapeHTML(c)+'">'+e+"</code></pre></div>")}a=!1,s=0,c="",l=[];continue}l.push(y);continue}D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),u&&(o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,i,n)+"</blockquote>"),u=!1,h=[]),s=t,c=y.replace(/^`{3,}/,"").trim(),a=!0;continue}if(a){l.push(y);continue}if(y.match(/^>\s?/)){u||(D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),u=!0,h=[]),h.push(y.replace(/^>\s?/,""));continue}if(u&&(o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,i,n)+"</blockquote>"),u=!1,h=[]),y.match(/^(-{3,}|\*{3,}|_{3,})\s*$/)){D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),o.push("<hr>");continue}let b=y.match(/^(#{1,6})\s+(.+)/);if(b){D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1);let t=b[1].length,r=this.parseInline(b[2],e,i,n),a=b[2].toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-");o.push("<h"+t+' id="'+a+'">'+r+"</h"+t+">");continue}let T=y.match(/^(\s*)[-*+]\s+(.*)/);if(T){D(),p&&"ul"===d||(p&&o.push("ul"===d?"</ul>":"</ol>"),o.push("<ul>"),p=!0,d="ul"),o.push("<li>"+this.parseInline(T[2],e,i,n)+"</li>");continue}let w=y.match(/^(\s*)\d+\.\s+(.*)/);if(w)D(),p&&"ol"===d||(p&&o.push("ul"===d?"</ul>":"</ol>"),o.push("<ol>"),p=!0,d="ol"),o.push("<li>"+this.parseInline(w[2],e,i,n)+"</li>");else{if(p&&y.match(/^\s+\S/)&&o.length>0&&o[o.length-1].endsWith("</li>")){let t=o.length-1,r=o[t].slice(0,-5);o[t]=r+" "+this.parseInline(y.trim(),e,i,n)+"</li>";continue}if(p&&""!==y.trim()&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),""!==y.trim()){if(y.match(/^\|/)&&t+1<r.length&&r[t+1].match(/^\|[\s-:|]+\|/)){D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1);let a="<table>",s=y.split("|").filter(t=>""!==t.trim());a+="<thead><tr>";for(let t=0;t<s.length;t++)a+="<th>"+this.parseInline(s[t].trim(),e,i,n)+"</th>";for(a+="</tr></thead>",t++,a+="<tbody>";t+1<r.length&&r[t+1].match(/^\|/);){t++;let o=r[t].split("|").filter(t=>""!==t.trim());a+="<tr>";for(let t=0;t<o.length;t++)a+="<td>"+this.parseInline(o[t].trim(),e,i,n)+"</td>";a+="</tr>"}a+="</tbody></table>",o.push(a);continue}f.push(y)}else D()}}if(D(),p&&o.push("ul"===d?"</ul>":"</ol>"),u&&o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,i,n)+"</blockquote>"),a){let t=l.join("\n"),e=this.highlightCode(t,c),i=this.generateLineNumbers(t);o.push('<div class="pict-content-code-wrap"><div class="pict-content-code-line-numbers">'+i+"</div><pre><code>"+e+"</code></pre></div>")}return o.join("\n")}parseInline(t,e,i,n){if(!t)return"";let r=t,o=[];return r=r.replace(/`([^`]+)`/g,(t,e)=>{let i=o.length;return o.push("<code>"+e+"</code>"),"\0CODEINLINE"+i+"\0"}),r=r.replace(/\$([^\$\s][^\$]*?[^\$\s])\$/g,'<span class="pict-content-katex-inline">$1</span>'),r=r.replace(/\$([^\$\s])\$/g,'<span class="pict-content-katex-inline">$1</span>'),r=r.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,(t,e,n)=>{let r=n;if("function"==typeof i){let t=i(n,e);t&&(r=t)}return'<img src="'+r+'" alt="'+e+'">'}),r=r.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(t,i,n)=>{if("function"==typeof e){let t=e(n,i);if(t){let e=t.target?' target="'+t.target+'"':"",n=t.rel?' rel="'+t.rel+'"':"";return'<a href="'+t.href+'"'+e+n+">"+i+"</a>"}}return n.match(/^https?:\/\//)?'<a href="'+n+'" target="_blank" rel="noopener">'+i+"</a>":'<a href="'+n+'">'+i+"</a>"}),r=r.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),r=r.replace(/(^|[^A-Za-z0-9_])__([^_]+?)__(?![A-Za-z0-9_])/g,"$1<strong>$2</strong>"),r=r.replace(/\*([^*]+)\*/g,"<em>$1</em>"),r=r.replace(/(^|[^A-Za-z0-9_])_([^_]+?)_(?![A-Za-z0-9_])/g,"$1<em>$2</em>"),r=r.replace(/\x00CODEINLINE(\d+)\x00/g,(t,e)=>o[parseInt(e)]),"function"==typeof n&&(r=this._applyVocabularyLinks(r,n)),r}_applyVocabularyLinks(t,e){if(!t||"function"!=typeof e)return t;let i={},n=t.split(/(<[^>]+>)/g),r=0,o=["code","a","pre","span"];for(let t=0;t<n.length;t++){let a=n[t];if("<"===a.charAt(0)){let t=a.match(/^<(\w+)/);t&&-1!==o.indexOf(t[1].toLowerCase())&&r++;let e=a.match(/^<\/(\w+)/);e&&-1!==o.indexOf(e[1].toLowerCase())&&(r=Math.max(0,r-1));continue}r>0||(n[t]=a.replace(/\b([A-Za-z][A-Za-z0-9_-]{1,30})\b/g,(t,n)=>{if(n.length<3)return t;let r=n.toLowerCase();if(i[r])return t;let o=e(r);if(!o)return t;i[r]=!0;let a=(o.short||"").replace(/"/g,""");return'<span class="pict-vocab-term" data-vocab-slug="'+o.slug+'" data-vocab-title="'+(o.title||"").replace(/"/g,""")+'" data-vocab-short="'+a+'">'+t+"</span>"}))}return n.join("")}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}},e.exports.default_configuration={ProviderIdentifier:"Pict-Content",AutoInitialize:!0,AutoInitializeOrdinal:0}},{"pict-provider":9,"pict-section-code":12}],16:[function(t,e,i){const n=t("pict-view");class r extends n{constructor(t,e,i){super(t,e,i)}displayContent(t,e){let i=e||"Pict-Content-Body";this.pict.ContentAssignment.assignContent("#"+i,t);let n=document.getElementById(i);n&&n.parentElement&&(n.parentElement.scrollTop=0),n&&!n.classList.contains("pict-content")&&n.classList.add("pict-content"),this.enableFullscreenViewers(i,{skipMermaid:!0}),this.renderMermaidDiagrams(i),this.renderExcalidrawDiagrams(i),this.renderKaTeXEquations(i)}renderExcalidrawDiagrams(t){if("undefined"==typeof document)return;let e=t||"Pict-Content-Body",i=document.getElementById(e);if(!i)return;let n=i.querySelectorAll(".pict-excalidraw-fence:not([data-rendered])");if(n.length<1)return;let r="undefined"!=typeof window?window.PictSectionExcalidrawVendor:null;if(r&&"function"==typeof r.exportToSvg)for(let t=0;t<n.length;t++){let e,i=n[t],o=i.getAttribute("data-scene")||"",a="";try{a=decodeURIComponent(o)}catch(t){a=""}try{e=JSON.parse(a)}catch(t){this._renderExcalidrawFenceError(i,"Invalid scene JSON: "+t.message);continue}let s={elements:e.elements||[],appState:Object.assign({exportEmbedScene:!0},e.appState||{}),files:e.files||{}};r.exportToSvg(s).then(t=>{t&&(t.removeAttribute("width"),t.removeAttribute("height"),t.setAttribute("style","max-width: 100%; height: auto;"),i.innerHTML="",i.appendChild(t),i.setAttribute("data-rendered","true"))}).catch(t=>{this._renderExcalidrawFenceError(i,"Excalidraw render failed: "+(t&&t.message?t.message:t))})}else this.log&&this.log.warn&&!this._excalidrawBundleWarnLogged&&(this.log.warn("pict-excalidraw fence(s) found but pict-section-excalidraw wrapper bundle is not loaded — leaving as placeholders."),this._excalidrawBundleWarnLogged=!0)}_renderExcalidrawFenceError(t,e){t.setAttribute("data-rendered","true"),t.classList.add("pict-excalidraw-fence-error"),t.innerHTML='<div class="pict-excalidraw-fence-error-message"></div>';let i=t.querySelector(".pict-excalidraw-fence-error-message");i&&(i.textContent=e),this.log&&this.log.warn&&this.log.warn("pict-excalidraw fence: "+e)}_ensureMermaidAdapter(){if(this._mermaidAdapter)return this._mermaidAdapter;if("undefined"==typeof mermaid||"undefined"==typeof window)return null;let e=this.pict&&this.pict.providers&&this.pict.providers.Theme;try{if(e&&e.diagram&&"function"==typeof e.diagram.adaptMermaid)this._mermaidAdapter=e.diagram.adaptMermaid(mermaid,{});else{let e=t("pict-provider-theme/source/Theme-Diagram-Adapter.js");e.initializeMermaid(mermaid),this._mermaidAdapter={refresh:function(){return e.refreshMermaidDiagrams()},reinitialize:function(){e.initializeMermaid(mermaid)},dispose:function(){},subscribed:!1}}}catch(t){this.log&&this.log.warn&&this.log.warn("Mermaid theme adapter init failed: "+t.message),this._mermaidAdapter=null}return this._mermaidAdapter}renderMermaidDiagrams(t){if("undefined"==typeof mermaid)return;let e=t||"Pict-Content-Body",i=document.getElementById(e);if(!i)return;let n=i.querySelectorAll("pre.mermaid");if(n.length<1)return;this._ensureMermaidAdapter();let r=this.pict&&this.pict.providers&&this.pict.providers.Theme;if(r&&r.diagram&&"function"==typeof r.diagram.stashMermaidSource)r.diagram.stashMermaidSource(n);else for(let t=0;t<n.length;t++){let e=n[t];e.hasAttribute("data-mermaid-source")||e.setAttribute("data-mermaid-source",e.textContent)}try{let t=mermaid.run({nodes:n});if(t&&"function"==typeof t.then)t.then(()=>{let t=this.pict&&this.pict.providers&&this.pict.providers.Theme;t&&t.diagram&&"function"==typeof t.diagram.stripMermaidStyleImportance&&t.diagram.stripMermaidStyleImportance(n),this.enableFullscreenViewers(e,{onlyMermaid:!0})}).catch(t=>{this.log.error("Mermaid rendering error: "+(t&&t.message?t.message:t))});else{let t=this.pict&&this.pict.providers&&this.pict.providers.Theme;t&&t.diagram&&"function"==typeof t.diagram.stripMermaidStyleImportance&&t.diagram.stripMermaidStyleImportance(n),this.enableFullscreenViewers(e,{onlyMermaid:!0})}}catch(t){this.log.error("Mermaid rendering error: "+t.message)}}renderKaTeXEquations(t){if("undefined"==typeof katex)return;let e=t||"Pict-Content-Body",i=document.getElementById(e);if(!i)return;let n=i.querySelectorAll(".pict-content-katex-inline");for(let t=0;t<n.length;t++)try{katex.render(n[t].textContent,n[t],{throwOnError:!1,displayMode:!1})}catch(t){this.log.warn("KaTeX inline error: "+t.message)}let r=i.querySelectorAll(".pict-content-katex-display");for(let t=0;t<r.length;t++)try{katex.render(r[t].textContent,r[t],{throwOnError:!1,displayMode:!0})}catch(t){this.log.warn("KaTeX display error: "+t.message)}}enableFullscreenViewers(t,e){let i=t||"Pict-Content-Body",n=document.getElementById(i);if(!n)return;let r=e||{};if(!r.onlyMermaid){let t=n.querySelectorAll("img:not([data-fullscreen-source])");for(let e=0;e<t.length;e++){let i=t[e];i.setAttribute("data-fullscreen-source","image");let n=i.getAttribute("alt");if(!n){n=(i.getAttribute("src")||"").split("/").pop().split("?")[0]||"Image"}i.setAttribute("data-fullscreen-title",n)}let e=n.querySelectorAll(".pict-content-code-wrap:not([data-code-actions-wired])");for(let t=0;t<e.length;t++)this._wireCodeActions(e[t])}if(!r.skipMermaid){let t=n.querySelectorAll("pre.mermaid:not([data-fullscreen-source])");for(let e=0;e<t.length;e++){let i=t[e];i.querySelector("svg")&&(i.setAttribute("data-fullscreen-source","mermaid"),i.setAttribute("data-fullscreen-title","Mermaid Diagram"))}}n.__pictFullscreenWired||(n.__pictFullscreenWired=!0,n.addEventListener("click",t=>{let e=t.target;for(;e&&e!==n&&!e.hasAttribute("data-fullscreen-source");)e=e.parentElement;e&&e!==n&&e.hasAttribute("data-fullscreen-source")&&(t.preventDefault(),this._openFullscreen(e))}))}_wireCodeActions(t){if(!t||t.hasAttribute("data-code-actions-wired"))return;t.setAttribute("data-code-actions-wired","true");let e=t.querySelector('code[class*="language-"]'),i="Code";if(e){let t=(e.getAttribute("class")||"").match(/language-(\S+)/);t&&(i=t[1]+" code")}t.setAttribute("data-code-language",i);let n=document.createElement("div");n.className="pict-content-code-container";let r=document.createElement("div");r.className="pict-content-code-actions",r.setAttribute("aria-hidden","false");let o=document.createElement("button");o.type="button",o.className="pict-content-code-action-btn",o.setAttribute("aria-label","Open code in fullscreen"),o.setAttribute("title","Open in fullscreen"),o.innerHTML='<svg viewBox="0 0 16 16" aria-hidden="true"><polyline points="3 6 3 3 6 3"></polyline><polyline points="13 6 13 3 10 3"></polyline><polyline points="3 10 3 13 6 13"></polyline><polyline points="13 10 13 13 10 13"></polyline></svg>';let a=document.createElement("button");a.type="button",a.className="pict-content-code-action-btn",a.setAttribute("aria-label","Copy code to clipboard"),a.setAttribute("title","Copy code"),a.innerHTML='<svg viewBox="0 0 16 16" aria-hidden="true"><rect x="5" y="5" width="9" height="9" rx="1.25"></rect><path d="M11 5V3.25A1.25 1.25 0 0 0 9.75 2H3.25A1.25 1.25 0 0 0 2 3.25v6.5A1.25 1.25 0 0 0 3.25 11H5"></path></svg>',r.appendChild(o),r.appendChild(a),t.parentNode.insertBefore(n,t),n.appendChild(t),n.appendChild(r),o.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this._openCodeFullscreen(t)}),a.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this._copyCodeToClipboard(t,a)})}_openCodeFullscreen(t){let e=this._buildFullscreenOverlay();t.setAttribute("data-fullscreen-source","code"),t.setAttribute("data-fullscreen-title",t.getAttribute("data-code-language")||"Code"),e.open(t)}_copyCodeToClipboard(t,e){let i=t.querySelector("code"),n=i?i.textContent:t.textContent,r=()=>{e.classList.add("is-copied"),e.setAttribute("title","Copied!"),setTimeout(()=>{e.classList.remove("is-copied"),e.setAttribute("title","Copy code")},1400)},o=()=>{e.classList.add("is-copy-failed"),e.setAttribute("title","Copy failed"),setTimeout(()=>{e.classList.remove("is-copy-failed"),e.setAttribute("title","Copy code")},1400)};try{if(navigator&&navigator.clipboard&&"function"==typeof navigator.clipboard.writeText)return void navigator.clipboard.writeText(n).then(r).catch(o)}catch(t){}try{let t=document.createElement("textarea");t.value=n,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let e=document.execCommand("copy");document.body.removeChild(t),e?r():o()}catch(t){o()}}_buildFullscreenOverlay(){if(r._FullscreenOverlay)return r._FullscreenOverlay;let t=document.createElement("div");t.className="pict-fullscreen-overlay",t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-labelledby","pict-fullscreen-title"),t.setAttribute("hidden",""),t.innerHTML='<div class="pict-fullscreen-titlebar"><span class="pict-fullscreen-title" id="pict-fullscreen-title"></span><div class="pict-fullscreen-controls"><button type="button" class="pict-fullscreen-btn" data-action="zoom-out" aria-label="Zoom out" title="Zoom out"><svg viewBox="0 0 16 16" aria-hidden="true"><line x1="3" y1="8" x2="13" y2="8"></line></svg></button><button type="button" class="pict-fullscreen-btn" data-action="zoom-reset" aria-label="Reset zoom" title="Reset zoom"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="5"></circle><line x1="8" y1="5" x2="8" y2="11"></line><line x1="5" y1="8" x2="11" y2="8"></line></svg></button><button type="button" class="pict-fullscreen-btn" data-action="zoom-in" aria-label="Zoom in" title="Zoom in"><svg viewBox="0 0 16 16" aria-hidden="true"><line x1="3" y1="8" x2="13" y2="8"></line><line x1="8" y1="3" x2="8" y2="13"></line></svg></button><button type="button" class="pict-fullscreen-btn pict-fullscreen-close" data-action="close" aria-label="Close" title="Close (Esc)"><svg viewBox="0 0 16 16" aria-hidden="true"><line x1="4" y1="4" x2="12" y2="12"></line><line x1="12" y1="4" x2="4" y2="12"></line></svg></button></div></div><div class="pict-fullscreen-stage"><div class="pict-fullscreen-content"></div></div>',document.body.appendChild(t);let e={scale:1,translateX:0,translateY:0,isPanning:!1,didPan:!1,currentKind:"",panStartX:0,panStartY:0,panOrigX:0,panOrigY:0,pinchInitialDistance:0,pinchInitialScale:1},i=t.querySelector(".pict-fullscreen-stage"),n=t.querySelector(".pict-fullscreen-content"),o=t.querySelector(".pict-fullscreen-title"),a=()=>{n.style.transform="translate("+e.translateX+"px, "+e.translateY+"px) scale("+e.scale+")",i.classList.toggle("is-zoomed",e.scale>1.001)},s=(t,n,r)=>{let o=(s=t)<.5?.5:s>8?8:s;var s;let c=i.getBoundingClientRect(),l=void 0!==n?n:c.left+c.width/2,p=void 0!==r?r:c.top+c.height/2,d=l-(c.left+c.width/2),u=p-(c.top+c.height/2),h=o/e.scale;e.translateX=d-h*(d-e.translateX),e.translateY=u-h*(u-e.translateY),e.scale=o,a()},c=()=>{e.scale=1,e.translateX=0,e.translateY=0,a()},l=()=>{t.setAttribute("hidden",""),n.innerHTML="",c(),document.documentElement.style.removeProperty("overflow"),document.removeEventListener("keydown",p)},p=t=>{"Escape"===t.key?(t.preventDefault(),l()):"+"===t.key||"="===t.key?(t.preventDefault(),s(e.scale+.25)):"-"===t.key||"_"===t.key?(t.preventDefault(),s(e.scale-.25)):"0"===t.key&&(t.preventDefault(),c())};t.addEventListener("click",n=>{e.didPan?e.didPan=!1:n.target!==t&&n.target!==i||l()}),t.querySelectorAll("[data-action]").forEach(t=>{t.addEventListener("click",i=>{i.stopPropagation();let n=t.getAttribute("data-action");"close"===n?l():"zoom-in"===n?s(e.scale+.25):"zoom-out"===n?s(e.scale-.25):"zoom-reset"===n&&c()})}),i.addEventListener("wheel",t=>{if("code"===e.currentKind)return;t.preventDefault();let i=.15*(-t.deltaY>0?1:-1);s(e.scale+i,t.clientX,t.clientY)},{passive:!1}),i.addEventListener("pointerdown",t=>{"code"!==e.currentKind&&(e.scale<=1.001||t.target.closest(".pict-fullscreen-controls")||(e.isPanning=!0,e.panStartX=t.clientX,e.panStartY=t.clientY,e.panOrigX=e.translateX,e.panOrigY=e.translateY,i.setPointerCapture(t.pointerId),i.classList.add("is-panning")))}),i.addEventListener("pointermove",t=>{e.isPanning&&(e.translateX=e.panOrigX+(t.clientX-e.panStartX),e.translateY=e.panOrigY+(t.clientY-e.panStartY),a())});let d=t=>{if(e.isPanning){e.isPanning=!1,e.didPan=!0,i.classList.remove("is-panning");try{i.releasePointerCapture(t.pointerId)}catch(t){}}};i.addEventListener("pointerup",d),i.addEventListener("pointercancel",d);let u={};return i.addEventListener("touchstart",t=>{for(let e=0;e<t.touches.length;e++){let i=t.touches[e];u[i.identifier]={x:i.clientX,y:i.clientY}}if(2===t.touches.length){let i=t.touches[0],n=t.touches[1],r=n.clientX-i.clientX,o=n.clientY-i.clientY;e.pinchInitialDistance=Math.sqrt(r*r+o*o),e.pinchInitialScale=e.scale}},{passive:!0}),i.addEventListener("touchmove",t=>{if(2===t.touches.length&&e.pinchInitialDistance>0){t.preventDefault();let i=t.touches[0],n=t.touches[1],r=n.clientX-i.clientX,o=n.clientY-i.clientY,a=Math.sqrt(r*r+o*o)/e.pinchInitialDistance,c=(i.clientX+n.clientX)/2,l=(i.clientY+n.clientY)/2;s(e.pinchInitialScale*a,c,l)}},{passive:!1}),i.addEventListener("touchend",()=>{u={},e.pinchInitialDistance=0}),r._FullscreenOverlay={element:t,content:n,titleEl:o,state:e,open:i=>{let r=i.getAttribute("data-fullscreen-title")||"";o.textContent=r,n.innerHTML="";let a,s=i.getAttribute("data-fullscreen-source");if(e.currentKind=s||"","mermaid"===s){let t=i.querySelector("svg");t?(a=t.cloneNode(!0),a.classList.add("pict-fullscreen-mermaid-svg"),a.removeAttribute("style"),a.removeAttribute("width"),a.removeAttribute("height")):a=i.cloneNode(!0)}else if("diagram"===s){let t="svg"===String(i.tagName).toLowerCase()?i:i.querySelector("svg");t?(a=t.cloneNode(!0),a.classList.add("pict-fullscreen-diagram-svg"),a.removeAttribute("style"),a.removeAttribute("width"),a.removeAttribute("height")):a=i.cloneNode(!0)}else"image"===s?(a=i.cloneNode(!0),a.classList.add("pict-fullscreen-img")):(a=i.cloneNode(!0),a.classList.add("pict-fullscreen-codewrap"));n.appendChild(a);let l=t.querySelectorAll('[data-action="zoom-in"], [data-action="zoom-out"], [data-action="zoom-reset"]');for(let t=0;t<l.length;t++)l[t].style.display="code"===s?"none":"";c(),t.removeAttribute("hidden"),document.documentElement.style.overflow="hidden",document.addEventListener("keydown",p)},close:l},r._FullscreenOverlay}_openFullscreen(t){this._buildFullscreenOverlay().open(t)}showLoading(t,e){let i=e||"Pict-Content-Body",n=t||"Loading content...";this.pict.ContentAssignment.assignContent("#"+i,'<div class="pict-content-loading">'+n+"</div>")}}e.exports=r,e.exports.default_configuration={ViewIdentifier:"Pict-Content",DefaultRenderable:"Pict-Content-Display",DefaultDestinationAddress:"#Pict-Content-Container",AutoRender:!1,CSS:"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: 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/* ─── Code blocks ─────────────────────────────────────\n\t\t Background, text color, line-number gutter, and every\n\t\t syntax token route through pict-provider-theme tokens —\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) — 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 — 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/* Dark-mode override for handcrafted mermaid diagrams that bake\n\t\t per-node inline fill colors via 'style X fill:#...' directives\n\t\t (common in architecture / module docs, where pastel layer\n\t\t colors mark visual hierarchy). Mermaid renders those as inline\n\t\t style=\"fill:#...\" SVG attributes — highest specificity, so\n\t\t neither themeVariables nor unflagged CSS can reach them.\n\t\t In light mode the Material pastels read fine; in dark mode the\n\t\t same light fills become a high-contrast island on the dark\n\t\t page with unreadable text. Force the fills back to a theme\n\t\t background so dark-mode reads; light mode is intentionally\n\t\t unmodified so the per-layer hierarchy is preserved there. */\n\t\t.theme-dark .pict-content pre.mermaid .node rect,\n\t\t.theme-dark .pict-content pre.mermaid .node polygon,\n\t\t.theme-dark .pict-content pre.mermaid .node circle,\n\t\t.theme-dark .pict-content pre.mermaid .node ellipse,\n\t\t.theme-dark .pict-content pre.mermaid .node path,\n\t\t.theme-dark .pict-content pre.mermaid .cluster rect {\n\t\t\tfill: var(--theme-color-background-tertiary, #2A241E) !important;\n\t\t\tstroke: var(--theme-color-border-default, #5E5549) !important;\n\t\t}\n\t\t/* Mirror of the above for theme mode 'system' — when the user\n\t\t hasn't explicitly picked light or dark, the theme provider\n\t\t leaves <html> without .theme-light/.theme-dark and the CSS\n\t\t variables follow prefers-color-scheme. The .theme-dark-prefixed\n\t\t block above doesn't match in that case, so light pastels would\n\t\t win again on dark OSes. Mirror the rule under the media query,\n\t\t gated by :not(.theme-light) so an explicit light override on a\n\t\t dark OS still wins. */\n\t\t@media (prefers-color-scheme: dark) {\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node rect,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node polygon,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node circle,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node ellipse,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node path,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .cluster rect {\n\t\t\t\tfill: var(--theme-color-background-tertiary, #2A241E) !important;\n\t\t\t\tstroke: var(--theme-color-border-default, #5E5549) !important;\n\t\t\t}\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/* Bespoke inline-SVG diagrams (pict-renderer-graph / excalidraw). Backdrop\n\t\t uses the diagram's own --diagram-paper so the zoomed copy keeps the same\n\t\t theme as the inline one (the host defines --diagram-* on the overlay). */\n\t\t.pict-fullscreen-content .pict-fullscreen-diagram-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(--diagram-paper, var(--theme-color-background-panel, #FFFFFF));\n\t\t\tpadding: 16px;\n\t\t\tborder-radius: 6px;\n\t\t}\n\t\t/* Same dark-mode fill/stroke override as for inline diagrams, but\n\t\t scoped to the fullscreen-overlay clone — which lives under\n\t\t <body>, NOT inside .pict-content, so the pre.mermaid-scoped\n\t\t rules above don't reach it. */\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node rect,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node polygon,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node circle,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node ellipse,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node path,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .cluster rect {\n\t\t\tfill: var(--theme-color-background-tertiary, #2A241E) !important;\n\t\t\tstroke: var(--theme-color-border-default, #5E5549) !important;\n\t\t}\n\t\t@media (prefers-color-scheme: dark) {\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node rect,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node polygon,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node circle,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node ellipse,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node path,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .cluster rect {\n\t\t\t\tfill: var(--theme-color-background-tertiary, #2A241E) !important;\n\t\t\t\tstroke: var(--theme-color-border-default, #5E5549) !important;\n\t\t\t}\n\t\t}\n\t\t.pict-fullscreen-content .pict-fullscreen-codewrap {\n\t\t\tmax-width: 90vw;\n\t\t\tmax-height: calc(100vh - 96px);\n\t\t\tmargin: 0;\n\t\t\toverflow: auto;\n\t\t\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.45);\n\t\t}\n\t",Templates:[{Hash:"Pict-Content-Template",Template:'\n<div class="pict-content" id="Pict-Content-Body">\n\t<div class="pict-content-loading">Loading content...</div>\n</div>\n'}],Renderables:[{RenderableHash:"Pict-Content-Display",TemplateHash:"Pict-Content-Template",DestinationAddress:"#Pict-Content-Container",RenderMethod:"replace"}]}},{"pict-provider-theme/source/Theme-Diagram-Adapter.js":7,"pict-view":38}],17:[function(t,e,i){const n=t("./Pict-View-Content.js"),r=t("../providers/Pict-Provider-Content.js"),o={ViewIdentifier:"Pict-Content-Demo",DefaultRenderable:"Pict-Content-Display",DefaultDestinationAddress:"#Pict-Content-Container",MarkdownDataAddress:"AppData.ContentDemo.Markdown",AutoRender:!0,CSS:n.default_configuration.CSS,Templates:n.default_configuration.Templates,Renderables:n.default_configuration.Renderables};e.exports=class extends n{constructor(t,e,i){super(t,e,i);let n="Pict-Content";this.pict.providers[n]||this.pict.addProvider(n,r.default_configuration,r)}_readMarkdownFromAddress(){let t=this.options.MarkdownDataAddress;if(!t||"string"!=typeof t)return null;let e=t.split("."),i=this.pict;for(let t=0;t<e.length;t++){if(null==i)return null;i=i[e[t]]}return"string"==typeof i?i:null}onAfterRender(t,e,i,n){let r=this._readMarkdownFromAddress(),o=this.pict.providers["Pict-Content"];if(o&&"string"==typeof r){let t=o.parseMarkdown(r);this.displayContent(t)}return this.pict.CSSMap.injectCSS(),super.onAfterRender(t,e,i,n)}},e.exports.default_configuration=o},{"../providers/Pict-Provider-Content.js":15,"./Pict-View-Content.js":16}],18:[function(t,e,i){e.exports={RenderOnLoad:!0,DefaultRenderable:"Excalidraw-Wrap",DefaultDestinationAddress:"#Excalidraw-Container-Div",TargetElementAddress:"#Excalidraw-Container-Div",EmbedMode:"react",DrawingDataAddress:!1,Theme:"light",ViewModeEnabled:!1,ZenModeEnabled:!1,GridModeEnabled:!1,LangCode:"en",UIOptions:{},InitialData:{elements:[],appState:{},files:{}},AssetBaseURL:"./excalidraw-assets/",IframeHostURL:"./excalidraw-iframe-host.html",LazyLoadReactVendorURL:null,LazyLoadWrapperURL:null,OnLoad:null,OnSave:null,OnChange:null,OnChangeThrottleMs:250,Templates:[{Hash:"Excalidraw-Container",Template:"\x3c!-- Excalidraw-Container Rendering Soon --\x3e"}],Renderables:[{RenderableHash:"Excalidraw-Wrap",TemplateHash:"Excalidraw-Container",DestinationAddress:"#Excalidraw-Container-Div"}],CSS:".pict-excalidraw-wrap\n{\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 320px;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\tborder: 1px solid var(--theme-color-border-default, #D0D0D0);\n\tborder-radius: 4px;\n\toverflow: hidden;\n\tfont-family: var(--theme-typography-family-base, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\n\tcolor: var(--theme-color-text-primary, #1A1A1A);\n}\n\n/* Theme bridge: forward pict tokens into the variables Excalidraw's own\n stylesheet reads. See vendor/excalidraw/packages/excalidraw/css/ for the\n token names. We default to the official light palette so Excalidraw renders\n correctly even before a pict theme overrides anything. */\n.pict-excalidraw-wrap\n{\n\t--default-bg-color: var(--theme-color-background-panel, #FFFFFF);\n\t--island-bg-color: var(--theme-color-background-secondary, #FFFFFF);\n\t--input-bg-color: var(--theme-color-background-primary, #FFFFFF);\n\t--input-border-color: var(--theme-color-border-default, #D0D0D0);\n\t--text-primary-color: var(--theme-color-text-primary, #1A1A1A);\n\t--color-primary: var(--theme-color-brand-primary, #6965DB);\n\t--color-primary-darker: var(--theme-color-brand-primary-hover, #5754C4);\n\t--color-primary-darkest: var(--theme-color-brand-primary-hover, #4642B7);\n\t--color-on-primary-container: var(--theme-color-background-panel, #FFFFFF);\n\t--button-hover-bg: var(--theme-color-background-hover, #F1F0FF);\n\t--button-active-bg: var(--theme-color-background-selected, #E3E2FE);\n\t--button-active-border: var(--theme-color-brand-primary, #6965DB);\n\t--popup-bg-color: var(--theme-color-background-panel, #FFFFFF);\n\t--popup-border-color: var(--theme-color-border-default, #D0D0D0);\n\t--icon-fill-color: var(--theme-color-text-primary, #1A1A1A);\n\t--shadow-island: 0 0 0 1px var(--theme-color-border-light, rgba(0,0,0,0.06)), 0 2px 6px 0 var(--theme-color-shadow-color, rgba(0,0,0,0.08));\n}\n\n/* iframe mode: the iframe element itself owns the entire wrap surface */\n.pict-excalidraw-iframe\n{\n\tflex: 1 1 auto;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 320px;\n\tborder: 0;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n}\n\n/* react mode: a single inner div that Excalidraw mounts into via createRoot */\n.pict-excalidraw-mount\n{\n\tflex: 1 1 auto;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 320px;\n\tposition: relative;\n}\n\n/* Status / error overlay used by both modes before the third-party lib is\n wired up, or when bundling failed. */\n.pict-excalidraw-status\n{\n\tposition: absolute;\n\tinset: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-direction: column;\n\tgap: 8px;\n\tpadding: 16px;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\tcolor: var(--theme-color-text-secondary, #4A4A4A);\n\ttext-align: center;\n\tfont-size: 14px;\n\tline-height: 1.4;\n\tz-index: 1;\n}\n.pict-excalidraw-status code\n{\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', monospace);\n\tfont-size: 12px;\n\tpadding: 2px 6px;\n\tbackground: var(--theme-color-background-secondary, #F4F4F4);\n\tborder: 1px solid var(--theme-color-border-light, rgba(0,0,0,0.06));\n\tborder-radius: 3px;\n}\n.pict-excalidraw-status.error\n{\n\tcolor: var(--theme-color-status-error, #B43B3B);\n}\n"}},{}],19:[function(t,e,i){const n=t("pict-view"),r=t("./views/PictView-Excalidraw-React.js"),o=t("./views/PictView-Excalidraw-Iframe.js"),a=t("./Pict-Section-Excalidraw-DefaultConfiguration.js");function s(t){return"iframe"===(t&&t.EmbedMode||a.EmbedMode||"react").toLowerCase()?o:r}e.exports=class extends n{constructor(t,e,i){var n;let r=Object.assign({},a,e);super(t,r,i),n=this,this._ImplementationClass=s(r);let o=Object.assign({},r);o.ViewIdentifier=(r.ViewIdentifier||"PictSectionExcalidraw")+"-Impl",this._Implementation=new this._ImplementationClass(t,o,i);let c=["getScene","setScene","exportSvg","exportBlob","serialize","setTheme","setReadOnly","load","save","destroy","getApi","connectExcalidrawGlobal","isDestroyed","convertMermaidToExcalidraw"];for(let t=0;t<c.length;t++){let e=c[t];this[e]=function(){if("function"==typeof n._Implementation[e]){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];return n._Implementation[e].apply(n._Implementation,i)}}}}onAfterRender(t,e,i,n){return this.pict.CSSMap.injectCSS(),this._Implementation&&"function"==typeof this._Implementation.render&&(this._dispatchedRender||(this._dispatchedRender=!0,this._Implementation.render())),super.onAfterRender(t,e,i,n)}},e.exports.default_configuration=a,e.exports.ReactView=r,e.exports.IframeView=o,e.exports.selectImplementation=s},{"./Pict-Section-Excalidraw-DefaultConfiguration.js":18,"./views/PictView-Excalidraw-Iframe.js":20,"./views/PictView-Excalidraw-React.js":21,"pict-view":38}],20:[function(t,e,i){const n=t("pict-view"),r=t("../Pict-Section-Excalidraw-DefaultConfiguration.js");e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},r,e),i),this.initialRenderComplete=!1,this.targetElement=!1,this._iframeElement=null,this._wrapElement=null,this._statusElement=null,this._iframeReady=!1,this._pendingRequests=Object.create(null),this._nextRequestId=1,this._lastSceneSnapshot=null,this._messageListener=null,this._onChangeThrottleHandle=null,this._lastSeenChangeSnapshot=null,this._currentTheme=this.options.Theme||"light",this._destroyed=!1}onAfterRender(t,e,i,n){return this.pict.CSSMap.injectCSS(),this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),super.onAfterRender(t,e,i,n)}onAfterInitialRender(){let t=this.pict.ContentAssignment.getElement(this.options.TargetElementAddress);if(!t||t.length<1)return this.log.error("PICT-Excalidraw (iframe) could not find target [".concat(this.options.TargetElementAddress,"].")),!1;this.targetElement=t[0],this._buildContainerDOM(),this._wireMessageListener(),this._mountIframe()}_buildContainerDOM(){this.targetElement.innerHTML="";let t=document.createElement("div");t.className="pict-excalidraw-wrap pict-excalidraw-wrap-iframe";let e=document.createElement("div");e.className="pict-excalidraw-status",e.innerHTML="Loading Excalidraw…",t.appendChild(e);let i=document.createElement("iframe");i.className="pict-excalidraw-iframe",i.setAttribute("title","Excalidraw drawing"),i.setAttribute("allow","clipboard-read; clipboard-write"),t.appendChild(i),this.targetElement.appendChild(t),this._wrapElement=t,this._iframeElement=i,this._statusElement=e}_wireMessageListener(){this._messageListener=t=>{t&&t.data&&"object"==typeof t.data&&t.source===(this._iframeElement&&this._iframeElement.contentWindow)&&this._handleIframeMessage(t.data)},window.addEventListener("message",this._messageListener)}_mountIframe(){let t=this.options.IframeHostURL||"./excalidraw-iframe-host.html";this._iframeElement.src=t}_postToIframe(t){return!(!this._iframeElement||!this._iframeElement.contentWindow)&&(this._iframeElement.contentWindow.postMessage(t,"*"),!0)}_handleIframeMessage(t){switch(t.type){case"pict-excalidraw:ready":return this._iframeReady=!0,this._statusElement&&(this._statusElement.style.display="none"),void this._sendInitMessage();case"pict-excalidraw:change":return void this._handleChange(t.payload);case"pict-excalidraw:sceneReply":case"pict-excalidraw:svgReply":case"pict-excalidraw:blobReply":{let e=this._pendingRequests[t.requestId];return void(e&&(clearTimeout(e.timeout),delete this._pendingRequests[t.requestId],e.resolve(t.payload)))}case"pict-excalidraw:error":{let e=t.requestId&&this._pendingRequests[t.requestId];return void(e?(clearTimeout(e.timeout),delete this._pendingRequests[t.requestId],e.reject(new Error(t.message||"iframe error"))):this.log.error("PICT-Excalidraw (iframe) error: ".concat(t.message)))}default:return}}_sendInitMessage(){let t=this._resolveInitialData();this._postToIframe({type:"pict-excalidraw:init",payload:{initialData:t,theme:this._resolveTheme(this._currentTheme),langCode:this.options.LangCode||"en",viewModeEnabled:!!this.options.ViewModeEnabled,zenModeEnabled:!!this.options.ZenModeEnabled,gridModeEnabled:!!this.options.GridModeEnabled,UIOptions:this.options.UIOptions||{},assetBaseURL:this.options.AssetBaseURL}}),this._pushThemeTokens(),"function"==typeof this.options.OnLoad&&this.load()}_pushThemeTokens(){if("undefined"==typeof document||!document.documentElement)return;let t=["--theme-color-background-panel","--theme-color-background-primary","--theme-color-background-secondary","--theme-color-background-hover","--theme-color-background-selected","--theme-color-border-default","--theme-color-border-light","--theme-color-text-primary","--theme-color-text-secondary","--theme-color-brand-primary","--theme-color-brand-primary-hover","--theme-color-status-error","--theme-color-shadow-color"],e=window.getComputedStyle(document.documentElement),i={};for(let n=0;n<t.length;n++){let r=e.getPropertyValue(t[n]).trim();r&&(i[t[n]]=r)}this._postToIframe({type:"pict-excalidraw:setThemeTokens",payload:i})}_resolveInitialData(){if(this.options.DrawingDataAddress){let t=this._readAppData(this.options.DrawingDataAddress);if(t&&t.elements)return t}return this.options.InitialData||{elements:[],appState:{},files:{}}}_resolveTheme(t){if("auto"===t){if("undefined"!=typeof document&&document.documentElement&&document.documentElement.classList&&document.documentElement.classList.contains("theme-mode-dark"))return"dark";let t=this.pict&&this.pict.providers&&this.pict.providers.ThemeSection;if(t&&t.getCurrentMode){let e=t.getCurrentMode();if("dark"===e)return"dark";if("light"===e)return"light"}return"light"}return"dark"===t?"dark":"light"}_handleChange(t){if(this._destroyed)return;if(this._lastSceneSnapshot=t,this._lastSeenChangeSnapshot=t,this._onChangeThrottleHandle)return;let e=this.options.OnChangeThrottleMs||250;this._onChangeThrottleHandle=setTimeout(()=>{if(this._onChangeThrottleHandle=null,this._destroyed)return;let t=this._lastSeenChangeSnapshot;if(t&&(this.options.DrawingDataAddress&&this._writeAppData(this.options.DrawingDataAddress,t),"function"==typeof this.options.OnChange))try{this.options.OnChange(this,t)}catch(t){this.log.error("PICT-Excalidraw OnChange threw: ".concat(t&&t.message))}},e)}_readAppData(t){if(!t)return null;try{let e=t.replace(/^AppData\./,"");if(this.fable&&this.fable.manifest&&this.fable.manifest.getValueByHash)return this.fable.manifest.getValueByHash(this.pict.AppData,e);let i=e.split("."),n=this.pict.AppData;for(let t=0;t<i.length;t++){if(null==n)return null;n=n[i[t]]}return n}catch(t){return this.log.error("PICT-Excalidraw read AppData failed: ".concat(t&&t.message)),null}}_writeAppData(t,e){if(!t)return!1;try{let i=t.replace(/^AppData\./,"");if(this.fable&&this.fable.manifest&&this.fable.manifest.setValueByHash)return this.fable.manifest.setValueByHash(this.pict.AppData,i,e),!0;let n=i.split("."),r=this.pict.AppData;for(let t=0;t<n.length-1;t++)null==r[n[t]]&&(r[n[t]]={}),r=r[n[t]];return r[n[n.length-1]]=e,!0}catch(t){return this.log.error("PICT-Excalidraw write AppData failed: ".concat(t&&t.message)),!1}}_request(t,e){let i=this._nextRequestId++;return new Promise((n,r)=>{this._pendingRequests[i]={resolve:n,reject:r},this._postToIframe(Object.assign({type:t,requestId:i},e||{})),this._pendingRequests[i].timeout=setTimeout(()=>{this._pendingRequests[i]&&(delete this._pendingRequests[i],r(new Error("iframe request timed out")))},3e4)})}getApi(){return null}getScene(){return this._lastSceneSnapshot}requestScene(){return this._request("pict-excalidraw:requestScene")}setScene(t){return!!t&&(this._postToIframe({type:"pict-excalidraw:setScene",payload:t}),!0)}exportSvg(t){return this._request("pict-excalidraw:requestSvg",{exportOptions:t||{}})}exportBlob(t){return this._request("pict-excalidraw:requestBlob",{exportOptions:t||{}})}serialize(){let t=this._lastSceneSnapshot;return t?JSON.stringify({type:"excalidraw",version:2,source:"pict-section-excalidraw",elements:t.elements||[],appState:t.appState||{},files:t.files||{}}):null}setTheme(t){this._currentTheme=t||"light";let e=this._resolveTheme(this._currentTheme);this._postToIframe({type:"pict-excalidraw:setTheme",payload:e}),this._pushThemeTokens()}setReadOnly(t){this.options.ViewModeEnabled=!!t,this._postToIframe({type:"pict-excalidraw:setReadOnly",payload:!!t})}load(){if("function"!=typeof this.options.OnLoad){if(this.options.DrawingDataAddress){let t=this._readAppData(this.options.DrawingDataAddress);t&&this.setScene(t)}}else this.options.OnLoad(this,(t,e)=>{t?this.log.error("PICT-Excalidraw OnLoad error: ".concat(t.message||t)):e&&this.setScene(e)})}save(){let t=t=>{t&&("function"!=typeof this.options.OnSave?this.options.DrawingDataAddress&&this._writeAppData(this.options.DrawingDataAddress,t):this.options.OnSave(this,t,t=>{t&&this.log.error("PICT-Excalidraw OnSave error: ".concat(t.message||t))}))};this._lastSceneSnapshot?t(this._lastSceneSnapshot):this.requestScene().then(t).catch(t=>{this.log.error("PICT-Excalidraw save scene fetch failed: ".concat(t.message||t))})}destroy(){if(this._destroyed)return;if(this._destroyed=!0,this._onChangeThrottleHandle&&(clearTimeout(this._onChangeThrottleHandle),this._onChangeThrottleHandle=null),this._lastSeenChangeSnapshot=null,this._messageListener){try{window.removeEventListener("message",this._messageListener)}catch(t){}this._messageListener=null}let t=Object.keys(this._pendingRequests);for(let e=0;e<t.length;e++){let i=this._pendingRequests[t[e]];if(i&&"function"==typeof i.reject){clearTimeout(i.timeout);try{i.reject(new Error("view destroyed"))}catch(t){}}}if(this._pendingRequests=Object.create(null),this._iframeElement)try{this._iframeElement.src="about:blank"}catch(t){}if(this.targetElement&&void 0!==this.targetElement.innerHTML)try{this.targetElement.innerHTML=""}catch(t){}this._iframeReady=!1,this._lastSceneSnapshot=null,this._iframeElement=null,this._statusElement=null,this._wrapElement=null,this.targetElement=!1,this.initialRenderComplete=!1}isDestroyed(){return!!this._destroyed}},e.exports.default_configuration=r},{"../Pict-Section-Excalidraw-DefaultConfiguration.js":18,"pict-view":38}],21:[function(t,e,i){const n=t("pict-view"),r=t("../Pict-Section-Excalidraw-DefaultConfiguration.js");e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},r,e),i),this.initialRenderComplete=!1,this._vendor=null,this._reactRoot=null,this._excalidrawAPI=null,this.targetElement=!1,this._wrapElement=null,this._mountElement=null,this._statusElement=null,this._onChangeThrottleHandle=null,this._lastSeenChangeSnapshot=null,this._pendingDeferredLoad=!1,this._destroyed=!1,this._currentTheme=this.options.Theme||"light"}onBeforeInitialize(){return super.onBeforeInitialize(),super.onBeforeInitialize()}connectExcalidrawGlobal(t){return!!(t&&t.Excalidraw&&t.React&&t.ReactDOM)&&(this._vendor=t,!0)}_resolveVendor(){if(this._vendor)return this._vendor;if("undefined"!=typeof window&&window.PictSectionExcalidrawVendor){let t=window.PictSectionExcalidrawVendor;if(t.Excalidraw&&t.React&&t.ReactDOM)return this._vendor=t,t}return null}onAfterRender(t,e,i,n){return this.pict.CSSMap.injectCSS(),this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),super.onAfterRender(t,e,i,n)}onAfterInitialRender(){let t=this.pict.ContentAssignment.getElement(this.options.TargetElementAddress);if(!t||t.length<1)return this.log.error("PICT-Excalidraw could not find target element [".concat(this.options.TargetElementAddress,"].")),!1;this.targetElement=t[0],this._buildContainerDOM();let e=this._resolveVendor();if(!e)return this.options.LazyLoadWrapperURL?(this._renderStatus("Loading Excalidraw…",!1),void this._lazyLoadVendor().then(()=>{if(this._destroyed)return;let t=this._resolveVendor();t?this._mountReact(t):this._renderStatus("Excalidraw failed to lazy-load. Check the network tab for <code>excalidraw-wrapper.min.js</code>.",!0)}).catch(t=>{this.log.error("PICT-Excalidraw lazy-load failed: ".concat(t&&t.message)),this._renderStatus("Excalidraw lazy-load failed: <code>"+(t&&t.message||"unknown error")+"</code>",!0)})):(this._renderStatus("Excalidraw wrapper bundle not loaded. Include <code>excalidraw-wrapper.min.js</code> via a script tag, set <code>LazyLoadWrapperURL</code> in the view options, or call <code>connectExcalidrawGlobal({React, ReactDOM, Excalidraw})</code>.",!0),this.log.error("PICT-Excalidraw vendor bundle not found; cannot mount."),!1);this._mountReact(e)}_lazyLoadVendor(){if("undefined"==typeof window)return Promise.reject(new Error("no window"));if(window.PictSectionExcalidrawVendor)return Promise.resolve();if(window.__pictExcalidrawLazyLoadPromise)return window.__pictExcalidrawLazyLoadPromise;let t=this.options.LazyLoadReactVendorURL,e=this.options.LazyLoadWrapperURL,i=t=>new Promise((e,i)=>{let n=document.createElement("script");n.src=t,n.async=!1,n.onload=()=>e(),n.onerror=()=>i(new Error("failed to load "+t)),document.head.appendChild(n)}),n=Promise.resolve();return t&&!window.React&&(n=n.then(()=>i(t))),n=n.then(()=>i(e)),n=n.then(()=>{if(!window.PictSectionExcalidrawVendor)throw new Error("wrapper loaded but window.PictSectionExcalidrawVendor was not set")}).finally(()=>{window.__pictExcalidrawLazyLoadPromise=null}),window.__pictExcalidrawLazyLoadPromise=n,n}_buildContainerDOM(){this.targetElement.innerHTML="";let t=document.createElement("div");t.className="pict-excalidraw-wrap pict-excalidraw-wrap-react";let e=document.createElement("div");e.className="pict-excalidraw-mount",t.appendChild(e);let i=document.createElement("div");i.className="pict-excalidraw-status",i.style.display="none",t.appendChild(i),this.targetElement.appendChild(t),this._wrapElement=t,this._mountElement=e,this._statusElement=i}_renderStatus(t,e){this._statusElement&&(this._statusElement.style.display="flex",this._statusElement.classList.toggle("error",!!e),this._statusElement.innerHTML=t)}_hideStatus(){this._statusElement&&(this._statusElement.style.display="none")}_mountReact(t){let e=t.React,i=t.ReactDOM,n=t.Excalidraw,r={initialData:this._resolveInitialData(),theme:this._resolveTheme(this._currentTheme),langCode:this.options.LangCode||"en",viewModeEnabled:!!this.options.ViewModeEnabled,zenModeEnabled:!!this.options.ZenModeEnabled,gridModeEnabled:!!this.options.GridModeEnabled,UIOptions:this.options.UIOptions||{},onExcalidrawAPI:t=>{this._excalidrawAPI=t,this._pendingDeferredLoad&&(this._pendingDeferredLoad=!1,this.load())},onChange:(t,e,i)=>{this._handleChange(t,e,i)}};"undefined"!=typeof window&&this.options.AssetBaseURL&&!window.EXCALIDRAW_ASSET_PATH&&(window.EXCALIDRAW_ASSET_PATH=this.options.AssetBaseURL);try{this._reactRoot=i.createRoot(this._mountElement),this._reactRoot.render(e.createElement(n,r)),this._hideStatus()}catch(t){this.log.error("PICT-Excalidraw mount failed: ".concat(t&&t.message)),this._renderStatus("Excalidraw failed to mount: <code>"+(t&&t.message?t.message:"unknown error")+"</code>",!0)}}_resolveInitialData(){if(this.options.DrawingDataAddress){let t=this._readAppData(this.options.DrawingDataAddress);if(t&&t.elements)return t}return"function"==typeof this.options.OnLoad&&(this._pendingDeferredLoad=!0),this.options.InitialData||{elements:[],appState:{},files:{}}}_resolveTheme(t){if("auto"===t){if("undefined"!=typeof document&&document.documentElement){let t=document.documentElement;if(t.classList&&t.classList.contains("theme-mode-dark"))return"dark"}let t=this.pict&&this.pict.providers&&this.pict.providers.ThemeSection;if(t&&t.getCurrentMode){let e=t.getCurrentMode();if("dark"===e)return"dark";if("light"===e)return"light"}return"light"}return"dark"===t?"dark":"light"}_handleChange(t,e,i){if(this._destroyed)return;if(this._lastSeenChangeSnapshot={elements:t,appState:e,files:i},this._onChangeThrottleHandle)return;let n=this.options.OnChangeThrottleMs||250;this._onChangeThrottleHandle=setTimeout(()=>{if(this._onChangeThrottleHandle=null,this._destroyed)return;let t=this._lastSeenChangeSnapshot;if(t&&(this.options.DrawingDataAddress&&this._writeAppData(this.options.DrawingDataAddress,this._cloneScene(t)),"function"==typeof this.options.OnChange))try{this.options.OnChange(this,this._cloneScene(t))}catch(t){this.log.error("PICT-Excalidraw OnChange threw: ".concat(t&&t.message))}},n)}_cloneScene(t){return{elements:t.elements?t.elements.slice():[],appState:t.appState?Object.assign({},t.appState):{},files:t.files?Object.assign({},t.files):{}}}_readAppData(t){if(!t)return null;try{let e=t.replace(/^AppData\./,"");if(this.fable&&this.fable.manifest&&this.fable.manifest.getValueByHash)return this.fable.manifest.getValueByHash(this.pict.AppData,e);let i=e.split("."),n=this.pict.AppData;for(let t=0;t<i.length;t++){if(null==n)return null;n=n[i[t]]}return n}catch(t){return this.log.error("PICT-Excalidraw read AppData failed: ".concat(t&&t.message)),null}}_writeAppData(t,e){if(!t)return!1;try{let i=t.replace(/^AppData\./,"");if(this.fable&&this.fable.manifest&&this.fable.manifest.setValueByHash)return this.fable.manifest.setValueByHash(this.pict.AppData,i,e),!0;let n=i.split("."),r=this.pict.AppData;for(let t=0;t<n.length-1;t++)null==r[n[t]]&&(r[n[t]]={}),r=r[n[t]];return r[n[n.length-1]]=e,!0}catch(t){return this.log.error("PICT-Excalidraw write AppData failed: ".concat(t&&t.message)),!1}}getApi(){return this._excalidrawAPI}getScene(){return this._excalidrawAPI?{elements:this._excalidrawAPI.getSceneElements(),appState:this._excalidrawAPI.getAppState(),files:this._excalidrawAPI.getFiles?this._excalidrawAPI.getFiles():{}}:null}setScene(t){if(!this._excalidrawAPI)return!1;if(!t)return!1;let e=Array.isArray(t)?{elements:t,appState:{},files:{}}:t;if(this._excalidrawAPI.updateScene({elements:e.elements||[],appState:e.appState||{},collaborators:new Map}),e.files&&this._excalidrawAPI.addFiles){let t=[],i=Object.keys(e.files);for(let n=0;n<i.length;n++)t.push(e.files[i[n]]);t.length&&this._excalidrawAPI.addFiles(t)}return!0}exportSvg(t){let e=this._resolveVendor();if(!e||!e.exportToSvg)return Promise.reject(new Error("exportToSvg unavailable"));let i=this.getScene();if(!i)return Promise.reject(new Error("Excalidraw not mounted"));let n=t||{},r=this._promoteAppStateExportKeys(n);return e.exportToSvg(Object.assign({elements:i.elements,appState:Object.assign({},i.appState,r),files:i.files},n))}exportBlob(t){let e=this._resolveVendor();if(!e||!e.exportToBlob)return Promise.reject(new Error("exportToBlob unavailable"));let i=this.getScene();if(!i)return Promise.reject(new Error("Excalidraw not mounted"));let n=t||{},r=this._promoteAppStateExportKeys(n);return e.exportToBlob(Object.assign({elements:i.elements,appState:Object.assign({},i.appState,r),files:i.files,mimeType:"image/png"},n))}_promoteAppStateExportKeys(t){let e=["exportEmbedScene","exportBackground","exportPadding","exportScale","exportWithDarkMode"],i={};for(let n=0;n<e.length;n++)Object.prototype.hasOwnProperty.call(t,e[n])&&(i[e[n]]=t[e[n]],delete t[e[n]]);return i}convertMermaidToExcalidraw(t,e){let i=e||{},n=!1!==i.apply,r=this._resolveVendor();return r&&r.parseMermaidToExcalidraw&&r.convertToExcalidrawElements?r.parseMermaidToExcalidraw(t,i.mermaidOptions||{}).then(t=>{let e=t&&t.elements||[],i=t&&t.files||{},o=r.convertToExcalidrawElements(e);return n&&this.setScene({elements:o,appState:{},files:i}),{elements:o,files:i}}):Promise.reject(new Error("mermaid helpers not available — wrapper bundle out of date?"))}serialize(){let t=this._resolveVendor(),e=this.getScene();return e?t&&t.serializeAsJSON?t.serializeAsJSON(e.elements,e.appState,e.files,"local"):JSON.stringify({type:"excalidraw",version:2,source:"pict-section-excalidraw",elements:e.elements,appState:e.appState,files:e.files}):null}setTheme(t){if(this._currentTheme=t||"light",this._excalidrawAPI&&this._excalidrawAPI.updateScene){let t=this._resolveTheme(this._currentTheme);this._excalidrawAPI.updateScene({appState:{theme:t}})}}setReadOnly(t){this.options.ViewModeEnabled=!!t,this._excalidrawAPI&&this._excalidrawAPI.updateScene&&this._excalidrawAPI.updateScene({appState:{viewModeEnabled:!!t}})}load(){if("function"!=typeof this.options.OnLoad){if(this.options.DrawingDataAddress){let t=this._readAppData(this.options.DrawingDataAddress);t&&this.setScene(t)}}else this.options.OnLoad(this,(t,e)=>{t?this.log.error("PICT-Excalidraw OnLoad error: ".concat(t.message||t)):e&&this.setScene(e)})}save(){let t=this.getScene();t&&("function"!=typeof this.options.OnSave?this.options.DrawingDataAddress&&this._writeAppData(this.options.DrawingDataAddress,this._cloneScene(t)):this.options.OnSave(this,t,t=>{t&&this.log.error("PICT-Excalidraw OnSave error: ".concat(t.message||t))}))}destroy(){if(!this._destroyed){if(this._destroyed=!0,this._onChangeThrottleHandle&&(clearTimeout(this._onChangeThrottleHandle),this._onChangeThrottleHandle=null),this._lastSeenChangeSnapshot=null,this._pendingDeferredLoad=!1,this._reactRoot){try{this._reactRoot.unmount()}catch(t){this.log.error("PICT-Excalidraw unmount failed: ".concat(t&&t.message))}this._reactRoot=null}if(this.targetElement&&void 0!==this.targetElement.innerHTML)try{this.targetElement.innerHTML=""}catch(t){}this._excalidrawAPI=null,this._wrapElement=null,this._mountElement=null,this._statusElement=null,this.targetElement=!1,this._vendor=null,this.initialRenderComplete=!1}}isDestroyed(){return!!this._destroyed}},e.exports.default_configuration=r},{"../Pict-Section-Excalidraw-DefaultConfiguration.js":18,"pict-view":38}],22:[function(t,e,i){e.exports.attach=function(t){t._createEditorInContainer=function(e,i,n){let r=t._codeMirrorModules,o=[];o.push(r.EditorView.domEventHandlers({keydown:(e,n)=>(e.ctrlKey||e.metaKey)&&"b"===e.key?(e.preventDefault(),t.applyFormatting(i,"bold"),!0):(e.ctrlKey||e.metaKey)&&"i"===e.key?(e.preventDefault(),t.applyFormatting(i,"italic"),!0):(e.ctrlKey||e.metaKey)&&"e"===e.key?(e.preventDefault(),t.applyFormatting(i,"code"),!0):void 0,paste:(e,n)=>{let r=e.clipboardData&&e.clipboardData.items;if(!r)return!1;for(let n=0;n<r.length;n++)if(r[n].type.startsWith("image/")){e.preventDefault();let o=r[n].getAsFile();return o&&t._processImageFile(o,i),!0}return!1},drop:(e,n)=>{if(t._dragSourceIndex>=0)return!1;if(!e.dataTransfer||!e.dataTransfer.files||e.dataTransfer.files.length<1)return!1;let r=e.dataTransfer.files[0];if(r.type&&r.type.startsWith("image/")){e.preventDefault(),e.stopPropagation(),t._processImageFile(r,i);let o=n.dom.closest(".pict-mde-segment-editor");return o&&o.classList.remove("pict-mde-image-dragover"),!0}return!1}})),r.extensions&&Array.isArray(r.extensions)&&(o=o.concat(r.extensions)),o.push(r.EditorView.updateListener.of(e=>{e.docChanged&&t._onSegmentContentChange(i,e.state.doc.toString()),e.focusChanged&&(e.view.hasFocus?(t._setActiveSegment(i),t._updateSidebarPosition(i)):setTimeout(()=>{if(t._activeSegmentIndex===i){let e=document.getElementById("PictMDE-Segment-".concat(i));e&&!e.contains(document.activeElement)&&(t._clearActiveSegment(i),t._resetSidebarPosition(i))}},100)),e.selectionSet&&e.view.hasFocus&&t._updateSidebarPosition(i)}));let a=t._buildDataURICollapseExtension();a&&o.push(a),t.options.ReadOnly&&(o.push(r.EditorState.readOnly.of(!0)),o.push(r.EditorView.editable.of(!1))),o=t.customConfigureExtensions(o,i);let s=r.EditorState.create({doc:n||"",extensions:o}),c=new r.EditorView({state:s,parent:e});t._segmentEditors[i]=c,c.contentDOM.addEventListener("keydown",function(e){if("ArrowDown"!==e.key&&"ArrowUp"!==e.key)return;if(e.shiftKey||e.ctrlKey||e.metaKey||e.altKey)return;let n=c.state,r=n.selection.main.head,o=n.doc.lineAt(r),a=r-o.from;if("ArrowDown"===e.key){if(o.to<n.doc.length)return;let r=t._getOrderedSegmentIndices(),s=t._getLogicalIndex(i);if(s<0||s>=r.length-1)return;let c=r[s+1],l=t._segmentEditors[c];if(!l)return;e.preventDefault(),e.stopPropagation();let p=l.state.doc.line(1),d=Math.min(a,p.to-p.from);l.focus(),l.dispatch({selection:{anchor:p.from+d}}),t._setActiveSegment(c)}else if("ArrowUp"===e.key){if(o.number>1)return;let n=t._getOrderedSegmentIndices(),r=t._getLogicalIndex(i);if(r<=0)return;let s=n[r-1],c=t._segmentEditors[s];if(!c)return;e.preventDefault(),e.stopPropagation();let l=c.state.doc.line(c.state.doc.lines),p=Math.min(a,l.to-l.from);c.focus(),c.dispatch({selection:{anchor:l.from+p}}),t._setActiveSegment(s)}},!0),c.contentDOM.addEventListener("drop",function(e){if(t._dragSourceIndex>=0)return;if(!e.dataTransfer||!e.dataTransfer.files||e.dataTransfer.files.length<1)return;let n=e.dataTransfer.files[0];if(n.type&&n.type.startsWith("image/")){e.preventDefault(),e.stopPropagation(),t._processImageFile(n,i);let r=document.getElementById("PictMDE-SegmentEditor-".concat(i));r&&r.classList.remove("pict-mde-image-dragover")}},!0)},t._buildDataURICollapseExtension=function(){let e=t._codeMirrorModules;if(!(e&&e.Decoration&&e.ViewPlugin&&e.WidgetType))return null;let i=e.Decoration,n=e.ViewPlugin,r=e.WidgetType;class o extends r{constructor(t){super(),this.label=t}toDOM(){let t=document.createElement("span");return t.className="pict-mde-data-uri-collapsed",t.textContent=this.label,t.title="Data URI (click to expand in image preview below)",t}eq(t){return this.label===t.label}}function a(t){let e=[],n=t.state.doc;for(let r of t.visibleRanges){let t,a=r.from,s=r.to,c=n.sliceString(a,s),l=/!\[[^\]]*\]\(data:([^;]+);base64,/g;for(;null!==(t=l.exec(c));){let r=a+t.index+t[0].length,s=-1,c=r,l=n.length,p=Math.min(l,c+5242880),d=4096;for(let t=c;t<p;t+=d){let e=Math.min(t+d,p),i=n.sliceString(t,e).indexOf(")");if(i>=0){s=t+i;break}}if(s<0)continue;let u=s-r;if(u<200)continue;let h,m=Math.round(.75*u);h=m>=1048576?(m/1048576).toFixed(1)+"MB":m>=1024?Math.round(m/1024)+"KB":m+"B";t[1];let g="…".concat(h,")"),f=i.replace({widget:new o(g)});e.push(f.range(r,s+1))}}return i.set(e,!0)}return n.fromClass(class{constructor(t){this.decorations=a(t)}update(t){(t.docChanged||t.viewportChanged)&&(this.decorations=a(t.view))}},{decorations:t=>t.decorations})}}},{}],23:[function(t,e,i){e.exports.attach=function(t){t._wireSegmentDragEvents=function(e,i){let n=e.querySelector(".pict-mde-drag-handle");n&&(n.addEventListener("dragstart",n=>{t._dragSourceIndex=i,n.dataTransfer.effectAllowed="move",n.dataTransfer.setData("text/plain",String(i));let r=t._getContainerElement();r&&r.classList.add("pict-mde-dragging"),setTimeout(()=>{e.style.opacity="0.4"},0)}),n.addEventListener("dragend",()=>{e.style.opacity="",t._dragSourceIndex=-1,t._clearAllDropIndicators();let i=t._getContainerElement();i&&i.classList.remove("pict-mde-dragging")}),e.addEventListener("dragover",i=>{i.preventDefault(),i.dataTransfer.dropEffect="move",t._clearAllDropIndicators();let n=e.getBoundingClientRect(),r=n.top+n.height/2;i.clientY<r?e.classList.add("pict-mde-drag-over-top"):e.classList.add("pict-mde-drag-over-bottom")}),e.addEventListener("dragleave",t=>{e.contains(t.relatedTarget)||(e.classList.remove("pict-mde-drag-over-top"),e.classList.remove("pict-mde-drag-over-bottom"))}),e.addEventListener("drop",n=>{n.preventDefault();let r=e.classList.contains("pict-mde-drag-over-bottom");t._clearAllDropIndicators();let o=t._dragSourceIndex;o<0||o===i||t._reorderSegment(o,i,r)}))},t._clearAllDropIndicators=function(){let e=t._getContainerElement();if(!e)return;let i=e.querySelectorAll(".pict-mde-segment");for(let t=0;t<i.length;t++)i[t].classList.remove("pict-mde-drag-over-top"),i[t].classList.remove("pict-mde-drag-over-bottom")},t._reorderSegment=function(e,i,n){let r=t._getLogicalIndex(e),o=t._getLogicalIndex(i);if(r<0||o<0)return void t.log.warn("PICT-MarkdownEditor _reorderSegment: could not resolve logical indices (from=".concat(r,", to=").concat(o,")."));if(r===o)return;t._marshalAllEditorsToData();let a=t._getSegmentsFromData();if(!a||a.length<2)return;let s=n?o+1:o;if(r<s&&s--,s===r)return;let c=a.splice(r,1)[0];a.splice(s,0,c),t._setSegmentsToData(a),t._reorderHiddenPreviewState(r,s),t._reorderSegmentTabStates(r,s),t._buildEditorUI()},t._reorderHiddenPreviewState=function(e,i){if(e===i)return;let n=Object.keys(t._hiddenPreviewSegments).map(t=>parseInt(t,10));if(0===n.length)return;let r=Math.max(...n,e,i),o=[];for(let e=0;e<=r;e++)o.push(!!t._hiddenPreviewSegments[e]);let a=o.splice(e,1)[0];o.splice(i,0,a),t._hiddenPreviewSegments={};for(let e=0;e<o.length;e++)o[e]&&(t._hiddenPreviewSegments[e]=!0)},t._swapHiddenPreviewState=function(e,i){let n=!!t._hiddenPreviewSegments[e];!!t._hiddenPreviewSegments[i]?t._hiddenPreviewSegments[e]=!0:delete t._hiddenPreviewSegments[e],n?t._hiddenPreviewSegments[i]=!0:delete t._hiddenPreviewSegments[i]},t._reorderSegmentTabStates=function(e,i){if(e===i)return;let n=Object.keys(t._segmentTabStates).map(t=>parseInt(t,10));if(0===n.length)return;let r=Math.max(...n,e,i),o=[];for(let e=0;e<=r;e++)o.push(t._segmentTabStates[e]||"editor");let a=o.splice(e,1)[0];o.splice(i,0,a),t._segmentTabStates={};for(let e=0;e<o.length;e++)"editor"!==o[e]&&(t._segmentTabStates[e]=o[e])},t._swapSegmentTabStates=function(e,i){let n=t._segmentTabStates[e]||"editor",r=t._segmentTabStates[i]||"editor";"editor"!==r?t._segmentTabStates[e]=r:delete t._segmentTabStates[e],"editor"!==n?t._segmentTabStates[i]=n:delete t._segmentTabStates[i]},t._setActiveSegment=function(e){if(t._activeSegmentIndex>=0&&t._activeSegmentIndex!==e){let e=document.getElementById("PictMDE-Segment-".concat(t._activeSegmentIndex));e&&e.classList.remove("pict-mde-active")}t._activeSegmentIndex=e;let i=document.getElementById("PictMDE-Segment-".concat(e));i&&i.classList.add("pict-mde-active")},t._clearActiveSegment=function(e){t._activeSegmentIndex===e&&(t._activeSegmentIndex=-1);let i=document.getElementById("PictMDE-Segment-".concat(e));i&&i.classList.remove("pict-mde-active"),t._resetSidebarPosition(e)},t._updateSidebarPosition=function(e){let i=document.getElementById("PictMDE-Segment-".concat(e));if(!i)return;let n=i.querySelector(".pict-mde-quadrant-tr");if(!n)return;let r=t._segmentEditors[e];if(!r)return;let o=r.state.selection.main.head,a=r.coordsAtPos(o);if(!a)return void t._resetSidebarPosition(e);let s=i.getBoundingClientRect(),c=a.top-s.top,l=n.offsetHeight||0,p=i.offsetHeight||0,d=Math.max(0,p-l);c=Math.max(0,Math.min(c,d)),n.classList.add("pict-mde-sidebar-at-cursor"),n.style.setProperty("--pict-mde-sidebar-top","".concat(c,"px"))},t._resetSidebarPosition=function(t){let e=document.getElementById("PictMDE-Segment-".concat(t));if(!e)return;let i=e.querySelector(".pict-mde-quadrant-tr");i&&(i.classList.remove("pict-mde-sidebar-at-cursor"),i.style.removeProperty("--pict-mde-sidebar-top"))}}},{}],24:[function(t,e,i){const n={bold:{wrap:"**"},italic:{wrap:"*"},code:{wrap:"`"},heading:{prefix:"# "},link:{before:"[",after:"](url)"}};e.exports.attach=function(t){t.applyFormatting=function(e,i){let r=t._segmentEditors[e];if(!r)return void t.log.warn("PICT-MarkdownEditor applyFormatting: no editor for segment ".concat(e,"."));let o=n[i];if(!o)return void t.log.warn('PICT-MarkdownEditor applyFormatting: unknown format type "'.concat(i,'".'));let a,s,c=r.state,l=c.selection.main,p=l.from,d=l.to,u=p!==d,h=u?c.sliceDoc(p,d):"";if(o.wrap){let t=o.wrap;if(u){let e=c.sliceDoc(Math.max(0,p-t.length),p),i=c.sliceDoc(d,Math.min(c.doc.length,d+t.length));if(e===t&&i===t)return a=[{from:p-t.length,to:p,insert:""},{from:d,to:d+t.length,insert:""}],s=p-t.length,void r.dispatch({changes:a,selection:{anchor:s,head:s+h.length}});a={from:p,to:d,insert:t+h+t},s=p+t.length,r.dispatch({changes:a,selection:{anchor:s,head:s+h.length}})}else{a={from:p,insert:t+t},s=p+t.length,r.dispatch({changes:a,selection:{anchor:s}})}}else if(o.prefix){let t=c.doc.lineAt(p);a=t.text.startsWith(o.prefix)?{from:t.from,to:t.from+o.prefix.length,insert:""}:{from:t.from,insert:o.prefix},r.dispatch({changes:a})}else if(o.before&&o.after)if(u){a={from:p,to:d,insert:o.before+h+o.after},s=p+o.before.length+h.length+2,r.dispatch({changes:a,selection:{anchor:s,head:s+3}})}else{a={from:p,insert:o.before+o.after},s=p+o.before.length,r.dispatch({changes:a,selection:{anchor:s}})}r.focus()}}},{}],25:[function(t,e,i){e.exports.attach=function(t){t.openImagePicker=function(e){let i=document.getElementById("PictMDE-ImageInput-".concat(e));i?(i.onchange=()=>{i.files&&i.files.length>0&&t._processImageFile(i.files[0],e),i.value=""},i.click()):t.log.warn("PICT-MarkdownEditor openImagePicker: file input not found for segment ".concat(e,"."))},t._processImageFile=function(e,i){if(!e||!e.type||!e.type.startsWith("image/"))return void t.log.warn("PICT-MarkdownEditor _processImageFile: not an image file (type: ".concat(e?e.type:"null",")."));let n=e.name?e.name.replace(/\.[^.]+$/,""):"image";if(t.onImageUpload(e,i,(e,r)=>{e?t.log.error("PICT-MarkdownEditor image upload error: ".concat(e)):r&&t._insertImageMarkdown(i,r,n)}))return;if("undefined"==typeof FileReader)return void t.log.error("PICT-MarkdownEditor _processImageFile: FileReader not available in this environment.");let r=new FileReader;r.onload=()=>{t._insertImageMarkdown(i,r.result,n)},r.onerror=()=>{t.log.error("PICT-MarkdownEditor _processImageFile: FileReader error.")},r.readAsDataURL(e)},t._insertImageMarkdown=function(e,i,n){let r=t._segmentEditors[e];if(!r)return void t.log.warn("PICT-MarkdownEditor _insertImageMarkdown: no editor for segment ".concat(e,"."));let o=".concat(i,")"),a=r.state.selection.main.head;r.dispatch({changes:{from:a,insert:o},selection:{anchor:a+o.length}}),r.focus(),t._updateImagePreviews(e)},t._updateImagePreviews=function(e){let i=document.getElementById("PictMDE-ImagePreview-".concat(e));if(!i)return;let n=t._segmentEditors[e];if(!n)return i.innerHTML="",void i.classList.remove("pict-mde-has-images");let r,o=n.state.doc.toString(),a=/!\[([^\]]*)\]\(([^)]+)\)/g,s=[];for(;null!==(r=a.exec(o));)s.push({alt:r[1]||"image",url:r[2]});if(0===s.length)return i.innerHTML="",void i.classList.remove("pict-mde-has-images");let c="";for(let e=0;e<s.length;e++){let i=s[e].alt.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),n=t._resolveImageURL(s[e].url).replace(/&/g,"&").replace(/"/g,""");c+='<div class="pict-mde-image-preview-item"><img src="'.concat(n,'" alt="').concat(i,'" /><span class="pict-mde-image-preview-label">').concat(i,"</span></div>")}i.innerHTML=c,i.classList.add("pict-mde-has-images")},t._wireImageDragEvents=function(e,i){e.addEventListener("dragover",i=>{t._dragSourceIndex>=0||!i.dataTransfer||!i.dataTransfer.types||i.dataTransfer.types.indexOf("Files")<0||(i.preventDefault(),i.dataTransfer.dropEffect="copy",e.classList.add("pict-mde-image-dragover"))}),e.addEventListener("dragleave",t=>{e.contains(t.relatedTarget)||e.classList.remove("pict-mde-image-dragover")}),e.addEventListener("drop",n=>{if(e.classList.remove("pict-mde-image-dragover"),t._dragSourceIndex>=0)return;if(!n.dataTransfer||!n.dataTransfer.files||n.dataTransfer.files.length<1)return;let r=n.dataTransfer.files[0];r.type&&r.type.startsWith("image/")&&(n.preventDefault(),n.stopPropagation(),t._processImageFile(r,i))})}}},{}],26:[function(t,e,i){const n=t("pict-section-content").PictContentProvider;e.exports.attach=function(e){e._getContentProvider=function(){return e._contentProvider||(e._contentProvider=new n(e.fable,{},"Pict-Content-Provider-MDE")),e._contentProvider},e._updateRichPreviews=function(t){if(!e.options.EnableRichPreview)return;let i=document.getElementById("PictMDE-RichPreview-".concat(t));if(!i)return;let n=e._segmentEditors[t];if(!n)return i.innerHTML="",void i.classList.remove("pict-mde-has-rich-preview");let r=n.state.doc.toString();if(!r||0===r.trim().length)return i.innerHTML="",void i.classList.remove("pict-mde-has-rich-preview");let o=e._getContentProvider(),a=null;e.pict&&e.pict.providers&&e.pict.providers.Vocabulary&&"function"==typeof e.pict.providers.Vocabulary.getResolver&&(a=e.pict.providers.Vocabulary.getResolver());let s=o.parseMarkdown(r,null,null,a);if(!s||0===s.trim().length)return i.innerHTML="",void i.classList.remove("pict-mde-has-rich-preview");let c="PictMDE-RichPreviewBody-".concat(t);if(i.innerHTML='<div class="pict-content" id="'.concat(c,'">').concat(s,"</div>"),i.classList.add("pict-mde-has-rich-preview"),e.pict&&e.pict.providers&&e.pict.providers.Vocabulary&&"function"==typeof e.pict.providers.Vocabulary.wirePopovers&&e.pict.providers.Vocabulary.wirePopovers("#"+c),e.options.ImageBaseURL){let t=i.querySelectorAll("img");for(let i=0;i<t.length;i++){let n=t[i].getAttribute("src");if(n){let r=e._resolveImageURL(n);r!==n&&t[i].setAttribute("src",r)}}}let l=(e._richPreviewGenerations[t]||0)+1;e._richPreviewGenerations[t]=l,e._postRenderMermaid(c,t,l),e._postRenderKaTeX(c)},e._ensureMermaidAdapter=function(){if(e._mermaidAdapter)return e._mermaidAdapter;if("undefined"==typeof mermaid||"undefined"==typeof window)return null;let i=e.pict&&e.pict.providers&&e.pict.providers.Theme;try{if(i&&i.diagram&&"function"==typeof i.diagram.adaptMermaid)e._mermaidAdapter=i.diagram.adaptMermaid(mermaid,{});else{let i=t("pict-provider-theme/source/Theme-Diagram-Adapter.js");i.initializeMermaid(mermaid),e._mermaidAdapter={refresh:function(){return i.refreshMermaidDiagrams()},reinitialize:function(){i.initializeMermaid(mermaid)},dispose:function(){},subscribed:!1}}}catch(t){e.log.warn("PICT-MarkdownEditor mermaid theme adapter init failed: ".concat(t.message||t)),e._mermaidAdapter=null}return e._mermaidAdapter},e._postRenderMermaid=function(t,i,n){if("undefined"==typeof mermaid)return;let r=document.getElementById(t);if(!r)return;let o=r.querySelectorAll("pre.mermaid");if(o.length<1)return;e._ensureMermaidAdapter();let a=e.pict&&e.pict.providers&&e.pict.providers.Theme;if(a&&a.diagram&&"function"==typeof a.diagram.stashMermaidSource)a.diagram.stashMermaidSource(o);else for(let t=0;t<o.length;t++){let e=o[t];e.hasAttribute("data-mermaid-source")||e.setAttribute("data-mermaid-source",e.textContent)}try{let t=mermaid.run({nodes:o});t&&"function"==typeof t.catch&&t.catch(t=>{(-1===i?e._renderedViewGeneration:e._richPreviewGenerations[i])===n&&e.log.warn("PICT-MarkdownEditor mermaid render error: ".concat(t.message||t))})}catch(t){e.log.warn("PICT-MarkdownEditor mermaid render error: ".concat(t.message||t))}},e._postRenderKaTeX=function(t){if("undefined"==typeof katex)return;let i=document.getElementById(t);if(!i)return;let n=i.querySelectorAll(".pict-content-katex-inline");for(let t=0;t<n.length;t++)try{katex.render(n[t].textContent,n[t],{throwOnError:!1,displayMode:!1})}catch(t){e.log.warn("PICT-MarkdownEditor KaTeX inline error: ".concat(t.message||t))}let r=i.querySelectorAll(".pict-content-katex-display");for(let t=0;t<r.length;t++)try{katex.render(r[t].textContent,r[t],{throwOnError:!1,displayMode:!0})}catch(t){e.log.warn("PICT-MarkdownEditor KaTeX display error: ".concat(t.message||t))}},e._escapeHTMLForPreview=function(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},e.toggleRenderedView=function(t){e._renderedViewActive="boolean"==typeof t?t:!e._renderedViewActive,e._renderedViewActive?e._renderRenderedView():e._restoreEditingView()},e._renderRenderedView=function(){let t=e._getContainerElement();if(!t)return;e._marshalAllEditorsToData();let i=e._getSegmentsFromData(),n="";if(i&&i.length>0){let t=[];for(let e=0;e<i.length;e++)t.push(i[e].Content||"");n=t.join("\n\n")}for(let t in e._segmentEditors)e._segmentEditors[t]&&e._segmentEditors[t].destroy();e._segmentEditors={};let r=e._getContentProvider().parseMarkdown(n),o="PictMDE-RenderedView";if(t.innerHTML='<div class="pict-mde-rendered-view" id="'.concat(o,'"><div class="pict-content">').concat(r||"","</div></div>"),t.classList.add("pict-mde-rendered-mode"),e.options.ImageBaseURL){let i=t.querySelectorAll(".pict-mde-rendered-view img");for(let t=0;t<i.length;t++){let n=i[t].getAttribute("src");if(n){let r=e._resolveImageURL(n);r!==n&&i[t].setAttribute("src",r)}}}e._renderedViewGeneration++;let a=e._renderedViewGeneration,s=t.querySelector("#".concat(o," .pict-content"));if(s){let t="PictMDE-RenderedViewContent";s.id=t,e._postRenderMermaid(t,-1,a),e._postRenderKaTeX(t)}},e._restoreEditingView=function(){let t=e._getContainerElement();t&&(t.classList.remove("pict-mde-rendered-mode"),e._buildEditorUI())}}},{"pict-provider-theme/source/Theme-Diagram-Adapter.js":7,"pict-section-content":14}],27:[function(t,e,i){e.exports={DefaultRenderable:"MarkdownEditor-Wrap",DefaultDestinationAddress:"#MarkdownEditor-Container-Div",Templates:[{Hash:"MarkdownEditor-Container",Template:'<div class="pict-mde" id="PictMDE-Container"></div>'},{Hash:"MarkdownEditor-Segment",Template:'<div class="pict-mde-segment" id="PictMDE-Segment-{~D:Record.SegmentIndex~}" data-segment-index="{~D:Record.SegmentIndex~}">\n\t<div class="pict-mde-left-controls">\n\t\t<div class="pict-mde-quadrant-tl"></div>\n\t\t<div class="pict-mde-quadrant-bl"></div>\n\t</div>\n\t<div class="pict-mde-drag-handle" draggable="true" title="Drag to reorder"></div>\n\t<div class="pict-mde-segment-body">\n\t\t<div class="pict-mde-tab-bar" id="PictMDE-TabBar-{~D:Record.SegmentIndex~}">\n\t\t\t<button type="button" class="pict-mde-tab pict-mde-tab-active" data-tab="editor" onclick="{~D:Record.ViewIdentifier~}.switchSegmentTab({~D:Record.SegmentIndex~}, \'editor\')">Edit</button>\n\t\t\t<button type="button" class="pict-mde-tab" data-tab="preview" onclick="{~D:Record.ViewIdentifier~}.switchSegmentTab({~D:Record.SegmentIndex~}, \'preview\')">Preview</button>\n\t\t</div>\n\t\t<div class="pict-mde-segment-editor" id="PictMDE-SegmentEditor-{~D:Record.SegmentIndex~}"></div>\n\t\t<div class="pict-mde-preview-pane" id="PictMDE-PreviewPane-{~D:Record.SegmentIndex~}">\n\t\t\t<div class="pict-mde-image-preview" id="PictMDE-ImagePreview-{~D:Record.SegmentIndex~}"></div>\n\t\t\t<div class="pict-mde-rich-preview" id="PictMDE-RichPreview-{~D:Record.SegmentIndex~}"></div>\n\t\t</div>\n\t</div>\n\t<div class="pict-mde-sidebar" id="PictMDE-Sidebar-{~D:Record.SegmentIndex~}">\n\t\t<div class="pict-mde-quadrant-tr"></div>\n\t\t<div class="pict-mde-quadrant-br"></div>\n\t\t<input type="file" accept="image/*" class="pict-mde-image-input" id="PictMDE-ImageInput-{~D:Record.SegmentIndex~}" style="display:none" />\n\t</div>\n</div>'},{Hash:"MarkdownEditor-AddSegment",Template:'<div class="pict-mde-add-segment">\n\t<button type="button" class="pict-mde-btn-add" onclick="{~D:Record.ViewIdentifier~}.addSegment()">+ Add Segment</button>\n</div>'}],Renderables:[{RenderableHash:"MarkdownEditor-Wrap",TemplateHash:"MarkdownEditor-Container",DestinationAddress:"#MarkdownEditor-Container-Div"}],TargetElementAddress:"#MarkdownEditor-Container-Div",ContentDataAddress:!1,ReadOnly:!1,EnableRichPreview:!0,DefaultPreviewMode:"off",ImageBaseURL:"",ButtonsTL:[{HTML:"{~I:Close~}",Action:"removeSegment",Class:"pict-mde-btn-remove",Title:"Remove Segment"}],ButtonsBL:[{HTML:"{~I:ArrowUp~}",Action:"moveSegmentUp",Class:"pict-mde-btn-move",Title:"Move Up"},{HTML:"{~I:ArrowDown~}",Action:"moveSegmentDown",Class:"pict-mde-btn-move",Title:"Move Down"},{HTML:"{~I:Settings~}",Action:"toggleControls",Class:"pict-mde-btn-linenums",Title:"Toggle Controls"},{HTML:"{~I:Eye~}",Action:"cyclePreviewMode",Class:"pict-mde-btn-preview",Title:"Cycle Preview Mode"}],ButtonsTR:[{HTML:"<b>B</b>",Action:"applyFormatting:bold",Class:"",Title:"Bold (Ctrl+B)"},{HTML:"<i>I</i>",Action:"applyFormatting:italic",Class:"",Title:"Italic (Ctrl+I)"},{HTML:"<code><></code>",Action:"applyFormatting:code",Class:"",Title:"Inline Code (Ctrl+E)"},{HTML:"#",Action:"applyFormatting:heading",Class:"",Title:"Heading"},{HTML:"[ ]",Action:"applyFormatting:link",Class:"",Title:"Link"},{HTML:"{~I:Image~}",Action:"openImagePicker",Class:"pict-mde-sidebar-btn-image",Title:"Insert Image"}],ButtonsBR:[],CSS:"\n/* ---- Container ---- */\n.pict-mde\n{\n\tfont-family: var(--theme-typography-family-body, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);\n\tfont-size: 14px;\n}\n\n/* ---- Segment row: left-controls | drag-handle | editor body | sidebar ---- */\n.pict-mde-segment\n{\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: stretch;\n\tmargin-bottom: 6px;\n\tmin-height: 48px;\n\ttransition: background-color 0.15s ease;\n}\n\n/* ---- Left controls column ---- */\n.pict-mde-left-controls\n{\n\tflex: 0 0 22px;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 2px 0;\n}\n\n/* ---- Left-side quadrants ---- */\n.pict-mde-quadrant-tl\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tposition: sticky;\n\ttop: 2px;\n\tz-index: 2;\n}\n.pict-mde-quadrant-bl\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 1px;\n\tposition: sticky;\n\tbottom: 2px;\n\tz-index: 2;\n}\n\n/* ---- Left-side buttons (shared base) ---- */\n.pict-mde-left-btn\n{\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 20px;\n\theight: 20px;\n\tborder: none;\n\tbackground: transparent;\n\tcursor: pointer;\n\tfont-size: 12px;\n\tpadding: 0;\n\tcolor: var(--theme-color-text-muted, #888);\n\tline-height: 1;\n\tfont-family: inherit;\n\topacity: 0;\n\ttransition: opacity 0.15s ease;\n}\n.pict-mde-segment:hover .pict-mde-left-btn,\n.pict-mde-segment.pict-mde-active .pict-mde-left-btn\n{\n\topacity: 1;\n}\n.pict-mde-left-btn:hover\n{\n\tcolor: var(--theme-color-text-primary, #222);\n}\n.pict-mde-btn-remove:hover\n{\n\tcolor: var(--theme-color-status-error, #CC3333);\n}\n.pict-mde-btn-linenums\n{\n\tfont-size: 11px;\n\tfont-weight: 600;\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', monospace);\n}\n/* Highlight when controls are active */\n.pict-mde.pict-mde-controls-on .pict-mde-btn-linenums\n{\n\tcolor: var(--theme-color-brand-primary, #4A90D9);\n}\n.pict-mde-btn-preview\n{\n\tfont-size: 11px;\n}\n/* Preview button: highlight when any preview mode is active */\n.pict-mde.pict-mde-preview-bottom .pict-mde-btn-preview,\n.pict-mde.pict-mde-preview-side .pict-mde-btn-preview,\n.pict-mde.pict-mde-preview-tabbed .pict-mde-btn-preview\n{\n\tcolor: var(--theme-color-brand-primary, #4A90D9);\n}\n/* Dim preview button when mode is off */\n.pict-mde.pict-mde-preview-off .pict-mde-btn-preview\n{\n\tcolor: var(--theme-color-border-default, #CCC);\n}\n\n/* ---- Drag handle (simple grey bar) ---- */\n.pict-mde-drag-handle\n{\n\tflex: 0 0 8px;\n\tcursor: grab;\n\tbackground: var(--theme-color-background-tertiary, #EDEDED);\n\ttransition: background-color 0.15s ease;\n\tuser-select: none;\n}\n.pict-mde-drag-handle:active\n{\n\tcursor: grabbing;\n}\n.pict-mde-drag-handle:hover\n{\n\tbackground: var(--theme-color-border-default, #C8C8C8);\n}\n\n/* ---- Editor body (middle column) ---- */\n.pict-mde-segment-body\n{\n\tflex: 1 1 0%;\n\tmin-width: 0;\n\toverflow: hidden;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\ttransition: background-color 0.15s ease;\n}\n.pict-mde-segment-editor\n{\n\tmin-height: 48px;\n}\n\n/* ---- Image preview area below the editor ---- */\n.pict-mde-image-preview\n{\n\tdisplay: none;\n}\n.pict-mde-image-preview.pict-mde-has-images\n{\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 8px;\n\tpadding: 8px 12px;\n\tborder-top: 1px solid var(--theme-color-border-light, #EDEDED);\n}\n.pict-mde-image-preview img\n{\n\tmax-width: 200px;\n\tmax-height: 150px;\n\tborder-radius: 3px;\n\tborder: 1px solid var(--theme-color-border-default, #E0E0E0);\n\tobject-fit: contain;\n\tbackground: var(--theme-color-background-secondary, #F8F8F8);\n}\n.pict-mde-image-preview-item\n{\n\tposition: relative;\n\tdisplay: inline-block;\n}\n.pict-mde-image-preview-label\n{\n\tdisplay: block;\n\tfont-size: 10px;\n\tcolor: var(--theme-color-text-muted, #999);\n\tmargin-top: 2px;\n\tmax-width: 200px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n/* ---- Rich content preview area (rendered via pict-section-content) ---- */\n.pict-mde-rich-preview\n{\n\tdisplay: none;\n}\n.pict-mde-rich-preview.pict-mde-has-rich-preview\n{\n\tdisplay: block;\n\tborder-top: 1px solid var(--theme-color-border-light, #EDEDED);\n\tbackground: var(--theme-color-background-panel, #FCFCFC);\n\toverflow: hidden;\n}\n/* Constrain images in the rich preview even if pict-section-content CSS loads late */\n.pict-mde-rich-preview img\n{\n\tmax-width: 100%;\n\theight: auto;\n}\n/* ---- Preview layout modes ---- */\n\n/* Tab bar: hidden by default, shown only in tabbed mode */\n.pict-mde-tab-bar\n{\n\tdisplay: none;\n}\n.pict-mde.pict-mde-preview-tabbed .pict-mde-tab-bar\n{\n\tdisplay: flex;\n\tgap: 0;\n\tborder-bottom: 1px solid var(--theme-color-border-light, #EDEDED);\n\tbackground: var(--theme-color-background-secondary, #F8F8F8);\n}\n.pict-mde-tab\n{\n\tpadding: 4px 12px;\n\tborder: none;\n\tbackground: transparent;\n\tcursor: pointer;\n\tfont-size: 12px;\n\tcolor: var(--theme-color-text-muted, #888);\n\tborder-bottom: 2px solid transparent;\n\tfont-family: inherit;\n}\n.pict-mde-tab:hover\n{\n\tcolor: var(--theme-color-text-primary, #222);\n}\n.pict-mde-tab.pict-mde-tab-active\n{\n\tcolor: var(--theme-color-brand-primary, #4A90D9);\n\tborder-bottom-color: var(--theme-color-brand-primary, #4A90D9);\n}\n\n/* Off mode: hide all preview panes and tab bars */\n.pict-mde.pict-mde-preview-off .pict-mde-preview-pane\n{\n\tdisplay: none;\n}\n.pict-mde.pict-mde-preview-off .pict-mde-tab-bar\n{\n\tdisplay: none;\n}\n/* Legacy class alias for backward compatibility */\n.pict-mde.pict-mde-previews-hidden .pict-mde-preview-pane\n{\n\tdisplay: none;\n}\n\n/* Bottom mode: vertical stacking (default flex-column behavior) */\n.pict-mde.pict-mde-preview-bottom .pict-mde-segment-body\n{\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n/* Side-by-side mode: editor and preview side by side */\n.pict-mde.pict-mde-preview-side .pict-mde-segment-body\n{\n\tdisplay: flex;\n\tflex-direction: row;\n}\n.pict-mde.pict-mde-preview-side .pict-mde-segment-editor\n{\n\tflex: 1 1 50%;\n\tmin-width: 0;\n\toverflow: hidden;\n}\n.pict-mde.pict-mde-preview-side .pict-mde-preview-pane\n{\n\tflex: 1 1 50%;\n\tmin-width: 0;\n\toverflow: auto;\n\tborder-left: 1px solid var(--theme-color-border-light, #EDEDED);\n}\n/* Side-by-side: remove top borders since preview is beside, not below */\n.pict-mde.pict-mde-preview-side .pict-mde-rich-preview.pict-mde-has-rich-preview\n{\n\tborder-top: none;\n}\n.pict-mde.pict-mde-preview-side .pict-mde-image-preview.pict-mde-has-images\n{\n\tborder-top: none;\n}\n\n/* Tabbed mode: default hides preview, shows editor */\n.pict-mde.pict-mde-preview-tabbed .pict-mde-segment-body\n{\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.pict-mde.pict-mde-preview-tabbed .pict-mde-preview-pane\n{\n\tdisplay: none;\n}\n/* Tabbed mode: when showing preview, hide editor and show preview */\n.pict-mde.pict-mde-preview-tabbed .pict-mde-segment.pict-mde-tab-showing-preview .pict-mde-segment-editor\n{\n\tdisplay: none;\n}\n.pict-mde.pict-mde-preview-tabbed .pict-mde-segment.pict-mde-tab-showing-preview .pict-mde-preview-pane\n{\n\tdisplay: block;\n}\n\n/* Per-segment preview hide: only applies in bottom and side modes */\n.pict-mde.pict-mde-preview-bottom .pict-mde-segment.pict-mde-preview-hidden .pict-mde-preview-pane,\n.pict-mde.pict-mde-preview-side .pict-mde-segment.pict-mde-preview-hidden .pict-mde-preview-pane\n{\n\tdisplay: none;\n}\n/* Constrain the pict-content inside the preview to fit the segment */\n.pict-mde-rich-preview .pict-content\n{\n\tpadding: 12px;\n\tmax-width: none;\n\tmargin: 0;\n\tfont-size: 13px;\n}\n/* Reduce heading sizes in the preview to be proportional */\n.pict-mde-rich-preview .pict-content h1\n{\n\tfont-size: 1.4em;\n\tmargin-top: 0;\n}\n.pict-mde-rich-preview .pict-content h2\n{\n\tfont-size: 1.2em;\n\tmargin-top: 0.75em;\n}\n.pict-mde-rich-preview .pict-content h3\n{\n\tfont-size: 1.1em;\n\tmargin-top: 0.6em;\n}\n\n/* ---- Rendered view (full document preview mode) ---- */\n.pict-mde-rendered-view\n{\n\tpadding: 16px 20px;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\tmin-height: 120px;\n}\n.pict-mde-rendered-view .pict-content\n{\n\tmax-width: none;\n\tmargin: 0;\n}\n/* Hide the add-segment button in rendered mode */\n.pict-mde.pict-mde-rendered-mode .pict-mde-add-segment\n{\n\tdisplay: none;\n}\n\n/* Focused / active editor gets subtle warm background */\n.pict-mde-segment.pict-mde-active .pict-mde-segment-body\n{\n\tbackground: var(--theme-color-background-secondary, #FAFAF5);\n}\n.pict-mde-segment.pict-mde-active .pict-mde-drag-handle\n{\n\tbackground: var(--theme-color-border-strong, #9CB4C8);\n}\n\n/* ---- Right sidebar column ---- */\n.pict-mde-sidebar\n{\n\tflex: 0 0 30px;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n\tjustify-content: space-between;\n\tposition: relative;\n}\n\n/* ---- Right-side quadrants ---- */\n.pict-mde-quadrant-tr\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 1px;\n\tpadding: 4px 0;\n\twidth: 100%;\n\topacity: 0;\n\ttransition: opacity 0.15s ease, top 0.1s ease;\n\tposition: sticky;\n\ttop: 0;\n}\n.pict-mde-quadrant-br\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 1px;\n\tpadding: 4px 0;\n\twidth: 100%;\n\topacity: 0;\n\ttransition: opacity 0.15s ease;\n\tposition: sticky;\n\tbottom: 0;\n}\n\n/* Active segment always shows its right-side quadrants */\n.pict-mde-segment.pict-mde-active .pict-mde-quadrant-tr,\n.pict-mde-segment.pict-mde-active .pict-mde-quadrant-br\n{\n\topacity: 1;\n}\n/* When no segment is active, hovering shows both left + right controls */\n.pict-mde:not(:has(.pict-mde-active)) .pict-mde-segment:hover .pict-mde-quadrant-tr,\n.pict-mde:not(:has(.pict-mde-active)) .pict-mde-segment:hover .pict-mde-quadrant-br\n{\n\topacity: 1;\n}\n\n/* ---- Controls-hidden mode: right quadrants show faintly on hover ---- */\n.pict-mde.pict-mde-controls-hidden .pict-mde-quadrant-tr,\n.pict-mde.pict-mde-controls-hidden .pict-mde-quadrant-br\n{\n\topacity: 0;\n}\n.pict-mde.pict-mde-controls-hidden .pict-mde-segment:hover .pict-mde-quadrant-tr,\n.pict-mde.pict-mde-controls-hidden .pict-mde-segment:hover .pict-mde-quadrant-br\n{\n\topacity: 0.3;\n}\n.pict-mde.pict-mde-controls-hidden .pict-mde-segment.pict-mde-active .pict-mde-quadrant-tr,\n.pict-mde.pict-mde-controls-hidden .pict-mde-segment.pict-mde-active .pict-mde-quadrant-br\n{\n\topacity: 0.3;\n}\n\n/* When JS sets a cursor-relative offset, switch TR from sticky to absolute positioning */\n.pict-mde-quadrant-tr.pict-mde-sidebar-at-cursor\n{\n\tposition: absolute;\n\ttop: var(--pict-mde-sidebar-top, 0px);\n}\n\n/* ---- Right-side buttons (shared base) ---- */\n.pict-mde-sidebar-btn\n{\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 24px;\n\theight: 22px;\n\tborder: none;\n\tbackground: transparent;\n\tcursor: pointer;\n\tfont-size: 12px;\n\tpadding: 0;\n\tborder-radius: 3px;\n\tcolor: var(--theme-color-text-secondary, #666);\n\tline-height: 1;\n\tfont-family: inherit;\n}\n.pict-mde-sidebar-btn:hover\n{\n\tcolor: var(--theme-color-text-primary, #222);\n}\n.pict-mde-sidebar-btn b\n{\n\tfont-size: 13px;\n\tfont-weight: 700;\n}\n.pict-mde-sidebar-btn i\n{\n\tfont-size: 13px;\n\tfont-style: italic;\n}\n.pict-mde-sidebar-btn code\n{\n\tfont-size: 10px;\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', monospace);\n}\n\n/* ---- Add segment button ---- */\n.pict-mde-add-segment\n{\n\tmargin-top: 6px;\n\tpadding-left: 30px;\n}\n.pict-mde-btn-add\n{\n\tdisplay: block;\n\twidth: 100%;\n\tpadding: 7px;\n\tborder: 2px dashed var(--theme-color-border-default, #D0D0D0);\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcolor: var(--theme-color-text-muted, #999);\n\tfont-size: 12px;\n\tfont-weight: 600;\n\tcursor: pointer;\n\ttransition: all 0.15s ease;\n}\n.pict-mde-btn-add:hover\n{\n\tborder-color: var(--theme-color-brand-primary, #4A90D9);\n\tcolor: var(--theme-color-brand-primary, #4A90D9);\n\tbackground: rgba(74, 144, 217, 0.04);\n}\n\n/* ---- Image drag-over indicator ---- */\n.pict-mde-segment-editor.pict-mde-image-dragover\n{\n\toutline: 2px dashed var(--theme-color-brand-primary, #4A90D9);\n\toutline-offset: -2px;\n}\n\n/* ---- Drag-in-progress: prevent CodeMirror from intercepting drop events ---- */\n.pict-mde.pict-mde-dragging .pict-mde-segment-editor\n{\n\tpointer-events: none;\n}\n\n/* ---- Drop target indicators for drag reorder ---- */\n.pict-mde-segment.pict-mde-drag-over-top\n{\n\tbox-shadow: 0 -2px 0 0 var(--theme-color-brand-primary, #4A90D9);\n}\n.pict-mde-segment.pict-mde-drag-over-bottom\n{\n\tbox-shadow: 0 2px 0 0 var(--theme-color-brand-primary, #4A90D9);\n}\n\n/* ---- CodeMirror overrides inside segments ---- */\n.pict-mde-segment-editor .cm-editor\n{\n\tborder: none;\n}\n.pict-mde-segment-editor .cm-editor .cm-scroller\n{\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.6;\n}\n.pict-mde-segment-editor .cm-editor.cm-focused\n{\n\toutline: none;\n}\n.pict-mde-segment-editor .cm-editor .cm-content\n{\n\tpadding: 8px 12px;\n\tmin-height: 36px;\n}\n.pict-mde-segment-editor .cm-editor .cm-gutters\n{\n\tbackground: var(--theme-color-background-secondary, #F8F8F8);\n\tborder-right: 1px solid var(--theme-color-border-light, #E8E8E8);\n\tcolor: var(--theme-color-text-muted, #BBB);\n}\n\n/* ---- Collapsed data URI widget ---- */\n.pict-mde-data-uri-collapsed\n{\n\tdisplay: inline;\n\tbackground: var(--theme-color-background-tertiary, #F0F0F0);\n\tcolor: var(--theme-color-text-muted, #888);\n\tfont-size: 11px;\n\tpadding: 1px 4px;\n\tborder-radius: 3px;\n\tborder: 1px solid var(--theme-color-border-default, #E0E0E0);\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', monospace);\n\tcursor: default;\n\twhite-space: nowrap;\n}\n\n/* ---- Line number / controls toggle: gutters hidden by default ---- */\n.pict-mde .cm-editor .cm-gutters\n{\n\tdisplay: none;\n}\n.pict-mde.pict-mde-controls-on .cm-editor .cm-gutters\n{\n\tdisplay: flex;\n}\n\n/* ============================================\n RESPONSIVE: Tablet / Phone (max-width: 768px)\n ============================================ */\n@media (max-width: 768px)\n{\n\t/* Prevent any horizontal overflow in the editor */\n\t.pict-mde\n\t{\n\t\toverflow-x: hidden;\n\t\tmax-width: 100%;\n\t}\n\n\t/* Reduce the left controls column width */\n\t.pict-mde-left-controls\n\t{\n\t\tflex: 0 0 16px;\n\t}\n\t.pict-mde-left-btn\n\t{\n\t\twidth: 16px;\n\t\theight: 18px;\n\t\tfont-size: 10px;\n\t}\n\n\t/* Make left-side buttons always visible on touch (no hover) */\n\t.pict-mde-left-btn\n\t{\n\t\topacity: 0.6;\n\t}\n\n\t/* Narrow the drag handle */\n\t.pict-mde-drag-handle\n\t{\n\t\tflex: 0 0 5px;\n\t}\n\n\t/* Shrink the right sidebar column */\n\t.pict-mde-sidebar\n\t{\n\t\tflex: 0 0 24px;\n\t}\n\t.pict-mde-sidebar-btn\n\t{\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\tfont-size: 11px;\n\t}\n\n\t/* Make right sidebar buttons always visible (touch devices) */\n\t.pict-mde-quadrant-tr,\n\t.pict-mde-quadrant-br\n\t{\n\t\topacity: 0.7;\n\t}\n\t.pict-mde-segment.pict-mde-active .pict-mde-quadrant-tr,\n\t.pict-mde-segment.pict-mde-active .pict-mde-quadrant-br\n\t{\n\t\topacity: 1;\n\t}\n\n\t/* Reduce CodeMirror content padding */\n\t.pict-mde-segment-editor .cm-editor .cm-content\n\t{\n\t\tpadding: 6px 6px;\n\t}\n\n\t/* Reduce font size slightly for more content on screen */\n\t.pict-mde-segment-editor .cm-editor .cm-scroller\n\t{\n\t\tfont-size: 13px;\n\t}\n\n\t/* Add segment button: reduce left margin */\n\t.pict-mde-add-segment\n\t{\n\t\tpadding-left: 21px;\n\t}\n\n\t/* Side-by-side: fall back to vertical stacking on narrow screens */\n\t.pict-mde.pict-mde-preview-side .pict-mde-segment-body\n\t{\n\t\tflex-direction: column;\n\t}\n\t.pict-mde.pict-mde-preview-side .pict-mde-preview-pane\n\t{\n\t\tborder-left: none;\n\t\tborder-top: 1px solid var(--theme-color-border-light, #EDEDED);\n\t}\n\n\t/* Tab bar: smaller on tablet */\n\t.pict-mde-tab\n\t{\n\t\tpadding: 3px 8px;\n\t\tfont-size: 11px;\n\t}\n\n\t/* Rich preview: less padding */\n\t.pict-mde-rich-preview .pict-content\n\t{\n\t\tpadding: 8px;\n\t\tfont-size: 12px;\n\t}\n\n\t/* Image previews: smaller max dimensions */\n\t.pict-mde-image-preview img\n\t{\n\t\tmax-width: 120px;\n\t\tmax-height: 100px;\n\t}\n\n\t/* Rendered view: less padding */\n\t.pict-mde-rendered-view\n\t{\n\t\tpadding: 10px 8px;\n\t}\n}\n\n/* ============================================\n RESPONSIVE: Small phone (max-width: 480px)\n ============================================ */\n@media (max-width: 480px)\n{\n\t/* Wrap segment so left controls flow to the top as a horizontal bar */\n\t.pict-mde-segment\n\t{\n\t\tflex-wrap: wrap;\n\t}\n\n\t/* Left controls become a horizontal toolbar at the top of the segment */\n\t.pict-mde-left-controls\n\t{\n\t\tflex: 0 0 100%;\n\t\tflex-direction: row;\n\t\tjustify-content: flex-start;\n\t\tgap: 2px;\n\t\tpadding: 3px 4px;\n\t\torder: -1;\n\t\tbackground: var(--theme-color-background-secondary, #F5F5F5);\n\t\tborder-bottom: 1px solid var(--theme-color-border-light, #EDEDED);\n\t}\n\t.pict-mde-left-btn\n\t{\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tfont-size: 12px;\n\t\topacity: 0.7;\n\t}\n\n\t/* Left quadrants flow horizontally */\n\t.pict-mde-quadrant-tl,\n\t.pict-mde-quadrant-bl\n\t{\n\t\tflex-direction: row;\n\t\tgap: 2px;\n\t\tposition: static;\n\t}\n\n\t/* Segment body: explicit basis so it fills the wrapped row */\n\t.pict-mde-segment-body\n\t{\n\t\tflex: 1 1 calc(100% - 20px);\n\t}\n\n\t/* Hide drag handle on very small screens */\n\t.pict-mde-drag-handle\n\t{\n\t\tdisplay: none;\n\t}\n\n\t/* Right sidebar: further shrink */\n\t.pict-mde-sidebar\n\t{\n\t\tflex: 0 0 20px;\n\t}\n\t.pict-mde-sidebar-btn\n\t{\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tfont-size: 10px;\n\t}\n\n\t/* Add segment: no left offset since controls are at top */\n\t.pict-mde-add-segment\n\t{\n\t\tpadding-left: 0;\n\t}\n\n\t/* Even tighter CodeMirror padding */\n\t.pict-mde-segment-editor .cm-editor .cm-content\n\t{\n\t\tpadding: 4px 4px;\n\t}\n}\n"}},{}],28:[function(t,e,i){const n=t("pict-view"),r=t("pict-section-content"),o=t("./Pict-Section-MarkdownEditor-DefaultConfiguration.js"),a=t("./Pict-MDE-Formatting.js"),s=t("./Pict-MDE-ImageHandling.js"),c=t("./Pict-MDE-DragAndReorder.js"),l=t("./Pict-MDE-RichPreview.js"),p=t("./Pict-MDE-CodeMirror.js");e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},o,e),i),this.initialRenderComplete=!1,this._codeMirrorModules=null,this._segmentEditors={},this._segmentCounter=0,this._viewCallIdentifier=!1,this._activeSegmentIndex=-1,this._dragSourceIndex=-1,this._controlsVisible=!0,this._previewMode=this.options.DefaultPreviewMode||"off",this._lastPreviewLayout="bottom",this._segmentTabStates={},this._hiddenPreviewSegments={},this._imagePreviewTimers={},this._richPreviewTimers={},this._richPreviewGenerations={},this._contentProvider=null,this._renderedViewActive=!1,this._renderedViewGeneration=0,a.attach(this),s.attach(this),c.attach(this),l.attach(this),p.attach(this)}onBeforeInitialize(){return super.onBeforeInitialize(),this.targetElement=!1,super.onBeforeInitialize()}connectCodeMirrorModules(t){if(!t||"object"!=typeof t||"function"!=typeof t.EditorView||"function"!=typeof t.EditorState)return"undefined"!=typeof window&&window.CodeMirrorModules&&"function"==typeof window.CodeMirrorModules.EditorView?(this.log.trace("PICT-MarkdownEditor Found CodeMirror modules on window.CodeMirrorModules."),void(this._codeMirrorModules=window.CodeMirrorModules)):(this.log.error("PICT-MarkdownEditor No CodeMirror modules found. Provide them via connectCodeMirrorModules() or set window.CodeMirrorModules."),!1);this._codeMirrorModules=t}onAfterRender(t){return this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),this.pict.CSSMap.injectCSS(),super.onAfterRender(t)}onAfterInitialRender(){if(this._codeMirrorModules||this.connectCodeMirrorModules(),!this._codeMirrorModules)return this.log.error("PICT-MarkdownEditor Cannot initialize; no CodeMirror modules available."),!1;if(this.options.EnableRichPreview){let t=r.default_configuration;t&&t.CSS&&this.pict.CSSMap.addCSS("Pict-Content-View",t.CSS)}let t=this.services.ContentAssignment.getElement(this.options.TargetElementAddress);if(!t||t.length<1)return this.log.error("PICT-MarkdownEditor Could not find target element [".concat(this.options.TargetElementAddress,"]!")),this.targetElement=!1,!1;this.targetElement=t[0],this._viewCallIdentifier=this._resolveViewCallIdentifier(),this._buildEditorUI()}_resolveViewCallIdentifier(){let t=this.pict.views;for(let e in t)if(t[e]===this)return"_Pict.views['".concat(e,"']");return"_Pict.servicesMap.PictView['".concat(this.Hash,"']")}_getContainerElement(){if(this.targetElement){let t=this.targetElement.querySelector(".pict-mde");if(t)return t}return this.targetElement||null}_resolveImageURL(t){if(!t||!this.options.ImageBaseURL)return t;if(t.startsWith("/")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:"))return t;let e=this.options.ImageBaseURL;return e&&!e.endsWith("/")&&(e+="/"),e+t}_buildEditorUI(){let t=this._getContainerElement();t&&!t.classList.contains("pict-mde")&&t.classList.add("pict-mde");for(let t in this._segmentEditors)this._segmentEditors[t]&&this._segmentEditors[t].destroy();t.innerHTML="",t.classList.remove("pict-mde-preview-off","pict-mde-preview-bottom","pict-mde-preview-side","pict-mde-preview-tabbed","pict-mde-previews-hidden"),t.classList.add("pict-mde-preview-"+this._previewMode),this._controlsVisible?t.classList.add("pict-mde-controls-on"):t.classList.add("pict-mde-controls-hidden");let e=this._getSegmentsFromData();e&&0!==e.length||(e=[{Content:""}],this._setSegmentsToData(e)),this._segmentCounter=0,this._segmentEditors={};for(let i=0;i<e.length;i++)this._renderSegment(t,i,e[i].Content||"");this._renderAddButton(t)}_renderSegment(t,e,i){let n=this._segmentCounter++,r={SegmentIndex:n,SegmentDisplayIndex:e+1,ViewIdentifier:this._viewCallIdentifier},o=this.pict.parseTemplateByHash("MarkdownEditor-Segment",r),a=document.createElement("div");a.innerHTML=o;let s=a.firstElementChild;if(t.appendChild(s),this._buildQuadrantButtons(s,n),this._hiddenPreviewSegments[e]&&s.classList.add("pict-mde-preview-hidden"),"tabbed"===this._previewMode&&"preview"===this._segmentTabStates[e]){s.classList.add("pict-mde-tab-showing-preview");let t=s.querySelector(".pict-mde-tab-bar");if(t){let e=t.querySelector('[data-tab="editor"]'),i=t.querySelector('[data-tab="preview"]');e&&e.classList.remove("pict-mde-tab-active"),i&&i.classList.add("pict-mde-tab-active")}}this._wireSegmentDragEvents(s,n);let c=document.getElementById("PictMDE-SegmentEditor-".concat(n));c&&(this._createEditorInContainer(c,n,i),this._wireImageDragEvents(c,n),i&&(this._updateImagePreviews(n),this._updateRichPreviews(n)))}_buildQuadrantButtons(t,e){let i=[{key:"ButtonsTL",selector:".pict-mde-quadrant-tl",baseClass:"pict-mde-left-btn"},{key:"ButtonsBL",selector:".pict-mde-quadrant-bl",baseClass:"pict-mde-left-btn"},{key:"ButtonsTR",selector:".pict-mde-quadrant-tr",baseClass:"pict-mde-sidebar-btn"},{key:"ButtonsBR",selector:".pict-mde-quadrant-br",baseClass:"pict-mde-sidebar-btn"}],n=this;for(let r=0;r<i.length;r++){let o=i[r],a=t.querySelector(o.selector);if(!a)continue;let s=this.options[o.key];if(Array.isArray(s))for(let t=0;t<s.length;t++){let i=s[t],r=document.createElement("button");r.type="button",r.className=o.baseClass,i.Class&&(r.className+=" "+i.Class);let c=i.HTML||"";c&&"function"==typeof this.pict.parseTemplate&&(c=this.pict.parseTemplate(c,{})),r.innerHTML=c,r.title=i.Title||"";let l=i.Action||"",p=l,d=null,u=l.indexOf(":");u>=0&&(p=l.substring(0,u),d=l.substring(u+1)),function(t,e,i){r.addEventListener("click",()=>{"function"==typeof n[t]?null!==e?n[t](i,e):n[t](i):n.log.warn('PICT-MarkdownEditor _buildQuadrantButtons: method "'.concat(t,'" not found.'))})}(p,d,e),a.appendChild(r)}}}customConfigureExtensions(t,e){return t}_renderAddButton(t){let e={ViewIdentifier:this._viewCallIdentifier},i=this.pict.parseTemplateByHash("MarkdownEditor-AddSegment",e),n=document.createElement("div");n.innerHTML=i;let r=n.firstElementChild;t.appendChild(r)}onImageUpload(t,e,i){return!1}toggleControls(t,e){let i=e;"boolean"==typeof t&&(i=t),this._controlsVisible="boolean"==typeof i?i:!this._controlsVisible;let n=this._getContainerElement();n&&(this._controlsVisible?(n.classList.add("pict-mde-controls-on"),n.classList.remove("pict-mde-controls-hidden")):(n.classList.remove("pict-mde-controls-on"),n.classList.add("pict-mde-controls-hidden")))}toggleLineNumbers(t){this.toggleControls(t)}togglePreview(t){"boolean"==typeof t?t?this.setPreviewMode(this._lastPreviewLayout||"bottom"):this.setPreviewMode("off"):"off"===this._previewMode?this.setPreviewMode(this._lastPreviewLayout||"bottom"):this.setPreviewMode("off")}setPreviewMode(t){if(["off","bottom","side","tabbed"].indexOf(t)<0)return void this.log.warn('PICT-MarkdownEditor setPreviewMode: unknown mode "'.concat(t,'".'));"off"!==t&&(this._lastPreviewLayout=t),this._previewMode=t;let e=this._getContainerElement();if(e&&(e.classList.remove("pict-mde-preview-off","pict-mde-preview-bottom","pict-mde-preview-side","pict-mde-preview-tabbed","pict-mde-previews-hidden"),e.classList.add("pict-mde-preview-"+t)),"off"!==t){let t=this._getOrderedSegmentIndices();for(let e=0;e<t.length;e++)this._updateRichPreviews(t[e]),this._updateImagePreviews(t[e])}}cyclePreviewMode(t){let e=["off","bottom","side","tabbed"],i=(e.indexOf(this._previewMode)+1)%e.length;this.setPreviewMode(e[i])}switchSegmentTab(t,e){let i=this._getLogicalIndex(t);if(i<0)return;this._segmentTabStates[i]=e;let n=document.getElementById("PictMDE-Segment-".concat(t));if(!n)return;"preview"===e?(n.classList.add("pict-mde-tab-showing-preview"),this._updateRichPreviews(t),this._updateImagePreviews(t)):n.classList.remove("pict-mde-tab-showing-preview");let r=document.getElementById("PictMDE-TabBar-".concat(t));if(r){let t=r.querySelectorAll(".pict-mde-tab");for(let i=0;i<t.length;i++)t[i].getAttribute("data-tab")===e?t[i].classList.add("pict-mde-tab-active"):t[i].classList.remove("pict-mde-tab-active")}}toggleSegmentPreview(t,e){let i=this._getLogicalIndex(t);if(i<0)return;let n=!!this._hiddenPreviewSegments[i];n="boolean"==typeof e?!e:!n,n?this._hiddenPreviewSegments[i]=!0:delete this._hiddenPreviewSegments[i];let r=document.getElementById("PictMDE-Segment-".concat(t));r&&(n?r.classList.add("pict-mde-preview-hidden"):(r.classList.remove("pict-mde-preview-hidden"),this._updateRichPreviews(t),this._updateImagePreviews(t)))}_getSegmentsFromData(){if(!this.options.ContentDataAddress)return null;const t={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};let e=this.fable.manifest.getValueByHash(t,this.options.ContentDataAddress);return Array.isArray(e)?e:null}_setSegmentsToData(t){if(!this.options.ContentDataAddress)return;const e={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};this.fable.manifest.setValueByHash(e,this.options.ContentDataAddress,t)}_onSegmentContentChange(t,e){let i=this._getLogicalIndex(t);if(i<0)return;let n=this._getSegmentsFromData();if(!n)return;i<n.length&&(n[i].Content=e),this.onContentChange(i,e);let r=this;this._imagePreviewTimers[t]&&clearTimeout(this._imagePreviewTimers[t]),this._imagePreviewTimers[t]=setTimeout(()=>{r._updateImagePreviews(t),delete r._imagePreviewTimers[t]},500),this._richPreviewTimers[t]&&clearTimeout(this._richPreviewTimers[t]),this._richPreviewTimers[t]=setTimeout(()=>{r._updateRichPreviews(t),delete r._richPreviewTimers[t]},500)}onContentChange(t,e){}_getLogicalIndex(t){let e=this._getContainerElement();if(!e)return-1;let i=e.querySelectorAll(".pict-mde-segment");for(let e=0;e<i.length;e++){if(parseInt(i[e].getAttribute("data-segment-index"),10)===t)return e}return-1}_getOrderedSegmentIndices(){let t=this._getContainerElement();if(!t)return[];let e=t.querySelectorAll(".pict-mde-segment"),i=[];for(let t=0;t<e.length;t++)i.push(parseInt(e[t].getAttribute("data-segment-index"),10));return i}addSegment(t){let e="string"==typeof t?t:"",i=this._getSegmentsFromData();i||(i=[]),i.push({Content:e}),this._setSegmentsToData(i),this._buildEditorUI()}removeSegment(t){let e=this._getLogicalIndex(t);if(e<0)return void this.log.warn("PICT-MarkdownEditor removeSegment: segment index ".concat(t," not found."));let i=this._getSegmentsFromData();if(!i||i.length<=1)return void this.log.warn("PICT-MarkdownEditor removeSegment: cannot remove the last segment.");this._segmentEditors[t]&&(this._segmentEditors[t].destroy(),delete this._segmentEditors[t]),i.splice(e,1),this._setSegmentsToData(i);let n={};for(let t in this._hiddenPreviewSegments){let i=parseInt(t,10);i<e?n[i]=!0:i>e&&(n[i-1]=!0)}this._hiddenPreviewSegments=n;let r={};for(let t in this._segmentTabStates){let i=parseInt(t,10);i<e?r[i]=this._segmentTabStates[t]:i>e&&(r[i-1]=this._segmentTabStates[t])}this._segmentTabStates=r,this._buildEditorUI()}moveSegmentUp(t){let e=this._getLogicalIndex(t);if(e<=0)return;this._marshalAllEditorsToData();let i=this._getSegmentsFromData();if(!i)return;let n=i[e];i[e]=i[e-1],i[e-1]=n,this._swapHiddenPreviewState(e,e-1),this._swapSegmentTabStates(e,e-1),this._buildEditorUI()}moveSegmentDown(t){let e=this._getLogicalIndex(t),i=this._getSegmentsFromData();if(!i||e<0||e>=i.length-1)return;this._marshalAllEditorsToData();let n=i[e];i[e]=i[e+1],i[e+1]=n,this._swapHiddenPreviewState(e,e+1),this._swapSegmentTabStates(e,e+1),this._buildEditorUI()}getSegmentContent(t){let e=this._getOrderedSegmentIndices();if(t<0||t>=e.length)return"";let i=e[t],n=this._segmentEditors[i];return n?n.state.doc.toString():""}setSegmentContent(t,e){let i=this._getOrderedSegmentIndices();if(t<0||t>=i.length)return void this.log.warn("PICT-MarkdownEditor setSegmentContent: index ".concat(t," out of range."));let n=i[t],r=this._segmentEditors[n];r&&r.dispatch({changes:{from:0,to:r.state.doc.length,insert:e}})}getSegmentCount(){return this._getOrderedSegmentIndices().length}getAllContent(t){let e="string"==typeof t?t:"\n\n",i=this._getOrderedSegmentIndices(),n=[];for(let t=0;t<i.length;t++){let e=this._segmentEditors[i[t]];e&&n.push(e.state.doc.toString())}return n.join(e)}_marshalAllEditorsToData(){let t=this._getSegmentsFromData();if(!t)return;let e=this._getOrderedSegmentIndices();for(let i=0;i<e.length;i++){let n=this._segmentEditors[e[i]];n&&i<t.length&&(t[i].Content=n.state.doc.toString())}}setReadOnly(t){this.options.ReadOnly=t,this.initialRenderComplete&&(this._marshalAllEditorsToData(),this._buildEditorUI())}marshalToView(){super.marshalToView(),this.initialRenderComplete&&this.options.ContentDataAddress&&this._buildEditorUI()}marshalFromView(){super.marshalFromView(),this._marshalAllEditorsToData()}destroy(){for(let t in this._segmentEditors)this._segmentEditors[t]&&this._segmentEditors[t].destroy();this._segmentEditors={};for(let t in this._richPreviewTimers)clearTimeout(this._richPreviewTimers[t]);this._richPreviewTimers={},this._richPreviewGenerations={},this._segmentTabStates={}}},e.exports.default_configuration=o},{"./Pict-MDE-CodeMirror.js":22,"./Pict-MDE-DragAndReorder.js":23,"./Pict-MDE-Formatting.js":24,"./Pict-MDE-ImageHandling.js":25,"./Pict-MDE-RichPreview.js":26,"./Pict-Section-MarkdownEditor-DefaultConfiguration.js":27,"pict-section-content":14,"pict-view":38}],29:[function(t,e,i){e.exports={RenderOnLoad:!0,GridWidth:"auto",GridRowHeight:40,GridBodyHeight:"auto",GridBodyMinHeight:130,GridColumnMinWidth:50,GridColumnWidthResizable:!0,GridColumnHeightResizable:!1,GridColumnFrozenCount:0,GridColumnFrozenBorderWidth:3,GridScrollX:!0,GridScrollY:!0,GridShowDummyRows:!1,GridDraggableRows:!1,GridSelectionUnit:"cell",DefaultRenderable:"TuiGrid-Wrap",DefaultDestinationAddress:"#TuiGrid-Container-Div",Templates:[{Hash:"TuiGrid-Container",Template:"\x3c!-- TuiGrid-Container Rendering Soon --\x3e"}],Renderables:[{RenderableHash:"TuiGrid-Wrap",TemplateHash:"TuiGrid-Container",DestinationAddress:"#TuiGrid-Container-Div"}],TargetElementAddress:"#TuiGrid-Container-Div",GridDataAddress:!1,GridData:[{idrecord:1,entity:"SampleEntity",name:"Record name 1",description:"description 1"},{idrecord:2,entity:"SampleEntity",name:"Record name 2",description:"description 2"},{idrecord:3,entity:"SampleEntity",name:"Record name 3",description:"description 3"},{idrecord:4,entity:"SampleEntity",name:"Record name 4",description:"description 4"},{idrecord:5,entity:"SampleEntity",name:"Record name 5",description:"description 5"},{idrecord:6,entity:"SampleEntity",name:"Record name 6",description:"description 6"},{idrecord:7,entity:"SampleEntity",name:"Record name 7",description:"description 7"},{idrecord:8,entity:"SampleEntity",name:"Record name 8",description:"description 8"},{idrecord:9,entity:"SampleEntity",name:"Record name 9",description:"description 9"}],ColumnsToSolveOnChange:{},TuiColumnSchema:[{header:"IDRecord",name:"idrecord",PictTriggerSolveOnChange:!0},{header:"Entity",name:"entity",PictTriggerSolveOnChange:!0},{header:"Name",name:"name",editor:"text"},{header:"Description",name:"description",editor:"text"}]}},{}],30:[function(t,e,i){const n=t("pict-view");e.exports=class extends n{constructor(e,i,n){super(e,Object.assign({},t("./Pict-Section-TuiGrid-DefaultConfiguration.json"),i),n),this.services,this.dateFormatter=this.fable.instantiateServiceProviderWithoutRegistration("Dates"),this.initialRenderComplete=!1,this.customFormatters={}}onBeforeInitialize(){return super.onBeforeInitialize(),this._tuiGridPrototype=null,this.tuiGrid=null,this.customHeaders=t("./Pict-TuiGrid-Headers.js"),this.customEditors=t("./Pict-TuiGrid-Editors.js"),this.initializeCustomFormatters(),this.columnSchema=!1,this.targetElementAddress=!1,this.gridData=null,super.onBeforeInitialize()}initializeCustomFormatters(){this.customFormatters.FormatterTwoDigitNumber=t=>{var e;let i=Number.parseFloat(t.value),n=null!==(e=null==t?void 0:t.decimalPrecision)&&void 0!==e?e:2;return isNaN(i)?"":this.fable.Math.roundPrecise(t.value,n)},this.customFormatters.FormatterCurrencyNumber=t=>{var e;let i=null!==(e=null==t?void 0:t.decimalPrecision)&&void 0!==e?e:2;return this.fable.DataFormat.formatterDollars(t.value,i)},this.customFormatters.FormatterRoundedNumber=t=>{var e;let i=Number.parseFloat(t.value),n=null!==(e=null==t?void 0:t.decimalPrecision)&&void 0!==e?e:2;return isNaN(i)?"":this.fable.Math.roundPrecise(t.value,n)},this.customFormatters.FormatterDate=t=>{let e=this.fable.Dates.dayJS.utc(t.value);return t.dateformat?e.format(t.dateformat):e.format()}}connectTuiGridPrototype(t){if(void 0!==t)this._tuiGridPrototype=t;else{if(this.log.trace("PICT-TuiGrid No TuiGrid Prototype defined or explicitly set; looking for it in the window object."),"undefined"==typeof window)return this.log.error("PICT-TuiGrid No TuiGrid Prototype found in window.tuiGrid -- window object unavailable."),!1;if(void 0===window.tui||void 0===window.tui.Grid)return this.log.error("PICT-TuiGrid No TuiGrid Prototype found in window.tuiGrid."),!1;this.log.trace("PICT-TuiGrid Found TuiGrid Prototype in window.tuiGrid."),this.connectTuiGridPrototype(window.tui.Grid)}}preChangeHandler(t){}changeHandler(t){let e=!1;for(let i=0;i<t.changes.length;i++){let n=t.instance.getValue(t.changes[i].rowKey,"entity"),r=t.instance.getValue(t.changes[i].rowKey,"idrecord");this.log.trace("Generic Change Handler for TuiGrid Fired, Entity ".concat(n," IDRecord ").concat(r," setting Column [").concat(t.changes[i].value,"] to new Value [").concat(t.changes[i].value,"]")),this.options.ColumnsToSolveOnChange.hasOwnProperty(t.changes[i].columnName)&&(e=!0)}e&&this.services.PictApplication.solve()}onAfterRender(t){return this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),super.onAfterRender(t)}onAfterInitialRender(){if(this._tuiGridPrototype||this.connectTuiGridPrototype(),this.tuiGrid)return this.log.error("TuiGrid going to ".concat(this.options.TargetElementAddress," is already initialized!")),!1;if(this.options.GridDataAddress){const t={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};let e=this.fable.manifest.getValueByHash(t,this.options.GridDataAddress);"object"!=typeof e?(this.log.error("Address for GridData [".concat(this.options.GridDataAddress,"] did not return an object; it was a ").concat(typeof e,".")),this.gridData=[]):this.gridData=JSON.parse(JSON.stringify(e))}else this.gridData=[];let t=this.services.ContentAssignment.getElement(this.options.TargetElementAddress);if(t.length<1)return this.log.error("Could not find target element [".concat(this.options.TargetElementAddress,"] for TuiGrid! Rendering won't function properly.")),this.targetElement=!1,!1;this.targetElement=t[0],this.columnSchema=this.options.TuiColumnSchema;for(let t=0;t<this.columnSchema.length;t++){let e=this.columnSchema[t];if(e.PictTriggerSolveOnChange&&(this.options.ColumnsToSolveOnChange[e.name]=e),e.hasOwnProperty("formatter")&&this.customFormatters.hasOwnProperty(e.formatter)&&(e.formatter=this.customFormatters[e.formatter]),e.hasOwnProperty("editor")&&(e.editor.hasOwnProperty("type")&&"string"==typeof e.editor.type&&this.customEditors.hasOwnProperty(e.editor.type)&&(e.editor.type=this.customEditors[e.editor.type]),e.editor.hasOwnProperty("options")&&"object"==typeof e.editor.options&&e.editor.options.hasOwnProperty("listItems")&&"string"==typeof e.editor.options.listItems)){const t={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};let i=this.fable.manifest.getValueByHash(t,e.editor.options.listItems);"object"==typeof i?e.editor.options.listItems=i:(this.log.warn("Pict TuiGrid for column [".concat(e.name,"] had [").concat(e.editor.options.listItems,"] as a listItems address, but it didn't return an object. It was a [").concat(typeof i,"]. Setting to empty list.")),e.editor.options.listItems=[])}}this.gridSettings={data:this.gridData,el:this.targetElement,columns:this.columnSchema,usageStatistics:!1,scrollY:this.options.GridScrollY,columnOptions:{resizable:this.options.GridColumnWidthResizable}},this.customConfigureGridSettings();let e=this._tuiGridPrototype;this.tuiGrid=new e(this.gridSettings),this.tuiGrid.on("beforeChange",t=>{const e=t;this.preChangeHandler(e)}),this.tuiGrid.on("afterChange",t=>{const e=t;this.changeHandler(e)})}customConfigureGridSettings(){}SetGridValue(t,e,i,n){if(void 0===i)return void console.log("Could not set grid value [".concat(t,"] = [").concat(e,"] looked up by [").concat(n,"]::[").concat(i,"]. No valid lookup value!"));if(!this.tuiGrid)return void this.log.warn("Could not set grid value [".concat(t,"] = [").concat(e,"] looked up by [").concat(n,"]::[").concat(i,"]. No valid grid!"));const r=this.tuiGrid.getData();for(let o=0;o<r.length;o++){r[o][n]==i&&this.tuiGrid.setValue(o,t,e)}}SetGridValueByRowKey(t,e,i){return void 0===i?(this.log.error("Could not set grid value [".concat(t,"] = [").concat(e,"] looked up by row key [").concat(i,"]. No valid row key!")),!1):this.tuiGrid?(this.tuiGrid.setValue(i,t,e),!0):(this.log.warn("Could not set grid value [".concat(t,"] = [").concat(e,"] looked up by row key [").concat(i,"]. No valid grid!")),!1)}},e.exports.default_configuration=t("./Pict-Section-TuiGrid-DefaultConfiguration.json")},{"./Pict-Section-TuiGrid-DefaultConfiguration.json":29,"./Pict-TuiGrid-Editors.js":33,"./Pict-TuiGrid-Headers.js":34,"pict-view":38}],31:[function(t,e,i){e.exports=class{constructor(t){const e=document.createElement("input"),i=t.columnInfo.editor.options.decimalPrecision?t.columnInfo.editor.options.decimalPrecision:3;e.type="number",e.value=String(t.value),e.oninput=t=>{if(t.target instanceof HTMLInputElement){const e=parseFloat(t.target.value).toFixed(i).toString();e.length<parseFloat(t.target.value).toString().length&&(t.target.value=e)}},this.Element=e}getElement(){return this.Element}getValue(){return this.Element.value}mounted(){this.Element.select()}}},{}],32:[function(t,e,i){e.exports=class{constructor(t){const e=document.createElement("input");e.type="text",e.value=String(t.value),e.placeholder=t.columnInfo.editor.options.placeholder||"",e.pattern=t.columnInfo.editor.options.pattern||"",e.minLength=t.columnInfo.editor.options.minLength||"",e.maxLength=t.columnInfo.editor.options.maxLength||"",e.required=t.columnInfo.editor.options.required||"",this.Element=e}getElement(){return this.Element}getValue(){return this.Element.value}mounted(){this.Element.select()}}},{}],33:[function(t,e,i){e.exports={EditorNumber:t("./Pict-TuiGrid-Editor-Number.js"),EditorText:t("./Pict-TuiGrid-Editor-Text.js")}},{"./Pict-TuiGrid-Editor-Number.js":31,"./Pict-TuiGrid-Editor-Text.js":32}],34:[function(t,e,i){e.exports={CustomColumnHeaderNone:class{constructor(){let t=document.createElement("input");t.type="hidden",t.value="",this.Element=t}getElement(){return this.Element}render(){}}}},{}],35:[function(t,e,i){e.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:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{"fable-serviceproviderbase":"^3.0.19"}}},{}],36:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../package.json");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.fable,this.pict=this.fable,this.serviceType="PictTemplate",this._Package=r}render(t,e,i,n,r){return""}renderAsync(t,e,i,n,r,o){return i(null,this.render(t,e,n,r,o))}addPattern(t,e){return this.pict.MetaTemplate.addPatternBoth(t,e,this.render,this.renderAsync,this)}resolveStateFromAddress(t,e,i,n,r,o){return this.pict.resolveStateFromAddress(t,e,i,n,r,o)}},e.exports.template_hash="Default"},{"../package.json":35,"fable-serviceproviderbase":3}],37:[function(t,e,i){e.exports={name:"pict-view",version:"1.0.68",description:"Pict View Base Class",main:"source/Pict-View.js",scripts:{test:"npx quack test",tests:"npx quack test -g",start:"node source/Pict-View.js",coverage:"npx quack coverage",build:"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-view-image:local","docker-dev-run":'docker run -it -d --name pict-view-dev -p 30001:8080 -p 38086:8086 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-view" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-view-image:local',"docker-dev-shell":"docker exec -it pict-view-dev /bin/bash",types:"tsc -p .",lint:"eslint source/**"},types:"types/source/Pict-View.d.ts",repository:{type:"git",url:"git+https://github.com/stevenvelozo/pict-view.git"},author:"steven velozo <steven@velozo.com>",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/pict-view/issues"},homepage:"https://github.com/stevenvelozo/pict-view#readme",devDependencies:{"@eslint/js":"^9.39.1","browser-env":"^3.3.0",eslint:"^9.39.1",pict:"^1.0.363",quackage:"^1.0.65",typescript:"^5.9.3"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{fable:"^3.1.67","fable-serviceproviderbase":"^3.0.19"}}},{}],38:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../package.json"),o={DefaultRenderable:!1,DefaultDestinationAddress:!1,DefaultTemplateRecordAddress:!1,ViewIdentifier:!1,AutoInitialize:!0,AutoInitializeOrdinal:0,AutoRender:!0,AutoRenderOrdinal:0,AutoSolveWithApp:!0,AutoSolveOrdinal:0,CSSHash:!1,CSS:!1,CSSProvider:!1,CSSPriority:500,Templates:[],DefaultTemplates:[],Renderables:[],Manifests:{}};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(o)),e),i),this.fable,this.options,this.UUID,this.Hash,this.log;const n=this.Hash===this.UUID;this.UUID="V-".concat(this.UUID),n&&(this.Hash=this.UUID),this.options.ViewIdentifier||(this.options.ViewIdentifier="AutoViewID-".concat(this.fable.getUUID())),this.serviceType="PictView",this._Package=r,this.pict=this.fable,this.AppData=this.pict.AppData,this.Bundle=this.pict.Bundle,this.initializeTimestamp=!1,this.lastSolvedTimestamp=!1,this.lastRenderedTimestamp=!1,this.lastMarshalFromViewTimestamp=!1,this.lastMarshalToViewTimestamp=!1,this.pict.instantiateServiceProviderIfNotExists("TransactionTracking");for(let t=0;t<this.options.Templates.length;t++){let e=this.options.Templates[t];"Hash"in e&&"Template"in e?(e.Source||(e.Source="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," options object.")),this.pict.TemplateProvider.addTemplate(e.Hash,e.Template,e.Source)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Template ").concat(t," in the options array."),e)}for(let t=0;t<this.options.DefaultTemplates.length;t++){let e=this.options.DefaultTemplates[t];"Postfix"in e&&"Template"in e?(e.Source||(e.Source="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," options object.")),this.pict.TemplateProvider.addDefaultTemplate(e.Prefix,e.Postfix,e.Template,e.Source)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Default Template ").concat(t," in the options array."),e)}if(this.options.CSS){let t=this.options.CSSHash?this.options.CSSHash:"View-".concat(this.options.ViewIdentifier),e=this.options.CSSProvider?this.options.CSSProvider:t;this.pict.CSSMap.addCSS(t,this.options.CSS,e,this.options.CSSPriority)}this.renderables={};for(let t=0;t<this.options.Renderables.length;t++){let e=this.options.Renderables[t];this.addRenderable(e)}}addRenderable(t,e,i,n,r){let o;if("object"==typeof t)o=t;else{o={RenderableHash:t,TemplateHash:e,DefaultTemplateRecordAddress:i,ContentDestinationAddress:n,RenderMethod:"string"!=typeof r?r:"replace"}}"string"!=typeof o.RenderableHash||"string"!=typeof o.TemplateHash?this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Renderable; RenderableHash or TemplateHash are invalid."),o):(this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," adding renderable [").concat(o.RenderableHash,"] pointed to template ").concat(o.TemplateHash,".")),this.renderables[o.RenderableHash]=o)}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialize:")),this.initializeTimestamp?(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialize called but initialization is already completed. Aborting.")),!1):(this.onBeforeInitialize(),this.onInitialize(),this.onAfterInitialize(),this.initializeTimestamp=this.pict.log.getTimeStamp(),!0)}initializeAsync(t){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initializeAsync:")),this.initializeTimestamp)return this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," async initialize called but initialization is already completed. Aborting.")),t();{let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate");this.pict.LogNoisiness>0&&this.log.info("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," beginning initialization...")),e.anticipate(this.onBeforeInitializeAsync.bind(this)),e.anticipate(this.onInitializeAsync.bind(this)),e.anticipate(this.onAfterInitializeAsync.bind(this)),e.wait(e=>(e&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialization failed: ").concat(e.message||e),{stack:e.stack}),this.initializeTimestamp=this.pict.log.getTimeStamp(),this.pict.LogNoisiness>0&&this.log.info("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialization complete.")),t()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onBeforeRender(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeRender:")),!0}onBeforeRenderAsync(t,e){return this.onBeforeRender(e),t()}onBeforeProject(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeProject:")),!0}onBeforeProjectAsync(t,e){return this.onBeforeProject(e),t()}buildRenderOptions(t,e,i){let n={Valid:!0};return n.RenderableHash="string"==typeof t?t:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable,n.RenderableHash||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not find a suitable RenderableHash ").concat(n.RenderableHash," (param ").concat(t,"because it is not a valid renderable.")),n.Valid=!1),n.Renderable=this.renderables[n.RenderableHash],n.Renderable||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(n.RenderableHash," (param ").concat(t,") because it does not exist.")),n.Valid=!1),n.DestinationAddress="string"==typeof e?e:"string"==typeof n.Renderable.ContentDestinationAddress?n.Renderable.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress&&this.options.DefaultDestinationAddress,n.DestinationAddress||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(n.RenderableHash," (param ").concat(t,") because it does not have a valid destination address (param ").concat(e,").")),n.Valid=!1),"object"==typeof i?(n.RecordAddress="Passed in as object",n.Record=i):(n.RecordAddress="string"==typeof i?i:"string"==typeof n.Renderable.DefaultTemplateRecordAddress?n.Renderable.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,n.Record="string"==typeof n.RecordAddress?this.pict.DataProvider.getDataByAddress(n.RecordAddress):void 0),n}assignRenderContent(t,e,i){return this.pict.ContentAssignment.projectContent(t.RenderMethod,e,i,t.TestAddress)}render(t,e,i,n){return this.renderWithScope(this,t,e,i,n)}renderWithScope(t,e,i,n,r){let o,a,s,c="string"==typeof e?e:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable;return c?("__Virtual"==c?o={RenderableHash:"__Virtual",TemplateHash:this.renderables[this.options.DefaultRenderable].TemplateHash,ContentDestinationAddress:"string"==typeof i?i:"string"==typeof o.ContentDestinationAddress?o.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null,RenderMethod:"virtual-assignment",TransactionHash:r&&r.TransactionHash,RootRenderableViewHash:r&&r.RootRenderableViewHash}:(o=Object.assign({},this.renderables[c]),o.ContentDestinationAddress="string"==typeof i?i:"string"==typeof o.ContentDestinationAddress?o.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null),o.TransactionHash||(o.TransactionHash="ViewRender-V-".concat(this.options.ViewIdentifier,"-R-").concat(c,"-U-").concat(this.pict.getUUID()),o.RootRenderableViewHash=this.Hash,this.pict.TransactionTracking.registerTransaction(o.TransactionHash)),o?o.ContentDestinationAddress?("object"==typeof n?(s=n,a="Passed in as object"):(a="string"==typeof n?n:"string"==typeof o.DefaultTemplateRecordAddress?o.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,s="string"==typeof a?this.pict.DataProvider.getDataByAddress(a):void 0),this.onBeforeRender(o),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] Renderable[").concat(c,"] Destination[").concat(o.ContentDestinationAddress,"] TemplateRecordAddress[").concat(a,"] render:")),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Beginning Render of Renderable[").concat(c,"] to Destination [").concat(o.ContentDestinationAddress,"]...")),o.Content=this.pict.parseTemplateByHash(o.TemplateHash,s,null,[this],t,{RootRenderable:"object"==typeof r?r:o}),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Assigning Renderable[").concat(c,"] content length ").concat(o.Content.length," to Destination [").concat(o.ContentDestinationAddress,"] using render method [").concat(o.RenderMethod,"].")),this.onBeforeProject(o),this.onProject(o),"virtual-assignment"!==o.RenderMethod&&(this.onAfterProject(o),this.onAfterRender(o)),!0):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it does not have a valid destination address.")),!1):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it does not exist.")),!1)):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it is not a valid renderable.")),!1)}renderAsync(t,e,i,n,r){return this.renderWithScopeAsync(this,t,e,i,n,r)}renderWithScopeAsync(t,e,i,n,r,o){let a,s,c,l="string"==typeof e?e:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable,p="function"==typeof o?o:"function"==typeof n?n:"function"==typeof i?i:"function"==typeof e?e:"function"==typeof r?r:null;if(p||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),p=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync Auto Callback Error: ").concat(t),t)}),!l)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not asynchronously render ").concat(l," (param ").concat(e,"because it is not a valid renderable.")),p(new Error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not asynchronously render ").concat(l," (param ").concat(e,"because it is not a valid renderable.")));if("__Virtual"==l?a={RenderableHash:"__Virtual",TemplateHash:this.renderables[this.options.DefaultRenderable].TemplateHash,ContentDestinationAddress:"string"==typeof i?i:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null,RenderMethod:"virtual-assignment",TransactionHash:r&&"function"!=typeof r&&r.TransactionHash,RootRenderableViewHash:r&&"function"!=typeof r&&r.RootRenderableViewHash}:(a=Object.assign({},this.renderables[l]),a.ContentDestinationAddress="string"==typeof i?i:"string"==typeof a.ContentDestinationAddress?a.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null),a.TransactionHash||(a.TransactionHash="ViewRender-V-".concat(this.options.ViewIdentifier,"-R-").concat(l,"-U-").concat(this.pict.getUUID()),a.RootRenderableViewHash=this.Hash,this.pict.TransactionTracking.registerTransaction(a.TransactionHash)),!a)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not exist.")),p(new Error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not exist.")));if(!a.ContentDestinationAddress)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not have a valid destination address.")),p(new Error("Could not render ".concat(l)));"object"==typeof n?(c=n,s="Passed in as object"):(s="string"==typeof n?n:"string"==typeof a.DefaultTemplateRecordAddress?a.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,c="string"==typeof s?this.pict.DataProvider.getDataByAddress(s):void 0),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] Renderable[").concat(l,"] Destination[").concat(a.ContentDestinationAddress,"] TemplateRecordAddress[").concat(s,"] renderAsync:")),this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Beginning Asynchronous Render (callback-style)..."));let d=this.fable.newAnticipate();d.anticipate(t=>{this.onBeforeRenderAsync(t,a)}),d.anticipate(i=>{this.pict.parseTemplateByHash(a.TemplateHash,c,(t,n)=>t?(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render (asynchronously) ").concat(l," (param ").concat(e,") because it did not parse the template."),t),i(t)):(a.Content=n,i()),[this],t,{RootRenderable:"object"==typeof r?r:a})}),d.anticipate(t=>{this.onBeforeProjectAsync(t,a)}),d.anticipate(t=>{this.onProjectAsync(t,a)}),"virtual-assignment"!==a.RenderMethod&&(d.anticipate(t=>{this.onAfterProjectAsync(t,a)}),d.anticipate(t=>{this.onAfterRenderAsync(t,a)})),d.wait(p)}renderDefaultAsync(t){this.renderAsync(t)}basicRender(t,e,i){return this.basicRenderWithScope(this,t,e,i)}basicRenderWithScope(t,e,i,n){let r=this.buildRenderOptions(e,i,n);return r.Valid?(this.assignRenderContent(r.Renderable,r.DestinationAddress,this.pict.parseTemplateByHash(r.Renderable.TemplateHash,r.Record,null,[this],t,{RootRenderable:r.Renderable})),!0):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not perform a basic render of ").concat(r.RenderableHash," because it is not valid.")),!1)}basicRenderAsync(t,e,i,n){return this.basicRenderWithScopeAsync(this,t,e,i,n)}basicRenderWithScopeAsync(t,e,i,n,r){let o="function"==typeof r?r:"function"==typeof n?n:"function"==typeof i?i:"function"==typeof e?e:null;o||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," basicRenderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),o=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," basicRenderAsync Auto Callback Error: ").concat(t),t)});const a=this.buildRenderOptions(e,i,n);if(!a.Valid){let t="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not perform a basic render of ").concat(a.RenderableHash," because it is not valid.");return this.log.error(t),o(new Error(t))}this.pict.parseTemplateByHash(a.Renderable.TemplateHash,a.Record,(t,e)=>t?(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render (asynchronously) ").concat(a.RenderableHash," because it did not parse the template."),t),o(t)):(this.assignRenderContent(a.Renderable,a.DestinationAddress,e),o()),[this],t,{RootRenderable:a.Renderable})}onProject(t){this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onProject:")),"virtual-assignment"===t.RenderMethod&&this.pict.TransactionTracking.pushToTransactionQueue(t.TransactionHash,{ViewHash:this.Hash,Renderable:t},"Deferred-Post-Content-Assignment"),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Assigning Renderable[").concat(t.RenderableHash,"] content length ").concat(t.Content.length," to Destination [").concat(t.ContentDestinationAddress,"] using Async render method ").concat(t.RenderMethod,".")),this.pict.ContentAssignment.projectContent(t.RenderMethod,t.ContentDestinationAddress,t.Content,t.TestAddress),this.lastRenderedTimestamp=this.pict.log.getTimeStamp()}onProjectAsync(t,e){return this.onProject(e),t()}onAfterRender(t){if(this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRender:")),t&&t.RootRenderableViewHash===this.Hash){const e=this.pict.TransactionTracking.clearTransactionQueue(t.TransactionHash)||[];for(const i of e){const e=this.pict.views[i.Data.ViewHash];e?(e.onAfterProject(),e.onAfterRender(i.Data.Renderable)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRender: Could not find view for transaction hash ").concat(t.TransactionHash," and ViewHash ").concat(i.Data.ViewHash,"."))}this.pict.TransactionTracking.unregisterTransaction(t.TransactionHash)}return!0}onAfterRenderAsync(t,e){this.onAfterRender(e);const i=this.fable.newAnticipate(),n=e&&e.RootRenderableViewHash===this.Hash;if(n){const t=this.pict.TransactionTracking.clearTransactionQueue(e.TransactionHash)||[];for(const n of t){const t=this.pict.views[n.Data.ViewHash];t?(i.anticipate(t.onAfterProjectAsync.bind(t)),i.anticipate(e=>{t.onAfterRenderAsync(e,n.Data.Renderable)})):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRenderAsync: Could not find view for transaction hash ").concat(e.TransactionHash," and ViewHash ").concat(n.Data.ViewHash,"."))}}return i.wait(i=>(n&&e&&e.TransactionHash&&this.pict.TransactionTracking.unregisterTransaction(e.TransactionHash),t(i)))}onAfterProject(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterProject:")),!0}onAfterProjectAsync(t,e){return t()}onBeforeSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeSolve:")),!0}onBeforeSolveAsync(t){return this.onBeforeSolve(),t()}onSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onSolve:")),!0}onSolveAsync(t){return this.onSolve(),t()}solve(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeSolve(),this.onSolve(),this.onAfterSolve(),this.lastSolvedTimestamp=this.pict.log.getTimeStamp(),!0}solveAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t?t:null;i||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeSolveAsync.bind(this)),e.anticipate(this.onSolveAsync.bind(this)),e.anticipate(this.onAfterSolveAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," solveAsync() complete.")),this.lastSolvedTimestamp=this.pict.log.getTimeStamp(),i(t)))}onAfterSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterSolve:")),!0}onAfterSolveAsync(t){return this.onAfterSolve(),t()}onBeforeMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeMarshalFromView:")),!0}onBeforeMarshalFromViewAsync(t){return this.onBeforeMarshalFromView(),t()}onMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onMarshalFromView:")),!0}onMarshalFromViewAsync(t){return this.onMarshalFromView(),t()}marshalFromView(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeMarshalFromView(),this.onMarshalFromView(),this.onAfterMarshalFromView(),this.lastMarshalFromViewTimestamp=this.pict.log.getTimeStamp(),!0}marshalFromViewAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t?t:null;i||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalFromViewAsync.bind(this)),e.anticipate(this.onMarshalFromViewAsync.bind(this)),e.anticipate(this.onAfterMarshalFromViewAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," marshalFromViewAsync() complete.")),this.lastMarshalFromViewTimestamp=this.pict.log.getTimeStamp(),i(t)))}onAfterMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterMarshalFromView:")),!0}onAfterMarshalFromViewAsync(t){return this.onAfterMarshalFromView(),t()}onBeforeMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeMarshalToView:")),!0}onBeforeMarshalToViewAsync(t){return this.onBeforeMarshalToView(),t()}onMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onMarshalToView:")),!0}onMarshalToViewAsync(t){return this.onMarshalToView(),t()}marshalToView(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeMarshalToView(),this.onMarshalToView(),this.onAfterMarshalToView(),this.lastMarshalToViewTimestamp=this.pict.log.getTimeStamp(),!0}marshalToViewAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t?t:null;i||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalToViewAsync.bind(this)),e.anticipate(this.onMarshalToViewAsync.bind(this)),e.anticipate(this.onAfterMarshalToViewAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," marshalToViewAsync() complete.")),this.lastMarshalToViewTimestamp=this.pict.log.getTimeStamp(),i(t)))}onAfterMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterMarshalToView:")),!0}onAfterMarshalToViewAsync(t){return this.onAfterMarshalToView(),t()}get isPictView(){return!0}}},{"../package.json":37,"fable-serviceproviderbase":3}],39:[function(t,e,i){e.exports={name:"pict-section-form",version:"1.1.7",description:"Pict dynamic form sections",main:"source/Pict-Section-Form.js",directories:{test:"test"},repository:{type:"git",url:"git+https://github.com/fable-retold/pict-section-form.git"},bugs:{url:"https://github.com/fable-retold/pict-section-form/issues"},homepage:"https://github.com/fable-retold/pict-section-form#readme",scripts:{start:"node source/Pict-Section-Form.js",tests:"npx quack test -g",coverage:"npx quack coverage",build:"npx quack build",test:"npx quack test",lint:"eslint source/**",types:"tsc -p .","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-section-form-image:local","docker-dev-run":'docker run -it -d --name pict-section-form-dev -p 48888:8080 -p 49999:9999 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-section-form" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-section-form-image:local',"docker-dev-shell":"docker exec -it pict-section-form-dev /bin/bash"},types:"types/source/Pict-Section-Form.d.ts",author:"steven velozo <steven@velozo.com>",license:"MIT",devDependencies:{"@eslint/js":"^9.39.2","browser-env":"^3.3.0",eslint:"^9.39.2",jquery:"^4.0.0",pict:"^1.0.372","pict-application":"^1.0.34","pict-docuserve":"^1.4.4","pict-service-commandlineutility":"^1.0.19",quackage:"^1.3.0","tui-grid":"^4.21.22",typescript:"^5.9.3"},dependencies:{"chart.js":"^4.5.1","fable-serviceproviderbase":"^3.0.19",marked:"^4.3.0","pict-provider":"^1.0.13","pict-section-excalidraw":"^1.0.2","pict-section-markdowneditor":"^1.0.17","pict-section-tuigrid":"^1.0.31","pict-template":"^1.0.15","pict-view":"^1.0.68"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]}}},{}],40:[function(t,e,i){e.exports=t("./views/Pict-View-DynamicForm.js"),e.exports.PictDynamicFormDependencyManager=t("./services/Pict-Service-DynamicFormDependencyManager.js"),e.exports.PictFormTemplateProvider=t("./providers/Pict-Provider-DynamicTemplates.js"),e.exports.PictInputExtensionProvider=t("./providers/Pict-Provider-InputExtension.js"),e.exports.PictFormMetacontroller=t("./views/Pict-View-Form-Metacontroller.js"),e.exports.PictFormApplication=t("./application/Pict-Application-Form.js"),e.exports.PictDynamicLayoutProvider=t("./providers/Pict-Provider-DynamicLayout.js"),e.exports.ManifestFactory=t("./services/ManifestFactory.js"),e.exports.ManifestConversionToCSV=t("./services/ManifestConversionToCSV.js"),e.exports.PictFormSupportBase=t("./views/support/Pict-View-PSF-SupportBase.js"),e.exports.PictFormPersistenceProvider=t("./providers/Pict-Provider-FormPersistence.js"),e.exports.ExtensionViews={LifecycleVisualization:t("./views/support/Pict-View-PSF-LifeCycle-Visualization.js"),DebugViewer:t("./views/support/Pict-View-PSF-DebugViewer.js")},e.exports.RichTextInput=t("./providers/inputs/Pict-Provider-Input-RichText.js"),e.exports.DiagramInput=t("./providers/inputs/Pict-Provider-Input-Diagram.js"),e.exports.themeifySVG=t("./providers/inputs/util/Themeify-SVG.js").themeifySVG},{"./application/Pict-Application-Form.js":41,"./providers/Pict-Provider-DynamicLayout.js":45,"./providers/Pict-Provider-DynamicTemplates.js":49,"./providers/Pict-Provider-FormPersistence.js":50,"./providers/Pict-Provider-InputExtension.js":52,"./providers/inputs/Pict-Provider-Input-Diagram.js":63,"./providers/inputs/Pict-Provider-Input-RichText.js":70,"./providers/inputs/util/Themeify-SVG.js":77,"./services/ManifestConversionToCSV.js":86,"./services/ManifestFactory.js":87,"./services/Pict-Service-DynamicFormDependencyManager.js":88,"./views/Pict-View-DynamicForm.js":103,"./views/Pict-View-Form-Metacontroller.js":104,"./views/support/Pict-View-PSF-DebugViewer.js":107,"./views/support/Pict-View-PSF-LifeCycle-Visualization.js":108,"./views/support/Pict-View-PSF-SupportBase.js":111}],41:[function(t,e,i){const n=t("pict-application"),r=t("../Pict-Section-Form.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.pict.addServiceType("PictSectionForm",r),this.pict.addView("PictFormMetacontroller",{},r.PictFormMetacontroller)}marshalDataFromDynamicViewsToAppData(){this.pict.views.PictFormMetacontroller.marshalFromView()}marshalDataFromAppDataToDynamicViews(){this.pict.views.PictFormMetacontroller.marshalToView()}},e.exports.default_configuration={Name:"A Simple Pict Forms Application",Hash:"PictFormsApp",MainViewportViewIdentifier:"PictFormMetacontroller",AutoSolveAfterInitialize:!1,pict_configuration:{Product:"PictDefaultFormsApp"}}},{"../Pict-Section-Form.js":40,"pict-application":6}],42:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-SolverBehaviors",AutoInitialize:!1,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.log,this.cssHideSectionClass="pict-section-form-hidden-section",this.cssHideGroupClass="pict-section-form-hidden-group",this.cssTabularRowHighlightClass="pict-tabular-row-highlight",this.cssTabularColumnHighlightClass="pict-tabular-column-highlight",this.cssSnippet=".pict-section-form-hidden-section { display: none; } .pict-section-form-hidden-group { display: none; } .pict-tabular-row-highlight > td, .pict-tabular-row-highlight > th { background-color: var(--pict-tabular-highlight-color, #FFF3CD) !important; } td.pict-tabular-column-highlight, th.pict-tabular-column-highlight { background-color: var(--pict-tabular-highlight-color, #FFF3CD) !important; }",this.solverOrdinalMap={},this.setCSSSnippets()}setCSSSnippets(t,e){this.cssHideClass=t||this.cssHideClass,this.cssSnippet=e||this.cssSnippet,this.pict.CSSMap.addCSS("Pict-Section-Form-SolverBehaviors",this.cssSnippet,1001,"Pict-DynamicForm-SolverBehaviors"),this.pict.CSSMap.injectCSS()}addSolverFunction(t,e,i,n,r){let o=(e||"").trim().toLowerCase();t.functionMap.hasOwnProperty(o)&&this.log.warn("PictDynamicFormsInformary: Function ".concat(o," already exists in the solver, overwriting with address [").concat(i,"]."));let a={Name:n||"Autogenerated function ".concat(o),Address:i};Array.isArray(r)&&r.length>0&&(a.AddressParameterIndices=r),t.functionMap[o]=a}runSolvers(){this.pict.providers.DynamicSolver.solveViews(void 0,!0)}injectBehaviors(t){return this.addSolverFunction(t,"logvalues","fable.providers.DynamicFormSolverBehaviors.logValues","Logs a set of values to the console and returns the last one."),this.addSolverFunction(t,"unionarrays","fable.providers.DynamicFormSolverBehaviors.unionArrays","Return the union of two arrays."),this.addSolverFunction(t,"differencearrays","fable.providers.DynamicFormSolverBehaviors.differenceArrays","Return the difference of two arrays."),this.addSolverFunction(t,"uniquearray","fable.providers.DynamicFormSolverBehaviors.uniqueArray","Return a new array with only unique values from the input array."),this.addSolverFunction(t,"sortarray","fable.providers.DynamicFormSolverBehaviors.sortArray","Returns a sorted array from the input array."),this.addSolverFunction(t,"showsections","fable.providers.DynamicFormSolverBehaviors.showSections","Shows sections based on hashes in an array.",[0]),this.addSolverFunction(t,"hidesections","fable.providers.DynamicFormSolverBehaviors.hideSections","Hides sections based on hashes in an array.",[0]),this.addSolverFunction(t,"setsectionvisibility","fable.providers.DynamicFormSolverBehaviors.setSectionVisibility","Sets a sections visiblity to true or fales based on the second parameter.",[0]),this.addSolverFunction(t,"setgroupvisibility","fable.providers.DynamicFormSolverBehaviors.setGroupVisibility","Sets a group visiblity to true or fales based on the third parameter.",[0,1]),this.addSolverFunction(t,"generatehtmlhexcolor","fable.providers.DynamicFormSolverBehaviors.generateHTMLHexColor","Generates a HTML hex color from three integer parameters (red, green, blue)."),this.addSolverFunction(t,"colorsectionbackground","fable.providers.DynamicFormSolverBehaviors.colorSectionBackground","Colors a section background with a HTML hex color (e.g. #FF0000 for red).",[0]),this.addSolverFunction(t,"colorgroupbackground","fable.providers.DynamicFormSolverBehaviors.colorGroupBackground","Colors a group background with a HTML hex color (e.g. #FF0000 for red).",[0,1]),this.addSolverFunction(t,"colorinputbackground","fable.providers.DynamicFormSolverBehaviors.colorInputBackground","Colors an input background with a HTML hex color (e.g. #FF0000 for red).",[0,1]),this.addSolverFunction(t,"colorinputbackgroundtabular","fable.providers.DynamicFormSolverBehaviors.colorInputBackgroundTabular","Colors a tabular input background with a HTML hex color (e.g. #FF0000 for red).",[0,1,2]),this.addSolverFunction(t,"highlighttabularrow","fable.providers.DynamicFormSolverBehaviors.highlightTabularRow","Adds (1) or removes (0) a highlight class on every cell of a tabular row.",[0,1]),this.addSolverFunction(t,"highlighttabularcolumn","fable.providers.DynamicFormSolverBehaviors.highlightTabularColumn","Adds (1) or removes (0) a highlight class on every cell of a tabular column.",[0,1]),this.addSolverFunction(t,"colortabularrow","fable.providers.DynamicFormSolverBehaviors.colorTabularRow","Sets (1) or clears (0) the background color on every cell of a tabular row.",[0,1]),this.addSolverFunction(t,"colortabularcolumn","fable.providers.DynamicFormSolverBehaviors.colorTabularColumn","Sets (1) or clears (0) the background color on every cell of a tabular column.",[0,1]),this.addSolverFunction(t,"setsolverordinalenabled","fable.providers.DynamicFormSolverBehaviors.setSolverOrdinalEnabled","Enables or disabled a solver ordinal to determine if it should run."),this.addSolverFunction(t,"enablesolverordinal","fable.providers.DynamicFormSolverBehaviors.enableSolverOrdinal","Enables a solver ordinal so that it can run."),this.addSolverFunction(t,"disablesolverordinall","fable.providers.DynamicFormSolverBehaviors.disableSolverOrdinal","Disables a solver ordinal so that it will not run."),this.addSolverFunction(t,"settabularrowlength","fable.providers.DynamicFormSolverBehaviors.setTabularRowLength","Sets the length of a tabular data set.",[0,1]),this.addSolverFunction(t,"runsolvers","fable.providers.DynamicFormSolverBehaviors.runSolvers","Solves all views."),this.addSolverFunction(t,"refreshtabularsection","fable.providers.DynamicFormSolverBehaviors.refreshTabularSection","Causes a tabular section to refresh its display.",[0,1]),this.addSolverFunction(t,"getglobalformdata","fable.providers.DynamicFormSolverBehaviors.getGlobalFormData","Gets a value from the global form data by hash."),this.addSolverFunction(t,"resolveglobalformdata","fable.providers.DynamicFormSolverBehaviors.resolveGlobalFormData","Resolves a value from the global form data by manyfest address."),this.addSolverFunction(t,"getsectionformdata","fable.providers.DynamicFormSolverBehaviors.getSectionFormData","Gets a value from a specific section by hash or address.",[0]),this.addSolverFunction(t,"getsectiontabularformdata","fable.providers.DynamicFormSolverBehaviors.getSectionTabularFormData","Gets a value from a specific tabular section row by hash or address.",[0,1]),this.addSolverFunction(t,"addcomprehensionentity","fable.providers.DynamicFormSolverBehaviors.addComprehensionEntity","Writes a property/value into the configured comprehension destination, nested as Context -> Entity -> GUID -> Property."),!1}unionArrays(t,e){let i=new Set;if(Array.isArray(t))for(let e=0;e<t.length;e++)i.add(t[e]);if(Array.isArray(e))for(let t=0;t<e.length;t++)i.add(e[t]);return Array.from(i)}differenceArrays(t,e){let i=new Set,n=new Set;if(Array.isArray(t))for(let e=0;e<t.length;e++)i.add(t[e]);if(Array.isArray(e))for(let t=0;t<e.length;t++)n.add(e[t]);let r=new Set;return i.forEach(t=>{n.has(t)||r.add(t)}),Array.from(r)}uniqueArray(t){let e=new Set;if(Array.isArray(t))for(let i=0;i<t.length;i++)e.add(t[i]);return Array.from(e)}sortArray(t){return Array.isArray(t)?t.sort():[]}setSolverOrdinalEnabled(t,e){this.solverOrdinalMap["ORD-".concat(t)]=1==e||"1"==e}enableSolverOrdinal(t){this.solverOrdinalMap["ORD-".concat(t)]=!0}disableSolverOrdinal(t){this.solverOrdinalMap["ORD-".concat(t)]=!1}checkSolverOrdinalEnabled(t){let e="ORD-".concat(t);return!(e in this.solverOrdinalMap)||!0===this.solverOrdinalMap[e]}getSectionSelector(t){return"#SECTION-".concat(t)}setSectionVisibility(t,e){return"0"!=e?this.showSection(t):this.hideSection(t)}showSections(t){const e=Array.isArray(t)?t:[t];for(let t=0;t<e.length;t++)this.showSection(e[t])}hideSections(t){const e=Array.isArray(t)?t:[t];for(let t=0;t<e.length;t++)this.hideSection(e[t])}hideSection(t){let e=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return e?(this.pict.ContentAssignment.hasClass(this.getSectionSelector(e.formID),this.cssHideSectionClass)||this.pict.ContentAssignment.addClass(this.getSectionSelector(e.formID),this.cssHideSectionClass),!0):(this.log.warn("PictDynamicFormsInformary: hideSection could not find section with hash [".concat(t,"].")),!1)}showSection(t){let e=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return e?!this.pict.ContentAssignment.hasClass(this.getSectionSelector(e.formID),this.cssHideSectionClass)||(this.pict.ContentAssignment.removeClass(this.getSectionSelector(e.formID),this.cssHideSectionClass),!0):(this.log.warn("PictDynamicFormsInformary: showSection could not find section with hash [".concat(t,"].")),!1)}getGroupSelector(t,e){return"#GROUP-".concat(t,"-").concat(e)}setGroupVisibility(t,e,i){return"0"!=i?this.showGroup(t,e):this.hideGroup(t,e)}hideGroup(t,e){let i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return i?(this.pict.ContentAssignment.hasClass(this.getGroupSelector(i.formID,e),this.cssHideGroupClass)||this.pict.ContentAssignment.addClass(this.getGroupSelector(i.formID,e),this.cssHideGroupClass),!0):(this.log.warn("PictDynamicFormsInformary: hideGroup could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1)}showGroup(t,e){let i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return i?!this.pict.ContentAssignment.hasClass(this.getGroupSelector(i.formID,e),this.cssHideGroupClass)||(this.pict.ContentAssignment.removeClass(this.getGroupSelector(i.formID,e),this.cssHideGroupClass),!0):(this.log.warn("PictDynamicFormsInformary: showGroup could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1)}refreshTabularSection(t,e){const i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!i)return void this.log.warn("PictDynamicFormsInformary: showGroup could not find group with section hash [".concat(t,"] group [").concat(e,"]."));const n=i.getGroupIndexFromHash(e);if(n<0)return void this.log.warn("PictDynamicFormsInformary: setTabularRowLength could not find group with section hash [".concat(t,"] group [").concat(e,"]."));const r=i.getGroup(n);if(r){const t=this.pict.views.PictFormMetacontroller.filterViews(t=>{if(!t.isPictSectionForm)return!1;const e=t.getGroups();for(let t=0;t<e.length;t++)if(e[t].RecordSetAddress==r.RecordSetAddress)return!0;return!1});for(let e=0;e<t.length;e++)t[e].render();this.pict.views.PictFormMetacontroller.marshalFormSections()}}setTabularRowLength(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!r)return this.log.warn("PictDynamicFormsInformary: showGroup could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1;let o=r.getGroupIndexFromHash(e);if(o<0)return this.log.warn("PictDynamicFormsInformary: setTabularRowLength could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1;let a=r.getTabularRecordSet(o);if(!a||!Array.isArray(a))return this.log.warn("PictDynamicFormsInformary: setTabularRowLength could not find a valid tabular record set with section hash [".concat(t,"] group [").concat(e,"].")),!1;let s=parseInt(i.toString());if(isNaN(s)||s<0)return this.log.warn("PictDynamicFormsInformary: setTabularRowLength was given an invalid length [".concat(i,"] with section hash [").concat(t,"] group [").concat(e,"].")),!1;let c=a.length,l=1==n||"1"==n;if(s>c)for(let t=c;t<s;t++)r.createDynamicTableRow(o);else if(s<c&&l)for(let t=c-1;t>=s;t--)r.deleteDynamicTableRow(o,t)}generateHTMLHexColor(t,e,i){let n=parseInt(t)||0,r=parseInt(e)||0,o=parseInt(i)||0;n<0&&(n=0),n>255&&(n=255),r<0&&(r=0),r>255&&(r=255),o<0&&(o=0),o>255&&(o=255);let a=n.toString(16).toUpperCase();a.length<2&&(a="0".concat(a));let s=r.toString(16).toUpperCase();s.length<2&&(s="0".concat(s));let c=o.toString(16).toUpperCase();return c.length<2&&(c="0".concat(c)),"#".concat(a).concat(s).concat(c)}colorSectionBackground(t,e,i){if("0"==i)return!0;let n=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!n)return this.log.warn("PictDynamicFormsInformary: colorSection could not find section with hash [".concat(t,"].")),!1;let r=this.pict.ContentAssignment.getElement(this.getSectionSelector(n.formID));return r.length<1?(this.log.warn("PictDynamicFormsInformary: colorSection could not find section element with hash [".concat(t,"] selector [").concat(this.getSectionSelector(n.formID),"].")),!1):(r[0].style.backgroundColor=e,!0)}colorGroupBackground(t,e,i,n){if("0"==n)return!0;let r=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!r)return this.log.warn("PictDynamicFormsInformary: colorGroup could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1;let o=this.pict.ContentAssignment.getElement(this.getGroupSelector(r.formID,e));return o.length<1?(this.log.warn("PictDynamicFormsInformary: colorGroup could not find group element with section hash [".concat(t,"] group [").concat(e,"] selector [").concat(this.getGroupSelector(r.formID,e),"].")),!1):(o[0].style.backgroundColor=i,!0)}colorInputBackground(t,e,i,n,r){if("0"==n)return!0;let o=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!o)return this.log.warn("PictDynamicFormsInformary: colorInput could not find input with section hash [".concat(t,"] input [").concat(e,"].")),!1;let a=o.getInputFromHash(e);if(!a)return this.log.warn("PictDynamicFormsInformary: colorInput could not find input with section hash [".concat(t,"] input [").concat(e,"].")),!1;let s=this.pict.ContentAssignment.getElement(a.Macro.HTMLSelectorControl);return s.length<1&&(s=this.pict.ContentAssignment.getElement("#".concat(a.Macro.RawHTMLID))),s.length<1?(this.log.warn("PictDynamicFormsInformary: colorInput could not find input element with section hash [".concat(t,"] input [").concat(e,"] selector [#").concat(a.Macro.RawHTMLID,"].")),!1):this.colorElementBackground(s,i,r)}colorInputBackgroundTabular(t,e,i,n,r,o,a){let s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"TABULAR-DATA-";if("0"==o)return!0;let c=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!c)return this.log.warn("PictDynamicFormsInformary: colorInputBackgroundTabular could not find input with section hash [".concat(t,"] group hash [").concat(e,"] input hash [").concat(i,"].")),!1;let l=c.getTabularRecordInputByHash(e,i);if(!l)return this.log.warn("PictDynamicFormsInformary: colorInputBackgroundTabular could not find input with section hash [".concat(t,"] group hash [").concat(e,"] input hash [").concat(i,"].")),!1;if(!l.Macro)return this.log.warn("PictDynamicFormsInformary: colorInputBackgroundTabular input with section hash [".concat(t,"] group hash [").concat(e,"] input hash [").concat(i,"] is missing Macro data.")),!1;const p=l.Macro.HTMLSelectorControlTabular+'[data-i-index="'.concat(n,'"]');let d=this.pict.ContentAssignment.getElement(p);return d.length<1&&(d=this.pict.ContentAssignment.getElement("#".concat(s).concat(l.Macro.RawHTMLID,"-").concat(n))),d.length<1?(this.log.warn("PictDynamicFormsInformary: colorInputBackgroundTabular could not find input element with section hash [".concat(t,"] group hash [").concat(e,"] input hash [").concat(i,"] row index [").concat(n,"] selector [#").concat(l.Macro.RawHTMLID,"-").concat(n,"].")),!1):this.colorElementBackground(d,r,a)}colorElementBackground(t,e,i){let n=t[0];if(i)for(let e=0;e<t.length;e++){const r=t[e].closest("".concat(i));if(r&&r instanceof HTMLElement){n=r;break}}return n.style.backgroundColor=e,!0}isSolverFlagEnabled(t){return null!=t&&!1!==t&&0!==t&&"0"!==t&&""!==t&&"false"!==t}getTabularGroupSelector(t,e){if(!this.pict.views.PictFormMetacontroller)return this.log.warn("PictDynamicFormsSolverBehaviors: getTabularGroupSelector has no PictFormMetacontroller."),null;let i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return i?"#GROUP-".concat(i.formID,"-").concat(e):(this.log.warn("PictDynamicFormsSolverBehaviors: getTabularGroupSelector could not find section view with hash [".concat(t,"].")),null)}highlightTabularRow(t,e,i,n,r){let o=this.getTabularGroupSelector(t,e);if(!o)return!1;let a="string"==typeof r&&r.length>0?r:this.cssTabularRowHighlightClass,s="".concat(o,' tr[data-tabular-row-index="').concat(i,'"]');return this.isSolverFlagEnabled(n)?this.pict.ContentAssignment.addClass(s,a):this.pict.ContentAssignment.removeClass(s,a),!0}highlightTabularColumn(t,e,i,n,r){let o=this.getTabularGroupSelector(t,e);if(!o)return!1;let a="string"==typeof r&&r.length>0?r:this.cssTabularColumnHighlightClass,s="".concat(o,' [data-tabular-column-index="').concat(i,'"]');return this.isSolverFlagEnabled(n)?this.pict.ContentAssignment.addClass(s,a):this.pict.ContentAssignment.removeClass(s,a),!0}colorTabularRow(t,e,i,n,r){let o=this.getTabularGroupSelector(t,e);if(!o)return!1;let a=this.isSolverFlagEnabled(r)&&"string"==typeof n&&n.length>0,s=this.pict.ContentAssignment.getElement("".concat(o,' tr[data-tabular-row-index="').concat(i,'"] td'));for(let t=0;t<s.length;t++)a?s[t].style.setProperty("background-color",n,"important"):s[t].style.removeProperty("background-color");return!0}colorTabularColumn(t,e,i,n,r){let o=this.getTabularGroupSelector(t,e);if(!o)return!1;let a=this.isSolverFlagEnabled(r)&&"string"==typeof n&&n.length>0,s=this.pict.ContentAssignment.getElement("".concat(o,' [data-tabular-column-index="').concat(i,'"]'));for(let t=0;t<s.length;t++)a?s[t].style.setProperty("background-color",n,"important"):s[t].style.removeProperty("background-color");return!0}getGlobalFormData(t){if(!this.pict.views.PictFormMetacontroller)return void this.log.warn("getGlobalFormData: No PictFormMetacontroller available.");let e=this.pict.views.PictFormMetacontroller.viewMarshalDestination,i=this.pict.resolveStateFromAddress(e);return"object"==typeof i&&null!==i||(i=this.pict.AppData),this.pict.manifest.getValueByHash(i,t)}resolveGlobalFormData(t){if(!this.pict.views.PictFormMetacontroller)return void this.log.warn("resolveGlobalFormData: No PictFormMetacontroller available.");let e=this.pict.views.PictFormMetacontroller.viewMarshalDestination,i=this.pict.resolveStateFromAddress(e);return"object"==typeof i&&null!==i||(i=this.pict.AppData),this.pict.manifest.getValueAtAddress(i,t)}getSectionFormData(t,e){if(!this.pict.views.PictFormMetacontroller)return void this.log.warn("getSectionFormData: No PictFormMetacontroller available.");let i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(i)return i.getValueByHash(e);this.log.warn("getSectionFormData: Could not find section view with hash [".concat(t,"]."))}getSectionTabularFormData(t,e,i,n){if(!this.pict.views.PictFormMetacontroller)return void this.log.warn("getSectionTabularFormData: No PictFormMetacontroller available.");let r=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!r)return void this.log.warn("getSectionTabularFormData: Could not find section view with hash [".concat(t,"]."));let o=r.getGroupIndexFromHash(e);if(o<0)return void this.log.warn("getSectionTabularFormData: Could not find group with hash [".concat(e,"] in section [").concat(t,"]."));let a=r.getGroup(o);if(!a)return void this.log.warn("getSectionTabularFormData: Could not get group at index ".concat(o," in section [").concat(t,"]."));let s=r.getTabularRecordSet(o);if(!s)return void this.log.warn("getSectionTabularFormData: Could not find tabular record set for group [".concat(e,"] in section [").concat(t,"]."));let c=parseInt(i.toString());if(isNaN(c)||c<0)return void this.log.warn("getSectionTabularFormData: Invalid row index [".concat(i,"] for group [").concat(e,"] in section [").concat(t,"]."));if(c>=s.length)return void this.log.warn("getSectionTabularFormData: Row index [".concat(c,"] out of bounds for group [").concat(e,"] in section [").concat(t,"] (length ").concat(s.length,")."));let l=s[c];if(l&&"object"==typeof l)return a.supportingManifest?a.supportingManifest.getValueByHash(l,n):n in l?l[n]:void 0;this.log.warn("getSectionTabularFormData: No valid record at row index [".concat(c,"] for group [").concat(e,"] in section [").concat(t,"]."))}logValues(){let t=null,e="Solver logvalues call: ";for(let i=0;i<arguments.length;i++)t=arguments[i],e+=" [".concat(i,"]=[").concat(t,"]");return this.log.info(e),t}resolveComprehensionDestination(){let t="AppData.FormEntityComprehensions";this.pict.views.PictFormMetacontroller&&"string"==typeof this.pict.views.PictFormMetacontroller.comprehensionDestinationAddress&&this.pict.views.PictFormMetacontroller.comprehensionDestinationAddress.length>0&&(t=this.pict.views.PictFormMetacontroller.comprehensionDestinationAddress);let e=this.pict.resolveStateFromAddress(t);return e&&"object"==typeof e?e:null!=e&&"object"!=typeof e?(this.log.warn("addComprehensionEntity: comprehension destination [".concat(t,"] resolves to a non-object value; refusing to overwrite.")),null):(this.pict.setStateValueAtAddress(t,null,{}),this.pict.resolveStateFromAddress(t))}addComprehensionEntity(t,e,i,n,r){if(null==t||null==e||null==i||null==n)return void this.log.warn("addComprehensionEntity: ignoring call with null/undefined parts (Context=[".concat(t,"], Entity=[").concat(e,"], GUID=[").concat(i,"], Property=[").concat(n,"])."));let o=String(t),a=String(e),s=String(i),c=String(n);if(o.length<1||a.length<1||s.length<1||c.length<1)return void this.log.warn("addComprehensionEntity: ignoring call with empty parts (Context=[".concat(o,"], Entity=[").concat(a,"], GUID=[").concat(s,"], Property=[").concat(c,"])."));let l=this.resolveComprehensionDestination();if(!l)return;let p=o.split("."),d=l;for(let t=0;t<p.length;t++){let e=p[t];e.length<1||(d[e]&&"object"==typeof d[e]||(d[e]={}),d=d[e])}d[a]&&"object"==typeof d[a]||(d[a]={});let u=d[a];return u[s]&&"object"==typeof u[s]||(u[s]={}),u[s][c]=r,r}},e.exports.default_configuration=r},{"pict-provider":9}],43:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-Input",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.templateProviderMap={},this.ignoredEventHashes={}}registerIgnoredEventHash(t){this.ignoredEventHashes[t]=!0}getInputTemplateHash(t,e){if(e.IsTabular){let i="-TabularTemplate-Begin-Input-InputType-".concat(e.PictForm.InputType),n="-TabularTemplate-End-Input-InputType-".concat(e.PictForm.InputType),r="-TabularTemplate-Begin-Input-DataType-".concat(e.DataType),o="-TabularTemplate-End-Input-DataType-".concat(e.DataType);if(t.checkViewSpecificTemplate(i)&&t.checkViewSpecificTemplate(n))return t.getViewSpecificTemplateHash(i);if(t.checkThemeSpecificTemplate(i)&&t.checkThemeSpecificTemplate(n))return t.getThemeSpecificTemplateHash(i);if(t.checkViewSpecificTemplate(r)&&t.checkViewSpecificTemplate(o))return t.getViewSpecificTemplateHash(r);if(t.checkThemeSpecificTemplate(r)&&t.checkThemeSpecificTemplate(o))return t.getThemeSpecificTemplateHash(r)}else{let i="-Template-Input-InputType-".concat(e.PictForm.InputType),n="-Template-Input-DataType-".concat(e.DataType);if(t.checkViewSpecificTemplate(i))return t.getViewSpecificTemplateHash(i);if(t.checkThemeSpecificTemplate(i))return t.getThemeSpecificTemplateHash(i);if(t.checkViewSpecificTemplate(n))return t.getViewSpecificTemplateHash(n);if(t.checkThemeSpecificTemplate(n))return t.getThemeSpecificTemplateHash(n)}return!1}addDefaultInputProvider(t,e){t in this.templateProviderMap||(this.templateProviderMap[t]=[]),this.templateProviderMap[t].indexOf(e)<0&&this.templateProviderMap[t].push(e)}getDefaultInputProviders(t,e){let i=this.getInputTemplateHash(t,e);return i&&this.templateProviderMap[i]?this.templateProviderMap[i]:[]}},e.exports.default_configuration=r},{"pict-provider":9}],44:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-InputEvents",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i)}inputDataRequest(t,e,i){if(e){let n=t.getInputFromHash(e);if(i){let t;if(t="string"==typeof i?i:i.namespace?"".concat(i.type,".").concat(i.namespace):i.type,this.pict.providers.DynamicInput.ignoredEventHashes[t])return}let r=t.sectionManifest.resolveHashAddress(e);try{let e=t.getMarshalDestinationObject(),i=t.sectionManifest.getValueByHash(e,r),o=t.getInputProviderList(n);for(let e=0;e<o.length;e++)t.pict.providers[o[e]]?t.pict.providers[o[e]].onDataRequest(t,n,i,n.Macro.HTMLSelector):t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] inputDataRequest cannot find embedded provider [").concat(o[e],"] for input [").concat(n.Hash,"]."))}catch(i){t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] gross error running inputDataRequest specific (").concat(e,") data from view in dataChanged event: ").concat(i))}}else t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] cannot find input hash [").concat(e,"] for inputDataRequest event."))}inputEvent(t,e,i,n){const r=n&&"string"==typeof n?n:this.pict.getUUID();let o=t.getInputFromHash(e);if(e){let a=t.sectionManifest.resolveHashAddress(e);try{let e=t.getMarshalDestinationObject(),s=t.sectionManifest.getValueByHash(e,a),c=t.getInputProviderList(o);for(let e=0;e<c.length;e++)t.pict.providers[c[e]]?o.Macro&&(t.pict.providers[c[e]].onEvent(t,o,s,o.Macro.HTMLSelector,i,r),t.registerOnTransactionCompleteCallback(r,()=>{t.pict.providers[c[e]].onAfterEventCompletion(t,o,s,o.Macro.HTMLSelector,i,r)})):t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] inputEvent ").concat(i," cannot find embedded provider [").concat(c[e],"] for input [").concat(o.Hash,"]."));n!==r&&t.finalizeTransaction(r)}catch(n){t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] gross error running inputEvent ").concat(i," specific (").concat(e,") data from view in dataChanged event: ").concat(n))}}else t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] cannot find input hash [").concat(e,"] for inputEvent ").concat(i," event."))}inputDataRequestTabular(t,e,i,n,r){let o=t.getTabularRecordInput(e,i);if(e&&i&&n&&o){if(r){let t;if(t="string"==typeof r?r:r.namespace?"".concat(r.type,".").concat(r.namespace):r.type,this.pict.providers.DynamicInput.ignoredEventHashes[t])return}try{let e=t.getMarshalDestinationObject(),i=t.pict.providers.Informary.getComposedContainerAddress(o.PictForm.InformaryContainerAddress,n,o.PictForm.InformaryDataAddress),r=t.sectionManifest.getValueByHash(e,i),a=o.Macro.HTMLSelectorTabular+'[data-i-index="'.concat(n,'"]'),s=t.getInputProviderList(o);for(let e=0;e<s.length;e++)t.pict.providers[s[e]]?t.pict.providers[s[e]].onDataRequestTabular(t,o,r,a,n):t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] cannot find embedded provider [").concat(s[e],"] for input [").concat(o.Hash,"] row ").concat(n,"."))}catch(r){t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] gross error marshaling specific (").concat(e," | ").concat(i," | ").concat(n,") tabular data for group ").concat(e," row ").concat(n," from view in dataChanged event: ").concat(r))}}else t.marshalFromView()}inputEventTabular(t,e,i,n,r,o){const a=o&&"string"==typeof o?o:this.pict.getUUID();let s=t.getTabularRecordInput(e,i);if(null!=e&&null!=i&&null!=n&&s)try{let e=t.getMarshalDestinationObject(),i=t.pict.providers.Informary.getComposedContainerAddress(s.PictForm.InformaryContainerAddress,n,s.PictForm.InformaryDataAddress),c=t.sectionManifest.getValueByHash(e,i),l=s.Macro.HTMLSelectorTabular+'[data-i-index="'.concat(n,'"]'),p=t.getInputProviderList(s);for(let e=0;e<p.length;e++)t.pict.providers[p[e]]?(t.pict.providers[p[e]].onEventTabular(t,s,c,l,n,r,a),t.registerOnTransactionCompleteCallback(a,()=>{t.pict.providers[p[e]].onAfterEventTabularCompletion(t,s,c,l,n,r,a)})):t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] cannot find embedded provider [").concat(p[e],"] for input [").concat(s.Hash,"] row ").concat(n," calling inputEvent ").concat(r,"."));o!==a&&t.finalizeTransaction(a)}catch(o){t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] gross error marshaling specific (").concat(e," | ").concat(i," | ").concat(n,") tabular data for group ").concat(e," row ").concat(n," from view in calling inputEvent ").concat(r,": ").concat(o))}}},e.exports.default_configuration=r},{"pict-provider":9}],45:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-Layout",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i)}generateGroupLayoutTemplate(t,e){return""}onGroupLayoutInitialize(t,e){return!0}onDataMarshalToForm(t,e){return!0}},e.exports.default_configuration=r},{"pict-provider":9}],46:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-RecordSet",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.recordProviders={}}count(t,e){return e()}readRecordList(t,e){return e()}readRecord(t,e){return e()}writeRecord(t,e){return e()}deleteRecord(t,e){return e()}},e.exports.default_configuration=r},{"pict-provider":9}],47:[function(t,e,i){const n=t("pict-provider"),r=t("./Pict-Provider-DynamicFormSolverBehaviors.js"),o=t("./Pict-Provider-ListDistilling.js"),a=t("./Pict-Provider-MetaLists.js"),s=t("./inputs/Pict-Provider-Input-Select.js"),c=t("./inputs/Pict-Provider-Input-DateTime.js"),l=t("./inputs/Pict-Provider-Input-TabGroupSelector.js"),p=t("./inputs/Pict-Provider-Input-TabSectionSelector.js"),d=t("./inputs/Pict-Provider-Input-EntityBundleRequest.js"),u=t("./inputs/Pict-Provider-Input-AutofillTriggerGroup.js"),h=t("./inputs/Pict-Provider-Input-Markdown.js"),m=t("./inputs/Pict-Provider-Input-HTML.js"),g=t("./inputs/Pict-Provider-Input-Templated.js"),f=t("./inputs/Pict-Provider-Input-PreciseNumber.js"),D=t("./inputs/Pict-Provider-Input-Link.js"),y=t("./inputs/Pict-Provider-Input-TemplatedEntityLookup.js"),v=t("./inputs/Pict-Provider-Input-Chart.js"),b=t("./inputs/Pict-Provider-Input-TabularTriggerGroup.js"),T={ProviderIdentifier:"Pict-DynamicForms-Solver",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(T)),e),i),this.pict,this.fable,this.log,this.UUID,this.Hash,this._RunSolversRegex=/\brunsolvers\b/gi,this.fable.instantiateServiceProviderIfNotExists("ExpressionParser"),this.pict.addProviderSingleton("DynamicFormSolverBehaviors",r.default_configuration,r),this.pict.providers.DynamicFormSolverBehaviors.injectBehaviors(this.fable.ExpressionParser),this.pict.addProviderSingleton("DynamicMetaLists",a.default_configuration,a),this.pict.addProviderSingleton("ListDistilling",o.default_configuration,o),this.pict.addProviderSingleton("Pict-Input-Select",s.default_configuration,s),this.pict.addProviderSingleton("Pict-Input-DateTime",c.default_configuration,c),this.pict.addProviderSingleton("Pict-Input-TabGroupSelector",l.default_configuration,l),this.pict.addProviderSingleton("Pict-Input-TabSectionSelector",p.default_configuration,p),this.pict.addProviderSingleton("Pict-Input-EntityBundleRequest",d.default_configuration,d),this.pict.addProviderSingleton("Pict-Input-AutofillTriggerGroup",u.default_configuration,u),this.pict.addProviderSingleton("Pict-Input-Markdown",h.default_configuration,h),this.pict.addProviderSingleton("Pict-Input-HTML",m.default_configuration,m),this.pict.addProviderSingleton("Pict-Input-Templated",g.default_configuration,g),this.pict.addProviderSingleton("Pict-Input-PreciseNumber",f.default_configuration,f),this.pict.addProviderSingleton("Pict-Input-TemplatedEntityLookup",y.default_configuration,y),this.pict.addProviderSingleton("Pict-Input-Link",D.default_configuration,D),this.pict.addProviderSingleton("Pict-Input-Chart",v.default_configuration,v),this.pict.addProviderSingleton("Pict-Input-TabularTriggerGroup",b.default_configuration,b)}logSolveOutcome(t){let e=t;if("object"==typeof e&&null!==e||(e=this.lastSolveOutcome),"object"!=typeof e||null===e)return void this.log.error("DynamicSolver [".concat(this.UUID,"]::[").concat(this.Hash,"] No solve outcome available to log."));let i=e.SolverResultsMap.ExecutedSolvers.length;this.log.info("DynamicSolver completed solving ".concat(i," solvers in ").concat(e.EndTimeStamp-e.StartTimeStamp," ms."));for(let t=0;t<e.SolverResultsMap.ExecutedSolvers.length;t++){var n;let i=e.SolverResultsMap.ExecutedSolvers[t];this.log.info(" Solver [".concat(i.Hash,"] Ordinal ").concat(i.Ordinal," executed in ").concat(i.EndTimeStamp-i.StartTimeStamp,"ms solving for [").concat(null==i||null===(n=i.ResultsObject)||void 0===n?void 0:n.PostfixedAssignmentAddress,"] expression [").concat(i.Expression,"]"))}}prepareSolverResultsMap(t){let e=t;return"object"==typeof e&&null!==e||(e={}),"ExecutedSolvers"in e||(e.ExecutedSolvers=[]),"SolverResolutionMap"in e||(e.SolverResolutionMap={}),e}backfillSolverDependencies(t){let e=t;if("object"==typeof e&&null!==e||(e=this.lastSolveOutcome),"object"==typeof e&&null!==e){for(let t=0;t<e.SolverResultsMap.ExecutedSolvers.length;t++){let i=e.SolverResultsMap.ExecutedSolvers[t];if("ResultsObject"in i&&"object"==typeof i.ResultsObject&&null!==i.ResultsObject&&i.ResultsObject.PostfixedAssignmentAddress&&"Result"!=i.ResultsObject.PostfixedAssignmentAddress){"object"!=typeof e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress]&&(e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress]={});for(let t=0;t<i.ResultsObject.PostfixTokenObjects.length;t++){let n=i.ResultsObject.PostfixTokenObjects[t];"Token.Symbol"==n.Type&&(n.Token in e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress]||(e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress][n.Token]=0),e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress][n.Token]=e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress][n.Token]+1)}}}return e}this.log.error("DynamicSolver [".concat(this.UUID,"]::[").concat(this.Hash,"] No solve outcome available to backfill solver dependencies."))}runSolver(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.pict.resolveStateFromAddress(this.pict.views.PictFormMetacontroller.viewMarshalDestination);"object"==typeof i&&null!==i||(i=this.pict.AppData);let n={},r=this.fable.ExpressionParser.solve(t,i,n,this.pict.manifest);return n.fable&&delete n.fable,e||this.pict.log.trace("Manual solve executed for expression: ".concat(t),n),r}checkSolver(t,e,i){let n=t;if(void 0!==n)if("string"==typeof n&&(n={Expression:n,Ordinal:1}),"Expression"in n){if("Ordinal"in n||(n.Ordinal=1),!e||n.Ordinal==i)return n}else this.log.error("Dynamic View solver ".concat(i," is missing the Expression property."),{Solver:t})}executeSolvers(t,e,i){const n=Array.isArray(e)?e:[];let r={SolverResultsMap:{}};r.StartTimeStamp=+new Date;let o={};r.SolveOrdinals=o;for(let t=0;t<n.length;t++){const e=this.checkSolver(n[t]);if(e){this.checkAutoSolveOrdinal(e.Ordinal,o).AdhocSolvers.push(e)}}let a=Object.keys(o);a.sort((t,e)=>isNaN(Number(t))||isNaN(Number(e))?t.localeCompare(e):Number(t)-Number(e));for(let e=0;e<a.length;e++){this.pict.LogNoisiness>1&&this.log.trace("DynamicSolver [".concat(this.UUID,"]::[").concat(this.Hash,"] [").concat(i,"] Solving ordinal ").concat(a[e]));let n=o[a[e]];this.pict.providers.DynamicFormSolverBehaviors.checkSolverOrdinalEnabled(a[e])&&this.executeAdhocSolvers(t,n.AdhocSolvers,i,Number(a[e]),r.SolverResultsMap)}r.EndTimeStamp=+new Date,this.lastAdhocSolveOutcome=r}executeAdhocSolvers(t,e,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],a=void 0!==n,s=this.prepareSolverResultsMap(r);for(let r=0;r<e.length;r++){let c=this.checkSolver(e[r],a,n);if(void 0===c)continue;if(o&&c.Expression.match(this._RunSolversRegex)){this.pict.LogNoisiness>0&&t.log.warn("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] [").concat(i,"] skipping RecordSet ordinal ").concat(c.Ordinal," [").concat(c.Expression,"] due to solver cycle prevention."));continue}c.StartTimeStamp=+new Date,c.Hash="AdhocSolver-".concat(r),this.pict.LogNoisiness>1&&this.pict.log.trace("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] [").concat(i,"] solving equation ").concat(r," ordinal ").concat(c.Ordinal," [").concat(t.options.Solvers[r],"]")),c.ResultsObject={};let l=this.fable.ExpressionParser.solve(c.Expression,t.getMarshalDestinationObject(),c.ResultsObject,this.pict.manifest,t.getMarshalDestinationObject());this.pict.LogNoisiness>1&&this.pict.log.trace("[".concat(c.Expression,"] [").concat(i,"] result was ").concat(l)),s.ExecutedSolvers.push(c),c.EndTimeStamp=+new Date}}executeGroupSolvers(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=void 0!==e,o=this.prepareSolverResultsMap(i);for(let i=0;i<t.length;i++){let a=this.pict.views[t[i].ViewHash],s=a.getGroup(t[i].GroupIndex),c=this.checkSolver(t[i].Solver,r,e);if(void 0===c)continue;if(n&&c.Expression.match(this._RunSolversRegex)){this.pict.LogNoisiness>0&&a.log.warn("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] skipping RecordSet ordinal ").concat(c.Ordinal," [").concat(c.Expression,"] due to solver cycle prevention."));continue}c.StartTimeStamp=Date.now(),c.Hash="".concat(t[i].ViewHash,"-GroupSolver-").concat(i),this.pict.LogNoisiness>1&&a.log.trace("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] solving RecordSet ordinal ").concat(c.Ordinal," [").concat(c.Expression,"]"));let l=a.getTabularRecordSet(s.GroupIndex);if(Array.isArray(l))for(let t=0;t<l.length;t++){let e=l[t];c.ResultsObject={};let i=a.fable.ExpressionParser.solve(c.Expression,e,c.ResultsObject,s.supportingManifest,e);this.pict.LogNoisiness>1&&a.log.trace("Group ".concat(s.Hash," [").concat(c.Expression,"] record ").concat(t," result was ").concat(i))}else if("object"==typeof l){let t=Object.keys(l);for(let e=0;e<t.length;e++){let i=l[t[e]];c.ResultsObject={};let n=a.fable.ExpressionParser.solve(c.Expression,i,c.ResultsObject,s.supportingManifest,i);this.pict.LogNoisiness>1&&a.log.trace("Group ".concat(s.Hash," [").concat(c.Expression,"] record ").concat(e," result was ").concat(n))}}o.ExecutedSolvers.push(c),c.EndTimeStamp=Date.now()}}executeSectionSolvers(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=void 0!==e,o=this.prepareSolverResultsMap(i);for(let i=0;i<t.length;i++){let a=this.pict.views[t[i].ViewHash],s=this.checkSolver(t[i].Solver,r,e);if(void 0===s)continue;if(n&&s.Expression.match(this._RunSolversRegex)){this.pict.LogNoisiness>0&&a.log.warn("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] skipping RecordSet ordinal ").concat(s.Ordinal," [").concat(s.Expression,"] due to solver cycle prevention."));continue}s.StartTimeStamp=+new Date,s.Hash="".concat(t[i].ViewHash,"-SectionSolver-").concat(i),this.pict.LogNoisiness>1&&a.log.trace("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] solving equation ").concat(i," ordinal ").concat(s.Ordinal," [").concat(a.options.Solvers[i],"]")),s.ResultsObject={};let c=a.fable.ExpressionParser.solve(s.Expression,a.getMarshalDestinationObject(),s.ResultsObject,this.pict.manifest,a.getMarshalDestinationObject());this.pict.LogNoisiness>1&&a.log.trace("[".concat(s.Expression,"] result was ").concat(c)),o.ExecutedSolvers.push(s),s.EndTimeStamp=+new Date}}executeViewSolvers(t,e,i){let n=void 0!==e,r=this.prepareSolverResultsMap(i);for(let i=0;i<t.length;i++){let o=this.checkSolver(t[i].Solver,n,e);if(void 0===o)continue;o.Hash="".concat(t[i].ViewHash,"-ViewSolve-").concat(i),o.StartTimeStamp=+new Date;let a=this.pict.views[t[i].ViewHash];this.pict.LogNoisiness>1&&a.log.trace("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] running solve() on view [").concat(t[i].ViewHash)),a.solve(),r.ExecutedSolvers.push(o),o.EndTimeStamp=+new Date}}executeValidationSolvers(t){var e;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=null===(e=this.pict.views.PictFormMetacontroller)||void 0===e||null===(e=e.manifestDescription)||void 0===e?void 0:e.ValidationSolvers;if(!Array.isArray(n))return;const r=this.pict.views.PictFormMetacontroller&&this.pict.resolveStateFromAddress(this.pict.views.PictFormMetacontroller.viewMarshalDestination)||this.pict.AppData;for(let e=0;e<n.length;e++){const o=this.checkSolver(n[e]);void 0!==o&&(i&&o.Expression.match(this._RunSolversRegex)?this.pict.LogNoisiness>0&&this.pict.log.warn("Skipping Validation Solver ordinal ".concat(o.Ordinal," [").concat(o.Expression,"] due to solver cycle prevention.")):(this.pict.LogNoisiness>1&&this.pict.log.trace("Running validation solver ordinal ".concat(o.Ordinal," [").concat(o.Expression,"]")),this.pict.ExpressionParser.solve(o.Expression,r,t,this.pict.manifest,this.pict.AppData)))}}checkAutoSolveOrdinal(t,e){return t.toString()in e||(e[t.toString()]={ViewSolvers:[],SectionSolvers:[],GroupSolvers:[],AdhocSolvers:[]}),e[t]}solveViews(t,e){let i=Array.isArray(t)?t:Object.keys(this.fable.views);const n=!0===e;let r={SolverResultsMap:{}};r.StartTimeStamp=+new Date,r.ViewHashes=i;let o={};r.SolveOrdinals=o;for(let t=0;t<i.length;t++){let e=this.fable.views[i[t]];if(!e.isPictView||e.isPictSectionForm||e.isPictMetacontroller){if(e.isPictSectionForm){for(let n=0;n<e.sectionDefinition.Groups.length;n++){let r=e.getGroup(n);if("RecordSetSolvers"in r)for(let e=0;e<r.RecordSetSolvers.length;e++){let a=this.checkSolver(r.RecordSetSolvers[e]);if(a){this.checkAutoSolveOrdinal(a.Ordinal,o).GroupSolvers.push({ViewHash:i[t],GroupIndex:n,Solver:a})}}}if(Array.isArray(e.options.Solvers))for(let n=0;n<e.options.Solvers.length;n++){let r=this.checkSolver(e.options.Solvers[n]);if(r){this.checkAutoSolveOrdinal(r.Ordinal,o).SectionSolvers.push({ViewHash:i[t],Solver:r})}}}}else{this.checkAutoSolveOrdinal(e.options.AutoSolveOrdinal,o).ViewSolvers.push({ViewHash:i[t]})}}let a=Object.keys(o);a.sort((t,e)=>isNaN(Number(t))||isNaN(Number(e))?t.localeCompare(e):Number(t)-Number(e));for(let t=0;t<a.length;t++){this.pict.LogNoisiness>1&&this.log.trace("DynamicSolver [".concat(this.UUID,"]::[").concat(this.Hash,"] Solving ordinal ").concat(a[t]));let e=o[a[t]];this.pict.providers.DynamicFormSolverBehaviors.checkSolverOrdinalEnabled(a[t])&&(this.executeGroupSolvers(e.GroupSolvers,Number(a[t]),r.SolverResultsMap,n),this.executeSectionSolvers(e.SectionSolvers,Number(a[t]),r.SolverResultsMap,n),this.executeViewSolvers(e.ViewSolvers,Number(a[t]),r.SolverResultsMap))}return this.executeValidationSolvers(r.SolverResultsMap,n),this.pict.providers.DynamicMetaLists.buildViewSpecificLists(i),r.EndTimeStamp=+new Date,this.lastSolveOutcome=r,i}},e.exports.default_configuration=T},{"./Pict-Provider-DynamicFormSolverBehaviors.js":42,"./Pict-Provider-ListDistilling.js":53,"./Pict-Provider-MetaLists.js":54,"./inputs/Pict-Provider-Input-AutofillTriggerGroup.js":59,"./inputs/Pict-Provider-Input-Chart.js":60,"./inputs/Pict-Provider-Input-DateTime.js":61,"./inputs/Pict-Provider-Input-EntityBundleRequest.js":64,"./inputs/Pict-Provider-Input-HTML.js":65,"./inputs/Pict-Provider-Input-Link.js":66,"./inputs/Pict-Provider-Input-Markdown.js":67,"./inputs/Pict-Provider-Input-PreciseNumber.js":68,"./inputs/Pict-Provider-Input-Select.js":71,"./inputs/Pict-Provider-Input-TabGroupSelector.js":72,"./inputs/Pict-Provider-Input-TabSectionSelector.js":73,"./inputs/Pict-Provider-Input-TabularTriggerGroup.js":74,"./inputs/Pict-Provider-Input-Templated.js":75,"./inputs/Pict-Provider-Input-TemplatedEntityLookup.js":76,"pict-provider":9}],48:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-DynamicTabularData",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.log}getTabularRecordSet(t,e){let i=t.getGroup(e);return i&&null!=i&&i.RecordSetAddress?t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress):(this.log.warn("PICT View Metatemplate Helper getTabularRecordSet ".concat(e," was not a valid group or did not have a valid RecordSetAddress.")),!1)}getTabularRecordInput(t,e,i){let n=t.getGroup(e);if(!n)return this.log.warn("PICT View Metatemplate Helper getTabularRecordInput ".concat(e," was not a valid group.")),!1;let r=n.supportingManifest.elementAddresses[i];return n.supportingManifest.elementDescriptors[r]}getTabularRecordInputByHash(t,e,i){let n=t.getGroups().find(t=>t.Hash===e);if(!n)return this.log.warn("PICT View Metatemplate Helper getTabularRecordInputByHash ".concat(e," was not a valid group.")),!1;if(!n.supportingManifest)return this.log.warn("PICT View Metatemplate Helper getTabularRecordInputByHash ".concat(e," s not a tabular group.")),!1;for(const t of Object.values(n.supportingManifest.elementDescriptors))if(t.Hash===i)return t;return this.log.warn("PICT View Metatemplate Helper getTabularRecordInputByHash ".concat(e," could not find input ").concat(i,".")),!1}getTabularRecordData(t,e,i){let n=t.getGroup(e);if(!n)return this.log.warn("PICT View Metatemplate Helper getTabularRecordData ".concat(e," was not a valid group.")),!1;let r=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),n.RecordSetAddress);if(r||(r=t.sectionManifest.getValueAtAddress(t.getMarshalDestinationObject(),n.RecordSetAddress)),!r)return this.log.warn("PICT View Metatemplate Helper getTabularRecordData ".concat(e," could not find the record set for ").concat(n.RecordSetAddress,".")),!1;try{return Array.isArray(r)||"object"==typeof r?r[i]:(this.log.warn("PICT View Metatemplate Helper getTabularRecordData ".concat(e," could not determine the type of the record set for ").concat(n.RecordSetAddress,".")),!1)}catch(t){return this.log.error("PICT View Metatemplate Helper getTabularRecordData ".concat(e," encountered an error: ").concat(t)),!1}}createDynamicTableRow(t,e){let i=t.getGroup(e);if(i){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress);if(Array.isArray(e)){if(i.MaximumRowCount&&e.length>=i.MaximumRowCount)return void this.log.warn("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(i.Hash," attempting to add a row but the maximum rows ").concat(i.MaximumRowCount," has been reached."));let n={};i.DefaultRows&&e.length<i.DefaultRows.length&&(n=JSON.parse(JSON.stringify(i.DefaultRows[e.length]))),e.push(i.supportingManifest.populateDefaults(n));let r=this.pict.views.PictFormMetacontroller.filterViews(t=>{if(!t.isPictSectionForm)return!1;let e=t.getGroups();for(let t=0;t<e.length;t++)if(e[t].RecordSetAddress==i.RecordSetAddress)return!0;return!1});for(let t=0;t<r.length;t++)r[t].render();this._rebuildDependentDynamicColumnViews(i.RecordSetAddress),this.pict.providers.DynamicSolver.solveViews(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}createDynamicTableRowWithoutEvents(t,e){let i=t.getGroup(e);if(i){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress);if(Array.isArray(e)){if(i.MaximumRowCount&&e.length>=i.MaximumRowCount)return void this.log.warn("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(i.Hash," attempting to add a row but the maximum rows ").concat(i.MaximumRowCount," has been reached."));let n={};i.DefaultRows&&e.length<i.DefaultRows.length&&(n=JSON.parse(JSON.stringify(i.DefaultRows[e.length]))),e.push(i.supportingManifest.populateDefaults(n))}}}setDynamicTableRowIndex(t,e,i,n){let r=t.getGroup(e);if(r){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),r.RecordSetAddress);if(Array.isArray(e)){let o=parseInt(String(i),10),a=parseInt(String(n),10);if(e.length<=o||o<0)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(r.Hash," attempting to move row [").concat(i,"] to [").concat(n,"] but the index is out of bounds.")),!1;let s=e.splice(o,1);e.splice(a,0,s[0]),this.pict.providers.DynamicSolver.solveViews(),t.render(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}moveDynamicTableRowDown(t,e,i){let n=t.getGroup(e);if(n){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),n.RecordSetAddress);if(Array.isArray(e)){let r=parseInt(String(i),10);if(e.length<=r)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to move row [").concat(i,"] down but it's already at the bottom.")),!1;let o=e.splice(r,1);e.splice(r+1,0,o[0]),this.pict.providers.DynamicSolver.solveViews(),t.render(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}moveDynamicTableRowUp(t,e,i){let n=t.getGroup(e);if(n){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),n.RecordSetAddress);if(Array.isArray(e)){let r=parseInt(String(i),10);if(0==r)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to move row [").concat(i,"] up but it's already at the top.")),!1;if(e.length<=r)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to move row [").concat(i,"] but the index is out of bounds.")),!1;let o=e.splice(r,1);e.splice(r-1,0,o[0]),this.pict.providers.DynamicSolver.solveViews(),t.render(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}deleteDynamicTableRow(t,e,i){let n=t.getGroup(e);if(n){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),n.RecordSetAddress);if(Array.isArray(e)){if(n.MinimumRowCount&&e.length<=n.MinimumRowCount)return this.log.warn("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to delete a row but the minimum rows ").concat(n.MinimumRowCount," has been reached.")),!1;let r=parseInt(String(i),10);if(e.length<=r)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to delete row [").concat(i,"] but the index is out of bounds.")),!1;let o=e.length;e.splice(r,1),this._spliceDependentPositionalColumns(n.RecordSetAddress,r,o);let a=this.pict.views.PictFormMetacontroller.filterViews(t=>{if(!t.isPictSectionForm)return!1;let e=t.getGroups();for(let t=0;t<e.length;t++)if(e[t].RecordSetAddress==n.RecordSetAddress)return!0;return!1});for(let t=0;t<a.length;t++)a[t].render();this._rebuildDependentDynamicColumnViews(n.RecordSetAddress),this.pict.providers.DynamicSolver.solveViews(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}_rebuildDependentDynamicColumnViews(t){if("string"!=typeof t||t.length<1)return;if(!this.pict.views.PictFormMetacontroller)return;let e=this.pict.views.PictFormMetacontroller.filterViews(e=>{if(!e.isPictSectionForm)return!1;let i=e.getGroups();for(let e=0;e<i.length;e++){let n=i[e].DynamicColumns;if(Array.isArray(n))for(let e=0;e<n.length;e++)if(n[e]&&n[e].SourceAddress===t)return!0}return!1});for(let t=0;t<e.length;t++){let i=e[t],n=i.getGroups();for(let t=0;t<n.length;t++){let e=n[t];Array.isArray(e.DynamicColumns)&&e.DynamicColumns.length>0&&this.fable.ManifestFactory&&"function"==typeof this.fable.ManifestFactory._resolveDynamicColumns&&this.fable.ManifestFactory._resolveDynamicColumns(i,e)}i.rebuildCustomTemplate(),i.render()}}_spliceDependentPositionalColumns(t,e,i){if("string"!=typeof t||t.length<1)return;if(!this.pict.views.PictFormMetacontroller)return;let n=this.fable.ManifestFactory;if(!n||"function"!=typeof n._parseDynamicColumnTemplate)return;let r=this.pict.views.PictFormMetacontroller.filterViews(t=>t.isPictSectionForm);for(let o=0;o<r.length;o++){let a=r[o],s=a.getGroups();for(let r=0;r<s.length;r++){let o=s[r];if(!Array.isArray(o.DynamicColumns)||o.DynamicColumns.length<1)continue;let c=a.sectionManifest.getValueByHash(a.getMarshalDestinationObject(),o.RecordSetAddress);if(Array.isArray(c)&&!(c.length<1))for(let r=0;r<o.DynamicColumns.length;r++){let s=o.DynamicColumns[r];if(!s||s.SourceAddress!==t)continue;if("Position"!==s.KeyBy)continue;if("string"!=typeof s.InformaryDataAddressTemplate)continue;let l=[];for(let t=0;t<i;t++)l[t]=n._parseDynamicColumnTemplate(s.InformaryDataAddressTemplate,{__Index:t,__RowNumber:t+1});for(let t=0;t<c.length;t++){let n=c[t];if(!n||"object"!=typeof n)continue;for(let t=e;t<i-1;t++){if(!l[t]||!l[t+1])continue;let e=a.sectionManifest.getValueByHash(n,l[t+1]);a.sectionManifest.setValueByHash(n,l[t],e)}let r=l[i-1];r&&a.sectionManifest.setValueByHash(n,r,void 0)}}}}}},e.exports.default_configuration=r},{"pict-provider":9}],49:[function(t,e,i){const n=t("pict-provider"),r=t("../providers/Pict-Provider-DynamicInput.js"),o=t("./dynamictemplates/Pict-DynamicTemplates-DefaultFormTemplates.js"),a=t("./dynamictemplates/Pict-DynamicTemplates-DefaultFormTemplates-ReadOnly.js"),s=t("../templates/Pict-Template-Metacontroller-ValueSetWithGroup.js"),c=t("../templates/Pict-Template-Metatemplate-Input.js"),l=t("../templates/Pict-Template-Metatemplate-InputWithHashAddress.js"),p=t("../templates/Pict-Template-Metatemplate-InputWithView.js"),d=t("../templates/Pict-Template-Metatemplate-InputWithViewAndHashAddress.js"),u=t("../templates/Pict-Template-Metatemplate-InputWithViewAndDescriptorAddress.js"),h=t("../templates/Pict-Template-ControlFromDynamicManifest.js"),m=t("../templates/Pict-Template-ControlFromDynamicManifestForHash.js"),g=t("../templates/Pict-Template-DyanmicView-Value.js"),f=t("../templates/Pict-Template-DyanmicView-ValueByHash.js"),D=t("../templates/Pict-Template-TabularRowLabels.js"),y=t("../templates/Pict-Template-TabularEditingControls.js"),v=t("../templates/Pict-Template-Proxy-PluckJoinUnique.js"),b={ProviderIdentifier:"Pict-DynamicForms-MetaTemplates-Basic",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){var n;super(t,Object.assign({},JSON.parse(JSON.stringify(b)),e),i),this.options,this.pict,this.log,this.pict.addProviderSingleton("DynamicInput",r.default_configuration,r),this.pict.addTemplate(s),this.pict.addTemplate(c),this.pict.addTemplate(l),this.pict.addTemplate(p),this.pict.addTemplate(d),this.pict.addTemplate(u),this.pict.addTemplate(v),this.pict.addTemplate(h),this.pict.addTemplate(m),this.pict.addTemplate(g),this.pict.addTemplate(f),this.pict.addTemplate(D),this.pict.addTemplate(y),null!==(n=this.options)&&void 0!==n&&n.MetaTemplateSet&&"object"==typeof this.options.MetaTemplateSet?this.injectTemplateSet(this.options.MetaTemplateSet):this.injectTemplateSet(o),this.injectTemplateSet(a)}injectTemplateSet(t){var e,i,n,r,a,s;let c="PictFormsUnknown",l=[],p={};c=null!==(e=null===(i=this.options)||void 0===i?void 0:i.MetaTemplateSet)&&void 0!==e?e:c,l=null!==(n=null===(r=this.options)||void 0===r||null===(r=r.MetaTemplateSet)||void 0===r?void 0:r.Templates)&&void 0!==n?n:l,c=null!==(a=null==t?void 0:t.TemplatePrefix)&&void 0!==a?a:c,l=null!==(s=null==t?void 0:t.Templates)&&void 0!==s?s:l;for(let t=0;t<l.length;t++){let e=l[t],i="".concat(c).concat(e.HashPostfix);p[i]={Hash:i,Template:e.Template},e.hasOwnProperty("DefaultInputExtensions")&&(p[i].DefaultInputExtensions=JSON.parse(JSON.stringify(e.DefaultInputExtensions)))}for(let t=0;t<o.Templates.length;t++){let e=o.Templates[t],i="".concat(c).concat(e.HashPostfix);i in p||(p[i]={Hash:i,Template:e.Template},e.hasOwnProperty("DefaultInputExtensions")&&(p[i].DefaultInputExtensions=JSON.parse(JSON.stringify(e.DefaultInputExtensions))))}let d=Object.keys(p);this.log.info("Pict Form Section Provider for [".concat(c,"] Loaded ").concat(d.length," templates."));for(let t=0;t<d.length;t++){let e=p[d[t]];if(this.pict.TemplateProvider.addTemplate(e.Hash,e.Template),e.hasOwnProperty("DefaultInputExtensions"))for(let t=0;t<e.DefaultInputExtensions.length;t++)this.pict.providers.DynamicInput.addDefaultInputProvider(e.Hash,e.DefaultInputExtensions[t])}}},e.exports.default_configuration=b},{"../providers/Pict-Provider-DynamicInput.js":43,"../templates/Pict-Template-ControlFromDynamicManifest.js":89,"../templates/Pict-Template-ControlFromDynamicManifestForHash.js":90,"../templates/Pict-Template-DyanmicView-Value.js":91,"../templates/Pict-Template-DyanmicView-ValueByHash.js":92,"../templates/Pict-Template-Metacontroller-ValueSetWithGroup.js":93,"../templates/Pict-Template-Metatemplate-Input.js":94,"../templates/Pict-Template-Metatemplate-InputWithHashAddress.js":95,"../templates/Pict-Template-Metatemplate-InputWithView.js":96,"../templates/Pict-Template-Metatemplate-InputWithViewAndDescriptorAddress.js":97,"../templates/Pict-Template-Metatemplate-InputWithViewAndHashAddress.js":98,"../templates/Pict-Template-Proxy-PluckJoinUnique.js":99,"../templates/Pict-Template-TabularEditingControls.js":100,"../templates/Pict-Template-TabularRowLabels.js":101,"./dynamictemplates/Pict-DynamicTemplates-DefaultFormTemplates-ReadOnly.js":57,"./dynamictemplates/Pict-DynamicTemplates-DefaultFormTemplates.js":58,"pict-provider":9}],50:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-Provider-FormPersistence",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1,AppIdentifier:!1,FormTypeIdentifier:!1,AutoPersistOnDataChange:!1,AutoPersistDebounceMs:2e3,AutoPersistBundleWithForm:!0,StorageKeyPrefix:"PSF",BundleSourceAddress:"Bundle",FormDataSourceAddress:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.log,this._activeFormGUID=null,this._persistTimerHandle=null,this.storageAdapter=this.createLocalStorageAdapter()}createLocalStorageAdapter(){let t=this;return{setItem:function(e,i){try{return"undefined"!=typeof window&&window.localStorage?(window.localStorage.setItem(e,i),!0):(t.log.warn("FormPersistence: localStorage is not available."),!1)}catch(e){return t.log.error("FormPersistence: localStorage setItem error: ".concat(e.message)),!1}},getItem:function(e){try{return"undefined"!=typeof window&&window.localStorage?window.localStorage.getItem(e):(t.log.warn("FormPersistence: localStorage is not available."),null)}catch(e){return t.log.error("FormPersistence: localStorage getItem error: ".concat(e.message)),null}},removeItem:function(e){try{return"undefined"!=typeof window&&window.localStorage?(window.localStorage.removeItem(e),!0):(t.log.warn("FormPersistence: localStorage is not available."),!1)}catch(e){return t.log.error("FormPersistence: localStorage removeItem error: ".concat(e.message)),!1}},getKeysWithPrefix:function(e){let i=[];try{if("undefined"!=typeof window&&window.localStorage)for(let t=0;t<window.localStorage.length;t++){let n=window.localStorage.key(t);n&&n.startsWith(e)&&i.push(n)}}catch(e){t.log.error("FormPersistence: localStorage getKeysWithPrefix error: ".concat(e.message))}return i}}}setStorageAdapter(t){if("object"!=typeof t||null===t)return this.log.error("FormPersistence setStorageAdapter called with an invalid adapter."),!1;let e=["setItem","getItem","removeItem","getKeysWithPrefix"];for(let i=0;i<e.length;i++)if("function"!=typeof t[e[i]])return this.log.error("FormPersistence setStorageAdapter: adapter is missing required method [".concat(e[i],"].")),!1;return this.storageAdapter=t,!0}getAppIdentifier(){return this.options.AppIdentifier?this.options.AppIdentifier:this.pict&&this.pict.settings&&this.pict.settings.Product?this.pict.settings.Product:"DefaultApp"}getFormTypeIdentifier(){return this.options.FormTypeIdentifier?this.options.FormTypeIdentifier:"DefaultForm"}getStorageKey(t,e){let i="".concat(this.options.StorageKeyPrefix,":").concat(this.getAppIdentifier(),":").concat(this.getFormTypeIdentifier());return e?"".concat(i,":").concat(t,":").concat(e):"".concat(i,":").concat(t)}getIndexKey(){return this.getStorageKey("Index")}getFormIndex(){let t=this.getIndexKey(),e=this.storageAdapter.getItem(t);if(e)try{let t=JSON.parse(e);if("object"==typeof t&&null!==t&&"Records"in t)return t}catch(t){this.log.error("FormPersistence getFormIndex: failed to parse index: ".concat(t.message))}return{Records:{}}}_saveFormIndex(t){let e=this.getIndexKey();return this.storageAdapter.setItem(e,JSON.stringify(t))}newFormRecord(t,e){let i=this.fable.getUUID(),n=(new Date).toISOString(),r=this.getFormIndex();return r.Records[i]={GUID:i,Created:n,Modified:n,BundleContextIdentifier:t||null,Synced:!1,SyncedTimestamp:null,Label:e||null},this._saveFormIndex(r),this.log.info("FormPersistence: created new form record [".concat(i,"]").concat(e?' labeled "'.concat(e,'"'):"",".")),i}saveFormData(t){if(!t)return this.log.error("FormPersistence saveFormData called without an instance GUID."),!1;let e,i,n=this.getFormIndex();if(!(t in n.Records))return this.log.error("FormPersistence saveFormData called for unknown GUID [".concat(t,"].")),!1;try{e=this.options.FormDataSourceAddress?this.pict.resolveStateFromAddress(this.options.FormDataSourceAddress):this.pict.providers.DataBroker.marshalDestinationObject}catch(t){return this.log.error("FormPersistence saveFormData: failed to resolve form data source: ".concat(t.message)),!1}try{i=JSON.stringify(e)}catch(t){return this.log.error("FormPersistence saveFormData: failed to serialize form data: ".concat(t.message)),!1}let r=this.getStorageKey("Form",t),o=this.storageAdapter.setItem(r,i);return o&&(n.Records[t].Modified=(new Date).toISOString(),n.Records[t].Synced=!1,this._saveFormIndex(n)),o}getFormDataRaw(t){if(!t)return this.log.error("FormPersistence getFormDataRaw called without an instance GUID."),null;let e=this.getStorageKey("Form",t);return this.storageAdapter.getItem(e)}loadFormData(t){if(!t)return this.log.error("FormPersistence loadFormData called without an instance GUID."),!1;let e,i,n=this.getStorageKey("Form",t),r=this.storageAdapter.getItem(n);if(null===r)return this.log.warn("FormPersistence loadFormData: no data found for GUID [".concat(t,"].")),!1;try{e=JSON.parse(r)}catch(e){return this.log.error("FormPersistence loadFormData: failed to parse stored data for GUID [".concat(t,"]: ").concat(e.message)),!1}try{i=this.options.FormDataSourceAddress?this.pict.resolveStateFromAddress(this.options.FormDataSourceAddress):this.pict.providers.DataBroker.marshalDestinationObject}catch(t){return this.log.error("FormPersistence loadFormData: failed to resolve destination object: ".concat(t.message)),!1}let o=Object.keys(i);for(let t=0;t<o.length;t++)delete i[o[t]];return Object.assign(i,e),this.pict.views&&this.pict.views.PictFormMetacontroller&&this.pict.views.PictFormMetacontroller.marshalToView(),this.log.info("FormPersistence: loaded form data for GUID [".concat(t,"].")),!0}deleteFormRecord(t){if(!t)return this.log.error("FormPersistence deleteFormRecord called without an instance GUID."),!1;let e=this.getStorageKey("Form",t);this.storageAdapter.removeItem(e);let i=this.getFormIndex();return t in i.Records&&(delete i.Records[t],this._saveFormIndex(i)),this.log.info("FormPersistence: deleted form record [".concat(t,"].")),!0}saveBundleData(t){if(!t)return this.log.error("FormPersistence saveBundleData called without a context identifier."),!1;let e,i;try{e=this.pict.resolveStateFromAddress(this.options.BundleSourceAddress)}catch(t){return this.log.error("FormPersistence saveBundleData: failed to resolve bundle data source: ".concat(t.message)),!1}try{i=JSON.stringify(e)}catch(t){return this.log.error("FormPersistence saveBundleData: failed to serialize bundle data: ".concat(t.message)),!1}let n=this.getStorageKey("Bundle",t);return this.storageAdapter.setItem(n,i)}loadBundleData(t){if(!t)return this.log.error("FormPersistence loadBundleData called without a context identifier."),!1;let e,i,n=this.getStorageKey("Bundle",t),r=this.storageAdapter.getItem(n);if(null===r)return this.log.warn("FormPersistence loadBundleData: no data found for context [".concat(t,"].")),!1;try{e=JSON.parse(r)}catch(e){return this.log.error("FormPersistence loadBundleData: failed to parse stored data for context [".concat(t,"]: ").concat(e.message)),!1}try{i=this.pict.resolveStateFromAddress(this.options.BundleSourceAddress)}catch(t){return this.log.error("FormPersistence loadBundleData: failed to resolve bundle destination: ".concat(t.message)),!1}let o=Object.keys(i);for(let t=0;t<o.length;t++)delete i[o[t]];return Object.assign(i,e),this.log.info("FormPersistence: loaded bundle data for context [".concat(t,"].")),!0}deleteBundleData(t){if(!t)return this.log.error("FormPersistence deleteBundleData called without a context identifier."),!1;let e=this.getStorageKey("Bundle",t);return this.storageAdapter.removeItem(e),this.log.info("FormPersistence: deleted bundle data for context [".concat(t,"].")),!0}listFormRecords(){let t=this.getFormIndex();return Object.values(t.Records)}listUnsyncedFormRecords(){let t=this.listFormRecords(),e=[];for(let i=0;i<t.length;i++)t[i].Synced||e.push(t[i]);return e}listFormRecordsForContext(t){let e=this.listFormRecords(),i=[];for(let n=0;n<e.length;n++)e[n].BundleContextIdentifier===t&&i.push(e[n]);return i}markFormSynced(t){if(!t)return this.log.error("FormPersistence markFormSynced called without an instance GUID."),!1;let e=this.getFormIndex();return t in e.Records?(e.Records[t].Synced=!0,e.Records[t].SyncedTimestamp=(new Date).toISOString(),this._saveFormIndex(e),!0):(this.log.warn("FormPersistence markFormSynced: GUID [".concat(t,"] not found in index.")),!1)}markFormDirty(t){if(!t)return this.log.error("FormPersistence markFormDirty called without an instance GUID."),!1;let e=this.getFormIndex();return t in e.Records?(e.Records[t].Synced=!1,this._saveFormIndex(e),!0):(this.log.warn("FormPersistence markFormDirty: GUID [".concat(t,"] not found in index.")),!1)}getActiveFormGUID(){return this._activeFormGUID}setActiveFormGUID(t){this._activeFormGUID=t||null}persistActiveForm(){if(!this._activeFormGUID)return this.log.warn("FormPersistence persistActiveForm: no active form GUID set."),!1;let t=this.saveFormData(this._activeFormGUID);if(t&&this.options.AutoPersistBundleWithForm){let t=this.getFormIndex().Records[this._activeFormGUID];t&&t.BundleContextIdentifier&&this.saveBundleData(t.BundleContextIdentifier)}return t}triggerDebouncedPersist(){if(!this._activeFormGUID)return;this._persistTimerHandle&&clearTimeout(this._persistTimerHandle);let t=this;this._persistTimerHandle=setTimeout(function(){t.persistActiveForm(),t._persistTimerHandle=null},this.options.AutoPersistDebounceMs)}onFormDataChanged(){this.options.AutoPersistOnDataChange&&this.triggerDebouncedPersist()}},e.exports.default_configuration=r},{"pict-provider":9}],51:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-Informary",AutoInitialize:!1,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.log,this.genericManifest=this.pict.newManyfest({Scope:"GenericInformary"})}getFormElements(t){let e='[data-i-form="'.concat(t,'"]');return this.pict.ContentAssignment.getElement(e)}getContentBrowserAddress(t,e,i,n){return i?'[data-i-form="'.concat(t,'"][data-i-datum="').concat(e,'"][data-i-container="').concat(i,'"][data-i-index="').concat(n,'"]'):'[data-i-form="'.concat(t,'"][data-i-datum="').concat(e,'"]')}getComposedContainerAddress(t,e,i){return"".concat(t,"[").concat(e,"].").concat(i)}marshalFormToData(t,e,i,n,r){const o="object"==typeof i?i:this.genericManifest,a=this.getFormElements(e),s=null==n&&n,c="number"==typeof r?String(r):r;for(const i of a)this.marshalSpecicificFormElementToData(e,i,o,t,s,c)}marshalSpecicificFormElementToData(t,e,i,n,r,o){const a=e.getAttribute("data-i-datum"),s=e.getAttribute("data-i-container"),c=e.getAttribute("data-i-index");if(r&&r!==a)return!1;if(o&&c&&o!==c)return!1;let l=this.pict.ContentAssignment.readContent(this.getContentBrowserAddress(t,a,s,c));if(this.pict.LogNoisiness>3&&this.log.trace("Informary marshalling BrowserForm Data ".concat(l," from form element [").concat(a,"] in container [").concat(s,"] at index [").concat(c,"] to the datum address [").concat(a,"].")),null==l)return!1;s?i.setValueAtAddress(n,this.getComposedContainerAddress(s,c,a),l):i.setValueAtAddress(n,a,l)}marshalDataToForm(t,e,i){let n="object"==typeof i?i:this.genericManifest,r=this.getFormElements(e);for(let i=0;i<r.length;i++)this.marshalSpecificElementDataToForm(e,r[i],n,t)}marshalSpecificElementDataToForm(t,e,i,n){let r=e.getAttribute("data-i-datum"),o=e.getAttribute("data-i-container"),a=Number(e.getAttribute("data-i-index"));if(!r)return this.log.warn("Informary found a form element without a datum address. Skipping."),!1;if(o){let e=i.getValueAtAddress(n,this.getComposedContainerAddress(o,a,r));this.pict.LogNoisiness>3&&this.log.trace("Informary marshalling App State data ".concat(e," to Browser Form element [").concat(r,"] in container [").concat(o,"] at index [").concat(a,"].")),null!=e&&this.pict.ContentAssignment.assignContent(this.getContentBrowserAddress(t,r,o,a),e)}else{let e=i.getValueAtAddress(n,r);this.pict.LogNoisiness>3&&this.log.trace("Informary marshalling App State data ".concat(e," to Browser Form element [").concat(r,"].")),null!=e&&this.pict.ContentAssignment.assignContent(this.getContentBrowserAddress(t,r,o,a),e)}}manualMarshalDataToFormByInput(t){if("object"!=typeof t)return this.log.error("Informary failed to marshal data to form because the input is not an object."),!1;if(!("Hash"in t))return this.log.error("Informary failed to marshal data to form because the input is missing a hash."),!1;if(!("PictForm"in t))return this.log.error("Informary failed to marshal data to form because the input is missing a PictForm object."),!1;let e=this.pict.views[t.PictForm.ViewHash];return e?this.pict.ContentAssignment.assignContent(t.Macro.HTMLSelector,e.getValueByHash(t.Hash)):(this.log.error("Informary failed to marshal data to form because the input view is missing."),!1)}manualMarshalTabularDataToFormByInput(t,e){if("object"!=typeof t)return this.log.error("Informary failed to marshal data to form because the input is not an object."),!1;if(!("Hash"in t))return this.log.error("Informary failed to marshal data to form because the input is missing a hash."),!1;if(!("PictForm"in t))return this.log.error("Informary failed to marshal data to form because the input is missing a PictForm object."),!1;let i=this.pict.views[t.PictForm.ViewHash];return i?this.pict.ContentAssignment.assignContent("".concat(t.Macro.HTMLSelectorTabular,'[data-i-index="').concat(e,'"]'),i.getTabularValueByHash(t.PictForm.GroupIndex,t.PictForm.InputIndex,e)):(this.log.error("Informary failed to marshal data to form because the input view is missing."),!1)}manualMarshalDataToForm(t,e){return this.pict.ContentAssignment.assignContent(t,e)}manualMarshalTabularDataToForm(t,e,i){return this.pict.ContentAssignment.assignContent("".concat(t,'[data-i-index="').concat(i,'"]'),e)}},e.exports.default_configuration=r},{"pict-provider":9}],52:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-InputExtension",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i)}getInputHTMLID(t){return"#INPUT-FOR-".concat(t)}getTabularInputHTMLID(t,e){return"#TABULAR-DATA-".concat(t,"-").concat(e)}onInputInitialize(t,e,i,n,r,o,a){return!0}onInputInitializeTabular(t,e,i,n,r,o,a){return!0}onDataChange(t,e,i,n,r){return!0}onDataChangeTabular(t,e,i,n,r,o){return!0}onDataMarshalToForm(t,e,i,n,r,o,a){return!0}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return!0}onDataRequest(t,e,i,n){return!0}onDataRequestTabular(t,e,i,n,r){return!0}onEvent(t,e,i,n,r,o){return!0}onAfterEventCompletion(t,e,i,n,r,o){return!0}onEventTabular(t,e,i,n,r,o,a){return!0}onAfterEventTabularCompletion(t,e,i,n,r,o,a){return!0}},e.exports.default_configuration=r},{"pict-provider":9}],53:[function(t,e,i){const n=t("pict-provider");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}filterList(t,e,i){if("object"!=typeof e)return this.log.warn("FilterList failed because the input is not an object."),i;if(!("PictForm"in e))return this.log.warn("FilterList failed because the input does not have a PictForm stanza object."),i;if(!Array.isArray(i))return this.log.warn("FilterList for input [".concat(e.Hash,"] failed because the list is not an array.")),[];let n=e.PictForm.ListFilterRules;if(!n||0==n.length||!Array.isArray(n))return i;let r=i.slice(0);for(let o=i.length-1;o>=0;o--){let a=i[o],s=!0;for(let r=0;r<n.length;r++){let o,c=n[r],l="FilteredRecordComparisonValue"in c&&c.FilteredRecordComparisonValueAddress;switch(o=l?t.getValueByHash(l):a.id,c.FilterType){case"Explicit":let n=c.FilterValueAddress,r="FilterValueComparison"in c?c.FilterValueComparison:"==",l="IgnoreEmptyValue"in c&&c.IgnoreEmptyValue,p=t.getValueByHash(n);if(l&&(!p||""==p))break;switch(r.toLowerCase()){case"=":case"==":case"eq":o!=p&&(this.fable.log.debug("FilterList: ".concat(o," != ").concat(p,"; distilling is removing from the outcome array.")),s=!1);break;case"!=":case"ne":case"~=":case"ae":o==p&&(this.fable.log.debug("FilterList: ".concat(o," == ").concat(p,"; distilling is removing from the outcome array.")),s=!1)}break;case"CrossMap":let d,u=c.JoinListAddress,h="JoinListAddressGlobal"in c&&c.JoinListAddressGlobal,m=c.JoinListValueAddress,g=c.ExternalValueAddress,f=c.FilterToValueAddress,D="IgnoreEmpty"in c&&c.IgnoreEmpty;if(h){const e={Fable:this.pict,Pict:this.pict,AppData:this.pict.AppData,Bundle:this.pict.Bundle,View:t};d=this.pict.manifest.getValueAtAddress(e,u)}else d=t.getValueByHash(u);let y=t.getValueByHash(f);if(D&&(!y||""==y))break;if(!Array.isArray(d)&&null!=d&&"object"==typeof d){let t=Object.keys(d),e=[];for(let i=0;i<t.length;i++)e.push(d[t[i]]);d=e}if(!Array.isArray(d)||0==d.length)break;let v=!1;for(let t=0;t<d.length;t++){let e=this.pict.manifest.getValueAtAddress(d[t],m),i=this.pict.manifest.getValueAtAddress(d[t],g);if((!D||e&&""!=e)&&(y==i&&e==o)){v=!0;break}}s=v&&s;break;default:let b=this.pict.providers[c.FilterType];b&&(s=b.filterList(t,e,i,a))}}s||r.splice(o,1)}return r}},e.exports.default_configuration={ProviderIdentifier:"Pict-DynamicForms-ListDistilling",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1}},{"pict-provider":9}],54:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-MetaList",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.fable,this.log,this.UUID,this.Hash,this.computedLists={},this.listDefinitions={}}getList(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.listDefinitions[t].Dynamic){const i=[],n=this.pict.getUUID(),r=n.substring(0,8),o="AppData._MetaLists.".concat(r);return this.pict.manifest.setValueByHash(this.pict,o,i),this.pict.TransactionTracking.registerTransaction(n),this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("GetPickList:".concat(t,":").concat(o,":").concat(JSON.stringify(e)),n),this.pict.views.PictFormMetacontroller.finalizeTransaction(n),delete this.pict.AppData._MetaLists[r],i}return t in this.computedLists?this.computedLists[t]:[]}hasList(t){return t in this.computedLists}buildViewSpecificLists(t){let e=Array.isArray(t)?t:Object.keys(this.fable.views);for(let t=0;t<e.length;t++){let i=e[t],n=this.fable.views[i];if(n.isPictSectionForm){let t=n.sectionDefinition;if("PickLists"in t&&Array.isArray(t.PickLists))for(let e=0;e<t.PickLists.length;e++){let i=t.PickLists[e];this.buildList(i)}}}}rebuildListByHash(t){t in this.listDefinitions&&this.buildList(this.listDefinitions[t])}buildList(t){if("object"!=typeof t)return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList that is not an object. Skipping.")),!1;if(!("Hash"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a Hash. Skipping.")),!1;t.Hash in this.listDefinitions||(this.listDefinitions[t.Hash]=t,this.computedLists[t.Hash]=[]);let e=[];if(!("ListAddress"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a ListAddress. Skipping.")),this.computedLists[t.Hash]=[],!1;if(!("ListSourceAddress"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a ListSourceAddress. Skipping.")),this.computedLists[t.Hash]=[],!1;if(!("TextTemplate"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a TextTemplate. Skipping.")),this.computedLists[t.Hash]=[],!1;if(!("IDTemplate"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a IDTemplate. Skipping.")),this.computedLists[t.Hash]=[],!1;if(!this.pict.views.PictFormMetacontroller)return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] requires PictFormMetacontroller but not found. Skipping.")),this.computedLists[t.Hash]=[],!1;let i=this.pict.providers.DataBroker.getValueByHash(t.ListSourceAddress);if(!i)return this.computedLists[t.Hash]=[],!1;let n={};if(Array.isArray(i))for(let r=0;r<i.length;r++){let o=i[r];if(o&&"object"==typeof o){let i=this.pict.parseTemplate(t.TextTemplate,o),r=this.pict.parseTemplate(t.IDTemplate,o);if(!i||!r){this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] failed to generate the Text or ID for PickList [").concat(t.Hash,"]. Skipping."));continue}if(t.Unique&&r in n)continue;n[r]=!0,e.push({id:r,text:i})}}t.Sorted&&e.sort((t,e)=>t.text.localeCompare(e.text)),this.computedLists[t.Hash]=e}},e.exports.default_configuration=r},{"pict-provider":9}],55:[function(t,e,i){const n=t("pict-provider"),r=t("../views/Pict-View-DynamicForm.js"),o={ProviderIdentifier:"Pict-DynamicForms-Provider-MetatemplateGenerator",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1},a={Hash:"DynamicInputs",Name:"Dynamic Inputs",ViewHash:"PictFormMetacontroller-DynamicInputs",IncludeInMetatemplateSectionGeneration:!1,Manifests:{Section:{Scope:"MetaTemplate",Sections:[{Hash:"DynamicInputs",Name:"Dynamic Inputs"}],Descriptors:{"MetaTemplate.DynamicInputPlaceholder":{Name:"DynamicInputPlaceholder",Hash:"DynamicInputPlaceholder",DataType:"String",Macro:{HTMLSelector:""},PictForm:{Section:"DynamicInputs"}}}}}};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(o)),e),i),this.pict,this.log,this.dynamicInputView,this.baseTemplatePrefix="Pict-MT-Base"}onInitializeAsync(t){return this.createOnDemandMetatemplateView(),super.onInitializeAsync(t)}createOnDemandMetatemplateView(){const t=JSON.parse(JSON.stringify(a));t.ViewHash in this.pict.views?this.dynamicInputView=this.pict.views[t.ViewHash]:this.dynamicInputView=this.pict.addView(t.ViewHash,t,r)}getMetatemplateTemplateReferenceRaw(t,e,i){return t.checkViewSpecificTemplate(e)?"\n{~T:".concat(t.formsTemplateSetPrefix).concat(e,":").concat(i,"~}"):t.checkThemeSpecificTemplate(e)?"\n{~T:".concat(t.defaultTemplatePrefix).concat(e,":").concat(i,"~}"):""}getMetatemplateTemplateReference(t,e,i){return this.getMetatemplateTemplateReferenceRaw(t,e,'Pict.views["'.concat(t.Hash,'"].').concat(i))}getInputMetatemplateTemplateReference(t,e,i,n){let r="-Template-Input-InputType-".concat(i),o="-Template-Input-DataType-".concat(e);if(i){let e=this.getMetatemplateTemplateReference(t,r,n);if(e)return e}let a=this.getMetatemplateTemplateReference(t,o,n);return a||this.getMetatemplateTemplateReference(t,"-Template-Input",n)}getTabularInputMetatemplateTemplateReference(t,e,i,n,r,o){let a="-TabularTemplate-Begin-Input-InputType-".concat(i),s="-TabularTemplate-Mid-Input-InputType-".concat(i),c="-TabularTemplate-End-Input-InputType-".concat(i),l="-TabularTemplate-Begin-Input-DataType-".concat(e),p="-TabularTemplate-Mid-Input-DataType-".concat(e),d="-TabularTemplate-End-Input-DataType-".concat(e),u=this.getMetatemplateTemplateReference(t,"-TabularTemplate-Mid-Input",n),h=this.getMetatemplateTemplateReference(t,"-TabularTemplate-InformaryAddress-Input",n);if(i){let e=this.getMetatemplateTemplateReference(t,a,n),i=this.getMetatemplateTemplateReference(t,c,n),r=this.getMetatemplateTemplateReference(t,s,n);if(u=r||u,e&&i)return e+u+h+i}let m=this.getMetatemplateTemplateReference(t,l,n),g=this.getMetatemplateTemplateReference(t,d,n);if(m&&g){let e=this.getMetatemplateTemplateReference(t,p,n);return u=e||u,m+u+h+g}return m=this.getMetatemplateTemplateReference(t,"TabularTemplate-Begin-Input",n),g=this.getMetatemplateTemplateReference(t,"TabularTemplate-End-Input",n),m&&g?m+u+h+g:(this.log.error("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] catastrophic error generating tabular metatemplate: missing input template for Data Type ").concat(e," and Input Type ").concat(i,", Data Address ").concat(n,", Group Index ").concat(r," and Record Subaddress ").concat(o,".")),"")}getVerticalInputMetatemplateTemplateReference(t,e,i,n){let r="-VerticalTemplate-Input-InputType-".concat(i),o="-VerticalTemplate-Input-DataType-".concat(e);if(i){let e=this.getMetatemplateTemplateReference(t,r,n);if(e)return e}let a=this.getMetatemplateTemplateReference(t,o,n);return a||this.getMetatemplateTemplateReference(t,"-Template-Input",n)}getGroupLayoutProvider(t,e){let i="string"==typeof e.Layout?e.Layout:"string"==typeof t.sectionDefinition.DefaultGroupLayout?t.sectionDefinition.DefaultGroupLayout:"Record";switch(i){case"Tabular":return this.pict.providers["Pict-Layout-Tabular"];case"Record":return this.pict.providers["Pict-Layout-Record"];case"Vertical":return this.pict.providers["Pict-Layout-VerticalRecord"];default:return"Pict-Layout-".concat(i)in this.pict.providers?this.pict.providers["Pict-Layout-".concat(i)]:this.pict.providers["Pict-Layout-Record"]}}rebuildCustomTemplate(t){let e="";this.pict.views.PictFormMetacontroller&&"formTemplatePrefix"in this.pict.views.PictFormMetacontroller&&!("defaultTemplatePrefix"in t)&&(t.defaultTemplatePrefix=this.pict.views.PictFormMetacontroller.formTemplatePrefix),e+=this.getMetatemplateTemplateReference(t,"-Template-Wrap-Prefix","sectionDefinition"),e+=this.getMetatemplateTemplateReference(t,"-Template-Section-Prefix","sectionDefinition");for(let i=0;i<t.sectionDefinition.Groups.length;i++){let n=t.sectionDefinition.Groups[i];n.GroupIndex=i,n.SectionTabularRowVirtualTemplateHash="Pict-Form-Template-TabularRow-Virtual-".concat(t.options.Hash,"-G").concat(n.GroupIndex),n.SectionTabularRowTemplateHash="Pict-Form-Template-TabularRow-".concat(t.options.Hash,"-G").concat(n.GroupIndex),e+=this.getGroupLayoutProvider(t,n).generateGroupLayoutTemplate(t,n)}e+=this.getMetatemplateTemplateReference(t,"-Template-Section-Postfix","sectionDefinition"),e+=this.getMetatemplateTemplateReference(t,"-Template-Wrap-Postfix","sectionDefinition"),this.pict.providers.MetatemplateMacros.rebuildMacros(t),this.pict.TemplateProvider.addTemplate(t.options.SectionTemplateHash,e)}},e.exports.default_configuration=o},{"../views/Pict-View-DynamicForm.js":103,"pict-provider":9}],56:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-MetatemplateMacros",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.fable,this.log,this.UUID,this.Hash,this.additionalInputMacros={},"AdditionalInputMacros"in this.options&&(this.additionalInputMacros=Object.assign(this.additionalInputMacros,this.options.AdditionalInputMacros)),"CustomInputMacros"in this.pict.settings&&(this.AdditionalInputMacros=Object.assign(this.additionalInputMacros,this.pict.settings.CustomInputMacros)),this.additionalGroupMacros={},"AdditionalGroupMacros"in this.options&&(this.additionalGroupMacros=Object.assign(this.additionalGroupMacros,this.options.AdditionalGroupMacros)),"CustomGroupMacros"in this.pict.settings&&(this.additionalGroupMacros=Object.assign(this.additionalGroupMacros,this.pict.settings.CustomGroupMacros)),this.additionalSectionMacros={},"AdditionalSectionMacros"in this.options&&(this.additionalSectionMacros=Object.assign(this.additionalSectionMacros,this.options.AdditionalSectionMacros)),"CustomSectionMacros"in this.pict.settings&&(this.additionalSectionMacros=Object.assign(this.additionalSectionMacros,this.pict.settings.CustomSectionMacros))}buildInputMacros(t,e){let i=Object.keys(t.options.MacroTemplates.Input),n=Object.keys(this.additionalInputMacros);"Macro"in e||(e.Macro={});for(let n=0;n<i.length;n++)e.Macro[i[n]]=t.pict.parseTemplate(t.options.MacroTemplates.Input[i[n]],e,null,[t]);for(let i=0;i<n.length;i++)e.Macro[n[i]]=t.pict.parseTemplate(this.additionalInputMacros[n[i]],e,null,[t])}rebuildMacros(t){if(!("MacroTemplates"in t.options))return!1;let e=Object.keys(t.options.MacroTemplates.Section),i=Object.keys(this.additionalSectionMacros);"object"!=typeof t.sectionDefinition.Macro&&(t.sectionDefinition.Macro={});for(let i=0;i<e.length;i++)t.sectionDefinition.Macro[e[i]]=t.pict.parseTemplate(t.options.MacroTemplates.Section[e[i]],t.sectionDefinition,null,[t]);for(let e=0;e<i.length;e++)t.sectionDefinition.Macro[i[e]]=t.pict.parseTemplate(this.additionalSectionMacros[i[e]],t.sectionDefinition,null,[t]);for(let e=0;e<t.sectionDefinition.Groups.length;e++){let i=t.sectionDefinition.Groups[e],n=Object.keys(t.options.MacroTemplates.Group),r=Object.keys(this.additionalGroupMacros);"Macro"in i||(i.Macro={});for(let e=0;e<n.length;e++)i.Macro[n[e]]=t.pict.parseTemplate(t.options.MacroTemplates.Group[n[e]],i,null,[t]);for(let e=0;e<r.length;e++)i.Macro[r[e]]=t.pict.parseTemplate(this.additionalGroupMacros[r[e]],i,null,[t]);Array.isArray(i.Rows)||(i.Rows=[]);for(let e=0;e<i.Rows.length;e++){let n=i.Rows[e];for(let e=0;e<n.Inputs.length;e++)this.buildInputMacros(t,n.Inputs[e])}if(i.supportingManifest){let e=Object.keys(i.supportingManifest.elementDescriptors);for(let n=0;n<e.length;n++)this.buildInputMacros(t,i.supportingManifest.elementDescriptors[e[n]])}}}},e.exports.default_configuration=r},{"pict-provider":9}],57:[function(t,e,i){e.exports={TemplatePrefix:"Pict-Forms-ReadOnly",Templates:[{HashPostfix:"-Template-Form-Container-Header",Template:'\n\x3c!-- Pict Form Metacontroller container Header\n\n ;,//;, ,;/\n o:::::::;;///\n>::::::::;;\\ \'\'\\\\\'" \';\nGlug glug glug Oo... --\x3e\n<div id="Pict-{~D:Context[0].UUID~}-FormContainer" class="pict-form">'},{HashPostfix:"-Template-Form-Container-Wrap-Prefix",Template:'\n\x3c!-- Pict Form Metacontroller container [{~D:Context[0].UUID~}] --\x3e\n<div id="Pict-{~D:Context[0].UUID~}-{~D:Record.options.Hash~}-Wrap" class="pict-form">'},{HashPostfix:"-Template-Form-Container",Template:'\n\n\t\x3c!-- Pict Form View Container [{~D:Record.UUID~}]::[{~D:Record.Hash~}] --\x3e\n\t<div id="Pict-Form-Container-{~D:Record.options.Hash~}" class="pict-form-view"></div>'},{HashPostfix:"-Template-Form-Container-Custom",Template:'\n\n\t\x3c!-- Pict Form View Container [{~D:Record.UUID~}]::[{~D:Record.Hash~}] --\x3e\n\t<div id="{~D:Record.options.CustomTargetID~}" class="pict-form-view"></div>'},{HashPostfix:"-Template-Form-Container-Wrap-Postfix",Template:"\n</div>\n\x3c!-- Pict Form Metacontroller container [{~D:Context[0].UUID~}] --\x3e\n"},{HashPostfix:"-Template-Wrap-Prefix",Template:"\n\t\x3c!-- Pict Form Wrap Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] --\x3e\n"},{HashPostfix:"-Template-Wrap-Postfix",Template:"\n\t\x3c!-- Pict Form Wrap Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] --\x3e\n"},{HashPostfix:"-Template-Section-Prefix",Template:'\n\t\t\x3c!-- Form Section Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t<div class="pict-form-section">\n\t\t<h2>{~D:Record.Name~}</h2>\n'},{HashPostfix:"-Template-Section-Postfix",Template:"\n\t\t</div>\n\t\t\x3c!-- Form Section Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Group-Prefix",Template:'\n\t\t\t\x3c!-- Form Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t<div id="GROUP-{~D:Context[0].formID~}-{~D:Record.Hash~}" {~D:Record.Macro.PictFormLayout~}>\n\t\t\t<h3>Group: {~D:Record.Name~}</h3>\n'},{HashPostfix:"-Template-Row-Prefix",Template:"\n\t\t\t\t\x3c!-- Form Template Row Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t\t<div>\n"},{HashPostfix:"-Template-Row-Postfix",Template:"\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- Form Template Row Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Group-Postfix",Template:"\n\t\t\t</div>\n\t\t\t\x3c!-- Form Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input disabled type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input disabled type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input disabled type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-InputType-TextArea",Template:"\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <textarea disabled {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~}></textarea>\n"},{HashPostfix:"-Template-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <select disabled {~D:Record.Macro.ControlAttr~} id="SELECT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}"></select>\n'},{HashPostfix:"-Template-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input disabled {~D:Record.Macro.ControlAttr~} id="DATETIME-INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}" type="datetime-local" value="" />\n'},{HashPostfix:"-Template-Input-InputType-TabGroupSelector",DefaultInputExtensions:["Pict-Input-TabGroupSelector"],Template:'\n\t\t\t\t\t\x3c!-- InputType TabGroupSelector {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t\x3c!-- the TabSelector Input provider deals with populating this from the manifest. --\x3e\n\t\t\t\t\t<input disabled type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t\x3c!-- <span>{~D:Record.Name~}:</span> --\x3e\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="TAB-SELECT-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n'},{HashPostfix:"-Template-Input-InputType-TabGroupSelector-TabElement",Template:"\n\t\t\t\x3c!-- Sections have \"tab groups\" which are defined by the hash of the Descriptor that hosts the current TabGroup value. --\x3e\n\t\t\t<a href=\"#\" id=\"TAB-{~D:Context[1].TabGroupHash~}-{~D:Record.Macro.RawHTMLID~}\" onclick=\"{~P~}.providers['Pict-Input-TabGroupSelector'].selectTabByViewHash('{~D:Context[0].Hash~}','{~D:Record.Hash~}', '{~D:Context[1].TabGroupHash~}')\">{~D:Context[1].TabGroupHash~}</a>\n"},{HashPostfix:"-Template-Input-InputType-TabGroupSelector-EmptyGroupContent",Template:"\n\t\t\t\x3c!-- This is the template for if the tmpInput.PictForm.TabGroupSet array is empty. --\x3e\n\t\t\t<p>Warning! No tabs to select from for {~D:Record.TabGroupSetRawHTMLID~}</p>\n"},{HashPostfix:"-TuiGrid-Container",Template:'\n\t\t\t<div {~D:Record.Macro.ControlAttr~} id="{~D:Record.TuiGridHTMLID~}"></div>\n'},{HashPostfix:"-TuiGrid-Controls",Template:"\n\t\t\t<div>[ <a href=\"#\" onclick=\"{~P~}.providers['Pict-Layout-TuiGrid'].addRow('{~D:Context[0].Hash~}', {~D:Record.GroupIndex~})\">create</a> ]</div>\n"},{HashPostfix:"-TabularTemplate-Group-Prefix",Template:'\n\t\t\t<div id="GROUP-{~D:Context[0].formID~}-{~D:Record.Hash~}" {~D:Record.Macro.PictFormLayout~}>\n\t\t\t<table>\n\t\t\t\t\t<tbody>\n\t\t\t\x3c!-- Form Tabular Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-Group-Postfix",Template:'\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<div><a href="#" onclick="{~D:Record.Macro.TabularCreateRowFunctionCall~}">create</a></div>\n\t\t\t</div>\n\t\t\t\x3c!-- Form Tabular Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-RowHeader-ExtraPrefix",Template:"\x3c!-- TabularTemplateRowHeader-ExtraPrefix --\x3e"},{HashPostfix:"-TabularTemplate-RowHeader-ExtraPostfix",Template:'\x3c!-- TabularTemplateRowHeader-ExtraPostfix --\x3e\n\t\t\t\t\t\t<th style="min-width:100px;"></th>\n'},{HashPostfix:"-TabularTemplate-Row-ExtraPrefix",Template:"\x3c!-- TabularTemplateRow-ExtraPrefix --\x3e"},{HashPostfix:"-TabularTemplate-Row-ExtraPostfix",Template:"\x3c!-- TabularTemplateRow-ExtraPostfix--\x3e\n\t\t\t\t\t<td><a href=\"#\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].deleteDynamicTableRow({~D:Record.Group~},'{~D:Record.Key~}')\">del</a>\n\t\t\t\t\t<a href=\"#\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].moveDynamicTableRowUp({~D:Record.Group~},'{~D:Record.Key~}')\">up</a>\n\t\t\t\t\t<a href=\"#\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].moveDynamicTableRowDown({~D:Record.Group~},'{~D:Record.Key~}')\">down</a></td>\n"},{HashPostfix:"-TabularTemplate-RowHeader-Prefix",Template:"\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n"},{HashPostfix:"-TabularTemplate-HeaderCell",Template:'\n\t\t\t\t\t\t\x3c!-- Descriptor {~D:Record.Name~} [{~D:Record.Hash~}] -> {~D:Record.Address~} --\x3e\n\t\t\t\t\t\t<th data-tabular-column-index="{~D:Record.PictForm.InputIndex~}">{~D:Record.Name~}</th>\n'},{HashPostfix:"-TabularTemplate-RowHeader-Postfix",Template:"\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n"},{HashPostfix:"-TabularTemplate-Row-Prefix",Template:'\n\t\t\t\t\t<tr data-tabular-row-index="{~D:Record.Key~}" data-tabular-group-index="{~D:Record.Group~}">{~T:TabularTemplateRow-ExtraPrefix~}\n'},{HashPostfix:"-TabularTemplate-Cell-Prefix",Template:'\n\t\t\t\t\t\t<td data-tabular-column-index="{~D:Record.PictForm.InputIndex~}">\x3c!-- {~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-Cell-Postfix",Template:"\n\t\t\t\t\t\t</td>\n"},{HashPostfix:"-TabularTemplate-Row-Postfix",Template:"\n\t\t\t\t\t{~T:TabularTemplateRow-ExtraPostfix~}</tr>"},{HashPostfix:"-TabularTemplate-Begin-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input",Template:' value="">'},{HashPostfix:"-TabularTemplate-Mid-Input",Template:" "},{HashPostfix:"-TabularTemplate-InformaryAddress-Input",Template:" data-i-index=\"{~D:Context[2].Key~}\" onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].dataChangedTabular('{~D:Context[2].Group~}', '{~D:Record.PictForm.InputIndex~}', '{~D:Context[2].Key~}')\" "},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-String",Template:' value="">'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-Number",Template:' value="">\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-TextArea",Template:"\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<textarea disabled {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} "},{HashPostfix:"-TabularTemplate-End-Input-InputType-TextArea",Template:" ></textarea>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" id="SELECT-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Option",Template:" value=\"\">\n\t\t\t\t\t<select disabled {~D:Record.Macro.ControlAttr~} id=\"SELECT-TABULAR-DROPDOWN-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}\" onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].inputDataRequestTabular('{~D:Context[2].Group~}', '{~D:Record.PictForm.InputIndex~}', '{~D:Context[2].Key~}')\"></select>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Boolean",Template:' value="" />\n'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" id="DATETIME-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-DateTime",Template:' value="">\n\t\t\t\t\t<input disabled {~D:Record.Macro.ControlAttr~} id="DATETIME-TABULAR-INPUT-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" onchange="{~P~}.views[\'{~D:Context[0].Hash~}\'].inputDataRequestTabular(\'{~D:Context[2].Group~}\', \'{~D:Record.PictForm.InputIndex~}\', \'{~D:Context[2].Key~}\')" type="datetime-local" value="" />\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Hidden",Template:'\n\t\t\t\t\t\x3c!-- InputType Hidden {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} {~D:Record.Macro.InformaryTabular~}\n'},{HashPostfix:"-TabularTemplate-End-Input-InputType-Hidden",Template:' value="">\n'}]}},{}],58:[function(t,e,i){e.exports={TemplatePrefix:"Pict-MT-Base",Templates:[{HashPostfix:"-Template-Form-Container-Header",Template:'\n\x3c!-- Pict Form Metacontroller container Header\n\n ;,//;, ,;/\n o:::::::;;///\n>::::::::;;\\ \'\'\\\\\'" \';\nGlug glug glug Oo... --\x3e\n<div id="Pict-{~D:Context[0].UUID~}-FormContainer" class="pict-form">'},{HashPostfix:"-Template-Form-Container-Wrap-Prefix",Template:'\n\x3c!-- Pict Form Metacontroller container [{~D:Context[0].UUID~}] --\x3e\n<div id="Pict-{~D:Context[0].UUID~}-{~D:Record.options.Hash~}-Wrap" class="pict-form">'},{HashPostfix:"-Template-Form-Container",Template:'\n\n\t\x3c!-- Pict Form View Container [{~D:Record.UUID~}]::[{~D:Record.Hash~}] --\x3e\n\t<div id="Pict-Form-Container-{~D:Record.options.Hash~}" class="pict-form-view"></div>'},{HashPostfix:"-Template-Form-Container-Custom",Template:'\n\n\t\x3c!-- Pict Form View Container [{~D:Record.UUID~}]::[{~D:Record.Hash~}] --\x3e\n\t<div id="{~D:Record.options.CustomTargetID~}" class="pict-form-view"></div>'},{HashPostfix:"-Template-Form-Container-Wrap-Postfix",Template:"\n</div>\n\x3c!-- Pict Form Metacontroller container [{~D:Context[0].UUID~}] --\x3e\n"},{HashPostfix:"-Template-Wrap-Prefix",Template:"\n\t\x3c!-- Pict Form Wrap Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] --\x3e\n"},{HashPostfix:"-Template-Wrap-Postfix",Template:"\n\t\x3c!-- Pict Form Wrap Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] --\x3e\n"},{HashPostfix:"-Template-Section-Prefix",Template:'\n\t\t\x3c!-- Form Section Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t<div id="SECTION-{~D:Context[0].formID~}" class="pict-form-section {~D:Record.CSSClass~}">\n\t\t<h2>{~D:Record.Name~}</h2>\n'},{HashPostfix:"-Template-Section-Postfix",Template:"\n\t\t</div>\n\t\t\x3c!-- Form Section Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Group-Prefix",Template:'\n\t\t\t\x3c!-- Form Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t<div id="GROUP-{~D:Context[0].formID~}-{~D:Record.Hash~}" class="{~D:Record.CSSClass~}" {~D:Record.Macro.PictFormLayout~}>\n\t\t\t<h3>Group: {~D:Record.Name~}</h3>\n'},{HashPostfix:"-Template-Row-Prefix",Template:"\n\t\t\t\t\x3c!-- Form Template Row Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t\t<div>\n"},{HashPostfix:"-Template-Row-Postfix",Template:"\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- Form Template Row Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-VerticalRow-Prefix",Template:'\n\t\t\t\t\x3c!-- Form Template Vertical Row Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-group">\n'},{HashPostfix:"-Template-VerticalRow-Postfix",Template:"\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- Form Template Vertical Row Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Group-Postfix",Template:"\n\t\t\t</div>\n\t\t\t\x3c!-- Form Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-PreciseNumber",Template:'\n\t\t\t\t\t\x3c!-- DataType PreciseNumber {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-InputType-PreciseNumberReadOnly",DefaultInputExtensions:["Pict-Input-PreciseNumber"],Template:'\n\t\t\t\t\t\x3c!-- InputType PreciseNumberReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} id="INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" value="" readonly="readonly">\n'},{HashPostfix:"-Template-Input-InputType-TextArea",Template:"\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <textarea {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~}></textarea>\n"},{HashPostfix:"-Template-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <select {~D:Record.Macro.ControlAttr~} id="SELECT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}"></select>\n'},{HashPostfix:"-Template-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input {~D:Record.Macro.ControlAttr~} id="DATETIME-INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}" type="datetime-local" value="" />\n'},{HashPostfix:"-Template-Input-InputType-Hidden",Template:"\n\t\t\t\t\t\x3c!-- InputType Hidden {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n"},{HashPostfix:"-Template-Input-InputType-Color",Template:'\n\t\t\t\t\t\x3c!-- InputType Color {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="color" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} />\n'},{HashPostfix:"-Template-Input-InputType-DisplayOnly",Template:"\n\t\t\t\t\t\x3c!-- InputType DisplayOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <span {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></span>\n"},{HashPostfix:"-Template-Input-InputType-ReadOnly",Template:'\n\t\t\t\t\t\x3c!-- InputType ReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="text" readonly {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></input>\n'},{HashPostfix:"-Template-Input-InputType-Link",DefaultInputExtensions:["Pict-Input-Link"],Template:'\n\t\t\t\t\t\x3c!-- InputType Link {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<a {~D:Record.Macro.ControlAttr~} id="INPUT-FOR-{~D:Record.Macro.RawHTMLID~}">{~D:Record.Name~}</a>\n'},{HashPostfix:"-Template-Input-InputType-Chart",DefaultInputExtensions:["Pict-Input-Chart"],Template:'\n\t\t\t\t\t\x3c!-- InputType Chart {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<div style="width:{~DWAF:Record.PictForm.QuantizedWidth:100~}%; display:inline-block;">\n\t\t\t\t\t\t<input type="hidden" id="CONFIG-FOR-{~D:Record.Macro.RawHTMLID~}" value="">\n\t\t\t\t\t\t<h3><span>{~D:Record.Name~}:</span></h3>\n\t\t\t\t\t\t<div style="width:100%;"><canvas id="CANVAS-FOR-{~D:Record.Macro.RawHTMLID~}" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></canvas></div>\n\t\t\t\t\t</div>\n'},{HashPostfix:"-Template-Input-InputType-Markdown",DefaultInputExtensions:["Pict-Input-Markdown"],Template:'\n\t\t\t\t\t\x3c!-- InputType Markdown {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-markdown"></div>\n'},{HashPostfix:"-Template-Input-InputType-HTML",DefaultInputExtensions:["Pict-Input-HTML"],Template:'\n\t\t\t\t\t\x3c!-- InputType Markdown {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-html"></div>\n'},{HashPostfix:"-Template-Input-InputType-Templated",DefaultInputExtensions:["Pict-Input-Templated"],Template:'\n\t\t\t\t\t\x3c!-- InputType Templated {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-templated"></div>\n'},{HashPostfix:"-Template-Input-InputType-TemplatedEntityLookup",DefaultInputExtensions:["Pict-Input-TemplatedEntityLookup"],Template:'\n\t\t\t\t\t\x3c!-- InputType TemplatedEntityLookup {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n'},{HashPostfix:"-Template-Input-InputType-RichText",DefaultInputExtensions:["Pict-Input-RichText"],Template:'\n\t\t\t\t\t\x3c!-- InputType RichText {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-richtext"></div>\n'},{HashPostfix:"-Template-Input-InputType-Diagram",DefaultInputExtensions:["Pict-Input-Diagram"],Template:'\n\t\t\t\t\t\x3c!-- InputType Diagram {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-diagram"></div>\n'},{HashPostfix:"-VerticalTemplate-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-DataType-PreciseNumber",Template:'\n\t\t\t\t\t\x3c!-- DataType PreciseNumber {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-PreciseNumberReadOnly",DefaultInputExtensions:["Pict-Input-PreciseNumber"],Template:'\n\t\t\t\t\t\x3c!-- InputType PreciseNumberReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} id="INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" value="" readonly="readonly">\n\t\t\t\t\t</div>\n\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-TextArea",Template:'\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<textarea {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~}></textarea>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<select {~D:Record.Macro.ControlAttr~} id="SELECT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}"></select>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input {~D:Record.Macro.ControlAttr~} id="DATETIME-INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}" type="datetime-local" value="" />\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Color",Template:'\n\t\t\t\t\t\x3c!-- InputType Color {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="color" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} />\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-DisplayOnly",Template:'\n\t\t\t\t\t\x3c!-- InputType DisplayOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<span {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></span>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-ReadOnly",Template:'\n\t\t\t\t\t\x3c!-- InputType ReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="text" readonly {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></input>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Link",DefaultInputExtensions:["Pict-Input-Link"],Template:'\n\t\t\t\t\t\x3c!-- InputType Link {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<a {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}>{~D:Record.Name~}</a>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Markdown",DefaultInputExtensions:["Pict-Input-Markdown"],Template:'\n\t\t\t\t\t\x3c!-- InputType Markdown {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-markdown"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-HTML",DefaultInputExtensions:["Pict-Input-HTML"],Template:'\n\t\t\t\t\t\x3c!-- InputType Markdown {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-html"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Templated",DefaultInputExtensions:["Pict-Input-Templated"],Template:'\n\t\t\t\t\x3c!-- InputType Templated {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-templated"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-TemplatedEntityLookup",DefaultInputExtensions:["Pict-Input-TemplatedEntityLookup"],Template:'\n\t\t\t\t\t\x3c!-- InputType TemplatedEntityLookup {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-RichText",DefaultInputExtensions:["Pict-Input-RichText"],Template:'\n\t\t\t\t\t\x3c!-- InputType RichText {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<label class="pict-form-label">{~D:Record.Name~}</label>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-richtext"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Diagram",DefaultInputExtensions:["Pict-Input-Diagram"],Template:'\n\t\t\t\t\t\x3c!-- InputType Diagram {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<label class="pict-form-label">{~D:Record.Name~}</label>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-diagram"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-Template-Input-InputType-TabGroupSelector",DefaultInputExtensions:["Pict-Input-TabGroupSelector"],Template:'\n\t\t\t\t\t\x3c!-- InputType TabGroupSelector {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t\x3c!-- the TabSelector Input provider deals with populating this from the manifest. --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t\x3c!-- <span>{~D:Record.Name~}:</span> --\x3e\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="TAB-SELECT-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n'},{HashPostfix:"-Template-Input-InputType-TabGroupSelector-TabElement",Template:"\n\t\t\t\x3c!-- Sections have \"tab groups\" which are defined by the hash of the Descriptor that hosts the current TabGroup value. --\x3e\n\t\t\t<a href=\"#/\" id=\"TAB-{~D:Context[1].TabGroupHash~}-{~D:Record.Macro.RawHTMLID~}\" onclick=\"{~P~}.providers['Pict-Input-TabGroupSelector'].selectTabByViewHash('{~D:Context[0].Hash~}','{~D:Record.Hash~}', '{~D:Context[1].TabGroupHash~}')\">{~D:Context[1].TabGroupName~}</a>\n"},{HashPostfix:"-Template-Input-InputType-TabGroupSelector-EmptyGroupContent",Template:"\n\t\t\t\x3c!-- This is the template for if the tmpInput.PictForm.TabGroupSet array is empty. --\x3e\n\t\t\t<p>Warning! No tabs to select from for {~D:Record.TabGroupSetRawHTMLID~}</p>\n"},{HashPostfix:"-Template-Input-InputType-TabSectionSelector",DefaultInputExtensions:["Pict-Input-TabSectionSelector"],Template:'\n\t\t\t\t\t\x3c!-- InputType TabSectionSelector {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t\x3c!-- the TabSelector Input provider deals with populating this from the manifest. --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t\x3c!-- <span>{~D:Record.Name~}:</span> --\x3e\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="TAB-SELECT-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n'},{HashPostfix:"-Template-Input-InputType-TabSectionSelector-TabElement",Template:"\n\t\t\t\x3c!-- Sections have \"tab groups\" which are defined by the hash of the Descriptor that hosts the current TabSection value. --\x3e\n\t\t\t<a href=\"#/\" id=\"TAB-{~D:Context[1].TabSectionHash~}-{~D:Record.Macro.RawHTMLID~}\" onclick=\"{~P~}.providers['Pict-Input-TabSectionSelector'].selectTabByViewHash('{~D:Context[0].Hash~}','{~D:Record.Hash~}', '{~D:Context[1].TabSectionHash~}')\">{~D:Context[1].TabSectionName~}</a>\n"},{HashPostfix:"-Template-Input-InputType-TabSectionSelector-EmptyGroupContent",Template:"\n\t\t\t\x3c!-- This is the template for if the tmpInput.PictForm.TabSectionSet array is empty. --\x3e\n\t\t\t<p>Warning! No tabs to select from for {~D:Record.TabSectionSetRawHTMLID~}</p>\n"},{HashPostfix:"-TuiGrid-Container",Template:'\n\t\t\t<div {~D:Record.Macro.ControlAttr~} id="{~D:Record.TuiGridHTMLID~}"></div>\n'},{HashPostfix:"-TuiGrid-Controls",Template:"\n\t\t\t<div>[ <a href=\"#/\" onclick=\"{~P~}.providers['Pict-Layout-TuiGrid'].addRow('{~D:Context[0].Hash~}', {~D:Record.GroupIndex~})\">create</a> ]</div>\n"},{HashPostfix:"-RecordSetTemplate-Group-Prefix",Template:"\n\t\t\t<div {~D:Record.Macro.PictFormLayout~}>\n\t\t\t\x3c!-- Form RecordSet Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-RecordSetTemplate-Group-Postfix",Template:'\n\t\t\t<div><a href="#/" onclick="{~D:Record.Macro.TabularCreateRowFunctionCall~}">create</a></div>\n\t\t\t</div>\n\t\t\t\x3c!-- Form RecordSet Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-RecordSetTemplate-Row-ExtraPrefix",Template:"\x3c!-- RecordSetTemplateRow-ExtraPrefix --\x3e"},{HashPostfix:"-RecordSetTemplate-Row-ExtraPostfix",Template:'\x3c!-- RecordSetTemplateRow-ExtraPostfix--\x3e\n\t\t\t\t\t<div class="PictSectionForm-RecordSet-Controls">\n\t\t\t\t\t\t<a href="#/" onClick="{~P~}.views[\'{~D:Context[0].Hash~}\'].deleteDynamicTableRow({~D:Record.Group~},\'{~D:Record.Key~}\')">del</a>\n\t\t\t\t\t\t<a href="#/" onClick="{~P~}.views[\'{~D:Context[0].Hash~}\'].moveDynamicTableRowUp({~D:Record.Group~},\'{~D:Record.Key~}\')">up</a>\n\t\t\t\t\t\t<a href="#/" onClick="{~P~}.views[\'{~D:Context[0].Hash~}\'].moveDynamicTableRowDown({~D:Record.Group~},\'{~D:Record.Key~}\')">down</a>\n\t\t\t\t\t</div>\n'},{HashPostfix:"-RecordSetTemplate-Row-Prefix",Template:'\n\t\t\t\t\t<div class="RecordSetEntry">\n\t\t\t\t\t\x3c!-- RecordSetTemplateRow-Prefix --\x3e\n'},{HashPostfix:"-RecordSetTemplate-Cell-Prefix",Template:'\n\t\t\t\t\t\t<div style="display:inline;">\n\t\t\t\t\t\t\t\x3c!-- RecordSetTemplateCell-Prefix --\x3e\n\t\t\t\t\t\t\t<span class="RecordSetInputLabel">{~D:Record.Name~}</span>\n'},{HashPostfix:"-RecordSetTemplate-Cell-Postfix",Template:"\n\t\t\t\t\t\t\t\x3c!-- RecordSetTemplateCell-Postfix --\x3e\n\t\t\t\t\t\t</div>\n"},{HashPostfix:"-RecordSetTemplate-Row-Postfix",Template:"\n\t\t\t\t\t\x3c!-- RecordSetTemplateRow-Postfix --\x3e\n\t\t\t\t\t</div>"},{HashPostfix:"-TabularTemplate-Group-Prefix",Template:'\n\t\t\t<div id="GROUP-{~D:Context[0].formID~}-{~D:Record.Hash~}" {~D:Record.Macro.PictFormLayout~}>\n\t\t\t<table>\n\t\t\t\t\t<tbody>\n\t\t\t\x3c!-- Form Tabular Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-Group-Postfix",Template:'\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<div><a href="#/" onclick="{~D:Record.Macro.TabularCreateRowFunctionCall~}">create</a></div>\n\t\t\t</div>\n\t\t\t\x3c!-- Form Tabular Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-RowHeader-ExtraPrefix",Template:"\x3c!-- TabularTemplateRowHeader-ExtraPrefix --\x3e"},{HashPostfix:"-TabularTemplate-RowHeader-ExtraPostfix",Template:'\x3c!-- TabularTemplateRowHeader-ExtraPostfix --\x3e\n\t\t\t\t\t\t<th style="min-width:100px;"></th>\n'},{HashPostfix:"-TabularTemplate-Row-ExtraPrefix",Template:"\x3c!-- TabularTemplateRow-ExtraPrefix --\x3e"},{HashPostfix:"-TabularTemplate-Row-ExtraPostfix",Template:"\x3c!-- TabularTemplateRow-ExtraPostfix--\x3e\n\t\t\t\t\t<td><a href=\"#/\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].deleteDynamicTableRow({~D:Record.Group~},'{~D:Record.Key~}')\">del</a>\n\t\t\t\t\t<a href=\"#/\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].moveDynamicTableRowUp({~D:Record.Group~},'{~D:Record.Key~}')\">up</a>\n\t\t\t\t\t<a href=\"#/\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].moveDynamicTableRowDown({~D:Record.Group~},'{~D:Record.Key~}')\">down</a></td>\n"},{HashPostfix:"-TabularTemplate-RowHeader-Prefix",Template:"\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n"},{HashPostfix:"-TabularTemplate-HeaderCell",Template:'\n\t\t\t\t\t\t\x3c!-- Descriptor {~D:Record.Name~} [{~D:Record.Hash~}] -> {~D:Record.Address~} --\x3e\n\t\t\t\t\t\t<th data-tabular-column-index="{~D:Record.PictForm.InputIndex~}">{~D:Record.Name~}</th>\n'},{HashPostfix:"-TabularTemplate-RowHeader-Postfix",Template:"\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n"},{HashPostfix:"-TabularTemplate-ExtraHeaderRow-Prefix",Template:'\n\t\t\t\t\t<tr class="pict-tabular-extra-header-row">\n'},{HashPostfix:"-TabularTemplate-ExtraHeaderRow-Postfix",Template:"\n\t\t\t\t\t</tr>\n"},{HashPostfix:"-TabularTemplate-ExtraHeaderCell",Template:'<th colspan="{~D:Record.ColumnSpan~}" class="pict-tabular-extra-header-cell {~D:Record.CSSClass~}">{~D:Record.Label~}</th>'},{HashPostfix:"-TabularTemplate-RowLabel-HeaderCell",Template:'<th class="pict-row-label-header">{~D:Record.Name~}</th>'},{HashPostfix:"-TabularTemplate-RowLabel-Cell",Template:'<td rowspan="{~D:Record.RowSpan~}" class="pict-row-label">{~D:Record.RenderedLabel~}</td>'},{HashPostfix:"-TabularTemplate-RowLabel-Cell-Skipped",Template:""},{HashPostfix:"-TabularTemplate-Row-Prefix",Template:'\n\t\t\t\t\t<tr data-tabular-row-index="{~D:Record.Key~}" data-tabular-group-index="{~D:Record.Group~}">{~T:TabularTemplateRow-ExtraPrefix~}\n'},{HashPostfix:"-TabularTemplate-Cell-Prefix",Template:'\n\t\t\t\t\t\t<td data-tabular-column-index="{~D:Record.PictForm.InputIndex~}">\x3c!-- {~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-Cell-Postfix",Template:"\n\t\t\t\t\t\t</td>\n"},{HashPostfix:"-TabularTemplate-Row-Postfix",Template:"\n\t\t\t\t\t{~T:TabularTemplateRow-ExtraPostfix~}</tr>"},{HashPostfix:"-TabularTemplate-Begin-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input",Template:' value="">'},{HashPostfix:"-TabularTemplate-Mid-Input",Template:" "},{HashPostfix:"-TabularTemplate-InformaryAddress-Input",Template:" data-i-index=\"{~D:Context[2].Key~}\" onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].dataChangedTabular('{~D:Context[2].Group~}', '{~D:Record.PictForm.InputIndex~}', '{~D:Context[2].Key~}')\" "},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-String",Template:' value="">'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-Number",Template:' value="">\n'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-PreciseNumber",Template:'\n\t\t\t\t\t\x3c!-- DataType PreciseNumber {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} id="TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" '},{HashPostfix:"-TabularTemplate-End-Input-DataType-PreciseNumber",Template:' value="">\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-PreciseNumberReadOnly",DefaultInputExtensions:["Pict-Input-PreciseNumber"],Template:'\n\t\t\t\t\t\x3c!-- InputType PreciseNumberReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" id="PRECISE-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.InformaryTabular~}\n'},{HashPostfix:"-TabularTemplate-End-Input-InputType-PreciseNumberReadOnly",Template:'\n\t\t\t\t\t\tvalue="">\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} id="TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~} value="" readonly="readonly">\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-TextArea",Template:"\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<textarea {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} "},{HashPostfix:"-TabularTemplate-End-Input-InputType-TextArea",Template:" ></textarea>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" id="SELECT-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Option",Template:" value=\"\">\n\t\t\t\t\t<select {~D:Record.Macro.ControlAttr~} id=\"SELECT-TABULAR-DROPDOWN-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}\" {~D:Record.Macro.HTMLName~} onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].inputDataRequestTabular('{~D:Context[2].Group~}', '{~D:Record.PictForm.InputIndex~}', '{~D:Context[2].Key~}')\"></select>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Boolean",Template:' value="" />\n'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" id="DATETIME-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-DateTime",Template:' value="">\n\t\t\t\t\t<input {~D:Record.Macro.ControlAttr~} id="DATETIME-TABULAR-INPUT-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~}\n\t\t\t\t\t\tonchange="{~P~}.views[\'{~D:Context[0].Hash~}\'].inputDataRequestTabular(\'{~D:Context[2].Group~}\', \'{~D:Record.PictForm.InputIndex~}\', \'{~D:Context[2].Key~}\')"\n\t\t\t\t\t\ttype="datetime-local" value="" />\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Hidden",Template:"\n\t\t\t\t\t\x3c!-- InputType Hidden {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span\n"},{HashPostfix:"-TabularTemplate-End-Input-InputType-Hidden",Template:"></span>"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Color",Template:'\n\t\t\t\t\t\x3c!-- InputType Color {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="color" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} {~D:Record.Macro.InformaryTabular~}'},{HashPostfix:"-TabularTemplate-End-Input-InputType-Color",Template:" />\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-DisplayOnly",Template:"\n\t\t\t\t\t\x3c!-- InputType DisplayOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <span {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InformaryTabular~}"},{HashPostfix:"-TabularTemplate-End-Input-InputType-DisplayOnly",Template:" ></span>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-ReadOnly",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input readonly type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-ReadOnly",Template:' value="">'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Link",DefaultInputExtensions:["Pict-Input-Link"],Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Link",Template:' value="">\n\t\t\t\t\t<a {~D:Record.Macro.ControlAttr~} id="TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~}>{~D:Record.Name~}</a>'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-TemplatedEntityLookup",Template:'\n\t\t\t\t\t\x3c!-- InputType TemplatedEntityLookup {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-TemplatedEntityLookup",Template:' value="">'}]}},{}],59:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.log}getTriggerGroupConfigurationArray(t){let e=t.PictForm.AutofillTriggerGroup;return e?(Array.isArray(e)||(e=[e]),e):[]}autoFillFromAddressList(t,e,i,n){if(!("TriggerGroupHash"in i)||"string"!=typeof i.TriggerGroupHash)return this.log.warn("AutofillTriggerGroup failed to autofill because a TriggerGroupHash string is not present."),!1;if(!("TriggerAddress"in i)||"string"!=typeof i.TriggerAddress)return this.log.warn("AutofillTriggerGroup failed to autofill because a TriggerAddress string is not present."),!1;let r=this.pict.manifest.getValueByHash(this.pict,i.TriggerAddress);return!(!r&&!i.MarshalEmptyValues)&&(t.setDataByInput(e,r),t.manualMarshalDataToViewByInput(e),!0)}autoFillFromAddressListTabular(t,e,i,n,r){if(!("TriggerGroupHash"in i)||"string"!=typeof i.TriggerGroupHash)return this.log.warn("AutofillTriggerGroup failed to autofill because a TriggerGroupHash string is not present."),!1;if(!("TriggerAddress"in i)||"string"!=typeof i.TriggerAddress)return this.log.warn("AutofillTriggerGroup failed to autofill because a TriggerAddress string is not present."),!1;let o=this.pict.manifest.getValueByHash(this.pict,i.TriggerAddress);return!(!o&&!i.MarshalEmptyValues)&&(t.setDataTabularByHash(e.PictForm.GroupIndex,e.Hash,r,o),t.manualMarshalTabularDataToViewByInput(e,r),!0)}onDataChange(t,e,i,n,r){let o=this.getTriggerGroupConfigurationArray(e);if(Array.isArray(o)&&this.pict.views.PictFormMetacontroller)for(let i=0;i<o.length;i++){const n=o[i];n.TriggerAllInputs&&(Array.isArray(n.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,n.PreSolvers,"AutofillTriggerGroup hash ".concat(n.TriggerGroupHash," pre-trigger")),t.registerOnTransactionCompleteCallback(r,()=>{Array.isArray(n.PostSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,n.PostSolvers,"AutofillTriggerGroup hash ".concat(n.TriggerGroupHash," post-trigger"))}),this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("TriggerGroup:".concat(n.TriggerGroupHash,":DataChange:").concat(e.Hash||e.DataAddress,":").concat(this.pict.getUUID()),r))}return super.onDataChange(t,e,i,n,r)}onDataChangeTabular(t,e,i,n,r,o){let a=this.getTriggerGroupConfigurationArray(e);if(Array.isArray(a)&&this.pict.views.PictFormMetacontroller)for(let i=0;i<a.length;i++){const n=a[i];n.TriggerAllInputs&&(Array.isArray(n.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,n.PreSolvers,"AutofillTriggerGroup hash ".concat(n.TriggerGroupHash," tabular pre-trigger")),t.registerOnTransactionCompleteCallback(o,()=>{Array.isArray(n.PostSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,n.PostSolvers,"AutofillTriggerGroup hash ".concat(n.TriggerGroupHash," tabular post-trigger"))}),this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("TriggerGroup:".concat(n.TriggerGroupHash,":DataChange:").concat(e.Hash||e.DataAddress,":").concat(this.pict.getUUID()),o))}return super.onDataChangeTabular(t,e,i,n,r,o)}onAfterEventCompletion(t,e,i,n,r,o){let a=_slicedToArray(("string"==typeof r?r:"").split(":"),5),s=a[0],c=a[1],l=(a[2],a[3]),p=a[4];p||(p=this.pict.getUUID());let d=e.PictForm.AutofillTriggerGroup;if(!d||"TriggerGroup"!==s||(e.Hash||e.DataAddress)==l)return super.onAfterEventCompletion(t,e,i,n,r,o);Array.isArray(d)||(d=[d]);for(let r=0;r<d.length;r++){let o=d[r];if(o.TriggerGroupHash===c){if(Array.isArray(o.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,o.PreSolvers,"AutofillTriggerGroup hash ".concat(o.TriggerGroupHash," pre-autofill")),"TriggerAddress"in o&&this.autoFillFromAddressList(t,e,o,n),o.SelectOptionsRefresh){let t=this.pict.views[e.PictForm.ViewHash];this.pict.providers.DynamicMetaLists.rebuildListByHash(e.PictForm.SelectOptionsPickList),this.pict.providers["Pict-Input-Select"].refreshSelectList(t,t.getGroup(e.PictForm.GroupIndex),t.getRow(e.PictForm.GroupIndex,e.PictForm.Row),e,i,n),t.manualMarshalDataToViewByInput(e,p)}Array.isArray(o.PostSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,o.PostSolvers,"AutofillTriggerGroup hash ".concat(o.TriggerGroupHash," post-autofill"))}}return super.onAfterEventCompletion(t,e,i,n,r,o)}onAfterEventTabularCompletion(t,e,i,n,r,o,a){let s=_slicedToArray(("string"==typeof o?o:"").split(":"),5),c=s[0],l=s[1],p=(s[2],s[3]),d=s[4];if(d||(d=this.pict.getUUID()),!e.PictForm.AutofillTriggerGroup||"TriggerGroup"!==c||(e.Hash||e.DataAddress)==p)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);let u=e.PictForm.AutofillTriggerGroup;Array.isArray(u)||(u=[u]);for(const o of u)if(o.TriggerGroupHash===l)if(o.SelectOptionsRefresh)if(e.PictForm.SelectOptionsPickList){let t=this.pict.views[e.PictForm.ViewHash];this.pict.providers.DynamicMetaLists.rebuildListByHash(e.PictForm.SelectOptionsPickList),this.pict.providers["Pict-Input-Select"].refreshSelectListTabular(t,t.getGroup(e.PictForm.GroupIndex),t.getRow(e.PictForm.GroupIndex,e.PictForm.Row),e,i,n,r),t.manualMarshalTabularDataToViewByInput(e,r,d)}else;else this.autoFillFromAddressListTabular(t,e,o,n,r);return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],60:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.options.DefaultCoreParsingConfiguration&&Array.isArray(this.options.DefaultCoreParsingConfiguration)||(this.options.DefaultCoreParsingConfiguration={AddressInObject:"",ObjectType:"object",MergeMethod:"Object",Steps:[{InputProperty:!1,Method:"Initialize",Merge:!1},{InputProperty:"PictForm.ChartConfigCorePrototypeRaw",Method:"Raw",Merge:!0},{InputProperty:"PictForm.ChartConfigCorePrototypeAddress",Method:"Address",Merge:!0},{InputProperty:"PictForm.ChartConfigCorePrototype",Method:"SingleSolver",Merge:!0}]}),this.defaultCoreParsingConfiguration=JSON.parse(JSON.stringify(this.options.DefaultCoreParsingConfiguration)),"object"==typeof this.options.DefaultLabelParsingConfiguration&&Array.isArray(this.options.DefaultLabelParsingConfiguration.Steps)||(this.options.DefaultLabelParsingConfiguration={AddressInObject:"data.labels",ObjectType:"array",MergeMethod:"Array",Steps:[{InputProperty:!1,Method:"Initialize",Merge:!1},{InputProperty:"PictForm.ChartLabelsRaw",Method:"Raw",Merge:!1},{InputProperty:"PictForm.ChartLabelsAddress",Method:"Address",Merge:!1},{InputProperty:"PictForm.ChartLabelsSolver",Method:"SingleSolver",Merge:!1}]}),this.defaultLabelParsingConfiguration=JSON.parse(JSON.stringify(this.options.DefaultLabelParsingConfiguration)),"object"==typeof this.options.DefaultDataParsingConfiguration&&Array.isArray(this.options.DefaultDataParsingConfiguration.Steps)||(this.options.DefaultDataParsingConfiguration={AddressInObject:"data.datasets",ObjectType:"array",MergeMethod:"Array",Steps:[{InputProperty:!1,Method:"Initialize",Merge:!1},{InputProperty:"PictForm.ChartDatasetsRaw",Method:"Raw",Merge:!1},{InputProperty:"PictForm.ChartDatasetsAddress",Method:"Address",Merge:!1},{InputProperty:"PictForm.ChartDatasetsSolvers",Method:"ArrayOfSolvers",Merge:!0}]}),this.defaultDataParsingConfiguration=JSON.parse(JSON.stringify(this.options.DefaultDataParsingConfiguration)),this.currentChartObjects={},this.currentChartDataObjects={}}applyInputParsingConfiguration(t,e,i,n){let r=t,o=n,a=e,s=i;if("object"!=typeof t)return!1;if("string"!=typeof n||n.length<1)return!1;if("object"!=typeof s)return!1;"object"!=typeof a&&(a={});let c,l=this.pict.manifest.getValueByHash(r,o);"object"==typeof l&&(s=Object.assign(s,l)),c=s.AddressInObject&&""!=s.AddressInObject?this.pict.manifest.getValueByHash(a,s.AddressInObject):a;for(let e=0;e<s.Steps.length;e++){let i=s.Steps[e];switch(i.Method){case"Initialize":if(s.AddressInObject&&"string"==typeof s.AddressInObject&&s.AddressInObject.length>0){let t=this.pict.manifest.getValueByHash(a,s.AddressInObject);"array"===s.ObjectType?t&&Array.isArray(t)||this.pict.manifest.setValueByHash(a,s.AddressInObject,[]):"object"===s.ObjectType?t&&"object"==typeof t||this.pict.manifest.setValueByHash(a,s.AddressInObject,{}):this.pict.log.warn("Unsupported ObjectType ".concat(s.ObjectType," parsing chart Initialize configuration for input ").concat(r.Macro.RawHTMLID))}break;case"Raw":if(!this.pict.manifest.checkAddressExists(r,i.InputProperty))break;let e=this.pict.manifest.getValueByHash(r,i.InputProperty);if("object"!==typeof e)break;if("array"===s.ObjectType){if(Array.isArray(e))if(i.Merge){Array.isArray(c)||(c=[]);let t=c.concat(e);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e)}else if("object"===s.ObjectType)if(i.Merge)if(s.AddressInObject&&""!=s.AddressInObject)if("object"==typeof c&&null!=c||(c={}),i.Merge){let t=Object.assign(c,e);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);else a=i.Merge?Object.assign(a,e):e;else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);break;case"Address":let n=this.pict.manifest.getValueByHash(r,i.InputProperty);if(!n)break;if("object"!=typeof this.pict.resolveStateFromAddress(n,t))break;if("array"===s.ObjectType){if(Array.isArray(e))if(i.Merge){Array.isArray(c)||(c=[]);let t=c.concat(e);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e)}else if("object"===s.ObjectType)if(i.Merge)if(s.AddressInObject&&""!=s.AddressInObject)if("object"==typeof c&&null!=c||(c={}),i.Merge){let t=Object.assign(c,e);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);else a=i.Merge?Object.assign(a,e):e;else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);break;case"SingleSolver":let o=this.pict.manifest.getValueByHash(r,i.InputProperty);if("string"!=typeof o)break;let l=this.pict.providers.DynamicSolver.runSolver(o,!0);if("array"===s.ObjectType){if(Array.isArray(l))if(i.Merge){Array.isArray(c)||(c=[]);let t=c.concat(l);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,l)}else if("object"===s.ObjectType)if(i.Merge)if(s.AddressInObject&&""!=s.AddressInObject)if("object"==typeof c&&null!=c||(c={}),i.Merge){let t=Object.assign(c,l);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);else a=i.Merge?Object.assign(a,l):l;else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);break;case"ArrayOfSolvers":let p=this.pict.manifest.getValueByHash(r,i.InputProperty);if(!Array.isArray(p))break;for(let t=0;t<p.length;t++){let n=p[t];if("object"!=typeof n)continue;let r=n.Label,o=n.DataSolver,l=this.pict.providers.DynamicSolver.runSolver(o,!0),d={label:r,data:Array.isArray(l)?l:[]};if(n.ChartType&&(d.type=n.ChartType),n.CustomYAxisID&&(d.yAxisID=n.CustomYAxisID),n.CustomXAxisID&&(d.xAxisID=n.CustomXAxisID),n.Tension&&(d.tension=n.Tension),n.PointRadius&&(d.pointRadius=n.PointRadius),n.StackGroup&&(d.stack=n.StackGroup),"array"===s.ObjectType)Array.isArray(l)&&(i.Merge?(Array.isArray(c)||(c=[]),c.push(d),this.pict.manifest.setValueByHash(a,s.AddressInObject,c)):this.pict.manifest.setValueByHash(a,s.AddressInObject,[d]));else if("object"===s.ObjectType)if(i.Merge)if(s.AddressInObject&&""!=s.AddressInObject)if("object"==typeof c&&null!=c||(c={}),i.Merge){let t=Object.assign(c,l);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);else a=i.Merge?Object.assign(a,l):l;else this.pict.manifest.setValueByHash(a,s.AddressInObject,e)}}}}getInputChartConfiguration(t,e,i){if(!("PictForm"in e))return!1;let n=e.PictForm,r="object"==typeof n.ChartJSOptionsCorePrototype?n.ChartJSOptionsCorePrototype:{};return this.applyInputParsingConfiguration(e,r,this.defaultCoreParsingConfiguration,"PictForm.ChartConfigCoreParsingConfigurationOverride"),"type"in r||(r.type="string"==typeof n.ChartType?n.ChartType:"bar"),this.applyInputParsingConfiguration(e,r,this.defaultLabelParsingConfiguration,"PictForm.ChartLabelsParsingConfigurationOverride"),this.applyInputParsingConfiguration(e,r,this.defaultDataParsingConfiguration,"PictForm.ChartDataParsingConfigurationOverride"),r}initializeChartVisualization(t,e,i,n,r,o){let a="#CONFIG-FOR-".concat(n.Macro.RawHTMLID),s=this.getInputChartConfiguration(t,n,r);this.pict.ContentAssignment.assignContent(a,JSON.stringify(s));let c="#CANVAS-FOR-".concat(n.Macro.RawHTMLID),l=this.pict.ContentAssignment.getElement(c);if(!Array.isArray(l)||l.length<1)return this.log.warn("Chart canvas element not found for input ".concat(c)),!1;l=l[0],"function"!=typeof window.Chart?this.log.warn("Chart.js library not loaded for input ".concat(c)):(this.currentChartObjects["Object-For-".concat(n.Macro.RawHTMLID)]=new window.Chart(l,s),this.currentChartDataObjects["Data-For-".concat(n.Macro.RawHTMLID)]=JSON.stringify(s.data))}onInputInitialize(t,e,i,n,r,o,a){return this.initializeChartVisualization(t,e,i,n,r,o),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataChange(t,e,i,n,r){return super.onDataChange(t,e,i,n,r)}onDataChangeTabular(t,e,i,n,r,o){return super.onDataChangeTabular(t,e,i,n,r,o)}onDataMarshalToForm(t,e,i,n,r,o,a){if(this.currentChartObjects["Object-For-".concat(n.Macro.RawHTMLID)]){let e=this.getInputChartConfiguration(t,n,r),i=JSON.stringify(e.data);this.currentChartDataObjects["Data-For-".concat(n.Macro.RawHTMLID)]!==i&&(this.currentChartObjects["Object-For-".concat(n.Macro.RawHTMLID)].data=e.data,this.currentChartObjects["Object-For-".concat(n.Macro.RawHTMLID)].update(),this.currentChartDataObjects["Data-For-".concat(n.Macro.RawHTMLID)]=i)}else this.initializeChartVisualization(t,e,i,n,r,o);return super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}onDataRequest(t,e,i,n){return super.onDataRequest(t,e,i,n)}onDataRequestTabular(t,e,i,n,r){return super.onDataRequestTabular(t,e,i,n,r)}}},{"../Pict-Provider-InputExtension.js":52}],61:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.log}getDateTimeInputHTMLID(t){return"#DATETIME-INPUT-FOR-".concat(t)}getTabularDateTimeHiddenInputHTMLID(t,e){return"#DATETIME-TABULAR-DATA-".concat(t,"-").concat(e)}getTabularDateTimeInputHTMLID(t,e){return"#DATETIME-TABULAR-INPUT-".concat(t,"-").concat(e)}onDataMarshalToForm(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getDateTimeInputHTMLID(n.Macro.RawHTMLID),r),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getTabularDateTimeInputHTMLID(i.Macro.RawHTMLID,o),n),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}onDataRequest(t,e,i,n){let r;try{r=this.pict.ContentAssignment.readContent(this.getDateTimeInputHTMLID(e.Macro.RawHTMLID)),this.pict.ContentAssignment.assignContent(n,r),t.dataChanged(e.Hash)}catch(t){this.log.error("The value [".concat(r,"] is not a valid date; skipping parsing for [#").concat(e.Macro.RawHTMLID,"]."))}return super.onDataRequest(t,e,i,n)}onDataRequestTabular(t,e,i,n,r){let o;try{o=this.pict.ContentAssignment.readContent(this.getTabularDateTimeInputHTMLID(e.Macro.RawHTMLID,r)),this.pict.ContentAssignment.assignContent(this.getTabularDateTimeHiddenInputHTMLID(e.Macro.RawHTMLID,r),o),t.dataChangedTabular(e.PictForm.GroupIndex,e.PictForm.InputIndex,r)}catch(t){this.log.error("The value [".concat(o,"] is not a valid date; skipping parsing for [#").concat(e.Macro.RawHTMLID,"]."))}return super.onDataRequestTabular(t,e,i,n,r)}}},{"../Pict-Provider-InputExtension.js":52}],62:[function(t,e,i){e.exports="\n.pict-section-form-diagram\n{\n\tdisplay: block;\n\twidth: 100%;\n\tmin-height: 120px;\n\tborder: 1px solid var(--theme-color-border-primary, #D4C4A8);\n\tborder-radius: 4px;\n\tbackground: var(--theme-color-background-primary, #FFFFFF);\n\tcolor: var(--theme-color-text-primary, #2A2520);\n\tbox-sizing: border-box;\n\tposition: relative;\n}\n\n.pict-section-form-diagram-view\n{\n\tpadding: 12px;\n\tmin-height: 96px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow: auto;\n}\n\n.pict-section-form-diagram-view.is-empty\n{\n\tcolor: var(--theme-color-text-muted, #8A7F72);\n\tfont-style: italic;\n\tfont-size: 0.9rem;\n}\n\n.pict-section-form-diagram-view svg\n{\n\tdisplay: block;\n\tmax-width: 100%;\n\theight: auto;\n}\n\n.pict-section-form-diagram-edit\n{\n\tpadding: 0;\n\tmin-height: 420px;\n\tdisplay: flex;\n}\n\n/* The Excalidraw view brings its own chrome inside the slot. Force the wrap\n * and the Excalidraw root to fill so the canvas doesn't collapse to 0\n * height inside the form slot. */\n.pict-section-form-diagram-edit > .pict-excalidraw-wrap,\n.pict-section-form-diagram-edit > .pict-excalidraw-wrap > .pict-excalidraw-mount\n{\n\tflex: 1 1 auto;\n\tmin-height: 420px;\n}\n\n.pict-section-form-diagram-edit .excalidraw\n{\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 420px;\n}\n\n.pict-section-form-diagram-toggle\n{\n\tposition: absolute;\n\ttop: 6px;\n\tright: 6px;\n\tz-index: 2;\n\tpadding: 3px 9px;\n\tfont-size: 0.72rem;\n\tfont-weight: 600;\n\tcolor: var(--theme-color-text-secondary, #5A4A3C);\n\tbackground: var(--theme-color-background-tertiary, #F4EEE2);\n\tborder: 1px solid var(--theme-color-border-secondary, #D4C4A8);\n\tborder-radius: 3px;\n\tcursor: pointer;\n\tuser-select: none;\n}\n\n.pict-section-form-diagram-toggle:hover\n{\n\tcolor: var(--theme-color-text-primary, #2A2520);\n\tbackground: var(--theme-color-background-primary, #FFFFFF);\n\tborder-color: var(--theme-color-accent, #2E7D74);\n}\n\n.pict-section-form-diagram.mode-edit .pict-section-form-diagram-toggle::after { content: 'Done'; }\n.pict-section-form-diagram.mode-view .pict-section-form-diagram-toggle::after { content: 'Edit'; }\n"},{}],63:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js"),r=t("pict-section-excalidraw"),o=t("./Pict-Provider-Input-Diagram-CSS.js"),a=t("./util/Themeify-SVG.js"),s={ProviderIdentifier:"Pict-Input-Diagram",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(s)),e),i),this.pict,this.log,this._instances={},this.pict&&this.pict.CSSMap&&"function"==typeof this.pict.CSSMap.addCSS&&this.pict.CSSMap.addCSS("Pict-Input-Diagram-CSS",o,500)}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}_resolveValue(t,e){return"string"==typeof e&&e.length>0?e:t&&t.Content&&"string"==typeof t.Content?t.Content:t&&t.Default&&"string"==typeof t.Default?t.Default:""}_isLikelySvg(t){return"string"==typeof t&&/<svg[\s>]/i.test(t)}_assignSlotContent(t,e){return!(!this.pict||!this.pict.ContentAssignment||"function"!=typeof this.pict.ContentAssignment.assignContent)&&(this.pict.ContentAssignment.assignContent(t,e),!0)}_writeHiddenInputValue(t,e){let i="undefined"!=typeof document?document.getElementById(t):null;if(!i)return!1;i.value=null==e?"":String(e);try{i.dispatchEvent(new Event("change",{bubbles:!0}))}catch(t){}return!0}_resolveVendor(){return"undefined"==typeof window?null:window.PictSectionExcalidrawVendor||null}_buildViewHTML(t){return this._isLikelySvg(t)?'<div class="pict-section-form-diagram-view">'.concat(t,"</div>"):'<div class="pict-section-form-diagram-view is-empty">(empty diagram)</div>'}_setSlotModeClass(t,e){if("undefined"==typeof document)return;let i=t.Macro.RawHTMLID,n=document.getElementById(i)||document.querySelector(this.getContentDisplayHTMLID(i));n&&n.classList&&(n.classList.remove("mode-edit","mode-view","pict-section-form-diagram-edit"),"edit"===e?n.classList.add("mode-edit","pict-section-form-diagram-edit"):n.classList.add("mode-view"))}_mountView(t,e,i){let n=e.Macro.RawHTMLID,r=this.getContentDisplayHTMLID(n),o=this._resolveValue(e,i);this._assignSlotContent(r,this._buildViewHTML(o)),this._setSlotModeClass(e,"view");let a=this._instances[e.Hash]||{};a.mode="view",a.slotID=r,a.lastValue=o,a.input=e,a.viewInstance=null,this._instances[e.Hash]=a}_extractSceneFromSvg(t,e){if(!this._isLikelySvg(t))return e(null,null);let i=this._resolveVendor();if(!i||!i.loadFromBlob)return this.log&&this.log.warn("[Pict-Input-Diagram] vendor.loadFromBlob unavailable — falling back to empty scene"),e(null,null);try{let n=new window.Blob([t],{type:"image/svg+xml"}),r=i.loadFromBlob(n,null,null);Promise.resolve(r).then(t=>{e(null,t||null)},t=>{e(t,null)})}catch(t){e(t,null)}}_buildEditorOptions(t,e,i){let n=t.PictForm&&t.PictForm.Diagram||{},r=n.EditorOptions||{},o=t.Macro.RawHTMLID;this.pict.AppData._PictInputDiagram||(this.pict.AppData._PictInputDiagram={}),this.pict.AppData._PictInputDiagram[t.Hash]||(this.pict.AppData._PictInputDiagram[t.Hash]={Scene:null});let a="AppData._PictInputDiagram.".concat(t.Hash,".Scene");return Object.assign({},r,{ViewIdentifier:"Pict-Input-Diagram-Editor-".concat(t.Hash),TargetElementAddress:this.getContentDisplayHTMLID(o),DrawingDataAddress:a,EditorImplementation:n.EditorImplementation||"react"})}_mountEdit(t,e,i,n){let o=e.Macro.RawHTMLID,s=this.getContentDisplayHTMLID(o),c=this._resolveValue(e,i),l=this._instances[e.Hash]||{};l.input=e;let p=!1!==(e.PictForm&&e.PictForm.Diagram||{}).ThemeColors;this._assignSlotContent(s,""),this._extractSceneFromSvg(c,(t,i)=>{let d=this._buildEditorOptions(e,c,l),u=d.ViewIdentifier,h=this;i&&this.pict.AppData._PictInputDiagram&&this.pict.AppData._PictInputDiagram[e.Hash]&&(this.pict.AppData._PictInputDiagram[e.Hash].Scene={elements:i.elements||[],appState:i.appState||{},files:i.files||{}}),d.OnChange=(t,i)=>{try{let i=t.exportSvg({exportEmbedScene:!0,exportBackground:!1});Promise.resolve(i).then(t=>{let i=t&&"string"==typeof t.outerHTML?t.outerHTML:"string"==typeof t?t:null;if(!i)return;p&&(i=a.themeifySVG(i)),h._writeHiddenInputValue(o,i);let n=h._instances[e.Hash];n&&(n.lastValue=i)},t=>{h.log&&h.log.warn("[Pict-Input-Diagram] exportSvg failed in OnChange",{error:t.message,inputHash:e.Hash})})}catch(t){h.log&&h.log.warn("[Pict-Input-Diagram] OnChange handler threw",{error:t.message,inputHash:e.Hash})}},this.pict.addView(u,d,r);let m=this.pict.views[u];if(!m){let t=new Error("Failed to instantiate Diagram editor view "+u);return this.log&&this.log.error("[Pict-Input-Diagram] addView returned nothing",{viewHash:u}),void("function"==typeof n&&n(t))}this._setSlotModeClass(e,"edit"),l.mode="edit",l.slotID=s,l.lastValue=c,l.viewInstance=m,l.viewHash=u,l.themeColors=p,this._instances[e.Hash]=l;try{let t=m.render();t&&"function"==typeof t.then?t.then(()=>{"function"==typeof n&&n(null)},t=>{"function"==typeof n&&n(t)}):"function"==typeof n&&n(null)}catch(t){this.log&&this.log.error("[Pict-Input-Diagram] editor.render threw",{error:t.message}),"function"==typeof n&&n(t)}})}_destroyEdit(t){let e=this._instances[t.Hash];if(!e||!e.viewInstance)return;let i=e.viewInstance;try{"function"==typeof i.destroy&&i.destroy()}catch(t){this.log&&this.log.warn("[Pict-Input-Diagram] editor.destroy threw",{error:t.message})}if(this.pict.AppData._PictInputDiagram&&this.pict.AppData._PictInputDiagram[t.Hash]&&delete this.pict.AppData._PictInputDiagram[t.Hash],e.viewHash&&this.pict.views&&this.pict.views[e.viewHash])try{delete this.pict.views[e.viewHash]}catch(t){}e.viewInstance=null,e.viewHash=null}getMode(t){let e=this._instances[t];return e?e.mode:null}setMode(t,e,i){let n=this._instances[t];if(!n){let e=new Error("Cannot setMode — input is not mounted: "+t);return void("function"==typeof i&&i(e))}if("edit"!==e&&"view"!==e){let t=new Error('setMode: unknown mode "'+e+'" (use "edit" or "view")');return void("function"==typeof i&&i(t))}n.mode!==e?"edit"!==e?(this._destroyEdit(n.input),this._mountView(null,n.input,n.lastValue),"function"==typeof i&&i(null)):this._mountEdit(null,n.input,n.lastValue,i):"function"==typeof i&&i(null)}toggleMode(t,e){let i="edit"===this.getMode(t)?"view":"edit";this.setMode(t,i,e)}commit(t,e){let i=this._instances[t];if(!i||"edit"!==i.mode||!i.viewInstance)return void("function"==typeof e&&e(null));let n=!1!==i.themeColors,r=this,o=i.input.Macro.RawHTMLID;try{let t=i.viewInstance.exportSvg({exportEmbedScene:!0,exportBackground:!1});Promise.resolve(t).then(t=>{let s=t&&"string"==typeof t.outerHTML?t.outerHTML:null;s&&(n&&(s=a.themeifySVG(s)),r._writeHiddenInputValue(o,s),i.lastValue=s),"function"==typeof e&&e(null)},t=>{"function"==typeof e&&e(t)})}catch(t){"function"==typeof e&&e(t)}}onInputInitialize(t,e,i,n,r,o,a){return this._mountView(t,n,r),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){let s=new Error("Diagram InputType is not supported inside Tabular rows in Phase 1.");throw this.log&&this.log.warn("[Pict-Input-Diagram] tabular not supported",{inputHash:i&&i.Hash}),s}onDataMarshalToForm(t,e,i,n,r,o,a){let s=this._instances[n.Hash];return s?"view"===s.mode?this._mountView(t,n,r):(s.lastValue="string"==typeof r?r:s.lastValue,this._extractSceneFromSvg(s.lastValue,(t,e)=>{if(!t&&e&&s.viewInstance&&"function"==typeof s.viewInstance.setScene)try{s.viewInstance.setScene(e)}catch(t){this.log&&this.log.warn("[Pict-Input-Diagram] setScene threw after marshal",{error:t.message})}})):this._mountView(t,n,r),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}},e.exports.default_configuration=s},{"../Pict-Provider-InputExtension.js":52,"./Pict-Provider-Input-Diagram-CSS.js":62,"./util/Themeify-SVG.js":77,"pict-section-excalidraw":19}],64:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.fable,this.log}gatherEntitySet(t,e,i,n,r){if(!("Entity"in e)||"string"!=typeof e.Entity)return this.log.warn("EntityBundleRequest failed to parse entity request because the entity stanza did not contain an Entity string."),t();if(!("Filter"in e)||"string"!=typeof e.Filter)return this.log.warn("EntityBundleRequest failed to parse entity request because the entity stanza did not contain a Filter string."),t();if(!("Destination"in e)||"string"!=typeof e.Destination)return this.log.warn("EntityBundleRequest failed to parse entity request because the entity stanza did not contain a Destination string."),t();const o={Value:r,Input:n,View:i};let a=null,s=null;e.RecordCount&&(a=null!=e.RecordStartCursor?e.RecordStartCursor:0,s=null!=e.RecordCount?e.RecordCount:null);const c=this.pict.parseTemplate(e.Filter,o);""==c&&this.log.warn("EntityBundleRequest failed to parse entity request because the entity Filter did not return a string for FilterBy");const l=(i,n)=>i?(this.log.error("EntityBundleRequest request Error getting entity set for [".concat(e.Entity,"] with filter [").concat(c,"]: ").concat(i),i),t(i,"")):(this.log.trace("EntityBundleRequest found ".concat(n.length," records for ").concat(e.Entity," filtered to [").concat(c,"]")),e.SingleRecord?(n.length>1&&this.log.warn("EntityBundleRequest found more than one record for ".concat(e.Entity," filtered to [").concat(c,"] but SingleRecord is true; setting the first record.")),n.length<1&&this.pict.manifest.setValueByHash(this.pict,e.Destination,!1),this.pict.manifest.setValueByHash(this.pict,e.Destination,n[0])):this.pict.manifest.setValueByHash(this.pict,e.Destination,n),t());s?this.pict.EntityProvider.getEntitySetPage(e.Entity,c,a,s,l):this.pict.EntityProvider.getEntitySet(e.Entity,c,l)}gatherCustomDataSet(t,e,i,n,r){if(!("URL"in e)||"string"!=typeof e.URL)return this.log.warn("EntityBundleRequest failed to parse custom data request because the stanza did not contain a URL string."),t();const o={Value:r,Input:n,View:i},a=this.pict.parseTemplate(e.URL,o);""==a&&this.log.warn("EntityBundleRequest failed to parse custom data request because the entity Filter did not return a string for FilterBy");let s="";const c=!!e.Host&&e.Host,l=e.Protocol?e.Protocol:"https",p=!!e.Port&&e.Port;c?(s="".concat(l,"://").concat(c),p&&(s+=":".concat(p))):s=this.pict.EntityProvider.options.urlPrefix;let d={url:"".concat(s).concat(a)};return d=this.pict.EntityProvider.prepareRequestOptions(d),this.pict.EntityProvider.restClient.getJSON(d,(i,n,r)=>i?(this.log.error("EntityBundleRequest request Error getting data set for [".concat(e.Entity,"] with filter [").concat(a,"]: ").concat(i),i),t(i,"")):(this.log.trace("EntityBundleRequest completed request for ".concat(e.Entity," filtered to [").concat(a,"]")),e.Destination&&this.pict.manifest.setValueByHash(this.pict,e.Destination,r),t()))}async gatherDataFromServer(t,e,i,n,r){if("object"!=typeof e||!("PictForm"in e)||!("EntitiesBundle"in e.PictForm)||!Array.isArray(e.PictForm.EntitiesBundle))return this.log.warn("Input at ".concat(n," is set as an EntityBundleRequest input but no array of entity requests was found")),null;const o="BundleLoad-".concat(this.pict.getUUID());r&&t.registerEventTransactionAsyncOperation(r,o);let a=e,s=i,c=this.fable.newAnticipate();if(a.PictForm.EntitiesBundle.length>0&&a.PictForm.EntitiesBundle[0].PictMode)c.anticipate(t=>{this.pict.EntityProvider.gatherDataFromServer(a.PictForm.EntitiesBundle,e=>{setTimeout(()=>t(e),0)})});else{const e=[];let i={Value:s,Input:a,View:t};for(let n=0;n<a.PictForm.EntitiesBundle.length;n++){let r=a.PictForm.EntitiesBundle[n];c.anticipate(n=>{try{switch(r.Type){case"Custom":return this.gatherCustomDataSet(n,r,t,a,s);case"SetStateAddress":e.push(i),i=this.fable.manifest.getValueByHash(this.fable,r.StateAddress),void 0===i&&(i={},this.fable.manifest.setValueByHash(this.fable,r.StateAddress,i));break;case"PopState":e.length>0?i=e.pop():this.log.warn("EntityBundleRequest encountered a PopState without a matching SetStateAddress.");break;case"MapJoin":this.pict.EntityProvider.mapJoin(r,this.pict.EntityProvider.prepareState(i,r));break;case"ProjectDataset":this.pict.EntityProvider.projectDataset(r,this.pict.EntityProvider.prepareState(i,r));break;default:return this.gatherEntitySet(n,r,t,a,s)}}catch(t){this.log.error("EntityBundleRequest error gathering entity set: ".concat(t),t)}return n()})}c.anticipate(t=>setTimeout(t,0))}return c.anticipate(i=>{if(a.PictForm.EntityBundleTriggerGroup&&this.pict.views.PictFormMetacontroller){const i=this.getTriggerGroupConfigurationArray(a,a.PictForm.EntityBundleTriggerGroup)[0];let n;i&&Array.isArray(i.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,i.PreSolvers,"EntityBundleTriggerGroup hash ".concat(i.TriggerGroupHash," pre-trigger")),i&&Array.isArray(i.PostSolvers)&&(n=r||this.pict.getUUID(),n!==r&&this.pict.TransactionTracking.registerTransaction(n),t.registerOnTransactionCompleteCallback(n,()=>{Array.isArray(i.PostSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,i.PostSolvers,"EntityBundleTriggerGroup hash ".concat(i.TriggerGroupHash," tabular post-trigger"))})),this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("TriggerGroup:".concat(a.PictForm.EntityBundleTriggerGroup,":BundleLoad:").concat(e.Hash||e.DataAddress,":").concat(this.pict.getUUID()),r),n&&n!==r&&t.finalizeTransaction(n)}a.PictForm.EntityBundleTriggerMetacontrollerSolve&&this.pict.views.PictFormMetacontroller&&this.pict.views.PictFormMetacontroller.solve(),a.PictForm.EntityBundleTriggerMetacontrollerRender&&this.pict.views.PictFormMetacontroller&&this.pict.views.PictFormMetacontroller.render(),i()}),new Promise((e,i)=>{c.wait(i=>(i&&this.log.error("EntityBundleRequest error gathering entity set: ".concat(i),i),r&&t.eventTransactionAsyncOperationComplete(r,o),e(i)))})}getTriggerGroupConfigurationArray(t,e){let i=t.PictForm.AutofillTriggerGroup;return i?(Array.isArray(i)||(i=[i]),null==e?i:i.filter(t=>t.TriggerGroupHash===e)):[]}onInputInitialize(t,e,i,n,r,o,a){return n.PictForm&&(r||n.PictForm.EntityBundleTriggerWithoutValue)&&n.PictForm.EntityBundleTriggerOnInitialize&&this.gatherDataFromServer(t,n,r,o,a),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return this.log.error("EntityBundleRequest for input [".concat(i.Hash,"] Tabular support is intentionally not supported.")),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataChange(t,e,i,n,r){return e.PictForm&&(i||e.PictForm.EntityBundleTriggerWithoutValue)&&!1!==e.PictForm.EntityBundleTriggerOnDataChange&&this.gatherDataFromServer(t,e,i,n,r),super.onDataChange(t,e,i,n,r)}onAfterEventCompletion(t,e,i,n,r,o){const a=_slicedToArray(("string"==typeof r?r:"").split(":"),2),s=a[0],c=a[1];return"TriggerGroup"===s&&c&&e.PictForm.TriggerGroupHash===c?(this.gatherDataFromServer(t,e,i,n,o),super.onAfterEventCompletion(t,e,i,n,r,o)):super.onAfterEventCompletion(t,e,i,n,r,o)}}},{"../Pict-Provider-InputExtension.js":52}],65:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}getInputContent(t,e){let i=null;return e&&"string"==typeof e&&(i=e),t.Content&&"string"==typeof t.Content&&(i=t.Content),t.Default&&"string"==typeof t.Default&&(i=t.Default),i}onInputInitialize(t,e,i,n,r,o,a){let s=this.getInputContent(n,r);return s&&this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),s),super.onInputInitialize(t,e,i,n,s,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){let s=this.getInputContent(i,n);return s&&this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),s),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataMarshalToForm(t,e,i,n,r,o,a){let s=this.getInputContent(n,r);return s&&this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),s),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){let s=this.getInputContent(i,n);return s&&this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),s),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],66:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}onDataMarshalToForm(t,e,i,n,r,o,a){return this.pict.ContentAssignment.setAttribute(this.getInputHTMLID(n.Macro.RawHTMLID),"href",r),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return this.pict.ContentAssignment.setAttribute(this.getTabularInputHTMLID(i.Macro.RawHTMLID,o),"href",n),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],67:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js"),r=t("marked");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}getInputContent(t,e){let i=null;return e&&"string"==typeof e&&(i=e),t.Content&&"string"==typeof t.Content&&(i=t.Content),t.Default&&"string"==typeof t.Default&&(i=t.Default),i&&(i=r.parse(i)),i}onInputInitialize(t,e,i,n,r,o,a){let s=this.getInputContent(n,r);return s&&this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),s),super.onInputInitialize(t,e,i,n,s,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){let s=this.getInputContent(i,n);return s&&this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),s),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataMarshalToForm(t,e,i,n,r,o,a){let s=this.getInputContent(n,r);return s&&this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),s),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){let s=this.getInputContent(i,n);return s&&this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),s),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52,marked:4}],68:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}roundValue(t,e){let i=e;if("DecimalPrecision"in t.PictForm){let e=this.fable.Math.roundHalfUp;if("RoundingMethod"in t.PictForm)try{e=parseInt(t.PictForm.RoundingMethod)}catch(e){this.log.error("Error parsing rounding method onDataMarshalToForm for input ".concat(t.Hash),e)}i=this.fable.Math.toFixedPrecise(i,t.PictForm.DecimalPrecision,e)}return"AddCommas"in t.PictForm&&t.PictForm.AddCommas&&(i=this.fable.DataFormat.formatterAddCommasToNumber(i)),"DigitsPrefix"in t.PictForm&&(i=t.PictForm.DigitsPrefix+i),"DigitsPostfix"in t.PictForm&&(i+=t.PictForm.DigitsPostfix),i}onDataMarshalToForm(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getInputHTMLID(n.Macro.RawHTMLID),this.roundValue(n,r)),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent("#PRECISE-"+this.getTabularInputHTMLID(i.Macro.RawHTMLID,o).substring(1),n),this.pict.ContentAssignment.assignContent(this.getTabularInputHTMLID(i.Macro.RawHTMLID,o),this.roundValue(i,n)),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],69:[function(t,e,i){e.exports="\n.pict-section-form-richtext\n{\n\tdisplay: block;\n\twidth: 100%;\n\tmin-height: 64px;\n\tborder: 1px solid var(--theme-color-border-primary, #D4C4A8);\n\tborder-radius: 4px;\n\tbackground: var(--theme-color-background-primary, #FFFFFF);\n\tcolor: var(--theme-color-text-primary, #2A2520);\n\tfont-family: var(--theme-font-body, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);\n\tfont-size: 0.95rem;\n\tline-height: 1.55;\n\tbox-sizing: border-box;\n}\n\n.pict-section-form-richtext-view\n{\n\tpadding: 10px 14px;\n\tmin-height: 48px;\n}\n\n.pict-section-form-richtext-view.is-empty\n{\n\tcolor: var(--theme-color-text-muted, #8A7F72);\n\tfont-style: italic;\n}\n\n.pict-section-form-richtext-view :first-child { margin-top: 0; }\n.pict-section-form-richtext-view :last-child { margin-bottom: 0; }\n\n.pict-section-form-richtext-view h1,\n.pict-section-form-richtext-view h2,\n.pict-section-form-richtext-view h3,\n.pict-section-form-richtext-view h4\n{\n\tcolor: var(--theme-color-text-heading, var(--theme-color-text-primary, #2A2520));\n\tmargin: 0.6em 0 0.3em 0;\n\tline-height: 1.25;\n}\n\n.pict-section-form-richtext-view code\n{\n\tfont-family: var(--theme-font-mono, 'SFMono-Regular', Menlo, monospace);\n\tfont-size: 0.9em;\n\tpadding: 1px 5px;\n\tbackground: var(--theme-color-background-tertiary, #F4EEE2);\n\tborder-radius: 3px;\n}\n\n.pict-section-form-richtext-view pre\n{\n\tfont-family: var(--theme-font-mono, 'SFMono-Regular', Menlo, monospace);\n\tbackground: var(--theme-color-background-tertiary, #F4EEE2);\n\tpadding: 10px 12px;\n\tborder-radius: 4px;\n\toverflow: auto;\n}\n\n.pict-section-form-richtext-view blockquote\n{\n\tmargin: 0.5em 0;\n\tpadding: 4px 12px;\n\tborder-left: 3px solid var(--theme-color-accent, #2E7D74);\n\tcolor: var(--theme-color-text-secondary, #5A4A3C);\n\tbackground: var(--theme-color-background-secondary, #FBF7EE);\n}\n\n.pict-section-form-richtext-view img\n{\n\tmax-width: 100%;\n\theight: auto;\n\tborder-radius: 3px;\n}\n\n.pict-section-form-richtext-edit\n{\n\tpadding: 0;\n\tmin-height: 220px;\n}\n\n/*\n * The editor (pict-section-markdowneditor) brings its own chrome inside the\n * slot. We just provide a container border + sane min-height; CodeMirror takes\n * over from there.\n */\n\n/* Optional mode-toggle affordance — render inside the slot from the host UI\n * via _Pict.providers['Pict-Input-RichText'].toggleMode('<hash>'). The chip is\n * absolutely positioned in the top-right corner so it doesn't take a column\n * from the form layout. */\n.pict-section-form-richtext { position: relative; }\n\n.pict-section-form-richtext-toggle\n{\n\tposition: absolute;\n\ttop: 6px;\n\tright: 6px;\n\tz-index: 2;\n\tpadding: 3px 9px;\n\tfont-size: 0.72rem;\n\tfont-weight: 600;\n\tcolor: var(--theme-color-text-secondary, #5A4A3C);\n\tbackground: var(--theme-color-background-tertiary, #F4EEE2);\n\tborder: 1px solid var(--theme-color-border-secondary, #D4C4A8);\n\tborder-radius: 3px;\n\tcursor: pointer;\n\tuser-select: none;\n}\n\n.pict-section-form-richtext-toggle:hover\n{\n\tcolor: var(--theme-color-text-primary, #2A2520);\n\tbackground: var(--theme-color-background-primary, #FFFFFF);\n\tborder-color: var(--theme-color-accent, #2E7D74);\n}\n\n.pict-section-form-richtext.mode-edit .pict-section-form-richtext-toggle::after { content: 'Done'; }\n.pict-section-form-richtext.mode-view .pict-section-form-richtext-toggle::after { content: 'Edit'; }\n"},{}],70:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js"),r=t("marked"),o=t("pict-section-markdowneditor"),a=t("./Pict-Provider-Input-RichText-CSS.js"),s={ProviderIdentifier:"Pict-Input-RichText",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(s)),e),i),this.pict,this.log,this._instances={},this.pict&&this.pict.CSSMap&&"function"==typeof this.pict.CSSMap.addCSS&&this.pict.CSSMap.addCSS("Pict-Input-RichText-CSS",a,500)}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}_resolveContent(t,e){return"string"==typeof e&&e.length>0?e:t&&t.Content&&"string"==typeof t.Content?t.Content:t&&t.Default&&"string"==typeof t.Default?t.Default:""}_renderMarkdown(t){try{return r.parse(t||"")}catch(e){this.log&&this.log.warn("[Pict-Input-RichText] marked.parse failed",{error:e.message});let i=String(t||"").replace(/[&<>"]/g,t=>({"&":"&","<":"<",">":">",'"':"""}[t]));return"<pre>".concat(i,"</pre>")}}_writeHiddenInputValue(t,e){let i="undefined"!=typeof document?document.getElementById(t):null;if(!i)return!1;i.value=null==e?"":String(e);try{i.dispatchEvent(new Event("change",{bubbles:!0}))}catch(t){}return!0}_assignSlotContent(t,e){return!(!this.pict||!this.pict.ContentAssignment||"function"!=typeof this.pict.ContentAssignment.assignContent)&&(this.pict.ContentAssignment.assignContent(t,e),!0)}_mountView(t,e,i){let n,r=e.Macro.RawHTMLID,o=this.getContentDisplayHTMLID(r),a=this._resolveContent(e,i);if(n=a&&a.length>0?'<div class="pict-section-form-richtext-view">'.concat(this._renderMarkdown(a),"</div>"):'<div class="pict-section-form-richtext-view is-empty">(empty)</div>',this._assignSlotContent(o,n),"undefined"!=typeof document){let t=document.getElementById(r+"-CONTAINER")||document.querySelector(o);t&&t.classList&&(t.classList.remove("mode-edit"),t.classList.add("mode-view"))}let s=this._instances[e.Hash]||{};s.mode="view",s.slotID=o,s.lastValue=a,s.input=e,s.viewInstance=null,this._instances[e.Hash]=s}_buildEditorOptions(t,e,i){let n=(t.PictForm&&t.PictForm.RichText||{}).EditorOptions||{},r=t.Macro.RawHTMLID,o="AppData._PictInputRichText.".concat(t.Hash,".Segments");return this.pict.AppData._PictInputRichText||(this.pict.AppData._PictInputRichText={}),this.pict.AppData._PictInputRichText[t.Hash]={Segments:[{Content:e||""}]},Object.assign({},n,{ViewIdentifier:"Pict-Input-RichText-Editor-".concat(t.Hash),TargetElementAddress:this.getContentDisplayHTMLID(r),ContentDataAddress:o,ReadOnly:!1})}_mountEdit(t,e,i,n){let r=e.Macro.RawHTMLID,a=this.getContentDisplayHTMLID(r),s=this._resolveContent(e,i),c=this._instances[e.Hash]||{};c.input=e,this._assignSlotContent(a,"");let l=this._buildEditorOptions(e,s,c),p=l.ViewIdentifier,d=e.PictForm&&e.PictForm.RichText||{},u=this;this.pict.addView(p,l,class extends o{constructor(t,e,i){super(t,e,i)}onContentChange(t,i){try{u._writeHiddenInputValue(r,i);let t=u._instances[e.Hash];t&&(t.lastValue=i)}catch(t){u.log&&u.log.warn("[Pict-Input-RichText] onContentChange handler failed",{error:t.message,inputHash:e.Hash})}super.onContentChange&&super.onContentChange(t,i)}onImageUpload(t,i,n){if(!d.AllowImages)return u.log&&u.log.info("[Pict-Input-RichText] image upload rejected (AllowImages=false)",{inputHash:e.Hash,fileName:t&&t.name}),n("Image uploads are disabled for this field."),!0;let r=d.ImageUploader;if(r&&u.pict&&u.pict.PictApplication&&"function"==typeof u.pict.PictApplication[r])try{return u.pict.PictApplication[r](t,e,n)}catch(t){return u.log&&u.log.warn("[Pict-Input-RichText] ImageUploader threw",{error:t.message,inputHash:e.Hash}),n(t.message),!0}return!1}customConfigureExtensions(t,e){if(!1!==d.WordWrap){let e=this._codeMirrorModules;e&&e.EditorView&&e.EditorView.lineWrapping&&t.push(e.EditorView.lineWrapping)}return t}});let h=this.pict.views[p];if(!h){let t=new Error("Failed to instantiate RichText editor view "+p);return this.log&&this.log.error("[Pict-Input-RichText] addView returned nothing",{viewHash:p}),void("function"==typeof n&&n(t))}if("undefined"!=typeof document){let t=document.querySelector(a);t&&t.classList&&(t.classList.remove("mode-view"),t.classList.add("mode-edit","pict-section-form-richtext-edit"))}c.mode="edit",c.slotID=a,c.lastValue=s,c.viewInstance=h,c.viewHash=p,this._instances[e.Hash]=c;try{let t=h.render();t&&"function"==typeof t.then?t.then(()=>{"function"==typeof n&&n(null)},t=>{"function"==typeof n&&n(t)}):"function"==typeof n&&n(null)}catch(t){this.log&&this.log.error("[Pict-Input-RichText] editor.render threw",{error:t.message}),"function"==typeof n&&n(t)}}_destroyEdit(t){let e=this._instances[t.Hash];if(!e||!e.viewInstance)return;let i=e.viewInstance;try{"function"==typeof i.destroy&&i.destroy()}catch(t){this.log&&this.log.warn("[Pict-Input-RichText] editor.destroy threw",{error:t.message})}if(this.pict.AppData._PictInputRichText&&this.pict.AppData._PictInputRichText[t.Hash]&&delete this.pict.AppData._PictInputRichText[t.Hash],e.viewHash&&this.pict.views&&this.pict.views[e.viewHash])try{delete this.pict.views[e.viewHash]}catch(t){}e.viewInstance=null,e.viewHash=null}getMode(t){let e=this._instances[t];return e?e.mode:null}setMode(t,e,i){let n=this._instances[t];if(!n){let e=new Error("Cannot setMode — input is not mounted: "+t);return void("function"==typeof i&&i(e))}if("edit"!==e&&"view"!==e){let t=new Error('setMode: unknown mode "'+e+'" (use "edit" or "view")');return void("function"==typeof i&&i(t))}n.mode!==e?"edit"!==e?(this._destroyEdit(n.input),this._mountView(null,n.input,n.lastValue),"function"==typeof i&&i(null)):this._mountEdit(null,n.input,n.lastValue,i):"function"==typeof i&&i(null)}toggleMode(t,e){let i="edit"===this.getMode(t)?"view":"edit";this.setMode(t,i,e)}commit(t,e){let i=this._instances[t];i&&"edit"===i.mode&&i.viewInstance,"function"==typeof e&&e(null)}onInputInitialize(t,e,i,n,r,o,a){return this._mountView(t,n,r),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){let s=new Error("RichText InputType is not supported inside Tabular rows in Phase 1.");throw this.log&&this.log.warn("[Pict-Input-RichText] tabular not supported",{inputHash:i&&i.Hash}),s}onDataMarshalToForm(t,e,i,n,r,o,a){let s=this._instances[n.Hash];if(s){if("view"===s.mode)this._mountView(t,n,r);else if(s.lastValue="string"==typeof r?r:s.lastValue,this.pict.AppData._PictInputRichText&&this.pict.AppData._PictInputRichText[n.Hash]&&(this.pict.AppData._PictInputRichText[n.Hash].Segments=[{Content:s.lastValue}],s.viewInstance&&"function"==typeof s.viewInstance.render))try{s.viewInstance.render()}catch(t){this.log&&this.log.warn("[Pict-Input-RichText] re-render after marshal threw",{error:t.message})}}else this._mountView(t,n,r);return super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}},e.exports.default_configuration=s},{"../Pict-Provider-InputExtension.js":52,"./Pict-Provider-Input-RichText-CSS.js":69,marked:4,"pict-section-markdowneditor":28}],71:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getSelectInputHTMLID(t){return"#SELECT-FOR-".concat(t)}getTabularSelectInputID(t,e){return"#SELECT-TABULAR-DATA-".concat(t,"-").concat(e)}getTabularSelectDropdownID(t,e){return"#SELECT-TABULAR-DROPDOWN-".concat(t,"-").concat(e)}refreshSelectList(t,e,i,n,r,o){var a;let s=this.pict.ContentAssignment.getElement(this.getSelectInputHTMLID(n.Macro.RawHTMLID)),c=null===(a=n.PictForm)||void 0===a?void 0:a.SelectOptions;if(n.PictForm.SelectOptionsPickList&&this.pict.providers.DynamicMetaLists.hasList(n.PictForm.SelectOptionsPickList)&&(c=this.pict.providers.DynamicMetaLists.getList(n.PictForm.SelectOptionsPickList)),!s||s.length<1)return!1;if(c=this.pict.providers.ListDistilling.filterList(t,n,c),s=s[0],s.innerHTML="",s&&c&&Array.isArray(c))for(let t=0;t<c.length;t++){let e=document.createElement("option");e.value=c[t].id,e.text=c[t].text,s.appendChild(e)}}refreshSelectListTabular(t,e,i,n,r,o,a){var s;let c=this.pict.ContentAssignment.getElement(this.getTabularSelectDropdownID(n.Macro.RawHTMLID,a)),l=null===(s=n.PictForm)||void 0===s?void 0:s.SelectOptions;if(n.PictForm.SelectOptionsPickList&&this.pict.providers.DynamicMetaLists.hasList(n.PictForm.SelectOptionsPickList)&&(l=this.pict.providers.DynamicMetaLists.getList(n.PictForm.SelectOptionsPickList)),l=this.pict.providers.ListDistilling.filterList(t,n,l),Array.isArray(c)&&!(c.length<1)&&(c=c[0],c.innerHTML="",c&&l&&Array.isArray(l)))for(let t=0;t<l.length;t++){let e=document.createElement("option");e.value=l[t].id,e.text=l[t].text,c.appendChild(e)}}onInputInitialize(t,e,i,n,r,o,a){return this.refreshSelectList(t,e,i,n,r,o),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return this.refreshSelectListTabular(t,e,t.getRow(i.PictForm.GroupIndex,o),i,n,r,o),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataChange(t,e,i,n,r){return super.onDataChange(t,e,i,n,r)}onDataChangeTabular(t,e,i,n,r,o){return super.onDataChangeTabular(t,e,i,n,r,o)}onDataMarshalToForm(t,e,i,n,r,o,a){const s=this.pict.ContentAssignment.getElement(this.getSelectInputHTMLID(n.Macro.RawHTMLID));if(!s||s.length<1)return!1;const c=s[0];if(!(c instanceof HTMLSelectElement))return!1;let l=!1;for(let t=0;t<c.options.length;t++)if(c.options[t].value===r){c.selectedIndex=t,l=!0;break}return l||(c.selectedIndex=-1),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){const s=this.pict.ContentAssignment.getElement(this.getTabularSelectDropdownID(i.Macro.RawHTMLID,o));if(!s||s.length<1)return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a);const c=s[0];if(!(c instanceof HTMLSelectElement))return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a);let l=!1;for(let t=0;t<c.options.length;t++)if(c.options[t].value===n){c.selectedIndex=t,l=!0;break}return l||(c.selectedIndex=-1),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}onDataRequest(t,e,i,n){let r=this.pict.ContentAssignment.readContent(this.getSelectInputHTMLID(e.Macro.RawHTMLID));return this.pict.ContentAssignment.assignContent(n,r),t.dataChanged(e.Hash),super.onDataRequest(t,e,r,n)}onDataRequestTabular(t,e,i,n,r){let o=this.pict.ContentAssignment.readContent(this.getTabularSelectDropdownID(e.Macro.RawHTMLID,r));return this.pict.ContentAssignment.assignContent(this.getTabularSelectInputID(e.Macro.RawHTMLID,r),o),t.dataChangedTabular(e.PictForm.GroupIndex,e.PictForm.InputIndex,r),super.onDataRequestTabular(t,e,i,n,r)}}},{"../Pict-Provider-InputExtension.js":52}],72:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.cssHideClass="pict-tab-group-hidden",this.cssSelectedTabClass="pict-tab-group-selectedtab",this.cssSnippet=".pict-tab-group-hidden { display: none; } .pict-tab-group-selectedtab { font-weight: bold; }",this.setCSSSnippets()}setCSSSnippets(t,e){this.cssHideClass=t||this.cssHideClass,this.cssSnippet=e||this.cssSnippet,this.pict.CSSMap.addCSS("Pict-Section-Form-Input-Group-TabSelector",this.cssSnippet,1001,"Pict-Input-TabSelector"),this.pict.CSSMap.injectCSS()}getTabSelector(t,e,i){return"#TAB-".concat(i,"-").concat(e.Macro.RawHTMLID)}getGroupSelector(t,e){return"#GROUP-".concat(t.formID,"-").concat(e)}selectTabByViewHash(t,e,i){var n;let r=this.pict.views[t];if(!r)return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the view did not exist!")),!1;let o=r.getInputFromHash(e);if(!o)return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the input did not exist!")),!1;if(null==o||null===(n=o.PictForm)||void 0===n||!n.TabGroupSet||!Array.isArray(o.PictForm.TabGroupSet))return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the input did not have a valid TabGroupSet array in the PictForm object!")),!1;for(let t=0;t<o.PictForm.TabGroupSet.length;t++){let e=o.PictForm.TabGroupSet[t];e!=i?(this.pict.ContentAssignment.addClass(this.getGroupSelector(r,e),this.cssHideClass),this.pict.ContentAssignment.removeClass(this.getTabSelector(r,o,e),this.cssSelectedTabClass)):(this.pict.ContentAssignment.removeClass(this.getGroupSelector(r,e),this.cssHideClass),this.pict.ContentAssignment.addClass(this.getTabSelector(r,o,e),this.cssSelectedTabClass))}return r.setDataByInput(o,i),!0}getTabSelectorInputHTMLID(t){return"#TAB-SELECT-FOR-".concat(t)}onInputInitialize(t,e,i,n,r,o,a){var s,c,l,p;let d=null===(s=n.PictForm)||void 0===s?void 0:s.TabGroupSet;if(!d||!Array.isArray(d)||d.length<1)return this.pict.log.error("TabSelector input provider tried to initialize Tab Group Set for HTML ID [".concat(n.Macro.RawHTMLID,"] but there were no valid entries in the tmpInput.PictForm.TabGroupSet array!")),!1;let u=this.pict.providers.DynamicInput.getInputTemplateHash(t,{PictForm:{InputType:"TabGroupSelector-TabElement",DataType:"String"}}),h="",m=(null===(c=n.PictForm)||void 0===c?void 0:c.TabGroupNames)||[];for(let e=0;e<d.length;e++)h+=this.pict.parseTemplateByHash(u,n,null,[t,{TabGroupHash:d[e],TabGroupName:m[e]||d[e]}]);this.pict.ContentAssignment.projectContent("replace",this.getTabSelectorInputHTMLID(n.Macro.RawHTMLID),h,"FixTheTypescriptTypes");const g=!1!==(null===(l=n.PictForm)||void 0===l?void 0:l.DefaultFromData)&&r||(null===(p=n.PictForm)||void 0===p?void 0:p.DefaultTabGroupHash)||d[0];return this.selectTabByViewHash(t.Hash,n.Hash,g),super.onInputInitialize(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],73:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.cssHideClass="pict-tab-section-hidden",this.cssSelectedTabClass="pict-tab-section-selectedtab",this.cssSnippet=".pict-tab-section-hidden { display: none; } .pict-tab-section-selectedtab { font-weight: bold; }",this.setCSSSnippets()}setCSSSnippets(t,e){this.cssHideClass=t||this.cssHideClass,this.cssSnippet=e||this.cssSnippet,this.pict.CSSMap.addCSS("Pict-Section-Form-Input-Section-TabSelector",this.cssSnippet,1001,"Pict-Input-TabSelector")}getViewHash(t){return"PictSectionForm-".concat(t)}getTabSelector(t,e){return"#TAB-".concat(t,"-").concat(e.Macro.RawHTMLID)}getSectionSelector(t){const e=this.pict.views.PictFormMetacontroller;return"#Pict-".concat(e?e.UUID:this.UUID,"-").concat(t,"-Wrap")}selectTabByViewHash(t,e,i){var n;let r=this.pict.views[t];if(!r)return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the view did not exist!")),!1;let o=r.getInputFromHash(e);if(!o)return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the input did not exist!")),!1;if(null==o||null===(n=o.PictForm)||void 0===n||!n.TabSectionSet||!Array.isArray(o.PictForm.TabSectionSet))return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the input did not have a valid TabSectionSet array in the PictForm object!")),!1;if(!this.pict.views[this.getViewHash(i)])return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the tab view did not exist!")),!1;for(let t=0;t<o.PictForm.TabSectionSet.length;t++){let e=o.PictForm.TabSectionSet[t];e!=i?(this.pict.ContentAssignment.addClass(this.getSectionSelector(e),this.cssHideClass),this.pict.ContentAssignment.removeClass(this.getTabSelector(e,o),this.cssSelectedTabClass)):(this.pict.ContentAssignment.removeClass(this.getSectionSelector(e),this.cssHideClass),this.pict.ContentAssignment.addClass(this.getTabSelector(e,o),this.cssSelectedTabClass))}return r.setDataByInput(o,i),!0}getTabSelectorInputHTMLID(t){return"#TAB-SELECT-FOR-".concat(t)}onInputInitialize(t,e,i,n,r,o,a){var s,c,l,p;let d=null===(s=n.PictForm)||void 0===s?void 0:s.TabSectionSet;if(!d||!Array.isArray(d)||d.length<1)return this.pict.log.error("TabSelector input provider tried to initialize Tab Group Set for HTML ID [".concat(n.Macro.RawHTMLID,"] but there were no valid entries in the tmpInput.PictForm.TabSectionSet array!")),!1;let u=this.pict.providers.DynamicInput.getInputTemplateHash(t,{PictForm:{InputType:"TabSectionSelector-TabElement",DataType:"String"}}),h="",m=(null===(c=n.PictForm)||void 0===c?void 0:c.TabSectionNames)||[];for(let e=0;e<d.length;e++)h+=this.pict.parseTemplateByHash(u,n,null,[t,{TabSectionHash:d[e],TabSectionName:m[e]||d[e]}]);this.pict.ContentAssignment.projectContent("replace",this.getTabSelectorInputHTMLID(n.Macro.RawHTMLID),h,"FixTheTypescriptTypes");const g=!1!==(null===(l=n.PictForm)||void 0===l?void 0:l.DefaultFromData)&&r||(null===(p=n.PictForm)||void 0===p?void 0:p.DefaultTabSectionHash)||d[0];return this.selectTabByViewHash(t.Hash,n.Hash,g),super.onInputInitialize(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],74:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.fable,this.pict,this.log}getTriggerGroupConfigurationArray(t){let e=t.PictForm.TabularTriggerGroup;return e?(Array.isArray(e)||(e=[e]),e):[]}ensureRowCache(t,e){return this.pict.AppData._TabularTriggerCache||(this.pict.AppData._TabularTriggerCache={}),this.pict.AppData._TabularTriggerCache[t]||(this.pict.AppData._TabularTriggerCache[t]={}),this.pict.AppData._TabularTriggerCache[t][e]||(this.pict.AppData._TabularTriggerCache[t][e]={}),this.pict.AppData._TabularTriggerCache[t][e]}gatherEntitySet(t,e,i,n,r,o,a){if(!e.Entity||"string"!=typeof e.Entity)return this.log.warn("TabularTriggerGroup failed to parse entity request: missing Entity string."),t();if(!e.Filter||"string"!=typeof e.Filter)return this.log.warn("TabularTriggerGroup failed to parse entity request: missing Filter string."),t();if(!e.Destination||"string"!=typeof e.Destination)return this.log.warn("TabularTriggerGroup failed to parse entity request: missing Destination string."),t();let s={Value:r,Input:n,View:i},c=this.pict.parseTemplate(e.Filter,s);""===c&&this.log.warn("TabularTriggerGroup: entity Filter did not return a string for FilterBy");let l=null,p=null;e.RecordCount&&(l=null!=e.RecordStartCursor?e.RecordStartCursor:0,p=null!=e.RecordCount?e.RecordCount:null);let d=(i,n)=>{if(i)return this.log.error("TabularTriggerGroup error getting entity set for [".concat(e.Entity,"] row ").concat(o,": ").concat(i),i),t(i);this.log.trace("TabularTriggerGroup found ".concat(n.length," records for ").concat(e.Entity," row ").concat(o));let r=this.ensureRowCache(a,o);return e.SingleRecord?n.length<1?this.pict.manifest.setValueByHash(r,e.Destination,!1):this.pict.manifest.setValueByHash(r,e.Destination,n[0]):this.pict.manifest.setValueByHash(r,e.Destination,n),t()};p?this.pict.EntityProvider.getEntitySetPage(e.Entity,c,l,p,d):this.pict.EntityProvider.getEntitySet(e.Entity,c,d)}gatherCustomDataSet(t,e,i,n,r,o,a){if(!e.URL||"string"!=typeof e.URL)return this.log.warn("TabularTriggerGroup failed to parse custom request: missing URL string."),t();let s={Value:r,Input:n,View:i},c=this.pict.parseTemplate(e.URL,s),l="",p=!!e.Host&&e.Host,d=e.Protocol?e.Protocol:"https",u=!!e.Port&&e.Port;p?(l="".concat(d,"://").concat(p),u&&(l+=":".concat(u))):l=this.pict.EntityProvider.options.urlPrefix;let h={url:"".concat(l).concat(c)};return h=this.pict.EntityProvider.prepareRequestOptions(h),this.pict.EntityProvider.restClient.getJSON(h,(i,n,r)=>{if(i)return this.log.error("TabularTriggerGroup error getting custom data for row ".concat(o,": ").concat(i),i),t(i);if(e.Destination){let t=this.ensureRowCache(a,o);this.pict.manifest.setValueByHash(t,e.Destination,r)}return t()})}async gatherDataForRow(t,e,i,n,r,o,a){if(!Array.isArray(o.EntitiesBundle)||o.EntitiesBundle.length<1)return this.log.warn("TabularTriggerGroup: no EntitiesBundle array found for triggering input [".concat(e.Hash,"] row ").concat(r)),null;let s=o.TriggerGroupHash,c="TabularBundleLoad-".concat(this.pict.getUUID());a&&t.registerEventTransactionAsyncOperation(a,c);let l=this.fable.newAnticipate();for(let n=0;n<o.EntitiesBundle.length;n++){let a=o.EntitiesBundle[n];l.anticipate(n=>{try{return"Custom"===a.Type?this.gatherCustomDataSet(n,a,t,e,i,r,s):this.gatherEntitySet(n,a,t,e,i,r,s)}catch(t){this.log.error("TabularTriggerGroup error gathering entity set for row ".concat(r,": ").concat(t),t)}return n()})}return l.anticipate(t=>setTimeout(t,0)),l.anticipate(i=>{this.pict.views.PictFormMetacontroller&&this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("TabularTriggerGroup:".concat(s,":DataChange:").concat(e.Hash||e.DataAddress,":").concat(r,":").concat(this.pict.getUUID()),a),o.PostSolvers&&Array.isArray(o.PostSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,o.PostSolvers,"TabularTriggerGroup hash ".concat(s," row ").concat(r," post-trigger")),i()}),new Promise((e,i)=>{l.wait(i=>(i&&this.log.error("TabularTriggerGroup error gathering data for row ".concat(r,": ").concat(i),i),a&&t.eventTransactionAsyncOperationComplete(a,c),e(i)))})}autoFillFromRowCache(t,e,i,n,r){if(!i.TriggerGroupHash||"string"!=typeof i.TriggerGroupHash)return this.log.warn("TabularTriggerGroup failed to autofill: missing TriggerGroupHash string."),!1;if(!i.TriggerAddress||"string"!=typeof i.TriggerAddress)return this.log.warn("TabularTriggerGroup failed to autofill: missing TriggerAddress string."),!1;let o=this.ensureRowCache(i.TriggerGroupHash,r),a=this.pict.manifest.getValueByHash(o,i.TriggerAddress);return!(!a&&!i.MarshalEmptyValues)&&(t.setDataTabularByHash(e.PictForm.GroupIndex,e.Hash,r,a),t.manualMarshalTabularDataToViewByInput(e,r),!0)}onDataChangeTabular(t,e,i,n,r,o){let a=this.getTriggerGroupConfigurationArray(e);for(let s=0;s<a.length;s++){let c=a[s];c.TriggerAllInputs&&(c.PreSolvers&&Array.isArray(c.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,c.PreSolvers,"TabularTriggerGroup hash ".concat(c.TriggerGroupHash," row ").concat(r," pre-trigger")),this.gatherDataForRow(t,e,i,n,r,c,o))}return super.onDataChangeTabular(t,e,i,n,r,o)}onAfterEventTabularCompletion(t,e,i,n,r,o,a){let s=("string"==typeof o?o:"").split(":"),c=s[0],l=s[1],p=(s[2],s[3]),d=parseInt(s[4],10);if("TabularTriggerGroup"!==c)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);if((e.Hash||e.DataAddress)===p)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);if(r!==d)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);let u=this.getTriggerGroupConfigurationArray(e);for(let o=0;o<u.length;o++){let a=u[o];if(a.TriggerGroupHash===l&&(a.TriggerAddress&&this.autoFillFromRowCache(t,e,a,n,r),a.SelectOptionsRefresh)){let t=this.pict.views[e.PictForm.ViewHash];t&&e.PictForm.SelectOptionsPickList&&(this.pict.providers.DynamicMetaLists.rebuildListByHash(e.PictForm.SelectOptionsPickList),this.pict.providers["Pict-Input-Select"].refreshSelectListTabular(t,t.getGroup(e.PictForm.GroupIndex),t.getRow(e.PictForm.GroupIndex,e.PictForm.Row),e,i,n,r),t.manualMarshalTabularDataToViewByInput(e,r))}}return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)}onDataChange(t,e,i,n,r){return super.onDataChange(t,e,i,n,r)}onAfterEventCompletion(t,e,i,n,r,o){return super.onAfterEventCompletion(t,e,i,n,r,o)}},e.exports.default_configuration={ProviderIdentifier:"Pict-Input-TabularTriggerGroup",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1}},{"../Pict-Provider-InputExtension.js":52}],75:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}handleContentUpdate(t,e,i,n){let r="";i&&"string"==typeof i&&(r=i);e.PictForm&&e.PictForm.Template&&"string"==typeof e.PictForm.Template&&(r=this.pict.parseTemplate(e.PictForm.Template,Object.assign({},this.pict,{Data:t.getMarshalDestinationObject()}),null,[this],this)),!r&&e.Default&&"string"==typeof e.Default&&(r=e.Default),null!=n?t.setDataTabularByHash(e.PictForm.GroupIndex,e.Hash,n,r):t.setDataByInput(e,r)}onInputInitialize(t,e,i,n,r,o,a){return this._handleInitialize(t,e,i,n,r,o,null,a),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return this._handleInitialize(t,e,null,i,n,r,o,a),super.onInputInitializeTabular(t,e,i,n,r,o,a)}_handleInitialize(t,e,i,n,r,o,a,s){if(n.PictForm&&n.PictForm.Templates&&"object"==typeof n.PictForm.Templates&&!Array.isArray(n.PictForm.Templates))for(const t of Object.entries(n.PictForm.Templates)){var c=_slicedToArray(t,2);const e=c[0],i=c[1];this.pict.TemplateProvider.templates[e]?this.pict.log.error("[Pict-Input-Templated] Attempt to override template with hash: ".concat(e,"; skipping.")):this.pict.TemplateProvider.addTemplate(e,i,"Templated Input hash: ".concat(n.Hash))}this.handleContentUpdate(t,n,r)}onDataMarshalToForm(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),r),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),n),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}onAfterEventCompletion(t,e,i,n,r,o){var a,s;let c=_slicedToArray(("string"==typeof r?r:"").split(":"),2),l=c[0],p=c[1];if("TriggerGroup"!==l)return super.onAfterEventCompletion(t,e,i,n,r,o);const d=Array.isArray(null===(a=e.PictForm)||void 0===a?void 0:a.TriggerGroupHash)?e.PictForm.TriggerGroupHash:[null===(s=e.PictForm)||void 0===s?void 0:s.TriggerGroupHash];return e.PictForm&&e.PictForm.TriggerGroupHash&&d.includes(p)?(this.handleContentUpdate(t,e,i),t.manualMarshalDataToViewByInput(e,o),super.onAfterEventCompletion(t,e,i,n,r,o)):super.onAfterEventCompletion(t,e,i,n,r,o)}onAfterEventTabularCompletion(t,e,i,n,r,o,a){var s,c;let l=_slicedToArray(("string"==typeof o?o:"").split(":"),2),p=l[0],d=l[1];if("TriggerGroup"!==p)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);const u=Array.isArray(null===(s=e.PictForm)||void 0===s?void 0:s.TriggerGroupHash)?e.PictForm.TriggerGroupHash:[null===(c=e.PictForm)||void 0===c?void 0:c.TriggerGroupHash];return e.PictForm&&e.PictForm.TriggerGroupHash&&u.includes(d)?(this.handleContentUpdate(t,e,i,r),t.manualMarshalTabularDataToViewByInput(e,r,a),super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)):super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],76:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");t("marked");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#".concat(t,"-").concat(e)}assignDisplayEntityData(t,e,i){let n="string"==typeof e.PictForm.TemplatedEntityLookup.Template?e.PictForm.TemplatedEntityLookup.Template:"",r="";if("object"!=typeof e)return void this.log.error("Error in assignDisplayEntityData: pInput is not an object");if(!("PictForm"in e))return void this.log.error("Error in assignDisplayEntityData: pInput.PictForm is not an object");if(!("TemplatedEntityLookup"in e.PictForm))return void this.log.error("Error in assignDisplayEntityData: pInput.PictForm.TemplatedEntityLookup is not in the PictForm object");if(!Array.isArray(e.PictForm.TemplatedEntityLookup.EntitiesBundle))return void this.log.error("Error in assignDisplayEntityData: pInput.PictForm.TemplatedEntityLookup.EntitiesBundle is not an array");const o=this.fable.newAnticipate();o.anticipate(function(t){this.pict.EntityProvider.gatherDataFromServer(e.PictForm.TemplatedEntityLookup.EntitiesBundle,e=>{setTimeout(()=>t(e),0)})}.bind(this)),o.anticipate(function(t){this.pict.parseTemplate(n,{Value:i},function(e,i){if(!e)return r=i,t();this.log.error("Error rendering template in assignDisplayEntityData",e)}.bind(this))}.bind(this)),o.wait(function(e){e?this.log.error("Error in assignDisplayEntityData",e):this.pict.ContentAssignment.assignContent(t,r)}.bind(this))}onInputInitialize(t,e,i,n,r,o,a){return this.assignDisplayEntityData(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),n,r),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return this.assignDisplayEntityData(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),i,n),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onAfterEventCompletion(t,e,i,n,r,o){let a=_slicedToArray(("string"==typeof r?r:"").split(":"),5),s=(a[0],a[1]),c=(a[2],a[3],a[4]);if(c||(c=this.pict.getUUID()),!e.PictForm.TemplatedEntityLookup||!("TriggerGroupHash"in e.PictForm.TemplatedEntityLookup))return super.onAfterEventCompletion(t,e,i,n,r,o);let l=[e.PictForm.TemplatedEntityLookup];for(let t=0;t<l.length;t++){l[t].TriggerGroupHash===s&&this.assignDisplayEntityData(this.getContentDisplayHTMLID(e.Macro.RawHTMLID),e,i)}return super.onAfterEventCompletion(t,e,i,n,r,o)}onAfterEventTabularCompletion(t,e,i,n,r,o,a){let s=_slicedToArray(("string"==typeof o?o:"").split(":"),5),c=(s[0],s[1]),l=(s[2],s[3],s[4]);if(l||(l=this.pict.getUUID()),!e.PictForm.TemplatedEntityLookup||!("TriggerGroupHash"in e.PictForm.TemplatedEntityLookup))return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);let p=[e.PictForm.TemplatedEntityLookup];for(const t of p)t.TriggerGroupHash===c&&this.assignDisplayEntityData(this.getTabularContentDisplayInputID(e.Macro.RawHTMLID,r),e,i);return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52,marked:4}],77:[function(t,e,i){const n=["ink","paper","accent","highlight","deemphasis","link"],r={ink:"#1B1F23",paper:"#FDFCF7",accent:"#E66C2C",highlight:"#FFD966",deemphasis:"#A0A0A0",link:"#2E7D74"};function o(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}e.exports={themeifySVG:function(t,e){if("string"!=typeof t)return t;let i=r;e&&"object"==typeof e&&(i=e.Palette||e);let a=t.match(/<metadata[\s\S]*?<\/metadata>/i),s=a?a[0]:"",c=" PICT-SECTION-EXCALIDRAW-METADATA ",l=s?t.replace(s,c):t;for(let t=0;t<n.length;t++){let e=n[t],r=i[e];if("string"!=typeof r||!/^#[0-9a-fA-F]{6}$/.test(r))continue;let a=new RegExp('(stroke|fill)(="|:\\s*)('+o(r)+')(?=["\\s;)])',"gi");l=l.replace(a,(t,i,n,r)=>i+n+"var(--diagram-"+e+", "+r+")")}return s?l.replace(c,s):l},paletteTokens:n,defaultPalette:r}},{}],78:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){let i=this.pict.providers.MetatemplateGenerator,n="";return n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),n+="No really... this is a chart.",n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n}}},{"../Pict-Provider-DynamicLayout.js":45}],79:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){for(let t=0;t<e.Rows.length;t++){let i=e.Rows[t];for(let n=0;n<i.Inputs.length;n++){let r=i.Inputs[n];r.PictForm.InputIndex=n,r.PictForm.GroupIndex=e.GroupIndex,r.PictForm.RowIndex=t}}const i=e.CustomLayoutTemplateHash;if(i){const t=this.pict.TemplateProvider.getTemplate(i);if(t)return t;this.log.warn("Custom layout template not found for hash: ".concat(i))}return e.CustomLayoutTemplate||""}}},{"../Pict-Provider-DynamicLayout.js":45}],80:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){let i=this.pict.providers.MetatemplateGenerator,n="";"Rows"in e||(e.Rows=[]),n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let r=0;r<e.Rows.length;r++){let o=e.Rows[r];o.WidthTotalRaw=0,n+=i.getMetatemplateTemplateReference(t,"-Template-Row-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let t=0;t<o.Inputs.length;t++){let i=o.Inputs[t];i.PictForm.InputIndex=t,i.PictForm.GroupIndex=e.GroupIndex,i.PictForm.RowIndex=r;let n=1;try{n=Math.abs(parseFloat(i.PictForm.Width))}catch(t){n=1}(!n||isNaN(n)||n<=0)&&(n=1),i.PictForm.RawWidth=n,o.WidthTotalRaw+=n}let a=95;if("WidthQuantization"in e)try{a=Math.abs(parseInt(e.WidthQuantization)),(!a||isNaN(a)||a<=0)&&(a=95)}catch(t){a=95}else"WidthQuantization"in this.pict.PictApplication.options&&(a=this.pict.PictApplication.options.WidthQuantization);for(let s=0;s<o.Inputs.length;s++){let c=o.Inputs[s];c.PictForm.QuantizedWidth=Math.round(c.PictForm.RawWidth/o.WidthTotalRaw*a),n+=i.getInputMetatemplateTemplateReference(t,c.DataType,c.PictForm.InputType,'getInput("'.concat(e.GroupIndex,'","').concat(r,'","').concat(s,'")'))}n+=i.getMetatemplateTemplateReference(t,"-Template-Row-Postfix",'getGroup("'.concat(e.GroupIndex,'")'))}return n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n}}},{"../Pict-Provider-DynamicLayout.js":45}],81:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){if(!e.supportingManifest)return this.log.error("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] error generating tabular metatemplate: missing group manifest ").concat(e.RecordManifest," from supportingManifests.")),"";let i=this.pict.providers.MetatemplateGenerator,n="",r="";n+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));let o=0;for(let t=0;t<e.supportingManifest.elementAddresses.length;t++){let i=e.supportingManifest.elementAddresses[t],n=e.supportingManifest.elementDescriptors[i];"PictForm"in n||(n.PictForm={}),n.PictForm.TabularHidden||(n.PictForm.InputIndex=t,n.PictForm.GroupIndex=e.GroupIndex,n.PictForm.Row&&(n.PictForm.RowIndex=n.PictForm.Row,n.PictForm.RowIndex>o&&(o=n.PictForm.RowIndex)))}for(let t=0;t<e.supportingManifest.elementAddresses.length;t++){let i=e.supportingManifest.elementAddresses[t],n=e.supportingManifest.elementDescriptors[i];"PictForm"in n||(n.PictForm={}),n.PictForm.TabularHidden||(n.PictForm.RowIndex||(n.PictForm.RowIndex=o+1))}for(let n=0;n<o+1;n++){r+=i.getMetatemplateTemplateReference(t,"-Template-Row-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let o=0;o<e.supportingManifest.elementAddresses.length;o++){let a=e.supportingManifest.elementAddresses[o],s=e.supportingManifest.elementDescriptors[a];if(!s.PictForm.TabularHidden&&s.PictForm.RowIndex==n){r+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Cell-Prefix",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'));let n="PictForm"in s&&s.PictForm.InputType?s.PictForm.InputType:"Default";r+=i.getTabularInputMetatemplateTemplateReference(t,s.DataType,n,'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'),e.GroupIndex,o),r+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Cell-Postfix",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'))}}r+=i.getMetatemplateTemplateReference(t,"-Template-Row-Postfix",'getGroup("'.concat(e.GroupIndex,'")'))}let a="";return a+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Row-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),a+=i.getMetatemplateTemplateReferenceRaw(t,"-RecordSetTemplate-Row-ExtraPrefix","Record"),a+="\n\n{~T:".concat(e.SectionTabularRowTemplateHash,":Record~}\n"),a+=i.getMetatemplateTemplateReferenceRaw(t,"-RecordSetTemplate-Row-ExtraPostfix","Record"),a+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Row-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n+="\n\n{~MTVS:".concat(e.SectionTabularRowVirtualTemplateHash,":").concat(e.GroupIndex,":").concat(t.getMarshalDestinationAddress(),".").concat(e.RecordSetAddress,"~}\n"),n+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),this.pict.TemplateProvider.addTemplate(e.SectionTabularRowVirtualTemplateHash,a),this.pict.TemplateProvider.addTemplate(e.SectionTabularRowTemplateHash,r),n}}},{"../Pict-Provider-DynamicLayout.js":45}],82:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.pict&&this.pict.providers&&this.pict.providers.Icon&&"function"==typeof this.pict.providers.Icon.registerSet&&this.pict.providers.Icon.registerSet({Outline:{Sort:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 20V5"/><path d="M5.5 8.5L9 5L12.5 8.5"/><path d="M15 4V19"/><path d="M11.5 15.5L15 19L18.5 15.5"/></svg>',SortAscending:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20V5"/><path d="M6 11L12 5L18 11"/></svg>',SortDescending:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 4V19"/><path d="M6 13L12 19L18 13"/></svg>'}}),this.pict&&this.pict.CSSMap&&"function"==typeof this.pict.CSSMap.addCSS&&this.pict.CSSMap.addCSS("Pict-Layout-Tabular-Sort-CSS",".pict-tabular-sort-control { cursor: pointer; display: inline-flex; vertical-align: middle; margin-left: 0.3em; opacity: 0.4; } .pict-tabular-sort-control:hover { opacity: 0.75; } .pict-tabular-sort-control.pict-tabular-sort-asc, .pict-tabular-sort-control.pict-tabular-sort-desc { opacity: 1; }",500)}_buildSortableHeaderCell(t,e,i,n){let r=e._SortState||{ColumnIndex:-1,Direction:"none"},o=r.ColumnIndex===n&&"none"!==r.Direction,a="Sort",s="pict-tabular-sort-none";o&&"asc"===r.Direction?(a="SortAscending",s="pict-tabular-sort-asc"):o&&"desc"===r.Direction&&(a="SortDescending",s="pict-tabular-sort-desc");let c="function"==typeof this.pict.icon?this.pict.icon(a):"",l=this._escapeHTML(i&&null!=i.Name?String(i.Name):"");return'\n\t\t\t\t\t\t<th data-tabular-column-index="'.concat(n,'">').concat(l," ")+'<span class="pict-tabular-sort-control '.concat(s,'" ')+"onclick=\"_Pict.providers['Pict-Layout-Tabular'].sortTabularColumn('".concat(t.Hash,"', ").concat(e.GroupIndex,", ").concat(n,')">')+"".concat(c,"</span></th>\n")}_getTabularCellValue(t,e,i){if(!e||!i||!t.supportingManifest)return;let n=e.PictForm&&"string"==typeof e.PictForm.InformaryDataAddress&&e.PictForm.InformaryDataAddress.length>0?e.PictForm.InformaryDataAddress:e.Hash;try{return t.supportingManifest.getValueByHash(i,n)}catch(t){return}}_compareTabularValues(t,e){let i=null==t?"":t,n=null==e?"":e,r=Number(i),o=Number(n);return""===i||""===n||isNaN(r)||isNaN(o)?String(i).localeCompare(String(n)):r<o?-1:r>o?1:0}sortTabularColumn(t,e,i){let n=this.pict.views[t];if(!n||!n.sectionDefinition||!Array.isArray(n.sectionDefinition.Groups))return!1;let r=n.sectionDefinition.Groups[Number(e)];if(!r||!0!==r.ColumnSorting)return!1;let o=Number(i);if(isNaN(o)||o<0)return!1;r._SortState||(r._SortState={ColumnIndex:-1,Direction:"none"}),r._SortState.ColumnIndex===o&&"asc"===r._SortState.Direction?r._SortState.Direction="desc":(r._SortState.ColumnIndex=o,r._SortState.Direction="asc");let a=null;if(r.supportingManifest&&Array.isArray(r.supportingManifest.elementAddresses)){let t=r.supportingManifest.elementAddresses[o];a=r.supportingManifest.elementDescriptors[t]}let s=n.sectionManifest.getValueByHash(n.getMarshalDestinationObject(),r.RecordSetAddress);if(a&&Array.isArray(s)){let t="desc"===r._SortState.Direction?-1:1;s.sort((e,i)=>this._compareTabularValues(this._getTabularCellValue(r,a,e),this._getTabularCellValue(r,a,i))*t)}return n.rebuildCustomTemplate(),n.render(),this.pict.views.PictFormMetacontroller?this.pict.views.PictFormMetacontroller.marshalFormSections():n.marshalToView(),!0}_parseTabularTemplate(t,e){if("string"!=typeof t)return"";if(-1===t.indexOf("{"))return t;try{let i=this.pict.parseTemplate(t,e,null);return"string"==typeof i?i:""}catch(t){return this.log.warn("PICT Form Tabular template parse failed: ".concat(t&&t.message)),""}}_buildExpandedHeadersConfig(t,e){let i=[];if(Array.isArray(e.Headers))for(let t=0;t<e.Headers.length;t++){let n=e.Headers[t];if(!Array.isArray(n))continue;let r=[];for(let t=0;t<n.length;t++){let e=n[t];e&&"object"==typeof e&&r.push({Label:"string"==typeof e.Label?e.Label:"",ColumnSpan:Number(e.ColumnSpan)>0?Number(e.ColumnSpan):1,CSSClass:"string"==typeof e.CSSClass?e.CSSClass:""})}i.push(r)}let n=!1;if(Array.isArray(e.DynamicColumns))for(let t=0;t<e.DynamicColumns.length;t++)if(e.DynamicColumns[t]&&e.DynamicColumns[t].HeaderGroupTemplate){n=!0;break}if(n&&e.supportingManifest){let t=[],n=null,r=e.supportingManifest.elementAddresses;for(let i=0;i<r.length;i++){let o=e.supportingManifest.elementDescriptors[r[i]];if(!o)continue;if(o.PictForm&&o.PictForm.TabularHidden)continue;let a="number"==typeof o._DynamicColumnGeneratorIndex,s=a&&"string"==typeof o._DynamicColumnHeaderGroup?o._DynamicColumnHeaderGroup:"",c=a?"D".concat(o._DynamicColumnGeneratorIndex,"|").concat(s):"S|".concat(i);n&&n.RunKey===c?n.Cell.ColumnSpan+=1:(n={RunKey:c,Cell:{Label:a?s:"",ColumnSpan:1,CSSClass:a?"pict-tabular-dynamic-header-group":"pict-tabular-static-header-spacer"}},t.push(n.Cell))}i.push(t)}return i}_computeRowLabelMetadata(t,e){if(!Array.isArray(e.RowLabels)||0===e.RowLabels.length)return void(e.RowLabelMetadata=[]);let i=[];if("string"==typeof e.RecordSetAddress&&e.RecordSetAddress.length>0){let n=t.getMarshalDestinationObject(),r=t.sectionManifest.getValueByHash(n,e.RecordSetAddress);Array.isArray(r)&&(i=r)}let n=[];for(let t=0;t<i.length;t++){let r=i[t],o=[];for(let i=0;i<e.RowLabels.length;i++){let n=e.RowLabels[i],a="";if(!0===n.RowNumber)a=String(t+1);else if("string"==typeof n.SourceAddress&&n.SourceAddress.length>0){let e=this.pict.resolveStateFromAddress(n.SourceAddress,null);if(Array.isArray(e)&&t<e.length){let i=e[t];a="string"==typeof i?i:null==i?"":String(i)}}else"string"==typeof n.Template&&(a=this._parseTabularTemplate(n.Template,{Value:r,Key:t}));o.push({Label:n.Name||"",RenderedLabel:a,RowSpan:1,Skip:!1,Cluster:!0===n.Cluster,CSSClass:"string"==typeof n.CSSClass?n.CSSClass:""})}n.push({Cells:o})}for(let t=0;t<e.RowLabels.length;t++){if(!e.RowLabels[t].Cluster)continue;let i=0;for(let e=1;e<=n.length;e++){if(!(e===n.length)&&n[e].Cells[t].RenderedLabel===n[i].Cells[t].RenderedLabel)n[e].Cells[t].Skip=!0;else{let r=e-i;n[i].Cells[t].RowSpan=r,i=e}}}e.RowLabelMetadata=n}_renderTabularRowLabelsHTML(t,e,i){if(!t||!t.sectionDefinition||!Array.isArray(t.sectionDefinition.Groups))return"";let n=Number(e);if(isNaN(n)||n<0||n>=t.sectionDefinition.Groups.length)return"";let r=t.sectionDefinition.Groups[n],o=Number(i);0===o&&this._computeRowLabelMetadata(t,r);let a="";if(r._RowSelectionConfig&&!isNaN(o)&&o>=0){let e=this._getTabularSelectionArray(t,r._RowSelectionConfig)[o]?' checked="checked"':"";a+='<td class="pict-tabular-row-select">'+'<input type="checkbox"'.concat(e," onchange=\"_Pict.providers['Pict-Layout-Tabular'].toggleTabularRowSelection('").concat(t.Hash,"', ").concat(n,", '").concat(o,"', this.checked)\">")+"</td>"}if(Array.isArray(r.RowLabelMetadata)&&!isNaN(o)&&o>=0&&o<r.RowLabelMetadata.length){let t=r.RowLabelMetadata[o].Cells;for(let e=0;e<t.length;e++){let i=t[e];if(i.Skip)continue;let n=i.RowSpan>1?' rowspan="'.concat(i.RowSpan,'"'):"",r="pict-row-label".concat(i.Cluster?" pict-row-label-clustered":"").concat(i.CSSClass?" "+i.CSSClass:"");a+="<td".concat(n,' class="').concat(r,'">').concat(this._escapeHTML(i.RenderedLabel),"</td>")}}return a}_renderTabularEditingControlsHTML(t,e,i){if(!t)return"";let n=t.Hash;return'<td class="pict-tabular-editing-controls"><a href="#/" onClick="_Pict.views[\''.concat(n,"'].deleteDynamicTableRow(").concat(e,",'").concat(i,'\')">del</a> <a href="#/" onClick="_Pict.views[\'').concat(n,"'].moveDynamicTableRowUp(").concat(e,",'").concat(i,'\')">up</a> <a href="#/" onClick="_Pict.views[\'').concat(n,"'].moveDynamicTableRowDown(").concat(e,",'").concat(i,"')\">down</a></td>")}_escapeHTML(t){return"string"!=typeof t?"":t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}_normalizeSelectionConfig(t,e,i){if(!0!==t&&("object"!=typeof t||null===t))return null;let n="object"==typeof t?t:{};return!1===n.Enabled?null:{DataAddress:"string"==typeof n.DataAddress&&n.DataAddress.length>0?n.DataAddress:e,HighlightClass:"HighlightClass"in n?n.HighlightClass||"":i,HeaderLabel:"string"==typeof n.HeaderLabel?n.HeaderLabel:""}}_getTabularSelectionAddress(t,e){return"".concat(t.getMarshalDestinationAddress(),".").concat(e.DataAddress)}_getTabularSelectionArray(t,e){let i=this.pict.resolveStateFromAddress(this._getTabularSelectionAddress(t,e));return Array.isArray(i)?i:[]}_setTabularSelectionFlag(t,e,i,n){let r=this._getTabularSelectionArray(t,e),o=Number(i);return!isNaN(o)&&o>=0&&(r[o]=!!n),this.pict.setStateValueAtAddress(this._getTabularSelectionAddress(t,e),null,r),r}toggleTabularRowSelection(t,e,i,n){let r=this.pict.views[t];if(!r||!r.sectionDefinition||!Array.isArray(r.sectionDefinition.Groups))return!1;let o=r.sectionDefinition.Groups[Number(e)];return!(!o||!o._RowSelectionConfig)&&(this._setTabularSelectionFlag(r,o._RowSelectionConfig,i,n),o._RowSelectionConfig.HighlightClass&&this.pict.providers.DynamicFormSolverBehaviors&&this.pict.providers.DynamicFormSolverBehaviors.highlightTabularRow(r.sectionDefinition.Hash,o.Hash,i,n?1:0,o._RowSelectionConfig.HighlightClass),this.pict.PictApplication.solve(),!0)}toggleTabularColumnSelection(t,e,i,n){let r=this.pict.views[t];if(!r||!r.sectionDefinition||!Array.isArray(r.sectionDefinition.Groups))return!1;let o=r.sectionDefinition.Groups[Number(e)];return!(!o||!o._ColumnSelectionConfig)&&(this._setTabularSelectionFlag(r,o._ColumnSelectionConfig,i,n),o._ColumnSelectionConfig.HighlightClass&&this.pict.providers.DynamicFormSolverBehaviors&&this.pict.providers.DynamicFormSolverBehaviors.highlightTabularColumn(r.sectionDefinition.Hash,o.Hash,i,n?1:0,o._ColumnSelectionConfig.HighlightClass),this.pict.PictApplication.solve(),!0)}_reapplyTabularSelectionHighlights(t,e){let i=this.pict.providers.DynamicFormSolverBehaviors;if(!i||!t.sectionDefinition)return;let n=t.sectionDefinition.Hash;if(e._RowSelectionConfig&&e._RowSelectionConfig.HighlightClass){let r=this._getTabularSelectionArray(t,e._RowSelectionConfig);for(let t=0;t<r.length;t++)i.highlightTabularRow(n,e.Hash,t,r[t]?1:0,e._RowSelectionConfig.HighlightClass)}if(e._ColumnSelectionConfig&&e._ColumnSelectionConfig.HighlightClass){let r=this._getTabularSelectionArray(t,e._ColumnSelectionConfig);for(let t=0;t<r.length;t++)i.highlightTabularColumn(n,e.Hash,t,r[t]?1:0,e._ColumnSelectionConfig.HighlightClass)}}generateGroupLayoutTemplate(t,e){if(!e.supportingManifest)return this.log.error("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] error generating tabular metatemplate: missing group manifest ").concat(e.RecordManifest," from supportingManifests.")),"";let i=this.pict.providers.MetatemplateGenerator,n="",r="",o="string"==typeof e.EditingControlsPosition?e.EditingControlsPosition:"right",a=Array.isArray(e.RowLabels)?e.RowLabels:[],s=!0===e.SuppressDefaultColumnHeaderRow,c=!0===e.ColumnSorting;c&&!e._SortState&&(e._SortState={ColumnIndex:-1,Direction:"none"});let l=this._buildExpandedHeadersConfig(t,e);e.ExpandedHeaders=l,e.RowLabelHeaderCells=a.map(t=>({Name:t.Name||"",CSSClass:"string"==typeof t.CSSClass?t.CSSClass:""})),e._RowSelectionConfig=this._normalizeSelectionConfig(e.RowSelection,"".concat(e.Hash,"_RowSelection"),"pict-tabular-row-highlight"),e._ColumnSelectionConfig=this._normalizeSelectionConfig(e.ColumnSelection,"".concat(e.Hash,"_ColumnSelection"),"pict-tabular-column-highlight");let p=null!=e._RowSelectionConfig,d=null!=e._ColumnSelectionConfig,u="left"===o,h="right"===o,m=(p?1:0)+a.length+(u?1:0);"left"!==o&&"hidden"!==o||(this.pict.TemplateProvider.addTemplate(t.getViewSpecificTemplateHash("-TabularTemplate-Row-ExtraPostfix"),""),this.pict.TemplateProvider.addTemplate(t.getViewSpecificTemplateHash("-TabularTemplate-RowHeader-ExtraPostfix"),"")),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowHeader-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let r=0;r<l.length;r++){let o=l[r];n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-ExtraHeaderRow-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let t=0;t<m;t++)n+='<th class="pict-row-label-spacer"></th>';for(let a=0;a<o.length;a++){let o='getGroup("'.concat(e.GroupIndex,'").ExpandedHeaders.').concat(r,".").concat(a);n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-ExtraHeaderCell",o)}h&&(n+='<th class="pict-row-label-spacer"></th>'),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-ExtraHeaderRow-Postfix",'getGroup("'.concat(e.GroupIndex,'")'))}if(d){let i=this._getTabularSelectionArray(t,e._ColumnSelectionConfig),r='<tr class="pict-tabular-column-select-row">';for(let t=0;t<m;t++)r+='<th class="pict-row-label-spacer"></th>';for(let n=0;n<e.supportingManifest.elementAddresses.length;n++){let o=e.supportingManifest.elementDescriptors[e.supportingManifest.elementAddresses[n]];if(!o||o.PictForm&&o.PictForm.TabularHidden)continue;let a=i[n]?' checked="checked"':"";r+='<th class="pict-tabular-column-select">'+'<input type="checkbox"'.concat(a," onchange=\"_Pict.providers['Pict-Layout-Tabular'].toggleTabularColumnSelection('").concat(t.Hash,"', ").concat(e.GroupIndex,", ").concat(n,', this.checked)">')+"</th>"}h&&(r+='<th class="pict-row-label-spacer"></th>'),r+="</tr>",n+=r}n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowHeader-ExtraPrefix",'getGroup("'.concat(e.GroupIndex,'")')),p&&(n+='<th class="pict-row-label-header pict-tabular-row-select-header">'.concat(this._escapeHTML(e._RowSelectionConfig.HeaderLabel),"</th>"));for(let r=0;r<a.length;r++){let o='getGroup("'.concat(e.GroupIndex,'").RowLabelHeaderCells.').concat(r);n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowLabel-HeaderCell",o)}u&&(n+='<th class="pict-row-label-header pict-tabular-editing-controls-header"></th>');let g=0;for(let o=0;o<e.supportingManifest.elementAddresses.length;o++){let a=e.supportingManifest.elementAddresses[o],l=e.supportingManifest.elementDescriptors[a];if("PictForm"in l||(l.PictForm={}),l.PictForm.TabularHidden)continue;l.PictForm.InputIndex=o,l.PictForm.GroupIndex=e.GroupIndex,l.PictForm.RowIndex=0,s||(n+=c?this._buildSortableHeaderCell(t,e,l,o):i.getMetatemplateTemplateReference(t,"-TabularTemplate-HeaderCell",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'))),r+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Cell-Prefix",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'));let p="PictForm"in l&&l.PictForm.InputType?l.PictForm.InputType:"Default";r+=i.getTabularInputMetatemplateTemplateReference(t,l.DataType,p,'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'),e.GroupIndex,o),r+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Cell-Postfix",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")')),g++}n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowHeader-ExtraPostfix",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowHeader-Postfix",'getGroup("'.concat(e.GroupIndex,'")'));for(let i=0;i<l.length;i++){let n=0;for(let t=0;t<l[i].length;t++)n+=l[i][t].ColumnSpan||1;n!==g&&this.log.warn("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] tabular group [").concat(e.Hash,"] header row ").concat(i," total ColumnSpan (").concat(n,") does not match data column count (").concat(g,"). Header will visually misalign."))}this._computeRowLabelMetadata(t,e);let f="";return f+=i.getMetatemplateTemplateReferenceRaw(t,"-TabularTemplate-Row-Prefix","Record"),f+=i.getMetatemplateTemplateReferenceRaw(t,"-TabularTemplate-Row-ExtraPrefix","Record"),(a.length>0||p)&&(f+="{~TRL:".concat(t.Hash,"~}")),u&&(f+="{~TEC:".concat(t.Hash,"~}")),f+="\n\n{~T:".concat(e.SectionTabularRowTemplateHash,":Record~}\n"),f+=i.getMetatemplateTemplateReferenceRaw(t,"-TabularTemplate-Row-ExtraPostfix","Record"),f+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Row-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n+="\n\n{~MTVS:".concat(e.SectionTabularRowVirtualTemplateHash,":").concat(e.GroupIndex,":").concat(t.getMarshalDestinationAddress(),".").concat(e.RecordSetAddress,"~}\n"),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),this.pict.TemplateProvider.addTemplate(e.SectionTabularRowVirtualTemplateHash,f),this.pict.TemplateProvider.addTemplate(e.SectionTabularRowTemplateHash,r),n}onGroupLayoutInitialize(t,e){return!e||(this._reapplyTabularSelectionHighlights(t,e),!0)}onDataMarshalToForm(t,e){if(!e)return!0;if(e._RebuildInProgress)return!0;if(Array.isArray(e.DynamicColumns)&&e.DynamicColumns.length>0&&this.fable.ManifestFactory&&"function"==typeof this.fable.ManifestFactory._resolveDynamicColumns){let i=this.fable.ManifestFactory._resolveDynamicColumns(t,e);if(i&&i.changed){e._RebuildInProgress=!0;try{t.rebuildCustomTemplate(),t.render()}finally{e._RebuildInProgress=!1}return this._reapplyTabularSelectionHighlights(t,e),!0}}return this._computeRowLabelMetadata(t,e),this._reapplyTabularSelectionHighlights(t,e),!0}}},{"../Pict-Provider-DynamicLayout.js":45}],83:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js"),r=t("./Pict-Layout-TuiGrid/Pict-Section-TuiGrid.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.options,this.pict,this.log,this.viewGridConfigurations={},this.viewTuiGrids={},this.viewGridState={}}getGridHtmlID(t,e){return"View-".concat(t.UUID,"-GroupTuiGrid-").concat(e.GroupIndex)}getViewTuiHtmlID(t,e){return"#".concat(this.getGridHtmlID(t,e))}getViewGrid(t,e){let i=this.getGridHtmlID(t,e);return this.viewTuiGrids.hasOwnProperty(i)?this.viewTuiGrids[i]:null}createViewTuiGrid(t,e){let i=this.getGridHtmlID(t,e);this.viewTuiGrids.hasOwnProperty(i)&&this.log.info("Dynamic TuiGrid view [".concat(t.UUID,"]::[").concat(t.Hash,"] is reinitializing a TuiGrid in group ").concat(e.GroupIndex," TuiGrid UUID [").concat(i,"]."));let n=this.getViewTuiConfiguration(t,e),o=this.pict.addView(i,n,r);return o.cachedGridData=this.generateDataRepresentation(t,e),o.initialize(),this.viewTuiGrids[i]=o,o}getViewTuiConfiguration(t,e){var i,n;let o=this.getGridHtmlID(t,e);if(!this.viewGridConfigurations.hasOwnProperty(o)){let a=JSON.parse(JSON.stringify(r.default_configuration));this.viewGridConfigurations[o]=a,a.DefaultDestinationAddress=this.getViewTuiHtmlID(t,e),a.TargetElementAddress=this.getViewTuiHtmlID(t,e),a.TuiColumnSchema=[];for(let r=0;r<e.supportingManifest.elementAddresses.length;r++){let o=e.supportingManifest.elementAddresses[r],s=e.supportingManifest.elementDescriptors[o];"PictForm"in s||(s.PictForm={}),s.PictForm.InputIndex=r,s.PictForm.GroupIndex=e.GroupIndex,s.PictForm.RowIndex=0;let c={header:s.Name,name:s.Hash,PictTriggerSolveOnChange:!0,PictSectionFormInput:s};switch(s.DataType){case"Number":case"PreciseNumber":c.editor={type:"EditorNumber",options:{}},c.editor.options.decimalPrecision=null!==(i=null==s||null===(n=s.PictForm)||void 0===n?void 0:n.DecimalPrecision)&&void 0!==i?i:10;break;case"String":c.editor="text";break;case"DateTime":c.editor={type:"datePicker",options:{format:"yyyy-MM-dd"}}}switch(s.PictForm.InputType){case"Option":{c.editor={type:"select",options:{listItems:[]}};let e=s.PictForm.SelectOptions;if(s.PictForm.SelectOptionsPickList&&this.pict.providers.DynamicMetaLists.hasList(t.Hash,s.PictForm.SelectOptionsPickList)&&(e=this.pict.providers.DynamicMetaLists.getList(t.Hash,s.PictForm.SelectOptionsPickList)),e&&Array.isArray(e))for(let t=0;t<e.length;t++){let i={value:e[t].id,text:e[t].text};c.editor.options.listItems.push(i)}break}}a.TuiColumnSchema.push(c)}}return this.viewGridConfigurations[o]}generateGroupLayoutTemplate(t,e){if(!e.supportingManifest)return this.log.error("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] error generating tabular metatemplate: missing group manifest ").concat(e.RecordManifest," from supportingManifests.")),"";let i=this.pict.providers.MetatemplateGenerator,n="";return n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),e.TuiGridHTMLID=this.getGridHtmlID(t,e),n+=i.getMetatemplateTemplateReference(t,"-TuiGrid-Container",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-TuiGrid-Controls",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n}generateDataRepresentation(t,e){let i=[];this.viewGridState[this.getGridHtmlID(t,e)]=i;let n=t.getTabularRecordSet(e.GroupIndex);if(Array.isArray(n))for(let t=0;t<n.length;t++){let r={RecordIndex:t},o=n[t];for(let t=0;t<e.supportingManifest.elementAddresses.length;t++){let i=e.supportingManifest.elementDescriptors[e.supportingManifest.elementAddresses[t]];i&&e.supportingManifest.setValueAtAddress(r,i.Hash,e.supportingManifest.getValueByHash(o,i.Hash))}i.push(r)}return i}onGroupLayoutInitialize(t,e){let i=this.createViewTuiGrid(t,e);if(i.render(),i.tuiGrid){const n=i.tuiGrid;n.View=t,n.Group=e}return!0}onDataMarshalToForm(t,e){let i=this.getViewGrid(t,e);if(!i)return this.log.error("PICT Form TuiGrid [".concat(t.UUID,"]::[").concat(t.Hash,"] error marshalling data to form: missing TuiGrid for group ").concat(e.GroupIndex,"; skipping marshal.")),!1;let n=t.getTabularRecordSet(e.GroupIndex),r=i.tuiGrid.getData();if(Array.isArray(n))for(let o=0;o<n.length;o++)try{let a=n[o],s=r[o];for(let n=0;n<e.supportingManifest.elementAddresses.length;n++){let r=e.supportingManifest.elementDescriptors[e.supportingManifest.elementAddresses[n]];if(r){let n=e.supportingManifest.getValueAtAddress(s,r.Hash),c=e.supportingManifest.getValueByHash(a,r.Hash);n!==c&&(this.log.trace("PICT Form TuiGrid Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] updating tabular record ").concat(o," element ").concat(r.Hash," from [").concat(n,"] to [").concat(c,"].")),i.tuiGrid.setValue(o,r.Hash,c))}}}catch(e){this.log.error("PICT Form TuiGrid [".concat(t.UUID,"]::[").concat(t.Hash,"] gross error marshalling data to form: ").concat(e))}return!0}addRow(t,e){if(!(t in this.pict.views))return this.log.error("PICT Form View [".concat(t,"] error adding row: no matching view found in pict.")),!1;let i=this.pict.views[t],n=i.getGroup(e);if(!n)return this.log.error("PICT Form View [".concat(t,"] error adding row: no matching group index ").concat(e," found in view.")),!1;let r=i.sectionManifest.getValueByHash(i.getMarshalDestinationObject(),n.RecordSetAddress),o=n.supportingManifest.populateDefaults({});if(Array.isArray(r))r.push(o);else if("object"==typeof r){r[i.fable.getUUID()]=o}let a=this.getViewGrid(i,n);a&&a.tuiGrid.appendRow(JSON.parse(JSON.stringify(o)))}}},{"../Pict-Provider-DynamicLayout.js":45,"./Pict-Layout-TuiGrid/Pict-Section-TuiGrid.js":84}],84:[function(t,e,i){const n=t("pict-section-tuigrid");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.viewGridConfigurations={},this.cachedGridData=[]}customConfigureGridSettings(){return this.gridSettings.data=this.cachedGridData,super.customConfigureGridSettings()}changeHandler(t){for(let e=0;e<t.changes.length;e++){let i=t.changes[e],n=t.instance.getValue(i.rowKey,"RecordIndex");t.instance.View.setDataTabularByHash(t.instance.Group.GroupIndex,i.columnName,n,i.value)}return super.changeHandler(t)}}},{"pict-section-tuigrid":30}],85:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){let i=this.pict.providers.MetatemplateGenerator,n="";"Rows"in e||(e.Rows=[]),n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-Template-VerticalRow-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let r=0;r<e.Rows.length;r++){let o=e.Rows[r];for(let a=0;a<o.Inputs.length;a++){let s=o.Inputs[a];s.PictForm.InputIndex=a,s.PictForm.GroupIndex=e.GroupIndex,s.PictForm.RowIndex=r,n+=i.getVerticalInputMetatemplateTemplateReference(t,s.DataType,s.PictForm.InputType,'getInput("'.concat(e.GroupIndex,'","').concat(r,'","').concat(a,'")'))}}return n+=i.getMetatemplateTemplateReference(t,"-Template-VerticalRow-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n}}},{"../Pict-Provider-DynamicLayout.js":45}],86:[function(t,e,i){const n=t("fable-serviceproviderbase");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.fable,this.log,this.UUID,this.CSV_HEADER=["Form","Form Name","SubManifest","HideTabularEditingControls","GroupRecordSetAddress","DataOnly","Section Name","Section Hash","Group Name","Group Hash","Group Layout","Group CSS","Group Show Title","Row","Width","Minimum Row Count","Maximum Row Count","Input Address","Input Name","Input Hash","Input Extra","Units","DataType","Decimal Precision","InputType","Equation","Equation Ordinal","Default","Description","Tooltip","Input Notes","Entity","EntityColumnFilter","EntityDestination","EntitySingleRecord","TriggerGroup","TriggerAddress","TriggerAllInputs","MarshalEmptyValues","ChartType","ChartLabelsAddress","ChartLabelsSolver","ChartDatasetsAddress","ChartDatasetsLabel","ChartDatasetsSolvers"],this.CSV_COLUMN_MAP={};for(let t=0;t<this.CSV_HEADER.length;t++){let e=this.CSV_HEADER[t];this.CSV_COLUMN_MAP[e]=t}}getRowFromDescriptor(t,e,i){let n=new Array(this.CSV_HEADER.length).fill("");if(!i||"object"!=typeof i||!e||"string"!=typeof e)return!1;let r=i.PictForm;if(n[this.CSV_COLUMN_MAP.Form]=t,n[this.CSV_COLUMN_MAP["Form Name"]]=i.FormName||"",n[this.CSV_COLUMN_MAP.SubManifest]="",n[this.CSV_COLUMN_MAP.DataOnly]=void 0===r?"1":"",n[this.CSV_COLUMN_MAP["Section Name"]]="",n[this.CSV_COLUMN_MAP["Section Hash"]]=r&&r.Section?r.Section:i.FormSection?i.FormSection:"",n[this.CSV_COLUMN_MAP["Group Name"]]="",n[this.CSV_COLUMN_MAP["Group Hash"]]=r&&r.Group?r.Group:i.FormGroup?i.FormGroup:"",n[this.CSV_COLUMN_MAP["Group Layout"]]="",n[this.CSV_COLUMN_MAP["Group CSS"]]="",n[this.CSV_COLUMN_MAP["Group Show Title"]]="",n[this.CSV_COLUMN_MAP.Row]=r&&r.Row?r.Row:"",n[this.CSV_COLUMN_MAP.Width]=r&&r.Width?r.Width:"",n[this.CSV_COLUMN_MAP["Minimum Row Count"]]="",n[this.CSV_COLUMN_MAP["Maximum Row Count"]]="",n[this.CSV_COLUMN_MAP["Input Address"]]=i.DataAddress?i.DataAddress:e,n[this.CSV_COLUMN_MAP["Input Name"]]=i.Name||i.DataAddress||e,n[this.CSV_COLUMN_MAP["Input Hash"]]=i.Hash||e,n[this.CSV_COLUMN_MAP["Input Extra"]]="",n[this.CSV_COLUMN_MAP.Units]=r&&r.Units?r.Units:"",n[this.CSV_COLUMN_MAP.DataType]=i.DataType||"String",n[this.CSV_COLUMN_MAP["Decimal Precision"]]=r&&r.DecimalPrecision?r.DecimalPrecision:"",n[this.CSV_COLUMN_MAP.InputType]=r&&r.InputType?r.InputType:"",n[this.CSV_COLUMN_MAP.Equation]="",n[this.CSV_COLUMN_MAP["Equation Ordinal"]]="",n[this.CSV_COLUMN_MAP.Default]=void 0!==i.Default?i.Default:"",n[this.CSV_COLUMN_MAP.Description]=i.Description?i.Description:"",n[this.CSV_COLUMN_MAP.Tooltip]=r&&r.Tooltip?r.Tooltip:"",n[this.CSV_COLUMN_MAP["Input Notes"]]=r&&r.SpreadsheetNotes?r.SpreadsheetNotes:"",n[this.CSV_COLUMN_MAP.Entity]="",n[this.CSV_COLUMN_MAP.EntityColumnFilter]="",n[this.CSV_COLUMN_MAP.EntityDestination]="",n[this.CSV_COLUMN_MAP.EntitySingleRecord]="",r&&r.EntitiesBundle&&Array.isArray(r.EntitiesBundle)&&r.EntitiesBundle.length>0){let t=r.EntitiesBundle[0];if(t.Entity&&(n[this.CSV_COLUMN_MAP.Entity]=t.Entity),t.Filter){let e=t.Filter,i=e.indexOf("FBV~"),r=e.indexOf("~EQ~");if(i>=0&&r>i){let t=e.substring(i+4,r);n[this.CSV_COLUMN_MAP.EntityColumnFilter]=t}}t.Destination&&(n[this.CSV_COLUMN_MAP.EntityDestination]=t.Destination),t.SingleRecord&&(n[this.CSV_COLUMN_MAP.EntitySingleRecord]="true")}if(n[this.CSV_COLUMN_MAP.TriggerGroup]="",n[this.CSV_COLUMN_MAP.TriggerAddress]="",n[this.CSV_COLUMN_MAP.TriggerAllInputs]="",n[this.CSV_COLUMN_MAP.MarshalEmptyValues]="",r&&r.AutofillTriggerGroup){let t;Array.isArray(r.AutofillTriggerGroup)&&r.AutofillTriggerGroup.length>0?t=r.AutofillTriggerGroup[0]:"object"==typeof r.AutofillTriggerGroup&&(t=r.AutofillTriggerGroup),t&&(t.TriggerGroupHash&&(n[this.CSV_COLUMN_MAP.TriggerGroup]=t.TriggerGroupHash),t.TriggerAllInputs&&(n[this.CSV_COLUMN_MAP.TriggerAllInputs]="true"),t.TriggerAddress&&(n[this.CSV_COLUMN_MAP.TriggerAddress]=t.TriggerAddress),t.MarshalEmptyValues&&(n[this.CSV_COLUMN_MAP.MarshalEmptyValues]="true"))}if(n[this.CSV_COLUMN_MAP.ChartType]=r&&r.ChartType?r.ChartType:"",n[this.CSV_COLUMN_MAP.ChartLabelsAddress]=r&&r.ChartLabelsAddress?r.ChartLabelsAddress:"",n[this.CSV_COLUMN_MAP.ChartLabelsSolver]=r&&r.ChartLabelsSolver?r.ChartLabelsSolver:"",n[this.CSV_COLUMN_MAP.ChartDatasetsAddress]=r&&r.ChartDatasetsAddress?r.ChartDatasetsAddress:"",n[this.CSV_COLUMN_MAP.ChartDatasetsLabel]=r&&r.ChartDatasetsSolvers&&Array.isArray(r.ChartDatasetsSolvers)&&r.ChartDatasetsSolvers.length>0?r.ChartDatasetsSolvers[0].Label:"",n[this.CSV_COLUMN_MAP.ChartDatasetsSolvers]=r&&r.ChartDatasetsSolvers&&Array.isArray(r.ChartDatasetsSolvers)&&r.ChartDatasetsSolvers.length>0?r.ChartDatasetsSolvers[0].DataSolver:"",r&&"Option"==r.InputType&&r.SelectOptions&&Array.isArray(r.SelectOptions)){let t="";for(let e=0;e<r.SelectOptions.length;e++){let i=r.SelectOptions[e];i.id&&i.text&&(t.length>0&&(t+=","),t+="".concat(i.id,"^").concat(i.text))}n[this.CSV_COLUMN_MAP["Input Extra"]]=t}return n}createTabularArrayFromManifests(t){let e=[],i="Default";if(t&&t.Scope&&"string"==typeof t.Scope&&(i=t.Scope),t&&t.Form&&"string"==typeof t.Form&&(i=t.Form),e.push(this.CSV_HEADER),"object"!=typeof t)return this.log.error("ManifestConversionToCSV: Provided manifest is not an object; cannot convert to CSV."),e;if(!t.Descriptors||"object"!=typeof t.Descriptors)return this.log.error("ManifestConversionToCSV: Provided manifest does not have a valid Descriptors property; cannot convert to CSV."),e;let n=Object.keys(t.Descriptors);for(let r=0;r<n.length;r++){let o=n[r],a=t.Descriptors[o];if(!a||"object"!=typeof a)continue;let s=this.getRowFromDescriptor(i,o,a);s&&e.push(s)}for(let n=0;n<t.Sections.length;n++){let r=t.Sections[n],o=r.Hash||"DEFAULT_SECTION_HASH";if(r&&"object"==typeof r){if(r.Groups&&Array.isArray(r.Groups))for(let n=0;n<r.Groups.length;n++){let a=r.Groups[n],s=a.Hash;if(("Tabular"==a.Layout||"RecordSet"==a.Layout)&&a.RecordSetAddress&&a.RecordManifest){let n=-1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){let e=i[this.CSV_COLUMN_MAP["Section Hash"]],r=i[this.CSV_COLUMN_MAP["Group Hash"]];if(e===o&&r===s){n=t;break}if(i[this.CSV_COLUMN_MAP["Input Address"]]===a.RecordSetAddress){i[this.CSV_COLUMN_MAP["Section Hash"]]=o,i[this.CSV_COLUMN_MAP["Group Hash"]]=s,n=t;break}}}if(n>=0){let r=e[n];r[this.CSV_COLUMN_MAP.SubManifest]=a.RecordManifest,r[this.CSV_COLUMN_MAP.GroupRecordSetAddress]=a.RecordSetAddress,r[this.CSV_COLUMN_MAP.HideTabularEditingControls]=a.HideTabularEditingControls,a.MinimumRowCount&&(r[this.CSV_COLUMN_MAP["Minimum Row Count"]]=a.MinimumRowCount),a.MaximumRowCount&&(r[this.CSV_COLUMN_MAP["Maximum Row Count"]]=a.MaximumRowCount);let c=t.ReferenceManifests[a.RecordManifest],l=Object.keys(c.Descriptors);for(let t=0;t<l.length;t++){let r=l[t],p=c.Descriptors[r];if(!p||"object"!=typeof p)continue;let d=this.getRowFromDescriptor(i,r,p);d&&(d[this.CSV_COLUMN_MAP["Section Hash"]]=o,d[this.CSV_COLUMN_MAP["Group Hash"]]=s,d[this.CSV_COLUMN_MAP.SubManifest]=a.RecordManifest,e.splice(n+1,0,d))}}}if(s)for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){i[this.CSV_COLUMN_MAP["Group Hash"]]===s&&(i[this.CSV_COLUMN_MAP["Group Name"]]=a.Name||s,a.Layout&&(i[this.CSV_COLUMN_MAP["Group Layout"]]=a.Layout),a.hasOwnProperty("ShowTitle")&&(i[this.CSV_COLUMN_MAP["Group Show Title"]]=a.ShowTitle),a.hasOwnProperty("CSSClass")&&(i[this.CSV_COLUMN_MAP["Group CSS"]]=a.CSSClass))}}}for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){i[this.CSV_COLUMN_MAP["Section Hash"]]===o&&(i[this.CSV_COLUMN_MAP["Section Name"]]=r.Name||o)}}if(r.Solvers&&Array.isArray(r.Solvers))for(let t=0;t<r.Solvers.length;t++){let n=r.Solvers[t],a=!1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){let t=i[this.CSV_COLUMN_MAP["Section Hash"]],e=i[this.CSV_COLUMN_MAP.Equation],r=i[this.CSV_COLUMN_MAP.SubManifest];if(!(t!==o||r&&""!=r||e&&0!=e.length)){"string"==typeof n?(i[this.CSV_COLUMN_MAP.Equation]=n,i[this.CSV_COLUMN_MAP["Equation Ordinal"]]=1):"object"==typeof n&&n.Expression&&(i[this.CSV_COLUMN_MAP.Equation]=n.Expression,i[this.CSV_COLUMN_MAP["Equation Ordinal"]]=n.Ordinal||1),a=!0;break}}}if(!a){let a=new Array(this.CSV_HEADER.length).fill("");a[this.CSV_COLUMN_MAP.Form]=i,a[this.CSV_COLUMN_MAP["Section Hash"]]=o,a[this.CSV_COLUMN_MAP.DataOnly]="1",a[this.CSV_COLUMN_MAP.DataType]="String",a[this.CSV_COLUMN_MAP.InputType]="Hidden";let s="Solver_for_".concat(o,"_").concat(t+1);a[this.CSV_COLUMN_MAP["Input Hash"]]=s,a[this.CSV_COLUMN_MAP["Input Name"]]="Auto gen hidden solver entry for ".concat(r.Name||o," #").concat(t+1),a[this.CSV_COLUMN_MAP["Input Address"]]=s,"string"==typeof n?(a[this.CSV_COLUMN_MAP.Equation]=n,a[this.CSV_COLUMN_MAP["Equation Ordinal"]]=1):"object"==typeof n&&n.Expression&&(a[this.CSV_COLUMN_MAP.Equation]=n.Expression,a[this.CSV_COLUMN_MAP["Equation Ordinal"]]=n.Ordinal||1);let c=-1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){i[this.CSV_COLUMN_MAP["Section Hash"]]===o&&(c=t)}}c>=0?e.splice(c+1,0,a):e.push(a)}}if(r.Groups&&Array.isArray(r.Groups))for(let t=0;t<r.Groups.length;t++){let n=r.Groups[t],a=n.Hash;if(n.RecordSetSolvers&&Array.isArray(n.RecordSetSolvers))for(let t=0;t<n.RecordSetSolvers.length;t++){let r=n.RecordSetSolvers[t],s=!1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){let t=i[this.CSV_COLUMN_MAP["Group Hash"]],e=i[this.CSV_COLUMN_MAP.Equation],o=i[this.CSV_COLUMN_MAP.SubManifest];if(t===a&&o==n.RecordManifest&&(!e||0==e.length)){"string"==typeof r?(i[this.CSV_COLUMN_MAP.Equation]=r,i[this.CSV_COLUMN_MAP["Equation Ordinal"]]=1):"object"==typeof r&&r.Expression&&(i[this.CSV_COLUMN_MAP.Equation]=r.Expression,i[this.CSV_COLUMN_MAP["Equation Ordinal"]]=r.Ordinal||1),s=!0;break}}}if(!s){let s=new Array(this.CSV_HEADER.length).fill("");s[this.CSV_COLUMN_MAP.Form]=i,s[this.CSV_COLUMN_MAP["Section Hash"]]=o,s[this.CSV_COLUMN_MAP["Group Hash"]]=a,s[this.CSV_COLUMN_MAP.SubManifest]=n.RecordManifest,s[this.CSV_COLUMN_MAP.DataOnly]="1";let c="Solver_for_".concat(a,"_").concat(t+1);s[this.CSV_COLUMN_MAP["Input Hash"]]=c,s[this.CSV_COLUMN_MAP["Input Name"]]="Auto gen hidden solver entry for ".concat(n.Name||a," #").concat(t+1),s[this.CSV_COLUMN_MAP["Input Address"]]=c,s[this.CSV_COLUMN_MAP.DataType]="String",s[this.CSV_COLUMN_MAP.InputType]="Hidden","string"==typeof r?(s[this.CSV_COLUMN_MAP.Equation]=r,s[this.CSV_COLUMN_MAP["Equation Ordinal"]]=1):"object"==typeof r&&r.Expression&&(s[this.CSV_COLUMN_MAP.Equation]=r.Expression,s[this.CSV_COLUMN_MAP["Equation Ordinal"]]=r.Ordinal||1);let l=-1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){i[this.CSV_COLUMN_MAP["Group Hash"]]===a&&(l=t)}}l>=0?e.splice(l+1,0,s):e.push(s)}}}}}if(e.length>1){let i=e[1];i&&t.FormName&&(i[this.CSV_COLUMN_MAP["Form Name"]]=t.FormName||i[this.CSV_COLUMN_MAP["Form Name"]])}return e}}},{"fable-serviceproviderbase":3}],87:[function(t,e,i){const n=t("fable-serviceproviderbase"),r={Manifest:{Scope:"Default"}};class o extends n{constructor(t,e,i){let n=Object.assign({},JSON.parse(JSON.stringify(r)),e);super(t,e,i),this.fable,this.log,this.UUID,this.manifest=n.Manifest,"Descriptors"in this.manifest||(this.manifest.Descriptors={}),"Sections"in this.manifest||(this.manifest.Sections=[]),"ReferenceManifests"in this.manifest||(this.manifest.ReferenceManifests={}),this.referenceManifestFactories={},this.sectionHashLookup={},this.groupHashLookup={};let o=Object.keys(this.manifest.ReferenceManifests);for(let t=0;t<o.length;t++)this.referenceManifestFactories[o[t]]=this.fable.instantiateServiceProviderWithoutRegistration("ManifestFactory",this.manifest.ReferenceManifests[o[t]],"".concat(this.UUID,"-").concat(o[t]));this.defaultHashCounter=0,this._SanitizeObjectKeyRegex=/[^a-zA-Z0-9_]/gi,this._SanitizeObjectKeyReplacement="_",this._SanitizeObjectKeyInvalid="INVALID"}sanitizeObjectKey(t){return"string"!=typeof t||t.length<1?this._SanitizeObjectKeyInvalid:t.replace(this._SanitizeObjectKeyRegex,this._SanitizeObjectKeyReplacement)}initializeFormGroups(t){let e=Object.keys(t.options.Manifests.Section.Descriptors);for(let i=0;i<e.length;i++){let n=t.options.Manifests.Section.Descriptors[e[i]];if("object"==typeof n&&"PictForm"in n&&"object"==typeof n.PictForm&&"Section"in n.PictForm&&n.PictForm.Section==t.sectionDefinition.Hash){n.PictForm.InformaryDataAddress=e[i],n.PictForm.ViewHash=t.Hash;let r="string"==typeof n.PictForm.Group?n.PictForm.Group:"Default";"Groups"in t.sectionDefinition||(t.sectionDefinition.Groups=[]);let o=t.sectionDefinition.Groups.find(t=>t.Hash==r);o?Array.isArray(o.Rows)||(o.Rows=[]):(o={Hash:r,Name:r,Description:!1,Rows:[]},t.sectionDefinition.Groups.push(o));let a="string"==typeof n.PictForm.Row?n.PictForm.Row:"number"==typeof n.PictForm.Row?"Row_".concat(n.PictForm.Row.toString()):"Row_Default";n.PictForm.RowHash=a;let s=o.Rows.find(t=>t.Hash==a);s||(s={Hash:a,Name:a,Inputs:[]},o.Rows.push(s)),s.Inputs.push(n)}}for(let e=0;e<t.sectionDefinition.Groups.length;e++){let i=t.sectionDefinition.Groups[e];if(i.GroupIndex=e,"HideTitle"in i&&(i.HideTitle=!1),i.hasOwnProperty("Layout")||(i.Layout="Record"),i.hasOwnProperty("Rows")&&Array.isArray(i.Rows)||(i.Rows=[]),"RecordManifest"in i&&(i.supportingManifest=t.fable.instantiateServiceProviderWithoutRegistration("Manifest",t.options.Manifests.Section.ReferenceManifests[i.RecordManifest])),i.supportingManifest){let e=Object.keys(i.supportingManifest.elementDescriptors);for(let n=0;n<e.length;n++){let r=i.supportingManifest.elementDescriptors[e[n]];r.IsTabular=!0,"PictForm"in r||(r.PictForm={}),r.PictForm.ViewHash=t.Hash,r.PictForm.InformaryDataAddress=e[n],"string"==typeof i.RecordSetAddress&&(r.PictForm.InformaryContainerAddress=i.RecordSetAddress),r.RowIdentifierTemplateHash="{~D:Record.RowID~}"}Array.isArray(i.DynamicColumns)&&i.DynamicColumns.length>0&&this._resolveDynamicColumns(t,i)}if(i.RecordSetAddress){let e=t.getMarshalDestinationObject(),n=t.sectionManifest.checkAddressExistsByHash(e,i.RecordSetAddress),r=t.sectionManifest.getValueAtAddress(e,i.RecordSetAddress);if(n?Array.isArray(r)?t.log.trace("RecordSetAddress is an Array for [".concat(i.Hash,"]")):"object"==typeof r?t.log.trace("RecordSetAddress is an Object for [".concat(i.Hash,"]")):t.log.error("RecordSetAddress is not an Array or Object for [".concat(i.Hash,"]; it is a [").concat(typeof r,"] -- likely the data shape will cause erratic problems.")):(t.log.warn("Automatically setting an empty array at [".concat(i.RecordSetAddress,"].")),t.sectionManifest.setValueByHash(e,i.RecordSetAddress,[])),i.MinimumRowCount){r||(t.sectionManifest.setValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress,[]),r=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress));for(let e=r.length;e<i.MinimumRowCount;e++)t.pict.providers.DynamicTabularData.createDynamicTableRowWithoutEvents(t,i.GroupIndex)}}}}_parseDynamicColumnTemplate(t,e){if("string"!=typeof t)return"";if(-1===t.indexOf("{"))return t;try{let i=this.fable.parseTemplate(t,e,null);return"string"==typeof i?i:""}catch(t){return this.log.warn("PICT Form Tabular DynamicColumns template parse failed: ".concat(t&&t.message)),""}}_resolveDynamicColumns(t,e){let i={added:[],removed:[],unchanged:[],changed:!1};if(!e||!Array.isArray(e.DynamicColumns)||0===e.DynamicColumns.length)return i;if(!e.supportingManifest)return this.log.warn("PICT Form Tabular DynamicColumns on group [".concat(e.Hash,"] skipped: no supportingManifest.")),i;Array.isArray(e.DynamicColumnsState)||(e.DynamicColumnsState=[]);let n=t.getMarshalDestinationObject(),r=e.supportingManifest,o=[],a=[],s=[],c=!1;for(let i=0;i<e.DynamicColumns.length;i++){let l=e.DynamicColumns[i];e.DynamicColumnsState[i]||(e.DynamicColumnsState[i]={LastHashes:[],LastHeaderGroups:[]});let p=e.DynamicColumnsState[i];if("string"!=typeof l.SourceAddress||0===l.SourceAddress.length){this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," on group [").concat(e.Hash,"] is missing SourceAddress."));continue}if("string"!=typeof l.HashTemplate||0===l.HashTemplate.length){this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," on group [").concat(e.Hash,"] is missing HashTemplate."));continue}if("string"!=typeof l.InformaryDataAddressTemplate||0===l.InformaryDataAddressTemplate.length){this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," on group [").concat(e.Hash,"] is missing InformaryDataAddressTemplate."));continue}let d=t.sectionManifest.getValueByHash(n,l.SourceAddress);Array.isArray(d)||(d=[]);let u=[],h={},m=[],g={};for(let n=0;n<d.length;n++){let r=d[n],o=r&&"object"==typeof r?Object.assign({},r,{__Index:n,__RowNumber:n+1}):{Value:r,__Index:n,__RowNumber:n+1},a=this._parseDynamicColumnTemplate(l.HashTemplate,o);if(!a)continue;g[a]&&this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," produced duplicate Hash [").concat(a,"] on group [").concat(e.Hash,"]; later row wins.")),g[a]=!0;let s=l.NameTemplate?this._parseDynamicColumnTemplate(l.NameTemplate,o):a,c=this._parseDynamicColumnTemplate(l.InformaryDataAddressTemplate,o);if(!c){this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," produced empty InformaryDataAddress for row ").concat(n," on group [").concat(e.Hash,"]; skipping."));continue}let p=l.HeaderGroupTemplate?this._parseDynamicColumnTemplate(l.HeaderGroupTemplate,o):"",f={Hash:a,Name:s||a,DataType:l.DataType||"String",IsTabular:!0,_DynamicColumnGeneratorIndex:i,_DynamicColumnHeaderGroup:p,PictForm:Object.assign({},l.PictForm||{},{ViewHash:t.Hash,InformaryContainerAddress:e.RecordSetAddress,InformaryDataAddress:c})};u.push(a),h[a]=f,m.push(p)}let f=Array.isArray(p.LastHashes)?p.LastHashes:[],D={};for(let t=0;t<u.length;t++)D[u[t]]=!0;let y=f.filter(t=>!D[t]),v={};for(let t=0;t<f.length;t++)v[f[t]]=!0;let b=u.filter(t=>!v[t]),T=u.filter(t=>v[t]),w=JSON.stringify(m)!==JSON.stringify(p.LastHeaderGroups||[]),S=JSON.stringify(u)!==JSON.stringify(f);for(let t=0;t<y.length;t++){let e=y[t],i=r.elementAddresses.indexOf(e);i>=0&&r.elementAddresses.splice(i,1),delete r.elementDescriptors[e],r.elementHashes&&e in r.elementHashes&&delete r.elementHashes[e]}for(let t=0;t<u.length;t++){let e=u[t],i=r.elementAddresses.indexOf(e);i>=0&&r.elementAddresses.splice(i,1);let n=r.elementDescriptors[e];if(n){let t=h[e];n.Name=t.Name,n.DataType=t.DataType,n.IsTabular=t.IsTabular,n._DynamicColumnGeneratorIndex=t._DynamicColumnGeneratorIndex,n._DynamicColumnHeaderGroup=t._DynamicColumnHeaderGroup,n.PictForm||(n.PictForm={}),Object.assign(n.PictForm,t.PictForm),h[e]=n}else r.elementDescriptors[e]=h[e];r.elementHashes||(r.elementHashes={}),r.elementHashes[e]=e}let P,x=l.InsertAt||"End";if("Start"===x)P=0;else if("object"==typeof x&&null!==x&&"string"==typeof x.After){let t=r.elementAddresses.indexOf(x.After);P=t<0?r.elementAddresses.length:t+1}else P=r.elementAddresses.length;for(let t=0;t<u.length;t++)r.elementAddresses.splice(P+t,0,u[t]);p.LastHashes=u.slice(),p.LastHeaderGroups=m.slice(),(b.length||y.length||w||S)&&(c=!0),o.push.apply(o,b),a.push.apply(a,y),s.push.apply(s,T)}return{added:o,removed:a,unchanged:s,changed:c}}addDescriptor(t){t.DataAddress in this.manifest.Descriptors&&this.log.info("[ERROR] Duplicate descriptor hash found:",t),this.manifest.Descriptors[t.DataAddress]=t}getManifestSection(t){for(const e of this.manifest.Sections)if(e.Hash===t)return e;const e={Name:t,Hash:t,Solvers:[],Groups:[]};return this.manifest.Sections.push(e),e}getManifestGroup(t,e){let i="string"==typeof t?this.getManifestSection(t):t;for(const t of i.Groups)if(t.Hash===e)return t;const n={Name:e,Hash:e,Rows:[],RecordSetSolvers:[]};return i.Groups.push(n),n}tabularRowLint(t){return t?!!t.Form||(this.log.error("Form is missing from record:",t),!1):(this.log.error("Record is missing from record:",t),!1)}decorateChartDescriptorFromTabularRow(t,e,i){let n=t,r=e,o=i||"";if(n.ChartType&&(r.PictForm.ChartType=n.ChartType),""==o&&(n.ChartLabelsAddress&&(r.PictForm.ChartLabelsAddress=n.ChartLabelsAddress),n.ChartLabelsSolver&&(r.PictForm.ChartLabelsSolver=n.ChartLabelsSolver),n.ChartDatasetsAddress&&(r.PictForm.ChartDatasetsAddress=n.ChartDatasetsAddress)),n["ChartDatasetsSolver".concat(o)]){let t={DataSolver:n["ChartDatasetsSolver".concat(o)]};n["ChartDatasetsLabel".concat(o)]?t.Label=n["ChartDatasetsLabel".concat(o)]:t.Label="Data",n["ChartDataSetsSolverChartType".concat(o)]&&(t.ChartType=n["ChartDataSetsSolverChartType".concat(o)]),r.PictForm.ChartDatasetsSolvers&&Array.isArray(r.PictForm.ChartDatasetsSolvers)||(r.PictForm.ChartDatasetsSolvers=[]),r.PictForm.ChartDatasetsSolvers.push(t)}}tabularRowAddDescriptor(t,e){var i,n,r,o,a,s,c,l,p,d,u,h;if("object"!=typeof e)return this.log.error("Invalid record passed to addManifestDescriptor: ".concat(e)),!1;let m=JSON.parse(JSON.stringify(e));m["Input Hash"]=(null===(i=m["Input Hash"])||void 0===i||null===(n=i.trim)||void 0===n?void 0:n.call(i))||"DefaultHash".concat(this.defaultHashCounter++),m["Input Address"]=(null===(r=m["Input Address"])||void 0===r||null===(o=r.trim)||void 0===o?void 0:o.call(r))||"DefaultData.InputHash_".concat(m["Input Hash"]),m["Input Name"]=(null===(a=m["Input Name"])||void 0===a||null===(s=a.trim)||void 0===s?void 0:s.call(a))||"Auto Input ".concat(m["Input Hash"]),m.DataType=(null===(c=m.DataType)||void 0===c||null===(l=c.trim)||void 0===l?void 0:l.call(c))||"String";const g={Hash:m["Input Hash"],Name:m["Input Name"],DataAddress:m["Input Address"],DataType:m.DataType,PictForm:{}};if(m.Default&&(g.Default=m.Default),m.InputType&&(g.PictForm.InputType=m.InputType),m.Row&&(g.PictForm.Row=m.Row),m.Width&&(g.PictForm.Width=m.Width),m["Input Notes"]&&(g.PictForm.SpreadsheetNotes=m["Input Notes"]),m.Description&&(g.Description=m.Description),m.Units&&(g.PictForm.Units=m.Units),m.Tooltip&&(g.PictForm.Tooltip=m.Tooltip),"Option"==g.PictForm.InputType&&m["Input Extra"]){let t=[],e=m["Input Extra"].split(",");for(let i=0;i<e.length;i++)if(""!=e[i].trim()){let n=e[i].split("^");2==n.length?t.push({id:n[0].trim(),text:n[1].trim()}):t.push({id:e[i].trim(),text:e[i].trim()})}t.length>0&&(g.PictForm.SelectOptions=t)}if(("TabSectionSelector"==g.PictForm.InputType||"TabGroupSelector"==g.PictForm.InputType)&&m["Input Extra"]){let t=[],e=[],i=m["Input Extra"].split(",");for(let n=0;n<i.length;n++)if(""!=i[n].trim()){let r=i[n].split("^");r.length>=2?(t.push(r[0].trim()),e.push(r[1].trim())):(t.push(r[0].trim()),e.push(r[0].trim()))}t.length>0&&("TabSectionSelector"==g.PictForm.InputType?(g.PictForm.TabSectionSet=t,g.PictForm.TabSectionNames=e):"TabGroupSelector"==g.PictForm.InputType&&(g.PictForm.TabGroupSet=t,g.PictForm.TabGroupNames=e))}if("TriggerGroup"in m&&"string"==typeof m.TriggerGroup&&""!=m.TriggerGroup){if(Array.isArray(g.PictForm.Providers)||(g.PictForm.Providers=[]),g.PictForm.Providers.push("Pict-Input-AutofillTriggerGroup"),!Array.isArray(g.PictForm.AutofillTriggerGroup)){const t=g.PictForm.AutofillTriggerGroup;g.PictForm.AutofillTriggerGroup=[],t&&g.PictForm.AutofillTriggerGroup.push(t)}const t=m.TriggerGroup.split(","),e="TriggerAddress"in m?m.TriggerAddress.split(","):[],i="TriggerAllInputs"in m?m.TriggerAllInputs.split(","):[];for(let n=0;n<t.length;n++){var f,D,y,v;const r={TriggerGroupHash:t[n].trim(),MarshalEmptyValues:!!m.MarshalEmptyValues},o=null===(f=e[n])||void 0===f||null===(D=f.trim)||void 0===D?void 0:D.call(f);o&&(r.TriggerAddress=o);const a=null===(y=i[n])||void 0===y||null===(v=y.trim)||void 0===v?void 0:v.call(y);null==a||"true"!=a.toLowerCase()&&"x"!=a.toLowerCase()&&"1"!=a.toLowerCase()||(r.TriggerAllInputs=!0),"Option"==g.PictForm.InputType&&(r.SelectOptionsRefresh=!0),g.PictForm.AutofillTriggerGroup.push(r)}}"string"==typeof m.Entity&&m.Entity.trim()&&("string"==typeof m.EntityColumnFilter&&m.EntityColumnFilter.trim()||"string"==typeof m.EntityFilterTemplate&&m.EntityFilterTemplate.trim())&&"string"==typeof m.EntityDestination&&m.EntityDestination.trim()&&(Array.isArray(g.PictForm.Providers)||(g.PictForm.Providers=[]),g.PictForm.Providers.includes("Pict-Input-EntityBundleRequest")||g.PictForm.Providers.push("Pict-Input-EntityBundleRequest"),g.PictForm.EntitiesBundle=[{Entity:m.Entity,Filter:m.EntityFilterTemplate&&m.EntityFilterTemplate.trim()||"FBV~".concat(m.EntityColumnFilter.trim(),"~EQ~{~D:Record.Value~}"),Destination:m.EntityDestination,SingleRecord:m.EntitySingleRecord&&"false"!==m.EntitySingleRecord}]);let b=t;if("SubManifest"in m&&m.SubManifest&&"TabularAddress"!=m.InputType&&(g.IsTabular=!0,m.SubManifest in t.manifest.ReferenceManifests||(t.referenceManifestFactories[m.SubManifest]=this.fable.instantiateServiceProviderWithoutRegistration("ManifestFactory",{Manifest:{Scope:m.SubManifest}},"".concat(this.UUID,"-").concat(m.SubManifest)),t.manifest.ReferenceManifests[m.SubManifest]=t.referenceManifestFactories[m.SubManifest].manifest),t=t.referenceManifestFactories[m.SubManifest]),"Decimal Precision"in m&&m["Decimal Precision"]&&""!=m["Decimal Precision"])try{g.PictForm.DecimalPrecision=parseInt(m["Decimal Precision"])}catch(t){this.log.error("Failed to parse Decimal Precision for ".concat(m["Input Hash"],": ").concat(t))}const T=null===(p=m["Section Name"])||void 0===p||null===(d=p.trim)||void 0===d?void 0:d.call(p);let w=this.sanitizeObjectKey(T||"Default_Section");m["Section Hash"]&&""!=m["Section Hash"]&&(w=this.sanitizeObjectKey(m["Section Hash"])),g.PictForm.Section=w;const S=b.getManifestSection(w);T&&(S.Name=T),m["Section CSS"]&&(S.CSSClass=m["Section CSS"]);const P=null===(u=m["Group Name"])||void 0===u||null===(h=u.trim)||void 0===h?void 0:h.call(u);let x=this.sanitizeObjectKey(P||"Default_Group");m["Group Hash"]&&""!=m["Group Hash"]&&(x=this.sanitizeObjectKey(m["Group Hash"])),g.PictForm.Group=x;const I=b.getManifestGroup(S,x);if(I.Name=P||"",m["Group CSS"]&&(I.CSSClass=m["Group CSS"]),m["Group Layout"]&&(I.Layout=m["Group Layout"]),m["Minimum Row Count"])try{I.MinimumRowCount=parseInt(m["Minimum Row Count"])}catch(t){this.log.error("Failed to parse Minimum Row Count for ".concat(m["Input Hash"],": ").concat(t))}if(m["Maximum Row Count"])try{I.MaximumRowCount=parseInt(m["Maximum Row Count"])}catch(t){this.log.error("Failed to parse Maximum Row Count for ".concat(m["Input Hash"],": ").concat(t))}if(!m.HideTabularEditingControls||"1"!=m.HideTabularEditingControls&&"true"!=m.HideTabularEditingControls.toLowerCase()&&"t"!=m.HideTabularEditingControls.toLowerCase()&&"y"!=m.HideTabularEditingControls.toLowerCase()||(I.HideTabularEditingControls=!0),m["Group Show Title"]&&""!=m["Group Show Title"])switch(m["Group Show Title"].toLowerCase()){case 1:case"1":case"true":I.ShowTitle=!0;break;case 0:case"0":case"false":I.ShowTitle=!1}if(g.Hash in t.manifest.Descriptors&&this.log.info("[ERROR] Duplicate descriptor hash found ".concat(g.Hash,". This will overwrite the original descriptor.")),"TabularAddress"==m.InputType&&(I.Layout="Tabular",this.log.info("Group ".concat(I.Hash," RSA ").concat(m.GroupRecordSetAddress," -> Descriptor ").concat(g.DataAddress)),m.GroupRecordSetAddress&&(m.GroupRecordSetAddress,1)&&m.GroupRecordSetAddress.length>0?I.RecordSetAddress=m.GroupRecordSetAddress:I.RecordSetAddress=g.DataAddress,I.RecordManifest=m.SubManifest),m.Equation&&!this._isTrue(m.Validator)){const t=m.Equation.trim();let e=1;if(m["Equation Ordinal"])try{e=parseInt(m["Equation Ordinal"])}catch(t){this.log.error("Failed to parse Equation Ordinal for ".concat(m["Input Hash"],": ").concat(t))}this.log.trace("Adding solver to ".concat(m.Form," --\x3e ").concat(I.Name," for ").concat(m["Input Hash"]," Ordinal ").concat(e,": ").concat(m.Equation)),"Tabular"==I.Layout||"RecordSet"==I.Layout?1==e?I.RecordSetSolvers.push(t):I.RecordSetSolvers.push({Ordinal:e,Expression:t}):1==e?S.Solvers.push(t):S.Solvers.push({Ordinal:e,Expression:t})}this.onTabularRowAddDescriptor(m,S,I,g),m.DataOnly&&g.PictForm&&(g.PictForm.Group&&(g.FormGroup=g.PictForm.Group),g.PictForm.Section&&(g.FormSection=g.PictForm.Section),delete g.PictForm),"Chart"==m.InputType&&g.PictForm&&(this.decorateChartDescriptorFromTabularRow(m,g,""),this.decorateChartDescriptorFromTabularRow(m,g,"1"),this.decorateChartDescriptorFromTabularRow(m,g,"2"),this.decorateChartDescriptorFromTabularRow(m,g,"3"),this.decorateChartDescriptorFromTabularRow(m,g,"4"),this.decorateChartDescriptorFromTabularRow(m,g,"5"),this.decorateChartDescriptorFromTabularRow(m,g,"6"),this.decorateChartDescriptorFromTabularRow(m,g,"7"),this.decorateChartDescriptorFromTabularRow(m,g,"8"),this.decorateChartDescriptorFromTabularRow(m,g,"9"));const A=Object.keys(m);let C=this.fable.newManyfest();for(let t=0;t<A.length;t++){let e=A[t];if(e.startsWith("Descriptor_Extension_")){const t=e.replace("Descriptor_Extension_","");try{let i=t,n=m[e];n&&C.setValueAtAddress(g,i,n)}catch(t){this.log.error("Failed to set Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"]: ").concat(t))}}if(e.startsWith("Descriptor_Float_Extension_")){const t=e.replace("Descriptor_Float_Extension_","");try{let i=t,n=m[e],r=parseFloat(n);isNaN(r)||(C.setValueAtAddress(g,i,r),this.log.trace("Set Float Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"] to value [").concat(r,"]")))}catch(t){this.log.error("Failed to set Float Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"]: ").concat(t))}}if(e.startsWith("Descriptor_Integer_Extension_")){const t=e.replace("Descriptor_Integer_Extension_","");try{let i=t,n=m[e],r=parseInt(n);isNaN(r)||C.setValueAtAddress(g,i,r)}catch(t){this.log.error("Failed to set Integer Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"]: ").concat(t))}}if(e.startsWith("Descriptor_Boolean_Extension_")){const t=e.replace("Descriptor_Boolean_Extension_","");try{let i,n=t,r=m[e];"x"!=r.toLowerCase()&&"y"!=r.toLowerCase()&&"yes"!=r.toLowerCase()&&"t"!=r.toLowerCase()&&"true"!=r.toLowerCase()&&"1"!=r||(i=!0),"n"!=r.toLowerCase()&&"no"!=r.toLowerCase()&&"f"!=r.toLowerCase()&&"false"!=r.toLowerCase()&&"0"!=r||(i=!1),!0===i||!1===i?C.setValueAtAddress(g,n,i):r&&this.log.warn("Could not parse Boolean value [".concat(r,"] for Descriptor Boolean Extension [").concat(e,"] on descriptor [").concat(g.Hash,"]"))}catch(t){this.log.error("Failed to set Boolean Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"]: ").concat(t))}}}return"TabularAddress"!=m.InputType?t.addDescriptor(g):b.addDescriptor(g),g}tabularRowAddValidator(t,e){if(e.Equation){const i=e.Equation.trim();let n=1;if(e["Equation Ordinal"])try{n=parseInt(e["Equation Ordinal"])}catch(t){this.log.error("Failed to parse Equation Ordinal for ".concat(e["Input Hash"],": ").concat(t))}this.log.trace("Adding solver to ".concat(e.Form," Validation Solvers Ordinal ").concat(n,": ").concat(e.Equation)),Array.isArray(t.ValidationSolvers)||(t.ValidationSolvers=[]),1==n?t.ValidationSolvers.push(i):t.ValidationSolvers.push({Ordinal:n,Expression:i})}}onTabularRowAddDescriptor(t,e,i,n){}migrateAutofillTriggerGroupSolvers(t){for(const e of Object.values(t)){const t=e.manifest,i=[];for(const e of t.Sections||[]){if(Array.isArray(e.Solvers))for(let t=0;t<e.Solvers.length;t++){const n=e.Solvers[t],r="string"==typeof n?n:n.Expression;"string"==typeof r&&r.startsWith("TriggerGroup:")&&(i.push(n),e.Solvers.splice(t,1),--t)}for(const t of e.Groups||[])if(Array.isArray(t.RecordSetSolvers))for(let e=0;e<t.RecordSetSolvers.length;e++){const n=t.RecordSetSolvers[e],r="string"==typeof n?n:n.Expression;"string"==typeof r&&r.startsWith("TriggerGroup:")&&(i.push(n),t.RecordSetSolvers.splice(e,1),--e)}}for(const e of i){const i="string"==typeof e?e:e.Expression;let n=_slicedToArray(i.split(":"),4),r=(n[0],n[1]),o=n[2],a=n[3];if(a||(a=o,o="post"),!a||""===a.trim()){this.log.error("Skipping migration of empty TriggerGroup solver expression in manifest [".concat(t.Scope,"] for TriggerGroup [").concat(r,"]"));continue}const s=Object.values(t.Descriptors).find(t=>{var e;if(null===(e=t.PictForm)||void 0===e||!e.AutofillTriggerGroup)return!1;return(Array.isArray(t.PictForm.AutofillTriggerGroup)?t.PictForm.AutofillTriggerGroup:[t.PictForm.AutofillTriggerGroup]).some(t=>t.TriggerGroupHash===r)});if(!s){this.log.error("Could not find descriptor for TriggerGroup [".concat(r,"] in manifest [").concat(t.Scope,"] while migrating solver expression: ").concat(i));continue}const c=(Array.isArray(s.PictForm.AutofillTriggerGroup)?s.PictForm.AutofillTriggerGroup:[s.PictForm.AutofillTriggerGroup]).find(t=>t.TriggerGroupHash===r);if(!c){this.log.error("Could not find TriggerGroup entry for TriggerGroup [".concat(r,"] in descriptor [").concat(s.Hash,"] while migrating solver expression: ").concat(i));continue}let l=e;"string"==typeof e?l=a:e.Expression=a,"pre"===o.toLowerCase()?(c.PreSolvers=c.PreSolvers||[],c.PreSolvers.push(l)):(c.PostSolvers=c.PostSolvers||[],c.PostSolvers.push(l))}}}_isTrue(t){if("boolean"==typeof t)return t;if("string"==typeof t){const e=t.trim().toLowerCase();return"true"===e||"t"===e||"yes"===e||"y"===e||"1"===e}return 1==t||1==t}createManifestsFromTabularArray(t){if(!t||!Array.isArray(t))return this.log.info("Invalid records passed to generateManifests."),{};const e={};for(let i=0;i<t.length;i++){let n=t[i];if(!this.tabularRowLint(n))continue;e[n.Form]||(e[n.Form]=this.fable.instantiateServiceProviderWithoutRegistration("ManifestFactory",{Manifest:{Form:n.Form}},"".concat(this.UUID,"-").concat(n.Form)));const r=e[n.Form];n["Form Name"]&&(r.manifest.FormName=n["Form Name"]),n["Input Hash"]&&this.tabularRowAddDescriptor(r,n),this._isTrue(n.Validator)&&(this.log.trace("Adding validator from tabular row on form ".concat(n.Form,": ").concat(n.Equation)),this.tabularRowAddValidator(r.manifest,n))}this.migrateAutofillTriggerGroupSolvers(e),this.log.info("Generated ".concat(Object.keys(e).length," manifests."));let i=Object.keys(e),n={};for(let t=0;t<i.length;t++)n[i[t]]=e[i[t]].manifest;return n}}e.exports=o,o.default_configuration={}},{"fable-serviceproviderbase":3}],88:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../services/ManifestFactory.js"),o=t("../providers/Pict-Provider-DynamicSolver.js"),a=t("../providers/Pict-Provider-DynamicInput.js"),s=t("../providers/Pict-Provider-DynamicInputEvents.js"),c=t("../providers/Pict-Provider-DynamicTabularData.js"),l=t("../providers/Pict-Provider-DynamicRecordSet.js"),p=t("../providers/Pict-Provider-DynamicTemplates.js"),d=t("../providers/Pict-Provider-MetatemplateGenerator.js"),u=t("../providers/Pict-Provider-MetatemplateMacros.js"),h=t("../providers/layouts/Pict-Layout-Record.js"),m=t("../providers/layouts/Pict-Layout-VerticalRecord.js"),g=t("../providers/layouts/Pict-Layout-Tabular.js"),f=t("../providers/layouts/Pict-Layout-RecordSet.js"),D=t("../providers/layouts/Pict-Layout-Chart.js"),y=t("../providers/layouts/Pict-Layout-TuiGrid.js"),v=t("../providers/layouts/Pict-Layout-Custom.js"),b=t("../providers/Pict-Provider-Informary.js");class T extends n{constructor(t,e,i){super(t,e,i),this.fable,this.log,this.UUID,this.fable.addAndInstantiateSingletonService("ManifestFactory",r.default_configuration,r),this.fable.addProviderSingleton("DynamicInput",a.default_configuration,a),this.fable.addProviderSingleton("DynamicInputEvents",s.default_configuration,s),this.fable.addProviderSingleton("DynamicSolver",o.default_configuration,o),this.fable.addProviderSingleton("DynamicTabularData",c.default_configuration,c),this.fable.addProviderSingleton("DynamicRecordSet",l.default_configuration,l),this.fable.addProviderSingleton("PictFormSectionDefaultTemplateProvider",p.default_configuration,p),this.fable.addProviderSingleton("MetatemplateGenerator",d.default_configuration,d),this.fable.addProviderSingleton("MetatemplateMacros",u.default_configuration,u),this.fable.addProviderSingleton("Pict-Layout-Record",h.default_configuration,h),this.fable.addProviderSingleton("Pict-Layout-VerticalRecord",m.default_configuration,m),this.fable.addProviderSingleton("Pict-Layout-Tabular",g.default_configuration,g),this.fable.addProviderSingleton("Pict-Layout-RecordSet",f.default_configuration,f),this.fable.addProviderSingleton("Pict-Layout-Chart",D.default_configuration,D),this.fable.addProviderSingleton("Pict-Layout-TuiGrid",y.default_configuration,y),this.fable.addProviderSingleton("Pict-Layout-Custom",v.default_configuration,v),this.fable.addProviderSingleton("Informary",b.default_configuration,b)}}e.exports=T,T.default_configuration={}},{"../providers/Pict-Provider-DynamicInput.js":43,"../providers/Pict-Provider-DynamicInputEvents.js":44,"../providers/Pict-Provider-DynamicRecordSet.js":46,"../providers/Pict-Provider-DynamicSolver.js":47,"../providers/Pict-Provider-DynamicTabularData.js":48,"../providers/Pict-Provider-DynamicTemplates.js":49,"../providers/Pict-Provider-Informary.js":51,"../providers/Pict-Provider-MetatemplateGenerator.js":55,"../providers/Pict-Provider-MetatemplateMacros.js":56,"../providers/layouts/Pict-Layout-Chart.js":78,"../providers/layouts/Pict-Layout-Custom.js":79,"../providers/layouts/Pict-Layout-Record.js":80,"../providers/layouts/Pict-Layout-RecordSet.js":81,"../providers/layouts/Pict-Layout-Tabular.js":82,"../providers/layouts/Pict-Layout-TuiGrid.js":83,"../providers/layouts/Pict-Layout-VerticalRecord.js":85,"../services/ManifestFactory.js":87,"fable-serviceproviderbase":3}],89:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~DynamicInput:","~}"),this.addPattern("{~DI:","~}")}render(t,e,i,n,r){return this.renderAsync(t,e,null,i,n)}renderAsync(t,e,i,n,r,o){const a=this.pict.providers.MetatemplateGenerator,s=t.trim(),c=this.pict.views.PictFormMetacontroller,l=(c?c.manifest:this.pict.manifest).getDescriptor(s);if(!l)return this.log.error("PictTemplateControlFromDynamicManifest: Cannot find descriptor for address [".concat(s,"]")),"function"==typeof i?i(null,""):"";const p=this.pict.views[l.PictForm.ViewHash],d=p||r,u=d?[d]:n||[this.pict];this.pict.providers.MetatemplateMacros.buildInputMacros(p,l);const h=a.getInputMetatemplateTemplateReference(p,l.DataType,l.PictForm.InputType,'getInput("'.concat(l.PictForm.GroupIndex,'","').concat(l.PictForm.RowIndex,'","').concat(l.PictForm.InputIndex,'")'));return this.pict.parseTemplate(h,l,i,u,d,o)}}},{"pict-template":36}],90:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~DynamicInputForHash:","~}"),this.addPattern("{~DIH:","~}")}render(t,e,i,n,r){return this.renderAsync(t,e,null,i,n,r)}renderAsync(t,e,i,n,r,o){const a=this.pict.providers.MetatemplateGenerator,s=t.trim(),c=this.pict.views.PictFormMetacontroller,l=(c?c.manifest:this.pict.manifest).getDescriptorByHash(s);if(!l)return this.log.error("PictTemplateControlFromDynamicManifest: Cannot find descriptor for hash [".concat(s,"]")),"function"==typeof i?i(null,""):"";const p=this.pict.views[l.PictForm.ViewHash],d=p||r,u=d?[d]:n||[this.pict];this.pict.providers.MetatemplateMacros.buildInputMacros(p,l);const h=a.getInputMetatemplateTemplateReference(p,l.DataType,l.PictForm.InputType,'getInput("'.concat(l.PictForm.GroupIndex,'","').concat(l.PictForm.RowIndex,'","').concat(l.PictForm.InputIndex,'")'));return this.pict.parseTemplate(h,l,i,u,d,o)}}},{"pict-template":36}],91:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~SchemaValue:","~}"),this.addPattern("{~SV:","~}")}render(t,e,i,n,r){return this.renderAsync(t,e,null,i,n,r)}renderAsync(t,e,i,n,r,o){const a=_slicedToArray(t.trim().split("^"),2),s=a[0],c=a[1],l=this.pict.views.PictFormMetacontroller,p=(l?l.manifest:this.pict.manifest).getDescriptor(s);if(!p)return this.log.error("PictTemplateGetViewSchemaValue: Cannot find descriptor for address [".concat(s,"]")),"function"==typeof i?i(null,""):"";const d=this.pict.views[p.PictForm.ViewHash],u=d.getValueByHash(s);if(c){const t={Value:u,ParentRecord:e,View:d,Descriptor:p};return"function"!=typeof i?this.pict.parseTemplateByHash(c,t,null,n,r,o):this.pict.parseTemplateByHash(c,t,(t,e)=>t?i(t,""):i(null,e),n,r,o)}if("function"!=typeof i)return u?String(u):"";i(null,u?String(u):"")}}},{"pict-template":36}],92:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~SchemaValueForHash:","~}"),this.addPattern("{~SVH:","~}")}render(t,e,i,n,r){return this.renderAsync(t,e,null,i,n,r)}renderAsync(t,e,i,n,r,o){const a=_slicedToArray(t.trim().split("^"),2),s=a[0],c=a[1],l=this.pict.views.PictFormMetacontroller,p=(l?l.manifest:this.pict.manifest).getDescriptorByHash(s);if(!p)return this.log.error("PictTemplateGetViewSchemaValueByHash: Cannot find descriptor for address [".concat(s,"]")),"function"==typeof i?i(null,""):"";const d=this.pict.views[p.PictForm.ViewHash],u=d.getValueByHash(s);if(c){const t={Value:u,ParentRecord:e,View:d,Descriptor:p};return"function"!=typeof i?this.pict.parseTemplateByHash(c,t,null,n,r,o):this.pict.parseTemplateByHash(c,t,(t,e)=>t?i(t,""):i(null,e),n,r,o)}if("function"!=typeof i)return u?String(u):"";i(null,u?String(u):"")}}},{"pict-template":36}],93:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~MetacontrollerTemplateValueSet:","~}"),this.addPattern("{~MTVS:","~}")}render(t,e,i,n,r){let o,a,s,c=t.trim(),l="object"==typeof e?e:{};this.pict.LogNoisiness>4?this.log.trace("PICT Metacontroller Template [MetacontrollerTemplateValueSet]::[".concat(c,"] with tmpData:"),l):this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetacontrollerTemplateValueSet]::[".concat(c,"]"));let p=c.split(":");if(p.length<3)return this.log.warn("Metacontroller template requires 3 parameters [".concat(c,"]")),"";a=p[0],o=p[1],s=p[2],l=this.resolveStateFromAddress(s,l,i,null,n);let d=[];if(Array.isArray(l))for(let t=0;t<l.length;t++)d.push({Value:l[t],Key:t,Group:o});else if("object"==typeof l){let t=Object.keys(l);for(let e=0;e<t.length;e++)d.push({Value:l[t[e]],Key:t[e],Group:o})}else d.push({Value:l});return l=d,l?this.pict.parseTemplateSetByHash(a,l,null,i,n,r):this.pict.parseTemplateSetByHash(a,e,null,i,n,r)}renderAsync(t,e,i,n,r,o){let a,s,c=t.trim(),l="object"==typeof e?e:{},p="function"==typeof i?i:()=>"";this.pict.LogNoisiness>4?this.log.trace("PICT Template [fTemplateValueSetRenderAsync]::[".concat(c,"] with tmpData:"),l):this.pict.LogNoisiness>0&&this.log.trace("PICT Template [fTemplateValueSetRenderAsync]::[".concat(c,"]"));let d=c.split(":");if(d.length<2)return this.log.trace("PICT TemplateFromMap [fTemplateRenderAsync]::[".concat(c,"] failed because there were not three stanzas in the expression [").concat(t,"]")),i(null,"");if(a=d[0],s=d[1],!a)return this.log.warn("Pict: TemplateFromMap Render Async: TemplateFromMapHash not resolved for [".concat(c,"]")),i(null,"");l=this.resolveStateFromAddress(s,l,n,null,r);let u=[];if(Array.isArray(l))for(let t=0;t<l.length;t++)u.push({Value:l[t],Key:t});else if("object"==typeof l){let t=Object.keys(l);for(let e=0;e<t.length;e++)u.push({Value:l[t[e]],Key:t[e]})}else u.push({Value:l});return l=u,l?void this.pict.parseTemplateSetByHash(a,l,(t,e)=>t?p(t,""):p(null,e),n,r,o):void this.pict.parseTemplateSetByHash(a,e,(t,e)=>t?p(t,""):p(null,e),n,r,o)}}},{"pict-template":36}],94:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~MetaTemplateInput:","~}"),this.addPattern("{~MTI:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s,c,l=t.trim(),p=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetaTemplateInput]::[".concat(l,"]"));let d=l.split(":");if(d.length<2)return this.log.warn("MetaTemplateInput template requires at least parameters (Address and DataType) [".concat(l,"]")),"";o=d[0],a=d[1],s=d[2],d.length>3&&(c=d[3]);let u={Address:a,DataAddress:a,Name:o,Hash:this.fable.ManifestFactory.sanitizeObjectKey(a),DataType:s,PictForm:{InformaryDataAddress:a,GroupIndex:0,Row:0}};this.currentInputIndex++,c&&(u.PictForm.InputType=c);let h=p.dynamicInputView.getRow(0,0);for(let t=0;t<h.Inputs.length;t++)if(h.Inputs[t].Hash===u.Hash){let e=h.Inputs[t];return this.pict.parseTemplate(p.getInputMetatemplateTemplateReference(p.dynamicInputView,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[p.dynamicInputView],p.dynamicInputView,r)}u.PictForm.InputIndex=h.Inputs.length,p.dynamicInputView.sectionManifest.addDescriptor(u.Address,u),h.Inputs.push(u),this.pict.providers.MetatemplateMacros.buildInputMacros(p.dynamicInputView,u);let m=p.getInputMetatemplateTemplateReference(p.dynamicInputView,u.DataType,u.PictForm.InputType,'getInput("0","0","'.concat(u.PictForm.InputIndex,'")'));return this.pict.parseTemplate(m,u,null,[p.dynamicInputView],p.dynamicInputView,r)}renderAsync(t,e,i,n,r,o){let a,s,c,l,p=t.trim(),d=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetaTemplateInput]::[".concat(p,"]"));let u=p.split(":");if(u.length<2)return this.log.warn("MetaTemplateInput template requires at least parameters (Address and DataType) [".concat(p,"]")),i(null,"");a=u[0],s=u[1],c=u[2],u.length>3&&(l=u[3]);let h={Address:s,DataAddress:s,Name:a,Hash:this.fable.ManifestFactory.sanitizeObjectKey(s),DataType:c,PictForm:{InformaryDataAddress:s,GroupIndex:0,Row:0}};this.currentInputIndex++,l&&(h.PictForm.InputType=l);let m=d.dynamicInputView.getRow(0,0);for(let t=0;t<m.Inputs.length;t++)if(m.Inputs[t].Hash===h.Hash){let e=m.Inputs[t],n=d.getInputMetatemplateTemplateReference(d.dynamicInputView,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[d.dynamicInputView],d.dynamicInputView,o)}h.PictForm.InputIndex=m.Inputs.length,d.dynamicInputView.sectionManifest.addDescriptor(h.Address,h),m.Inputs.push(h),this.pict.providers.MetatemplateMacros.buildInputMacros(d.dynamicInputView,h);let g=d.getInputMetatemplateTemplateReference(d.dynamicInputView,h.DataType,h.PictForm.InputType,'getInput("0","0","'.concat(h.PictForm.InputIndex,'")'));this.pict.parseTemplate(g,h,i,[d.dynamicInputView],d.dynamicInputView,o)}}},{"pict-template":36}],95:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~MetaTemplateInputWithHashAddress:","~}"),this.addPattern("{~MTIWHA:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s,c,l=t.trim(),p=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetaTemplateInput]::[".concat(l,"]"));let d=l.split(":");if(d.length<2)return this.log.warn("MetaTemplateInput template requires at least parameters (Address and DataType) [".concat(l,"]")),"";if(o=d[0],a=this.resolveStateFromAddress(d[1],e,i,null,n,r),"string"!=typeof a||a.length<1)return this.log.warn("MetaTemplateInput template requires a valid Address for an Address in the second parameter [".concat(l,"]")),"";s=d[2],d.length>3&&(c=d[3]);const u={Address:a,DataAddress:a,Name:o,Hash:this.fable.ManifestFactory.sanitizeObjectKey(a),DataType:s,PictForm:{InformaryDataAddress:a,GroupIndex:0,Row:0}};this.currentInputIndex++,c&&(u.PictForm.InputType=c);let h=p.dynamicInputView.getRow(0,0);for(let t=0;t<h.Inputs.length;t++)if(h.Inputs[t].Hash===u.Hash){const e=h.Inputs[t];return this.pict.parseTemplate(p.getInputMetatemplateTemplateReference(p.dynamicInputView,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[p.dynamicInputView],p.dynamicInputView,r)}u.PictForm.InputIndex=h.Inputs.length,p.dynamicInputView.sectionManifest.addDescriptor(u.Address,u),h.Inputs.push(u),this.pict.providers.MetatemplateMacros.buildInputMacros(p.dynamicInputView,u);const m=p.getInputMetatemplateTemplateReference(p.dynamicInputView,u.DataType,u.PictForm.InputType,'getInput("0","0","'.concat(u.PictForm.InputIndex,'")'));return this.pict.parseTemplate(m,u,null,[p.dynamicInputView],p.dynamicInputView,r)}renderAsync(t,e,i,n,r,o){let a,s,c,l,p=t.trim(),d=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetaTemplateInput]::[".concat(p,"]"));let u=p.split(":");if(u.length<2)return this.log.warn("MetaTemplateInput template requires at least parameters (Address and DataType) [".concat(p,"]")),i(null,"");if(a=u[0],s=this.resolveStateFromAddress(u[1],e,n,null,r,o),"string"!=typeof s||s.length<1)return this.log.warn("MetaTemplateInput template requires a valid Address for an Address in the second parameter [".concat(p,"]")),i(null,"");c=u[2],u.length>3&&(l=u[3]);let h={Address:s,DataAddress:s,Name:a,Hash:this.fable.ManifestFactory.sanitizeObjectKey(s),DataType:c,PictForm:{InformaryDataAddress:s,GroupIndex:0,Row:0}};this.currentInputIndex++,l&&(h.PictForm.InputType=l);let m=d.dynamicInputView.getRow(0,0);for(let t=0;t<m.Inputs.length;t++)if(m.Inputs[t].Hash===h.Hash){let e=m.Inputs[t],n=d.getInputMetatemplateTemplateReference(d.dynamicInputView,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[d.dynamicInputView],d.dynamicInputView,o)}h.PictForm.InputIndex=m.Inputs.length,d.dynamicInputView.sectionManifest.addDescriptor(h.Address,h),m.Inputs.push(h),this.pict.providers.MetatemplateMacros.buildInputMacros(d.dynamicInputView,h);const g=d.getInputMetatemplateTemplateReference(d.dynamicInputView,h.DataType,h.PictForm.InputType,'getInput("0","0","'.concat(h.PictForm.InputIndex,'")'));this.pict.parseTemplate(g,h,i,[d.dynamicInputView],d.dynamicInputView,o)}}},{"pict-template":36}],96:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~InputWithView:","~}"),this.addPattern("{~IWV:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s,c,l,p=t.trim(),d=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithView]::[".concat(p,"]"));let u=p.split(":");if(u.length<3)return this.log.warn("InputWithView template requires at least three parameters (ViewHash, Address and DataType) [".concat(p,"]")),"";o=u[0],a=u[1],s=u[2],c=u[3],u.length>4&&(l=u[4]);let h={Address:s,DataAddress:s,Name:a,Hash:this.fable.ManifestFactory.sanitizeObjectKey(s),DataType:c,PictForm:{InformaryDataAddress:s,GroupIndex:0,Row:0}};this.currentInputIndex++,l&&(h.PictForm.InputType=l);const m=this.pict.views[o];if(!m||!m.sectionManifest||"function"!=typeof m.getRow)return this.log.warn("InputWithView template requires a valid dynamic View hash [".concat(p,"]")),"";let g=m.getRow(0,0);for(let t=0;t<g.Inputs.length;t++)if(g.Inputs[t].Hash===h.Hash){let e=g.Inputs[t];return this.pict.parseTemplate(d.getInputMetatemplateTemplateReference(m,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[m],m,r)}h.PictForm.InputIndex=g.Inputs.length,m.sectionManifest.addDescriptor(h.Address,h),g.Inputs.push(h),this.pict.providers.MetatemplateMacros.buildInputMacros(m,h);let f=d.getInputMetatemplateTemplateReference(m,h.DataType,h.PictForm.InputType,'getInput("0","0","'.concat(h.PictForm.InputIndex,'")'));return this.pict.parseTemplate(f,h,null,[m],m,r)}renderAsync(t,e,i,n,r,o){let a,s,c,l,p,d=t.trim(),u=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithView]::[".concat(d,"]"));let h=d.split(":");if(h.length<3)return this.log.warn("InputWithView template requires at least three parameters (ViewHash, Address and DataType) [".concat(d,"]")),i(null,"");a=h[0],s=h[1],c=h[2],l=h[3],h.length>4&&(p=h[4]);let m={Address:c,DataAddress:c,Name:s,Hash:this.fable.ManifestFactory.sanitizeObjectKey(c),DataType:l,PictForm:{InformaryDataAddress:c,GroupIndex:0,Row:0}};this.currentInputIndex++,p&&(m.PictForm.InputType=p);const g=this.pict.views[a];if(!g||!g.sectionManifest||"function"!=typeof g.getRow)return this.log.warn("InputWithView template requires a valid dynamic View hash [".concat(d,"]")),i(null,"");let f=g.getRow(0,0);for(let t=0;t<f.Inputs.length;t++)if(f.Inputs[t].Hash===m.Hash){let e=f.Inputs[t],n=u.getInputMetatemplateTemplateReference(g,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[g],g,o)}m.PictForm.InputIndex=f.Inputs.length,g.sectionManifest.addDescriptor(m.Address,m),f.Inputs.push(m),this.pict.providers.MetatemplateMacros.buildInputMacros(g,m);let D=u.getInputMetatemplateTemplateReference(g,m.DataType,m.PictForm.InputType,'getInput("0","0","'.concat(m.PictForm.InputIndex,'")'));this.pict.parseTemplate(D,m,i,[g],g,o)}}},{"pict-template":36}],97:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~InputWithViewAndDescriptorAddress:","~}"),this.addPattern("{~IWVDA:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s=t.trim(),c=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithViewAndDescriptorAddress]::[".concat(s,"]"));let l=s.split(":");if(l.length<2)return this.log.warn("InputWithViewAndDescriptorAddress template requires two parameters (ViewHash and DescriptorAddress) [".concat(s,"]")),"";o=l[0],a=l[1];const p=this.resolveStateFromAddress(a,e,i,null,n,r);if(!p||"object"!=typeof p||Array.isArray(p)||!p.Address)return this.log.warn("InputWithViewAndDescriptorAddress template requires a valid input object at address [".concat(a,"]")),"";this._shoreUpDescriptor(p),this.currentInputIndex++;const d=this.pict.views[o];if(!d||!d.sectionManifest||"function"!=typeof d.getRow)return this.log.warn("InputWithViewAndDescriptorAddress template requires a valid dynamic View hash [".concat(s,"]")),"";let u=d.getRow(0,0);for(let t=0;t<u.Inputs.length;t++)if(u.Inputs[t].Hash===p.Hash){let e=u.Inputs[t];return this.pict.parseTemplate(c.getInputMetatemplateTemplateReference(d,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[d],d,r)}p.PictForm.InputIndex=u.Inputs.length,d.sectionManifest.addDescriptor(p.Address,p),u.Inputs.push(p),this.pict.providers.MetatemplateMacros.buildInputMacros(d,p);let h=c.getInputMetatemplateTemplateReference(d,p.DataType,p.PictForm.InputType,'getInput("0","0","'.concat(p.PictForm.InputIndex,'")'));return this.pict.parseTemplate(h,p,null,[d],d,r)}renderAsync(t,e,i,n,r,o){let a,s,c=t.trim(),l=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithViewAndDescriptorAddress]::[".concat(c,"]"));let p=c.split(":");if(p.length<2)return this.log.warn("InputWithViewAndDescriptorAddress template requires two parameters (ViewHash and DescriptorAddress) [".concat(c,"]")),i(null,"");a=p[0],s=p[1];const d=this.resolveStateFromAddress(s,e,n,null,r,o);this._shoreUpDescriptor(d),this.currentInputIndex++;const u=this.pict.views[a];if(!u||!u.sectionManifest||"function"!=typeof u.getRow)return this.log.warn("InputWithViewAndDescriptorAddress template requires a valid dynamic View hash [".concat(c,"]")),i(null,"");let h=u.getRow(0,0);for(let t=0;t<h.Inputs.length;t++)if(h.Inputs[t].Hash===d.Hash){let e=h.Inputs[t],n=l.getInputMetatemplateTemplateReference(u,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[u],u,o)}d.PictForm.InputIndex=h.Inputs.length,u.sectionManifest.addDescriptor(d.Address,d),h.Inputs.push(d),this.pict.providers.MetatemplateMacros.buildInputMacros(u,d);let m=l.getInputMetatemplateTemplateReference(u,d.DataType,d.PictForm.InputType,'getInput("0","0","'.concat(d.PictForm.InputIndex,'")'));this.pict.parseTemplate(m,d,i,[u],u,o)}_shoreUpDescriptor(t){if(!t||"object"!=typeof t||Array.isArray(t))throw new Error("Invalid descriptor object provided to shoreUpDescriptor");t.DataAddress||(t.DataAddress=t.Address),t.Hash||(t.Hash=this.fable.DataFormat.sanitizeObjectKey(t.Address)),t.Name||(t.Name=t.Hash),t.DataType||(t.DataType="String"),t.PictForm||(t.PictForm={}),t.PictForm.InformaryDataAddress||(t.PictForm.InformaryDataAddress=t.DataAddress),null==t.PictForm.GroupIndex&&(t.PictForm.GroupIndex=0),null==t.PictForm.Row&&(t.PictForm.Row=0)}}},{"pict-template":36}],98:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~InputWithViewAndHashAddress:","~}"),this.addPattern("{~IWVHA:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s,c,l,p=t.trim(),d=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithViewAndHashAddress]::[".concat(p,"]"));let u=p.split(":");if(u.length<3)return this.log.warn("InputWithViewAndHashAddress template requires at least three parameters (ViewHash, Address and DataType) [".concat(p,"]")),"";if(o=u[0],a=u[1],s=this.resolveStateFromAddress(u[2],e,i,null,n),"string"!=typeof s||s.length<1)return this.log.warn("InputWithViewAndHashAddress template requires a valid Address for an Address in the third parameter [".concat(p,"]")),"";c=u[3],u.length>4&&(l=u[4]);const h={Address:s,DataAddress:s,Name:a,Hash:this.fable.ManifestFactory.sanitizeObjectKey(s),DataType:c,PictForm:{InformaryDataAddress:s,GroupIndex:0,Row:0}};this.currentInputIndex++,l&&(h.PictForm.InputType=l);const m=this.pict.views[o];if(!m||!m.sectionManifest||"function"!=typeof m.getRow)return this.log.warn("InputWithViewAndHashAddress template requires a valid dynamic View hash as the first parameter [".concat(p,"]")),"";let g=m.getRow(0,0);for(let t=0;t<g.Inputs.length;t++)if(g.Inputs[t].Hash===h.Hash){const e=g.Inputs[t];return this.pict.parseTemplate(d.getInputMetatemplateTemplateReference(m,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[m],m,r)}h.PictForm.InputIndex=g.Inputs.length,m.sectionManifest.addDescriptor(h.Address,h),g.Inputs.push(h),this.pict.providers.MetatemplateMacros.buildInputMacros(m,h);const f=d.getInputMetatemplateTemplateReference(m,h.DataType,h.PictForm.InputType,'getInput("0","0","'.concat(h.PictForm.InputIndex,'")'));return this.pict.parseTemplate(f,h,null,[m],m,r)}renderAsync(t,e,i,n,r,o){let a,s,c,l,p,d=t.trim(),u=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithViewAndHashAddress]::[".concat(d,"]"));let h=d.split(":");if(h.length<3)return this.log.warn("InputWithViewAndHashAddress template requires at least three parameters (ViewHash, Address and DataType) [".concat(d,"]")),i(null,"");if(a=h[0],s=h[1],c=this.resolveStateFromAddress(h[2],e,n,null,r),"string"!=typeof c||c.length<1)return this.log.warn("InputWithViewAndHashAddress template requires a valid Address for an Address in the third parameter [".concat(d,"]")),i(null,"");l=h[3],h.length>4&&(p=h[4]);let m={Address:c,DataAddress:c,Name:s,Hash:this.fable.ManifestFactory.sanitizeObjectKey(c),DataType:l,PictForm:{InformaryDataAddress:c,GroupIndex:0,Row:0}};this.currentInputIndex++,p&&(m.PictForm.InputType=p);const g=this.pict.views[a];if(!g||!g.sectionManifest||"function"!=typeof g.getRow)return this.log.warn("InputWithViewAndHashAddress template requires a valid View hash as the first parameter [".concat(d,"]")),i(null,"");let f=g.getRow(0,0);for(let t=0;t<f.Inputs.length;t++)if(f.Inputs[t].Hash===m.Hash){let e=f.Inputs[t],n=u.getInputMetatemplateTemplateReference(g,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[g],g,o)}m.PictForm.InputIndex=f.Inputs.length,g.sectionManifest.addDescriptor(m.Address,m),f.Inputs.push(m),this.pict.providers.MetatemplateMacros.buildInputMacros(g,m);const D=u.getInputMetatemplateTemplateReference(g,m.DataType,m.PictForm.InputType,'getInput("0","0","'.concat(m.PictForm.InputIndex,'")'));this.pict.parseTemplate(D,m,i,[g],g,o)}}},{"pict-template":36}],99:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~PluckJoinUnique:","~}"),this.addPattern("{~PJU:","~}")}render(t,e,i,n,r){let o=t,a="object"==typeof e?e:{};this.pict.LogNoisiness>4?this.log.trace("PICT Pluck Join Unique [fDataRender]::[".concat(o,"] with tmpData:"),a):this.pict.LogNoisiness>3&&this.log.trace("PICT Pluck Join Unique [fDataRender]::[".concat(o,"]"));let s=o.split("^");if(s.length<3)return"";let c=s.shift(),l=s.shift(),p=[],d={};for(let t=0;t<s.length;t++){let e=this.resolveStateFromAddress(s[t],a,i,null,n);if(e&&Array.isArray(e))for(let t=0;t<e.length;t++){if(null===e[t]||"object"!=typeof e)continue;let i=this.pict.manifest.getValueByHash(e[t],l);i in d||(d[i]=!0,p.push(i))}else e&&(e in d||(d[e]=!0,p.push(e)))}return p.join(c)}}},{"pict-template":36}],100:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~TabularEditingControls:","~}"),this.addPattern("{~TEC:","~}")}render(t,e,i,n,r){let o=t.trim();if(!o||!e)return"";let a=this.pict.views[o];if(!a)return"";let s=e.Group,c=e.Key,l=this.pict.providers["Pict-Layout-Tabular"];return l&&"function"==typeof l._renderTabularEditingControlsHTML?l._renderTabularEditingControlsHTML(a,s,c):""}}},{"pict-template":36}],101:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~TabularRowLabels:","~}"),this.addPattern("{~TRL:","~}")}render(t,e,i,n,r){let o=t.trim();if(!o||!e)return"";let a=this.pict.views[o];if(!a)return"";let s=e.Group,c=e.Key,l=this.pict.providers["Pict-Layout-Tabular"];return l&&"function"==typeof l._renderTabularRowLabelsHTML?l._renderTabularRowLabelsHTML(a,s,c):""}}},{"pict-template":36}],102:[function(t,e,i){e.exports={AutoRender:!1,AutoSolveWithApp:!1,ExecuteSolversWithoutMetacontroller:!1,IncludeInMetatemplateSectionGeneration:!0,IncludeInDefaultDynamicRender:!0,DefaultRenderable:"Form-Main",DefaultDestinationAddress:"#Pict-Form-Container",Renderables:[],Templates:[],MacroTemplates:{Section:{HTMLID:' id="Section-{~D:Context[0].UUID~}" '},Group:{HTMLID:' id="Group-{~D:Context[0].UUID~}" ',PictFormLayout:' data-i-pictdynamiclayout="true" data-i-pictgroupindex="{~D:Record.GroupIndex~}" data-i-pictlayout="{~D:Record.Layout~}" ',TabularCreateRowFunctionCall:"{~P~}.views['{~D:Context[0].Hash~}'].createDynamicTableRow({~D:Record.GroupIndex~})"},Input:{Informary:' data-i-form="{~D:Context[0].formID~}" data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}" ',InformaryTabular:' data-i-form="{~D:Context[0].formID~}" data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}" data-i-container="{~D:Record.PictForm.InformaryContainerAddress~}" ',ControlAttr:' data-control="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}" ',HTMLSelector:'[data-i-form="{~D:Context[0].formID~}"][data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}"]',HTMLSelectorTabular:'[data-i-form="{~D:Context[0].formID~}"][data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}"][data-i-container="{~D:Record.PictForm.InformaryContainerAddress~}"]',HTMLSelectorControl:'[data-control="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}"]',HTMLSelectorControlTabular:'[data-control="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}"]',RawHTMLID:"{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}",HTMLName:' name="{~D:Record.Name~}" ',HTMLIDAddress:"#{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}",HTMLID:' id="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}" ',HTMLForID:' for="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}" ',InputFullProperties:' data-i-form="{~D:Context[0].formID~}" data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}" name="{~D:Record.Name~}" ',InputChangeHandler:" onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].dataChanged('{~D:Record.Hash~}')\" ",DataRequestFunction:" {~P~}.views['{~D:Context[0].Hash~}'].inputDataRequest('{~D:Record.Hash~}'); "}},TargetElementAddress:"#Form-Container-Div"}},{}],103:[function(t,e,i){const n=t("pict-view"),r=t("../../package.json"),o=t("./Pict-View-DynamicForm-DefaultConfiguration.json"),a="PendingAsyncOperation",s="onTransactionComplete",c="ReadyToFinalize";e.exports=class extends n{constructor(t,e,i){let n=Object.assign({},JSON.parse(JSON.stringify(o)),e);if(!n.Manifests)throw new Error("PictSectionForm instantiation attempt without a Manifests in pOptions.Manifest -- cannot instantiate.");if(!("Section"in n.Manifests))throw new Error("PictSectionForm instantiation attempt without a Section manifest in pOptions.Manifests -- cannot instantiate.");if("#Pict-Form-Container"===n.DefaultDestinationAddress&&(n.DefaultDestinationAddress="#Pict-Form-Container-".concat(n.Hash)),"Form-Main"===n.DefaultRenderable&&(n.DefaultRenderable="Form-".concat(n.Hash)),n.SectionTemplateHash||(n.SectionTemplateHash="Pict-Form-Template-".concat(n.Hash)),n.Renderables.length<1&&n.Renderables.push({RenderableHash:n.DefaultRenderable,TemplateHash:n.SectionTemplateHash,RenderMethod:"replace"}),super(t,n,i),!this.fable.PictDynamicFormDependencyManager)throw new Error("PictSectionForm instantiation attempt without a PictDynamicFormDependencyManager service in fable -- cannot instantiate.");if(this._PackagePictView=this._Package,this._Package=r,this.sectionDefinition=this.options,this.sectionManifest=this.fable.instantiateServiceProviderWithoutRegistration("Manifest",this.options.Manifests.Section),this.sectionSolvers=[],"Solvers"in this.options&&Array.isArray(this.options.Solvers))for(let t=0;t<this.options.Solvers.length;t++)"string"==typeof this.options.Solvers[t]&&this.sectionSolvers.push(this.options.Solvers[t]);if(this.formsTemplateSetPrefix="PFT-".concat(this.Hash,"-").concat(this.UUID),"MetaTemplates"in this.options&&Array.isArray(this.options.MetaTemplates))for(let t=0;t<this.options.MetaTemplates.length;t++){let e=this.options.MetaTemplates[t];if("HashPostfix"in e&&"Template"in e){let t="".concat(this.formsTemplateSetPrefix).concat(e.HashPostfix);this.pict.TemplateProvider.addTemplate(t,e.Template)}else this.log.warn("MetaTemplate entry ".concat(t," in PictSectionForm [").concat(this.UUID,"]::[").concat(this.Hash,"] does not have a Hash and Template property; custom template skipped."))}this.customDefaultTemplatePrefix=null,this.formID="Pict-Form-".concat(this.Hash,"-").concat(this.UUID),this.viewMarshalDestination=null,this.initialBundleLoaded=!1,this.fable.ManifestFactory.initializeFormGroups(this),this._LoopDetectionData={}}get defaultTemplatePrefix(){return this.customDefaultTemplatePrefix?this.customDefaultTemplatePrefix:this.pict.views.PictFormMetacontroller?this.pict.views.PictFormMetacontroller.formTemplatePrefix:this.pict.providers.MetatemplateGenerator.baseTemplatePrefix}dataChanged(t){let e=this.getInputFromHash(t);if(this.pict.LogNoisiness>2&&this.log.trace("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] dataChanged event for input [").concat(t,"].")),t){let i=this.sectionManifest.resolveHashAddress(t);const n=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(n);try{let t=this.getMarshalDestinationObject();this.pict.providers.Informary.marshalFormToData(t,this.formID,this.sectionManifest,i);let r=this.sectionManifest.getValueByHash(t,i),o=this.getInputProviderList(e);for(let t=0;t<o.length;t++)this.pict.providers[o[t]]?this.pict.providers[o[t]].onDataChange(this,e,r,e.Macro.HTMLSelector,n):this.log.error("Dynamic form dataChanged [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(o[t],"] for input [").concat(e.Hash,"]."))}catch(e){this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] gross error marshaling specific (").concat(t,") data from view in dataChanged event: ").concat(e))}finally{this.finalizeTransaction(n)}}else this.marshalFromView();this.pict.PictApplication.solve(),this.pict.views.PictFormMetacontroller?this.pict.views.PictFormMetacontroller.marshalFormSections():this.marshalToView(),this.pict.providers.FormPersistence&&this.pict.providers.FormPersistence.onFormDataChanged()}dataChangedTabular(t,e,i){this.pict.LogNoisiness>2&&this.log.trace("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] dataChangedTabular event for group ").concat(t," input ").concat(e," row ").concat(i,"."));let n=this.getTabularRecordInput(t,e);if(void 0!==t&&void 0!==e&&void 0!==i&&"object"==typeof n){let e=n.Address;const r=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(r);try{let t=this.getMarshalDestinationObject();this.pict.providers.Informary.marshalFormToData(t,this.formID,this.sectionManifest,e,i);let o=this.pict.providers.Informary.getComposedContainerAddress(n.PictForm.InformaryContainerAddress,i,n.PictForm.InformaryDataAddress),a=this.sectionManifest.getValueByHash(t,o),s=n.Macro.HTMLSelectorTabular+'[data-i-index="'.concat(i,'"]'),c=this.getInputProviderList(n);for(let t=0;t<c.length;t++)this.pict.providers[c[t]]?this.pict.providers[c[t]].onDataChangeTabular(this,n,a,s,i,r):this.log.error("Dynamic form dataChangedTabular [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(c[t],"] for input [").concat(n.Hash,"] row ").concat(i,"."))}catch(e){this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] gross error marshaling specific (").concat(n.Hash,") tabular data for group ").concat(t," row ").concat(i," from view in dataChanged event: ").concat(e))}finally{this.finalizeTransaction(r)}}else this.marshalFromView();this.pict.PictApplication.solve(),this.pict.views.PictFormMetacontroller?this.pict.views.PictFormMetacontroller.marshalFormSections():this.marshalToView(),this.pict.providers.FormPersistence&&this.pict.providers.FormPersistence.onFormDataChanged()}setDataByInput(t,e){const i=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(i);try{this.sectionManifest.setValueByHash(this.getMarshalDestinationObject(),t.Hash,e);let n=e,r=t.Macro.HTMLSelector,o=this.getInputProviderList(t);for(let e=0;e<o.length;e++)this.pict.providers[o[e]]?this.pict.providers[o[e]].onDataChange(this,t,n,r,i):this.log.error("Dynamic form setDataByInput [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(o[e],"] for input [").concat(t.Hash,"]."))}catch(e){this.log.error("Dynamic form setDataByInput [".concat(this.Hash,"]::[").concat(this.UUID,"] gross error marshaling specific (").concat(t.Hash,") from view in dataChanged event: ").concat(e))}finally{this.finalizeTransaction(i)}return!1}setDataTabularByHash(t,e,i,n){let r=this.getGroup(t);if(!r)return this.log.warn("PICT View Metatemplate Helper setDataTabularByHash ".concat(t," was not a valid group.")),!1;let o=-1,a=Object.keys(r.supportingManifest.elementDescriptors);for(let t=0;t<a.length;t++)if(r.supportingManifest.elementDescriptors[a[t]].Hash===e){o=t;break}if(o<0)return this.log.warn("PICT View Metatemplate Helper setDataTabularByHash Group ".concat(t," did not have hash [").concat(e,"].")),!1;let s=this.getTabularRecordInput(t,o);if(void 0!==t&&void 0!==i&&"object"==typeof s){const r=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(r);try{let t=this.getMarshalDestinationObject(),e=this.pict.providers.Informary.getComposedContainerAddress(s.PictForm.InformaryContainerAddress,i,s.PictForm.InformaryDataAddress);this.sectionManifest.setValueByHash(t,e,n);let o=n,a=s.Macro.HTMLSelectorTabular+'[data-i-index="'.concat(i,'"]'),c=this.getInputProviderList(s);for(let t=0;t<c.length;t++)this.pict.providers[c[t]]?this.pict.providers[c[t]].onDataChangeTabular(this,s,o,a,i,r):this.log.error("Dynamic form setDataTabularByHash [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(c[t],"] for input [").concat(s.Hash,"] row ").concat(i,"."))}catch(n){this.log.error("Dynamic form setDataTabularByHash [".concat(this.Hash,"]::[").concat(this.UUID,"] gross error marshaling specific (").concat(e,") tabular data for group ").concat(t," row ").concat(i," from view in dataChanged event: ").concat(n))}finally{this.finalizeTransaction(r)}}return!1}getMarshalDestinationAddress(){return this.viewMarshalDestination||this.pict.providers.DataBroker.marshalDestination}getMarshalDestinationObject(){return this.pict.providers.DataBroker.resolveMarshalDestinationObject(this.viewMarshalDestination)}getValueByHash(t){return this.sectionManifest.getValueByHash(this.getMarshalDestinationObject(),t)}getTabularValueByHash(t,e,i){const n=this.getTabularRecordInput(t,e),r=this.pict.providers.Informary.getComposedContainerAddress(n.PictForm.InformaryContainerAddress,i,n.PictForm.InformaryDataAddress);return this.sectionManifest.getValueByHash(this.getMarshalDestinationObject(),r)}onMarshalToView(){const t=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(t);try{let e=this.getMarshalDestinationObject();this.pict.providers.Informary.marshalDataToForm(e,this.formID,this.sectionManifest),this.runLayoutProviderFunctions("onDataMarshalToForm",t),this.runInputProviderFunctions("onDataMarshalToForm",null,null,t)}catch(t){this.log.error("Gross error marshaling data to view: ".concat(t))}finally{this.finalizeTransaction(t)}return super.onMarshalToView()}manualMarshalDataToViewByInput(t,e){const i="string"==typeof e?e:this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(i);try{this.pict.providers.Informary.manualMarshalDataToFormByInput(t),this.runLayoutProviderFunctions("onDataMarshalToForm",i),this.runInputProviderFunctions("onDataMarshalToForm",t.Hash,null,i)}catch(t){this.log.error("Gross error marshaling data to view: ".concat(t))}finally{i!==e&&this.finalizeTransaction(i)}}manualMarshalTabularDataToViewByInput(t,e,i){const n="string"==typeof i?i:this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(n);try{this.pict.providers.Informary.manualMarshalTabularDataToFormByInput(t,e),this.runLayoutProviderFunctions("onDataMarshalToForm",n),this.runInputProviderFunctions("onDataMarshalToForm",t.Hash,e,n)}catch(t){this.log.error("Gross error marshaling tabular data to view: ".concat(t))}finally{n!==i&&this.finalizeTransaction(n)}}onMarshalFromView(){try{let t=this.getMarshalDestinationObject();this.pict.providers.Informary.marshalFormToData(t,this.formID,this.sectionManifest)}catch(t){this.log.error("Gross error marshaling data from view: ".concat(t))}return super.onMarshalFromView()}onAfterMarshalToForm(){const t=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(t);try{this.runInputProviderFunctions("onAfterMarshalToForm",null,null,t)}catch(t){this.log.error("Gross error running after marshal to form: ".concat(t))}finally{this.finalizeTransaction(t)}}onSolve(){return this.options.ExecuteSolversWithoutMetacontroller&&this.pict.providers.DynamicSolver.solveViews([this.Hash]),super.onSolve()}onBeforeRender(t){return this.initialBundleLoaded||(Array.isArray(this.sectionDefinition.InitialBundle)&&this.pict.EntityProvider.processBundle(this.sectionDefinition.InitialBundle),this.initialBundleLoaded=!0),super.onBeforeRender(t)}onBeforeRenderAsync(t,e){super.onBeforeRenderAsync(e=>{if(!this.initialBundleLoaded){if(Array.isArray(this.sectionDefinition.InitialBundle))return void this.pict.EntityProvider.gatherDataFromServer(this.sectionDefinition.InitialBundle,i=>{i&&this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] failed to load initial bundle: ").concat(i)),setTimeout(()=>t(e),0)});this.initialBundleLoaded=!0}return t(e)},e)}onAfterRender(t){let e=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(e);try{this.runLayoutProviderFunctions("onGroupLayoutInitialize",e),this.runInputProviderFunctions("onInputInitialize",null,null,e,!0)}catch(t){this.log.error("Gross error running after render: ".concat(t.message||t))}finally{this.finalizeTransaction(e)}return super.onAfterRender(t)}runLayoutProviderFunctions(t,e){const i="string"==typeof e?e:this.fable.getUUID(),n=this.pict.TransactionTracking.registerTransaction(i);let r=this.pict.ContentAssignment.getElement("".concat(this.sectionDefinition.DefaultDestinationAddress,' [data-i-pictdynamiclayout="true"]'));for(let e=0;e<r.length;e++){let e=r[0].getAttribute("data-i-pictgroupindex"),i=r[0].getAttribute("data-i-pictlayout");if(isNaN(e)||e<0){this.log.warn("PICT View Metatemplate Helper runLayoutProviderFunctions ".concat(e," was not a valid group index."));continue}let o=this.getGroup(e);if(!o){this.log.warn("PICT View Metatemplate Helper runLayoutProviderFunctions for group ".concat(e," was not a valid group."));continue}if(!i||"string"!=typeof i){this.log.warn("PICT View Metatemplate Helper runLayoutProviderFunctions for group ".concat(o," layout [").concat(i,"] was not a valid layout."));continue}let a=this.pict.providers.MetatemplateGenerator.getGroupLayoutProvider(this,o);if(a&&t in a){let r=a[t];this.pict.TransactionTracking.checkEvent(n.TransactionKey,"G".concat(e,"-L").concat(i),t)&&r.call(a,this,o)}}i!==e&&this.finalizeTransaction(i)}_trackInfiniteLoop(t,e,i){this._LoopDetectionData[t]=this._LoopDetectionData[t]||{};const n="".concat(null!=e?e:"","::").concat(null!=i?i:""),r=Date.now();return this._LoopDetectionData[t][n]=this._LoopDetectionData[t][n]||{Count:0,Timestamp:r},r-this._LoopDetectionData[t][n].Timestamp>1e3&&(this._LoopDetectionData[t][n].Count=0,this._LoopDetectionData[t][n].Timestamp=r),this._LoopDetectionData[t][n].Count+=1,this._LoopDetectionData[t][n]}runInputProviderFunctions(t,e,i,n,r){const o=this._trackInfiniteLoop(t,e,i);if(r&&o.Count>10)return void this.log.fatal(" !!!!!! Infinite loop detected in runInputProviderFunctions for function [".concat(t,"] on input [").concat(e,"] row [").concat(i,"] in form [").concat(this.Hash,"]::[").concat(this.UUID,"]. Aborting further processing."),{Stack:(new Error).stack});const a="string"==typeof n?n:this.fable.getUUID(),s=this.pict.TransactionTracking.registerTransaction(a);for(let n=0;n<this.sectionDefinition.Groups.length;n++){let r=this.sectionDefinition.Groups[n];if(Array.isArray(r.Rows))for(let i=0;i<r.Rows.length;i++){let n=r.Rows[i];for(let o=0;o<n.Inputs.length;o++){let c=n.Inputs[o];if(c&&c.PictForm&&(!e||e===c.Hash)){let e=this.getInputProviderList(c);for(let n=0;n<e.length;n++)if(this.pict.providers[e[n]]){let o=this.sectionManifest.resolveHashAddress(c.Hash),l=this.sectionManifest.getValueByHash(this.getMarshalDestinationObject(),o);try{this.pict.LogNoisiness>2&&this.log.trace("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] running provider [").concat(e[n],"] function [").concat(t,"] for input [").concat(c.Hash,"].")),("Option"==c.PictForm.InputType||this.pict.TransactionTracking.checkEvent(s.TransactionKey,"I".concat(c.Hash,"-P").concat(e[n]),t))&&this.pict.providers[e[n]][t](this,r,i,c,l,c.Macro.HTMLSelector,a)}catch(i){this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] failed to run provider [").concat(e[n],"] function [").concat(t,"] for input [").concat(c.Hash,"] with error: ").concat(i))}}else this.log.error("Dynamic form runInputProviderFunctions core [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(e[n],"] for input [").concat(c.Hash,"]."))}}}if(r.supportingManifest){let n=Object.keys(r.supportingManifest.elementDescriptors);for(let o=0;o<n.length;o++){let c=this.getTabularRecordSet(r.GroupIndex);if(c&&Array.isArray(c)){let l=r.supportingManifest.elementDescriptors[n[o]];if(l&&l.PictForm&&(!e||e===l.Hash)){let e=this.getInputProviderList(l);for(let n=0;n<e.length;n++){let o=[];if(null!=i)i<c.length?o.push(i):this.log.error("Dynamic form runInputProviderFunctions [".concat(this.Hash,"]::[").concat(this.UUID,"] row index ").concat(i," is out of bounds for input [").concat(l.Hash,"] with ").concat(c.length," rows."));else for(let t=0;t<c.length;t++)o.push(t);for(const c of o)if(!this.pict.providers[e[n]]||null!=i&&i!==c)this.log.error("Dynamic form runInputProviderFunctions supporting [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(e[n],"] for input [").concat(l.Hash,"]").concat(null!=i?" in row ".concat(i):"","."));else{let i=this.pict.providers.Informary.getComposedContainerAddress(l.PictForm.InformaryContainerAddress,c,l.PictForm.InformaryDataAddress),o=this.sectionManifest.getValueByHash(this.getMarshalDestinationObject(),i);try{this.pict.TransactionTracking.checkEvent(s.TransactionKey,"TI".concat(l.Hash,"-P").concat(e[n],"-R").concat(c),t)&&this.pict.providers[e[n]][t+"Tabular"](this,r,l,o,l.Macro.HTMLSelectorTabular,c,a)}catch(i){this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] failed to run provider [").concat(e[n],"] function [").concat(t,"] for input [").concat(l.Hash,"] with error: ").concat(i))}}}}}}}}n!==a&&this.finalizeTransaction(a)}checkViewSpecificTemplate(t){return this.getViewSpecificTemplateHash(t)in this.pict.TemplateProvider.templates}getViewSpecificTemplateHash(t){return"".concat(this.formsTemplateSetPrefix).concat(t)}checkThemeSpecificTemplate(t){return this.getThemeSpecificTemplateHash(t)in this.pict.TemplateProvider.templates}getThemeSpecificTemplateHash(t){return"".concat(this.defaultTemplatePrefix).concat(t)}rebuildCustomTemplate(){this.pict.providers.MetatemplateGenerator.rebuildCustomTemplate(this)}getGroupIndexFromHash(t){for(let e=0;e<this.sectionDefinition.Groups.length;e++)if(this.sectionDefinition.Groups[e].Hash===t)return e;return this.log.warn("PICT View Metatemplate Helper getGroupIndexByHash could not find group with hash [".concat(t,"].")),-1}getGroupFromHash(t){for(let e=0;e<this.sectionDefinition.Groups.length;e++)if(this.sectionDefinition.Groups[e].Hash===t)return this.sectionDefinition.Groups[e];return this.log.warn("PICT View Metatemplate Helper getGroupByHash could not find group with hash [".concat(t,"].")),!1}getGroup(t){return isNaN(t)?(this.log.warn("PICT View Metatemplate Helper getGroup ".concat(t," was expecting a number.")),!1):t>this.sectionDefinition.Groups.length?(this.log.warn("PICT View Metatemplate Helper getGroup ".concat(t," was out of bounds.")),!1):this.sectionDefinition.Groups[t]}getGroups(){return Array.isArray(this.sectionDefinition.Groups)?this.sectionDefinition.Groups:[]}getRow(t,e){let i=this.getGroup(t);return!!i&&(isNaN(e)?(this.log.warn("PICT View Metatemplate Helper getRow ".concat(e," was expecting a number.")),!1):e>i.Rows.length?[]:i.Rows[e])}getRowKeyValuePair(t,e){return{Key:t,Value:this.getRow(t,e),Group:this.getGroup(t)}}getInput(t,e,i){let n=this.getRow(t,e);return!!n&&(isNaN(i)?(this.log.warn("PICT View Metatemplate Helper getInput ".concat(i," was expecting a number.")),!1):i>n.Inputs.length?(this.log.warn("PICT View Metatemplate Helper getInput ".concat(i," was out of bounds.")),!1):n.Inputs[i])}getInputProviderList(t){if(!("PictForm"in t))return[];if("Providers"in t.PictForm&&Array.isArray(t.PictForm.Providers)){let e=this.pict.providers.DynamicInput.getDefaultInputProviders(this,t);return e.length>0?e.concat(t.PictForm.Providers):t.PictForm.Providers}return this.pict.providers.DynamicInput.getDefaultInputProviders(this,t)}getInputFromHash(t){return this.sectionManifest.getDescriptorByHash(t)}inputDataRequest(t,e){return this.pict.providers.DynamicInputEvents.inputDataRequest(this,t,e)}inputEvent(t,e,i){return this.pict.providers.DynamicInputEvents.inputEvent(this,t,e,i)}globalInputEvent(t,e,i){this.manifestInputEvent(t,e,i)}manifestInputEvent(t,e,i){const n=i&&"string"==typeof i?i:this.fable.getUUID(),r=Object.keys(this.sectionManifest.elementHashes);for(let n=0;n<r.length;n++)r[n]in e||(e[r[n]]=!0,this.inputEvent(r[n],t,i));i!==n&&this.finalizeTransaction(n)}inputDataRequestTabular(t,e,i,n){return this.pict.providers.DynamicInputEvents.inputDataRequestTabular(this,t,e,i,n)}inputEventTabular(t,e,i,n,r){return this.pict.providers.DynamicInputEvents.inputEventTabular(this,t,e,i,n,r)}registerEventTransactionAsyncOperation(t,e){this.pict.TransactionTracking.pushToTransactionQueue(t,e,a)}eventTransactionAsyncOperationComplete(t,e){const i=this.pict.TransactionTracking.checkTransactionQueue(t);let n=0,r=0,o=!1;for(let t=0;t<i.length;t++){const s=i[t];s.Type===a&&(s.Data===e?(i.splice(t,1),++r,--t):++n),s.Type===c&&(o=!0)}if(0!==r){if(o&&0===n){for(let t=0;t<i.length;t++){const e=i[t];if(e.Type===s){if(i.splice(t,1),--t,"function"!=typeof e.Data){this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete transaction callback was not a function.");continue}try{e.Data()}catch(t){this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete transaction callback error: ".concat(t),{Stack:t.stack})}}}delete this.pict.TransactionTracking.transactions[t]}return r>0}this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete ".concat(t," could not find async operation with hash ").concat(e,"."))}finalizeTransaction(t){this.pict.TransactionTracking.pushToTransactionQueue(t,null,c);const e=this.pict.TransactionTracking.checkTransactionQueue(t);let i=0;for(const t of e)t.Type===a&&++i;if(i>0)return this.pict.log.info("PICT View Metatemplate Helper finalizeTransaction ".concat(t," is waiting on ").concat(i," pending async operations.")),!1;for(let t=0;t<e.length;t++){const i=e[t];if(i.Type===s){if(e.splice(t,1),--t,"function"!=typeof i.Data){this.log.error("PICT View Metatemplate Helper finalizeTransaction transaction callback was not a function.");continue}try{i.Data()}catch(t){this.log.error("PICT View Metatemplate Helper finalizeTransaction transaction callback error: ".concat(t),{Stack:t.stack})}}}return delete this.pict.TransactionTracking.transactions[t],!0}registerOnTransactionCompleteCallback(t,e){const i=this.pict.TransactionTracking.checkTransactionQueue(t);let n=0,r=!1;for(const t of i)t.Type===a&&++n,t.Type===c&&(r=!0);r&&0===n?e():this.pict.TransactionTracking.pushToTransactionQueue(t,e,s)}groupInputEvent(t,e,i,n){const r=this.getGroup(t);if(!r)return void this.log.warn("PICT View Metatemplate Helper subManifestInputEvent ".concat(t," is not a valid group index."));const o=n&&"string"==typeof n?n:this.fable.getUUID();if(n!==o&&this.pict.TransactionTracking.registerTransaction(o),r.Rows.length<1){const n=this.getTabularRecordSet(t);if(!Array.isArray(n))return;for(let a=0;a<n.length;a++)for(const n of Object.values(r.supportingManifest.elementDescriptors)){const s="".concat(this.Hash,"-").concat(r.Hash,"-").concat(n.Hash,"-").concat(a);s in i||(i[s]=!0,this.inputEventTabular(t,n.PictForm.InputIndex,a,e,o))}}for(const t of r.Rows||[])for(const n of t.Inputs||[]){const a="".concat(this.Hash,"-").concat(r.Hash,"-").concat(n.Hash,"-").concat(t.Hash);a in i||(i[a]=!0,this.inputEvent(n.Hash,e,o))}n!==o&&this.finalizeTransaction(o)}sectionInputEvent(t,e,i){const n=this.sectionDefinition.Groups.length,r=i&&"string"==typeof i?i:this.fable.getUUID();i!==r&&this.pict.TransactionTracking.registerTransaction(r);for(let r=0;r<n;r++)this.groupInputEvent(r,t,e,i);i!==r&&this.finalizeTransaction(r)}getTabularRecordInput(t,e){return this.pict.providers.DynamicTabularData.getTabularRecordInput(this,t,e)}getTabularRecordInputByHash(t,e){return this.pict.providers.DynamicTabularData.getTabularRecordInputByHash(this,t,e)}getTabularRecordData(t,e){return this.pict.providers.DynamicTabularData.getTabularRecordData(this,t,e)}getTabularRecordSet(t){return this.pict.providers.DynamicTabularData.getTabularRecordSet(this,t)}createDynamicTableRow(t){return this.pict.providers.DynamicTabularData.createDynamicTableRow(this,t)}setDynamicTableRowIndex(t,e,i){return this.pict.providers.DynamicTabularData.setDynamicTableRowIndex(this,t,e,i)}moveDynamicTableRowDown(t,e){return this.pict.providers.DynamicTabularData.moveDynamicTableRowDown(this,t,e)}moveDynamicTableRowUp(t,e){return this.pict.providers.DynamicTabularData.moveDynamicTableRowUp(this,t,e)}deleteDynamicTableRow(t,e){return this.pict.providers.DynamicTabularData.deleteDynamicTableRow(this,t,e)}get isPictSectionForm(){return!0}},e.exports.default_configuration=o},{"../../package.json":39,"./Pict-View-DynamicForm-DefaultConfiguration.json":102,"pict-view":38}],104:[function(t,e,i){const n=t("pict-view"),r=t("../services/Pict-Service-DynamicFormDependencyManager.js"),o=t("./Pict-View-DynamicForm.js"),a="PendingAsyncOperation",s="onTransactionComplete",c="ReadyToFinalize";e.exports=class extends n{constructor(e,i,n){super(e,i,n),this.serviceType="PictFormMetacontroller",this.fable.addAndInstantiateSingletonService("PictDynamicFormDependencyManager",r.default_configuration,r),this.lastRenderedViews=[],this.formTemplatePrefix=this.pict.providers.MetatemplateGenerator.baseTemplatePrefix,this.manifest=this.pict.manifest,this.AutoSolveOnFirstRender=!0,this.FirstRenderCompleted=!1,this.comprehensionDestinationAddress=this.options&&"string"==typeof this.options.ComprehensionDestinationAddress&&this.options.ComprehensionDestinationAddress.length>0?this.options.ComprehensionDestinationAddress:"AppData.FormEntityComprehensions",this.SupportViewPrototypes={LifecycleVisualization:t("./support/Pict-View-PSF-LifeCycle-Visualization.js"),DebugViewer:t("./support/Pict-View-PSF-DebugViewer.js"),AppDataViewer:t("./support/Pict-View-PSF-AppData-Visualization.js"),SolverVisualization:t("./support/Pict-View-PSF-Solver-Visualization.js"),SpecificSolveVisualization:t("./support/Pict-View-PSF-SpecificSolve-Visualization.js")}}get viewMarshalDestination(){return this.pict.providers.DataBroker.marshalDestination}set viewMarshalDestination(t){this.pict.providers.DataBroker.marshalDestination=t}onMarshalFromView(){let t=Object.keys(this.fable.views);for(let e=0;e<t.length;e++)this.fable.views[t[e]].isPictSectionForm&&this.fable.views[t[e]].marshalFromView();return super.onMarshalFromView()}onMarshalToView(){let t=Object.keys(this.fable.views);for(let e=0;e<t.length;e++)this.fable.views[t[e]].isPictSectionForm&&this.fable.views[t[e]].marshalToView();return super.onMarshalToView()}gatherInitialBundle(t){return this.manifestDescription&&this.manifestDescription.InitialBundle?(this.log.info("Gathering initial bundle for ".concat(this.manifestDescription.InitialBundle.length," entities.")),this.pict.EntityProvider.gatherDataFromServer(this.manifestDescription.InitialBundle,e=>{setTimeout(()=>t(e),0)})):(this.log.info("No initial bundle to gather."),t())}onAfterInitializeAsync(t){return super.onAfterInitializeAsync(function(e){if(e)return t(e);this.gatherInitialBundle(e=>(this.bootstrapPictFormViewsFromManifest(),this.generateMetatemplate(),t(e)))}.bind(this))}onAfterRender(t){const e=super.onAfterRender(t);return this.regenerateFormSectionTemplates(),this.renderFormSections(),this.AutoSolveOnFirstRender&&!this.FirstRenderCompleted&&(this.FirstRenderCompleted=!0,this.pict.providers.DynamicSolver.solveViews()),this.options.AutoPopulateAfterRender&&this.marshalToView(),e}onSolve(){return this.pict.providers.DynamicSolver.solveViews(),super.onSolve()}runSolver(t,e){this.pict.providers.DynamicSolver.runSolver(t,e)}onBeforeFilterViews(t){return t}onAfterFilterViews(t){return t}findDynamicSectionManifestDefinition(t){var e;const i=null===(e=this.manifestDescription)||void 0===e||null===(e=e.ReferenceManifests)||void 0===e?void 0:e[t];return"object"!=typeof i?(this.log.error("findDynamicSectionManifestDefinition() could not find a section manifest with hash [".concat(t,"]")),null):i}injectManifestAndRender(t,e,i){const n=i?this.createDistinctManifest(t,i):t,r=this.injectManifest(n,e);return this.updateMetatemplateInDOM(),setTimeout(()=>{for(const t of r)t.render();if(this.options.AutoPopulateAfterRender)for(const t of r)t.marshalToView()},0),r}injectManifest(t,e){const i=e?e.startsWith("PictSectionForm-")?e:"PictSectionForm-".concat(e):null,n=Object.keys(this.pict.views),r=i?n.indexOf(i):-1,o=[];if(r>=0)for(let t=r+1;t<n.length;t++){const e=n[t];o.push({key:e,view:this.pict.views[e]}),delete this.pict.views[e]}const a=this.bootstrapAdditiveManifest(t,i);for(const t of o)this.pict.views[t.key]=t.view;this.generateMetatemplate();for(const t of a)t.rebuildCustomTemplate();return this.pict.CSSMap.injectCSS(),a}buildManifestTranslations(t){const e={};for(const i of t.Sections||[]){i.OriginalHash&&(e[i.OriginalHash]=i.Hash);for(const t of i.Groups||[])t.OriginalHash&&(e[t.OriginalHash]=t.Hash)}const i={};for(const n of Object.values((null==t?void 0:t.Descriptors)||{}))n.OriginalDataAddress&&(e[n.OriginalDataAddress]=n.DataAddress),n.OriginalHash&&(i[n.OriginalHash]=n.Hash);return{AddressTranslation:e,HashTranslation:i}}rewriteSolverExpression(t,e,i){const n=e||{},r=i||{},o=this.fable.instantiateServiceProviderIfNotExists("ExpressionParser"),a=this.viewMarshalDestination;if("string"!=typeof t||0===t.length)return t;let s={};o.tokenize(t,s);let c=Array.from(s.OriginalRawTokens),l=!1,p=[],d=0;for(let t=0;t<c.length;t++){let e=c[t],i=o.Tokenizer.getTokenType(e);if("("!==e)if(")"!==e)if(","!==e){if("Token.Symbol"===i){let i=null;if(e in n)i=n[e];else if(e in r)i=r[e];else if(a&&e.startsWith(a+".")){let t=e.substring(a.length+1);t in n?i=a+"."+n[t]:t in r&&(i=a+"."+r[t])}null!==i&&(c[t]=i,l=!0)}else if("Token.StateAddress"===i){let i=e.substring(1,e.length-1),o=null;if(i in r)o="{"+r[i]+"}";else if(i in n)o="{"+n[i]+"}";else if(a&&i.startsWith(a+".")){let t=i.substring(a.length+1);t in r?o="{"+a+"."+r[t]+"}":t in n&&(o="{"+a+"."+n[t]+"}")}null!==o&&(c[t]=o,l=!0)}else if("Token.String"===i&&p.length>0){let i=p[p.length-1],s=o.functionMap[i.name];if(s&&Array.isArray(s.AddressParameterIndices)&&s.AddressParameterIndices.includes(i.paramIndex)){let i=e.substring(1,e.length-1),o=null;if(i in n)o='"'+n[i]+'"';else if(i in r)o='"'+r[i]+'"';else if(a&&i.startsWith(a+".")){let t=i.substring(a.length+1);t in n?o='"'+a+"."+n[t]+'"':t in r&&(o='"'+a+"."+r[t]+'"')}null!==o&&(c[t]=o,l=!0)}}}else p.length>0&&p[p.length-1].depth===d-1&&p[p.length-1].paramIndex++;else d--,p.length>0&&p[p.length-1].depth===d&&p.pop();else{if(t>0){let e=c[t-1].toLowerCase();e in o.functionMap&&p.push({name:e,paramIndex:0,depth:d})}d++}}return l?o.recompose(c):t}createDistinctManifest(t,e){const i=null!=e?e:this.pict.getUUID().replace(/-/g,""),n=JSON.parse(JSON.stringify(t)),r={};for(const t of n.Sections||[]){t.Hash||(t.Hash="".concat(this.fable.getUUID())),t.OriginalHash=t.Hash,t.Hash="".concat(t.Hash,"_").concat(i),r[t.OriginalHash]=t.Hash;for(const e of t.Groups||[])e.Hash||(e.Hash="".concat(this.fable.getUUID())),e.OriginalHash=e.Hash,e.Hash="".concat(e.Hash,"_").concat(i),r[e.OriginalHash]=e.Hash}const o=n.Descriptors||{},a={};for(const t of Object.entries(o)){var s=_slicedToArray(t,2);const e=s[0],n=s[1];n.DataAddress||(n.DataAddress=e),n.OriginalDataAddress=n.DataAddress,n.DataAddress="".concat(i,".").concat(n.OriginalDataAddress),null!=n.Address&&(n.Address=n.DataAddress),n.Hash&&(n.OriginalHash=n.Hash,n.Hash="".concat(n.Hash,"_").concat(i)),n.PictForm&&(n.PictForm.Section&&(n.PictForm.Section="".concat(n.PictForm.Section,"_").concat(i)),n.PictForm.Group&&(n.PictForm.Group="".concat(n.PictForm.Group,"_").concat(i))),a[n.DataAddress]=n}n.Descriptors=a;const c={};for(const t of Object.values((null==n?void 0:n.Descriptors)||{}))t.OriginalDataAddress&&(r[t.OriginalDataAddress]=t.DataAddress),t.OriginalHash&&(c[t.OriginalHash]=t.Hash);const l=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");for(const t of Object.entries(r)){var p=_slicedToArray(t,2);const e=p[0],i=p[1];for(const t of Object.keys(r)){if(t===e)continue;const o=r[t].replace(new RegExp("^".concat(l(e),"\\b"),"g"),i);if(o!==r[t]){this.pict.log.info('DocumentDynamicSectionManager.createDistinctManifest: Updated address translation for "'.concat(t,'" from "').concat(r[t],'" to "').concat(o,'".')),r[t]=o;const e=Object.entries(n.Descriptors).find(e=>{let i=_slicedToArray(e,2);i[0];return i[1].OriginalDataAddress===t}),i=_slicedToArray(e,2),a=i[0];i[1];n.Descriptors[a].DataAddress=o,null!=n.Descriptors[a].Address&&(n.Descriptors[a].Address=n.Descriptors[a].DataAddress),n.Descriptors[o]=n.Descriptors[a],delete n.Descriptors[a]}}}const d=(t,e,i)=>{const n=t[e],o="string"==typeof n?n:n.Expression;if(!o)return;const a=this.rewriteSolverExpression(o,c,r);a!==o&&(this.pict.log.info("DocumentDynamicSectionManager.createDistinctManifest: Updated ".concat(i," ").concat(e,' from "').concat(o,'" to "').concat(a,'".')),"string"==typeof n?t[e]=a:t[e].Expression=a)};for(const t of n.Sections||[]){if(Array.isArray(t.Solvers)&&t.Solvers.length>0)for(let e=0;e<t.Solvers.length;e++)d(t.Solvers,e,"section solver reference");for(const e of t.Groups||[]){if(e.RecordSetAddress){let t="".concat(i,".").concat(e.RecordSetAddress);this.pict.log.info('DocumentDynamicSectionManager.createDistinctManifest: Updated group record set address from "'.concat(e.RecordSetAddress,'" to "').concat(t,'".')),e.RecordSetAddress=t}if(Array.isArray(e.RecordSetSolvers)&&e.RecordSetSolvers.length>0)for(let t=0;t<e.RecordSetSolvers.length;t++)d(e.RecordSetSolvers,t,"group solver reference")}}if(Array.isArray(n.ValidationSolvers))for(let t=0;t<n.ValidationSolvers.length;t++)d(n.ValidationSolvers,t,"validation solver reference");return n}injectManifestsByHash(t,e,i){let n=[];for(const r of t){const t=this.findDynamicSectionManifestDefinition(r);if(t){const r=this.createDistinctManifest(t,i),o=this.injectManifest(r,e);n=n.concat(o)}}this.updateMetatemplateInDOM(),setTimeout(()=>{for(const t of n)t.render()},0)}bootstrapAdditiveManifest(t,e){const i=[],n=this.bootstrapPictFormViewsFromManifest(t,e);for(const t of n){const e=this.pict.views["PictSectionForm-".concat(t.Hash)];e&&i.push(e)}return i}filterViews(t,e){let i={ViewHashList:Object.keys(this.pict.views),RenderLastRenderedViewsWithoutCustomization:!0,LastRenderedViews:this.lastRenderedViews,FilterFunction:t,SortFunction:e,FilteredViewList:[]};i=this.onBeforeFilterViews(i);for(let t=0;t<i.ViewHashList.length;t++){let e=this.fable.views[i.ViewHashList[t]];if(!i.FilterFunction||i.FilterFunction(e))if(e.isPictSectionForm){if("function"!=typeof i.FilterFunction&&!e.sectionDefinition.IncludeInDefaultDynamicRender)continue;i.FilteredViewList.push(e)}else this.options.OnlyRenderDynamicSections&&!e.options.IncludeInMetacontrollerOperations||i.FilteredViewList.push(e)}const n=i.FilteredViewList.filter(t=>t.options.DynamicPlacementMode||t.options.DynamicAnchor);for(const t of n){const e=t.options.DynamicPlacementMode||"After",n=t.options.DynamicAnchor;let r,o=i.FilteredViewList.findIndex(e=>e===t);switch(e){case"First":i.FilteredViewList.splice(o,1),i.FilteredViewList.unshift(t);break;case"Last":i.FilteredViewList.splice(o,1),i.FilteredViewList.push(t);break;case"Before":case"After":if(r=i.FilteredViewList.findIndex(t=>t.Hash==n),r<0){const t="PictSectionForm-".concat(n);r=i.FilteredViewList.findIndex(e=>e.Hash==t)}if(r<0){this.log.error("No anchor view [".concat(n,"] found to position view [").concat(t.Hash,"] [").concat(e,"]."));break}i.FilteredViewList.splice(o,1),o<r&&--r,"After"===e&&++r,i.FilteredViewList.splice(r,0,t);break;default:this.log.error("Not auto-positioning view with unknown DynamicPlacementMode: ".concat(e))}}return"function"==typeof i.SortFunction&&i.FilteredViewList.sort(i.SortFunction),i=this.onAfterFilterViews(i),i.FilteredViewList}renderSpecificFormSection(t){this.lastRenderedViews=this.filterViews(e=>e.Hash==t),this.regenerateFormSectionTemplates(),this.generateMetatemplate(),this.render()}renderDefaultFormSections(){this.lastRenderedViews=this.filterViews(t=>{var e,i;return null!==(e=null==t||null===(i=t.sectionDefinition)||void 0===i?void 0:i.IncludeInDefaultDynamicRender)&&void 0!==e&&e}),this.regenerateFormSectionTemplates(),this.generateMetatemplate(),this.render()}renderFormSections(t,e){let i=this.filterViews(t,e);for(let t=0;t<i.length;t++)i[t]!==this&&i[t].render()}marshalFormSections(t,e){let i=this.filterViews(t,e);for(let t=0;t<i.length;t++)i[t]!==this&&i[t].marshalToView()}regenerateFormSectionTemplates(t,e){let i=this.filterViews(t,e);for(let t=0;t<i.length;t++){const e=i[t];e!==this&&(e.isPictSectionForm&&e.rebuildCustomTemplate())}this.pict.CSSMap.injectCSS()}generateMetatemplate(t,e){let i="";this.formTemplatePrefix||(this.formTemplatePrefix=this.pict.providers.MetatemplateGenerator.baseTemplatePrefix),i+="{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Header:Pict.views["').concat(this.Hash,'"]~}');let n=this.filterViews(t,e);for(let t=0;t<n.length;t++){let e=n[t];e!==this&&(e.options.IncludeInMetatemplateSectionGeneration?(i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Prefix:Pict.views["').concat(e.Hash,'"]~}'),e.isPictSectionForm?i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container:Pict.views["').concat(e.Hash,'"]~}'):(e.options.CustomTargetID=e.options.DefaultDestinationAddress.replace(/#/,""),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Custom:Pict.views["').concat(e.Hash,'"]~}')),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Postfix:Pict.views["').concat(e.Hash,'"]~}')):e.isPictSectionForm||(e.options.CustomTargetID=e.options.DefaultDestinationAddress.replace(/#/,""),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Prefix:Pict.views["').concat(e.Hash,'"]~}'),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Custom:Pict.views["').concat(e.Hash,'"]~}'),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Postfix:Pict.views["').concat(e.Hash,'"]~}')))}i+="{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Footer:Pict.views["').concat(this.Hash,'"]~}'),this.pict.TemplateProvider.addTemplate(this.options.MetaTemplateHash,i)}updateMetatemplateInDOM(t,e){this.formTemplatePrefix||(this.formTemplatePrefix=this.pict.providers.MetatemplateGenerator.baseTemplatePrefix);let i,n=this.filterViews(t,e),r=null,o=null;for(let t=0;t<n.length;t++){let e=n[t];if(e===this)continue;if(!e.isPictSectionForm)continue;if(!e.options.IncludeInMetatemplateSectionGeneration)continue;const a=e.options.CustomTargetID||"Pict-".concat(this.UUID,"-").concat(e.options.Hash,"-Wrap");let s=this.pict.ContentAssignment.getElement("#".concat(a));if(s.length>0){const t=s[0];o&&(this.pict.ContentAssignment.insertContentBefore("#".concat(a),i),o=null,i=null),r=t;continue}let c="";e.options.IncludeInMetatemplateSectionGeneration?(c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Prefix:Pict.views["').concat(e.Hash,'"]~}'),e.isPictSectionForm?c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container:Pict.views["').concat(e.Hash,'"]~}'):(e.options.CustomTargetID=e.options.DefaultDestinationAddress.replace(/#/,""),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Custom:Pict.views["').concat(e.Hash,'"]~}')),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Postfix:Pict.views["').concat(e.Hash,'"]~}')):e.isPictSectionForm||(e.options.CustomTargetID=e.options.DefaultDestinationAddress.replace(/#/,""),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Prefix:Pict.views["').concat(e.Hash,'"]~}'),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Custom:Pict.views["').concat(e.Hash,'"]~}'),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Postfix:Pict.views["').concat(e.Hash,'"]~}'));const l=this.pict.parseTemplate(c,e,null,[this]);r?(this.pict.ContentAssignment.insertContentAfter("#".concat(r.id),l),s=this.pict.ContentAssignment.getElement("#".concat(a)),r=s[0]):(o=a,i=l)}o&&(this.pict.ContentAssignment.appendContent("#Pict-".concat(this.UUID,"-FormContainer"),i),o=null,i=null)}getSectionDefinition(t){if("object"!=typeof t)return this.log.error("getSectionDefinition() called without a valid section object."),!1;if(!("Hash"in t))return this.log.error("getSectionDefinition() called without a valid section object hash."),!1;try{let e=JSON.parse(JSON.stringify(t));return"Name"in e||(e.Name=e.Hash),"Description"in e||(e.Description="PICT Section [".concat(e.Name,"].")),"Groups"in e||(e.Groups=[]),e}catch(t){return this.log.error("getSectionDefinition() failed to parse the section object with error: ".concat(t.message||t)),!1}}getSectionViewFromHash(t){let e="string"==typeof t&&t;if(!e)return this.log.error("getSectionViewFromHash() called without a valid section hash."),!1;let i="PictSectionForm-".concat(e);return i in this.fable.views?this.fable.views[i]:(this.log.error("getSectionViewFromHash() could not find a view for section hash [".concat(e,"].")),!1)}clearManifestDescription(){this.manifestDescription=null}bootstrapPictFormViewsFromManifest(t,e){let i="object"==typeof t&&t,n=[];if("object"!=typeof i){if(!("DefaultFormManifest"in this.fable.settings)||"object"!=typeof this.fable.settings.DefaultFormManifest||!("Descriptors"in this.fable.settings.DefaultFormManifest))return this.log.error("PictFormMetacontroller.bootstrapPictFormViewsFromManifest() called without a valid manifest, and no settings.DefaultFormManifest was provided."),n;i=this.fable.settings.DefaultFormManifest}if(this.manifestDescription){this.stashedManifestDescription=this.manifestDescription,this.manifestDescription=i;for(const t of Object.entries(this.manifestDescription.Descriptors||{})){var r=_slicedToArray(t,2);const e=r[0],i=r[1];this.stashedManifestDescription.Descriptors[e]?this.log.error("PictFormMetacontroller.bootstrapPictFormViewsFromManifest() found a duplicate descriptor key [".concat(e,"] when merging manifests. The new descriptor will be skipped.")):this.stashedManifestDescription.Descriptors[e]=JSON.parse(JSON.stringify(i))}for(const t of Object.keys(this.manifestDescription.ReferenceManifests||{}))this.stashedManifestDescription.ReferenceManifests[t]?this.log.warn("PictFormMetacontroller.bootstrapPictFormViewsFromManifest() found a duplicate reference manifest key [".concat(t,"] when merging manifests. The new reference manifest will be skipped.")):this.stashedManifestDescription.ReferenceManifests[t]=JSON.parse(JSON.stringify(this.manifestDescription.ReferenceManifests[t]));let t=this.stashedManifestDescription.Sections.findIndex(t=>t.Hash==e);t<0?t=0:++t;for(const e of this.manifestDescription.Sections||[]){const i=JSON.parse(JSON.stringify(e));this.stashedManifestDescription.Sections.splice(t,0,i),++t}}else this.manifestDescription=i;let a=this.fable.instantiateServiceProviderWithoutRegistration("Manifest",this.manifestDescription);if(this.options.AutoPopulateDefaultObject){const t=this.pict.providers.DataBroker.marshalDestinationObject;"object"==typeof t&&a.populateDefaults(t)}if("Sections"in this.manifestDescription&&Array.isArray(this.manifestDescription.Sections))for(let t=0;t<this.manifestDescription.Sections.length;t++){let e=this.getSectionDefinition(this.manifestDescription.Sections[t]);e&&n.push(e)}let s={},c=Object.keys(a.elementDescriptors);for(let t=0;t<c.length;t++){let e=a.elementDescriptors[c[t]];e&&this.pict.manifest.addDescriptor(c[t],e),"object"==typeof e&&"PictForm"in e&&"object"==typeof e.PictForm&&"Section"in e.PictForm&&"string"==typeof e.PictForm.Section&&(s[e.PictForm.Section]=!0)}let l=Object.keys(s);for(let t=0;t<l.length;t++){n.find(e=>e.Hash==l[t])||n.push(this.getSectionDefinition({Hash:l[t]}))}for(let t=0;t<n.length;t++){let e="PictSectionForm-".concat(n[t].Hash);if(e in this.fable.views){this.log.info("getSectionList() found an existing view for section [".concat(n[t].Hash,"] so will be skipped."));continue}let i=JSON.parse(JSON.stringify(n[t]));"Manifests"in i||(i.Manifests={}),i.Manifests.Section=this.manifestDescription,this.pict.addView(e,i,o)}if("PickLists"in this.manifestDescription){let t=Object.keys(this.manifestDescription.PickLists);for(let e=0;e<t.length;e++){let i=this.manifestDescription.PickLists[t[e]];this.pict.providers.DynamicMetaLists.buildList(i)}}for(let t=0;t<n.length;t++){let e=n[t];"CustomCSS"in e&&"string"==typeof e.CustomCSS&&this.pict.CSSMap.addCSS("PSF-SectionCSS-".concat(e.Hash),e.CustomCSS)}return this.stashedManifestDescription&&(this.manifestDescription=this.stashedManifestDescription,delete this.stashedManifestDescription),n}triggerGlobalInputEvent(t,e){const i=e&&"string"==typeof e?e:this.fable.getUUID();e!==i&&this.pict.TransactionTracking.registerTransaction(i);let n="string"==typeof t?t:this.fable.getUUID(),r=Object.keys(this.pict.views),o={},a=null;for(let t=0;t<r.length;t++){let e=this.pict.views[r[t]];e.isPictSectionForm&&(a=e,e.sectionInputEvent(n,o,i))}e!==i&&a&&a.finalizeTransaction(i)}registerEventTransactionAsyncOperation(t,e){this.pict.TransactionTracking.pushToTransactionQueue(t,e,a)}eventTransactionAsyncOperationComplete(t,e){const i=this.pict.TransactionTracking.checkTransactionQueue(t);let n=0,r=0,o=!1;for(let t=0;t<i.length;t++){const s=i[t];s.Type===a&&(s.Data===e?(i.splice(t,1),++r,--t):++n),s.Type===c&&(o=!0)}if(0!==r){if(o&&0===n){for(let t=0;t<i.length;t++){const e=i[t];if(e.Type===s){if(i.splice(t,1),--t,"function"!=typeof e.Data){this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete transaction callback was not a function.");continue}try{e.Data()}catch(t){this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete transaction callback error: ".concat(t),{Stack:t.stack})}}}delete this.pict.TransactionTracking.transactions[t]}return r>0}this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete ".concat(t," could not find async operation with hash ").concat(e,"."))}finalizeTransaction(t){this.pict.TransactionTracking.pushToTransactionQueue(t,null,c);const e=this.pict.TransactionTracking.checkTransactionQueue(t);let i=0;for(const t of e)t.Type===a&&++i;if(i>0)return this.pict.log.info("PICT View Metatemplate Helper finalizeTransaction ".concat(t," is waiting on ").concat(i," pending async operations.")),!1;for(let t=0;t<e.length;t++){const i=e[t];if(i.Type===s){if(e.splice(t,1),--t,"function"!=typeof i.Data){this.log.error("PICT View Metatemplate Helper finalizeTransaction transaction callback was not a function.");continue}try{i.Data()}catch(t){this.log.error("PICT View Metatemplate Helper finalizeTransaction transaction callback error: ".concat(t),{Stack:t.stack})}}}return delete this.pict.TransactionTracking.transactions[t],!0}registerOnTransactionCompleteCallback(t,e){const i=this.pict.TransactionTracking.checkTransactionQueue(t);let n=0,r=!1;for(const t of i)t.Type===a&&++n,t.Type===c&&(r=!0);r&&0===n?e():this.pict.TransactionTracking.pushToTransactionQueue(t,e,s)}showSupportViewInlineEditor(){this.pict.addViewSingleton("Pict-Form-DebugViewer",{},this.SupportViewPrototypes.DebugViewer),this.pict.addViewSingleton("Pict-Form-AppDataViewer",{},this.SupportViewPrototypes.AppDataViewer),this.pict.addViewSingleton("Pict-Form-SolverVisualization",{},this.SupportViewPrototypes.SolverVisualization),this.pict.views["Pict-Form-DebugViewer"].bootstrapContainer(),this.pict.views["Pict-Form-DebugViewer"].render()}get isPictMetacontroller(){return!0}},e.exports.default_configuration={AutoRender:!0,AutoPopulateDefaultObject:!0,AutoSolveBeforeRender:!0,AutoPopulateAfterRender:!0,DefaultRenderable:"Pict-Forms-Metacontainer",DefaultDestinationAddress:"#Pict-Form-Container",OnlyRenderDynamicSections:!0,MetaTemplateHash:"Pict-Forms-Metatemplate",Templates:[{Hash:"Pict-Forms-Metatemplate",Template:"\x3c!-- Pict-Forms-Metatemplate HAS NOT BEEN GENERATED; call pict.views.PictFormsMetatemplate.generateMetatemplate() to build the containers --\x3e"}],Renderables:[{RenderableHash:"Pict-Forms-Metacontainer",TemplateHash:"Pict-Forms-Metatemplate",DestinationAddress:"#Pict-Form-Container"}]}},{"../services/Pict-Service-DynamicFormDependencyManager.js":88,"./Pict-View-DynamicForm.js":103,"./support/Pict-View-PSF-AppData-Visualization.js":106,"./support/Pict-View-PSF-DebugViewer.js":107,"./support/Pict-View-PSF-LifeCycle-Visualization.js":108,"./support/Pict-View-PSF-Solver-Visualization.js":109,"./support/Pict-View-PSF-SpecificSolve-Visualization.js":110,"pict-view":38}],105:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-Form-SupportExtensions",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),"Pict-Support"in this.pict.CSSMap.inlineCSSMap||this.pict.CSSMap.addCSS("Pict-Support",'\n\t\t\t\t\t:root{\n\t\t\t\t\t\t--PSF-Global-background-color: #dcdce5;\n\t\t\t\t\t\t--PSF-Global-text-color: var(--theme-color-text-primary, #333333);\n\n\t\t\t\t\t\t--PSFExt-gutter-size: 5px;\n\t\t\t\t\t\t--PSFExt-indentation-size: calc(2 * var(--PSFExt-gutter-size));\n\t\t\t\t\t\t--PSFExt-Global-background-color: #dedede;\n\t\t\t\t\t\t--PSFExt-Global-text-color: var(--theme-color-text-primary, #333333);\n\t\t\t\t\t\t--PSFExt-Section-background-color: var(--theme-color-background-tertiary, #efefef);\n\t\t\t\t\t\t--PSFExt-Section-button-color: #5A52A3;\n\t\t\t\t\t\t--PSFExt-Section-button-text-color: #D8D7E5;\n\t\t\t\t\t\t--PSFExt-Section-token-color: #eAf3a2;\n\t\t\t\t\t\t--PSFExt-Section-label-color: var(--theme-color-text-muted, #999);\n\t\t\t\t\t\t--PSFExt-Section-Data-background-color: var(--theme-color-background-secondary, #fafafa);\n\t\t\t\t\t\t--PSFExt-Section-Group-Header-background-color: #ebebff;\n\t\t\t\t\t\t--PSFExt-Section-Group-Row-Header-background-color: #dcf0f0;\n\t\t\t\t\t\t--PSFExt-Solver-Entry-text-color: #bb4a9c;\n\t\t\t\t\t\t--PSFExt-Section-DynamicInput-background-color: #a3ccd8;\n\t\t\t\t\t\t--PSFExt-Section-DynamicInput-button-color: #2b89a4;\n\t\t\t\t\t\t--PSFExt-Section-DynamicInput-button-text-color: #D8D7E5;\n\t\t\t\t\t}\n\n\t\t\t\t\t/** Wrapping container\t*/\n\t\t\t\t\t#Pict-Form-Extensions-Wrap {\n\t\t\t\t\t\tdisplay:flex;\n\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\theight: 75vh;\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tleft: 50%;\n\t\t\t\t\t\ttop: 0px;\n\t\t\t\t\t\twidth: 20vw;\n\t\t\t\t\t\tmin-width: 340px;\n\t\t\t\t\t\tmin-height: 200px;\n\t\t\t\t\t}\n\t\t\t\t\t#Pict-Form-Extension-DragControl {\n\t\t\t\t\t\tbackground-color: #eae;\n\t\t\t\t\t\tcursor: move;\n\t\t\t\t\t\tpadding: 4px 6px;\n\t\t\t\t\t\tborder-radius: 3px;\n\t\t\t\t\t\tborder: 1px solid var(--theme-color-text-primary, #111);\n\t\t\t\t\t}\n\t\t\t\t\t#Pict-Form-Extensions-Container { \n\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\toverflow: auto;\n\t\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t\t\tcolor: var(--PSF-Global-text-color);\n\t\t\t\t\t\tbackground-color: var(--PSF-Global-background-color);\n\t\t\t\t\t\tpadding: 10px;\n\t\t\t\t\t\tborder: 4px double var(--theme-color-text-primary, #111);\n\t\t\t\t\t\tborder-radius: 8px;\n\t\t\t\t\t\tbox-shadow: 2px 2px 10px rgba(0,0,0,0.5);\n\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t\tfont-family: Arial, sans-serif;\n\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t}\n\t\t\t\t\t#Pict-Form-Extension-ResizeControl {\n\t\t\t\t\t\tbackground-color: #eae;\n\t\t\t\t\t\tcursor: move;\n\t\t\t\t\t\tpadding: 4px 4px;\n\t\t\t\t\t\tborder-radius: 3px;\n\t\t\t\t\t\tborder: 1px solid var(--theme-color-text-primary, #111);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Extension-Footer {\n\t\t\t\t\t\ttext-align: right;\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tmargin-top: 8px;\n\t\t\t\t\t}\n\n\t\t\t\t\t/** Headers\t*/\n\t\t\t\t\t.PSFExt-Extension-Header {\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tmargin-bottom: var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Global-Header {\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Header {\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Content-Header {\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-background-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Data-Header {\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tborder-bottom: 1px dotted var(--theme-color-border-default, #ccc);\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t/** Section content */\n\t\t\t\t\t.PSFExt-Section { \n\t\t\t\t\t\tmargin: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-background-color);\n\t\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Descriptors { \n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size) 0;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Group { \n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Buttons {\n\t\t\t\t\t\tlist-style-type: none;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\tpadding-bottom: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin: calc(var(--PSFExt-gutter-size) * 2) var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Button { \n\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\tmargin-right: calc(var(--PSFExt-gutter-size) * 0.25);\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-button-color);\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tborder-radius: var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Button a { \n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\tcolor: var(--PSFExt-Section-button-text-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Button a:hover { \n\t\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Solver-Entry:not(:last-child) {\n\t\t\t\t\t\tborder-bottom: 1px solid var(--theme-color-border-default, #ccc);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Solver-Entry { \n\t\t\t\t\t\tfont-family: "Courier New", "Lucida Console", monospace;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tmargin-top: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tline-height: 1.2;\n\t\t\t\t\t\tcolor: var(--PSFExt-Solver-Entry-text-color);\n\t\t\t\t\t\tborder-bottom: 1px dotted var(--theme-color-border-default, #ccc);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Solver-Result { \n\t\t\t\t\t\tfont-family: "Courier New", "Lucida Console", monospace;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tmargin-top: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tpadding: 0 var(--PSFExt-gutter-size);\n\t\t\t\t\t\tline-height: 1.2;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-ExtraData {\n\t\t\t\t\t\tpadding-top: calc(var(--PSFExt-gutter-size) / 2);\n\t\t\t\t\t\tpadding-bottom: calc(var(--PSFExt-gutter-size) / 2);\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-Data-background-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Group .PSFExt-Content-Header.PSFExt-Section-Group-Header {\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-Group-Header-background-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Group .PSFExt-Content-Header.PSFExt-Section-Group-Row-Header {\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-Group-Row-Header-background-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-DeEmphasize { \n\t\t\t\t\t\tcolor: var(--PSFExt-Section-label-color);\n\t\t\t\t\t\tfont-size: smaller;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Data { \n\t\t\t\t\t\tmargin-left: var(--PSFExt-indentation-size);\n\t\t\t\t\t\tline-height: 0.85;\n\t\t\t\t\t\tfont-size: smaller;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Data-Table {\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tborder-collapse: collapse;\n\t\t\t\t\t\tmargin-left: var(--PSFExt-indentation-size);\n\t\t\t\t\t\tmargin-top: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin-bottom: var(--PSFExt-gutter-size);\n\t\t\t\t\t\toverflow-x: auto;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Label { \n\t\t\t\t\t\tmin-width: 15%;\n\t\t\t\t\t\tcolor: var(--PSFExt-Section-label-color);\n\t\t\t\t\t\tmargin: var(--PSFExt-gutter-size) 0;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Label::after {\n\t\t\t\t\t\tcontent: ": ";\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Hidden { \n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Solver-DynamicInput {\n\t\t\t\t\t\tbackground-color: var(--theme-color-background-panel, #ffffff);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/** empty states */\n\t\t\t\t\t.PSFExt-Section-Solvers:empty::before {\n\t\t\t\t\t\tcontent: "No Section Solvers Defined";\n\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\tcolor: var(--PSFExt-Section-label-color);\n\t\t\t\t\t\tmargin-left: var(--PSFExt-indentation-size);\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tfont-size: smaller;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Group-Solvers:empty::before {\n\t\t\t\t\t\tcontent: "No Group/RecordSet Solvers Defined";\n\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\tcolor: var(--PSFExt-Section-label-color);\n\t\t\t\t\t\tmargin-left: var(--PSFExt-indentation-size);\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tfont-size: smaller;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-ExpressionEditbox {\n\t\t\t\t\t\twidth: calc(100% - 20px);\n\t\t\t\t\t\tresize: vertical;\n\t\t\t\t\t\tmin-height: 80px;\n\t\t\t\t\t\tfont-family: monospace;\n\t\t\t\t\t\tfont-size: 0.9em;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Token {\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-token-color);\n\t\t\t\t\t}\n\t\t\t\t',1e3,"Pict-Form-SupportBase"),null==this.pict.TemplateProvider.getTemplate("Pict-Form-Support-Container")&&this.pict.TemplateProvider.addTemplate("Pict-Form-Support-Container",'\n\t\t\t<div id="Pict-Form-Extensions-Wrap">\n\t\t\t\t<p class="PSFExt-Extension-Header"><span id="Pict-Form-Extension-DragControl" class="PSDV-Extension-Header-Controlbar">Pict.Extensions {~TS:Pict-Form-Support-Container-Link:Pict.providers[Pict-Form-SupportExtensions].getSupportViewLinks()~} <a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.toggleClass(\'#Pict-Form-Extensions-Container\', \'PSFExt-Hidden\');{~P~}.ContentAssignment.toggleClass(\'#Pict-Form-Extensions-Footer\', \'PSFExt-Hidden\');">toggle</a></span></p>\n\t\t\t\t<div id="Pict-Form-Extensions-Container"></div>\n\t\t\t\t<p id="Pict-Form-Extensions-Footer" class="PSFExt-Extension-Footer"><span id="Pict-Form-Extension-ResizeControl">Pict.Extensions Resize</span></p>\n\t\t\t</div>\n\t\t\t\t'),null==this.pict.TemplateProvider.getTemplate("Pict-Form-Support-Container-Link")&&this.pict.TemplateProvider.addTemplate("Pict-Form-Support-Container-Link",' [ <a href="{~D:Record.Link~}" onclick="{~D:Record.OnClick~}" data-shortname="{~D:Record.ShortName~}" data-longname="{~D:Record.LongName~}">{~D:Record.ShortName~}</a> ] '),this.SupportViews={}}registerSupportView(t){this.pict.log.info("Registering support view ".concat(t.Hash," with Pict Support Extension provider.")),this.SupportViews[t.Hash]=t}getSupportViewLinks(){let t=[],e=Object.keys(this.SupportViews);for(let i=0;i<e.length;i++){let n=e[i],r=this.SupportViews[n];t.push({Hash:r.Hash,Link:"javascript:void(0);",ShortName:r.DisplayShortName,LongName:r.DisplayLongName,OnClick:"".concat(this.pict.browserAddress,".views['").concat(r.Hash,"'].render()")})}return t}},e.exports.default_configuration=r},{"pict-provider":9}],106:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="FDT",this.DisplayLongName="FormData"}flattenMarshalDestination(){return this.flattenAddress(this.pict.views.PictFormMetacontroller.viewMarshalDestination)}flattenAppData(){return this.flattenAddress("AppData")}flattenAddress(t){let e=this.pict.resolveStateFromAddress(t);return this.pict.manifest.objectAddressGeneration.generateAddressses(e)}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-AppData",DefaultRenderable:"Pict-Form-AppData-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"",Templates:[{Hash:"Pict-Form-AppData-Content",Template:'\n<div id="Pict-Form-AppData-Content">\n\t<h2 class="PSFAD-Global-Header">Pict Form Data Visualization</h2>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">Form Marshal Destination</span> {~D:Pict.views.PictFormMetacontroller.viewMarshalDestination~}\n\t</p>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">Form Data</span> [<a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].downloadJSONObjectAsFile(\'Pict.{~D:Pict.views.PictFormMetacontroller.viewMarshalDestination~}\')">Download JSON</a>]\n\t</p>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">AppData</span> [<a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].downloadJSONObjectAsFile(\'Pict.AppData\')">Download AppData JSON</a>]\n\t</p>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">Fable Settings</span> [<a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].downloadJSONObjectAsFile(\'Pict.settings\')">Download fable settings JSON</a>]\n\t</p>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">Application Options</span> [<a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].downloadJSONObjectAsFile(\'Pict.PictApplication.options\')">Download Application options JSON</a>]\n\t</p>\n\t<div id="PSFExt-Data-Browser" class="PSFExt-Section">\n\t\t{~TVS:Pict-Form-AppData:Context[0].flattenMarshalDestination()~}\n\t</div>\n'},{Hash:"Pict-Form-AppData",Template:'\n\t<div class="PSFExt-Section">\n\t\t<h3 class="PSFExt-Section-Header"><span class="PSFExt-DeEmphasize">Address:</span> \n\t\t\t{~D:Record.Key~}\n\t\t</h3>\n\t\t<div id="PSFExt-AD-{~D:Record.Key~}-Extra" class="PSFExt-Section-ExtraData">\n\t\t\t{~TIfAbs:Pict-Form-AppData-ObjectValueDisplay:Record:Record.Value.DataType^==^Object~}\n\t\t\t{~TIfAbs:Pict-Form-AppData-NotObjectValueDisplay:Record:Record.Value.DataType^!=^Object~}\n\t\t</div>\n\t</div>\n'},{Hash:"Pict-Form-AppData-NotObjectValueDisplay",Template:"\n\t\t\t\t\x3c!-- Not Object Value Display --\x3e\n\t\t\t\t{~TIfAbs:Pict-Form-AppData-ArrayValueDisplay:Record:Record.Value.DataType^==^Array~}\n\t\t\t\t{~TIfAbs:Pict-Form-AppData-PrimitiveValueDisplay:Record:Record.Value.DataType^!=^Array~}\n"},{Hash:"Pict-Form-AppData-ObjectValueDisplay",Template:'\n\t\t\t\x3c!-- Object Value Display --\x3e\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Type</span> Javascript Object {~T:Pict-Form-AppData-ObjectDownloadLink~}\n\t\t\t</p>\n'},{Hash:"Pict-Form-AppData-ArrayValueDisplay",Template:'\n\t\t\t\x3c!-- Array Value Display --\x3e\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Type</span> Array {~TIfAbs:Pict-Form-AppData-ArrayDownloadLink~}\n\n\t\t\t</p>\n'},{Hash:"Pict-Form-AppData-PrimitiveValueDisplay",Template:'\n\t\t\t\x3c!-- Primitive Value Display --\x3e\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Value</span> {~D:Record.Value.Default~}\n\t\t\t</p>\n'},{Hash:"Pict-Form-AppData-ObjectDownloadLink",Template:"[<a href=\"javascript:void(0);\" onclick=\"{~P~}.views['{~D:Context[0].Hash~}'].downloadJSONObjectAsFile('Pict.{~D:Pict.views.PictFormMetacontroller.viewMarshalDestination~}')\">Download JSON</a>]"},{Hash:"Pict-Form-AppData-ArrayDownloadLink",Template:"[<a href=\"javascript:void(0);\" onclick=\"{~P~}.views['{~D:Context[0].Hash~}'].downloadJSONObjectAsFile('Pict.{~D:Pict.views.PictFormMetacontroller.viewMarshalDestination~}')\">Download Array</a>]"}],Renderables:[{RenderableHash:"Pict-Form-AppData-Renderable",TemplateHash:"Pict-Form-AppData-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],107:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="ILE",this.DisplayLongName="InlineEditor"}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-DebugViewer",DefaultRenderable:"Pict-Form-DebugViewer-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"\n\t/** Dynamic Input Section Overrides */\n\t#PSFExt-DynamicInputSection .PSFExt-Section { \n\t\tmargin: var(--PSFExt-gutter-size);\n\t\tpadding: var(--PSFExt-gutter-size);\n\t\tbackground-color: var(--PSFExt-Section-DynamicInput-background-color);\n\t}\n\n\t#PSFExt-DynamicInputSection .PSFExt-Section .PSFExt-Section-Button { \n\t\tbackground-color: var(--PSFExt-Section-DynamicInput-button-color);\n\t}\n\t#PSFExt-DynamicInputSection .PSFExt-Section .PSFExt-Section-Button a { \n\t\tcolor: var(--PSFExt-Section-DynamicInput-button-text-color);\n\t}\n\t#PSFExt-DynamicInputSection .PSFExt-Section .PSFExt-Label,\n\t#PSFExt-DynamicInputSection .PSFExt-Section .PSFExt-DeEmphasize { \n\t\tcolor: var(--PSFExt-Section-DynamicInput-button-color);\n\t}\n\t#PSFExt-DynamicInputSection .PSFExt-Section-Descriptors { \n\t\tborder-left: 5px solid var(--PSFExt-Section-DynamicInput-background-color);\n\t}\n\t#PSFExt-DynamicInputSection .PSFExt-Section-Group { \n\t\tborder-left: 5px solid var(--PSFExt-Section-DynamicInput-button-color);\n\t}\n",Templates:[{Hash:"Pict-Form-DebugViewer-Content",Template:'\n<div id="Pict-Form-DebugViewer-Content">\n\t<h2 class="PSFExt-Global-Header">Pict Inline Form Editing Tool</h2>\n\t{~T:Pict-Form-DebugViewer-MetacontrollerContainer~}\n</div>'},{Hash:"Pict-Form-DebugViewer-MetacontrollerContainer",Template:'\n\t<p class="PSFExt-Data"><span class="PSFExt-Label">Scope:</span> {~D:Context[0].getDynamicState().Scope~}</p>\n\t<ul class="PSFExt-Section-Buttons">\n\t</ul>\n\t<div id="PSFExt-SectionList">\n\t\t{~TS:Pict-Form-DebugViewer-SectionContainer:Context[0].getDynamicState().SectionViews~}\n\t</div>\n\t<hr>\n\t<div id="PSFExt-DynamicInputSection">\n\t\t{~T:Pict-Form-DebugViewer-SectionContainer:Context[0].getDynamicState().DynamicInputView~}\n\t</div>\n'},{Hash:"Pict-Form-DebugViewer-SectionContainer",Template:'\n\t<div id="PSFExt-Section-{~D:Record.Hash~}" class="PSFExt-Section">\n\t\t<h3 class="PSFExt-Section-Header"><span class="PSFExt-DeEmphasize">Section:</span> {~D:Record.sectionDefinition.Name~}</h3>\n\t\t<ul class="PSFExt-Section-Buttons">\n\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Record.View.Hash~}\'].render()">Render</a></li>\n\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.assignContent(\'{~D:Record.View.options.DefaultDestinationAddress~}\',\'\')">Clear</a></li>\n\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.removeClass(\'#PSFExt-{~D:Record.View.Hash~}-Extra\', \'PSFExt-Hidden\')">Extra Data</a></li>\n\t\t</ul>\n\t\t<div id="PSFExt-{~D:Record.View.Hash~}-Extra" class="PSFExt-Hidden PSFExt-Section-ExtraData">\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Description</span> {~D:Record.sectionDefinition.Description~}\n\t\t\t</p>\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Hash</span> {~D:Record.View.Hash~}\n\t\t\t</p>\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">HTML ID</span> {~D:Record.View.sectionDefinition.Macro.HTMLID~}\n\t\t\t</p>\n\t\t\t<h4 class="PSFExt-Content-Header">Section Solvers:</h4>\n\t\t\t<div class="PSFExt-Section-Solvers">{~TS:Pict-Form-DebugViewer-SolverEntry:Record.Solvers[]<<~?ExpressionScope,==,Section?~>>~}</div>\n\t\t\t<h4 class="PSFExt-Content-Header">Tabular/RecordSet Solvers:</h4>\n\t\t\t<div class="PSFExt-Group-Solvers">{~TS:Pict-Form-DebugViewer-SolverEntry:Record.Solvers[]<<~?ExpressionScope,==,Group?~>>~}</div>\n\t\t\t<h4 class="PSFExt-Content-Header">Inputs:</h4>\n\t\t\t<div class="PSFExt-Section-Solver-DynamicInput">\n\t\t\t\t{~TS:Pict-Form-DebugViewer-GroupContainer:Record.View.sectionDefinition.Groups~}\n\t\t\t</div>\n\t\t\t<ul class="PSFExt-Section-Buttons">\n\t\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.addClass(\'#PSFExt-{~D:Record.View.Hash~}-Extra\', \'PSFExt-Hidden\')">Hide Extra Data for {~D:Record.View.Hash~}</a></li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n'},{Hash:"Pict-Form-DebugViewer-SolverEntry",Template:'\n\t\t\t<div class="PSFExt-Section-Solver-Entry">\n\t\t\t\t<p class="PSFExt-Solver-Entry">{~D:Record.Expression~}</p>\n\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Last Result</span> <span class="PSFExt-Solver-Result">{~D:Record.LastResult~}</span></p>\n\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Sequence</span> Ordinal [{~D:Record.Ordinal~}] Index [{~D:Record.Index~}]</p>\n\t\t\t</div>\n\t\t\t'},{Hash:"Pict-Form-DebugViewer-GroupContainer",Template:'\n\t\t\t<div class="PSFExt-Section-Group">\n\t\t\t\t<h5 class="PSFExt-Content-Header PSFExt-Section-Group-Header">\n\t\t\t\t\t<span class="PSFExt-DeEmphasize">Group:</span> {~D:Record.Name~} [idx <em>{~D:Record.GroupIndex~}</em>]\n\t\t\t\t</h5>\n\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Layout</span> {~D:Record.Layout~}</p>\n\t\t\t\t<div class="PSFExt-Section-Rows">\n\t\t\t\t\t{~TS:Pict-Form-DebugViewer-RowContainer:Record.Rows~}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t'},{Hash:"Pict-Form-DebugViewer-RowContainer",Template:'\n\t\t\t\t\t<div class="PSFExt-Section-Descriptors">\n\t\t\t\t\t\t<h6 class="PSFExt-Content-Header PSFExt-Section-Group-Row-Header">\n\t\t\t\t\t\t\t<span class="PSFExt-DeEmphasize">Row:</span> {~D:Record.Hash~}\n\t\t\t\t\t\t</h6>\n\t\t\t\t\t\t{~TS:Pict-Form-DebugViewer-DescriptorContainer:Record.Inputs~}\n\t\t\t\t\t</div>\n'},{Hash:"Pict-Form-DebugViewer-DescriptorContainer",Template:'\n\t\t\t\t\t\t<div class="PSFExt-Section-Descriptor">\n\t\t\t\t\t\t\t<p class="PSFExt-Data-Header"><span class="PSFExt-DeEmphasize">Input:</span> {~D:Record.Name~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Hash</span> {~D:Record.Hash~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">DataType</span> {~D:Record.DataType~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">InputType</span> {~D:Record.PictForm.InputType~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Informary Data Address</span> {~D:Record.PictForm.InformaryDataAddress~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Input Index</span> {~D:Record.PictForm.InputIndex~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">HTML ID</span> {~D:Record.PictForm.Macro.HTMLID~}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t'}],Renderables:[{RenderableHash:"Pict-Form-DebugViewer-Renderable",TemplateHash:"Pict-Form-DebugViewer-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],108:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="LCV",this.DisplayLongName="LifecycleVisulization"}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-LifeCycle",DefaultRenderable:"Pict-Form-LifeCycle-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"",Templates:[{Hash:"Pict-Form-LifeCycle-Content",Template:'\n<div id="Pict-Form-LifeCycle-Content">\n\t<h2 class="PSFLC-Global-Header">Pict LifeCycle Visualization</h2>\n</div>\n'}],Renderables:[{RenderableHash:"Pict-Form-LifeCycle-Renderable",TemplateHash:"Pict-Form-LifeCycle-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],109:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="SLV",this.DisplayLongName="SolverVisualization"}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-Solver",DefaultRenderable:"Pict-Form-Solver-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"",Templates:[{Hash:"Pict-Form-Solver-Content",Template:'\n<div id="Pict-Form-Solver-Content">\n\t<h2 class="PSFS-Global-Header">Pict Solver Visualization</h2>\n\t<ul class="PSFExt-Section-Buttons">\n\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.views.PictFormMetacontroller.solve(); {~P~}.views.PictFormMetacontroller.marshalFormSections(); {~P~}.views[\'{~D:Context[0].Hash~}\'].render();">Solve</a></li>\n\t</ul>\n\t{~TS:Pict-Form-Solver-Entries:Context[0].getDynamicState().Solvers~}\n</div>\n'},{Hash:"Pict-Form-Solver-Entries",Template:'\n\t<div id="PSFExt-Section-{~D:Record.Hash~}" class="PSFExt-Section">\n\t\t<h3 class="PSFExt-Section-Header">\n\t\t\t<span class="PSFExt-DeEmphasize">{~D:Record.ExpressionScope~} {~D:Record.SectionOrdinal~}.G.{~D:Record.GroupOrdinal~}</span> Ord</span>{~D:Record.Ordinal~} <span class="PSFExt-DeEmphasize">Ind</span>{~D:Record.Index~}\n\t\t\t[ <a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.toggleClass(\'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionContainer\', \'PSFExt-Hidden\');">Edit</a> ]\n\t\t\t[ <a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.toggleClass(\'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExtraDataContainer\', \'PSFExt-Hidden\');">More</a> ]\n\t\t</h3>\n\t\t\n\t\t<div id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionContainer" class="PSFExt-Hidden">\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<textarea id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionEditbox" class="PSFExt-ExpressionEditbox">{~D:Record.Expression~}</textarea>\n\t\t\t</p>\n\t\t\t<ul class="PSFExt-Section-Buttons">\n\t\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].updateExpressionFromElement(\'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionEditbox\', \'{~D:Record.ExpressionScope~}\', \'{~D:Record.ViewHash~}\', {~D:Record.SectionOrdinal~}, {~D:Record.Index~}, \'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-Display\'); {~P~}.ContentAssignment.addClass(\'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionContainer\', \'PSFExt-Hidden\');">Apply</a></li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<div id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-Extra" class="PSFExt-Section-ExtraData">\n\t\t\t<p class="PSFExt-Solver-Entry" id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-Display">{~D:Record.Expression~}</p>\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Value</span> {~TBT:Record.Value:object,array:Pict-Form-RecordValueDisplayComplex:Record:Pict-Form-RecordValueDisplaySimple~}\n\t\t\t</p>\n\t\t</div>\n\t\t<div id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExtraDataContainer" class="PSFExt-Section-ExtraData PSFExt-Hidden">\n\t\t\t<h5 class="PSFExt-Content-Header PSFExt-Section-Group-Header">{~D:Record.LastResultsObject.PostfixTokenObjects.length~} Postfix Tokens</h5>\n\t\t\t{~TS:Pict-Form-Solver-PostfixToken:Record.LastResultsObject.PostfixTokenObjects~}\n\t\t\t<h5 class="PSFExt-Content-Header PSFExt-Section-Group-Header">Virtual Symbols</h5>\n\t\t\t{~TVS:Pict-Form-Solver-VirtualSymbols:Record.LastResultsObject.VirtualSymbols~}\n\t\t\t<h5 class="PSFExt-Content-Header PSFExt-Section-Group-Header">{~D:Record.LastResultsObject.PostfixTokenObjects.length~} Postfix Solve List</h5>\n\t\t\t{~TVS:Pict-Form-Solver-PostFixSolveEntry:Record.LastResultsObject.PostfixSolveList~}\n\t\t</div>\n\t</div>\n'},{Hash:"Pict-Form-Solver-PostfixToken",Template:'\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">{~D:Record.Type~}</span> <span class="PSFExt-Token">{~D:Record.Token~}</span>\n\t\t\t</p>\n'},{Hash:"Pict-Form-Solver-VirtualSymbols",Template:'\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">{~D:Record.Key~}</span> {~TBT:Record.Value:object,array:Pict-Form-RecordValueDisplayComplex:Record:Pict-Form-RecordValueDisplaySimple~}\n\t\t\t</p>\n'},{Hash:"Pict-Form-RecordValueDisplayComplex",Template:"\n\t\t\t\x3c!-- Complex Value --\x3e\n\t\t\t{~TBT:Record.Value:array:Pict-Form-RecordValueDisplayArray:Record:Pict-Form-RecordValueDisplayObject~}\n"},{Hash:"Pict-Form-RecordValueDisplayObject",Template:"JSON Object\n\t\t\t\x3c!-- RAW Object\n{~DJ:Record.Value~}\n\t\t\t--\x3e"},{Hash:"Pict-Form-RecordValueDisplayArray",Template:"JSON Array ({~D:Record.Value.length~} items)\n\t\t\t\x3c!-- RAW Array\n{~DJ:Record.Value~}\n\t\t\t--\x3e"},{Hash:"Pict-Form-RecordValueDisplaySimple",Template:"{~D:Record.Value~}"},{Hash:"Pict-Form-Solver-PostFixSolveEntry",Template:'\n\t\t\t<div>\n\t\t\t\t<h6 class="PSFExt-Content-Header PSFExt-Data-Header">Postfix Solve Entry #{~D:Record.Key~} Symbol <span class="PSFExt-Token">{~D:Record.Value.VirtualSymbolName~}</span></h6>\n\t\t\t\t<table class="PSFExt-Data-Table">\n\t\t\t\t\t<th>\n\t\t\t\t\t\t<tr><td></td><td>Left</td><td>Operation</td><td>Right</td></tr>\n\t\t\t\t\t</th>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Virtual Symbol</td>\n\t\t\t\t\t\t<td> {~D:Record.Value.LeftValue.VirtualSymbolName~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.Operation.VirtualSymbolName~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.RightValue.VirtualSymbolName~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Value</td>\n\t\t\t\t\t\t<td> {~TBT:Record.Value.LeftValue.Value:object,array:Pict-Form-RecordValueDisplayComplex:Record.Value.LeftValue:Pict-Form-RecordValueDisplaySimple~} </td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td> {~TBT:Record.Value.RightValue.Value:object,array:Pict-Form-RecordValueDisplayComplex:Record.Value.RightValue:Pict-Form-RecordValueDisplaySimple~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Tokens</td>\n\t\t\t\t\t\t<td> {~D:Record.Value.LeftValue.Token~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.Operation.Token~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.RightValue.Token~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Type</td>\n\t\t\t\t\t\t<td> {~D:Record.Value.LeftValue.Type~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.Operation.Type~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.RightValue.Type~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Solve Layer</td>\n\t\t\t\t\t\t<td> {~D:Record.Value.LeftValue.SolveLayerStack~} </td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td> {~D:Record.Value.RightValue.SolveLayerStack~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</div>\n'}],Renderables:[{RenderableHash:"Pict-Form-Solver-Renderable",TemplateHash:"Pict-Form-Solver-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],110:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="STV",this.DisplayLongName="SpecificSolveTimingVisualization"}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-SpecificSolve",DefaultRenderable:"Pict-Form-SpecificSolve-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"",Templates:[{Hash:"Pict-Form-SpecificSolve-Content",Template:'\n<div id="Pict-Form-SpecificSolve-Content">\n\t<h2 class="PSFSS-Global-Header">Pict Specific Solve Timing Visualization</h2>\n</div>\n'}],Renderables:[{RenderableHash:"Pict-Form-SpecificSolve-Renderable",TemplateHash:"Pict-Form-SpecificSolve-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],111:[function(t,e,i){const n=t("pict-view"),r=t("./Pict-Provider-PSF-Support.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict.addProviderSingleton("Pict-Form-SupportExtensions",{},r),this.DisplayShortName="U",this.DisplayLongName="UNDEFINED",this.pict.providers["Pict-Form-SupportExtensions"].registerSupportView(this)}getDynamicState(){if(!("PictFormMetacontroller"in this.pict.views))return this.pict.log.warn("Pict Forms Inline Editor tried to initialize but no metacontroller was found."),{Scope:"ERR_NO_METACONTROLLER",Description:"Error initializing inline editor -- no metacontroller found.",Manifest:this.fable.newManyfest(),Sections:[]};let t=this.pict.views.PictFormMetacontroller,e={Scope:t.manifestDescription.Scope,Description:"",Manifest:t.manifest,ManifestDescription:t.manifestDescription,AllViews:t.filterViews(),SectionViews:[],DynamicInputView:!1,Solvers:[]};for(let t=0;t<e.AllViews.length;t++){let i=e.AllViews[t];i.isPictSectionForm&&"PictFormMetacontroller-DynamicInputs"==i.Hash?e.DynamicInputView=i:i.isPictSectionForm&&e.SectionViews.push({View:i,sectionDefinition:i.sectionDefinition,Solvers:[]})}for(let t=0;t<e.SectionViews.length;t++){let i=e.SectionViews[t].View,n=e.SectionViews[t].Solvers;if(i.isPictSectionForm&&Array.isArray(i.sectionDefinition.Solvers))for(let r=0;r<i.sectionDefinition.Solvers.length;r++){let o=i.sectionDefinition.Solvers[r],a={ViewHash:i.Hash,SectionOrdinal:t,GroupOrdinal:-1,Ordinal:1,Index:r,Expression:"",ExpressionType:"Unknown",ExpressionScope:"Section"};"string"==typeof o?(a.Expression=o,a.ExpressionType="Simple"):"object"==typeof o&&(a.Expression=o.Expression,a.Ordinal=o.Ordinal,a.ExpressionType="Complex"),e.Solvers.push(a),n.push(a)}for(let r=0;r<i.sectionDefinition.Groups.length;r++){let o=i.getGroup(r);if("RecordSetSolvers"in o)for(let a=0;a<o.RecordSetSolvers.length;a++){let s=o.RecordSetSolvers[a],c={ViewHash:i.Hash,SectionOrdinal:t,GroupOrdinal:r,Ordinal:1,Index:a,Expression:"",ExpressionType:"Unknown",ExpressionScope:"Group"};s&&("string"==typeof s?(c.Expression=s,c.ExpressionType="Simple"):"object"==typeof s&&(c.Expression=s.Expression,c.Ordinal=s.Ordinal,c.ExpressionType="Complex")),e.Solvers.push(c),n.push(c)}}n.sort((t,e)=>t.Ordinal<e.Ordinal?-1:t.Ordinal>e.Ordinal?1:"Group"==t.ExpressionScope&&"Section"==e.ExpressionScope?-1:"Section"==t.ExpressionScope&&"Group"==e.ExpressionScope?1:t.Index<e.Index?-1:t.Index>e.Index?1:0)}if(e.Solvers.sort((t,e)=>t.Ordinal<e.Ordinal?-1:t.Ordinal>e.Ordinal?1:"Group"==t.ExpressionScope&&"Section"==e.ExpressionScope?-1:"Section"==t.ExpressionScope&&"Group"==e.ExpressionScope?1:t.Index<e.Index?-1:t.Index>e.Index?1:0),e.LastSolveOutcome=this.pict.providers.DynamicSolver.lastSolveOutcome,"object"==typeof e.LastSolveOutcome)for(let t=0;t<e.Solvers.length;t++){let i=e.Solvers[t];if(i.Ordinal in e.LastSolveOutcome.SolveOrdinals)if("Section"==i.ExpressionScope){let t=e.LastSolveOutcome.SolveOrdinals[i.Ordinal].SectionSolvers;if(Array.isArray(t))for(let e=0;e<t.length;e++){let n=t[e];n.ViewHash==i.ViewHash&&n.Solver.Expression==i.Expression&&(i.LastResult=n.Solver.ResultsObject.RawResult,i.Value=n.Solver.ResultsObject.RawResult,i.LastResultsObject=n.Solver.ResultsObject)}}else if("Group"==i.ExpressionScope){let t=e.LastSolveOutcome.SolveOrdinals[i.Ordinal].GroupSolvers;if(Array.isArray(t))for(let e=0;e<t.length;e++){let n=t[e];n.ViewHash==i.ViewHash&&n.Solver.Expression==i.Expression&&(n.Solver&&"ResultsObject"in n.Solver&&(i.LastResult=n.Solver.ResultsObject.RawResult),n.Solver&&"ResultsObject"in n.Solver&&(i.LastResultsObject=n.Solver.ResultsObject))}}}return e}getSectionSolvers(t){return this.getDynamicState().Solvers.map(e=>{if(e.ViewHash===t)return e})}downloadJSONObjectAsFile(t){try{const e=this.pict.resolveStateFromAddress(t),i="PICT_JSON_".concat(t.replace(".","_"),".json"),n=JSON.stringify(e,null,4);if(!URL||!Blob)return void this.pict.log.error("Browser does not support required features for downloading JSON object from address ".concat(t,"."));const r=new Blob([n],{type:"application/json"}),o=URL.createObjectURL(r),a=document.createElement("a");a.href=o,a.download=i,a.click(),URL.revokeObjectURL(o)}catch(e){this.pict.log.error("Error downloading JSON object from address ".concat(t,": ").concat(e.message))}}updateExpressionFromElement(t,e,i,n,r,o){let a=this.pict.ContentAssignment.readContent(t);if(!a)return void this.pict.log.warn("No expression found in element at address ".concat(t,"; cannot update ").concat(e," solver Ordinal ").concat(n," Index ").concat(r,"."));let s=this.pict.views.PictFormMetacontroller,c={Scope:s.manifestDescription.Scope,Description:"",Manifest:s.manifest,ManifestDescription:s.manifestDescription,AllViews:s.filterViews(),SectionViews:[],DynamicInputView:!1,Solvers:[]};for(let t=0;t<c.AllViews.length;t++){let e=c.AllViews[t];e.isPictSectionForm&&"PictFormMetacontroller-DynamicInputs"==e.Hash?c.DynamicInputView=e:e.isPictSectionForm&&c.SectionViews.push({View:e,sectionDefinition:e.sectionDefinition,Solvers:[]})}for(let t=0;t<c.SectionViews.length;t++){let o=c.SectionViews[t].View;c.SectionViews[t].Solvers;if(o.isPictSectionForm&&Array.isArray(o.sectionDefinition.Solvers))for(let s=0;s<o.sectionDefinition.Solvers.length;s++){let c=o.sectionDefinition.Solvers[s];"Section"==e&&t==n&&s==r&&o.Hash==i&&("string"==typeof c?o.sectionDefinition.Solvers[s]=a:"object"==typeof c&&(o.sectionDefinition.Solvers[s].Expression=a))}for(let s=0;s<o.sectionDefinition.Groups.length;s++){let c=o.getGroup(s);if("RecordSetSolvers"in c)for(let l=0;l<c.RecordSetSolvers.length;l++){let p=c.RecordSetSolvers[l];"Group"==e&&t==n&&s==r&&o.Hash==i&&("string"==typeof p?o.sectionDefinition.Solvers[s]=a:"object"==typeof p&&(o.sectionDefinition.Solvers[s].Expression=a))}}}o&&this.pict.ContentAssignment.assignContent(o,a)}bootstrapContainer(){let t=this.options.DefaultDestinationAddress;if(this.pict.ContentAssignment.getElement(this.options.DefaultDestinationAddress).length>0)return!0;let e="Pict-Form-Support-Container";e in this.renderables||(this.renderables[e]={RenderableHash:"Pict-Form-Support-Container",TemplateHash:"Pict-Form-Support-Container",ContentDestinationAddress:"body",RenderMethod:"append_once",TestAddress:"#Pict-Form-Extensions-Container"}),this.renderables[e].TestAddress=t,this.pict.CSSMap.injectCSS(),this.render(e);let i=document.getElementById("Pict-Form-Extensions-Wrap"),n=document.getElementById("Pict-Form-Extension-DragControl");i&&n&&n.addEventListener("mousedown",function(t){let e=t.offsetX+n.clientLeft,r=t.offsetY+n.clientTop;function o(t){t.stopPropagation(),i.style.left=t.clientX-e+"px",i.style.top=t.clientY-r+"px"}window.addEventListener("pointermove",o),window.addEventListener("pointerup",function t(e){window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",t)}),t.preventDefault()});let r=document.getElementById("Pict-Form-Extensions-Wrap"),o=document.getElementById("Pict-Form-Extension-ResizeControl");r&&o&&o.addEventListener("mousedown",function(t){function e(t){t.stopPropagation();let e=t.clientX-r.getBoundingClientRect().left,i=t.clientY-r.getBoundingClientRect().top,n=getComputedStyle(r),o=parseInt(n.minWidth,10),a=parseInt(n.minHeight,10);e<o&&(e=o),i<a&&(i=a),r.style.width=e+"px",r.style.height=i+"px"}window.addEventListener("pointermove",e),window.addEventListener("pointerup",function t(i){window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)}),t.preventDefault()})}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-SupportBase",DefaultRenderable:"Pict-Form-SUPPORT-BASE",RenderOnLoad:!1,Templates:[],Renderables:[{RenderableHash:"Pict-Form-SUPPORT-BASE",TemplateHash:"Pict-Form-SUPPORT-BASE-NOTEMPLATE"}]}},{"./Pict-Provider-PSF-Support.js":105,"pict-view":38}]},{},[1])(1)});
|
|
43
|
-
//# sourceMappingURL=richtext_form_example.min.js.map
|
|
42
|
+
const n=[{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"},{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"},{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"},{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"},{Key:"errorBkgColor",Var:"--theme-color-status-error",Fallback:"#b62828"},{Key:"errorTextColor",Var:"--theme-color-text-on-brand",Fallback:"#ffffff"},{Key:"fontFamily",Var:"--theme-typography-family-sans",Fallback:"inherit"}];function r(t,e,i){if("undefined"==typeof window||"undefined"==typeof document)return e||"";let n=i||document.documentElement;return n?(getComputedStyle(n).getPropertyValue(t)||"").trim()||e||"":e||""}function o(t){let e={};for(let t=0;t<n.length;t++){let i=n[t];e[i.Key]=r(i.Var,i.Fallback)}if(t&&"object"==typeof t){let i=Object.keys(t);for(let n=0;n<i.length;n++)e[i[n]]=t[i[n]]}return e}function a(t,e){if(!t||"function"!=typeof t.initialize)return!1;let i=e||{},n=i.themeVariables,r=i.config||{},a=o(n),s=Object.assign({startOnLoad:!1,theme:"base",securityLevel:"loose"},r,{themeVariables:a});return t.initialize(s),!0}function s(t){if("undefined"==typeof document)return null;let e="undefined"!=typeof mermaid?mermaid:null;if(!e||"function"!=typeof e.run)return null;let i=function(t){let e="pre.mermaid[data-mermaid-source]";if(!t)return document.querySelectorAll(e);if("string"==typeof t){let i=document.querySelector(t);return i?i.querySelectorAll(e):[]}if(t.querySelectorAll)return t.querySelectorAll(e);return[]}(t);if(!i||i.length<1)return null;for(let t=0;t<i.length;t++){let e=i[t],n=e.getAttribute("data-mermaid-source");null!==n&&(e.textContent=n),e.removeAttribute("data-processed"),e.classList&&"function"==typeof e.classList.remove&&e.classList.remove("mermaid-rendered")}try{let t=e.run({nodes:i});return t&&"function"==typeof t.then?t.then(function(){return c(i),t}):(c(i),t)}catch(t){return Promise.reject(t)}}function c(t){if("undefined"==typeof document)return 0;let e;if(t)if("string"==typeof t){let i=document.querySelector(t);e=i?i.querySelectorAll("pre.mermaid"):[]}else if(void 0!==t.length)e=t;else{if(!t.querySelectorAll)return 0;e=t.querySelectorAll("pre.mermaid")}else e=document.querySelectorAll("pre.mermaid");let i=0;for(let t=0;t<e.length;t++){let n=e[t];if(!n||!n.querySelectorAll)continue;let r=n.querySelectorAll('.node rect[style*="!important"], .node polygon[style*="!important"], .node circle[style*="!important"], .node ellipse[style*="!important"], .node path[style*="!important"], .cluster rect[style*="!important"]');for(let t=0;t<r.length;t++){let e=r[t],n=e.getAttribute("style")||"";n.indexOf("!important")<0||(e.setAttribute("style",n.replace(/\s*!important\s*/gi,"")),i++)}}return i}e.exports={MERMAID_TOKEN_MAP:n,readCSSVar:r,getMermaidTokenMap:function(){return n.map(t=>({Key:t.Key,Var:t.Var,Fallback:t.Fallback}))},buildMermaidThemeVariables:o,initializeMermaid:a,stashMermaidSource:function(t){if(t&&!(t.length<1))for(let e=0;e<t.length;e++){let i=t[e];i&&"function"==typeof i.getAttribute&&(i.hasAttribute("data-mermaid-source")||i.setAttribute("data-mermaid-source",i.textContent))}},refreshMermaidDiagrams:s,stripMermaidStyleImportance:c,adaptMermaid:function(t,e,i){let n=i||{},r={themeVariables:n.themeOverrides,config:n.configOverrides};a(e,r);let o=function(t){if("function"==typeof n.onBeforeRefresh)try{n.onBeforeRefresh(t||{})}catch(t){}a(e,r);let i=s(n.refreshScope);return i&&"function"==typeof i.then&&"function"==typeof n.onAfterRefresh&&i.then(()=>{try{n.onAfterRefresh(t||{})}catch(t){}},()=>{try{n.onAfterRefresh(t||{})}catch(t){}}),i},c=function(){},l=!1;return t&&"function"==typeof t.onApply&&(c=t.onApply(function(t,e){o(e||{})}),l=!0),{dispose:function(){"function"==typeof c&&c()},refresh:o,reinitialize:function(){a(e,r)},subscribed:l}}}},{}],8:[function(t,e,i){e.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:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]}}},{}],9:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../package.json"),o={ProviderIdentifier:!1,AutoInitialize:!0,AutoInitializeOrdinal:0,AutoLoadDataWithApp:!0,AutoLoadDataOrdinal:0,AutoSolveWithApp:!0,AutoSolveOrdinal:0,Manifests:{},Templates:[]};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(o)),e),i),this.fable,this.pict,this.log,this.options,this.UUID,this.Hash,this.options.ProviderIdentifier||(this.options.ProviderIdentifier="AutoProviderID-".concat(this.fable.getUUID())),this.serviceType="PictProvider",this._Package=r,this.pict=this.fable,this.AppData=this.pict.AppData,this.Bundle=this.pict.Bundle,this.initializeTimestamp=!1,this.lastSolvedTimestamp=!1;for(let t=0;t<this.options.Templates.length;t++){let e=this.options.Templates[t];e.hasOwnProperty("Postfix")&&e.hasOwnProperty("Template")?(e.Source||(e.Source="PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," options object.")),this.pict.TemplateProvider.addDefaultTemplate(e.Prefix,e.Postfix,e.Template,e.Source)):this.log.error("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," could not load Default Template ").concat(t," in the options array."),e)}}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow PROVIDER [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialize:")),this.initializeTimestamp?(this.log.warn("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialize called but initialization is already completed. Aborting.")),!1):(this.onBeforeInitialize(),this.onInitialize(),this.onAfterInitialize(),this.initializeTimestamp=this.pict.log.getTimeStamp(),!0)}initializeAsync(t){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow PROVIDER [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initializeAsync:")),this.initializeTimestamp)return this.log.warn("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," async initialize called but initialization is already completed. Aborting.")),t();{let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate");this.pict.LogNoisiness>0&&this.log.info("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," beginning initialization...")),e.anticipate(this.onBeforeInitializeAsync.bind(this)),e.anticipate(this.onInitializeAsync.bind(this)),e.anticipate(this.onAfterInitializeAsync.bind(this)),e.wait(e=>(this.initializeTimestamp=this.pict.log.getTimeStamp(),e?this.log.error("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialization failed: ").concat(e.message||e),{Stack:e.stack}):this.pict.LogNoisiness>0&&this.log.info("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," initialization complete.")),t()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onPreRender(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onPreRender:")),!0}onPreRenderAsync(t){return this.onPreRender(),t()}render(){return this.onPreRender()}renderAsync(t){return this.onPreRender(),t()}onPreSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onPreSolve:")),!0}onPreSolveAsync(t){return this.onPreSolve(),t()}solve(){return this.onPreSolve()}solveAsync(t){return this.onPreSolve(),t()}onBeforeLoadDataAsync(t){return t()}onLoadDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onLoadDataAsync:")),t()}onAfterLoadDataAsync(t){return t()}onBeforeSaveDataAsync(t){return t()}onSaveDataAsync(t){return this.pict.LogNoisiness>3&&this.log.trace("PictProvider [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ProviderIdentifier," onSaveDataAsync:")),t()}onAfterSaveDataAsync(t){return t()}}},{"../package.json":8,"fable-serviceproviderbase":3}],10:[function(t,e,i){const n={javascript:{tokenizer:/(\/\/[^\n]*|\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2|(`(?:[^`\\]|\\.)*?`)|(\/(?![/*])(?:\\.|\[(?:\\.|[^\]])*\]|[^/\\\n])+\/[gimsuvy]*)/g,keywords:/\b(async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|export|extends|finally|for|from|function|get|if|import|in|instanceof|let|new|of|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/g,builtins:/\b(true|false|null|undefined|NaN|Infinity|console|window|document|Math|JSON|Array|Object|String|Number|Boolean|Date|RegExp|Map|Set|Promise|Error|Symbol|parseInt|parseFloat|require|module|exports)\b/g,numbers:/\b(\d+\.?\d*(?:e[+-]?\d+)?|0x[0-9a-fA-F]+|0b[01]+|0o[0-7]+)\b/g},json:{tokenizer:/(\/\/[^\n]*|\/\*[\s\S]*?\*\/)|("(?:[^"\\]|\\.)*")/g,keywords:/\b(true|false|null)\b/g,numbers:/-?\b\d+\.?\d*(?:e[+-]?\d+)?\b/g},html:{tokenizer:/(<!--[\s\S]*?-->)|(["'])(?:(?!\2|\\).|\\.)*?\2|(<\/?[a-zA-Z][a-zA-Z0-9-]*(?:\s+[a-zA-Z-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*\/?>)/g,tagGroupIndex:3},css:{tokenizer:/(\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2/g,selectors:/([.#]?[a-zA-Z_][\w-]*(?:\s*[>+~]\s*[.#]?[a-zA-Z_][\w-]*)*)\s*\{/g,properties:/\b([a-zA-Z-]+)\s*:/g,numbers:/\b(\d+\.?\d*)(px|em|rem|%|vh|vw|s|ms|deg|fr)?\b/g,keywords:/\b(important|inherit|initial|unset|none|auto|block|inline|flex|grid)\b/g},sql:{tokenizer:/(--[^\n]*|\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2/g,keywords:/\b(SELECT|FROM|WHERE|AND|OR|INSERT|INTO|VALUES|UPDATE|SET|DELETE|CREATE|TABLE|DROP|ALTER|ADD|COLUMN|INDEX|JOIN|LEFT|RIGHT|INNER|OUTER|ON|AS|ORDER|BY|GROUP|HAVING|LIMIT|OFFSET|UNION|ALL|DISTINCT|COUNT|SUM|AVG|MIN|MAX|NOT|NULL|IS|IN|BETWEEN|LIKE|EXISTS|CASE|WHEN|THEN|ELSE|END|PRIMARY|KEY|FOREIGN|REFERENCES|CONSTRAINT|DEFAULT|CHECK|UNIQUE|CASCADE|GRANT|REVOKE|COMMIT|ROLLBACK|BEGIN|TRANSACTION|INT|VARCHAR|DATETIME|AUTO_INCREMENT|CURRENT_TIMESTAMP)\b/gi,numbers:/\b\d+\.?\d*\b/g}};function r(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function o(t,e){let i=t;return e.selectors&&(e.selectors.lastIndex=0,i=i.replace(e.selectors,'<span class="function-name">$1</span>{')),e.properties&&(e.properties.lastIndex=0,i=i.replace(e.properties,'<span class="property">$1</span>:')),e.keywords&&(e.keywords.lastIndex=0,i=i.replace(e.keywords,'<span class="keyword">$1</span>')),e.builtins&&(e.builtins.lastIndex=0,i=i.replace(e.builtins,'<span class="keyword">$1</span>')),e.numbers&&(e.numbers.lastIndex=0,i=i.replace(e.numbers,t=>'<span class="number">'.concat(t,"</span>"))),i}function a(t){let e="",i=t,n=i.match(/^(<\/?)([a-zA-Z][a-zA-Z0-9-]*)/);if(!n)return r(t);e+=r(n[1]),e+='<span class="tag">'+r(n[2])+"</span>",i=i.substring(n[0].length);let o,a=/^(\s+)([a-zA-Z-]+)(?:(\s*=\s*)(["'])([^"']*?)\4)?/;for(;null!==(o=i.match(a));)e+=o[1],e+='<span class="attr-name">'+r(o[2])+"</span>",o[3]&&(e+=r(o[3]),e+='<span class="attr-value">'+r(o[4])+r(o[5])+r(o[4])+"</span>"),i=i.substring(o[0].length);return e+=r(i),e}n.js=n.javascript,n.htm=n.html,e.exports=function(t){return function(e){let i=e.textContent,s="string"==typeof t?t.toLowerCase():"javascript",c=n[s];if(!c)return void(e.innerHTML=r(i));if(!c.tokenizer)return void(e.innerHTML=o(r(i),c));let l,p="",d=0,u=c.tagGroupIndex||0;for(c.tokenizer.lastIndex=0;null!==(l=c.tokenizer.exec(i));){if(l.index>d){p+=o(r(i.substring(d,l.index)),c)}let t=l[0];l[1]?p+='<span class="comment">'.concat(r(t),"</span>"):u>0&&l[u]?p+=a(t):p+='<span class="string">'.concat(r(t),"</span>"),d=c.tokenizer.lastIndex}if(d<i.length){p+=o(r(i.substring(d)),c)}e.innerHTML=p}},e.exports.LanguageDefinitions=n},{}],11:[function(t,e,i){e.exports={RenderOnLoad:!0,DefaultRenderable:"CodeEditor-Wrap",DefaultDestinationAddress:"#CodeEditor-Container-Div",Templates:[{Hash:"CodeEditor-Container",Template:"\x3c!-- CodeEditor-Container Rendering Soon --\x3e"}],Renderables:[{RenderableHash:"CodeEditor-Wrap",TemplateHash:"CodeEditor-Container",DestinationAddress:"#CodeEditor-Container-Div"}],TargetElementAddress:"#CodeEditor-Container-Div",CodeDataAddress:!1,Language:"javascript",ReadOnly:!1,Tab:"\t",IndentOn:/[({[]$/,MoveToNewLine:/^[)}\]]/,AddClosing:!0,CatchTab:!0,LineNumbers:!0,DefaultCode:"// Enter your code here\n",CSS:".pict-code-editor-wrap\n{\n\tdisplay: flex;\n\tfont-family: 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 — 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 — 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 — 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"}},{}],12:[function(t,e,i){const n=t("pict-view"),r=t("./Pict-Code-Highlighter.js"),o=t("./Pict-Section-Code-DefaultConfiguration.js");e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},o,e),i),this.initialRenderComplete=!1,this.codeJar=null,this._highlightFunction=null,this._language=this.options.Language||"javascript"}onBeforeInitialize(){return super.onBeforeInitialize(),this._codeJarPrototype=null,this.targetElement=!1,this._highlightFunction=r(this._language),super.onBeforeInitialize()}connectCodeJarPrototype(t){if("function"!=typeof t)return"undefined"!=typeof window&&"function"==typeof window.CodeJar?(this.log.trace("PICT-Code Found CodeJar in window.CodeJar."),void(this._codeJarPrototype=window.CodeJar)):(this.log.error("PICT-Code No CodeJar prototype found. Include codejar via script tag or call connectCodeJarPrototype(CodeJar) explicitly."),!1);this._codeJarPrototype=t}onAfterRender(t){return this.pict.CSSMap.injectCSS(),this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),super.onAfterRender(t)}onAfterInitialRender(){if(this._codeJarPrototype||this.connectCodeJarPrototype(),!this._codeJarPrototype)return this.log.error("PICT-Code Cannot initialize editor; no CodeJar prototype available."),!1;if(this.codeJar)return this.log.error("PICT-Code editor is already initialized!"),!1;let t=this.services.ContentAssignment.getElement(this.options.TargetElementAddress);if(!t||t.length<1)return this.log.error("PICT-Code Could not find target element [".concat(this.options.TargetElementAddress,"]!")),this.targetElement=!1,!1;this.targetElement=t[0],this._buildEditorDOM();let e=this._resolveCodeContent(),i={};this.options.Tab&&(i.tab=this.options.Tab),this.options.IndentOn&&(i.indentOn=this.options.IndentOn),this.options.MoveToNewLine&&(i.moveToNewLine=this.options.MoveToNewLine),void 0!==this.options.AddClosing&&(i.addClosing=this.options.AddClosing),void 0!==this.options.CatchTab&&(i.catchTab=this.options.CatchTab),this.customConfigureEditorOptions(i);let n=this._editorElement;if(this.codeJar=this._codeJarPrototype(n,this._highlightFunction,i),this._resetEditorWrapStyles(),e&&this.codeJar.updateCode(e),this.codeJar.onUpdate(t=>{this._updateLineNumbers(),this.onCodeChange(t)}),this._updateLineNumbers(),this._lineNumbersElement){let t=this._lineNumbersElement;n.addEventListener("scroll",function(){t.style.transform="translateY(-"+n.scrollTop+"px)"},{passive:!0})}if(this._syncGutterMetrics(),this._lineNumbersElement&&"function"==typeof ResizeObserver){let t=this;this._editorResizeObserver=new ResizeObserver(function(){t._syncGutterMetrics()}),this._editorResizeObserver.observe(n)}if(this._lineNumbersElement&&"function"==typeof MutationObserver){let t=this;this._editorStyleObserver=new MutationObserver(function(){t._syncGutterMetrics()}),this._editorStyleObserver.observe(n,{attributes:!0,attributeFilter:["style","class"]})}this.options.ReadOnly&&n.setAttribute("contenteditable","false")}_buildEditorDOM(){this.targetElement.innerHTML="";let t=document.createElement("div");if(t.className="pict-code-editor-wrap",this.options.LineNumbers){let e=document.createElement("div");e.className="pict-code-line-numbers",t.appendChild(e),this._lineNumbersElement=e}let e=document.createElement("div");e.className="pict-code-editor language-"+this._language,this.options.LineNumbers||(e.className+=" pict-code-no-line-numbers"),t.appendChild(e),this.targetElement.appendChild(t),this._editorElement=e,this._wrapElement=t}_updateLineNumbers(){if(!this.options.LineNumbers||!this._lineNumbersElement||!this._editorElement)return;let t=(this._editorElement.textContent||"").split("\n").length,e="";for(let i=1;i<=t;i++)e+="<span>".concat(i,"</span>");this._lineNumbersElement.innerHTML=e,this._syncGutterMetrics()}_syncGutterMetrics(){if(!this._lineNumbersElement||!this._editorElement)return;if("undefined"==typeof window||"function"!=typeof window.getComputedStyle)return;let t=window.getComputedStyle(this._editorElement),e=t.lineHeight;if(e&&"normal"!==e&&(this._lineNumbersElement.style.lineHeight=e),t.paddingTop&&(this._lineNumbersElement.style.paddingTop=t.paddingTop),t.paddingBottom&&(this._lineNumbersElement.style.paddingBottom=t.paddingBottom),t.fontFamily&&(this._lineNumbersElement.style.fontFamily=t.fontFamily),"undefined"!=typeof console&&console.warn){let t=this._lineNumbersElement.querySelector("span");if(t){let i=t.getBoundingClientRect().height,n=parseFloat(e);i&&n&&Math.abs(i-n)>.5&&console.warn("[pict-section-code] gutter/editor row-height mismatch: gutter "+i+"px vs editor "+n+"px — line numbers will drift. Check for CSS overriding .pict-code-line-numbers line-height.")}}}syncMetrics(){this._syncGutterMetrics()}_resetEditorWrapStyles(){this._editorElement&&(this._editorElement.style.whiteSpace="pre",this._editorElement.style.overflowWrap="normal")}_resolveCodeContent(){if(this.options.CodeDataAddress){const t={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};let e=this.fable.manifest.getValueByHash(t,this.options.CodeDataAddress);if("string"==typeof e)return e;this.log.warn("PICT-Code Address [".concat(this.options.CodeDataAddress,"] did not return a string; it was ").concat(typeof e,"."))}return this.options.DefaultCode||""}customConfigureEditorOptions(t){}onCodeChange(t){if(this.options.CodeDataAddress){const e={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};this.fable.manifest.setValueByHash(e,this.options.CodeDataAddress,t)}}getCode(){return this.codeJar?this.codeJar.toString():(this.log.warn("PICT-Code getCode called before editor initialized."),"")}setCode(t){this.codeJar?(this.codeJar.updateCode(t),this._updateLineNumbers()):this.log.warn("PICT-Code setCode called before editor initialized.")}setLanguage(t){if(this._language=t,this._highlightFunction=r(t),this._editorElement&&(this._editorElement.className="pict-code-editor language-"+t,this.options.LineNumbers||(this._editorElement.className+=" pict-code-no-line-numbers")),this.codeJar){let t=this.codeJar.toString();this.codeJar.destroy(),this.codeJar=this._codeJarPrototype(this._editorElement,this._highlightFunction,{tab:this.options.Tab,catchTab:this.options.CatchTab,addClosing:this.options.AddClosing}),this._resetEditorWrapStyles(),this.codeJar.updateCode(t),this.codeJar.onUpdate(t=>{this._updateLineNumbers(),this.onCodeChange(t)})}}setHighlightFunction(t){if("function"==typeof t){if(this._highlightFunction=t,this.codeJar){let t=this.codeJar.toString();this.codeJar.destroy(),this.codeJar=this._codeJarPrototype(this._editorElement,this._highlightFunction,{tab:this.options.Tab,catchTab:this.options.CatchTab,addClosing:this.options.AddClosing}),this._resetEditorWrapStyles(),this.codeJar.updateCode(t),this.codeJar.onUpdate(t=>{this._updateLineNumbers(),this.onCodeChange(t)})}}else this.log.error("PICT-Code setHighlightFunction requires a function.")}setReadOnly(t){this.options.ReadOnly=t,this._editorElement&&this._editorElement.setAttribute("contenteditable",t?"false":"true")}destroy(){this._editorResizeObserver&&(this._editorResizeObserver.disconnect(),this._editorResizeObserver=null),this._editorStyleObserver&&(this._editorStyleObserver.disconnect(),this._editorStyleObserver=null),this.codeJar&&(this.codeJar.destroy(),this.codeJar=null)}marshalToView(){if(super.marshalToView(),this.codeJar&&this.options.CodeDataAddress){let t=this._resolveCodeContent();"string"==typeof t&&(this.codeJar.updateCode(t),this._updateLineNumbers())}}marshalFromView(){super.marshalFromView(),this.codeJar&&this.options.CodeDataAddress&&this.onCodeChange(this.codeJar.toString())}},e.exports.default_configuration=o,e.exports.createHighlighter=r;const a=t("./demos");e.exports.demos=a.demos,e.exports.registerWithDocuserve=a.registerWithDocuserve},{"./Pict-Code-Highlighter.js":10,"./Pict-Section-Code-DefaultConfiguration.js":11,"./demos":13,"pict-view":38}],13:[function(t,e,i){const n=t("../Pict-Section-Code.js");function r(t,e,i){let r="demo-code-"+(i.Hash||"unnamed")+"-"+Date.now();e.innerHTML='<div id="'+r+'"></div>';let o={ViewIdentifier:"Demo-Code-"+r,DefaultDestinationAddress:"#"+r,Templates:[{Hash:"CodeEditor-Container",Template:"\x3c!-- demo code editor renders here --\x3e"}],Renderables:[{RenderableHash:"CodeEditor-Wrap",TemplateHash:"CodeEditor-Container",DestinationAddress:"#"+r}],TargetElementAddress:"#"+r,Language:i.Language||"javascript",ReadOnly:!!i.ReadOnly,LineNumbers:!1!==i.LineNumbers,Tab:i.Tab||"\t",AddClosing:!1!==i.AddClosing,CatchTab:!1!==i.CatchTab,DefaultCode:i.Code||"// example code\n",AutoRender:!1,RenderOnLoad:!1},a=t.addView(o.ViewIdentifier,o,n);if(!a)return null;if("undefined"!=typeof window&&(window.CodeJarModules&&"function"==typeof window.CodeJarModules.CodeJar?a.connectCodeJarPrototype(window.CodeJarModules.CodeJar):"function"==typeof window.CodeJar&&a.connectCodeJarPrototype(window.CodeJar),window.CodeJarModules&&window.CodeJarModules.hljs)){let t=window.CodeJarModules.hljs,e=o.Language;a._highlightFunction=function(i){i.removeAttribute("data-highlighted"),delete i.dataset.highlighted,i.className=i.className.replace(/\bhljs\b/g,"").replace(/\blanguage-\S+/g,"").trim(),i.classList.add("language-"+e);try{t.highlightElement(i)}catch(t){}}}try{a.render()}catch(t){}return a}const o=[{DemoSchemaVersion:1,Hash:"javascript-editor",Group:"pict",Module:"pict-section-code",Name:"JavaScript editor",Description:"Default pict-section-code configuration — line numbers on, highlight.js for JavaScript, two-space tab.",Spec:{Hash:"javascript-editor",Language:"javascript",LineNumbers:!0,Tab:" ",Code:"// A small example — try editing me.\nfunction fibonacci(n) {\n if (n <= 1) return n;\n return fibonacci(n - 1) + fibonacci(n - 2);\n}\n\nfor (let i = 0; i < 10; i++) {\n console.log(`fib(${i}) =`, fibonacci(i));\n}\n"},Mount:r,Sources:[{Name:"spec.json",Language:"json",Content:'{\n "Language": "javascript",\n "LineNumbers": true,\n "Tab": " ",\n "Code": "function fibonacci(n) { … }"\n}'}]},{DemoSchemaVersion:1,Hash:"json-readonly",Group:"pict",Module:"pict-section-code",Name:"JSON viewer (read-only)",Description:'Read-only mode with line numbers off — useful for embedded "show me the payload" surfaces in dashboards.',Spec:{Hash:"json-readonly",Language:"json",ReadOnly:!0,LineNumbers:!1,Code:'{\n "version": "1.0.7",\n "syntax": {\n "keyword": "#A626A4",\n "string": "#50A14F",\n "number": "#986801",\n "function": "#4078F2"\n },\n "features": ["highlighting", "line-numbers", "readonly", "themed"]\n}\n'},Mount:r,Sources:[{Name:"spec.json",Language:"json",Content:'{\n "Language": "json",\n "ReadOnly": true,\n "LineNumbers": false\n}'}]},{DemoSchemaVersion:1,Hash:"css-editor",Group:"pict",Module:"pict-section-code",Name:"CSS editor (4-space tab)",Description:"CSS-flavoured highlighting with a 4-space tab and bracket auto-close turned off — leaner editing for stylesheet snippets.",Spec:{Hash:"css-editor",Language:"css",LineNumbers:!0,Tab:" ",AddClosing:!1,Code:"/* Theme-aware token usage */\n.docuserve-demo-title {\n color: var(--theme-color-text-primary, #3D3229);\n font-size: 1.5em;\n font-weight: 600;\n}\n\n.docuserve-demo-description {\n color: var(--theme-color-text-secondary, #5E5549);\n line-height: 1.55;\n}\n"},Mount:r,Sources:[{Name:"spec.json",Language:"json",Content:'{\n "Language": "css",\n "LineNumbers": true,\n "Tab": " ",\n "AddClosing": false\n}'}]}];e.exports=o,e.exports.demos=o,e.exports.registerWithDocuserve=function(t){return t&&t.providers&&t.providers["Docuserve-Demos"]?t.providers["Docuserve-Demos"].registerAll(o):0}},{"../Pict-Section-Code.js":12}],14:[function(t,e,i){e.exports=t("./views/Pict-View-Content.js"),e.exports.PictContentProvider=t("./providers/Pict-Provider-Content.js"),e.exports.PictContentDemoView=t("./views/PictView-Content-Demo.js")},{"./providers/Pict-Provider-Content.js":15,"./views/Pict-View-Content.js":16,"./views/PictView-Content-Demo.js":17}],15:[function(t,e,i){const n=t("pict-provider"),r=t("pict-section-code").createHighlighter;e.exports=class extends n{constructor(t,e,i){super(t,e,i)}highlightCode(t,e){if(!t)return"";let i={textContent:t,innerHTML:""};return r(e)(i),i.innerHTML}generateLineNumbers(t){if(!t)return"<span>1</span>";let e=t.split("\n").length,i="";for(let t=1;t<=e;t++)i+="<span>"+t+"</span>";return i}parseMarkdown(t,e,i,n){if(!t)return"";let r=t.split("\n"),o=[],a=!1,s=0,c="",l=[],p=!1,d="",u=!1,h=[],m=!1,g=[],f=[],D=()=>{f.length>0&&(o.push("<p>"+f.map(t=>this.parseInline(t,e,i,n)).join(" ")+"</p>"),f=[])};for(let t=0;t<r.length;t++){let y=r[t];if(!a&&y.trim().match(/^\$\$/)){m?(o.push('<div class="pict-content-katex-display">'+g.join("\n")+"</div>"),m=!1,g=[]):(D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),u&&(o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,i,n)+"</blockquote>"),u=!1,h=[]),m=!0);continue}if(m){g.push(y);continue}let v=y.match(/^(`{3,})/);if(v){let t=v[1].length;if(a){if(t>=s&&y.trim()===v[1]){if("mermaid"===c)o.push('<pre class="mermaid">'+l.join("\n")+"</pre>");else if("excalidraw"===c){let t,e=l.join("\n");try{t=encodeURIComponent(e)}catch(e){t=""}o.push('<div class="pict-excalidraw-fence" data-scene="'+t+'"><div class="pict-excalidraw-fence-loading">Rendering Excalidraw diagram…</div></div>')}else{let t=l.join("\n"),e=this.highlightCode(t,c),i=this.generateLineNumbers(t);o.push('<div class="pict-content-code-wrap"><div class="pict-content-code-line-numbers">'+i+'</div><pre><code class="language-'+this.escapeHTML(c)+'">'+e+"</code></pre></div>")}a=!1,s=0,c="",l=[];continue}l.push(y);continue}D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),u&&(o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,i,n)+"</blockquote>"),u=!1,h=[]),s=t,c=y.replace(/^`{3,}/,"").trim(),a=!0;continue}if(a){l.push(y);continue}if(y.match(/^>\s?/)){u||(D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),u=!0,h=[]),h.push(y.replace(/^>\s?/,""));continue}if(u&&(o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,i,n)+"</blockquote>"),u=!1,h=[]),y.match(/^(-{3,}|\*{3,}|_{3,})\s*$/)){D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),o.push("<hr>");continue}let b=y.match(/^(#{1,6})\s+(.+)/);if(b){D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1);let t=b[1].length,r=this.parseInline(b[2],e,i,n),a=b[2].toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-");o.push("<h"+t+' id="'+a+'">'+r+"</h"+t+">");continue}let T=y.match(/^(\s*)[-*+]\s+(.*)/);if(T){D(),p&&"ul"===d||(p&&o.push("ul"===d?"</ul>":"</ol>"),o.push("<ul>"),p=!0,d="ul"),o.push("<li>"+this.parseInline(T[2],e,i,n)+"</li>");continue}let w=y.match(/^(\s*)\d+\.\s+(.*)/);if(w)D(),p&&"ol"===d||(p&&o.push("ul"===d?"</ul>":"</ol>"),o.push("<ol>"),p=!0,d="ol"),o.push("<li>"+this.parseInline(w[2],e,i,n)+"</li>");else{if(p&&y.match(/^\s+\S/)&&o.length>0&&o[o.length-1].endsWith("</li>")){let t=o.length-1,r=o[t].slice(0,-5);o[t]=r+" "+this.parseInline(y.trim(),e,i,n)+"</li>";continue}if(p&&""!==y.trim()&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1),""!==y.trim()){if(y.match(/^\|/)&&t+1<r.length&&r[t+1].match(/^\|[\s-:|]+\|/)){D(),p&&(o.push("ul"===d?"</ul>":"</ol>"),p=!1);let a="<table>",s=y.split("|").filter(t=>""!==t.trim());a+="<thead><tr>";for(let t=0;t<s.length;t++)a+="<th>"+this.parseInline(s[t].trim(),e,i,n)+"</th>";for(a+="</tr></thead>",t++,a+="<tbody>";t+1<r.length&&r[t+1].match(/^\|/);){t++;let o=r[t].split("|").filter(t=>""!==t.trim());a+="<tr>";for(let t=0;t<o.length;t++)a+="<td>"+this.parseInline(o[t].trim(),e,i,n)+"</td>";a+="</tr>"}a+="</tbody></table>",o.push(a);continue}f.push(y)}else D()}}if(D(),p&&o.push("ul"===d?"</ul>":"</ol>"),u&&o.push("<blockquote>"+this.parseMarkdown(h.join("\n"),e,i,n)+"</blockquote>"),a){let t=l.join("\n"),e=this.highlightCode(t,c),i=this.generateLineNumbers(t);o.push('<div class="pict-content-code-wrap"><div class="pict-content-code-line-numbers">'+i+"</div><pre><code>"+e+"</code></pre></div>")}return o.join("\n")}parseInline(t,e,i,n){if(!t)return"";let r=t,o=[];return r=r.replace(/`([^`]+)`/g,(t,e)=>{let i=o.length;return o.push("<code>"+e+"</code>"),"\0CODEINLINE"+i+"\0"}),r=r.replace(/\$([^\$\s][^\$]*?[^\$\s])\$/g,'<span class="pict-content-katex-inline">$1</span>'),r=r.replace(/\$([^\$\s])\$/g,'<span class="pict-content-katex-inline">$1</span>'),r=r.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,(t,e,n)=>{let r=n;if("function"==typeof i){let t=i(n,e);t&&(r=t)}return'<img src="'+r+'" alt="'+e+'">'}),r=r.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(t,i,n)=>{if("function"==typeof e){let t=e(n,i);if(t){let e=t.target?' target="'+t.target+'"':"",n=t.rel?' rel="'+t.rel+'"':"";return'<a href="'+t.href+'"'+e+n+">"+i+"</a>"}}return n.match(/^https?:\/\//)?'<a href="'+n+'" target="_blank" rel="noopener">'+i+"</a>":'<a href="'+n+'">'+i+"</a>"}),r=r.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),r=r.replace(/(^|[^A-Za-z0-9_])__([^_]+?)__(?![A-Za-z0-9_])/g,"$1<strong>$2</strong>"),r=r.replace(/\*([^*]+)\*/g,"<em>$1</em>"),r=r.replace(/(^|[^A-Za-z0-9_])_([^_]+?)_(?![A-Za-z0-9_])/g,"$1<em>$2</em>"),r=r.replace(/\x00CODEINLINE(\d+)\x00/g,(t,e)=>o[parseInt(e)]),"function"==typeof n&&(r=this._applyVocabularyLinks(r,n)),r}_applyVocabularyLinks(t,e){if(!t||"function"!=typeof e)return t;let i={},n=t.split(/(<[^>]+>)/g),r=0,o=["code","a","pre","span"];for(let t=0;t<n.length;t++){let a=n[t];if("<"===a.charAt(0)){let t=a.match(/^<(\w+)/);t&&-1!==o.indexOf(t[1].toLowerCase())&&r++;let e=a.match(/^<\/(\w+)/);e&&-1!==o.indexOf(e[1].toLowerCase())&&(r=Math.max(0,r-1));continue}r>0||(n[t]=a.replace(/\b([A-Za-z][A-Za-z0-9_-]{1,30})\b/g,(t,n)=>{if(n.length<3)return t;let r=n.toLowerCase();if(i[r])return t;let o=e(r);if(!o)return t;i[r]=!0;let a=(o.short||"").replace(/"/g,""");return'<span class="pict-vocab-term" data-vocab-slug="'+o.slug+'" data-vocab-title="'+(o.title||"").replace(/"/g,""")+'" data-vocab-short="'+a+'">'+t+"</span>"}))}return n.join("")}escapeHTML(t){return t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}},e.exports.default_configuration={ProviderIdentifier:"Pict-Content",AutoInitialize:!0,AutoInitializeOrdinal:0}},{"pict-provider":9,"pict-section-code":12}],16:[function(t,e,i){const n=t("pict-view");class r extends n{constructor(t,e,i){super(t,e,i)}displayContent(t,e){let i=e||"Pict-Content-Body";this.pict.ContentAssignment.assignContent("#"+i,t);let n=document.getElementById(i);n&&n.parentElement&&(n.parentElement.scrollTop=0),n&&!n.classList.contains("pict-content")&&n.classList.add("pict-content"),this.enableFullscreenViewers(i,{skipMermaid:!0}),this.renderMermaidDiagrams(i),this.renderExcalidrawDiagrams(i),this.renderKaTeXEquations(i)}renderExcalidrawDiagrams(t){if("undefined"==typeof document)return;let e=t||"Pict-Content-Body",i=document.getElementById(e);if(!i)return;let n=i.querySelectorAll(".pict-excalidraw-fence:not([data-rendered])");if(n.length<1)return;let r="undefined"!=typeof window?window.PictSectionExcalidrawVendor:null;if(r&&"function"==typeof r.exportToSvg)for(let t=0;t<n.length;t++){let e,i=n[t],o=i.getAttribute("data-scene")||"",a="";try{a=decodeURIComponent(o)}catch(t){a=""}try{e=JSON.parse(a)}catch(t){this._renderExcalidrawFenceError(i,"Invalid scene JSON: "+t.message);continue}let s={elements:e.elements||[],appState:Object.assign({exportEmbedScene:!0},e.appState||{}),files:e.files||{}};r.exportToSvg(s).then(t=>{t&&(t.removeAttribute("width"),t.removeAttribute("height"),t.setAttribute("style","max-width: 100%; height: auto;"),i.innerHTML="",i.appendChild(t),i.setAttribute("data-rendered","true"))}).catch(t=>{this._renderExcalidrawFenceError(i,"Excalidraw render failed: "+(t&&t.message?t.message:t))})}else this.log&&this.log.warn&&!this._excalidrawBundleWarnLogged&&(this.log.warn("pict-excalidraw fence(s) found but pict-section-excalidraw wrapper bundle is not loaded — leaving as placeholders."),this._excalidrawBundleWarnLogged=!0)}_renderExcalidrawFenceError(t,e){t.setAttribute("data-rendered","true"),t.classList.add("pict-excalidraw-fence-error"),t.innerHTML='<div class="pict-excalidraw-fence-error-message"></div>';let i=t.querySelector(".pict-excalidraw-fence-error-message");i&&(i.textContent=e),this.log&&this.log.warn&&this.log.warn("pict-excalidraw fence: "+e)}_ensureMermaidAdapter(){if(this._mermaidAdapter)return this._mermaidAdapter;if("undefined"==typeof mermaid||"undefined"==typeof window)return null;let e=this.pict&&this.pict.providers&&this.pict.providers.Theme;try{if(e&&e.diagram&&"function"==typeof e.diagram.adaptMermaid)this._mermaidAdapter=e.diagram.adaptMermaid(mermaid,{});else{let e=t("pict-provider-theme/source/Theme-Diagram-Adapter.js");e.initializeMermaid(mermaid),this._mermaidAdapter={refresh:function(){return e.refreshMermaidDiagrams()},reinitialize:function(){e.initializeMermaid(mermaid)},dispose:function(){},subscribed:!1}}}catch(t){this.log&&this.log.warn&&this.log.warn("Mermaid theme adapter init failed: "+t.message),this._mermaidAdapter=null}return this._mermaidAdapter}renderMermaidDiagrams(t){if("undefined"==typeof mermaid)return;let e=t||"Pict-Content-Body",i=document.getElementById(e);if(!i)return;let n=i.querySelectorAll("pre.mermaid");if(n.length<1)return;this._ensureMermaidAdapter();let r=this.pict&&this.pict.providers&&this.pict.providers.Theme;if(r&&r.diagram&&"function"==typeof r.diagram.stashMermaidSource)r.diagram.stashMermaidSource(n);else for(let t=0;t<n.length;t++){let e=n[t];e.hasAttribute("data-mermaid-source")||e.setAttribute("data-mermaid-source",e.textContent)}try{let t=mermaid.run({nodes:n});if(t&&"function"==typeof t.then)t.then(()=>{let t=this.pict&&this.pict.providers&&this.pict.providers.Theme;t&&t.diagram&&"function"==typeof t.diagram.stripMermaidStyleImportance&&t.diagram.stripMermaidStyleImportance(n),this.enableFullscreenViewers(e,{onlyMermaid:!0})}).catch(t=>{this.log.error("Mermaid rendering error: "+(t&&t.message?t.message:t))});else{let t=this.pict&&this.pict.providers&&this.pict.providers.Theme;t&&t.diagram&&"function"==typeof t.diagram.stripMermaidStyleImportance&&t.diagram.stripMermaidStyleImportance(n),this.enableFullscreenViewers(e,{onlyMermaid:!0})}}catch(t){this.log.error("Mermaid rendering error: "+t.message)}}renderKaTeXEquations(t){if("undefined"==typeof katex)return;let e=t||"Pict-Content-Body",i=document.getElementById(e);if(!i)return;let n=i.querySelectorAll(".pict-content-katex-inline");for(let t=0;t<n.length;t++)try{katex.render(n[t].textContent,n[t],{throwOnError:!1,displayMode:!1})}catch(t){this.log.warn("KaTeX inline error: "+t.message)}let r=i.querySelectorAll(".pict-content-katex-display");for(let t=0;t<r.length;t++)try{katex.render(r[t].textContent,r[t],{throwOnError:!1,displayMode:!0})}catch(t){this.log.warn("KaTeX display error: "+t.message)}}enableFullscreenViewers(t,e){let i=t||"Pict-Content-Body",n=document.getElementById(i);if(!n)return;let r=e||{};if(!r.onlyMermaid){let t=n.querySelectorAll("img:not([data-fullscreen-source])");for(let e=0;e<t.length;e++){let i=t[e];i.setAttribute("data-fullscreen-source","image");let n=i.getAttribute("alt");if(!n){n=(i.getAttribute("src")||"").split("/").pop().split("?")[0]||"Image"}i.setAttribute("data-fullscreen-title",n)}let e=n.querySelectorAll(".pict-content-code-wrap:not([data-code-actions-wired])");for(let t=0;t<e.length;t++)this._wireCodeActions(e[t])}if(!r.skipMermaid){let t=n.querySelectorAll("pre.mermaid:not([data-fullscreen-source])");for(let e=0;e<t.length;e++){let i=t[e];i.querySelector("svg")&&(i.setAttribute("data-fullscreen-source","mermaid"),i.setAttribute("data-fullscreen-title","Mermaid Diagram"))}}n.__pictFullscreenWired||(n.__pictFullscreenWired=!0,n.addEventListener("click",t=>{let e=t.target;for(;e&&e!==n&&!e.hasAttribute("data-fullscreen-source");)e=e.parentElement;e&&e!==n&&e.hasAttribute("data-fullscreen-source")&&(t.preventDefault(),this._openFullscreen(e))}))}_wireCodeActions(t){if(!t||t.hasAttribute("data-code-actions-wired"))return;t.setAttribute("data-code-actions-wired","true");let e=t.querySelector('code[class*="language-"]'),i="Code";if(e){let t=(e.getAttribute("class")||"").match(/language-(\S+)/);t&&(i=t[1]+" code")}t.setAttribute("data-code-language",i);let n=document.createElement("div");n.className="pict-content-code-container";let r=document.createElement("div");r.className="pict-content-code-actions",r.setAttribute("aria-hidden","false");let o=document.createElement("button");o.type="button",o.className="pict-content-code-action-btn",o.setAttribute("aria-label","Open code in fullscreen"),o.setAttribute("title","Open in fullscreen"),o.innerHTML='<svg viewBox="0 0 16 16" aria-hidden="true"><polyline points="3 6 3 3 6 3"></polyline><polyline points="13 6 13 3 10 3"></polyline><polyline points="3 10 3 13 6 13"></polyline><polyline points="13 10 13 13 10 13"></polyline></svg>';let a=document.createElement("button");a.type="button",a.className="pict-content-code-action-btn",a.setAttribute("aria-label","Copy code to clipboard"),a.setAttribute("title","Copy code"),a.innerHTML='<svg viewBox="0 0 16 16" aria-hidden="true"><rect x="5" y="5" width="9" height="9" rx="1.25"></rect><path d="M11 5V3.25A1.25 1.25 0 0 0 9.75 2H3.25A1.25 1.25 0 0 0 2 3.25v6.5A1.25 1.25 0 0 0 3.25 11H5"></path></svg>',r.appendChild(o),r.appendChild(a),t.parentNode.insertBefore(n,t),n.appendChild(t),n.appendChild(r),o.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this._openCodeFullscreen(t)}),a.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this._copyCodeToClipboard(t,a)})}_openCodeFullscreen(t){let e=this._buildFullscreenOverlay();t.setAttribute("data-fullscreen-source","code"),t.setAttribute("data-fullscreen-title",t.getAttribute("data-code-language")||"Code"),e.open(t)}_copyCodeToClipboard(t,e){let i=t.querySelector("code"),n=i?i.textContent:t.textContent,r=()=>{e.classList.add("is-copied"),e.setAttribute("title","Copied!"),setTimeout(()=>{e.classList.remove("is-copied"),e.setAttribute("title","Copy code")},1400)},o=()=>{e.classList.add("is-copy-failed"),e.setAttribute("title","Copy failed"),setTimeout(()=>{e.classList.remove("is-copy-failed"),e.setAttribute("title","Copy code")},1400)};try{if(navigator&&navigator.clipboard&&"function"==typeof navigator.clipboard.writeText)return void navigator.clipboard.writeText(n).then(r).catch(o)}catch(t){}try{let t=document.createElement("textarea");t.value=n,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let e=document.execCommand("copy");document.body.removeChild(t),e?r():o()}catch(t){o()}}_buildFullscreenOverlay(){if(r._FullscreenOverlay)return r._FullscreenOverlay;let t=document.createElement("div");t.className="pict-fullscreen-overlay",t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-labelledby","pict-fullscreen-title"),t.setAttribute("hidden",""),t.innerHTML='<div class="pict-fullscreen-titlebar"><span class="pict-fullscreen-title" id="pict-fullscreen-title"></span><div class="pict-fullscreen-controls"><button type="button" class="pict-fullscreen-btn" data-action="zoom-out" aria-label="Zoom out" title="Zoom out"><svg viewBox="0 0 16 16" aria-hidden="true"><line x1="3" y1="8" x2="13" y2="8"></line></svg></button><button type="button" class="pict-fullscreen-btn" data-action="zoom-reset" aria-label="Reset zoom" title="Reset zoom"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="5"></circle><line x1="8" y1="5" x2="8" y2="11"></line><line x1="5" y1="8" x2="11" y2="8"></line></svg></button><button type="button" class="pict-fullscreen-btn" data-action="zoom-in" aria-label="Zoom in" title="Zoom in"><svg viewBox="0 0 16 16" aria-hidden="true"><line x1="3" y1="8" x2="13" y2="8"></line><line x1="8" y1="3" x2="8" y2="13"></line></svg></button><button type="button" class="pict-fullscreen-btn pict-fullscreen-close" data-action="close" aria-label="Close" title="Close (Esc)"><svg viewBox="0 0 16 16" aria-hidden="true"><line x1="4" y1="4" x2="12" y2="12"></line><line x1="12" y1="4" x2="4" y2="12"></line></svg></button></div></div><div class="pict-fullscreen-stage"><div class="pict-fullscreen-content"></div></div>',document.body.appendChild(t);let e={scale:1,translateX:0,translateY:0,isPanning:!1,didPan:!1,currentKind:"",panStartX:0,panStartY:0,panOrigX:0,panOrigY:0,pinchInitialDistance:0,pinchInitialScale:1},i=t.querySelector(".pict-fullscreen-stage"),n=t.querySelector(".pict-fullscreen-content"),o=t.querySelector(".pict-fullscreen-title"),a=()=>{n.style.transform="translate("+e.translateX+"px, "+e.translateY+"px) scale("+e.scale+")",i.classList.toggle("is-zoomed",e.scale>1.001)},s=(t,n,r)=>{let o=(s=t)<.5?.5:s>8?8:s;var s;let c=i.getBoundingClientRect(),l=void 0!==n?n:c.left+c.width/2,p=void 0!==r?r:c.top+c.height/2,d=l-(c.left+c.width/2),u=p-(c.top+c.height/2),h=o/e.scale;e.translateX=d-h*(d-e.translateX),e.translateY=u-h*(u-e.translateY),e.scale=o,a()},c=()=>{e.scale=1,e.translateX=0,e.translateY=0,a()},l=()=>{t.setAttribute("hidden",""),n.innerHTML="",c(),document.documentElement.style.removeProperty("overflow"),document.removeEventListener("keydown",p)},p=t=>{"Escape"===t.key?(t.preventDefault(),l()):"+"===t.key||"="===t.key?(t.preventDefault(),s(e.scale+.25)):"-"===t.key||"_"===t.key?(t.preventDefault(),s(e.scale-.25)):"0"===t.key&&(t.preventDefault(),c())};t.addEventListener("click",n=>{e.didPan?e.didPan=!1:n.target!==t&&n.target!==i||l()}),t.querySelectorAll("[data-action]").forEach(t=>{t.addEventListener("click",i=>{i.stopPropagation();let n=t.getAttribute("data-action");"close"===n?l():"zoom-in"===n?s(e.scale+.25):"zoom-out"===n?s(e.scale-.25):"zoom-reset"===n&&c()})}),i.addEventListener("wheel",t=>{if("code"===e.currentKind)return;t.preventDefault();let i=.15*(-t.deltaY>0?1:-1);s(e.scale+i,t.clientX,t.clientY)},{passive:!1}),i.addEventListener("pointerdown",t=>{"code"!==e.currentKind&&(e.scale<=1.001||t.target.closest(".pict-fullscreen-controls")||(e.isPanning=!0,e.panStartX=t.clientX,e.panStartY=t.clientY,e.panOrigX=e.translateX,e.panOrigY=e.translateY,i.setPointerCapture(t.pointerId),i.classList.add("is-panning")))}),i.addEventListener("pointermove",t=>{e.isPanning&&(e.translateX=e.panOrigX+(t.clientX-e.panStartX),e.translateY=e.panOrigY+(t.clientY-e.panStartY),a())});let d=t=>{if(e.isPanning){e.isPanning=!1,e.didPan=!0,i.classList.remove("is-panning");try{i.releasePointerCapture(t.pointerId)}catch(t){}}};i.addEventListener("pointerup",d),i.addEventListener("pointercancel",d);let u={};return i.addEventListener("touchstart",t=>{for(let e=0;e<t.touches.length;e++){let i=t.touches[e];u[i.identifier]={x:i.clientX,y:i.clientY}}if(2===t.touches.length){let i=t.touches[0],n=t.touches[1],r=n.clientX-i.clientX,o=n.clientY-i.clientY;e.pinchInitialDistance=Math.sqrt(r*r+o*o),e.pinchInitialScale=e.scale}},{passive:!0}),i.addEventListener("touchmove",t=>{if(2===t.touches.length&&e.pinchInitialDistance>0){t.preventDefault();let i=t.touches[0],n=t.touches[1],r=n.clientX-i.clientX,o=n.clientY-i.clientY,a=Math.sqrt(r*r+o*o)/e.pinchInitialDistance,c=(i.clientX+n.clientX)/2,l=(i.clientY+n.clientY)/2;s(e.pinchInitialScale*a,c,l)}},{passive:!1}),i.addEventListener("touchend",()=>{u={},e.pinchInitialDistance=0}),r._FullscreenOverlay={element:t,content:n,titleEl:o,state:e,open:i=>{let r=i.getAttribute("data-fullscreen-title")||"";o.textContent=r,n.innerHTML="";let a,s=i.getAttribute("data-fullscreen-source");if(e.currentKind=s||"","mermaid"===s){let t=i.querySelector("svg");t?(a=t.cloneNode(!0),a.classList.add("pict-fullscreen-mermaid-svg"),a.removeAttribute("style"),a.removeAttribute("width"),a.removeAttribute("height")):a=i.cloneNode(!0)}else if("diagram"===s){let t="svg"===String(i.tagName).toLowerCase()?i:i.querySelector("svg");t?(a=t.cloneNode(!0),a.classList.add("pict-fullscreen-diagram-svg"),a.removeAttribute("style"),a.removeAttribute("width"),a.removeAttribute("height")):a=i.cloneNode(!0)}else"image"===s?(a=i.cloneNode(!0),a.classList.add("pict-fullscreen-img")):(a=i.cloneNode(!0),a.classList.add("pict-fullscreen-codewrap"));n.appendChild(a);let l=t.querySelectorAll('[data-action="zoom-in"], [data-action="zoom-out"], [data-action="zoom-reset"]');for(let t=0;t<l.length;t++)l[t].style.display="code"===s?"none":"";c(),t.removeAttribute("hidden"),document.documentElement.style.overflow="hidden",document.addEventListener("keydown",p)},close:l},r._FullscreenOverlay}_openFullscreen(t){this._buildFullscreenOverlay().open(t)}showLoading(t,e){let i=e||"Pict-Content-Body",n=t||"Loading content...";this.pict.ContentAssignment.assignContent("#"+i,'<div class="pict-content-loading">'+n+"</div>")}}e.exports=r,e.exports.default_configuration={ViewIdentifier:"Pict-Content",DefaultRenderable:"Pict-Content-Display",DefaultDestinationAddress:"#Pict-Content-Container",AutoRender:!1,CSS:"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: 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/* ─── Code blocks ─────────────────────────────────────\n\t\t Background, text color, line-number gutter, and every\n\t\t syntax token route through pict-provider-theme tokens —\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) — 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 — 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/* Dark-mode override for handcrafted mermaid diagrams that bake\n\t\t per-node inline fill colors via 'style X fill:#...' directives\n\t\t (common in architecture / module docs, where pastel layer\n\t\t colors mark visual hierarchy). Mermaid renders those as inline\n\t\t style=\"fill:#...\" SVG attributes — highest specificity, so\n\t\t neither themeVariables nor unflagged CSS can reach them.\n\t\t In light mode the Material pastels read fine; in dark mode the\n\t\t same light fills become a high-contrast island on the dark\n\t\t page with unreadable text. Force the fills back to a theme\n\t\t background so dark-mode reads; light mode is intentionally\n\t\t unmodified so the per-layer hierarchy is preserved there. */\n\t\t.theme-dark .pict-content pre.mermaid .node rect,\n\t\t.theme-dark .pict-content pre.mermaid .node polygon,\n\t\t.theme-dark .pict-content pre.mermaid .node circle,\n\t\t.theme-dark .pict-content pre.mermaid .node ellipse,\n\t\t.theme-dark .pict-content pre.mermaid .node path,\n\t\t.theme-dark .pict-content pre.mermaid .cluster rect {\n\t\t\tfill: var(--theme-color-background-tertiary, #2A241E) !important;\n\t\t\tstroke: var(--theme-color-border-default, #5E5549) !important;\n\t\t}\n\t\t/* Mirror of the above for theme mode 'system' — when the user\n\t\t hasn't explicitly picked light or dark, the theme provider\n\t\t leaves <html> without .theme-light/.theme-dark and the CSS\n\t\t variables follow prefers-color-scheme. The .theme-dark-prefixed\n\t\t block above doesn't match in that case, so light pastels would\n\t\t win again on dark OSes. Mirror the rule under the media query,\n\t\t gated by :not(.theme-light) so an explicit light override on a\n\t\t dark OS still wins. */\n\t\t@media (prefers-color-scheme: dark) {\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node rect,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node polygon,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node circle,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node ellipse,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .node path,\n\t\t\thtml:not(.theme-light) .pict-content pre.mermaid .cluster rect {\n\t\t\t\tfill: var(--theme-color-background-tertiary, #2A241E) !important;\n\t\t\t\tstroke: var(--theme-color-border-default, #5E5549) !important;\n\t\t\t}\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/* Bespoke inline-SVG diagrams (pict-renderer-graph / excalidraw). Backdrop\n\t\t uses the diagram's own --diagram-paper so the zoomed copy keeps the same\n\t\t theme as the inline one (the host defines --diagram-* on the overlay). */\n\t\t.pict-fullscreen-content .pict-fullscreen-diagram-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(--diagram-paper, var(--theme-color-background-panel, #FFFFFF));\n\t\t\tpadding: 16px;\n\t\t\tborder-radius: 6px;\n\t\t}\n\t\t/* Same dark-mode fill/stroke override as for inline diagrams, but\n\t\t scoped to the fullscreen-overlay clone — which lives under\n\t\t <body>, NOT inside .pict-content, so the pre.mermaid-scoped\n\t\t rules above don't reach it. */\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node rect,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node polygon,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node circle,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node ellipse,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node path,\n\t\t.theme-dark .pict-fullscreen-content .pict-fullscreen-mermaid-svg .cluster rect {\n\t\t\tfill: var(--theme-color-background-tertiary, #2A241E) !important;\n\t\t\tstroke: var(--theme-color-border-default, #5E5549) !important;\n\t\t}\n\t\t@media (prefers-color-scheme: dark) {\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node rect,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node polygon,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node circle,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node ellipse,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .node path,\n\t\t\thtml:not(.theme-light) .pict-fullscreen-content .pict-fullscreen-mermaid-svg .cluster rect {\n\t\t\t\tfill: var(--theme-color-background-tertiary, #2A241E) !important;\n\t\t\t\tstroke: var(--theme-color-border-default, #5E5549) !important;\n\t\t\t}\n\t\t}\n\t\t.pict-fullscreen-content .pict-fullscreen-codewrap {\n\t\t\tmax-width: 90vw;\n\t\t\tmax-height: calc(100vh - 96px);\n\t\t\tmargin: 0;\n\t\t\toverflow: auto;\n\t\t\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.45);\n\t\t}\n\t",Templates:[{Hash:"Pict-Content-Template",Template:'\n<div class="pict-content" id="Pict-Content-Body">\n\t<div class="pict-content-loading">Loading content...</div>\n</div>\n'}],Renderables:[{RenderableHash:"Pict-Content-Display",TemplateHash:"Pict-Content-Template",DestinationAddress:"#Pict-Content-Container",RenderMethod:"replace"}]}},{"pict-provider-theme/source/Theme-Diagram-Adapter.js":7,"pict-view":38}],17:[function(t,e,i){const n=t("./Pict-View-Content.js"),r=t("../providers/Pict-Provider-Content.js"),o={ViewIdentifier:"Pict-Content-Demo",DefaultRenderable:"Pict-Content-Display",DefaultDestinationAddress:"#Pict-Content-Container",MarkdownDataAddress:"AppData.ContentDemo.Markdown",AutoRender:!0,CSS:n.default_configuration.CSS,Templates:n.default_configuration.Templates,Renderables:n.default_configuration.Renderables};e.exports=class extends n{constructor(t,e,i){super(t,e,i);let n="Pict-Content";this.pict.providers[n]||this.pict.addProvider(n,r.default_configuration,r)}_readMarkdownFromAddress(){let t=this.options.MarkdownDataAddress;if(!t||"string"!=typeof t)return null;let e=t.split("."),i=this.pict;for(let t=0;t<e.length;t++){if(null==i)return null;i=i[e[t]]}return"string"==typeof i?i:null}onAfterRender(t,e,i,n){let r=this._readMarkdownFromAddress(),o=this.pict.providers["Pict-Content"];if(o&&"string"==typeof r){let t=o.parseMarkdown(r);this.displayContent(t)}return this.pict.CSSMap.injectCSS(),super.onAfterRender(t,e,i,n)}},e.exports.default_configuration=o},{"../providers/Pict-Provider-Content.js":15,"./Pict-View-Content.js":16}],18:[function(t,e,i){e.exports={RenderOnLoad:!0,DefaultRenderable:"Excalidraw-Wrap",DefaultDestinationAddress:"#Excalidraw-Container-Div",TargetElementAddress:"#Excalidraw-Container-Div",EmbedMode:"react",DrawingDataAddress:!1,Theme:"light",ViewModeEnabled:!1,ZenModeEnabled:!1,GridModeEnabled:!1,LangCode:"en",UIOptions:{},InitialData:{elements:[],appState:{},files:{}},AssetBaseURL:"./excalidraw-assets/",IframeHostURL:"./excalidraw-iframe-host.html",LazyLoadReactVendorURL:null,LazyLoadWrapperURL:null,OnLoad:null,OnSave:null,OnChange:null,OnChangeThrottleMs:250,Templates:[{Hash:"Excalidraw-Container",Template:"\x3c!-- Excalidraw-Container Rendering Soon --\x3e"}],Renderables:[{RenderableHash:"Excalidraw-Wrap",TemplateHash:"Excalidraw-Container",DestinationAddress:"#Excalidraw-Container-Div"}],CSS:".pict-excalidraw-wrap\n{\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 320px;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\tborder: 1px solid var(--theme-color-border-default, #D0D0D0);\n\tborder-radius: 4px;\n\toverflow: hidden;\n\tfont-family: var(--theme-typography-family-base, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\n\tcolor: var(--theme-color-text-primary, #1A1A1A);\n}\n\n/* Theme bridge: forward pict tokens into the variables Excalidraw's own\n stylesheet reads. See vendor/excalidraw/packages/excalidraw/css/ for the\n token names. We default to the official light palette so Excalidraw renders\n correctly even before a pict theme overrides anything. */\n.pict-excalidraw-wrap\n{\n\t--default-bg-color: var(--theme-color-background-panel, #FFFFFF);\n\t--island-bg-color: var(--theme-color-background-secondary, #FFFFFF);\n\t--input-bg-color: var(--theme-color-background-primary, #FFFFFF);\n\t--input-border-color: var(--theme-color-border-default, #D0D0D0);\n\t--text-primary-color: var(--theme-color-text-primary, #1A1A1A);\n\t--color-primary: var(--theme-color-brand-primary, #6965DB);\n\t--color-primary-darker: var(--theme-color-brand-primary-hover, #5754C4);\n\t--color-primary-darkest: var(--theme-color-brand-primary-hover, #4642B7);\n\t--color-on-primary-container: var(--theme-color-background-panel, #FFFFFF);\n\t--button-hover-bg: var(--theme-color-background-hover, #F1F0FF);\n\t--button-active-bg: var(--theme-color-background-selected, #E3E2FE);\n\t--button-active-border: var(--theme-color-brand-primary, #6965DB);\n\t--popup-bg-color: var(--theme-color-background-panel, #FFFFFF);\n\t--popup-border-color: var(--theme-color-border-default, #D0D0D0);\n\t--icon-fill-color: var(--theme-color-text-primary, #1A1A1A);\n\t--shadow-island: 0 0 0 1px var(--theme-color-border-light, rgba(0,0,0,0.06)), 0 2px 6px 0 var(--theme-color-shadow-color, rgba(0,0,0,0.08));\n}\n\n/* iframe mode: the iframe element itself owns the entire wrap surface */\n.pict-excalidraw-iframe\n{\n\tflex: 1 1 auto;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 320px;\n\tborder: 0;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n}\n\n/* react mode: a single inner div that Excalidraw mounts into via createRoot */\n.pict-excalidraw-mount\n{\n\tflex: 1 1 auto;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 320px;\n\tposition: relative;\n}\n\n/* Status / error overlay used by both modes before the third-party lib is\n wired up, or when bundling failed. */\n.pict-excalidraw-status\n{\n\tposition: absolute;\n\tinset: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-direction: column;\n\tgap: 8px;\n\tpadding: 16px;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\tcolor: var(--theme-color-text-secondary, #4A4A4A);\n\ttext-align: center;\n\tfont-size: 14px;\n\tline-height: 1.4;\n\tz-index: 1;\n}\n.pict-excalidraw-status code\n{\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', monospace);\n\tfont-size: 12px;\n\tpadding: 2px 6px;\n\tbackground: var(--theme-color-background-secondary, #F4F4F4);\n\tborder: 1px solid var(--theme-color-border-light, rgba(0,0,0,0.06));\n\tborder-radius: 3px;\n}\n.pict-excalidraw-status.error\n{\n\tcolor: var(--theme-color-status-error, #B43B3B);\n}\n"}},{}],19:[function(t,e,i){const n=t("pict-view"),r=t("./views/PictView-Excalidraw-React.js"),o=t("./views/PictView-Excalidraw-Iframe.js"),a=t("./Pict-Section-Excalidraw-DefaultConfiguration.js");function s(t){return"iframe"===(t&&t.EmbedMode||a.EmbedMode||"react").toLowerCase()?o:r}e.exports=class extends n{constructor(t,e,i){var n;let r=Object.assign({},a,e);super(t,r,i),n=this,this._ImplementationClass=s(r);let o=Object.assign({},r);o.ViewIdentifier=(r.ViewIdentifier||"PictSectionExcalidraw")+"-Impl",this._Implementation=new this._ImplementationClass(t,o,i);let c=["getScene","setScene","exportSvg","exportBlob","serialize","setTheme","setReadOnly","load","save","destroy","getApi","connectExcalidrawGlobal","isDestroyed","convertMermaidToExcalidraw"];for(let t=0;t<c.length;t++){let e=c[t];this[e]=function(){if("function"==typeof n._Implementation[e]){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];return n._Implementation[e].apply(n._Implementation,i)}}}}onAfterRender(t,e,i,n){return this.pict.CSSMap.injectCSS(),this._Implementation&&"function"==typeof this._Implementation.render&&(this._dispatchedRender||(this._dispatchedRender=!0,this._Implementation.render())),super.onAfterRender(t,e,i,n)}},e.exports.default_configuration=a,e.exports.ReactView=r,e.exports.IframeView=o,e.exports.selectImplementation=s},{"./Pict-Section-Excalidraw-DefaultConfiguration.js":18,"./views/PictView-Excalidraw-Iframe.js":20,"./views/PictView-Excalidraw-React.js":21,"pict-view":38}],20:[function(t,e,i){const n=t("pict-view"),r=t("../Pict-Section-Excalidraw-DefaultConfiguration.js");e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},r,e),i),this.initialRenderComplete=!1,this.targetElement=!1,this._iframeElement=null,this._wrapElement=null,this._statusElement=null,this._iframeReady=!1,this._pendingRequests=Object.create(null),this._nextRequestId=1,this._lastSceneSnapshot=null,this._messageListener=null,this._onChangeThrottleHandle=null,this._lastSeenChangeSnapshot=null,this._currentTheme=this.options.Theme||"light",this._destroyed=!1}onAfterRender(t,e,i,n){return this.pict.CSSMap.injectCSS(),this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),super.onAfterRender(t,e,i,n)}onAfterInitialRender(){let t=this.pict.ContentAssignment.getElement(this.options.TargetElementAddress);if(!t||t.length<1)return this.log.error("PICT-Excalidraw (iframe) could not find target [".concat(this.options.TargetElementAddress,"].")),!1;this.targetElement=t[0],this._buildContainerDOM(),this._wireMessageListener(),this._mountIframe()}_buildContainerDOM(){this.targetElement.innerHTML="";let t=document.createElement("div");t.className="pict-excalidraw-wrap pict-excalidraw-wrap-iframe";let e=document.createElement("div");e.className="pict-excalidraw-status",e.innerHTML="Loading Excalidraw…",t.appendChild(e);let i=document.createElement("iframe");i.className="pict-excalidraw-iframe",i.setAttribute("title","Excalidraw drawing"),i.setAttribute("allow","clipboard-read; clipboard-write"),t.appendChild(i),this.targetElement.appendChild(t),this._wrapElement=t,this._iframeElement=i,this._statusElement=e}_wireMessageListener(){this._messageListener=t=>{t&&t.data&&"object"==typeof t.data&&t.source===(this._iframeElement&&this._iframeElement.contentWindow)&&this._handleIframeMessage(t.data)},window.addEventListener("message",this._messageListener)}_mountIframe(){let t=this.options.IframeHostURL||"./excalidraw-iframe-host.html";this._iframeElement.src=t}_postToIframe(t){return!(!this._iframeElement||!this._iframeElement.contentWindow)&&(this._iframeElement.contentWindow.postMessage(t,"*"),!0)}_handleIframeMessage(t){switch(t.type){case"pict-excalidraw:ready":return this._iframeReady=!0,this._statusElement&&(this._statusElement.style.display="none"),void this._sendInitMessage();case"pict-excalidraw:change":return void this._handleChange(t.payload);case"pict-excalidraw:sceneReply":case"pict-excalidraw:svgReply":case"pict-excalidraw:blobReply":{let e=this._pendingRequests[t.requestId];return void(e&&(clearTimeout(e.timeout),delete this._pendingRequests[t.requestId],e.resolve(t.payload)))}case"pict-excalidraw:error":{let e=t.requestId&&this._pendingRequests[t.requestId];return void(e?(clearTimeout(e.timeout),delete this._pendingRequests[t.requestId],e.reject(new Error(t.message||"iframe error"))):this.log.error("PICT-Excalidraw (iframe) error: ".concat(t.message)))}default:return}}_sendInitMessage(){let t=this._resolveInitialData();this._postToIframe({type:"pict-excalidraw:init",payload:{initialData:t,theme:this._resolveTheme(this._currentTheme),langCode:this.options.LangCode||"en",viewModeEnabled:!!this.options.ViewModeEnabled,zenModeEnabled:!!this.options.ZenModeEnabled,gridModeEnabled:!!this.options.GridModeEnabled,UIOptions:this.options.UIOptions||{},assetBaseURL:this.options.AssetBaseURL}}),this._pushThemeTokens(),"function"==typeof this.options.OnLoad&&this.load()}_pushThemeTokens(){if("undefined"==typeof document||!document.documentElement)return;let t=["--theme-color-background-panel","--theme-color-background-primary","--theme-color-background-secondary","--theme-color-background-hover","--theme-color-background-selected","--theme-color-border-default","--theme-color-border-light","--theme-color-text-primary","--theme-color-text-secondary","--theme-color-brand-primary","--theme-color-brand-primary-hover","--theme-color-status-error","--theme-color-shadow-color"],e=window.getComputedStyle(document.documentElement),i={};for(let n=0;n<t.length;n++){let r=e.getPropertyValue(t[n]).trim();r&&(i[t[n]]=r)}this._postToIframe({type:"pict-excalidraw:setThemeTokens",payload:i})}_resolveInitialData(){if(this.options.DrawingDataAddress){let t=this._readAppData(this.options.DrawingDataAddress);if(t&&t.elements)return t}return this.options.InitialData||{elements:[],appState:{},files:{}}}_resolveTheme(t){if("auto"===t){if("undefined"!=typeof document&&document.documentElement&&document.documentElement.classList&&document.documentElement.classList.contains("theme-mode-dark"))return"dark";let t=this.pict&&this.pict.providers&&this.pict.providers.ThemeSection;if(t&&t.getCurrentMode){let e=t.getCurrentMode();if("dark"===e)return"dark";if("light"===e)return"light"}return"light"}return"dark"===t?"dark":"light"}_handleChange(t){if(this._destroyed)return;if(this._lastSceneSnapshot=t,this._lastSeenChangeSnapshot=t,this._onChangeThrottleHandle)return;let e=this.options.OnChangeThrottleMs||250;this._onChangeThrottleHandle=setTimeout(()=>{if(this._onChangeThrottleHandle=null,this._destroyed)return;let t=this._lastSeenChangeSnapshot;if(t&&(this.options.DrawingDataAddress&&this._writeAppData(this.options.DrawingDataAddress,t),"function"==typeof this.options.OnChange))try{this.options.OnChange(this,t)}catch(t){this.log.error("PICT-Excalidraw OnChange threw: ".concat(t&&t.message))}},e)}_readAppData(t){if(!t)return null;try{let e=t.replace(/^AppData\./,"");if(this.fable&&this.fable.manifest&&this.fable.manifest.getValueByHash)return this.fable.manifest.getValueByHash(this.pict.AppData,e);let i=e.split("."),n=this.pict.AppData;for(let t=0;t<i.length;t++){if(null==n)return null;n=n[i[t]]}return n}catch(t){return this.log.error("PICT-Excalidraw read AppData failed: ".concat(t&&t.message)),null}}_writeAppData(t,e){if(!t)return!1;try{let i=t.replace(/^AppData\./,"");if(this.fable&&this.fable.manifest&&this.fable.manifest.setValueByHash)return this.fable.manifest.setValueByHash(this.pict.AppData,i,e),!0;let n=i.split("."),r=this.pict.AppData;for(let t=0;t<n.length-1;t++)null==r[n[t]]&&(r[n[t]]={}),r=r[n[t]];return r[n[n.length-1]]=e,!0}catch(t){return this.log.error("PICT-Excalidraw write AppData failed: ".concat(t&&t.message)),!1}}_request(t,e){let i=this._nextRequestId++;return new Promise((n,r)=>{this._pendingRequests[i]={resolve:n,reject:r},this._postToIframe(Object.assign({type:t,requestId:i},e||{})),this._pendingRequests[i].timeout=setTimeout(()=>{this._pendingRequests[i]&&(delete this._pendingRequests[i],r(new Error("iframe request timed out")))},3e4)})}getApi(){return null}getScene(){return this._lastSceneSnapshot}requestScene(){return this._request("pict-excalidraw:requestScene")}setScene(t){return!!t&&(this._postToIframe({type:"pict-excalidraw:setScene",payload:t}),!0)}exportSvg(t){return this._request("pict-excalidraw:requestSvg",{exportOptions:t||{}})}exportBlob(t){return this._request("pict-excalidraw:requestBlob",{exportOptions:t||{}})}serialize(){let t=this._lastSceneSnapshot;return t?JSON.stringify({type:"excalidraw",version:2,source:"pict-section-excalidraw",elements:t.elements||[],appState:t.appState||{},files:t.files||{}}):null}setTheme(t){this._currentTheme=t||"light";let e=this._resolveTheme(this._currentTheme);this._postToIframe({type:"pict-excalidraw:setTheme",payload:e}),this._pushThemeTokens()}setReadOnly(t){this.options.ViewModeEnabled=!!t,this._postToIframe({type:"pict-excalidraw:setReadOnly",payload:!!t})}load(){if("function"!=typeof this.options.OnLoad){if(this.options.DrawingDataAddress){let t=this._readAppData(this.options.DrawingDataAddress);t&&this.setScene(t)}}else this.options.OnLoad(this,(t,e)=>{t?this.log.error("PICT-Excalidraw OnLoad error: ".concat(t.message||t)):e&&this.setScene(e)})}save(){let t=t=>{t&&("function"!=typeof this.options.OnSave?this.options.DrawingDataAddress&&this._writeAppData(this.options.DrawingDataAddress,t):this.options.OnSave(this,t,t=>{t&&this.log.error("PICT-Excalidraw OnSave error: ".concat(t.message||t))}))};this._lastSceneSnapshot?t(this._lastSceneSnapshot):this.requestScene().then(t).catch(t=>{this.log.error("PICT-Excalidraw save scene fetch failed: ".concat(t.message||t))})}destroy(){if(this._destroyed)return;if(this._destroyed=!0,this._onChangeThrottleHandle&&(clearTimeout(this._onChangeThrottleHandle),this._onChangeThrottleHandle=null),this._lastSeenChangeSnapshot=null,this._messageListener){try{window.removeEventListener("message",this._messageListener)}catch(t){}this._messageListener=null}let t=Object.keys(this._pendingRequests);for(let e=0;e<t.length;e++){let i=this._pendingRequests[t[e]];if(i&&"function"==typeof i.reject){clearTimeout(i.timeout);try{i.reject(new Error("view destroyed"))}catch(t){}}}if(this._pendingRequests=Object.create(null),this._iframeElement)try{this._iframeElement.src="about:blank"}catch(t){}if(this.targetElement&&void 0!==this.targetElement.innerHTML)try{this.targetElement.innerHTML=""}catch(t){}this._iframeReady=!1,this._lastSceneSnapshot=null,this._iframeElement=null,this._statusElement=null,this._wrapElement=null,this.targetElement=!1,this.initialRenderComplete=!1}isDestroyed(){return!!this._destroyed}},e.exports.default_configuration=r},{"../Pict-Section-Excalidraw-DefaultConfiguration.js":18,"pict-view":38}],21:[function(t,e,i){const n=t("pict-view"),r=t("../Pict-Section-Excalidraw-DefaultConfiguration.js");e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},r,e),i),this.initialRenderComplete=!1,this._vendor=null,this._reactRoot=null,this._excalidrawAPI=null,this.targetElement=!1,this._wrapElement=null,this._mountElement=null,this._statusElement=null,this._onChangeThrottleHandle=null,this._lastSeenChangeSnapshot=null,this._pendingDeferredLoad=!1,this._destroyed=!1,this._currentTheme=this.options.Theme||"light"}onBeforeInitialize(){return super.onBeforeInitialize(),super.onBeforeInitialize()}connectExcalidrawGlobal(t){return!!(t&&t.Excalidraw&&t.React&&t.ReactDOM)&&(this._vendor=t,!0)}_resolveVendor(){if(this._vendor)return this._vendor;if("undefined"!=typeof window&&window.PictSectionExcalidrawVendor){let t=window.PictSectionExcalidrawVendor;if(t.Excalidraw&&t.React&&t.ReactDOM)return this._vendor=t,t}return null}onAfterRender(t,e,i,n){return this.pict.CSSMap.injectCSS(),this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),super.onAfterRender(t,e,i,n)}onAfterInitialRender(){let t=this.pict.ContentAssignment.getElement(this.options.TargetElementAddress);if(!t||t.length<1)return this.log.error("PICT-Excalidraw could not find target element [".concat(this.options.TargetElementAddress,"].")),!1;this.targetElement=t[0],this._buildContainerDOM();let e=this._resolveVendor();if(!e)return this.options.LazyLoadWrapperURL?(this._renderStatus("Loading Excalidraw…",!1),void this._lazyLoadVendor().then(()=>{if(this._destroyed)return;let t=this._resolveVendor();t?this._mountReact(t):this._renderStatus("Excalidraw failed to lazy-load. Check the network tab for <code>excalidraw-wrapper.min.js</code>.",!0)}).catch(t=>{this.log.error("PICT-Excalidraw lazy-load failed: ".concat(t&&t.message)),this._renderStatus("Excalidraw lazy-load failed: <code>"+(t&&t.message||"unknown error")+"</code>",!0)})):(this._renderStatus("Excalidraw wrapper bundle not loaded. Include <code>excalidraw-wrapper.min.js</code> via a script tag, set <code>LazyLoadWrapperURL</code> in the view options, or call <code>connectExcalidrawGlobal({React, ReactDOM, Excalidraw})</code>.",!0),this.log.error("PICT-Excalidraw vendor bundle not found; cannot mount."),!1);this._mountReact(e)}_lazyLoadVendor(){if("undefined"==typeof window)return Promise.reject(new Error("no window"));if(window.PictSectionExcalidrawVendor)return Promise.resolve();if(window.__pictExcalidrawLazyLoadPromise)return window.__pictExcalidrawLazyLoadPromise;let t=this.options.LazyLoadReactVendorURL,e=this.options.LazyLoadWrapperURL,i=t=>new Promise((e,i)=>{let n=document.createElement("script");n.src=t,n.async=!1,n.onload=()=>e(),n.onerror=()=>i(new Error("failed to load "+t)),document.head.appendChild(n)}),n=Promise.resolve();return t&&!window.React&&(n=n.then(()=>i(t))),n=n.then(()=>i(e)),n=n.then(()=>{if(!window.PictSectionExcalidrawVendor)throw new Error("wrapper loaded but window.PictSectionExcalidrawVendor was not set")}).finally(()=>{window.__pictExcalidrawLazyLoadPromise=null}),window.__pictExcalidrawLazyLoadPromise=n,n}_buildContainerDOM(){this.targetElement.innerHTML="";let t=document.createElement("div");t.className="pict-excalidraw-wrap pict-excalidraw-wrap-react";let e=document.createElement("div");e.className="pict-excalidraw-mount",t.appendChild(e);let i=document.createElement("div");i.className="pict-excalidraw-status",i.style.display="none",t.appendChild(i),this.targetElement.appendChild(t),this._wrapElement=t,this._mountElement=e,this._statusElement=i}_renderStatus(t,e){this._statusElement&&(this._statusElement.style.display="flex",this._statusElement.classList.toggle("error",!!e),this._statusElement.innerHTML=t)}_hideStatus(){this._statusElement&&(this._statusElement.style.display="none")}_mountReact(t){let e=t.React,i=t.ReactDOM,n=t.Excalidraw,r={initialData:this._resolveInitialData(),theme:this._resolveTheme(this._currentTheme),langCode:this.options.LangCode||"en",viewModeEnabled:!!this.options.ViewModeEnabled,zenModeEnabled:!!this.options.ZenModeEnabled,gridModeEnabled:!!this.options.GridModeEnabled,UIOptions:this.options.UIOptions||{},onExcalidrawAPI:t=>{this._excalidrawAPI=t,this._pendingDeferredLoad&&(this._pendingDeferredLoad=!1,this.load())},onChange:(t,e,i)=>{this._handleChange(t,e,i)}};"undefined"!=typeof window&&this.options.AssetBaseURL&&!window.EXCALIDRAW_ASSET_PATH&&(window.EXCALIDRAW_ASSET_PATH=this.options.AssetBaseURL);try{this._reactRoot=i.createRoot(this._mountElement),this._reactRoot.render(e.createElement(n,r)),this._hideStatus()}catch(t){this.log.error("PICT-Excalidraw mount failed: ".concat(t&&t.message)),this._renderStatus("Excalidraw failed to mount: <code>"+(t&&t.message?t.message:"unknown error")+"</code>",!0)}}_resolveInitialData(){if(this.options.DrawingDataAddress){let t=this._readAppData(this.options.DrawingDataAddress);if(t&&t.elements)return t}return"function"==typeof this.options.OnLoad&&(this._pendingDeferredLoad=!0),this.options.InitialData||{elements:[],appState:{},files:{}}}_resolveTheme(t){if("auto"===t){if("undefined"!=typeof document&&document.documentElement){let t=document.documentElement;if(t.classList&&t.classList.contains("theme-mode-dark"))return"dark"}let t=this.pict&&this.pict.providers&&this.pict.providers.ThemeSection;if(t&&t.getCurrentMode){let e=t.getCurrentMode();if("dark"===e)return"dark";if("light"===e)return"light"}return"light"}return"dark"===t?"dark":"light"}_handleChange(t,e,i){if(this._destroyed)return;if(this._lastSeenChangeSnapshot={elements:t,appState:e,files:i},this._onChangeThrottleHandle)return;let n=this.options.OnChangeThrottleMs||250;this._onChangeThrottleHandle=setTimeout(()=>{if(this._onChangeThrottleHandle=null,this._destroyed)return;let t=this._lastSeenChangeSnapshot;if(t&&(this.options.DrawingDataAddress&&this._writeAppData(this.options.DrawingDataAddress,this._cloneScene(t)),"function"==typeof this.options.OnChange))try{this.options.OnChange(this,this._cloneScene(t))}catch(t){this.log.error("PICT-Excalidraw OnChange threw: ".concat(t&&t.message))}},n)}_cloneScene(t){return{elements:t.elements?t.elements.slice():[],appState:t.appState?Object.assign({},t.appState):{},files:t.files?Object.assign({},t.files):{}}}_readAppData(t){if(!t)return null;try{let e=t.replace(/^AppData\./,"");if(this.fable&&this.fable.manifest&&this.fable.manifest.getValueByHash)return this.fable.manifest.getValueByHash(this.pict.AppData,e);let i=e.split("."),n=this.pict.AppData;for(let t=0;t<i.length;t++){if(null==n)return null;n=n[i[t]]}return n}catch(t){return this.log.error("PICT-Excalidraw read AppData failed: ".concat(t&&t.message)),null}}_writeAppData(t,e){if(!t)return!1;try{let i=t.replace(/^AppData\./,"");if(this.fable&&this.fable.manifest&&this.fable.manifest.setValueByHash)return this.fable.manifest.setValueByHash(this.pict.AppData,i,e),!0;let n=i.split("."),r=this.pict.AppData;for(let t=0;t<n.length-1;t++)null==r[n[t]]&&(r[n[t]]={}),r=r[n[t]];return r[n[n.length-1]]=e,!0}catch(t){return this.log.error("PICT-Excalidraw write AppData failed: ".concat(t&&t.message)),!1}}getApi(){return this._excalidrawAPI}getScene(){return this._excalidrawAPI?{elements:this._excalidrawAPI.getSceneElements(),appState:this._excalidrawAPI.getAppState(),files:this._excalidrawAPI.getFiles?this._excalidrawAPI.getFiles():{}}:null}setScene(t){if(!this._excalidrawAPI)return!1;if(!t)return!1;let e=Array.isArray(t)?{elements:t,appState:{},files:{}}:t;if(this._excalidrawAPI.updateScene({elements:e.elements||[],appState:e.appState||{},collaborators:new Map}),e.files&&this._excalidrawAPI.addFiles){let t=[],i=Object.keys(e.files);for(let n=0;n<i.length;n++)t.push(e.files[i[n]]);t.length&&this._excalidrawAPI.addFiles(t)}return!0}exportSvg(t){let e=this._resolveVendor();if(!e||!e.exportToSvg)return Promise.reject(new Error("exportToSvg unavailable"));let i=this.getScene();if(!i)return Promise.reject(new Error("Excalidraw not mounted"));let n=t||{},r=this._promoteAppStateExportKeys(n);return e.exportToSvg(Object.assign({elements:i.elements,appState:Object.assign({},i.appState,r),files:i.files},n))}exportBlob(t){let e=this._resolveVendor();if(!e||!e.exportToBlob)return Promise.reject(new Error("exportToBlob unavailable"));let i=this.getScene();if(!i)return Promise.reject(new Error("Excalidraw not mounted"));let n=t||{},r=this._promoteAppStateExportKeys(n);return e.exportToBlob(Object.assign({elements:i.elements,appState:Object.assign({},i.appState,r),files:i.files,mimeType:"image/png"},n))}_promoteAppStateExportKeys(t){let e=["exportEmbedScene","exportBackground","exportPadding","exportScale","exportWithDarkMode"],i={};for(let n=0;n<e.length;n++)Object.prototype.hasOwnProperty.call(t,e[n])&&(i[e[n]]=t[e[n]],delete t[e[n]]);return i}convertMermaidToExcalidraw(t,e){let i=e||{},n=!1!==i.apply,r=this._resolveVendor();return r&&r.parseMermaidToExcalidraw&&r.convertToExcalidrawElements?r.parseMermaidToExcalidraw(t,i.mermaidOptions||{}).then(t=>{let e=t&&t.elements||[],i=t&&t.files||{},o=r.convertToExcalidrawElements(e);return n&&this.setScene({elements:o,appState:{},files:i}),{elements:o,files:i}}):Promise.reject(new Error("mermaid helpers not available — wrapper bundle out of date?"))}serialize(){let t=this._resolveVendor(),e=this.getScene();return e?t&&t.serializeAsJSON?t.serializeAsJSON(e.elements,e.appState,e.files,"local"):JSON.stringify({type:"excalidraw",version:2,source:"pict-section-excalidraw",elements:e.elements,appState:e.appState,files:e.files}):null}setTheme(t){if(this._currentTheme=t||"light",this._excalidrawAPI&&this._excalidrawAPI.updateScene){let t=this._resolveTheme(this._currentTheme);this._excalidrawAPI.updateScene({appState:{theme:t}})}}setReadOnly(t){this.options.ViewModeEnabled=!!t,this._excalidrawAPI&&this._excalidrawAPI.updateScene&&this._excalidrawAPI.updateScene({appState:{viewModeEnabled:!!t}})}load(){if("function"!=typeof this.options.OnLoad){if(this.options.DrawingDataAddress){let t=this._readAppData(this.options.DrawingDataAddress);t&&this.setScene(t)}}else this.options.OnLoad(this,(t,e)=>{t?this.log.error("PICT-Excalidraw OnLoad error: ".concat(t.message||t)):e&&this.setScene(e)})}save(){let t=this.getScene();t&&("function"!=typeof this.options.OnSave?this.options.DrawingDataAddress&&this._writeAppData(this.options.DrawingDataAddress,this._cloneScene(t)):this.options.OnSave(this,t,t=>{t&&this.log.error("PICT-Excalidraw OnSave error: ".concat(t.message||t))}))}destroy(){if(!this._destroyed){if(this._destroyed=!0,this._onChangeThrottleHandle&&(clearTimeout(this._onChangeThrottleHandle),this._onChangeThrottleHandle=null),this._lastSeenChangeSnapshot=null,this._pendingDeferredLoad=!1,this._reactRoot){try{this._reactRoot.unmount()}catch(t){this.log.error("PICT-Excalidraw unmount failed: ".concat(t&&t.message))}this._reactRoot=null}if(this.targetElement&&void 0!==this.targetElement.innerHTML)try{this.targetElement.innerHTML=""}catch(t){}this._excalidrawAPI=null,this._wrapElement=null,this._mountElement=null,this._statusElement=null,this.targetElement=!1,this._vendor=null,this.initialRenderComplete=!1}}isDestroyed(){return!!this._destroyed}},e.exports.default_configuration=r},{"../Pict-Section-Excalidraw-DefaultConfiguration.js":18,"pict-view":38}],22:[function(t,e,i){e.exports.attach=function(t){t._createEditorInContainer=function(e,i,n){let r=t._codeMirrorModules,o=[];o.push(r.EditorView.domEventHandlers({keydown:(e,n)=>(e.ctrlKey||e.metaKey)&&"b"===e.key?(e.preventDefault(),t.applyFormatting(i,"bold"),!0):(e.ctrlKey||e.metaKey)&&"i"===e.key?(e.preventDefault(),t.applyFormatting(i,"italic"),!0):(e.ctrlKey||e.metaKey)&&"e"===e.key?(e.preventDefault(),t.applyFormatting(i,"code"),!0):void 0,paste:(e,n)=>{let r=e.clipboardData&&e.clipboardData.items;if(!r)return!1;for(let n=0;n<r.length;n++)if(r[n].type.startsWith("image/")){e.preventDefault();let o=r[n].getAsFile();return o&&t._processImageFile(o,i),!0}return!1},drop:(e,n)=>{if(t._dragSourceIndex>=0)return!1;if(!e.dataTransfer||!e.dataTransfer.files||e.dataTransfer.files.length<1)return!1;let r=e.dataTransfer.files[0];if(r.type&&r.type.startsWith("image/")){e.preventDefault(),e.stopPropagation(),t._processImageFile(r,i);let o=n.dom.closest(".pict-mde-segment-editor");return o&&o.classList.remove("pict-mde-image-dragover"),!0}return!1}})),r.extensions&&Array.isArray(r.extensions)&&(o=o.concat(r.extensions)),o.push(r.EditorView.updateListener.of(e=>{e.docChanged&&t._onSegmentContentChange(i,e.state.doc.toString()),e.focusChanged&&(e.view.hasFocus?(t._setActiveSegment(i),t._updateSidebarPosition(i)):setTimeout(()=>{if(t._activeSegmentIndex===i){let e=document.getElementById("PictMDE-Segment-".concat(i));e&&!e.contains(document.activeElement)&&(t._clearActiveSegment(i),t._resetSidebarPosition(i))}},100)),e.selectionSet&&e.view.hasFocus&&t._updateSidebarPosition(i)}));let a=t._buildDataURICollapseExtension();a&&o.push(a),t.options.ReadOnly&&(o.push(r.EditorState.readOnly.of(!0)),o.push(r.EditorView.editable.of(!1))),o=t.customConfigureExtensions(o,i);let s=r.EditorState.create({doc:n||"",extensions:o}),c=new r.EditorView({state:s,parent:e});t._segmentEditors[i]=c,c.contentDOM.addEventListener("keydown",function(e){if("ArrowDown"!==e.key&&"ArrowUp"!==e.key)return;if(e.shiftKey||e.ctrlKey||e.metaKey||e.altKey)return;let n=c.state,r=n.selection.main.head,o=n.doc.lineAt(r),a=r-o.from;if("ArrowDown"===e.key){if(o.to<n.doc.length)return;let r=t._getOrderedSegmentIndices(),s=t._getLogicalIndex(i);if(s<0||s>=r.length-1)return;let c=r[s+1],l=t._segmentEditors[c];if(!l)return;e.preventDefault(),e.stopPropagation();let p=l.state.doc.line(1),d=Math.min(a,p.to-p.from);l.focus(),l.dispatch({selection:{anchor:p.from+d}}),t._setActiveSegment(c)}else if("ArrowUp"===e.key){if(o.number>1)return;let n=t._getOrderedSegmentIndices(),r=t._getLogicalIndex(i);if(r<=0)return;let s=n[r-1],c=t._segmentEditors[s];if(!c)return;e.preventDefault(),e.stopPropagation();let l=c.state.doc.line(c.state.doc.lines),p=Math.min(a,l.to-l.from);c.focus(),c.dispatch({selection:{anchor:l.from+p}}),t._setActiveSegment(s)}},!0),c.contentDOM.addEventListener("drop",function(e){if(t._dragSourceIndex>=0)return;if(!e.dataTransfer||!e.dataTransfer.files||e.dataTransfer.files.length<1)return;let n=e.dataTransfer.files[0];if(n.type&&n.type.startsWith("image/")){e.preventDefault(),e.stopPropagation(),t._processImageFile(n,i);let r=document.getElementById("PictMDE-SegmentEditor-".concat(i));r&&r.classList.remove("pict-mde-image-dragover")}},!0)},t._buildDataURICollapseExtension=function(){let e=t._codeMirrorModules;if(!(e&&e.Decoration&&e.ViewPlugin&&e.WidgetType))return null;let i=e.Decoration,n=e.ViewPlugin,r=e.WidgetType;class o extends r{constructor(t){super(),this.label=t}toDOM(){let t=document.createElement("span");return t.className="pict-mde-data-uri-collapsed",t.textContent=this.label,t.title="Data URI (click to expand in image preview below)",t}eq(t){return this.label===t.label}}function a(t){let e=[],n=t.state.doc;for(let r of t.visibleRanges){let t,a=r.from,s=r.to,c=n.sliceString(a,s),l=/!\[[^\]]*\]\(data:([^;]+);base64,/g;for(;null!==(t=l.exec(c));){let r=a+t.index+t[0].length,s=-1,c=r,l=n.length,p=Math.min(l,c+5242880),d=4096;for(let t=c;t<p;t+=d){let e=Math.min(t+d,p),i=n.sliceString(t,e).indexOf(")");if(i>=0){s=t+i;break}}if(s<0)continue;let u=s-r;if(u<200)continue;let h,m=Math.round(.75*u);h=m>=1048576?(m/1048576).toFixed(1)+"MB":m>=1024?Math.round(m/1024)+"KB":m+"B";t[1];let g="…".concat(h,")"),f=i.replace({widget:new o(g)});e.push(f.range(r,s+1))}}return i.set(e,!0)}return n.fromClass(class{constructor(t){this.decorations=a(t)}update(t){(t.docChanged||t.viewportChanged)&&(this.decorations=a(t.view))}},{decorations:t=>t.decorations})}}},{}],23:[function(t,e,i){e.exports.attach=function(t){t._wireSegmentDragEvents=function(e,i){let n=e.querySelector(".pict-mde-drag-handle");n&&(n.addEventListener("dragstart",n=>{t._dragSourceIndex=i,n.dataTransfer.effectAllowed="move",n.dataTransfer.setData("text/plain",String(i));let r=t._getContainerElement();r&&r.classList.add("pict-mde-dragging"),setTimeout(()=>{e.style.opacity="0.4"},0)}),n.addEventListener("dragend",()=>{e.style.opacity="",t._dragSourceIndex=-1,t._clearAllDropIndicators();let i=t._getContainerElement();i&&i.classList.remove("pict-mde-dragging")}),e.addEventListener("dragover",i=>{i.preventDefault(),i.dataTransfer.dropEffect="move",t._clearAllDropIndicators();let n=e.getBoundingClientRect(),r=n.top+n.height/2;i.clientY<r?e.classList.add("pict-mde-drag-over-top"):e.classList.add("pict-mde-drag-over-bottom")}),e.addEventListener("dragleave",t=>{e.contains(t.relatedTarget)||(e.classList.remove("pict-mde-drag-over-top"),e.classList.remove("pict-mde-drag-over-bottom"))}),e.addEventListener("drop",n=>{n.preventDefault();let r=e.classList.contains("pict-mde-drag-over-bottom");t._clearAllDropIndicators();let o=t._dragSourceIndex;o<0||o===i||t._reorderSegment(o,i,r)}))},t._clearAllDropIndicators=function(){let e=t._getContainerElement();if(!e)return;let i=e.querySelectorAll(".pict-mde-segment");for(let t=0;t<i.length;t++)i[t].classList.remove("pict-mde-drag-over-top"),i[t].classList.remove("pict-mde-drag-over-bottom")},t._reorderSegment=function(e,i,n){let r=t._getLogicalIndex(e),o=t._getLogicalIndex(i);if(r<0||o<0)return void t.log.warn("PICT-MarkdownEditor _reorderSegment: could not resolve logical indices (from=".concat(r,", to=").concat(o,")."));if(r===o)return;t._marshalAllEditorsToData();let a=t._getSegmentsFromData();if(!a||a.length<2)return;let s=n?o+1:o;if(r<s&&s--,s===r)return;let c=a.splice(r,1)[0];a.splice(s,0,c),t._setSegmentsToData(a),t._reorderHiddenPreviewState(r,s),t._reorderSegmentTabStates(r,s),t._buildEditorUI()},t._reorderHiddenPreviewState=function(e,i){if(e===i)return;let n=Object.keys(t._hiddenPreviewSegments).map(t=>parseInt(t,10));if(0===n.length)return;let r=Math.max(...n,e,i),o=[];for(let e=0;e<=r;e++)o.push(!!t._hiddenPreviewSegments[e]);let a=o.splice(e,1)[0];o.splice(i,0,a),t._hiddenPreviewSegments={};for(let e=0;e<o.length;e++)o[e]&&(t._hiddenPreviewSegments[e]=!0)},t._swapHiddenPreviewState=function(e,i){let n=!!t._hiddenPreviewSegments[e];!!t._hiddenPreviewSegments[i]?t._hiddenPreviewSegments[e]=!0:delete t._hiddenPreviewSegments[e],n?t._hiddenPreviewSegments[i]=!0:delete t._hiddenPreviewSegments[i]},t._reorderSegmentTabStates=function(e,i){if(e===i)return;let n=Object.keys(t._segmentTabStates).map(t=>parseInt(t,10));if(0===n.length)return;let r=Math.max(...n,e,i),o=[];for(let e=0;e<=r;e++)o.push(t._segmentTabStates[e]||"editor");let a=o.splice(e,1)[0];o.splice(i,0,a),t._segmentTabStates={};for(let e=0;e<o.length;e++)"editor"!==o[e]&&(t._segmentTabStates[e]=o[e])},t._swapSegmentTabStates=function(e,i){let n=t._segmentTabStates[e]||"editor",r=t._segmentTabStates[i]||"editor";"editor"!==r?t._segmentTabStates[e]=r:delete t._segmentTabStates[e],"editor"!==n?t._segmentTabStates[i]=n:delete t._segmentTabStates[i]},t._setActiveSegment=function(e){if(t._activeSegmentIndex>=0&&t._activeSegmentIndex!==e){let e=document.getElementById("PictMDE-Segment-".concat(t._activeSegmentIndex));e&&e.classList.remove("pict-mde-active")}t._activeSegmentIndex=e;let i=document.getElementById("PictMDE-Segment-".concat(e));i&&i.classList.add("pict-mde-active")},t._clearActiveSegment=function(e){t._activeSegmentIndex===e&&(t._activeSegmentIndex=-1);let i=document.getElementById("PictMDE-Segment-".concat(e));i&&i.classList.remove("pict-mde-active"),t._resetSidebarPosition(e)},t._updateSidebarPosition=function(e){let i=document.getElementById("PictMDE-Segment-".concat(e));if(!i)return;let n=i.querySelector(".pict-mde-quadrant-tr");if(!n)return;let r=t._segmentEditors[e];if(!r)return;let o=r.state.selection.main.head,a=r.coordsAtPos(o);if(!a)return void t._resetSidebarPosition(e);let s=i.getBoundingClientRect(),c=a.top-s.top,l=n.offsetHeight||0,p=i.offsetHeight||0,d=Math.max(0,p-l);c=Math.max(0,Math.min(c,d)),n.classList.add("pict-mde-sidebar-at-cursor"),n.style.setProperty("--pict-mde-sidebar-top","".concat(c,"px"))},t._resetSidebarPosition=function(t){let e=document.getElementById("PictMDE-Segment-".concat(t));if(!e)return;let i=e.querySelector(".pict-mde-quadrant-tr");i&&(i.classList.remove("pict-mde-sidebar-at-cursor"),i.style.removeProperty("--pict-mde-sidebar-top"))}}},{}],24:[function(t,e,i){const n={bold:{wrap:"**"},italic:{wrap:"*"},code:{wrap:"`"},heading:{prefix:"# "},link:{before:"[",after:"](url)"}};e.exports.attach=function(t){t.applyFormatting=function(e,i){let r=t._segmentEditors[e];if(!r)return void t.log.warn("PICT-MarkdownEditor applyFormatting: no editor for segment ".concat(e,"."));let o=n[i];if(!o)return void t.log.warn('PICT-MarkdownEditor applyFormatting: unknown format type "'.concat(i,'".'));let a,s,c=r.state,l=c.selection.main,p=l.from,d=l.to,u=p!==d,h=u?c.sliceDoc(p,d):"";if(o.wrap){let t=o.wrap;if(u){let e=c.sliceDoc(Math.max(0,p-t.length),p),i=c.sliceDoc(d,Math.min(c.doc.length,d+t.length));if(e===t&&i===t)return a=[{from:p-t.length,to:p,insert:""},{from:d,to:d+t.length,insert:""}],s=p-t.length,void r.dispatch({changes:a,selection:{anchor:s,head:s+h.length}});a={from:p,to:d,insert:t+h+t},s=p+t.length,r.dispatch({changes:a,selection:{anchor:s,head:s+h.length}})}else{a={from:p,insert:t+t},s=p+t.length,r.dispatch({changes:a,selection:{anchor:s}})}}else if(o.prefix){let t=c.doc.lineAt(p);a=t.text.startsWith(o.prefix)?{from:t.from,to:t.from+o.prefix.length,insert:""}:{from:t.from,insert:o.prefix},r.dispatch({changes:a})}else if(o.before&&o.after)if(u){a={from:p,to:d,insert:o.before+h+o.after},s=p+o.before.length+h.length+2,r.dispatch({changes:a,selection:{anchor:s,head:s+3}})}else{a={from:p,insert:o.before+o.after},s=p+o.before.length,r.dispatch({changes:a,selection:{anchor:s}})}r.focus()}}},{}],25:[function(t,e,i){e.exports.attach=function(t){t.openImagePicker=function(e){let i=document.getElementById("PictMDE-ImageInput-".concat(e));i?(i.onchange=()=>{i.files&&i.files.length>0&&t._processImageFile(i.files[0],e),i.value=""},i.click()):t.log.warn("PICT-MarkdownEditor openImagePicker: file input not found for segment ".concat(e,"."))},t._processImageFile=function(e,i){if(!e||!e.type||!e.type.startsWith("image/"))return void t.log.warn("PICT-MarkdownEditor _processImageFile: not an image file (type: ".concat(e?e.type:"null",")."));let n=e.name?e.name.replace(/\.[^.]+$/,""):"image";if(t.onImageUpload(e,i,(e,r)=>{e?t.log.error("PICT-MarkdownEditor image upload error: ".concat(e)):r&&t._insertImageMarkdown(i,r,n)}))return;if("undefined"==typeof FileReader)return void t.log.error("PICT-MarkdownEditor _processImageFile: FileReader not available in this environment.");let r=new FileReader;r.onload=()=>{t._insertImageMarkdown(i,r.result,n)},r.onerror=()=>{t.log.error("PICT-MarkdownEditor _processImageFile: FileReader error.")},r.readAsDataURL(e)},t._insertImageMarkdown=function(e,i,n){let r=t._segmentEditors[e];if(!r)return void t.log.warn("PICT-MarkdownEditor _insertImageMarkdown: no editor for segment ".concat(e,"."));let o=".concat(i,")"),a=r.state.selection.main.head;r.dispatch({changes:{from:a,insert:o},selection:{anchor:a+o.length}}),r.focus(),t._updateImagePreviews(e)},t._updateImagePreviews=function(e){let i=document.getElementById("PictMDE-ImagePreview-".concat(e));if(!i)return;let n=t._segmentEditors[e];if(!n)return i.innerHTML="",void i.classList.remove("pict-mde-has-images");let r,o=n.state.doc.toString(),a=/!\[([^\]]*)\]\(([^)]+)\)/g,s=[];for(;null!==(r=a.exec(o));)s.push({alt:r[1]||"image",url:r[2]});if(0===s.length)return i.innerHTML="",void i.classList.remove("pict-mde-has-images");let c="";for(let e=0;e<s.length;e++){let i=s[e].alt.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),n=t._resolveImageURL(s[e].url).replace(/&/g,"&").replace(/"/g,""");c+='<div class="pict-mde-image-preview-item"><img src="'.concat(n,'" alt="').concat(i,'" /><span class="pict-mde-image-preview-label">').concat(i,"</span></div>")}i.innerHTML=c,i.classList.add("pict-mde-has-images")},t._wireImageDragEvents=function(e,i){e.addEventListener("dragover",i=>{t._dragSourceIndex>=0||!i.dataTransfer||!i.dataTransfer.types||i.dataTransfer.types.indexOf("Files")<0||(i.preventDefault(),i.dataTransfer.dropEffect="copy",e.classList.add("pict-mde-image-dragover"))}),e.addEventListener("dragleave",t=>{e.contains(t.relatedTarget)||e.classList.remove("pict-mde-image-dragover")}),e.addEventListener("drop",n=>{if(e.classList.remove("pict-mde-image-dragover"),t._dragSourceIndex>=0)return;if(!n.dataTransfer||!n.dataTransfer.files||n.dataTransfer.files.length<1)return;let r=n.dataTransfer.files[0];r.type&&r.type.startsWith("image/")&&(n.preventDefault(),n.stopPropagation(),t._processImageFile(r,i))})}}},{}],26:[function(t,e,i){const n=t("pict-section-content").PictContentProvider;e.exports.attach=function(e){e._getContentProvider=function(){return e._contentProvider||(e._contentProvider=new n(e.fable,{},"Pict-Content-Provider-MDE")),e._contentProvider},e._updateRichPreviews=function(t){if(!e.options.EnableRichPreview)return;let i=document.getElementById("PictMDE-RichPreview-".concat(t));if(!i)return;let n=e._segmentEditors[t];if(!n)return i.innerHTML="",void i.classList.remove("pict-mde-has-rich-preview");let r=n.state.doc.toString();if(!r||0===r.trim().length)return i.innerHTML="",void i.classList.remove("pict-mde-has-rich-preview");let o=e._getContentProvider(),a=null;e.pict&&e.pict.providers&&e.pict.providers.Vocabulary&&"function"==typeof e.pict.providers.Vocabulary.getResolver&&(a=e.pict.providers.Vocabulary.getResolver());let s=o.parseMarkdown(r,null,null,a);if(!s||0===s.trim().length)return i.innerHTML="",void i.classList.remove("pict-mde-has-rich-preview");let c="PictMDE-RichPreviewBody-".concat(t);if(i.innerHTML='<div class="pict-content" id="'.concat(c,'">').concat(s,"</div>"),i.classList.add("pict-mde-has-rich-preview"),e.pict&&e.pict.providers&&e.pict.providers.Vocabulary&&"function"==typeof e.pict.providers.Vocabulary.wirePopovers&&e.pict.providers.Vocabulary.wirePopovers("#"+c),e.options.ImageBaseURL){let t=i.querySelectorAll("img");for(let i=0;i<t.length;i++){let n=t[i].getAttribute("src");if(n){let r=e._resolveImageURL(n);r!==n&&t[i].setAttribute("src",r)}}}let l=(e._richPreviewGenerations[t]||0)+1;e._richPreviewGenerations[t]=l,e._postRenderMermaid(c,t,l),e._postRenderKaTeX(c)},e._ensureMermaidAdapter=function(){if(e._mermaidAdapter)return e._mermaidAdapter;if("undefined"==typeof mermaid||"undefined"==typeof window)return null;let i=e.pict&&e.pict.providers&&e.pict.providers.Theme;try{if(i&&i.diagram&&"function"==typeof i.diagram.adaptMermaid)e._mermaidAdapter=i.diagram.adaptMermaid(mermaid,{});else{let i=t("pict-provider-theme/source/Theme-Diagram-Adapter.js");i.initializeMermaid(mermaid),e._mermaidAdapter={refresh:function(){return i.refreshMermaidDiagrams()},reinitialize:function(){i.initializeMermaid(mermaid)},dispose:function(){},subscribed:!1}}}catch(t){e.log.warn("PICT-MarkdownEditor mermaid theme adapter init failed: ".concat(t.message||t)),e._mermaidAdapter=null}return e._mermaidAdapter},e._postRenderMermaid=function(t,i,n){if("undefined"==typeof mermaid)return;let r=document.getElementById(t);if(!r)return;let o=r.querySelectorAll("pre.mermaid");if(o.length<1)return;e._ensureMermaidAdapter();let a=e.pict&&e.pict.providers&&e.pict.providers.Theme;if(a&&a.diagram&&"function"==typeof a.diagram.stashMermaidSource)a.diagram.stashMermaidSource(o);else for(let t=0;t<o.length;t++){let e=o[t];e.hasAttribute("data-mermaid-source")||e.setAttribute("data-mermaid-source",e.textContent)}try{let t=mermaid.run({nodes:o});t&&"function"==typeof t.catch&&t.catch(t=>{(-1===i?e._renderedViewGeneration:e._richPreviewGenerations[i])===n&&e.log.warn("PICT-MarkdownEditor mermaid render error: ".concat(t.message||t))})}catch(t){e.log.warn("PICT-MarkdownEditor mermaid render error: ".concat(t.message||t))}},e._postRenderKaTeX=function(t){if("undefined"==typeof katex)return;let i=document.getElementById(t);if(!i)return;let n=i.querySelectorAll(".pict-content-katex-inline");for(let t=0;t<n.length;t++)try{katex.render(n[t].textContent,n[t],{throwOnError:!1,displayMode:!1})}catch(t){e.log.warn("PICT-MarkdownEditor KaTeX inline error: ".concat(t.message||t))}let r=i.querySelectorAll(".pict-content-katex-display");for(let t=0;t<r.length;t++)try{katex.render(r[t].textContent,r[t],{throwOnError:!1,displayMode:!0})}catch(t){e.log.warn("PICT-MarkdownEditor KaTeX display error: ".concat(t.message||t))}},e._escapeHTMLForPreview=function(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},e.toggleRenderedView=function(t){e._renderedViewActive="boolean"==typeof t?t:!e._renderedViewActive,e._renderedViewActive?e._renderRenderedView():e._restoreEditingView()},e._renderRenderedView=function(){let t=e._getContainerElement();if(!t)return;e._marshalAllEditorsToData();let i=e._getSegmentsFromData(),n="";if(i&&i.length>0){let t=[];for(let e=0;e<i.length;e++)t.push(i[e].Content||"");n=t.join("\n\n")}for(let t in e._segmentEditors)e._segmentEditors[t]&&e._segmentEditors[t].destroy();e._segmentEditors={};let r=e._getContentProvider().parseMarkdown(n),o="PictMDE-RenderedView";if(t.innerHTML='<div class="pict-mde-rendered-view" id="'.concat(o,'"><div class="pict-content">').concat(r||"","</div></div>"),t.classList.add("pict-mde-rendered-mode"),e.options.ImageBaseURL){let i=t.querySelectorAll(".pict-mde-rendered-view img");for(let t=0;t<i.length;t++){let n=i[t].getAttribute("src");if(n){let r=e._resolveImageURL(n);r!==n&&i[t].setAttribute("src",r)}}}e._renderedViewGeneration++;let a=e._renderedViewGeneration,s=t.querySelector("#".concat(o," .pict-content"));if(s){let t="PictMDE-RenderedViewContent";s.id=t,e._postRenderMermaid(t,-1,a),e._postRenderKaTeX(t)}},e._restoreEditingView=function(){let t=e._getContainerElement();t&&(t.classList.remove("pict-mde-rendered-mode"),e._buildEditorUI())}}},{"pict-provider-theme/source/Theme-Diagram-Adapter.js":7,"pict-section-content":14}],27:[function(t,e,i){e.exports={DefaultRenderable:"MarkdownEditor-Wrap",DefaultDestinationAddress:"#MarkdownEditor-Container-Div",Templates:[{Hash:"MarkdownEditor-Container",Template:'<div class="pict-mde" id="PictMDE-Container"></div>'},{Hash:"MarkdownEditor-Segment",Template:'<div class="pict-mde-segment" id="PictMDE-Segment-{~D:Record.SegmentIndex~}" data-segment-index="{~D:Record.SegmentIndex~}">\n\t<div class="pict-mde-left-controls">\n\t\t<div class="pict-mde-quadrant-tl"></div>\n\t\t<div class="pict-mde-quadrant-bl"></div>\n\t</div>\n\t<div class="pict-mde-drag-handle" draggable="true" title="Drag to reorder"></div>\n\t<div class="pict-mde-segment-body">\n\t\t<div class="pict-mde-tab-bar" id="PictMDE-TabBar-{~D:Record.SegmentIndex~}">\n\t\t\t<button type="button" class="pict-mde-tab pict-mde-tab-active" data-tab="editor" onclick="{~D:Record.ViewIdentifier~}.switchSegmentTab({~D:Record.SegmentIndex~}, \'editor\')">Edit</button>\n\t\t\t<button type="button" class="pict-mde-tab" data-tab="preview" onclick="{~D:Record.ViewIdentifier~}.switchSegmentTab({~D:Record.SegmentIndex~}, \'preview\')">Preview</button>\n\t\t</div>\n\t\t<div class="pict-mde-segment-editor" id="PictMDE-SegmentEditor-{~D:Record.SegmentIndex~}"></div>\n\t\t<div class="pict-mde-preview-pane" id="PictMDE-PreviewPane-{~D:Record.SegmentIndex~}">\n\t\t\t<div class="pict-mde-image-preview" id="PictMDE-ImagePreview-{~D:Record.SegmentIndex~}"></div>\n\t\t\t<div class="pict-mde-rich-preview" id="PictMDE-RichPreview-{~D:Record.SegmentIndex~}"></div>\n\t\t</div>\n\t</div>\n\t<div class="pict-mde-sidebar" id="PictMDE-Sidebar-{~D:Record.SegmentIndex~}">\n\t\t<div class="pict-mde-quadrant-tr"></div>\n\t\t<div class="pict-mde-quadrant-br"></div>\n\t\t<input type="file" accept="image/*" class="pict-mde-image-input" id="PictMDE-ImageInput-{~D:Record.SegmentIndex~}" style="display:none" />\n\t</div>\n</div>'},{Hash:"MarkdownEditor-AddSegment",Template:'<div class="pict-mde-add-segment">\n\t<button type="button" class="pict-mde-btn-add" onclick="{~D:Record.ViewIdentifier~}.addSegment()">+ Add Segment</button>\n</div>'}],Renderables:[{RenderableHash:"MarkdownEditor-Wrap",TemplateHash:"MarkdownEditor-Container",DestinationAddress:"#MarkdownEditor-Container-Div"}],TargetElementAddress:"#MarkdownEditor-Container-Div",ContentDataAddress:!1,ReadOnly:!1,EnableRichPreview:!0,DefaultPreviewMode:"off",ImageBaseURL:"",ButtonsTL:[{HTML:"{~I:Close~}",Action:"removeSegment",Class:"pict-mde-btn-remove",Title:"Remove Segment"}],ButtonsBL:[{HTML:"{~I:ArrowUp~}",Action:"moveSegmentUp",Class:"pict-mde-btn-move",Title:"Move Up"},{HTML:"{~I:ArrowDown~}",Action:"moveSegmentDown",Class:"pict-mde-btn-move",Title:"Move Down"},{HTML:"{~I:Settings~}",Action:"toggleControls",Class:"pict-mde-btn-linenums",Title:"Toggle Controls"},{HTML:"{~I:Eye~}",Action:"cyclePreviewMode",Class:"pict-mde-btn-preview",Title:"Cycle Preview Mode"}],ButtonsTR:[{HTML:"<b>B</b>",Action:"applyFormatting:bold",Class:"",Title:"Bold (Ctrl+B)"},{HTML:"<i>I</i>",Action:"applyFormatting:italic",Class:"",Title:"Italic (Ctrl+I)"},{HTML:"<code><></code>",Action:"applyFormatting:code",Class:"",Title:"Inline Code (Ctrl+E)"},{HTML:"#",Action:"applyFormatting:heading",Class:"",Title:"Heading"},{HTML:"[ ]",Action:"applyFormatting:link",Class:"",Title:"Link"},{HTML:"{~I:Image~}",Action:"openImagePicker",Class:"pict-mde-sidebar-btn-image",Title:"Insert Image"}],ButtonsBR:[],CSS:"\n/* ---- Container ---- */\n.pict-mde\n{\n\tfont-family: var(--theme-typography-family-body, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);\n\tfont-size: 14px;\n}\n\n/* ---- Segment row: left-controls | drag-handle | editor body | sidebar ---- */\n.pict-mde-segment\n{\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: stretch;\n\tmargin-bottom: 6px;\n\tmin-height: 48px;\n\ttransition: background-color 0.15s ease;\n}\n\n/* ---- Left controls column ---- */\n.pict-mde-left-controls\n{\n\tflex: 0 0 22px;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 2px 0;\n}\n\n/* ---- Left-side quadrants ---- */\n.pict-mde-quadrant-tl\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tposition: sticky;\n\ttop: 2px;\n\tz-index: 2;\n}\n.pict-mde-quadrant-bl\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 1px;\n\tposition: sticky;\n\tbottom: 2px;\n\tz-index: 2;\n}\n\n/* ---- Left-side buttons (shared base) ---- */\n.pict-mde-left-btn\n{\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 20px;\n\theight: 20px;\n\tborder: none;\n\tbackground: transparent;\n\tcursor: pointer;\n\tfont-size: 12px;\n\tpadding: 0;\n\tcolor: var(--theme-color-text-muted, #888);\n\tline-height: 1;\n\tfont-family: inherit;\n\topacity: 0;\n\ttransition: opacity 0.15s ease;\n}\n.pict-mde-segment:hover .pict-mde-left-btn,\n.pict-mde-segment.pict-mde-active .pict-mde-left-btn\n{\n\topacity: 1;\n}\n.pict-mde-left-btn:hover\n{\n\tcolor: var(--theme-color-text-primary, #222);\n}\n.pict-mde-btn-remove:hover\n{\n\tcolor: var(--theme-color-status-error, #CC3333);\n}\n.pict-mde-btn-linenums\n{\n\tfont-size: 11px;\n\tfont-weight: 600;\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', monospace);\n}\n/* Highlight when controls are active */\n.pict-mde.pict-mde-controls-on .pict-mde-btn-linenums\n{\n\tcolor: var(--theme-color-brand-primary, #4A90D9);\n}\n.pict-mde-btn-preview\n{\n\tfont-size: 11px;\n}\n/* Preview button: highlight when any preview mode is active */\n.pict-mde.pict-mde-preview-bottom .pict-mde-btn-preview,\n.pict-mde.pict-mde-preview-side .pict-mde-btn-preview,\n.pict-mde.pict-mde-preview-tabbed .pict-mde-btn-preview\n{\n\tcolor: var(--theme-color-brand-primary, #4A90D9);\n}\n/* Dim preview button when mode is off */\n.pict-mde.pict-mde-preview-off .pict-mde-btn-preview\n{\n\tcolor: var(--theme-color-border-default, #CCC);\n}\n\n/* ---- Drag handle (simple grey bar) ---- */\n.pict-mde-drag-handle\n{\n\tflex: 0 0 8px;\n\tcursor: grab;\n\tbackground: var(--theme-color-background-tertiary, #EDEDED);\n\ttransition: background-color 0.15s ease;\n\tuser-select: none;\n}\n.pict-mde-drag-handle:active\n{\n\tcursor: grabbing;\n}\n.pict-mde-drag-handle:hover\n{\n\tbackground: var(--theme-color-border-default, #C8C8C8);\n}\n\n/* ---- Editor body (middle column) ---- */\n.pict-mde-segment-body\n{\n\tflex: 1 1 0%;\n\tmin-width: 0;\n\toverflow: hidden;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\ttransition: background-color 0.15s ease;\n}\n.pict-mde-segment-editor\n{\n\tmin-height: 48px;\n}\n\n/* ---- Image preview area below the editor ---- */\n.pict-mde-image-preview\n{\n\tdisplay: none;\n}\n.pict-mde-image-preview.pict-mde-has-images\n{\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 8px;\n\tpadding: 8px 12px;\n\tborder-top: 1px solid var(--theme-color-border-light, #EDEDED);\n}\n.pict-mde-image-preview img\n{\n\tmax-width: 200px;\n\tmax-height: 150px;\n\tborder-radius: 3px;\n\tborder: 1px solid var(--theme-color-border-default, #E0E0E0);\n\tobject-fit: contain;\n\tbackground: var(--theme-color-background-secondary, #F8F8F8);\n}\n.pict-mde-image-preview-item\n{\n\tposition: relative;\n\tdisplay: inline-block;\n}\n.pict-mde-image-preview-label\n{\n\tdisplay: block;\n\tfont-size: 10px;\n\tcolor: var(--theme-color-text-muted, #999);\n\tmargin-top: 2px;\n\tmax-width: 200px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n/* ---- Rich content preview area (rendered via pict-section-content) ---- */\n.pict-mde-rich-preview\n{\n\tdisplay: none;\n}\n.pict-mde-rich-preview.pict-mde-has-rich-preview\n{\n\tdisplay: block;\n\tborder-top: 1px solid var(--theme-color-border-light, #EDEDED);\n\tbackground: var(--theme-color-background-panel, #FCFCFC);\n\toverflow: hidden;\n}\n/* Constrain images in the rich preview even if pict-section-content CSS loads late */\n.pict-mde-rich-preview img\n{\n\tmax-width: 100%;\n\theight: auto;\n}\n/* ---- Preview layout modes ---- */\n\n/* Tab bar: hidden by default, shown only in tabbed mode */\n.pict-mde-tab-bar\n{\n\tdisplay: none;\n}\n.pict-mde.pict-mde-preview-tabbed .pict-mde-tab-bar\n{\n\tdisplay: flex;\n\tgap: 0;\n\tborder-bottom: 1px solid var(--theme-color-border-light, #EDEDED);\n\tbackground: var(--theme-color-background-secondary, #F8F8F8);\n}\n.pict-mde-tab\n{\n\tpadding: 4px 12px;\n\tborder: none;\n\tbackground: transparent;\n\tcursor: pointer;\n\tfont-size: 12px;\n\tcolor: var(--theme-color-text-muted, #888);\n\tborder-bottom: 2px solid transparent;\n\tfont-family: inherit;\n}\n.pict-mde-tab:hover\n{\n\tcolor: var(--theme-color-text-primary, #222);\n}\n.pict-mde-tab.pict-mde-tab-active\n{\n\tcolor: var(--theme-color-brand-primary, #4A90D9);\n\tborder-bottom-color: var(--theme-color-brand-primary, #4A90D9);\n}\n\n/* Off mode: hide all preview panes and tab bars */\n.pict-mde.pict-mde-preview-off .pict-mde-preview-pane\n{\n\tdisplay: none;\n}\n.pict-mde.pict-mde-preview-off .pict-mde-tab-bar\n{\n\tdisplay: none;\n}\n/* Legacy class alias for backward compatibility */\n.pict-mde.pict-mde-previews-hidden .pict-mde-preview-pane\n{\n\tdisplay: none;\n}\n\n/* Bottom mode: vertical stacking (default flex-column behavior) */\n.pict-mde.pict-mde-preview-bottom .pict-mde-segment-body\n{\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n/* Side-by-side mode: editor and preview side by side */\n.pict-mde.pict-mde-preview-side .pict-mde-segment-body\n{\n\tdisplay: flex;\n\tflex-direction: row;\n}\n.pict-mde.pict-mde-preview-side .pict-mde-segment-editor\n{\n\tflex: 1 1 50%;\n\tmin-width: 0;\n\toverflow: hidden;\n}\n.pict-mde.pict-mde-preview-side .pict-mde-preview-pane\n{\n\tflex: 1 1 50%;\n\tmin-width: 0;\n\toverflow: auto;\n\tborder-left: 1px solid var(--theme-color-border-light, #EDEDED);\n}\n/* Side-by-side: remove top borders since preview is beside, not below */\n.pict-mde.pict-mde-preview-side .pict-mde-rich-preview.pict-mde-has-rich-preview\n{\n\tborder-top: none;\n}\n.pict-mde.pict-mde-preview-side .pict-mde-image-preview.pict-mde-has-images\n{\n\tborder-top: none;\n}\n\n/* Tabbed mode: default hides preview, shows editor */\n.pict-mde.pict-mde-preview-tabbed .pict-mde-segment-body\n{\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.pict-mde.pict-mde-preview-tabbed .pict-mde-preview-pane\n{\n\tdisplay: none;\n}\n/* Tabbed mode: when showing preview, hide editor and show preview */\n.pict-mde.pict-mde-preview-tabbed .pict-mde-segment.pict-mde-tab-showing-preview .pict-mde-segment-editor\n{\n\tdisplay: none;\n}\n.pict-mde.pict-mde-preview-tabbed .pict-mde-segment.pict-mde-tab-showing-preview .pict-mde-preview-pane\n{\n\tdisplay: block;\n}\n\n/* Per-segment preview hide: only applies in bottom and side modes */\n.pict-mde.pict-mde-preview-bottom .pict-mde-segment.pict-mde-preview-hidden .pict-mde-preview-pane,\n.pict-mde.pict-mde-preview-side .pict-mde-segment.pict-mde-preview-hidden .pict-mde-preview-pane\n{\n\tdisplay: none;\n}\n/* Constrain the pict-content inside the preview to fit the segment */\n.pict-mde-rich-preview .pict-content\n{\n\tpadding: 12px;\n\tmax-width: none;\n\tmargin: 0;\n\tfont-size: 13px;\n}\n/* Reduce heading sizes in the preview to be proportional */\n.pict-mde-rich-preview .pict-content h1\n{\n\tfont-size: 1.4em;\n\tmargin-top: 0;\n}\n.pict-mde-rich-preview .pict-content h2\n{\n\tfont-size: 1.2em;\n\tmargin-top: 0.75em;\n}\n.pict-mde-rich-preview .pict-content h3\n{\n\tfont-size: 1.1em;\n\tmargin-top: 0.6em;\n}\n\n/* ---- Rendered view (full document preview mode) ---- */\n.pict-mde-rendered-view\n{\n\tpadding: 16px 20px;\n\tbackground: var(--theme-color-background-panel, #FFFFFF);\n\tmin-height: 120px;\n}\n.pict-mde-rendered-view .pict-content\n{\n\tmax-width: none;\n\tmargin: 0;\n}\n/* Hide the add-segment button in rendered mode */\n.pict-mde.pict-mde-rendered-mode .pict-mde-add-segment\n{\n\tdisplay: none;\n}\n\n/* Focused / active editor gets subtle warm background */\n.pict-mde-segment.pict-mde-active .pict-mde-segment-body\n{\n\tbackground: var(--theme-color-background-secondary, #FAFAF5);\n}\n.pict-mde-segment.pict-mde-active .pict-mde-drag-handle\n{\n\tbackground: var(--theme-color-border-strong, #9CB4C8);\n}\n\n/* ---- Right sidebar column ---- */\n.pict-mde-sidebar\n{\n\tflex: 0 0 30px;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n\tjustify-content: space-between;\n\tposition: relative;\n}\n\n/* ---- Right-side quadrants ---- */\n.pict-mde-quadrant-tr\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 1px;\n\tpadding: 4px 0;\n\twidth: 100%;\n\topacity: 0;\n\ttransition: opacity 0.15s ease, top 0.1s ease;\n\tposition: sticky;\n\ttop: 0;\n}\n.pict-mde-quadrant-br\n{\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 1px;\n\tpadding: 4px 0;\n\twidth: 100%;\n\topacity: 0;\n\ttransition: opacity 0.15s ease;\n\tposition: sticky;\n\tbottom: 0;\n}\n\n/* Active segment always shows its right-side quadrants */\n.pict-mde-segment.pict-mde-active .pict-mde-quadrant-tr,\n.pict-mde-segment.pict-mde-active .pict-mde-quadrant-br\n{\n\topacity: 1;\n}\n/* When no segment is active, hovering shows both left + right controls */\n.pict-mde:not(:has(.pict-mde-active)) .pict-mde-segment:hover .pict-mde-quadrant-tr,\n.pict-mde:not(:has(.pict-mde-active)) .pict-mde-segment:hover .pict-mde-quadrant-br\n{\n\topacity: 1;\n}\n\n/* ---- Controls-hidden mode: right quadrants show faintly on hover ---- */\n.pict-mde.pict-mde-controls-hidden .pict-mde-quadrant-tr,\n.pict-mde.pict-mde-controls-hidden .pict-mde-quadrant-br\n{\n\topacity: 0;\n}\n.pict-mde.pict-mde-controls-hidden .pict-mde-segment:hover .pict-mde-quadrant-tr,\n.pict-mde.pict-mde-controls-hidden .pict-mde-segment:hover .pict-mde-quadrant-br\n{\n\topacity: 0.3;\n}\n.pict-mde.pict-mde-controls-hidden .pict-mde-segment.pict-mde-active .pict-mde-quadrant-tr,\n.pict-mde.pict-mde-controls-hidden .pict-mde-segment.pict-mde-active .pict-mde-quadrant-br\n{\n\topacity: 0.3;\n}\n\n/* When JS sets a cursor-relative offset, switch TR from sticky to absolute positioning */\n.pict-mde-quadrant-tr.pict-mde-sidebar-at-cursor\n{\n\tposition: absolute;\n\ttop: var(--pict-mde-sidebar-top, 0px);\n}\n\n/* ---- Right-side buttons (shared base) ---- */\n.pict-mde-sidebar-btn\n{\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 24px;\n\theight: 22px;\n\tborder: none;\n\tbackground: transparent;\n\tcursor: pointer;\n\tfont-size: 12px;\n\tpadding: 0;\n\tborder-radius: 3px;\n\tcolor: var(--theme-color-text-secondary, #666);\n\tline-height: 1;\n\tfont-family: inherit;\n}\n.pict-mde-sidebar-btn:hover\n{\n\tcolor: var(--theme-color-text-primary, #222);\n}\n.pict-mde-sidebar-btn b\n{\n\tfont-size: 13px;\n\tfont-weight: 700;\n}\n.pict-mde-sidebar-btn i\n{\n\tfont-size: 13px;\n\tfont-style: italic;\n}\n.pict-mde-sidebar-btn code\n{\n\tfont-size: 10px;\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', monospace);\n}\n\n/* ---- Add segment button ---- */\n.pict-mde-add-segment\n{\n\tmargin-top: 6px;\n\tpadding-left: 30px;\n}\n.pict-mde-btn-add\n{\n\tdisplay: block;\n\twidth: 100%;\n\tpadding: 7px;\n\tborder: 2px dashed var(--theme-color-border-default, #D0D0D0);\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcolor: var(--theme-color-text-muted, #999);\n\tfont-size: 12px;\n\tfont-weight: 600;\n\tcursor: pointer;\n\ttransition: all 0.15s ease;\n}\n.pict-mde-btn-add:hover\n{\n\tborder-color: var(--theme-color-brand-primary, #4A90D9);\n\tcolor: var(--theme-color-brand-primary, #4A90D9);\n\tbackground: rgba(74, 144, 217, 0.04);\n}\n\n/* ---- Image drag-over indicator ---- */\n.pict-mde-segment-editor.pict-mde-image-dragover\n{\n\toutline: 2px dashed var(--theme-color-brand-primary, #4A90D9);\n\toutline-offset: -2px;\n}\n\n/* ---- Drag-in-progress: prevent CodeMirror from intercepting drop events ---- */\n.pict-mde.pict-mde-dragging .pict-mde-segment-editor\n{\n\tpointer-events: none;\n}\n\n/* ---- Drop target indicators for drag reorder ---- */\n.pict-mde-segment.pict-mde-drag-over-top\n{\n\tbox-shadow: 0 -2px 0 0 var(--theme-color-brand-primary, #4A90D9);\n}\n.pict-mde-segment.pict-mde-drag-over-bottom\n{\n\tbox-shadow: 0 2px 0 0 var(--theme-color-brand-primary, #4A90D9);\n}\n\n/* ---- CodeMirror overrides inside segments ---- */\n.pict-mde-segment-editor .cm-editor\n{\n\tborder: none;\n}\n.pict-mde-segment-editor .cm-editor .cm-scroller\n{\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.6;\n}\n.pict-mde-segment-editor .cm-editor.cm-focused\n{\n\toutline: none;\n}\n.pict-mde-segment-editor .cm-editor .cm-content\n{\n\tpadding: 8px 12px;\n\tmin-height: 36px;\n}\n.pict-mde-segment-editor .cm-editor .cm-gutters\n{\n\tbackground: var(--theme-color-background-secondary, #F8F8F8);\n\tborder-right: 1px solid var(--theme-color-border-light, #E8E8E8);\n\tcolor: var(--theme-color-text-muted, #BBB);\n}\n\n/* ---- Collapsed data URI widget ---- */\n.pict-mde-data-uri-collapsed\n{\n\tdisplay: inline;\n\tbackground: var(--theme-color-background-tertiary, #F0F0F0);\n\tcolor: var(--theme-color-text-muted, #888);\n\tfont-size: 11px;\n\tpadding: 1px 4px;\n\tborder-radius: 3px;\n\tborder: 1px solid var(--theme-color-border-default, #E0E0E0);\n\tfont-family: var(--theme-typography-family-mono, 'SFMono-Regular', 'SF Mono', 'Menlo', monospace);\n\tcursor: default;\n\twhite-space: nowrap;\n}\n\n/* ---- Line number / controls toggle: gutters hidden by default ---- */\n.pict-mde .cm-editor .cm-gutters\n{\n\tdisplay: none;\n}\n.pict-mde.pict-mde-controls-on .cm-editor .cm-gutters\n{\n\tdisplay: flex;\n}\n\n/* ============================================\n RESPONSIVE: Tablet / Phone (max-width: 768px)\n ============================================ */\n@media (max-width: 768px)\n{\n\t/* Prevent any horizontal overflow in the editor */\n\t.pict-mde\n\t{\n\t\toverflow-x: hidden;\n\t\tmax-width: 100%;\n\t}\n\n\t/* Reduce the left controls column width */\n\t.pict-mde-left-controls\n\t{\n\t\tflex: 0 0 16px;\n\t}\n\t.pict-mde-left-btn\n\t{\n\t\twidth: 16px;\n\t\theight: 18px;\n\t\tfont-size: 10px;\n\t}\n\n\t/* Make left-side buttons always visible on touch (no hover) */\n\t.pict-mde-left-btn\n\t{\n\t\topacity: 0.6;\n\t}\n\n\t/* Narrow the drag handle */\n\t.pict-mde-drag-handle\n\t{\n\t\tflex: 0 0 5px;\n\t}\n\n\t/* Shrink the right sidebar column */\n\t.pict-mde-sidebar\n\t{\n\t\tflex: 0 0 24px;\n\t}\n\t.pict-mde-sidebar-btn\n\t{\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\tfont-size: 11px;\n\t}\n\n\t/* Make right sidebar buttons always visible (touch devices) */\n\t.pict-mde-quadrant-tr,\n\t.pict-mde-quadrant-br\n\t{\n\t\topacity: 0.7;\n\t}\n\t.pict-mde-segment.pict-mde-active .pict-mde-quadrant-tr,\n\t.pict-mde-segment.pict-mde-active .pict-mde-quadrant-br\n\t{\n\t\topacity: 1;\n\t}\n\n\t/* Reduce CodeMirror content padding */\n\t.pict-mde-segment-editor .cm-editor .cm-content\n\t{\n\t\tpadding: 6px 6px;\n\t}\n\n\t/* Reduce font size slightly for more content on screen */\n\t.pict-mde-segment-editor .cm-editor .cm-scroller\n\t{\n\t\tfont-size: 13px;\n\t}\n\n\t/* Add segment button: reduce left margin */\n\t.pict-mde-add-segment\n\t{\n\t\tpadding-left: 21px;\n\t}\n\n\t/* Side-by-side: fall back to vertical stacking on narrow screens */\n\t.pict-mde.pict-mde-preview-side .pict-mde-segment-body\n\t{\n\t\tflex-direction: column;\n\t}\n\t.pict-mde.pict-mde-preview-side .pict-mde-preview-pane\n\t{\n\t\tborder-left: none;\n\t\tborder-top: 1px solid var(--theme-color-border-light, #EDEDED);\n\t}\n\n\t/* Tab bar: smaller on tablet */\n\t.pict-mde-tab\n\t{\n\t\tpadding: 3px 8px;\n\t\tfont-size: 11px;\n\t}\n\n\t/* Rich preview: less padding */\n\t.pict-mde-rich-preview .pict-content\n\t{\n\t\tpadding: 8px;\n\t\tfont-size: 12px;\n\t}\n\n\t/* Image previews: smaller max dimensions */\n\t.pict-mde-image-preview img\n\t{\n\t\tmax-width: 120px;\n\t\tmax-height: 100px;\n\t}\n\n\t/* Rendered view: less padding */\n\t.pict-mde-rendered-view\n\t{\n\t\tpadding: 10px 8px;\n\t}\n}\n\n/* ============================================\n RESPONSIVE: Small phone (max-width: 480px)\n ============================================ */\n@media (max-width: 480px)\n{\n\t/* Wrap segment so left controls flow to the top as a horizontal bar */\n\t.pict-mde-segment\n\t{\n\t\tflex-wrap: wrap;\n\t}\n\n\t/* Left controls become a horizontal toolbar at the top of the segment */\n\t.pict-mde-left-controls\n\t{\n\t\tflex: 0 0 100%;\n\t\tflex-direction: row;\n\t\tjustify-content: flex-start;\n\t\tgap: 2px;\n\t\tpadding: 3px 4px;\n\t\torder: -1;\n\t\tbackground: var(--theme-color-background-secondary, #F5F5F5);\n\t\tborder-bottom: 1px solid var(--theme-color-border-light, #EDEDED);\n\t}\n\t.pict-mde-left-btn\n\t{\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tfont-size: 12px;\n\t\topacity: 0.7;\n\t}\n\n\t/* Left quadrants flow horizontally */\n\t.pict-mde-quadrant-tl,\n\t.pict-mde-quadrant-bl\n\t{\n\t\tflex-direction: row;\n\t\tgap: 2px;\n\t\tposition: static;\n\t}\n\n\t/* Segment body: explicit basis so it fills the wrapped row */\n\t.pict-mde-segment-body\n\t{\n\t\tflex: 1 1 calc(100% - 20px);\n\t}\n\n\t/* Hide drag handle on very small screens */\n\t.pict-mde-drag-handle\n\t{\n\t\tdisplay: none;\n\t}\n\n\t/* Right sidebar: further shrink */\n\t.pict-mde-sidebar\n\t{\n\t\tflex: 0 0 20px;\n\t}\n\t.pict-mde-sidebar-btn\n\t{\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tfont-size: 10px;\n\t}\n\n\t/* Add segment: no left offset since controls are at top */\n\t.pict-mde-add-segment\n\t{\n\t\tpadding-left: 0;\n\t}\n\n\t/* Even tighter CodeMirror padding */\n\t.pict-mde-segment-editor .cm-editor .cm-content\n\t{\n\t\tpadding: 4px 4px;\n\t}\n}\n"}},{}],28:[function(t,e,i){const n=t("pict-view"),r=t("pict-section-content"),o=t("./Pict-Section-MarkdownEditor-DefaultConfiguration.js"),a=t("./Pict-MDE-Formatting.js"),s=t("./Pict-MDE-ImageHandling.js"),c=t("./Pict-MDE-DragAndReorder.js"),l=t("./Pict-MDE-RichPreview.js"),p=t("./Pict-MDE-CodeMirror.js");e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},o,e),i),this.initialRenderComplete=!1,this._codeMirrorModules=null,this._segmentEditors={},this._segmentCounter=0,this._viewCallIdentifier=!1,this._activeSegmentIndex=-1,this._dragSourceIndex=-1,this._controlsVisible=!0,this._previewMode=this.options.DefaultPreviewMode||"off",this._lastPreviewLayout="bottom",this._segmentTabStates={},this._hiddenPreviewSegments={},this._imagePreviewTimers={},this._richPreviewTimers={},this._richPreviewGenerations={},this._contentProvider=null,this._renderedViewActive=!1,this._renderedViewGeneration=0,a.attach(this),s.attach(this),c.attach(this),l.attach(this),p.attach(this)}onBeforeInitialize(){return super.onBeforeInitialize(),this.targetElement=!1,super.onBeforeInitialize()}connectCodeMirrorModules(t){if(!t||"object"!=typeof t||"function"!=typeof t.EditorView||"function"!=typeof t.EditorState)return"undefined"!=typeof window&&window.CodeMirrorModules&&"function"==typeof window.CodeMirrorModules.EditorView?(this.log.trace("PICT-MarkdownEditor Found CodeMirror modules on window.CodeMirrorModules."),void(this._codeMirrorModules=window.CodeMirrorModules)):(this.log.error("PICT-MarkdownEditor No CodeMirror modules found. Provide them via connectCodeMirrorModules() or set window.CodeMirrorModules."),!1);this._codeMirrorModules=t}onAfterRender(t){return this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),this.pict.CSSMap.injectCSS(),super.onAfterRender(t)}onAfterInitialRender(){if(this._codeMirrorModules||this.connectCodeMirrorModules(),!this._codeMirrorModules)return this.log.error("PICT-MarkdownEditor Cannot initialize; no CodeMirror modules available."),!1;if(this.options.EnableRichPreview){let t=r.default_configuration;t&&t.CSS&&this.pict.CSSMap.addCSS("Pict-Content-View",t.CSS)}let t=this.services.ContentAssignment.getElement(this.options.TargetElementAddress);if(!t||t.length<1)return this.log.error("PICT-MarkdownEditor Could not find target element [".concat(this.options.TargetElementAddress,"]!")),this.targetElement=!1,!1;this.targetElement=t[0],this._viewCallIdentifier=this._resolveViewCallIdentifier(),this._buildEditorUI()}_resolveViewCallIdentifier(){let t=this.pict.views;for(let e in t)if(t[e]===this)return"_Pict.views['".concat(e,"']");return"_Pict.servicesMap.PictView['".concat(this.Hash,"']")}_getContainerElement(){if(this.targetElement){let t=this.targetElement.querySelector(".pict-mde");if(t)return t}return this.targetElement||null}_resolveImageURL(t){if(!t||!this.options.ImageBaseURL)return t;if(t.startsWith("/")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:"))return t;let e=this.options.ImageBaseURL;return e&&!e.endsWith("/")&&(e+="/"),e+t}_buildEditorUI(){let t=this._getContainerElement();t&&!t.classList.contains("pict-mde")&&t.classList.add("pict-mde");for(let t in this._segmentEditors)this._segmentEditors[t]&&this._segmentEditors[t].destroy();t.innerHTML="",t.classList.remove("pict-mde-preview-off","pict-mde-preview-bottom","pict-mde-preview-side","pict-mde-preview-tabbed","pict-mde-previews-hidden"),t.classList.add("pict-mde-preview-"+this._previewMode),this._controlsVisible?t.classList.add("pict-mde-controls-on"):t.classList.add("pict-mde-controls-hidden");let e=this._getSegmentsFromData();e&&0!==e.length||(e=[{Content:""}],this._setSegmentsToData(e)),this._segmentCounter=0,this._segmentEditors={};for(let i=0;i<e.length;i++)this._renderSegment(t,i,e[i].Content||"");this._renderAddButton(t)}_renderSegment(t,e,i){let n=this._segmentCounter++,r={SegmentIndex:n,SegmentDisplayIndex:e+1,ViewIdentifier:this._viewCallIdentifier},o=this.pict.parseTemplateByHash("MarkdownEditor-Segment",r),a=document.createElement("div");a.innerHTML=o;let s=a.firstElementChild;if(t.appendChild(s),this._buildQuadrantButtons(s,n),this._hiddenPreviewSegments[e]&&s.classList.add("pict-mde-preview-hidden"),"tabbed"===this._previewMode&&"preview"===this._segmentTabStates[e]){s.classList.add("pict-mde-tab-showing-preview");let t=s.querySelector(".pict-mde-tab-bar");if(t){let e=t.querySelector('[data-tab="editor"]'),i=t.querySelector('[data-tab="preview"]');e&&e.classList.remove("pict-mde-tab-active"),i&&i.classList.add("pict-mde-tab-active")}}this._wireSegmentDragEvents(s,n);let c=document.getElementById("PictMDE-SegmentEditor-".concat(n));c&&(this._createEditorInContainer(c,n,i),this._wireImageDragEvents(c,n),i&&(this._updateImagePreviews(n),this._updateRichPreviews(n)))}_buildQuadrantButtons(t,e){let i=[{key:"ButtonsTL",selector:".pict-mde-quadrant-tl",baseClass:"pict-mde-left-btn"},{key:"ButtonsBL",selector:".pict-mde-quadrant-bl",baseClass:"pict-mde-left-btn"},{key:"ButtonsTR",selector:".pict-mde-quadrant-tr",baseClass:"pict-mde-sidebar-btn"},{key:"ButtonsBR",selector:".pict-mde-quadrant-br",baseClass:"pict-mde-sidebar-btn"}],n=this;for(let r=0;r<i.length;r++){let o=i[r],a=t.querySelector(o.selector);if(!a)continue;let s=this.options[o.key];if(Array.isArray(s))for(let t=0;t<s.length;t++){let i=s[t],r=document.createElement("button");r.type="button",r.className=o.baseClass,i.Class&&(r.className+=" "+i.Class);let c=i.HTML||"";c&&"function"==typeof this.pict.parseTemplate&&(c=this.pict.parseTemplate(c,{})),r.innerHTML=c,r.title=i.Title||"";let l=i.Action||"",p=l,d=null,u=l.indexOf(":");u>=0&&(p=l.substring(0,u),d=l.substring(u+1)),function(t,e,i){r.addEventListener("click",()=>{"function"==typeof n[t]?null!==e?n[t](i,e):n[t](i):n.log.warn('PICT-MarkdownEditor _buildQuadrantButtons: method "'.concat(t,'" not found.'))})}(p,d,e),a.appendChild(r)}}}customConfigureExtensions(t,e){return t}_renderAddButton(t){let e={ViewIdentifier:this._viewCallIdentifier},i=this.pict.parseTemplateByHash("MarkdownEditor-AddSegment",e),n=document.createElement("div");n.innerHTML=i;let r=n.firstElementChild;t.appendChild(r)}onImageUpload(t,e,i){return!1}toggleControls(t,e){let i=e;"boolean"==typeof t&&(i=t),this._controlsVisible="boolean"==typeof i?i:!this._controlsVisible;let n=this._getContainerElement();n&&(this._controlsVisible?(n.classList.add("pict-mde-controls-on"),n.classList.remove("pict-mde-controls-hidden")):(n.classList.remove("pict-mde-controls-on"),n.classList.add("pict-mde-controls-hidden")))}toggleLineNumbers(t){this.toggleControls(t)}togglePreview(t){"boolean"==typeof t?t?this.setPreviewMode(this._lastPreviewLayout||"bottom"):this.setPreviewMode("off"):"off"===this._previewMode?this.setPreviewMode(this._lastPreviewLayout||"bottom"):this.setPreviewMode("off")}setPreviewMode(t){if(["off","bottom","side","tabbed"].indexOf(t)<0)return void this.log.warn('PICT-MarkdownEditor setPreviewMode: unknown mode "'.concat(t,'".'));"off"!==t&&(this._lastPreviewLayout=t),this._previewMode=t;let e=this._getContainerElement();if(e&&(e.classList.remove("pict-mde-preview-off","pict-mde-preview-bottom","pict-mde-preview-side","pict-mde-preview-tabbed","pict-mde-previews-hidden"),e.classList.add("pict-mde-preview-"+t)),"off"!==t){let t=this._getOrderedSegmentIndices();for(let e=0;e<t.length;e++)this._updateRichPreviews(t[e]),this._updateImagePreviews(t[e])}}cyclePreviewMode(t){let e=["off","bottom","side","tabbed"],i=(e.indexOf(this._previewMode)+1)%e.length;this.setPreviewMode(e[i])}switchSegmentTab(t,e){let i=this._getLogicalIndex(t);if(i<0)return;this._segmentTabStates[i]=e;let n=document.getElementById("PictMDE-Segment-".concat(t));if(!n)return;"preview"===e?(n.classList.add("pict-mde-tab-showing-preview"),this._updateRichPreviews(t),this._updateImagePreviews(t)):n.classList.remove("pict-mde-tab-showing-preview");let r=document.getElementById("PictMDE-TabBar-".concat(t));if(r){let t=r.querySelectorAll(".pict-mde-tab");for(let i=0;i<t.length;i++)t[i].getAttribute("data-tab")===e?t[i].classList.add("pict-mde-tab-active"):t[i].classList.remove("pict-mde-tab-active")}}toggleSegmentPreview(t,e){let i=this._getLogicalIndex(t);if(i<0)return;let n=!!this._hiddenPreviewSegments[i];n="boolean"==typeof e?!e:!n,n?this._hiddenPreviewSegments[i]=!0:delete this._hiddenPreviewSegments[i];let r=document.getElementById("PictMDE-Segment-".concat(t));r&&(n?r.classList.add("pict-mde-preview-hidden"):(r.classList.remove("pict-mde-preview-hidden"),this._updateRichPreviews(t),this._updateImagePreviews(t)))}_getSegmentsFromData(){if(!this.options.ContentDataAddress)return null;const t={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};let e=this.fable.manifest.getValueByHash(t,this.options.ContentDataAddress);return Array.isArray(e)?e:null}_setSegmentsToData(t){if(!this.options.ContentDataAddress)return;const e={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};this.fable.manifest.setValueByHash(e,this.options.ContentDataAddress,t)}_onSegmentContentChange(t,e){let i=this._getLogicalIndex(t);if(i<0)return;let n=this._getSegmentsFromData();if(!n)return;i<n.length&&(n[i].Content=e),this.onContentChange(i,e);let r=this;this._imagePreviewTimers[t]&&clearTimeout(this._imagePreviewTimers[t]),this._imagePreviewTimers[t]=setTimeout(()=>{r._updateImagePreviews(t),delete r._imagePreviewTimers[t]},500),this._richPreviewTimers[t]&&clearTimeout(this._richPreviewTimers[t]),this._richPreviewTimers[t]=setTimeout(()=>{r._updateRichPreviews(t),delete r._richPreviewTimers[t]},500)}onContentChange(t,e){}_getLogicalIndex(t){let e=this._getContainerElement();if(!e)return-1;let i=e.querySelectorAll(".pict-mde-segment");for(let e=0;e<i.length;e++){if(parseInt(i[e].getAttribute("data-segment-index"),10)===t)return e}return-1}_getOrderedSegmentIndices(){let t=this._getContainerElement();if(!t)return[];let e=t.querySelectorAll(".pict-mde-segment"),i=[];for(let t=0;t<e.length;t++)i.push(parseInt(e[t].getAttribute("data-segment-index"),10));return i}addSegment(t){let e="string"==typeof t?t:"",i=this._getSegmentsFromData();i||(i=[]),i.push({Content:e}),this._setSegmentsToData(i),this._buildEditorUI()}removeSegment(t){let e=this._getLogicalIndex(t);if(e<0)return void this.log.warn("PICT-MarkdownEditor removeSegment: segment index ".concat(t," not found."));let i=this._getSegmentsFromData();if(!i||i.length<=1)return void this.log.warn("PICT-MarkdownEditor removeSegment: cannot remove the last segment.");this._segmentEditors[t]&&(this._segmentEditors[t].destroy(),delete this._segmentEditors[t]),i.splice(e,1),this._setSegmentsToData(i);let n={};for(let t in this._hiddenPreviewSegments){let i=parseInt(t,10);i<e?n[i]=!0:i>e&&(n[i-1]=!0)}this._hiddenPreviewSegments=n;let r={};for(let t in this._segmentTabStates){let i=parseInt(t,10);i<e?r[i]=this._segmentTabStates[t]:i>e&&(r[i-1]=this._segmentTabStates[t])}this._segmentTabStates=r,this._buildEditorUI()}moveSegmentUp(t){let e=this._getLogicalIndex(t);if(e<=0)return;this._marshalAllEditorsToData();let i=this._getSegmentsFromData();if(!i)return;let n=i[e];i[e]=i[e-1],i[e-1]=n,this._swapHiddenPreviewState(e,e-1),this._swapSegmentTabStates(e,e-1),this._buildEditorUI()}moveSegmentDown(t){let e=this._getLogicalIndex(t),i=this._getSegmentsFromData();if(!i||e<0||e>=i.length-1)return;this._marshalAllEditorsToData();let n=i[e];i[e]=i[e+1],i[e+1]=n,this._swapHiddenPreviewState(e,e+1),this._swapSegmentTabStates(e,e+1),this._buildEditorUI()}getSegmentContent(t){let e=this._getOrderedSegmentIndices();if(t<0||t>=e.length)return"";let i=e[t],n=this._segmentEditors[i];return n?n.state.doc.toString():""}setSegmentContent(t,e){let i=this._getOrderedSegmentIndices();if(t<0||t>=i.length)return void this.log.warn("PICT-MarkdownEditor setSegmentContent: index ".concat(t," out of range."));let n=i[t],r=this._segmentEditors[n];r&&r.dispatch({changes:{from:0,to:r.state.doc.length,insert:e}})}getSegmentCount(){return this._getOrderedSegmentIndices().length}getAllContent(t){let e="string"==typeof t?t:"\n\n",i=this._getOrderedSegmentIndices(),n=[];for(let t=0;t<i.length;t++){let e=this._segmentEditors[i[t]];e&&n.push(e.state.doc.toString())}return n.join(e)}_marshalAllEditorsToData(){let t=this._getSegmentsFromData();if(!t)return;let e=this._getOrderedSegmentIndices();for(let i=0;i<e.length;i++){let n=this._segmentEditors[e[i]];n&&i<t.length&&(t[i].Content=n.state.doc.toString())}}setReadOnly(t){this.options.ReadOnly=t,this.initialRenderComplete&&(this._marshalAllEditorsToData(),this._buildEditorUI())}marshalToView(){super.marshalToView(),this.initialRenderComplete&&this.options.ContentDataAddress&&this._buildEditorUI()}marshalFromView(){super.marshalFromView(),this._marshalAllEditorsToData()}destroy(){for(let t in this._segmentEditors)this._segmentEditors[t]&&this._segmentEditors[t].destroy();this._segmentEditors={};for(let t in this._richPreviewTimers)clearTimeout(this._richPreviewTimers[t]);this._richPreviewTimers={},this._richPreviewGenerations={},this._segmentTabStates={}}},e.exports.default_configuration=o},{"./Pict-MDE-CodeMirror.js":22,"./Pict-MDE-DragAndReorder.js":23,"./Pict-MDE-Formatting.js":24,"./Pict-MDE-ImageHandling.js":25,"./Pict-MDE-RichPreview.js":26,"./Pict-Section-MarkdownEditor-DefaultConfiguration.js":27,"pict-section-content":14,"pict-view":38}],29:[function(t,e,i){e.exports={RenderOnLoad:!0,GridWidth:"auto",GridRowHeight:40,GridBodyHeight:"auto",GridBodyMinHeight:130,GridColumnMinWidth:50,GridColumnWidthResizable:!0,GridColumnHeightResizable:!1,GridColumnFrozenCount:0,GridColumnFrozenBorderWidth:3,GridScrollX:!0,GridScrollY:!0,GridShowDummyRows:!1,GridDraggableRows:!1,GridSelectionUnit:"cell",DefaultRenderable:"TuiGrid-Wrap",DefaultDestinationAddress:"#TuiGrid-Container-Div",Templates:[{Hash:"TuiGrid-Container",Template:"\x3c!-- TuiGrid-Container Rendering Soon --\x3e"}],Renderables:[{RenderableHash:"TuiGrid-Wrap",TemplateHash:"TuiGrid-Container",DestinationAddress:"#TuiGrid-Container-Div"}],TargetElementAddress:"#TuiGrid-Container-Div",GridDataAddress:!1,GridData:[{idrecord:1,entity:"SampleEntity",name:"Record name 1",description:"description 1"},{idrecord:2,entity:"SampleEntity",name:"Record name 2",description:"description 2"},{idrecord:3,entity:"SampleEntity",name:"Record name 3",description:"description 3"},{idrecord:4,entity:"SampleEntity",name:"Record name 4",description:"description 4"},{idrecord:5,entity:"SampleEntity",name:"Record name 5",description:"description 5"},{idrecord:6,entity:"SampleEntity",name:"Record name 6",description:"description 6"},{idrecord:7,entity:"SampleEntity",name:"Record name 7",description:"description 7"},{idrecord:8,entity:"SampleEntity",name:"Record name 8",description:"description 8"},{idrecord:9,entity:"SampleEntity",name:"Record name 9",description:"description 9"}],ColumnsToSolveOnChange:{},TuiColumnSchema:[{header:"IDRecord",name:"idrecord",PictTriggerSolveOnChange:!0},{header:"Entity",name:"entity",PictTriggerSolveOnChange:!0},{header:"Name",name:"name",editor:"text"},{header:"Description",name:"description",editor:"text"}]}},{}],30:[function(t,e,i){const n=t("pict-view");e.exports=class extends n{constructor(e,i,n){super(e,Object.assign({},t("./Pict-Section-TuiGrid-DefaultConfiguration.json"),i),n),this.services,this.dateFormatter=this.fable.instantiateServiceProviderWithoutRegistration("Dates"),this.initialRenderComplete=!1,this.customFormatters={}}onBeforeInitialize(){return super.onBeforeInitialize(),this._tuiGridPrototype=null,this.tuiGrid=null,this.customHeaders=t("./Pict-TuiGrid-Headers.js"),this.customEditors=t("./Pict-TuiGrid-Editors.js"),this.initializeCustomFormatters(),this.columnSchema=!1,this.targetElementAddress=!1,this.gridData=null,super.onBeforeInitialize()}initializeCustomFormatters(){this.customFormatters.FormatterTwoDigitNumber=t=>{var e;let i=Number.parseFloat(t.value),n=null!==(e=null==t?void 0:t.decimalPrecision)&&void 0!==e?e:2;return isNaN(i)?"":this.fable.Math.roundPrecise(t.value,n)},this.customFormatters.FormatterCurrencyNumber=t=>{var e;let i=null!==(e=null==t?void 0:t.decimalPrecision)&&void 0!==e?e:2;return this.fable.DataFormat.formatterDollars(t.value,i)},this.customFormatters.FormatterRoundedNumber=t=>{var e;let i=Number.parseFloat(t.value),n=null!==(e=null==t?void 0:t.decimalPrecision)&&void 0!==e?e:2;return isNaN(i)?"":this.fable.Math.roundPrecise(t.value,n)},this.customFormatters.FormatterDate=t=>{let e=this.fable.Dates.dayJS.utc(t.value);return t.dateformat?e.format(t.dateformat):e.format()}}connectTuiGridPrototype(t){if(void 0!==t)this._tuiGridPrototype=t;else{if(this.log.trace("PICT-TuiGrid No TuiGrid Prototype defined or explicitly set; looking for it in the window object."),"undefined"==typeof window)return this.log.error("PICT-TuiGrid No TuiGrid Prototype found in window.tuiGrid -- window object unavailable."),!1;if(void 0===window.tui||void 0===window.tui.Grid)return this.log.error("PICT-TuiGrid No TuiGrid Prototype found in window.tuiGrid."),!1;this.log.trace("PICT-TuiGrid Found TuiGrid Prototype in window.tuiGrid."),this.connectTuiGridPrototype(window.tui.Grid)}}preChangeHandler(t){}changeHandler(t){let e=!1;for(let i=0;i<t.changes.length;i++){let n=t.instance.getValue(t.changes[i].rowKey,"entity"),r=t.instance.getValue(t.changes[i].rowKey,"idrecord");this.log.trace("Generic Change Handler for TuiGrid Fired, Entity ".concat(n," IDRecord ").concat(r," setting Column [").concat(t.changes[i].value,"] to new Value [").concat(t.changes[i].value,"]")),this.options.ColumnsToSolveOnChange.hasOwnProperty(t.changes[i].columnName)&&(e=!0)}e&&this.services.PictApplication.solve()}onAfterRender(t){return this.initialRenderComplete||(this.onAfterInitialRender(),this.initialRenderComplete=!0),super.onAfterRender(t)}onAfterInitialRender(){if(this._tuiGridPrototype||this.connectTuiGridPrototype(),this.tuiGrid)return this.log.error("TuiGrid going to ".concat(this.options.TargetElementAddress," is already initialized!")),!1;if(this.options.GridDataAddress){const t={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};let e=this.fable.manifest.getValueByHash(t,this.options.GridDataAddress);"object"!=typeof e?(this.log.error("Address for GridData [".concat(this.options.GridDataAddress,"] did not return an object; it was a ").concat(typeof e,".")),this.gridData=[]):this.gridData=JSON.parse(JSON.stringify(e))}else this.gridData=[];let t=this.services.ContentAssignment.getElement(this.options.TargetElementAddress);if(t.length<1)return this.log.error("Could not find target element [".concat(this.options.TargetElementAddress,"] for TuiGrid! Rendering won't function properly.")),this.targetElement=!1,!1;this.targetElement=t[0],this.columnSchema=this.options.TuiColumnSchema;for(let t=0;t<this.columnSchema.length;t++){let e=this.columnSchema[t];if(e.PictTriggerSolveOnChange&&(this.options.ColumnsToSolveOnChange[e.name]=e),e.hasOwnProperty("formatter")&&this.customFormatters.hasOwnProperty(e.formatter)&&(e.formatter=this.customFormatters[e.formatter]),e.hasOwnProperty("editor")&&(e.editor.hasOwnProperty("type")&&"string"==typeof e.editor.type&&this.customEditors.hasOwnProperty(e.editor.type)&&(e.editor.type=this.customEditors[e.editor.type]),e.editor.hasOwnProperty("options")&&"object"==typeof e.editor.options&&e.editor.options.hasOwnProperty("listItems")&&"string"==typeof e.editor.options.listItems)){const t={Fable:this.fable,Pict:this.fable,AppData:this.AppData,Bundle:this.Bundle,Options:this.options};let i=this.fable.manifest.getValueByHash(t,e.editor.options.listItems);"object"==typeof i?e.editor.options.listItems=i:(this.log.warn("Pict TuiGrid for column [".concat(e.name,"] had [").concat(e.editor.options.listItems,"] as a listItems address, but it didn't return an object. It was a [").concat(typeof i,"]. Setting to empty list.")),e.editor.options.listItems=[])}}this.gridSettings={data:this.gridData,el:this.targetElement,columns:this.columnSchema,usageStatistics:!1,scrollY:this.options.GridScrollY,columnOptions:{resizable:this.options.GridColumnWidthResizable}},this.customConfigureGridSettings();let e=this._tuiGridPrototype;this.tuiGrid=new e(this.gridSettings),this.tuiGrid.on("beforeChange",t=>{const e=t;this.preChangeHandler(e)}),this.tuiGrid.on("afterChange",t=>{const e=t;this.changeHandler(e)})}customConfigureGridSettings(){}SetGridValue(t,e,i,n){if(void 0===i)return void console.log("Could not set grid value [".concat(t,"] = [").concat(e,"] looked up by [").concat(n,"]::[").concat(i,"]. No valid lookup value!"));if(!this.tuiGrid)return void this.log.warn("Could not set grid value [".concat(t,"] = [").concat(e,"] looked up by [").concat(n,"]::[").concat(i,"]. No valid grid!"));const r=this.tuiGrid.getData();for(let o=0;o<r.length;o++){r[o][n]==i&&this.tuiGrid.setValue(o,t,e)}}SetGridValueByRowKey(t,e,i){return void 0===i?(this.log.error("Could not set grid value [".concat(t,"] = [").concat(e,"] looked up by row key [").concat(i,"]. No valid row key!")),!1):this.tuiGrid?(this.tuiGrid.setValue(i,t,e),!0):(this.log.warn("Could not set grid value [".concat(t,"] = [").concat(e,"] looked up by row key [").concat(i,"]. No valid grid!")),!1)}},e.exports.default_configuration=t("./Pict-Section-TuiGrid-DefaultConfiguration.json")},{"./Pict-Section-TuiGrid-DefaultConfiguration.json":29,"./Pict-TuiGrid-Editors.js":33,"./Pict-TuiGrid-Headers.js":34,"pict-view":38}],31:[function(t,e,i){e.exports=class{constructor(t){const e=document.createElement("input"),i=t.columnInfo.editor.options.decimalPrecision?t.columnInfo.editor.options.decimalPrecision:3;e.type="number",e.value=String(t.value),e.oninput=t=>{if(t.target instanceof HTMLInputElement){const e=parseFloat(t.target.value).toFixed(i).toString();e.length<parseFloat(t.target.value).toString().length&&(t.target.value=e)}},this.Element=e}getElement(){return this.Element}getValue(){return this.Element.value}mounted(){this.Element.select()}}},{}],32:[function(t,e,i){e.exports=class{constructor(t){const e=document.createElement("input");e.type="text",e.value=String(t.value),e.placeholder=t.columnInfo.editor.options.placeholder||"",e.pattern=t.columnInfo.editor.options.pattern||"",e.minLength=t.columnInfo.editor.options.minLength||"",e.maxLength=t.columnInfo.editor.options.maxLength||"",e.required=t.columnInfo.editor.options.required||"",this.Element=e}getElement(){return this.Element}getValue(){return this.Element.value}mounted(){this.Element.select()}}},{}],33:[function(t,e,i){e.exports={EditorNumber:t("./Pict-TuiGrid-Editor-Number.js"),EditorText:t("./Pict-TuiGrid-Editor-Text.js")}},{"./Pict-TuiGrid-Editor-Number.js":31,"./Pict-TuiGrid-Editor-Text.js":32}],34:[function(t,e,i){e.exports={CustomColumnHeaderNone:class{constructor(){let t=document.createElement("input");t.type="hidden",t.value="",this.Element=t}getElement(){return this.Element}render(){}}}},{}],35:[function(t,e,i){e.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:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{"fable-serviceproviderbase":"^3.0.19"}}},{}],36:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../package.json");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.fable,this.pict=this.fable,this.serviceType="PictTemplate",this._Package=r}render(t,e,i,n,r){return""}renderAsync(t,e,i,n,r,o){return i(null,this.render(t,e,n,r,o))}addPattern(t,e){return this.pict.MetaTemplate.addPatternBoth(t,e,this.render,this.renderAsync,this)}resolveStateFromAddress(t,e,i,n,r,o){return this.pict.resolveStateFromAddress(t,e,i,n,r,o)}},e.exports.template_hash="Default"},{"../package.json":35,"fable-serviceproviderbase":3}],37:[function(t,e,i){e.exports={name:"pict-view",version:"1.0.68",description:"Pict View Base Class",main:"source/Pict-View.js",scripts:{test:"npx quack test",tests:"npx quack test -g",start:"node source/Pict-View.js",coverage:"npx quack coverage",build:"npx quack build","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-view-image:local","docker-dev-run":'docker run -it -d --name pict-view-dev -p 30001:8080 -p 38086:8086 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-view" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-view-image:local',"docker-dev-shell":"docker exec -it pict-view-dev /bin/bash",types:"tsc -p .",lint:"eslint source/**"},types:"types/source/Pict-View.d.ts",repository:{type:"git",url:"git+https://github.com/stevenvelozo/pict-view.git"},author:"steven velozo <steven@velozo.com>",license:"MIT",bugs:{url:"https://github.com/stevenvelozo/pict-view/issues"},homepage:"https://github.com/stevenvelozo/pict-view#readme",devDependencies:{"@eslint/js":"^9.39.1","browser-env":"^3.3.0",eslint:"^9.39.1",pict:"^1.0.363",quackage:"^1.0.65",typescript:"^5.9.3"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]},dependencies:{fable:"^3.1.67","fable-serviceproviderbase":"^3.0.19"}}},{}],38:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../package.json"),o={DefaultRenderable:!1,DefaultDestinationAddress:!1,DefaultTemplateRecordAddress:!1,ViewIdentifier:!1,AutoInitialize:!0,AutoInitializeOrdinal:0,AutoRender:!0,AutoRenderOrdinal:0,AutoSolveWithApp:!0,AutoSolveOrdinal:0,CSSHash:!1,CSS:!1,CSSProvider:!1,CSSPriority:500,Templates:[],DefaultTemplates:[],Renderables:[],Manifests:{}};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(o)),e),i),this.fable,this.options,this.UUID,this.Hash,this.log;const n=this.Hash===this.UUID;this.UUID="V-".concat(this.UUID),n&&(this.Hash=this.UUID),this.options.ViewIdentifier||(this.options.ViewIdentifier="AutoViewID-".concat(this.fable.getUUID())),this.serviceType="PictView",this._Package=r,this.pict=this.fable,this.AppData=this.pict.AppData,this.Bundle=this.pict.Bundle,this.initializeTimestamp=!1,this.lastSolvedTimestamp=!1,this.lastRenderedTimestamp=!1,this.lastMarshalFromViewTimestamp=!1,this.lastMarshalToViewTimestamp=!1,this.pict.instantiateServiceProviderIfNotExists("TransactionTracking");for(let t=0;t<this.options.Templates.length;t++){let e=this.options.Templates[t];"Hash"in e&&"Template"in e?(e.Source||(e.Source="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," options object.")),this.pict.TemplateProvider.addTemplate(e.Hash,e.Template,e.Source)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Template ").concat(t," in the options array."),e)}for(let t=0;t<this.options.DefaultTemplates.length;t++){let e=this.options.DefaultTemplates[t];"Postfix"in e&&"Template"in e?(e.Source||(e.Source="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," options object.")),this.pict.TemplateProvider.addDefaultTemplate(e.Prefix,e.Postfix,e.Template,e.Source)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Default Template ").concat(t," in the options array."),e)}if(this.options.CSS){let t=this.options.CSSHash?this.options.CSSHash:"View-".concat(this.options.ViewIdentifier),e=this.options.CSSProvider?this.options.CSSProvider:t;this.pict.CSSMap.addCSS(t,this.options.CSS,e,this.options.CSSPriority)}this.renderables={};for(let t=0;t<this.options.Renderables.length;t++){let e=this.options.Renderables[t];this.addRenderable(e)}}addRenderable(t,e,i,n,r){let o;if("object"==typeof t)o=t;else{o={RenderableHash:t,TemplateHash:e,DefaultTemplateRecordAddress:i,ContentDestinationAddress:n,RenderMethod:"string"!=typeof r?r:"replace"}}"string"!=typeof o.RenderableHash||"string"!=typeof o.TemplateHash?this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not load Renderable; RenderableHash or TemplateHash are invalid."),o):(this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," adding renderable [").concat(o.RenderableHash,"] pointed to template ").concat(o.TemplateHash,".")),this.renderables[o.RenderableHash]=o)}onBeforeInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeInitialize:")),!0}onBeforeInitializeAsync(t){return this.onBeforeInitialize(),t()}onInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onInitialize:")),!0}onInitializeAsync(t){return this.onInitialize(),t()}initialize(){return this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialize:")),this.initializeTimestamp?(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialize called but initialization is already completed. Aborting.")),!1):(this.onBeforeInitialize(),this.onInitialize(),this.onAfterInitialize(),this.initializeTimestamp=this.pict.log.getTimeStamp(),!0)}initializeAsync(t){if(this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initializeAsync:")),this.initializeTimestamp)return this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," async initialize called but initialization is already completed. Aborting.")),t();{let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate");this.pict.LogNoisiness>0&&this.log.info("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," beginning initialization...")),e.anticipate(this.onBeforeInitializeAsync.bind(this)),e.anticipate(this.onInitializeAsync.bind(this)),e.anticipate(this.onAfterInitializeAsync.bind(this)),e.wait(e=>(e&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialization failed: ").concat(e.message||e),{stack:e.stack}),this.initializeTimestamp=this.pict.log.getTimeStamp(),this.pict.LogNoisiness>0&&this.log.info("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," initialization complete.")),t()))}}onAfterInitialize(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterInitialize:")),!0}onAfterInitializeAsync(t){return this.onAfterInitialize(),t()}onBeforeRender(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeRender:")),!0}onBeforeRenderAsync(t,e){return this.onBeforeRender(e),t()}onBeforeProject(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeProject:")),!0}onBeforeProjectAsync(t,e){return this.onBeforeProject(e),t()}buildRenderOptions(t,e,i){let n={Valid:!0};return n.RenderableHash="string"==typeof t?t:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable,n.RenderableHash||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not find a suitable RenderableHash ").concat(n.RenderableHash," (param ").concat(t,"because it is not a valid renderable.")),n.Valid=!1),n.Renderable=this.renderables[n.RenderableHash],n.Renderable||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(n.RenderableHash," (param ").concat(t,") because it does not exist.")),n.Valid=!1),n.DestinationAddress="string"==typeof e?e:"string"==typeof n.Renderable.ContentDestinationAddress?n.Renderable.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress&&this.options.DefaultDestinationAddress,n.DestinationAddress||(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(n.RenderableHash," (param ").concat(t,") because it does not have a valid destination address (param ").concat(e,").")),n.Valid=!1),"object"==typeof i?(n.RecordAddress="Passed in as object",n.Record=i):(n.RecordAddress="string"==typeof i?i:"string"==typeof n.Renderable.DefaultTemplateRecordAddress?n.Renderable.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,n.Record="string"==typeof n.RecordAddress?this.pict.DataProvider.getDataByAddress(n.RecordAddress):void 0),n}assignRenderContent(t,e,i){return this.pict.ContentAssignment.projectContent(t.RenderMethod,e,i,t.TestAddress)}render(t,e,i,n){return this.renderWithScope(this,t,e,i,n)}renderWithScope(t,e,i,n,r){let o,a,s,c="string"==typeof e?e:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable;return c?("__Virtual"==c?o={RenderableHash:"__Virtual",TemplateHash:this.renderables[this.options.DefaultRenderable].TemplateHash,ContentDestinationAddress:"string"==typeof i?i:"string"==typeof o.ContentDestinationAddress?o.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null,RenderMethod:"virtual-assignment",TransactionHash:r&&r.TransactionHash,RootRenderableViewHash:r&&r.RootRenderableViewHash}:(o=Object.assign({},this.renderables[c]),o.ContentDestinationAddress="string"==typeof i?i:"string"==typeof o.ContentDestinationAddress?o.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null),o.TransactionHash||(o.TransactionHash="ViewRender-V-".concat(this.options.ViewIdentifier,"-R-").concat(c,"-U-").concat(this.pict.getUUID()),o.RootRenderableViewHash=this.Hash,this.pict.TransactionTracking.registerTransaction(o.TransactionHash)),o?o.ContentDestinationAddress?("object"==typeof n?(s=n,a="Passed in as object"):(a="string"==typeof n?n:"string"==typeof o.DefaultTemplateRecordAddress?o.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,s="string"==typeof a?this.pict.DataProvider.getDataByAddress(a):void 0),this.onBeforeRender(o),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] Renderable[").concat(c,"] Destination[").concat(o.ContentDestinationAddress,"] TemplateRecordAddress[").concat(a,"] render:")),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Beginning Render of Renderable[").concat(c,"] to Destination [").concat(o.ContentDestinationAddress,"]...")),o.Content=this.pict.parseTemplateByHash(o.TemplateHash,s,null,[this],t,{RootRenderable:"object"==typeof r?r:o}),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Assigning Renderable[").concat(c,"] content length ").concat(o.Content.length," to Destination [").concat(o.ContentDestinationAddress,"] using render method [").concat(o.RenderMethod,"].")),this.onBeforeProject(o),this.onProject(o),"virtual-assignment"!==o.RenderMethod&&(this.onAfterProject(o),this.onAfterRender(o)),!0):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it does not have a valid destination address.")),!1):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it does not exist.")),!1)):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(c," (param ").concat(e,") because it is not a valid renderable.")),!1)}renderAsync(t,e,i,n,r){return this.renderWithScopeAsync(this,t,e,i,n,r)}renderWithScopeAsync(t,e,i,n,r,o){let a,s,c,l="string"==typeof e?e:"string"==typeof this.options.DefaultRenderable&&this.options.DefaultRenderable,p="function"==typeof o?o:"function"==typeof n?n:"function"==typeof i?i:"function"==typeof e?e:"function"==typeof r?r:null;if(p||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),p=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," renderAsync Auto Callback Error: ").concat(t),t)}),!l)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not asynchronously render ").concat(l," (param ").concat(e,"because it is not a valid renderable.")),p(new Error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not asynchronously render ").concat(l," (param ").concat(e,"because it is not a valid renderable.")));if("__Virtual"==l?a={RenderableHash:"__Virtual",TemplateHash:this.renderables[this.options.DefaultRenderable].TemplateHash,ContentDestinationAddress:"string"==typeof i?i:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null,RenderMethod:"virtual-assignment",TransactionHash:r&&"function"!=typeof r&&r.TransactionHash,RootRenderableViewHash:r&&"function"!=typeof r&&r.RootRenderableViewHash}:(a=Object.assign({},this.renderables[l]),a.ContentDestinationAddress="string"==typeof i?i:"string"==typeof a.ContentDestinationAddress?a.ContentDestinationAddress:"string"==typeof this.options.DefaultDestinationAddress?this.options.DefaultDestinationAddress:null),a.TransactionHash||(a.TransactionHash="ViewRender-V-".concat(this.options.ViewIdentifier,"-R-").concat(l,"-U-").concat(this.pict.getUUID()),a.RootRenderableViewHash=this.Hash,this.pict.TransactionTracking.registerTransaction(a.TransactionHash)),!a)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not exist.")),p(new Error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not exist.")));if(!a.ContentDestinationAddress)return this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render ").concat(l," (param ").concat(e,") because it does not have a valid destination address.")),p(new Error("Could not render ".concat(l)));"object"==typeof n?(c=n,s="Passed in as object"):(s="string"==typeof n?n:"string"==typeof a.DefaultTemplateRecordAddress?a.DefaultTemplateRecordAddress:"string"==typeof this.options.DefaultTemplateRecordAddress&&this.options.DefaultTemplateRecordAddress,c="string"==typeof s?this.pict.DataProvider.getDataByAddress(s):void 0),this.pict.LogControlFlow&&this.log.trace("PICT-ControlFlow VIEW [".concat(this.UUID,"]::[").concat(this.Hash,"] Renderable[").concat(l,"] Destination[").concat(a.ContentDestinationAddress,"] TemplateRecordAddress[").concat(s,"] renderAsync:")),this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Beginning Asynchronous Render (callback-style)..."));let d=this.fable.newAnticipate();d.anticipate(t=>{this.onBeforeRenderAsync(t,a)}),d.anticipate(i=>{this.pict.parseTemplateByHash(a.TemplateHash,c,(t,n)=>t?(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render (asynchronously) ").concat(l," (param ").concat(e,") because it did not parse the template."),t),i(t)):(a.Content=n,i()),[this],t,{RootRenderable:"object"==typeof r?r:a})}),d.anticipate(t=>{this.onBeforeProjectAsync(t,a)}),d.anticipate(t=>{this.onProjectAsync(t,a)}),"virtual-assignment"!==a.RenderMethod&&(d.anticipate(t=>{this.onAfterProjectAsync(t,a)}),d.anticipate(t=>{this.onAfterRenderAsync(t,a)})),d.wait(p)}renderDefaultAsync(t){this.renderAsync(t)}basicRender(t,e,i){return this.basicRenderWithScope(this,t,e,i)}basicRenderWithScope(t,e,i,n){let r=this.buildRenderOptions(e,i,n);return r.Valid?(this.assignRenderContent(r.Renderable,r.DestinationAddress,this.pict.parseTemplateByHash(r.Renderable.TemplateHash,r.Record,null,[this],t,{RootRenderable:r.Renderable})),!0):(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not perform a basic render of ").concat(r.RenderableHash," because it is not valid.")),!1)}basicRenderAsync(t,e,i,n){return this.basicRenderWithScopeAsync(this,t,e,i,n)}basicRenderWithScopeAsync(t,e,i,n,r){let o="function"==typeof r?r:"function"==typeof n?n:"function"==typeof i?i:"function"==typeof e?e:null;o||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," basicRenderAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),o=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," basicRenderAsync Auto Callback Error: ").concat(t),t)});const a=this.buildRenderOptions(e,i,n);if(!a.Valid){let t="PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not perform a basic render of ").concat(a.RenderableHash," because it is not valid.");return this.log.error(t),o(new Error(t))}this.pict.parseTemplateByHash(a.Renderable.TemplateHash,a.Record,(t,e)=>t?(this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," could not render (asynchronously) ").concat(a.RenderableHash," because it did not parse the template."),t),o(t)):(this.assignRenderContent(a.Renderable,a.DestinationAddress,e),o()),[this],t,{RootRenderable:a.Renderable})}onProject(t){this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onProject:")),"virtual-assignment"===t.RenderMethod&&this.pict.TransactionTracking.pushToTransactionQueue(t.TransactionHash,{ViewHash:this.Hash,Renderable:t},"Deferred-Post-Content-Assignment"),this.pict.LogNoisiness>0&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," Assigning Renderable[").concat(t.RenderableHash,"] content length ").concat(t.Content.length," to Destination [").concat(t.ContentDestinationAddress,"] using Async render method ").concat(t.RenderMethod,".")),this.pict.ContentAssignment.projectContent(t.RenderMethod,t.ContentDestinationAddress,t.Content,t.TestAddress),this.lastRenderedTimestamp=this.pict.log.getTimeStamp()}onProjectAsync(t,e){return this.onProject(e),t()}onAfterRender(t){if(this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRender:")),t&&t.RootRenderableViewHash===this.Hash){const e=this.pict.TransactionTracking.clearTransactionQueue(t.TransactionHash)||[];for(const i of e){const e=this.pict.views[i.Data.ViewHash];e?(e.onAfterProject(),e.onAfterRender(i.Data.Renderable)):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRender: Could not find view for transaction hash ").concat(t.TransactionHash," and ViewHash ").concat(i.Data.ViewHash,"."))}this.pict.TransactionTracking.unregisterTransaction(t.TransactionHash)}return!0}onAfterRenderAsync(t,e){this.onAfterRender(e);const i=this.fable.newAnticipate(),n=e&&e.RootRenderableViewHash===this.Hash;if(n){const t=this.pict.TransactionTracking.clearTransactionQueue(e.TransactionHash)||[];for(const n of t){const t=this.pict.views[n.Data.ViewHash];t?(i.anticipate(t.onAfterProjectAsync.bind(t)),i.anticipate(e=>{t.onAfterRenderAsync(e,n.Data.Renderable)})):this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterRenderAsync: Could not find view for transaction hash ").concat(e.TransactionHash," and ViewHash ").concat(n.Data.ViewHash,"."))}}return i.wait(i=>(n&&e&&e.TransactionHash&&this.pict.TransactionTracking.unregisterTransaction(e.TransactionHash),t(i)))}onAfterProject(t){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterProject:")),!0}onAfterProjectAsync(t,e){return t()}onBeforeSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeSolve:")),!0}onBeforeSolveAsync(t){return this.onBeforeSolve(),t()}onSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onSolve:")),!0}onSolveAsync(t){return this.onSolve(),t()}solve(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeSolve(),this.onSolve(),this.onAfterSolve(),this.lastSolvedTimestamp=this.pict.log.getTimeStamp(),!0}solveAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t?t:null;i||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," solveAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeSolveAsync.bind(this)),e.anticipate(this.onSolveAsync.bind(this)),e.anticipate(this.onAfterSolveAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," solveAsync() complete.")),this.lastSolvedTimestamp=this.pict.log.getTimeStamp(),i(t)))}onAfterSolve(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterSolve:")),!0}onAfterSolveAsync(t){return this.onAfterSolve(),t()}onBeforeMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeMarshalFromView:")),!0}onBeforeMarshalFromViewAsync(t){return this.onBeforeMarshalFromView(),t()}onMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onMarshalFromView:")),!0}onMarshalFromViewAsync(t){return this.onMarshalFromView(),t()}marshalFromView(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeMarshalFromView(),this.onMarshalFromView(),this.onAfterMarshalFromView(),this.lastMarshalFromViewTimestamp=this.pict.log.getTimeStamp(),!0}marshalFromViewAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t?t:null;i||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalFromViewAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalFromViewAsync.bind(this)),e.anticipate(this.onMarshalFromViewAsync.bind(this)),e.anticipate(this.onAfterMarshalFromViewAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," marshalFromViewAsync() complete.")),this.lastMarshalFromViewTimestamp=this.pict.log.getTimeStamp(),i(t)))}onAfterMarshalFromView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterMarshalFromView:")),!0}onAfterMarshalFromViewAsync(t){return this.onAfterMarshalFromView(),t()}onBeforeMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onBeforeMarshalToView:")),!0}onBeforeMarshalToViewAsync(t){return this.onBeforeMarshalToView(),t()}onMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onMarshalToView:")),!0}onMarshalToViewAsync(t){return this.onMarshalToView(),t()}marshalToView(){return this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," executing solve() function...")),this.onBeforeMarshalToView(),this.onMarshalToView(),this.onAfterMarshalToView(),this.lastMarshalToViewTimestamp=this.pict.log.getTimeStamp(),!0}marshalToViewAsync(t){let e=this.pict.instantiateServiceProviderWithoutRegistration("Anticipate"),i="function"==typeof t?t:null;i||(this.log.warn("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewAsync was called without a valid callback. A callback will be generated but this could lead to race conditions.")),i=t=>{t&&this.log.error("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.Name," marshalToViewAsync Auto Callback Error: ").concat(t),t)}),e.anticipate(this.onBeforeMarshalToViewAsync.bind(this)),e.anticipate(this.onMarshalToViewAsync.bind(this)),e.anticipate(this.onAfterMarshalToViewAsync.bind(this)),e.wait(t=>(this.pict.LogNoisiness>2&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," marshalToViewAsync() complete.")),this.lastMarshalToViewTimestamp=this.pict.log.getTimeStamp(),i(t)))}onAfterMarshalToView(){return this.pict.LogNoisiness>3&&this.log.trace("PictView [".concat(this.UUID,"]::[").concat(this.Hash,"] ").concat(this.options.ViewIdentifier," onAfterMarshalToView:")),!0}onAfterMarshalToViewAsync(t){return this.onAfterMarshalToView(),t()}get isPictView(){return!0}}},{"../package.json":37,"fable-serviceproviderbase":3}],39:[function(t,e,i){e.exports={name:"pict-section-form",version:"1.2.0",description:"Pict dynamic form sections",main:"source/Pict-Section-Form.js",directories:{test:"test"},repository:{type:"git",url:"git+https://github.com/fable-retold/pict-section-form.git"},bugs:{url:"https://github.com/fable-retold/pict-section-form/issues"},homepage:"https://github.com/fable-retold/pict-section-form#readme",scripts:{start:"node source/Pict-Section-Form.js",tests:"npx quack test -g",coverage:"npx quack coverage",build:"npx quack build",test:"npx quack test",lint:"eslint source/**",types:"tsc -p .","docker-dev-build":"docker build ./ -f Dockerfile_LUXURYCode -t pict-section-form-image:local","docker-dev-run":'docker run -it -d --name pict-section-form-dev -p 48888:8080 -p 49999:9999 -v "$PWD/.config:/home/coder/.config" -v "$PWD:/home/coder/pict-section-form" -u "$(id -u):$(id -g)" -e "DOCKER_USER=$USER" pict-section-form-image:local',"docker-dev-shell":"docker exec -it pict-section-form-dev /bin/bash"},types:"types/source/Pict-Section-Form.d.ts",author:"steven velozo <steven@velozo.com>",license:"MIT",devDependencies:{"@eslint/js":"^9.39.2","browser-env":"^3.3.0",eslint:"^9.39.2",jquery:"^4.0.0",pict:"^1.0.373","pict-application":"^1.0.34","pict-docuserve":"^1.4.19","pict-service-commandlineutility":"^1.0.19",quackage:"^1.3.0","tui-grid":"^4.21.22",typescript:"^5.9.3"},dependencies:{"chart.js":"^4.5.1","fable-serviceproviderbase":"^3.0.19",marked:"^4.3.0","pict-provider":"^1.0.13","pict-section-excalidraw":"^1.0.3","pict-section-markdowneditor":"^1.0.17","pict-section-tuigrid":"^1.0.31","pict-template":"^1.0.15","pict-view":"^1.0.68"},mocha:{diff:!0,extension:["js"],package:"./package.json",reporter:"spec",slow:"75",timeout:"5000",ui:"tdd","watch-files":["source/**/*.js","test/**/*.js"],"watch-ignore":["lib/vendor"]}}},{}],40:[function(t,e,i){e.exports=t("./views/Pict-View-DynamicForm.js"),e.exports.PictDynamicFormDependencyManager=t("./services/Pict-Service-DynamicFormDependencyManager.js"),e.exports.PictFormTemplateProvider=t("./providers/Pict-Provider-DynamicTemplates.js"),e.exports.PictInputExtensionProvider=t("./providers/Pict-Provider-InputExtension.js"),e.exports.PictFormMetacontroller=t("./views/Pict-View-Form-Metacontroller.js"),e.exports.PictFormApplication=t("./application/Pict-Application-Form.js"),e.exports.PictDynamicLayoutProvider=t("./providers/Pict-Provider-DynamicLayout.js"),e.exports.ManifestFactory=t("./services/ManifestFactory.js"),e.exports.ManifestConversionToCSV=t("./services/ManifestConversionToCSV.js"),e.exports.PictFormSupportBase=t("./views/support/Pict-View-PSF-SupportBase.js"),e.exports.PictFormPersistenceProvider=t("./providers/Pict-Provider-FormPersistence.js"),e.exports.ExtensionViews={LifecycleVisualization:t("./views/support/Pict-View-PSF-LifeCycle-Visualization.js"),DebugViewer:t("./views/support/Pict-View-PSF-DebugViewer.js")},e.exports.RichTextInput=t("./providers/inputs/Pict-Provider-Input-RichText.js"),e.exports.DiagramInput=t("./providers/inputs/Pict-Provider-Input-Diagram.js"),e.exports.themeifySVG=t("./providers/inputs/util/Themeify-SVG.js").themeifySVG},{"./application/Pict-Application-Form.js":41,"./providers/Pict-Provider-DynamicLayout.js":45,"./providers/Pict-Provider-DynamicTemplates.js":49,"./providers/Pict-Provider-FormPersistence.js":50,"./providers/Pict-Provider-InputExtension.js":52,"./providers/inputs/Pict-Provider-Input-Diagram.js":63,"./providers/inputs/Pict-Provider-Input-RichText.js":70,"./providers/inputs/util/Themeify-SVG.js":77,"./services/ManifestConversionToCSV.js":86,"./services/ManifestFactory.js":87,"./services/Pict-Service-DynamicFormDependencyManager.js":88,"./views/Pict-View-DynamicForm.js":103,"./views/Pict-View-Form-Metacontroller.js":104,"./views/support/Pict-View-PSF-DebugViewer.js":107,"./views/support/Pict-View-PSF-LifeCycle-Visualization.js":108,"./views/support/Pict-View-PSF-SupportBase.js":111}],41:[function(t,e,i){const n=t("pict-application"),r=t("../Pict-Section-Form.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.pict.addServiceType("PictSectionForm",r),this.pict.addView("PictFormMetacontroller",{},r.PictFormMetacontroller)}marshalDataFromDynamicViewsToAppData(){this.pict.views.PictFormMetacontroller.marshalFromView()}marshalDataFromAppDataToDynamicViews(){this.pict.views.PictFormMetacontroller.marshalToView()}},e.exports.default_configuration={Name:"A Simple Pict Forms Application",Hash:"PictFormsApp",MainViewportViewIdentifier:"PictFormMetacontroller",AutoSolveAfterInitialize:!1,pict_configuration:{Product:"PictDefaultFormsApp"}}},{"../Pict-Section-Form.js":40,"pict-application":6}],42:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-SolverBehaviors",AutoInitialize:!1,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.log,this.cssHideSectionClass="pict-section-form-hidden-section",this.cssHideGroupClass="pict-section-form-hidden-group",this.cssTabularRowHighlightClass="pict-tabular-row-highlight",this.cssTabularColumnHighlightClass="pict-tabular-column-highlight",this.cssSnippet=".pict-section-form-hidden-section { display: none; } .pict-section-form-hidden-group { display: none; } .pict-tabular-row-highlight > td, .pict-tabular-row-highlight > th { background-color: var(--pict-tabular-highlight-color, #FFF3CD) !important; } td.pict-tabular-column-highlight, th.pict-tabular-column-highlight { background-color: var(--pict-tabular-highlight-color, #FFF3CD) !important; }",this.solverOrdinalMap={},this.setCSSSnippets()}setCSSSnippets(t,e){this.cssHideClass=t||this.cssHideClass,this.cssSnippet=e||this.cssSnippet,this.pict.CSSMap.addCSS("Pict-Section-Form-SolverBehaviors",this.cssSnippet,1001,"Pict-DynamicForm-SolverBehaviors"),this.pict.CSSMap.injectCSS()}addSolverFunction(t,e,i,n,r){let o=(e||"").trim().toLowerCase();t.functionMap.hasOwnProperty(o)&&this.log.warn("PictDynamicFormsInformary: Function ".concat(o," already exists in the solver, overwriting with address [").concat(i,"]."));let a={Name:n||"Autogenerated function ".concat(o),Address:i};Array.isArray(r)&&r.length>0&&(a.AddressParameterIndices=r),t.functionMap[o]=a}runSolvers(){this.pict.providers.DynamicSolver.solveViews(void 0,!0)}injectBehaviors(t){return this.addSolverFunction(t,"logvalues","fable.providers.DynamicFormSolverBehaviors.logValues","Logs a set of values to the console and returns the last one."),this.addSolverFunction(t,"unionarrays","fable.providers.DynamicFormSolverBehaviors.unionArrays","Return the union of two arrays."),this.addSolverFunction(t,"differencearrays","fable.providers.DynamicFormSolverBehaviors.differenceArrays","Return the difference of two arrays."),this.addSolverFunction(t,"uniquearray","fable.providers.DynamicFormSolverBehaviors.uniqueArray","Return a new array with only unique values from the input array."),this.addSolverFunction(t,"sortarray","fable.providers.DynamicFormSolverBehaviors.sortArray","Returns a sorted array from the input array."),this.addSolverFunction(t,"showsections","fable.providers.DynamicFormSolverBehaviors.showSections","Shows sections based on hashes in an array.",[0]),this.addSolverFunction(t,"hidesections","fable.providers.DynamicFormSolverBehaviors.hideSections","Hides sections based on hashes in an array.",[0]),this.addSolverFunction(t,"setsectionvisibility","fable.providers.DynamicFormSolverBehaviors.setSectionVisibility","Sets a sections visiblity to true or fales based on the second parameter.",[0]),this.addSolverFunction(t,"setgroupvisibility","fable.providers.DynamicFormSolverBehaviors.setGroupVisibility","Sets a group visiblity to true or fales based on the third parameter.",[0,1]),this.addSolverFunction(t,"generatehtmlhexcolor","fable.providers.DynamicFormSolverBehaviors.generateHTMLHexColor","Generates a HTML hex color from three integer parameters (red, green, blue)."),this.addSolverFunction(t,"colorsectionbackground","fable.providers.DynamicFormSolverBehaviors.colorSectionBackground","Colors a section background with a HTML hex color (e.g. #FF0000 for red).",[0]),this.addSolverFunction(t,"colorgroupbackground","fable.providers.DynamicFormSolverBehaviors.colorGroupBackground","Colors a group background with a HTML hex color (e.g. #FF0000 for red).",[0,1]),this.addSolverFunction(t,"colorinputbackground","fable.providers.DynamicFormSolverBehaviors.colorInputBackground","Colors an input background with a HTML hex color (e.g. #FF0000 for red).",[0,1]),this.addSolverFunction(t,"colorinputbackgroundtabular","fable.providers.DynamicFormSolverBehaviors.colorInputBackgroundTabular","Colors a tabular input background with a HTML hex color (e.g. #FF0000 for red).",[0,1,2]),this.addSolverFunction(t,"highlighttabularrow","fable.providers.DynamicFormSolverBehaviors.highlightTabularRow","Adds (1) or removes (0) a highlight class on every cell of a tabular row.",[0,1]),this.addSolverFunction(t,"highlighttabularcolumn","fable.providers.DynamicFormSolverBehaviors.highlightTabularColumn","Adds (1) or removes (0) a highlight class on every cell of a tabular column.",[0,1]),this.addSolverFunction(t,"colortabularrow","fable.providers.DynamicFormSolverBehaviors.colorTabularRow","Sets (1) or clears (0) the background color on every cell of a tabular row.",[0,1]),this.addSolverFunction(t,"colortabularcolumn","fable.providers.DynamicFormSolverBehaviors.colorTabularColumn","Sets (1) or clears (0) the background color on every cell of a tabular column.",[0,1]),this.addSolverFunction(t,"setsolverordinalenabled","fable.providers.DynamicFormSolverBehaviors.setSolverOrdinalEnabled","Enables or disabled a solver ordinal to determine if it should run."),this.addSolverFunction(t,"enablesolverordinal","fable.providers.DynamicFormSolverBehaviors.enableSolverOrdinal","Enables a solver ordinal so that it can run."),this.addSolverFunction(t,"disablesolverordinall","fable.providers.DynamicFormSolverBehaviors.disableSolverOrdinal","Disables a solver ordinal so that it will not run."),this.addSolverFunction(t,"settabularrowlength","fable.providers.DynamicFormSolverBehaviors.setTabularRowLength","Sets the length of a tabular data set.",[0,1]),this.addSolverFunction(t,"runsolvers","fable.providers.DynamicFormSolverBehaviors.runSolvers","Solves all views."),this.addSolverFunction(t,"refreshtabularsection","fable.providers.DynamicFormSolverBehaviors.refreshTabularSection","Causes a tabular section to refresh its display.",[0,1]),this.addSolverFunction(t,"getglobalformdata","fable.providers.DynamicFormSolverBehaviors.getGlobalFormData","Gets a value from the global form data by hash."),this.addSolverFunction(t,"resolveglobalformdata","fable.providers.DynamicFormSolverBehaviors.resolveGlobalFormData","Resolves a value from the global form data by manyfest address."),this.addSolverFunction(t,"getsectionformdata","fable.providers.DynamicFormSolverBehaviors.getSectionFormData","Gets a value from a specific section by hash or address.",[0]),this.addSolverFunction(t,"getsectiontabularformdata","fable.providers.DynamicFormSolverBehaviors.getSectionTabularFormData","Gets a value from a specific tabular section row by hash or address.",[0,1]),this.addSolverFunction(t,"addcomprehensionentity","fable.providers.DynamicFormSolverBehaviors.addComprehensionEntity","Writes a property/value into the configured comprehension destination, nested as Context -> Entity -> GUID -> Property."),!1}unionArrays(t,e){let i=new Set;if(Array.isArray(t))for(let e=0;e<t.length;e++)i.add(t[e]);if(Array.isArray(e))for(let t=0;t<e.length;t++)i.add(e[t]);return Array.from(i)}differenceArrays(t,e){let i=new Set,n=new Set;if(Array.isArray(t))for(let e=0;e<t.length;e++)i.add(t[e]);if(Array.isArray(e))for(let t=0;t<e.length;t++)n.add(e[t]);let r=new Set;return i.forEach(t=>{n.has(t)||r.add(t)}),Array.from(r)}uniqueArray(t){let e=new Set;if(Array.isArray(t))for(let i=0;i<t.length;i++)e.add(t[i]);return Array.from(e)}sortArray(t){return Array.isArray(t)?t.sort():[]}setSolverOrdinalEnabled(t,e){this.solverOrdinalMap["ORD-".concat(t)]=1==e||"1"==e}enableSolverOrdinal(t){this.solverOrdinalMap["ORD-".concat(t)]=!0}disableSolverOrdinal(t){this.solverOrdinalMap["ORD-".concat(t)]=!1}checkSolverOrdinalEnabled(t){let e="ORD-".concat(t);return!(e in this.solverOrdinalMap)||!0===this.solverOrdinalMap[e]}getSectionSelector(t){return"#SECTION-".concat(t)}setSectionVisibility(t,e){return"0"!=e?this.showSection(t):this.hideSection(t)}showSections(t){const e=Array.isArray(t)?t:[t];for(let t=0;t<e.length;t++)this.showSection(e[t])}hideSections(t){const e=Array.isArray(t)?t:[t];for(let t=0;t<e.length;t++)this.hideSection(e[t])}hideSection(t){let e=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return e?(this.pict.ContentAssignment.hasClass(this.getSectionSelector(e.formID),this.cssHideSectionClass)||this.pict.ContentAssignment.addClass(this.getSectionSelector(e.formID),this.cssHideSectionClass),!0):(this.log.warn("PictDynamicFormsInformary: hideSection could not find section with hash [".concat(t,"].")),!1)}showSection(t){let e=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return e?!this.pict.ContentAssignment.hasClass(this.getSectionSelector(e.formID),this.cssHideSectionClass)||(this.pict.ContentAssignment.removeClass(this.getSectionSelector(e.formID),this.cssHideSectionClass),!0):(this.log.warn("PictDynamicFormsInformary: showSection could not find section with hash [".concat(t,"].")),!1)}getGroupSelector(t,e){return"#GROUP-".concat(t,"-").concat(e)}setGroupVisibility(t,e,i){return"0"!=i?this.showGroup(t,e):this.hideGroup(t,e)}hideGroup(t,e){let i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return i?(this.pict.ContentAssignment.hasClass(this.getGroupSelector(i.formID,e),this.cssHideGroupClass)||this.pict.ContentAssignment.addClass(this.getGroupSelector(i.formID,e),this.cssHideGroupClass),!0):(this.log.warn("PictDynamicFormsInformary: hideGroup could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1)}showGroup(t,e){let i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return i?!this.pict.ContentAssignment.hasClass(this.getGroupSelector(i.formID,e),this.cssHideGroupClass)||(this.pict.ContentAssignment.removeClass(this.getGroupSelector(i.formID,e),this.cssHideGroupClass),!0):(this.log.warn("PictDynamicFormsInformary: showGroup could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1)}refreshTabularSection(t,e){const i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!i)return void this.log.warn("PictDynamicFormsInformary: showGroup could not find group with section hash [".concat(t,"] group [").concat(e,"]."));const n=i.getGroupIndexFromHash(e);if(n<0)return void this.log.warn("PictDynamicFormsInformary: setTabularRowLength could not find group with section hash [".concat(t,"] group [").concat(e,"]."));const r=i.getGroup(n);if(r){const t=this.pict.views.PictFormMetacontroller.filterViews(t=>{if(!t.isPictSectionForm)return!1;const e=t.getGroups();for(let t=0;t<e.length;t++)if(e[t].RecordSetAddress==r.RecordSetAddress)return!0;return!1});for(let e=0;e<t.length;e++)t[e].render();this.pict.views.PictFormMetacontroller.marshalFormSections()}}setTabularRowLength(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!r)return this.log.warn("PictDynamicFormsInformary: showGroup could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1;let o=r.getGroupIndexFromHash(e);if(o<0)return this.log.warn("PictDynamicFormsInformary: setTabularRowLength could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1;let a=r.getTabularRecordSet(o);if(!a||!Array.isArray(a))return this.log.warn("PictDynamicFormsInformary: setTabularRowLength could not find a valid tabular record set with section hash [".concat(t,"] group [").concat(e,"].")),!1;let s=parseInt(i.toString());if(isNaN(s)||s<0)return this.log.warn("PictDynamicFormsInformary: setTabularRowLength was given an invalid length [".concat(i,"] with section hash [").concat(t,"] group [").concat(e,"].")),!1;let c=a.length,l=1==n||"1"==n;if(s>c)for(let t=c;t<s;t++)r.createDynamicTableRow(o);else if(s<c&&l)for(let t=c-1;t>=s;t--)r.deleteDynamicTableRow(o,t)}generateHTMLHexColor(t,e,i){let n=parseInt(t)||0,r=parseInt(e)||0,o=parseInt(i)||0;n<0&&(n=0),n>255&&(n=255),r<0&&(r=0),r>255&&(r=255),o<0&&(o=0),o>255&&(o=255);let a=n.toString(16).toUpperCase();a.length<2&&(a="0".concat(a));let s=r.toString(16).toUpperCase();s.length<2&&(s="0".concat(s));let c=o.toString(16).toUpperCase();return c.length<2&&(c="0".concat(c)),"#".concat(a).concat(s).concat(c)}colorSectionBackground(t,e,i){if("0"==i)return!0;let n=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!n)return this.log.warn("PictDynamicFormsInformary: colorSection could not find section with hash [".concat(t,"].")),!1;let r=this.pict.ContentAssignment.getElement(this.getSectionSelector(n.formID));return r.length<1?(this.log.warn("PictDynamicFormsInformary: colorSection could not find section element with hash [".concat(t,"] selector [").concat(this.getSectionSelector(n.formID),"].")),!1):(r[0].style.backgroundColor=e,!0)}colorGroupBackground(t,e,i,n){if("0"==n)return!0;let r=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!r)return this.log.warn("PictDynamicFormsInformary: colorGroup could not find group with section hash [".concat(t,"] group [").concat(e,"].")),!1;let o=this.pict.ContentAssignment.getElement(this.getGroupSelector(r.formID,e));return o.length<1?(this.log.warn("PictDynamicFormsInformary: colorGroup could not find group element with section hash [".concat(t,"] group [").concat(e,"] selector [").concat(this.getGroupSelector(r.formID,e),"].")),!1):(o[0].style.backgroundColor=i,!0)}colorInputBackground(t,e,i,n,r){if("0"==n)return!0;let o=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!o)return this.log.warn("PictDynamicFormsInformary: colorInput could not find input with section hash [".concat(t,"] input [").concat(e,"].")),!1;let a=o.getInputFromHash(e);if(!a)return this.log.warn("PictDynamicFormsInformary: colorInput could not find input with section hash [".concat(t,"] input [").concat(e,"].")),!1;let s=this.pict.ContentAssignment.getElement(a.Macro.HTMLSelectorControl);return s.length<1&&(s=this.pict.ContentAssignment.getElement("#".concat(a.Macro.RawHTMLID))),s.length<1?(this.log.warn("PictDynamicFormsInformary: colorInput could not find input element with section hash [".concat(t,"] input [").concat(e,"] selector [#").concat(a.Macro.RawHTMLID,"].")),!1):this.colorElementBackground(s,i,r)}colorInputBackgroundTabular(t,e,i,n,r,o,a){let s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"TABULAR-DATA-";if("0"==o)return!0;let c=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!c)return this.log.warn("PictDynamicFormsInformary: colorInputBackgroundTabular could not find input with section hash [".concat(t,"] group hash [").concat(e,"] input hash [").concat(i,"].")),!1;let l=c.getTabularRecordInputByHash(e,i);if(!l)return this.log.warn("PictDynamicFormsInformary: colorInputBackgroundTabular could not find input with section hash [".concat(t,"] group hash [").concat(e,"] input hash [").concat(i,"].")),!1;if(!l.Macro)return this.log.warn("PictDynamicFormsInformary: colorInputBackgroundTabular input with section hash [".concat(t,"] group hash [").concat(e,"] input hash [").concat(i,"] is missing Macro data.")),!1;const p=l.Macro.HTMLSelectorControlTabular+'[data-i-index="'.concat(n,'"]');let d=this.pict.ContentAssignment.getElement(p);return d.length<1&&(d=this.pict.ContentAssignment.getElement("#".concat(s).concat(l.Macro.RawHTMLID,"-").concat(n))),d.length<1?(this.log.warn("PictDynamicFormsInformary: colorInputBackgroundTabular could not find input element with section hash [".concat(t,"] group hash [").concat(e,"] input hash [").concat(i,"] row index [").concat(n,"] selector [#").concat(l.Macro.RawHTMLID,"-").concat(n,"].")),!1):this.colorElementBackground(d,r,a)}colorElementBackground(t,e,i){let n=t[0];if(i)for(let e=0;e<t.length;e++){const r=t[e].closest("".concat(i));if(r&&r instanceof HTMLElement){n=r;break}}return n.style.backgroundColor=e,!0}isSolverFlagEnabled(t){return null!=t&&!1!==t&&0!==t&&"0"!==t&&""!==t&&"false"!==t}getTabularGroupSelector(t,e){if(!this.pict.views.PictFormMetacontroller)return this.log.warn("PictDynamicFormsSolverBehaviors: getTabularGroupSelector has no PictFormMetacontroller."),null;let i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);return i?"#GROUP-".concat(i.formID,"-").concat(e):(this.log.warn("PictDynamicFormsSolverBehaviors: getTabularGroupSelector could not find section view with hash [".concat(t,"].")),null)}highlightTabularRow(t,e,i,n,r){let o=this.getTabularGroupSelector(t,e);if(!o)return!1;let a="string"==typeof r&&r.length>0?r:this.cssTabularRowHighlightClass,s="".concat(o,' tr[data-tabular-row-index="').concat(i,'"]');return this.isSolverFlagEnabled(n)?this.pict.ContentAssignment.addClass(s,a):this.pict.ContentAssignment.removeClass(s,a),!0}highlightTabularColumn(t,e,i,n,r){let o=this.getTabularGroupSelector(t,e);if(!o)return!1;let a="string"==typeof r&&r.length>0?r:this.cssTabularColumnHighlightClass,s="".concat(o,' [data-tabular-column-index="').concat(i,'"]');return this.isSolverFlagEnabled(n)?this.pict.ContentAssignment.addClass(s,a):this.pict.ContentAssignment.removeClass(s,a),!0}colorTabularRow(t,e,i,n,r){let o=this.getTabularGroupSelector(t,e);if(!o)return!1;let a=this.isSolverFlagEnabled(r)&&"string"==typeof n&&n.length>0,s=this.pict.ContentAssignment.getElement("".concat(o,' tr[data-tabular-row-index="').concat(i,'"] td'));for(let t=0;t<s.length;t++)a?s[t].style.setProperty("background-color",n,"important"):s[t].style.removeProperty("background-color");return!0}colorTabularColumn(t,e,i,n,r){let o=this.getTabularGroupSelector(t,e);if(!o)return!1;let a=this.isSolverFlagEnabled(r)&&"string"==typeof n&&n.length>0,s=this.pict.ContentAssignment.getElement("".concat(o,' [data-tabular-column-index="').concat(i,'"]'));for(let t=0;t<s.length;t++)a?s[t].style.setProperty("background-color",n,"important"):s[t].style.removeProperty("background-color");return!0}getGlobalFormData(t){if(!this.pict.views.PictFormMetacontroller)return void this.log.warn("getGlobalFormData: No PictFormMetacontroller available.");let e=this.pict.views.PictFormMetacontroller.viewMarshalDestination,i=this.pict.resolveStateFromAddress(e);return"object"==typeof i&&null!==i||(i=this.pict.AppData),this.pict.manifest.getValueByHash(i,t)}resolveGlobalFormData(t){if(!this.pict.views.PictFormMetacontroller)return void this.log.warn("resolveGlobalFormData: No PictFormMetacontroller available.");let e=this.pict.views.PictFormMetacontroller.viewMarshalDestination,i=this.pict.resolveStateFromAddress(e);return"object"==typeof i&&null!==i||(i=this.pict.AppData),this.pict.manifest.getValueAtAddress(i,t)}getSectionFormData(t,e){if(!this.pict.views.PictFormMetacontroller)return void this.log.warn("getSectionFormData: No PictFormMetacontroller available.");let i=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(i)return i.getValueByHash(e);this.log.warn("getSectionFormData: Could not find section view with hash [".concat(t,"]."))}getSectionTabularFormData(t,e,i,n){if(!this.pict.views.PictFormMetacontroller)return void this.log.warn("getSectionTabularFormData: No PictFormMetacontroller available.");let r=this.pict.views.PictFormMetacontroller.getSectionViewFromHash(t);if(!r)return void this.log.warn("getSectionTabularFormData: Could not find section view with hash [".concat(t,"]."));let o=r.getGroupIndexFromHash(e);if(o<0)return void this.log.warn("getSectionTabularFormData: Could not find group with hash [".concat(e,"] in section [").concat(t,"]."));let a=r.getGroup(o);if(!a)return void this.log.warn("getSectionTabularFormData: Could not get group at index ".concat(o," in section [").concat(t,"]."));let s=r.getTabularRecordSet(o);if(!s)return void this.log.warn("getSectionTabularFormData: Could not find tabular record set for group [".concat(e,"] in section [").concat(t,"]."));let c=parseInt(i.toString());if(isNaN(c)||c<0)return void this.log.warn("getSectionTabularFormData: Invalid row index [".concat(i,"] for group [").concat(e,"] in section [").concat(t,"]."));if(c>=s.length)return void this.log.warn("getSectionTabularFormData: Row index [".concat(c,"] out of bounds for group [").concat(e,"] in section [").concat(t,"] (length ").concat(s.length,")."));let l=s[c];if(l&&"object"==typeof l)return a.supportingManifest?a.supportingManifest.getValueByHash(l,n):n in l?l[n]:void 0;this.log.warn("getSectionTabularFormData: No valid record at row index [".concat(c,"] for group [").concat(e,"] in section [").concat(t,"]."))}logValues(){let t=null,e="Solver logvalues call: ";for(let i=0;i<arguments.length;i++)t=arguments[i],e+=" [".concat(i,"]=[").concat(t,"]");return this.log.info(e),t}resolveComprehensionDestination(){let t="AppData.FormEntityComprehensions";this.pict.views.PictFormMetacontroller&&"string"==typeof this.pict.views.PictFormMetacontroller.comprehensionDestinationAddress&&this.pict.views.PictFormMetacontroller.comprehensionDestinationAddress.length>0&&(t=this.pict.views.PictFormMetacontroller.comprehensionDestinationAddress);let e=this.pict.resolveStateFromAddress(t);return e&&"object"==typeof e?e:null!=e&&"object"!=typeof e?(this.log.warn("addComprehensionEntity: comprehension destination [".concat(t,"] resolves to a non-object value; refusing to overwrite.")),null):(this.pict.setStateValueAtAddress(t,null,{}),this.pict.resolveStateFromAddress(t))}addComprehensionEntity(t,e,i,n,r){if(null==t||null==e||null==i||null==n)return void this.log.warn("addComprehensionEntity: ignoring call with null/undefined parts (Context=[".concat(t,"], Entity=[").concat(e,"], GUID=[").concat(i,"], Property=[").concat(n,"])."));let o=String(t),a=String(e),s=String(i),c=String(n);if(o.length<1||a.length<1||s.length<1||c.length<1)return void this.log.warn("addComprehensionEntity: ignoring call with empty parts (Context=[".concat(o,"], Entity=[").concat(a,"], GUID=[").concat(s,"], Property=[").concat(c,"])."));let l=this.resolveComprehensionDestination();if(!l)return;let p=o.split("."),d=l;for(let t=0;t<p.length;t++){let e=p[t];e.length<1||(d[e]&&"object"==typeof d[e]||(d[e]={}),d=d[e])}d[a]&&"object"==typeof d[a]||(d[a]={});let u=d[a];return u[s]&&"object"==typeof u[s]||(u[s]={}),u[s][c]=r,r}},e.exports.default_configuration=r},{"pict-provider":9}],43:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-Input",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.templateProviderMap={},this.ignoredEventHashes={}}registerIgnoredEventHash(t){this.ignoredEventHashes[t]=!0}getInputTemplateHash(t,e){if(e.IsTabular){let i="-TabularTemplate-Begin-Input-InputType-".concat(e.PictForm.InputType),n="-TabularTemplate-End-Input-InputType-".concat(e.PictForm.InputType),r="-TabularTemplate-Begin-Input-DataType-".concat(e.DataType),o="-TabularTemplate-End-Input-DataType-".concat(e.DataType);if(t.checkViewSpecificTemplate(i)&&t.checkViewSpecificTemplate(n))return t.getViewSpecificTemplateHash(i);if(t.checkThemeSpecificTemplate(i)&&t.checkThemeSpecificTemplate(n))return t.getThemeSpecificTemplateHash(i);if(t.checkViewSpecificTemplate(r)&&t.checkViewSpecificTemplate(o))return t.getViewSpecificTemplateHash(r);if(t.checkThemeSpecificTemplate(r)&&t.checkThemeSpecificTemplate(o))return t.getThemeSpecificTemplateHash(r)}else{let i="-Template-Input-InputType-".concat(e.PictForm.InputType),n="-Template-Input-DataType-".concat(e.DataType);if(t.checkViewSpecificTemplate(i))return t.getViewSpecificTemplateHash(i);if(t.checkThemeSpecificTemplate(i))return t.getThemeSpecificTemplateHash(i);if(t.checkViewSpecificTemplate(n))return t.getViewSpecificTemplateHash(n);if(t.checkThemeSpecificTemplate(n))return t.getThemeSpecificTemplateHash(n)}return!1}addDefaultInputProvider(t,e){t in this.templateProviderMap||(this.templateProviderMap[t]=[]),this.templateProviderMap[t].indexOf(e)<0&&this.templateProviderMap[t].push(e)}getDefaultInputProviders(t,e){let i=this.getInputTemplateHash(t,e);return i&&this.templateProviderMap[i]?this.templateProviderMap[i]:[]}},e.exports.default_configuration=r},{"pict-provider":9}],44:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-InputEvents",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i)}inputDataRequest(t,e,i){if(e){let n=t.getInputFromHash(e);if(i){let t;if(t="string"==typeof i?i:i.namespace?"".concat(i.type,".").concat(i.namespace):i.type,this.pict.providers.DynamicInput.ignoredEventHashes[t])return}let r=t.sectionManifest.resolveHashAddress(e);try{let e=t.getMarshalDestinationObject(),i=t.sectionManifest.getValueByHash(e,r),o=t.getInputProviderList(n);for(let e=0;e<o.length;e++)t.pict.providers[o[e]]?t.pict.providers[o[e]].onDataRequest(t,n,i,n.Macro.HTMLSelector):t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] inputDataRequest cannot find embedded provider [").concat(o[e],"] for input [").concat(n.Hash,"]."))}catch(i){t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] gross error running inputDataRequest specific (").concat(e,") data from view in dataChanged event: ").concat(i))}}else t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] cannot find input hash [").concat(e,"] for inputDataRequest event."))}inputEvent(t,e,i,n){const r=n&&"string"==typeof n?n:this.pict.getUUID();let o=t.getInputFromHash(e);if(e){let a=t.sectionManifest.resolveHashAddress(e);try{let e=t.getMarshalDestinationObject(),s=t.sectionManifest.getValueByHash(e,a),c=t.getInputProviderList(o);for(let e=0;e<c.length;e++)t.pict.providers[c[e]]?o.Macro&&(t.pict.providers[c[e]].onEvent(t,o,s,o.Macro.HTMLSelector,i,r),t.registerOnTransactionCompleteCallback(r,()=>{t.pict.providers[c[e]].onAfterEventCompletion(t,o,s,o.Macro.HTMLSelector,i,r)})):t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] inputEvent ").concat(i," cannot find embedded provider [").concat(c[e],"] for input [").concat(o.Hash,"]."));n!==r&&t.finalizeTransaction(r)}catch(n){t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] gross error running inputEvent ").concat(i," specific (").concat(e,") data from view in dataChanged event: ").concat(n))}}else t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] cannot find input hash [").concat(e,"] for inputEvent ").concat(i," event."))}inputDataRequestTabular(t,e,i,n,r){let o=t.getTabularRecordInput(e,i);if(e&&i&&n&&o){if(r){let t;if(t="string"==typeof r?r:r.namespace?"".concat(r.type,".").concat(r.namespace):r.type,this.pict.providers.DynamicInput.ignoredEventHashes[t])return}try{let e=t.getMarshalDestinationObject(),i=t.pict.providers.Informary.getComposedContainerAddress(o.PictForm.InformaryContainerAddress,n,o.PictForm.InformaryDataAddress),r=t.sectionManifest.getValueByHash(e,i),a=o.Macro.HTMLSelectorTabular+'[data-i-index="'.concat(n,'"]'),s=t.getInputProviderList(o);for(let e=0;e<s.length;e++)t.pict.providers[s[e]]?t.pict.providers[s[e]].onDataRequestTabular(t,o,r,a,n):t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] cannot find embedded provider [").concat(s[e],"] for input [").concat(o.Hash,"] row ").concat(n,"."))}catch(r){t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] gross error marshaling specific (").concat(e," | ").concat(i," | ").concat(n,") tabular data for group ").concat(e," row ").concat(n," from view in dataChanged event: ").concat(r))}}else t.marshalFromView()}inputEventTabular(t,e,i,n,r,o){const a=o&&"string"==typeof o?o:this.pict.getUUID();let s=t.getTabularRecordInput(e,i);if(null!=e&&null!=i&&null!=n&&s)try{let e=t.getMarshalDestinationObject(),i=t.pict.providers.Informary.getComposedContainerAddress(s.PictForm.InformaryContainerAddress,n,s.PictForm.InformaryDataAddress),c=t.sectionManifest.getValueByHash(e,i),l=s.Macro.HTMLSelectorTabular+'[data-i-index="'.concat(n,'"]'),p=t.getInputProviderList(s);for(let e=0;e<p.length;e++)t.pict.providers[p[e]]?(t.pict.providers[p[e]].onEventTabular(t,s,c,l,n,r,a),t.registerOnTransactionCompleteCallback(a,()=>{t.pict.providers[p[e]].onAfterEventTabularCompletion(t,s,c,l,n,r,a)})):t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] cannot find embedded provider [").concat(p[e],"] for input [").concat(s.Hash,"] row ").concat(n," calling inputEvent ").concat(r,"."));o!==a&&t.finalizeTransaction(a)}catch(o){t.log.error("Dynamic form [".concat(t.Hash,"]::[").concat(t.UUID,"] gross error marshaling specific (").concat(e," | ").concat(i," | ").concat(n,") tabular data for group ").concat(e," row ").concat(n," from view in calling inputEvent ").concat(r,": ").concat(o))}}},e.exports.default_configuration=r},{"pict-provider":9}],45:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-Layout",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i)}generateGroupLayoutTemplate(t,e){return""}onGroupLayoutInitialize(t,e){return!0}onDataMarshalToForm(t,e){return!0}},e.exports.default_configuration=r},{"pict-provider":9}],46:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-RecordSet",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.recordProviders={}}count(t,e){return e()}readRecordList(t,e){return e()}readRecord(t,e){return e()}writeRecord(t,e){return e()}deleteRecord(t,e){return e()}},e.exports.default_configuration=r},{"pict-provider":9}],47:[function(t,e,i){const n=t("pict-provider"),r=t("./Pict-Provider-DynamicFormSolverBehaviors.js"),o=t("./Pict-Provider-ListDistilling.js"),a=t("./Pict-Provider-MetaLists.js"),s=t("./inputs/Pict-Provider-Input-Select.js"),c=t("./inputs/Pict-Provider-Input-DateTime.js"),l=t("./inputs/Pict-Provider-Input-TabGroupSelector.js"),p=t("./inputs/Pict-Provider-Input-TabSectionSelector.js"),d=t("./inputs/Pict-Provider-Input-EntityBundleRequest.js"),u=t("./inputs/Pict-Provider-Input-AutofillTriggerGroup.js"),h=t("./inputs/Pict-Provider-Input-Markdown.js"),m=t("./inputs/Pict-Provider-Input-HTML.js"),g=t("./inputs/Pict-Provider-Input-Templated.js"),f=t("./inputs/Pict-Provider-Input-PreciseNumber.js"),D=t("./inputs/Pict-Provider-Input-Link.js"),y=t("./inputs/Pict-Provider-Input-TemplatedEntityLookup.js"),v=t("./inputs/Pict-Provider-Input-Chart.js"),b=t("./inputs/Pict-Provider-Input-TabularTriggerGroup.js"),T={ProviderIdentifier:"Pict-DynamicForms-Solver",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(T)),e),i),this.pict,this.fable,this.log,this.UUID,this.Hash,this._RunSolversRegex=/\brunsolvers\b/gi,this.fable.instantiateServiceProviderIfNotExists("ExpressionParser"),this.pict.addProviderSingleton("DynamicFormSolverBehaviors",r.default_configuration,r),this.pict.providers.DynamicFormSolverBehaviors.injectBehaviors(this.fable.ExpressionParser),this.pict.addProviderSingleton("DynamicMetaLists",a.default_configuration,a),this.pict.addProviderSingleton("ListDistilling",o.default_configuration,o),this.pict.addProviderSingleton("Pict-Input-Select",s.default_configuration,s),this.pict.addProviderSingleton("Pict-Input-DateTime",c.default_configuration,c),this.pict.addProviderSingleton("Pict-Input-TabGroupSelector",l.default_configuration,l),this.pict.addProviderSingleton("Pict-Input-TabSectionSelector",p.default_configuration,p),this.pict.addProviderSingleton("Pict-Input-EntityBundleRequest",d.default_configuration,d),this.pict.addProviderSingleton("Pict-Input-AutofillTriggerGroup",u.default_configuration,u),this.pict.addProviderSingleton("Pict-Input-Markdown",h.default_configuration,h),this.pict.addProviderSingleton("Pict-Input-HTML",m.default_configuration,m),this.pict.addProviderSingleton("Pict-Input-Templated",g.default_configuration,g),this.pict.addProviderSingleton("Pict-Input-PreciseNumber",f.default_configuration,f),this.pict.addProviderSingleton("Pict-Input-TemplatedEntityLookup",y.default_configuration,y),this.pict.addProviderSingleton("Pict-Input-Link",D.default_configuration,D),this.pict.addProviderSingleton("Pict-Input-Chart",v.default_configuration,v),this.pict.addProviderSingleton("Pict-Input-TabularTriggerGroup",b.default_configuration,b)}logSolveOutcome(t){let e=t;if("object"==typeof e&&null!==e||(e=this.lastSolveOutcome),"object"!=typeof e||null===e)return void this.log.error("DynamicSolver [".concat(this.UUID,"]::[").concat(this.Hash,"] No solve outcome available to log."));let i=e.SolverResultsMap.ExecutedSolvers.length;this.log.info("DynamicSolver completed solving ".concat(i," solvers in ").concat(e.EndTimeStamp-e.StartTimeStamp," ms."));for(let t=0;t<e.SolverResultsMap.ExecutedSolvers.length;t++){var n;let i=e.SolverResultsMap.ExecutedSolvers[t];this.log.info(" Solver [".concat(i.Hash,"] Ordinal ").concat(i.Ordinal," executed in ").concat(i.EndTimeStamp-i.StartTimeStamp,"ms solving for [").concat(null==i||null===(n=i.ResultsObject)||void 0===n?void 0:n.PostfixedAssignmentAddress,"] expression [").concat(i.Expression,"]"))}}prepareSolverResultsMap(t){let e=t;return"object"==typeof e&&null!==e||(e={}),"ExecutedSolvers"in e||(e.ExecutedSolvers=[]),"SolverResolutionMap"in e||(e.SolverResolutionMap={}),e}backfillSolverDependencies(t){let e=t;if("object"==typeof e&&null!==e||(e=this.lastSolveOutcome),"object"==typeof e&&null!==e){for(let t=0;t<e.SolverResultsMap.ExecutedSolvers.length;t++){let i=e.SolverResultsMap.ExecutedSolvers[t];if("ResultsObject"in i&&"object"==typeof i.ResultsObject&&null!==i.ResultsObject&&i.ResultsObject.PostfixedAssignmentAddress&&"Result"!=i.ResultsObject.PostfixedAssignmentAddress){"object"!=typeof e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress]&&(e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress]={});for(let t=0;t<i.ResultsObject.PostfixTokenObjects.length;t++){let n=i.ResultsObject.PostfixTokenObjects[t];"Token.Symbol"==n.Type&&(n.Token in e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress]||(e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress][n.Token]=0),e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress][n.Token]=e.SolverResultsMap.SolverResolutionMap[i.ResultsObject.PostfixedAssignmentAddress][n.Token]+1)}}}return e}this.log.error("DynamicSolver [".concat(this.UUID,"]::[").concat(this.Hash,"] No solve outcome available to backfill solver dependencies."))}runSolver(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.pict.resolveStateFromAddress(this.pict.views.PictFormMetacontroller.viewMarshalDestination);"object"==typeof i&&null!==i||(i=this.pict.AppData);let n={},r=this.fable.ExpressionParser.solve(t,i,n,this.pict.manifest);return n.fable&&delete n.fable,e||this.pict.log.trace("Manual solve executed for expression: ".concat(t),n),r}checkSolver(t,e,i){let n=t;if(void 0!==n)if("string"==typeof n&&(n={Expression:n,Ordinal:1}),"Expression"in n){if("Ordinal"in n||(n.Ordinal=1),!e||n.Ordinal==i)return n}else this.log.error("Dynamic View solver ".concat(i," is missing the Expression property."),{Solver:t})}executeSolvers(t,e,i){const n=Array.isArray(e)?e:[];let r={SolverResultsMap:{}};r.StartTimeStamp=+new Date;let o={};r.SolveOrdinals=o;for(let t=0;t<n.length;t++){const e=this.checkSolver(n[t]);if(e){this.checkAutoSolveOrdinal(e.Ordinal,o).AdhocSolvers.push(e)}}let a=Object.keys(o);a.sort((t,e)=>isNaN(Number(t))||isNaN(Number(e))?t.localeCompare(e):Number(t)-Number(e));for(let e=0;e<a.length;e++){this.pict.LogNoisiness>1&&this.log.trace("DynamicSolver [".concat(this.UUID,"]::[").concat(this.Hash,"] [").concat(i,"] Solving ordinal ").concat(a[e]));let n=o[a[e]];this.pict.providers.DynamicFormSolverBehaviors.checkSolverOrdinalEnabled(a[e])&&this.executeAdhocSolvers(t,n.AdhocSolvers,i,Number(a[e]),r.SolverResultsMap)}r.EndTimeStamp=+new Date,this.lastAdhocSolveOutcome=r}executeAdhocSolvers(t,e,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],a=void 0!==n,s=this.prepareSolverResultsMap(r);for(let r=0;r<e.length;r++){let c=this.checkSolver(e[r],a,n);if(void 0===c)continue;if(o&&c.Expression.match(this._RunSolversRegex)){this.pict.LogNoisiness>0&&t.log.warn("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] [").concat(i,"] skipping RecordSet ordinal ").concat(c.Ordinal," [").concat(c.Expression,"] due to solver cycle prevention."));continue}c.StartTimeStamp=+new Date,c.Hash="AdhocSolver-".concat(r),this.pict.LogNoisiness>1&&this.pict.log.trace("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] [").concat(i,"] solving equation ").concat(r," ordinal ").concat(c.Ordinal," [").concat(t.options.Solvers[r],"]")),c.ResultsObject={};let l=this.fable.ExpressionParser.solve(c.Expression,t.getMarshalDestinationObject(),c.ResultsObject,this.pict.manifest,t.getMarshalDestinationObject());this.pict.LogNoisiness>1&&this.pict.log.trace("[".concat(c.Expression,"] [").concat(i,"] result was ").concat(l)),s.ExecutedSolvers.push(c),c.EndTimeStamp=+new Date}}executeGroupSolvers(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=void 0!==e,o=this.prepareSolverResultsMap(i);for(let i=0;i<t.length;i++){let a=this.pict.views[t[i].ViewHash],s=a.getGroup(t[i].GroupIndex),c=this.checkSolver(t[i].Solver,r,e);if(void 0===c)continue;if(n&&c.Expression.match(this._RunSolversRegex)){this.pict.LogNoisiness>0&&a.log.warn("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] skipping RecordSet ordinal ").concat(c.Ordinal," [").concat(c.Expression,"] due to solver cycle prevention."));continue}c.StartTimeStamp=Date.now(),c.Hash="".concat(t[i].ViewHash,"-GroupSolver-").concat(i),this.pict.LogNoisiness>1&&a.log.trace("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] solving RecordSet ordinal ").concat(c.Ordinal," [").concat(c.Expression,"]"));let l=a.getTabularRecordSet(s.GroupIndex);if(Array.isArray(l))for(let t=0;t<l.length;t++){let e=l[t];c.ResultsObject={};let i=a.fable.ExpressionParser.solve(c.Expression,e,c.ResultsObject,s.supportingManifest,e);this.pict.LogNoisiness>1&&a.log.trace("Group ".concat(s.Hash," [").concat(c.Expression,"] record ").concat(t," result was ").concat(i))}else if("object"==typeof l){let t=Object.keys(l);for(let e=0;e<t.length;e++){let i=l[t[e]];c.ResultsObject={};let n=a.fable.ExpressionParser.solve(c.Expression,i,c.ResultsObject,s.supportingManifest,i);this.pict.LogNoisiness>1&&a.log.trace("Group ".concat(s.Hash," [").concat(c.Expression,"] record ").concat(e," result was ").concat(n))}}o.ExecutedSolvers.push(c),c.EndTimeStamp=Date.now()}}executeSectionSolvers(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=void 0!==e,o=this.prepareSolverResultsMap(i);for(let i=0;i<t.length;i++){let a=this.pict.views[t[i].ViewHash],s=this.checkSolver(t[i].Solver,r,e);if(void 0===s)continue;if(n&&s.Expression.match(this._RunSolversRegex)){this.pict.LogNoisiness>0&&a.log.warn("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] skipping RecordSet ordinal ").concat(s.Ordinal," [").concat(s.Expression,"] due to solver cycle prevention."));continue}s.StartTimeStamp=+new Date,s.Hash="".concat(t[i].ViewHash,"-SectionSolver-").concat(i),this.pict.LogNoisiness>1&&a.log.trace("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] solving equation ").concat(i," ordinal ").concat(s.Ordinal," [").concat(a.options.Solvers[i],"]")),s.ResultsObject={};let c=a.fable.ExpressionParser.solve(s.Expression,a.getMarshalDestinationObject(),s.ResultsObject,this.pict.manifest,a.getMarshalDestinationObject());this.pict.LogNoisiness>1&&a.log.trace("[".concat(s.Expression,"] result was ").concat(c)),o.ExecutedSolvers.push(s),s.EndTimeStamp=+new Date}}executeViewSolvers(t,e,i){let n=void 0!==e,r=this.prepareSolverResultsMap(i);for(let i=0;i<t.length;i++){let o=this.checkSolver(t[i].Solver,n,e);if(void 0===o)continue;o.Hash="".concat(t[i].ViewHash,"-ViewSolve-").concat(i),o.StartTimeStamp=+new Date;let a=this.pict.views[t[i].ViewHash];this.pict.LogNoisiness>1&&a.log.trace("Dynamic View [".concat(a.UUID,"]::[").concat(a.Hash,"] running solve() on view [").concat(t[i].ViewHash)),a.solve(),r.ExecutedSolvers.push(o),o.EndTimeStamp=+new Date}}executeValidationSolvers(t){var e;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=null===(e=this.pict.views.PictFormMetacontroller)||void 0===e||null===(e=e.manifestDescription)||void 0===e?void 0:e.ValidationSolvers;if(!Array.isArray(n))return;const r=this.pict.views.PictFormMetacontroller&&this.pict.resolveStateFromAddress(this.pict.views.PictFormMetacontroller.viewMarshalDestination)||this.pict.AppData;for(let e=0;e<n.length;e++){const o=this.checkSolver(n[e]);void 0!==o&&(i&&o.Expression.match(this._RunSolversRegex)?this.pict.LogNoisiness>0&&this.pict.log.warn("Skipping Validation Solver ordinal ".concat(o.Ordinal," [").concat(o.Expression,"] due to solver cycle prevention.")):(this.pict.LogNoisiness>1&&this.pict.log.trace("Running validation solver ordinal ".concat(o.Ordinal," [").concat(o.Expression,"]")),this.pict.ExpressionParser.solve(o.Expression,r,t,this.pict.manifest,this.pict.AppData)))}}checkAutoSolveOrdinal(t,e){return t.toString()in e||(e[t.toString()]={ViewSolvers:[],SectionSolvers:[],GroupSolvers:[],AdhocSolvers:[]}),e[t]}solveViews(t,e){let i=Array.isArray(t)?t:Object.keys(this.fable.views);const n=!0===e;let r={SolverResultsMap:{}};r.StartTimeStamp=+new Date,r.ViewHashes=i;let o={};r.SolveOrdinals=o;for(let t=0;t<i.length;t++){let e=this.fable.views[i[t]];if(!e.isPictView||e.isPictSectionForm||e.isPictMetacontroller){if(e.isPictSectionForm){for(let n=0;n<e.sectionDefinition.Groups.length;n++){let r=e.getGroup(n);if("RecordSetSolvers"in r)for(let e=0;e<r.RecordSetSolvers.length;e++){let a=this.checkSolver(r.RecordSetSolvers[e]);if(a){this.checkAutoSolveOrdinal(a.Ordinal,o).GroupSolvers.push({ViewHash:i[t],GroupIndex:n,Solver:a})}}}if(Array.isArray(e.options.Solvers))for(let n=0;n<e.options.Solvers.length;n++){let r=this.checkSolver(e.options.Solvers[n]);if(r){this.checkAutoSolveOrdinal(r.Ordinal,o).SectionSolvers.push({ViewHash:i[t],Solver:r})}}}}else{this.checkAutoSolveOrdinal(e.options.AutoSolveOrdinal,o).ViewSolvers.push({ViewHash:i[t]})}}let a=Object.keys(o);a.sort((t,e)=>isNaN(Number(t))||isNaN(Number(e))?t.localeCompare(e):Number(t)-Number(e));for(let t=0;t<a.length;t++){this.pict.LogNoisiness>1&&this.log.trace("DynamicSolver [".concat(this.UUID,"]::[").concat(this.Hash,"] Solving ordinal ").concat(a[t]));let e=o[a[t]];this.pict.providers.DynamicFormSolverBehaviors.checkSolverOrdinalEnabled(a[t])&&(this.executeGroupSolvers(e.GroupSolvers,Number(a[t]),r.SolverResultsMap,n),this.executeSectionSolvers(e.SectionSolvers,Number(a[t]),r.SolverResultsMap,n),this.executeViewSolvers(e.ViewSolvers,Number(a[t]),r.SolverResultsMap))}return this.executeValidationSolvers(r.SolverResultsMap,n),this.pict.providers.DynamicMetaLists.buildViewSpecificLists(i),r.EndTimeStamp=+new Date,this.lastSolveOutcome=r,i}},e.exports.default_configuration=T},{"./Pict-Provider-DynamicFormSolverBehaviors.js":42,"./Pict-Provider-ListDistilling.js":53,"./Pict-Provider-MetaLists.js":54,"./inputs/Pict-Provider-Input-AutofillTriggerGroup.js":59,"./inputs/Pict-Provider-Input-Chart.js":60,"./inputs/Pict-Provider-Input-DateTime.js":61,"./inputs/Pict-Provider-Input-EntityBundleRequest.js":64,"./inputs/Pict-Provider-Input-HTML.js":65,"./inputs/Pict-Provider-Input-Link.js":66,"./inputs/Pict-Provider-Input-Markdown.js":67,"./inputs/Pict-Provider-Input-PreciseNumber.js":68,"./inputs/Pict-Provider-Input-Select.js":71,"./inputs/Pict-Provider-Input-TabGroupSelector.js":72,"./inputs/Pict-Provider-Input-TabSectionSelector.js":73,"./inputs/Pict-Provider-Input-TabularTriggerGroup.js":74,"./inputs/Pict-Provider-Input-Templated.js":75,"./inputs/Pict-Provider-Input-TemplatedEntityLookup.js":76,"pict-provider":9}],48:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-DynamicTabularData",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.log}getTabularRecordSet(t,e){let i=t.getGroup(e);return i&&null!=i&&i.RecordSetAddress?t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress):(this.log.warn("PICT View Metatemplate Helper getTabularRecordSet ".concat(e," was not a valid group or did not have a valid RecordSetAddress.")),!1)}getTabularRecordInput(t,e,i){let n=t.getGroup(e);if(!n)return this.log.warn("PICT View Metatemplate Helper getTabularRecordInput ".concat(e," was not a valid group.")),!1;let r=n.supportingManifest.elementAddresses[i];return n.supportingManifest.elementDescriptors[r]}getTabularRecordInputByHash(t,e,i){let n=t.getGroups().find(t=>t.Hash===e);if(!n)return this.log.warn("PICT View Metatemplate Helper getTabularRecordInputByHash ".concat(e," was not a valid group.")),!1;if(!n.supportingManifest)return this.log.warn("PICT View Metatemplate Helper getTabularRecordInputByHash ".concat(e," s not a tabular group.")),!1;for(const t of Object.values(n.supportingManifest.elementDescriptors))if(t.Hash===i)return t;return this.log.warn("PICT View Metatemplate Helper getTabularRecordInputByHash ".concat(e," could not find input ").concat(i,".")),!1}getTabularRecordData(t,e,i){let n=t.getGroup(e);if(!n)return this.log.warn("PICT View Metatemplate Helper getTabularRecordData ".concat(e," was not a valid group.")),!1;let r=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),n.RecordSetAddress);if(r||(r=t.sectionManifest.getValueAtAddress(t.getMarshalDestinationObject(),n.RecordSetAddress)),!r)return this.log.warn("PICT View Metatemplate Helper getTabularRecordData ".concat(e," could not find the record set for ").concat(n.RecordSetAddress,".")),!1;try{return Array.isArray(r)||"object"==typeof r?r[i]:(this.log.warn("PICT View Metatemplate Helper getTabularRecordData ".concat(e," could not determine the type of the record set for ").concat(n.RecordSetAddress,".")),!1)}catch(t){return this.log.error("PICT View Metatemplate Helper getTabularRecordData ".concat(e," encountered an error: ").concat(t)),!1}}createDynamicTableRow(t,e){let i=t.getGroup(e);if(i){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress);if(Array.isArray(e)){if(i.MaximumRowCount&&e.length>=i.MaximumRowCount)return void this.log.warn("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(i.Hash," attempting to add a row but the maximum rows ").concat(i.MaximumRowCount," has been reached."));let n={};i.DefaultRows&&e.length<i.DefaultRows.length&&(n=JSON.parse(JSON.stringify(i.DefaultRows[e.length]))),e.push(i.supportingManifest.populateDefaults(n));let r=this.pict.views.PictFormMetacontroller.filterViews(t=>{if(!t.isPictSectionForm)return!1;let e=t.getGroups();for(let t=0;t<e.length;t++)if(e[t].RecordSetAddress==i.RecordSetAddress)return!0;return!1});for(let t=0;t<r.length;t++)r[t].render();this._rebuildDependentDynamicColumnViews(i.RecordSetAddress),this.pict.providers.DynamicSolver.solveViews(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}createDynamicTableRowWithoutEvents(t,e){let i=t.getGroup(e);if(i){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress);if(Array.isArray(e)){if(i.MaximumRowCount&&e.length>=i.MaximumRowCount)return void this.log.warn("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(i.Hash," attempting to add a row but the maximum rows ").concat(i.MaximumRowCount," has been reached."));let n={};i.DefaultRows&&e.length<i.DefaultRows.length&&(n=JSON.parse(JSON.stringify(i.DefaultRows[e.length]))),e.push(i.supportingManifest.populateDefaults(n))}}}setDynamicTableRowIndex(t,e,i,n){let r=t.getGroup(e);if(r){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),r.RecordSetAddress);if(Array.isArray(e)){let o=parseInt(String(i),10),a=parseInt(String(n),10);if(e.length<=o||o<0)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(r.Hash," attempting to move row [").concat(i,"] to [").concat(n,"] but the index is out of bounds.")),!1;let s=e.splice(o,1);e.splice(a,0,s[0]),this.pict.providers.DynamicSolver.solveViews(),t.render(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}moveDynamicTableRowDown(t,e,i){let n=t.getGroup(e);if(n){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),n.RecordSetAddress);if(Array.isArray(e)){let r=parseInt(String(i),10);if(e.length<=r)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to move row [").concat(i,"] down but it's already at the bottom.")),!1;let o=e.splice(r,1);e.splice(r+1,0,o[0]),this.pict.providers.DynamicSolver.solveViews(),t.render(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}moveDynamicTableRowUp(t,e,i){let n=t.getGroup(e);if(n){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),n.RecordSetAddress);if(Array.isArray(e)){let r=parseInt(String(i),10);if(0==r)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to move row [").concat(i,"] up but it's already at the top.")),!1;if(e.length<=r)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to move row [").concat(i,"] but the index is out of bounds.")),!1;let o=e.splice(r,1);e.splice(r-1,0,o[0]),this.pict.providers.DynamicSolver.solveViews(),t.render(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}deleteDynamicTableRow(t,e,i){let n=t.getGroup(e);if(n){let e=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),n.RecordSetAddress);if(Array.isArray(e)){if(n.MinimumRowCount&&e.length<=n.MinimumRowCount)return this.log.warn("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to delete a row but the minimum rows ").concat(n.MinimumRowCount," has been reached.")),!1;let r=parseInt(String(i),10);if(e.length<=r)return this.log.error("Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] Group ").concat(n.Hash," attempting to delete row [").concat(i,"] but the index is out of bounds.")),!1;let o=e.length;e.splice(r,1),this._spliceDependentPositionalColumns(n.RecordSetAddress,r,o);let a=this.pict.views.PictFormMetacontroller.filterViews(t=>{if(!t.isPictSectionForm)return!1;let e=t.getGroups();for(let t=0;t<e.length;t++)if(e[t].RecordSetAddress==n.RecordSetAddress)return!0;return!1});for(let t=0;t<a.length;t++)a[t].render();this._rebuildDependentDynamicColumnViews(n.RecordSetAddress),this.pict.providers.DynamicSolver.solveViews(),this.pict.views.PictFormMetacontroller.marshalFormSections()}}}_rebuildDependentDynamicColumnViews(t){if("string"!=typeof t||t.length<1)return;if(!this.pict.views.PictFormMetacontroller)return;let e=this.pict.views.PictFormMetacontroller.filterViews(e=>{if(!e.isPictSectionForm)return!1;let i=e.getGroups();for(let e=0;e<i.length;e++){let n=i[e].DynamicColumns;if(Array.isArray(n))for(let e=0;e<n.length;e++)if(n[e]&&n[e].SourceAddress===t)return!0}return!1});for(let t=0;t<e.length;t++){let i=e[t],n=i.getGroups();for(let t=0;t<n.length;t++){let e=n[t];Array.isArray(e.DynamicColumns)&&e.DynamicColumns.length>0&&this.fable.ManifestFactory&&"function"==typeof this.fable.ManifestFactory._resolveDynamicColumns&&this.fable.ManifestFactory._resolveDynamicColumns(i,e)}i.rebuildCustomTemplate(),i.render()}}_spliceDependentPositionalColumns(t,e,i){if("string"!=typeof t||t.length<1)return;if(!this.pict.views.PictFormMetacontroller)return;let n=this.fable.ManifestFactory;if(!n||"function"!=typeof n._parseDynamicColumnTemplate)return;let r=this.pict.views.PictFormMetacontroller.filterViews(t=>t.isPictSectionForm);for(let o=0;o<r.length;o++){let a=r[o],s=a.getGroups();for(let r=0;r<s.length;r++){let o=s[r];if(!Array.isArray(o.DynamicColumns)||o.DynamicColumns.length<1)continue;let c=a.sectionManifest.getValueByHash(a.getMarshalDestinationObject(),o.RecordSetAddress);if(Array.isArray(c)&&!(c.length<1))for(let r=0;r<o.DynamicColumns.length;r++){let s=o.DynamicColumns[r];if(!s||s.SourceAddress!==t)continue;if("Position"!==s.KeyBy)continue;if("string"!=typeof s.InformaryDataAddressTemplate)continue;let l=[];for(let t=0;t<i;t++)l[t]=n._parseDynamicColumnTemplate(s.InformaryDataAddressTemplate,{__Index:t,__RowNumber:t+1});for(let t=0;t<c.length;t++){let n=c[t];if(!n||"object"!=typeof n)continue;for(let t=e;t<i-1;t++){if(!l[t]||!l[t+1])continue;let e=a.sectionManifest.getValueByHash(n,l[t+1]);a.sectionManifest.setValueByHash(n,l[t],e)}let r=l[i-1];r&&a.sectionManifest.setValueByHash(n,r,void 0)}}}}}},e.exports.default_configuration=r},{"pict-provider":9}],49:[function(t,e,i){const n=t("pict-provider"),r=t("../providers/Pict-Provider-DynamicInput.js"),o=t("./dynamictemplates/Pict-DynamicTemplates-DefaultFormTemplates.js"),a=t("./dynamictemplates/Pict-DynamicTemplates-DefaultFormTemplates-ReadOnly.js"),s=t("../templates/Pict-Template-Metacontroller-ValueSetWithGroup.js"),c=t("../templates/Pict-Template-Metatemplate-Input.js"),l=t("../templates/Pict-Template-Metatemplate-InputWithHashAddress.js"),p=t("../templates/Pict-Template-Metatemplate-InputWithView.js"),d=t("../templates/Pict-Template-Metatemplate-InputWithViewAndHashAddress.js"),u=t("../templates/Pict-Template-Metatemplate-InputWithViewAndDescriptorAddress.js"),h=t("../templates/Pict-Template-ControlFromDynamicManifest.js"),m=t("../templates/Pict-Template-ControlFromDynamicManifestForHash.js"),g=t("../templates/Pict-Template-DyanmicView-Value.js"),f=t("../templates/Pict-Template-DyanmicView-ValueByHash.js"),D=t("../templates/Pict-Template-TabularRowLabels.js"),y=t("../templates/Pict-Template-TabularEditingControls.js"),v=t("../templates/Pict-Template-Proxy-PluckJoinUnique.js"),b={ProviderIdentifier:"Pict-DynamicForms-MetaTemplates-Basic",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){var n;super(t,Object.assign({},JSON.parse(JSON.stringify(b)),e),i),this.options,this.pict,this.log,this.pict.addProviderSingleton("DynamicInput",r.default_configuration,r),this.pict.addTemplate(s),this.pict.addTemplate(c),this.pict.addTemplate(l),this.pict.addTemplate(p),this.pict.addTemplate(d),this.pict.addTemplate(u),this.pict.addTemplate(v),this.pict.addTemplate(h),this.pict.addTemplate(m),this.pict.addTemplate(g),this.pict.addTemplate(f),this.pict.addTemplate(D),this.pict.addTemplate(y),null!==(n=this.options)&&void 0!==n&&n.MetaTemplateSet&&"object"==typeof this.options.MetaTemplateSet?this.injectTemplateSet(this.options.MetaTemplateSet):this.injectTemplateSet(o),this.injectTemplateSet(a)}injectTemplateSet(t){var e,i,n,r,a,s;let c="PictFormsUnknown",l=[],p={};c=null!==(e=null===(i=this.options)||void 0===i?void 0:i.MetaTemplateSet)&&void 0!==e?e:c,l=null!==(n=null===(r=this.options)||void 0===r||null===(r=r.MetaTemplateSet)||void 0===r?void 0:r.Templates)&&void 0!==n?n:l,c=null!==(a=null==t?void 0:t.TemplatePrefix)&&void 0!==a?a:c,l=null!==(s=null==t?void 0:t.Templates)&&void 0!==s?s:l;for(let t=0;t<l.length;t++){let e=l[t],i="".concat(c).concat(e.HashPostfix);p[i]={Hash:i,Template:e.Template},e.hasOwnProperty("DefaultInputExtensions")&&(p[i].DefaultInputExtensions=JSON.parse(JSON.stringify(e.DefaultInputExtensions)))}for(let t=0;t<o.Templates.length;t++){let e=o.Templates[t],i="".concat(c).concat(e.HashPostfix);i in p||(p[i]={Hash:i,Template:e.Template},e.hasOwnProperty("DefaultInputExtensions")&&(p[i].DefaultInputExtensions=JSON.parse(JSON.stringify(e.DefaultInputExtensions))))}let d=Object.keys(p);this.log.info("Pict Form Section Provider for [".concat(c,"] Loaded ").concat(d.length," templates."));for(let t=0;t<d.length;t++){let e=p[d[t]];if(this.pict.TemplateProvider.addTemplate(e.Hash,e.Template),e.hasOwnProperty("DefaultInputExtensions"))for(let t=0;t<e.DefaultInputExtensions.length;t++)this.pict.providers.DynamicInput.addDefaultInputProvider(e.Hash,e.DefaultInputExtensions[t])}}},e.exports.default_configuration=b},{"../providers/Pict-Provider-DynamicInput.js":43,"../templates/Pict-Template-ControlFromDynamicManifest.js":89,"../templates/Pict-Template-ControlFromDynamicManifestForHash.js":90,"../templates/Pict-Template-DyanmicView-Value.js":91,"../templates/Pict-Template-DyanmicView-ValueByHash.js":92,"../templates/Pict-Template-Metacontroller-ValueSetWithGroup.js":93,"../templates/Pict-Template-Metatemplate-Input.js":94,"../templates/Pict-Template-Metatemplate-InputWithHashAddress.js":95,"../templates/Pict-Template-Metatemplate-InputWithView.js":96,"../templates/Pict-Template-Metatemplate-InputWithViewAndDescriptorAddress.js":97,"../templates/Pict-Template-Metatemplate-InputWithViewAndHashAddress.js":98,"../templates/Pict-Template-Proxy-PluckJoinUnique.js":99,"../templates/Pict-Template-TabularEditingControls.js":100,"../templates/Pict-Template-TabularRowLabels.js":101,"./dynamictemplates/Pict-DynamicTemplates-DefaultFormTemplates-ReadOnly.js":57,"./dynamictemplates/Pict-DynamicTemplates-DefaultFormTemplates.js":58,"pict-provider":9}],50:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-Provider-FormPersistence",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1,AppIdentifier:!1,FormTypeIdentifier:!1,AutoPersistOnDataChange:!1,AutoPersistDebounceMs:2e3,AutoPersistBundleWithForm:!0,StorageKeyPrefix:"PSF",BundleSourceAddress:"Bundle",FormDataSourceAddress:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.log,this._activeFormGUID=null,this._persistTimerHandle=null,this.storageAdapter=this.createLocalStorageAdapter()}createLocalStorageAdapter(){let t=this;return{setItem:function(e,i){try{return"undefined"!=typeof window&&window.localStorage?(window.localStorage.setItem(e,i),!0):(t.log.warn("FormPersistence: localStorage is not available."),!1)}catch(e){return t.log.error("FormPersistence: localStorage setItem error: ".concat(e.message)),!1}},getItem:function(e){try{return"undefined"!=typeof window&&window.localStorage?window.localStorage.getItem(e):(t.log.warn("FormPersistence: localStorage is not available."),null)}catch(e){return t.log.error("FormPersistence: localStorage getItem error: ".concat(e.message)),null}},removeItem:function(e){try{return"undefined"!=typeof window&&window.localStorage?(window.localStorage.removeItem(e),!0):(t.log.warn("FormPersistence: localStorage is not available."),!1)}catch(e){return t.log.error("FormPersistence: localStorage removeItem error: ".concat(e.message)),!1}},getKeysWithPrefix:function(e){let i=[];try{if("undefined"!=typeof window&&window.localStorage)for(let t=0;t<window.localStorage.length;t++){let n=window.localStorage.key(t);n&&n.startsWith(e)&&i.push(n)}}catch(e){t.log.error("FormPersistence: localStorage getKeysWithPrefix error: ".concat(e.message))}return i}}}setStorageAdapter(t){if("object"!=typeof t||null===t)return this.log.error("FormPersistence setStorageAdapter called with an invalid adapter."),!1;let e=["setItem","getItem","removeItem","getKeysWithPrefix"];for(let i=0;i<e.length;i++)if("function"!=typeof t[e[i]])return this.log.error("FormPersistence setStorageAdapter: adapter is missing required method [".concat(e[i],"].")),!1;return this.storageAdapter=t,!0}getAppIdentifier(){return this.options.AppIdentifier?this.options.AppIdentifier:this.pict&&this.pict.settings&&this.pict.settings.Product?this.pict.settings.Product:"DefaultApp"}getFormTypeIdentifier(){return this.options.FormTypeIdentifier?this.options.FormTypeIdentifier:"DefaultForm"}getStorageKey(t,e){let i="".concat(this.options.StorageKeyPrefix,":").concat(this.getAppIdentifier(),":").concat(this.getFormTypeIdentifier());return e?"".concat(i,":").concat(t,":").concat(e):"".concat(i,":").concat(t)}getIndexKey(){return this.getStorageKey("Index")}getFormIndex(){let t=this.getIndexKey(),e=this.storageAdapter.getItem(t);if(e)try{let t=JSON.parse(e);if("object"==typeof t&&null!==t&&"Records"in t)return t}catch(t){this.log.error("FormPersistence getFormIndex: failed to parse index: ".concat(t.message))}return{Records:{}}}_saveFormIndex(t){let e=this.getIndexKey();return this.storageAdapter.setItem(e,JSON.stringify(t))}newFormRecord(t,e){let i=this.fable.getUUID(),n=(new Date).toISOString(),r=this.getFormIndex();return r.Records[i]={GUID:i,Created:n,Modified:n,BundleContextIdentifier:t||null,Synced:!1,SyncedTimestamp:null,Label:e||null},this._saveFormIndex(r),this.log.info("FormPersistence: created new form record [".concat(i,"]").concat(e?' labeled "'.concat(e,'"'):"",".")),i}saveFormData(t){if(!t)return this.log.error("FormPersistence saveFormData called without an instance GUID."),!1;let e,i,n=this.getFormIndex();if(!(t in n.Records))return this.log.error("FormPersistence saveFormData called for unknown GUID [".concat(t,"].")),!1;try{e=this.options.FormDataSourceAddress?this.pict.resolveStateFromAddress(this.options.FormDataSourceAddress):this.pict.providers.DataBroker.marshalDestinationObject}catch(t){return this.log.error("FormPersistence saveFormData: failed to resolve form data source: ".concat(t.message)),!1}try{i=JSON.stringify(e)}catch(t){return this.log.error("FormPersistence saveFormData: failed to serialize form data: ".concat(t.message)),!1}let r=this.getStorageKey("Form",t),o=this.storageAdapter.setItem(r,i);return o&&(n.Records[t].Modified=(new Date).toISOString(),n.Records[t].Synced=!1,this._saveFormIndex(n)),o}getFormDataRaw(t){if(!t)return this.log.error("FormPersistence getFormDataRaw called without an instance GUID."),null;let e=this.getStorageKey("Form",t);return this.storageAdapter.getItem(e)}loadFormData(t){if(!t)return this.log.error("FormPersistence loadFormData called without an instance GUID."),!1;let e,i,n=this.getStorageKey("Form",t),r=this.storageAdapter.getItem(n);if(null===r)return this.log.warn("FormPersistence loadFormData: no data found for GUID [".concat(t,"].")),!1;try{e=JSON.parse(r)}catch(e){return this.log.error("FormPersistence loadFormData: failed to parse stored data for GUID [".concat(t,"]: ").concat(e.message)),!1}try{i=this.options.FormDataSourceAddress?this.pict.resolveStateFromAddress(this.options.FormDataSourceAddress):this.pict.providers.DataBroker.marshalDestinationObject}catch(t){return this.log.error("FormPersistence loadFormData: failed to resolve destination object: ".concat(t.message)),!1}let o=Object.keys(i);for(let t=0;t<o.length;t++)delete i[o[t]];return Object.assign(i,e),this.pict.views&&this.pict.views.PictFormMetacontroller&&this.pict.views.PictFormMetacontroller.marshalToView(),this.log.info("FormPersistence: loaded form data for GUID [".concat(t,"].")),!0}deleteFormRecord(t){if(!t)return this.log.error("FormPersistence deleteFormRecord called without an instance GUID."),!1;let e=this.getStorageKey("Form",t);this.storageAdapter.removeItem(e);let i=this.getFormIndex();return t in i.Records&&(delete i.Records[t],this._saveFormIndex(i)),this.log.info("FormPersistence: deleted form record [".concat(t,"].")),!0}saveBundleData(t){if(!t)return this.log.error("FormPersistence saveBundleData called without a context identifier."),!1;let e,i;try{e=this.pict.resolveStateFromAddress(this.options.BundleSourceAddress)}catch(t){return this.log.error("FormPersistence saveBundleData: failed to resolve bundle data source: ".concat(t.message)),!1}try{i=JSON.stringify(e)}catch(t){return this.log.error("FormPersistence saveBundleData: failed to serialize bundle data: ".concat(t.message)),!1}let n=this.getStorageKey("Bundle",t);return this.storageAdapter.setItem(n,i)}loadBundleData(t){if(!t)return this.log.error("FormPersistence loadBundleData called without a context identifier."),!1;let e,i,n=this.getStorageKey("Bundle",t),r=this.storageAdapter.getItem(n);if(null===r)return this.log.warn("FormPersistence loadBundleData: no data found for context [".concat(t,"].")),!1;try{e=JSON.parse(r)}catch(e){return this.log.error("FormPersistence loadBundleData: failed to parse stored data for context [".concat(t,"]: ").concat(e.message)),!1}try{i=this.pict.resolveStateFromAddress(this.options.BundleSourceAddress)}catch(t){return this.log.error("FormPersistence loadBundleData: failed to resolve bundle destination: ".concat(t.message)),!1}let o=Object.keys(i);for(let t=0;t<o.length;t++)delete i[o[t]];return Object.assign(i,e),this.log.info("FormPersistence: loaded bundle data for context [".concat(t,"].")),!0}deleteBundleData(t){if(!t)return this.log.error("FormPersistence deleteBundleData called without a context identifier."),!1;let e=this.getStorageKey("Bundle",t);return this.storageAdapter.removeItem(e),this.log.info("FormPersistence: deleted bundle data for context [".concat(t,"].")),!0}listFormRecords(){let t=this.getFormIndex();return Object.values(t.Records)}listUnsyncedFormRecords(){let t=this.listFormRecords(),e=[];for(let i=0;i<t.length;i++)t[i].Synced||e.push(t[i]);return e}listFormRecordsForContext(t){let e=this.listFormRecords(),i=[];for(let n=0;n<e.length;n++)e[n].BundleContextIdentifier===t&&i.push(e[n]);return i}markFormSynced(t){if(!t)return this.log.error("FormPersistence markFormSynced called without an instance GUID."),!1;let e=this.getFormIndex();return t in e.Records?(e.Records[t].Synced=!0,e.Records[t].SyncedTimestamp=(new Date).toISOString(),this._saveFormIndex(e),!0):(this.log.warn("FormPersistence markFormSynced: GUID [".concat(t,"] not found in index.")),!1)}markFormDirty(t){if(!t)return this.log.error("FormPersistence markFormDirty called without an instance GUID."),!1;let e=this.getFormIndex();return t in e.Records?(e.Records[t].Synced=!1,this._saveFormIndex(e),!0):(this.log.warn("FormPersistence markFormDirty: GUID [".concat(t,"] not found in index.")),!1)}getActiveFormGUID(){return this._activeFormGUID}setActiveFormGUID(t){this._activeFormGUID=t||null}persistActiveForm(){if(!this._activeFormGUID)return this.log.warn("FormPersistence persistActiveForm: no active form GUID set."),!1;let t=this.saveFormData(this._activeFormGUID);if(t&&this.options.AutoPersistBundleWithForm){let t=this.getFormIndex().Records[this._activeFormGUID];t&&t.BundleContextIdentifier&&this.saveBundleData(t.BundleContextIdentifier)}return t}triggerDebouncedPersist(){if(!this._activeFormGUID)return;this._persistTimerHandle&&clearTimeout(this._persistTimerHandle);let t=this;this._persistTimerHandle=setTimeout(function(){t.persistActiveForm(),t._persistTimerHandle=null},this.options.AutoPersistDebounceMs)}onFormDataChanged(){this.options.AutoPersistOnDataChange&&this.triggerDebouncedPersist()}},e.exports.default_configuration=r},{"pict-provider":9}],51:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-Informary",AutoInitialize:!1,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.log,this.genericManifest=this.pict.newManyfest({Scope:"GenericInformary"})}getFormElements(t){let e='[data-i-form="'.concat(t,'"]');return this.pict.ContentAssignment.getElement(e)}getContentBrowserAddress(t,e,i,n){return i?'[data-i-form="'.concat(t,'"][data-i-datum="').concat(e,'"][data-i-container="').concat(i,'"][data-i-index="').concat(n,'"]'):'[data-i-form="'.concat(t,'"][data-i-datum="').concat(e,'"]')}getComposedContainerAddress(t,e,i){return"".concat(t,"[").concat(e,"].").concat(i)}marshalFormToData(t,e,i,n,r){const o="object"==typeof i?i:this.genericManifest,a=this.getFormElements(e),s=null==n&&n,c="number"==typeof r?String(r):r;for(const i of a)this.marshalSpecicificFormElementToData(e,i,o,t,s,c)}marshalSpecicificFormElementToData(t,e,i,n,r,o){const a=e.getAttribute("data-i-datum"),s=e.getAttribute("data-i-container"),c=e.getAttribute("data-i-index");if(r&&r!==a)return!1;if(o&&c&&o!==c)return!1;let l=this.pict.ContentAssignment.readContent(this.getContentBrowserAddress(t,a,s,c));if(this.pict.LogNoisiness>3&&this.log.trace("Informary marshalling BrowserForm Data ".concat(l," from form element [").concat(a,"] in container [").concat(s,"] at index [").concat(c,"] to the datum address [").concat(a,"].")),null==l)return!1;s?i.setValueAtAddress(n,this.getComposedContainerAddress(s,c,a),l):i.setValueAtAddress(n,a,l)}marshalDataToForm(t,e,i){let n="object"==typeof i?i:this.genericManifest,r=this.getFormElements(e);for(let i=0;i<r.length;i++)this.marshalSpecificElementDataToForm(e,r[i],n,t)}marshalSpecificElementDataToForm(t,e,i,n){let r=e.getAttribute("data-i-datum"),o=e.getAttribute("data-i-container"),a=Number(e.getAttribute("data-i-index"));if(!r)return this.log.warn("Informary found a form element without a datum address. Skipping."),!1;if(o){let e=i.getValueAtAddress(n,this.getComposedContainerAddress(o,a,r));this.pict.LogNoisiness>3&&this.log.trace("Informary marshalling App State data ".concat(e," to Browser Form element [").concat(r,"] in container [").concat(o,"] at index [").concat(a,"].")),null!=e&&this.pict.ContentAssignment.assignContent(this.getContentBrowserAddress(t,r,o,a),e)}else{let e=i.getValueAtAddress(n,r);this.pict.LogNoisiness>3&&this.log.trace("Informary marshalling App State data ".concat(e," to Browser Form element [").concat(r,"].")),null!=e&&this.pict.ContentAssignment.assignContent(this.getContentBrowserAddress(t,r,o,a),e)}}manualMarshalDataToFormByInput(t){if("object"!=typeof t)return this.log.error("Informary failed to marshal data to form because the input is not an object."),!1;if(!("Hash"in t))return this.log.error("Informary failed to marshal data to form because the input is missing a hash."),!1;if(!("PictForm"in t))return this.log.error("Informary failed to marshal data to form because the input is missing a PictForm object."),!1;let e=this.pict.views[t.PictForm.ViewHash];return e?this.pict.ContentAssignment.assignContent(t.Macro.HTMLSelector,e.getValueByHash(t.Hash)):(this.log.error("Informary failed to marshal data to form because the input view is missing."),!1)}manualMarshalTabularDataToFormByInput(t,e){if("object"!=typeof t)return this.log.error("Informary failed to marshal data to form because the input is not an object."),!1;if(!("Hash"in t))return this.log.error("Informary failed to marshal data to form because the input is missing a hash."),!1;if(!("PictForm"in t))return this.log.error("Informary failed to marshal data to form because the input is missing a PictForm object."),!1;let i=this.pict.views[t.PictForm.ViewHash];return i?this.pict.ContentAssignment.assignContent("".concat(t.Macro.HTMLSelectorTabular,'[data-i-index="').concat(e,'"]'),i.getTabularValueByHash(t.PictForm.GroupIndex,t.PictForm.InputIndex,e)):(this.log.error("Informary failed to marshal data to form because the input view is missing."),!1)}manualMarshalDataToForm(t,e){return this.pict.ContentAssignment.assignContent(t,e)}manualMarshalTabularDataToForm(t,e,i){return this.pict.ContentAssignment.assignContent("".concat(t,'[data-i-index="').concat(i,'"]'),e)}},e.exports.default_configuration=r},{"pict-provider":9}],52:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-InputExtension",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i)}getInputHTMLID(t){return"#INPUT-FOR-".concat(t)}getTabularInputHTMLID(t,e){return"#TABULAR-DATA-".concat(t,"-").concat(e)}onInputInitialize(t,e,i,n,r,o,a){return!0}onInputInitializeTabular(t,e,i,n,r,o,a){return!0}onDataChange(t,e,i,n,r){return!0}onDataChangeTabular(t,e,i,n,r,o){return!0}onDataMarshalToForm(t,e,i,n,r,o,a){return!0}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return!0}onDataRequest(t,e,i,n){return!0}onDataRequestTabular(t,e,i,n,r){return!0}onEvent(t,e,i,n,r,o){return!0}onAfterEventCompletion(t,e,i,n,r,o){return!0}onEventTabular(t,e,i,n,r,o,a){return!0}onAfterEventTabularCompletion(t,e,i,n,r,o,a){return!0}},e.exports.default_configuration=r},{"pict-provider":9}],53:[function(t,e,i){const n=t("pict-provider");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}filterList(t,e,i){if("object"!=typeof e)return this.log.warn("FilterList failed because the input is not an object."),i;if(!("PictForm"in e))return this.log.warn("FilterList failed because the input does not have a PictForm stanza object."),i;if(!Array.isArray(i))return this.log.warn("FilterList for input [".concat(e.Hash,"] failed because the list is not an array.")),[];let n=e.PictForm.ListFilterRules;if(!n||0==n.length||!Array.isArray(n))return i;let r=i.slice(0);for(let o=i.length-1;o>=0;o--){let a=i[o],s=!0;for(let r=0;r<n.length;r++){let o,c=n[r],l="FilteredRecordComparisonValue"in c&&c.FilteredRecordComparisonValueAddress;switch(o=l?t.getValueByHash(l):a.id,c.FilterType){case"Explicit":let n=c.FilterValueAddress,r="FilterValueComparison"in c?c.FilterValueComparison:"==",l="IgnoreEmptyValue"in c&&c.IgnoreEmptyValue,p=t.getValueByHash(n);if(l&&(!p||""==p))break;switch(r.toLowerCase()){case"=":case"==":case"eq":o!=p&&(this.fable.log.debug("FilterList: ".concat(o," != ").concat(p,"; distilling is removing from the outcome array.")),s=!1);break;case"!=":case"ne":case"~=":case"ae":o==p&&(this.fable.log.debug("FilterList: ".concat(o," == ").concat(p,"; distilling is removing from the outcome array.")),s=!1)}break;case"CrossMap":let d,u=c.JoinListAddress,h="JoinListAddressGlobal"in c&&c.JoinListAddressGlobal,m=c.JoinListValueAddress,g=c.ExternalValueAddress,f=c.FilterToValueAddress,D="IgnoreEmpty"in c&&c.IgnoreEmpty;if(h){const e={Fable:this.pict,Pict:this.pict,AppData:this.pict.AppData,Bundle:this.pict.Bundle,View:t};d=this.pict.manifest.getValueAtAddress(e,u)}else d=t.getValueByHash(u);let y=t.getValueByHash(f);if(D&&(!y||""==y))break;if(!Array.isArray(d)&&null!=d&&"object"==typeof d){let t=Object.keys(d),e=[];for(let i=0;i<t.length;i++)e.push(d[t[i]]);d=e}if(!Array.isArray(d)||0==d.length)break;let v=!1;for(let t=0;t<d.length;t++){let e=this.pict.manifest.getValueAtAddress(d[t],m),i=this.pict.manifest.getValueAtAddress(d[t],g);if((!D||e&&""!=e)&&(y==i&&e==o)){v=!0;break}}s=v&&s;break;default:let b=this.pict.providers[c.FilterType];b&&(s=b.filterList(t,e,i,a))}}s||r.splice(o,1)}return r}},e.exports.default_configuration={ProviderIdentifier:"Pict-DynamicForms-ListDistilling",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1}},{"pict-provider":9}],54:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-MetaList",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.fable,this.log,this.UUID,this.Hash,this.computedLists={},this.listDefinitions={}}getList(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.listDefinitions[t].Dynamic){const i=[],n=this.pict.getUUID(),r=n.substring(0,8),o="AppData._MetaLists.".concat(r);return this.pict.manifest.setValueByHash(this.pict,o,i),this.pict.TransactionTracking.registerTransaction(n),this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("GetPickList:".concat(t,":").concat(o,":").concat(JSON.stringify(e)),n),this.pict.views.PictFormMetacontroller.finalizeTransaction(n),delete this.pict.AppData._MetaLists[r],i}return t in this.computedLists?this.computedLists[t]:[]}hasList(t){return t in this.computedLists}buildViewSpecificLists(t){let e=Array.isArray(t)?t:Object.keys(this.fable.views);for(let t=0;t<e.length;t++){let i=e[t],n=this.fable.views[i];if(n.isPictSectionForm){let t=n.sectionDefinition;if("PickLists"in t&&Array.isArray(t.PickLists))for(let e=0;e<t.PickLists.length;e++){let i=t.PickLists[e];this.buildList(i)}}}}rebuildListByHash(t){t in this.listDefinitions&&this.buildList(this.listDefinitions[t])}buildList(t){if("object"!=typeof t)return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList that is not an object. Skipping.")),!1;if(!("Hash"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a Hash. Skipping.")),!1;t.Hash in this.listDefinitions||(this.listDefinitions[t.Hash]=t,this.computedLists[t.Hash]=[]);let e=[];if(!("ListAddress"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a ListAddress. Skipping.")),this.computedLists[t.Hash]=[],!1;if(!("ListSourceAddress"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a ListSourceAddress. Skipping.")),this.computedLists[t.Hash]=[],!1;if(!("TextTemplate"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a TextTemplate. Skipping.")),this.computedLists[t.Hash]=[],!1;if(!("IDTemplate"in t))return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] found a PickList without a IDTemplate. Skipping.")),this.computedLists[t.Hash]=[],!1;if(!this.pict.views.PictFormMetacontroller)return this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] requires PictFormMetacontroller but not found. Skipping.")),this.computedLists[t.Hash]=[],!1;let i=this.pict.providers.DataBroker.getValueByHash(t.ListSourceAddress);if(!i)return this.computedLists[t.Hash]=[],!1;let n={};if(Array.isArray(i))for(let r=0;r<i.length;r++){let o=i[r];if(o&&"object"==typeof o){let i=this.pict.parseTemplate(t.TextTemplate,o),r=this.pict.parseTemplate(t.IDTemplate,o);if(!i||!r){this.log.error("Dynamic MetaList Provider [".concat(this.UUID,"]::[").concat(this.Hash,"] failed to generate the Text or ID for PickList [").concat(t.Hash,"]. Skipping."));continue}if(t.Unique&&r in n)continue;n[r]=!0,e.push({id:r,text:i})}}t.Sorted&&e.sort((t,e)=>t.text.localeCompare(e.text)),this.computedLists[t.Hash]=e}},e.exports.default_configuration=r},{"pict-provider":9}],55:[function(t,e,i){const n=t("pict-provider"),r=t("../views/Pict-View-DynamicForm.js"),o={ProviderIdentifier:"Pict-DynamicForms-Provider-MetatemplateGenerator",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1},a={Hash:"DynamicInputs",Name:"Dynamic Inputs",ViewHash:"PictFormMetacontroller-DynamicInputs",IncludeInMetatemplateSectionGeneration:!1,Manifests:{Section:{Scope:"MetaTemplate",Sections:[{Hash:"DynamicInputs",Name:"Dynamic Inputs"}],Descriptors:{"MetaTemplate.DynamicInputPlaceholder":{Name:"DynamicInputPlaceholder",Hash:"DynamicInputPlaceholder",DataType:"String",Macro:{HTMLSelector:""},PictForm:{Section:"DynamicInputs"}}}}}};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(o)),e),i),this.pict,this.log,this.dynamicInputView,this.baseTemplatePrefix="Pict-MT-Base"}onInitializeAsync(t){return this.createOnDemandMetatemplateView(),super.onInitializeAsync(t)}createOnDemandMetatemplateView(){const t=JSON.parse(JSON.stringify(a));t.ViewHash in this.pict.views?this.dynamicInputView=this.pict.views[t.ViewHash]:this.dynamicInputView=this.pict.addView(t.ViewHash,t,r)}getMetatemplateTemplateReferenceRaw(t,e,i){return t.checkViewSpecificTemplate(e)?"\n{~T:".concat(t.formsTemplateSetPrefix).concat(e,":").concat(i,"~}"):t.checkThemeSpecificTemplate(e)?"\n{~T:".concat(t.defaultTemplatePrefix).concat(e,":").concat(i,"~}"):""}getMetatemplateTemplateReference(t,e,i){return this.getMetatemplateTemplateReferenceRaw(t,e,'Pict.views["'.concat(t.Hash,'"].').concat(i))}getInputMetatemplateTemplateReference(t,e,i,n){let r="-Template-Input-InputType-".concat(i),o="-Template-Input-DataType-".concat(e);if(i){let e=this.getMetatemplateTemplateReference(t,r,n);if(e)return e}let a=this.getMetatemplateTemplateReference(t,o,n);return a||this.getMetatemplateTemplateReference(t,"-Template-Input",n)}getTabularInputMetatemplateTemplateReference(t,e,i,n,r,o){let a="-TabularTemplate-Begin-Input-InputType-".concat(i),s="-TabularTemplate-Mid-Input-InputType-".concat(i),c="-TabularTemplate-End-Input-InputType-".concat(i),l="-TabularTemplate-Begin-Input-DataType-".concat(e),p="-TabularTemplate-Mid-Input-DataType-".concat(e),d="-TabularTemplate-End-Input-DataType-".concat(e),u=this.getMetatemplateTemplateReference(t,"-TabularTemplate-Mid-Input",n),h=this.getMetatemplateTemplateReference(t,"-TabularTemplate-InformaryAddress-Input",n);if(i){let e=this.getMetatemplateTemplateReference(t,a,n),i=this.getMetatemplateTemplateReference(t,c,n),r=this.getMetatemplateTemplateReference(t,s,n);if(u=r||u,e&&i)return e+u+h+i}let m=this.getMetatemplateTemplateReference(t,l,n),g=this.getMetatemplateTemplateReference(t,d,n);if(m&&g){let e=this.getMetatemplateTemplateReference(t,p,n);return u=e||u,m+u+h+g}return m=this.getMetatemplateTemplateReference(t,"TabularTemplate-Begin-Input",n),g=this.getMetatemplateTemplateReference(t,"TabularTemplate-End-Input",n),m&&g?m+u+h+g:(this.log.error("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] catastrophic error generating tabular metatemplate: missing input template for Data Type ").concat(e," and Input Type ").concat(i,", Data Address ").concat(n,", Group Index ").concat(r," and Record Subaddress ").concat(o,".")),"")}getVerticalInputMetatemplateTemplateReference(t,e,i,n){let r="-VerticalTemplate-Input-InputType-".concat(i),o="-VerticalTemplate-Input-DataType-".concat(e);if(i){let e=this.getMetatemplateTemplateReference(t,r,n);if(e)return e}let a=this.getMetatemplateTemplateReference(t,o,n);return a||this.getMetatemplateTemplateReference(t,"-Template-Input",n)}getGroupLayoutProvider(t,e){let i="string"==typeof e.Layout?e.Layout:"string"==typeof t.sectionDefinition.DefaultGroupLayout?t.sectionDefinition.DefaultGroupLayout:"Record";switch(i){case"Tabular":return this.pict.providers["Pict-Layout-Tabular"];case"Record":return this.pict.providers["Pict-Layout-Record"];case"Vertical":return this.pict.providers["Pict-Layout-VerticalRecord"];default:return"Pict-Layout-".concat(i)in this.pict.providers?this.pict.providers["Pict-Layout-".concat(i)]:this.pict.providers["Pict-Layout-Record"]}}rebuildCustomTemplate(t){let e="";this.pict.views.PictFormMetacontroller&&"formTemplatePrefix"in this.pict.views.PictFormMetacontroller&&!("defaultTemplatePrefix"in t)&&(t.defaultTemplatePrefix=this.pict.views.PictFormMetacontroller.formTemplatePrefix),e+=this.getMetatemplateTemplateReference(t,"-Template-Wrap-Prefix","sectionDefinition"),e+=this.getMetatemplateTemplateReference(t,"-Template-Section-Prefix","sectionDefinition");for(let i=0;i<t.sectionDefinition.Groups.length;i++){let n=t.sectionDefinition.Groups[i];n.GroupIndex=i,n.SectionTabularRowVirtualTemplateHash="Pict-Form-Template-TabularRow-Virtual-".concat(t.options.Hash,"-G").concat(n.GroupIndex),n.SectionTabularRowTemplateHash="Pict-Form-Template-TabularRow-".concat(t.options.Hash,"-G").concat(n.GroupIndex),e+=this.getGroupLayoutProvider(t,n).generateGroupLayoutTemplate(t,n)}e+=this.getMetatemplateTemplateReference(t,"-Template-Section-Postfix","sectionDefinition"),e+=this.getMetatemplateTemplateReference(t,"-Template-Wrap-Postfix","sectionDefinition"),this.pict.providers.MetatemplateMacros.rebuildMacros(t),this.pict.TemplateProvider.addTemplate(t.options.SectionTemplateHash,e)}},e.exports.default_configuration=o},{"../views/Pict-View-DynamicForm.js":103,"pict-provider":9}],56:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-DynamicForms-MetatemplateMacros",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),this.options,this.pict,this.fable,this.log,this.UUID,this.Hash,this.additionalInputMacros={},"AdditionalInputMacros"in this.options&&(this.additionalInputMacros=Object.assign(this.additionalInputMacros,this.options.AdditionalInputMacros)),"CustomInputMacros"in this.pict.settings&&(this.AdditionalInputMacros=Object.assign(this.additionalInputMacros,this.pict.settings.CustomInputMacros)),this.additionalGroupMacros={},"AdditionalGroupMacros"in this.options&&(this.additionalGroupMacros=Object.assign(this.additionalGroupMacros,this.options.AdditionalGroupMacros)),"CustomGroupMacros"in this.pict.settings&&(this.additionalGroupMacros=Object.assign(this.additionalGroupMacros,this.pict.settings.CustomGroupMacros)),this.additionalSectionMacros={},"AdditionalSectionMacros"in this.options&&(this.additionalSectionMacros=Object.assign(this.additionalSectionMacros,this.options.AdditionalSectionMacros)),"CustomSectionMacros"in this.pict.settings&&(this.additionalSectionMacros=Object.assign(this.additionalSectionMacros,this.pict.settings.CustomSectionMacros))}buildInputMacros(t,e){let i=Object.keys(t.options.MacroTemplates.Input),n=Object.keys(this.additionalInputMacros);"Macro"in e||(e.Macro={});for(let n=0;n<i.length;n++)e.Macro[i[n]]=t.pict.parseTemplate(t.options.MacroTemplates.Input[i[n]],e,null,[t]);for(let i=0;i<n.length;i++)e.Macro[n[i]]=t.pict.parseTemplate(this.additionalInputMacros[n[i]],e,null,[t])}rebuildMacros(t){if(!("MacroTemplates"in t.options))return!1;let e=Object.keys(t.options.MacroTemplates.Section),i=Object.keys(this.additionalSectionMacros);"object"!=typeof t.sectionDefinition.Macro&&(t.sectionDefinition.Macro={});for(let i=0;i<e.length;i++)t.sectionDefinition.Macro[e[i]]=t.pict.parseTemplate(t.options.MacroTemplates.Section[e[i]],t.sectionDefinition,null,[t]);for(let e=0;e<i.length;e++)t.sectionDefinition.Macro[i[e]]=t.pict.parseTemplate(this.additionalSectionMacros[i[e]],t.sectionDefinition,null,[t]);for(let e=0;e<t.sectionDefinition.Groups.length;e++){let i=t.sectionDefinition.Groups[e],n=Object.keys(t.options.MacroTemplates.Group),r=Object.keys(this.additionalGroupMacros);"Macro"in i||(i.Macro={});for(let e=0;e<n.length;e++)i.Macro[n[e]]=t.pict.parseTemplate(t.options.MacroTemplates.Group[n[e]],i,null,[t]);for(let e=0;e<r.length;e++)i.Macro[r[e]]=t.pict.parseTemplate(this.additionalGroupMacros[r[e]],i,null,[t]);Array.isArray(i.Rows)||(i.Rows=[]);for(let e=0;e<i.Rows.length;e++){let n=i.Rows[e];for(let e=0;e<n.Inputs.length;e++)this.buildInputMacros(t,n.Inputs[e])}if(i.supportingManifest){let e=Object.keys(i.supportingManifest.elementDescriptors);for(let n=0;n<e.length;n++)this.buildInputMacros(t,i.supportingManifest.elementDescriptors[e[n]])}}}},e.exports.default_configuration=r},{"pict-provider":9}],57:[function(t,e,i){e.exports={TemplatePrefix:"Pict-Forms-ReadOnly",Templates:[{HashPostfix:"-Template-Form-Container-Header",Template:'\n\x3c!-- Pict Form Metacontroller container Header\n\n ;,//;, ,;/\n o:::::::;;///\n>::::::::;;\\ \'\'\\\\\'" \';\nGlug glug glug Oo... --\x3e\n<div id="Pict-{~D:Context[0].UUID~}-FormContainer" class="pict-form">'},{HashPostfix:"-Template-Form-Container-Wrap-Prefix",Template:'\n\x3c!-- Pict Form Metacontroller container [{~D:Context[0].UUID~}] --\x3e\n<div id="Pict-{~D:Context[0].UUID~}-{~D:Record.options.Hash~}-Wrap" class="pict-form">'},{HashPostfix:"-Template-Form-Container",Template:'\n\n\t\x3c!-- Pict Form View Container [{~D:Record.UUID~}]::[{~D:Record.Hash~}] --\x3e\n\t<div id="Pict-Form-Container-{~D:Record.options.Hash~}" class="pict-form-view"></div>'},{HashPostfix:"-Template-Form-Container-Custom",Template:'\n\n\t\x3c!-- Pict Form View Container [{~D:Record.UUID~}]::[{~D:Record.Hash~}] --\x3e\n\t<div id="{~D:Record.options.CustomTargetID~}" class="pict-form-view"></div>'},{HashPostfix:"-Template-Form-Container-Wrap-Postfix",Template:"\n</div>\n\x3c!-- Pict Form Metacontroller container [{~D:Context[0].UUID~}] --\x3e\n"},{HashPostfix:"-Template-Wrap-Prefix",Template:"\n\t\x3c!-- Pict Form Wrap Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] --\x3e\n"},{HashPostfix:"-Template-Wrap-Postfix",Template:"\n\t\x3c!-- Pict Form Wrap Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] --\x3e\n"},{HashPostfix:"-Template-Section-Prefix",Template:'\n\t\t\x3c!-- Form Section Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t<div class="pict-form-section">\n\t\t<h2>{~D:Record.Name~}</h2>\n'},{HashPostfix:"-Template-Section-Postfix",Template:"\n\t\t</div>\n\t\t\x3c!-- Form Section Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Group-Prefix",Template:'\n\t\t\t\x3c!-- Form Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t<div id="GROUP-{~D:Context[0].formID~}-{~D:Record.Hash~}" {~D:Record.Macro.PictFormLayout~}>\n\t\t\t<h3>Group: {~D:Record.Name~}</h3>\n'},{HashPostfix:"-Template-Row-Prefix",Template:"\n\t\t\t\t\x3c!-- Form Template Row Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t\t<div>\n"},{HashPostfix:"-Template-Row-Postfix",Template:"\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- Form Template Row Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Group-Postfix",Template:"\n\t\t\t</div>\n\t\t\t\x3c!-- Form Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input disabled type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input disabled type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input disabled type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-InputType-TextArea",Template:"\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <textarea disabled {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~}></textarea>\n"},{HashPostfix:"-Template-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <select disabled {~D:Record.Macro.ControlAttr~} id="SELECT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}"></select>\n'},{HashPostfix:"-Template-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input disabled {~D:Record.Macro.ControlAttr~} id="DATETIME-INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}" type="datetime-local" value="" />\n'},{HashPostfix:"-Template-Input-InputType-TabGroupSelector",DefaultInputExtensions:["Pict-Input-TabGroupSelector"],Template:'\n\t\t\t\t\t\x3c!-- InputType TabGroupSelector {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t\x3c!-- the TabSelector Input provider deals with populating this from the manifest. --\x3e\n\t\t\t\t\t<input disabled type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t\x3c!-- <span>{~D:Record.Name~}:</span> --\x3e\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="TAB-SELECT-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n'},{HashPostfix:"-Template-Input-InputType-TabGroupSelector-TabElement",Template:"\n\t\t\t\x3c!-- Sections have \"tab groups\" which are defined by the hash of the Descriptor that hosts the current TabGroup value. --\x3e\n\t\t\t<a href=\"#\" id=\"TAB-{~D:Context[1].TabGroupHash~}-{~D:Record.Macro.RawHTMLID~}\" onclick=\"{~P~}.providers['Pict-Input-TabGroupSelector'].selectTabByViewHash('{~D:Context[0].Hash~}','{~D:Record.Hash~}', '{~D:Context[1].TabGroupHash~}')\">{~D:Context[1].TabGroupHash~}</a>\n"},{HashPostfix:"-Template-Input-InputType-TabGroupSelector-EmptyGroupContent",Template:"\n\t\t\t\x3c!-- This is the template for if the tmpInput.PictForm.TabGroupSet array is empty. --\x3e\n\t\t\t<p>Warning! No tabs to select from for {~D:Record.TabGroupSetRawHTMLID~}</p>\n"},{HashPostfix:"-TuiGrid-Container",Template:'\n\t\t\t<div {~D:Record.Macro.ControlAttr~} id="{~D:Record.TuiGridHTMLID~}"></div>\n'},{HashPostfix:"-TuiGrid-Controls",Template:"\n\t\t\t<div>[ <a href=\"#\" onclick=\"{~P~}.providers['Pict-Layout-TuiGrid'].addRow('{~D:Context[0].Hash~}', {~D:Record.GroupIndex~})\">create</a> ]</div>\n"},{HashPostfix:"-TabularTemplate-Group-Prefix",Template:'\n\t\t\t<div id="GROUP-{~D:Context[0].formID~}-{~D:Record.Hash~}" {~D:Record.Macro.PictFormLayout~}>\n\t\t\t<table>\n\t\t\t\t\t<tbody>\n\t\t\t\x3c!-- Form Tabular Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-Group-Postfix",Template:'\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<div><a href="#" onclick="{~D:Record.Macro.TabularCreateRowFunctionCall~}">create</a></div>\n\t\t\t</div>\n\t\t\t\x3c!-- Form Tabular Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-RowHeader-ExtraPrefix",Template:"\x3c!-- TabularTemplateRowHeader-ExtraPrefix --\x3e"},{HashPostfix:"-TabularTemplate-RowHeader-ExtraPostfix",Template:'\x3c!-- TabularTemplateRowHeader-ExtraPostfix --\x3e\n\t\t\t\t\t\t<th style="min-width:100px;"></th>\n'},{HashPostfix:"-TabularTemplate-Row-ExtraPrefix",Template:"\x3c!-- TabularTemplateRow-ExtraPrefix --\x3e"},{HashPostfix:"-TabularTemplate-Row-ExtraPostfix",Template:"\x3c!-- TabularTemplateRow-ExtraPostfix--\x3e\n\t\t\t\t\t<td><a href=\"#\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].deleteDynamicTableRow({~D:Record.Group~},'{~D:Record.Key~}')\">del</a>\n\t\t\t\t\t<a href=\"#\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].moveDynamicTableRowUp({~D:Record.Group~},'{~D:Record.Key~}')\">up</a>\n\t\t\t\t\t<a href=\"#\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].moveDynamicTableRowDown({~D:Record.Group~},'{~D:Record.Key~}')\">down</a></td>\n"},{HashPostfix:"-TabularTemplate-RowHeader-Prefix",Template:"\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n"},{HashPostfix:"-TabularTemplate-HeaderCell",Template:'\n\t\t\t\t\t\t\x3c!-- Descriptor {~D:Record.Name~} [{~D:Record.Hash~}] -> {~D:Record.Address~} --\x3e\n\t\t\t\t\t\t<th data-tabular-column-index="{~D:Record.PictForm.InputIndex~}">{~D:Record.Name~}</th>\n'},{HashPostfix:"-TabularTemplate-RowHeader-Postfix",Template:"\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n"},{HashPostfix:"-TabularTemplate-Row-Prefix",Template:'\n\t\t\t\t\t<tr data-tabular-row-index="{~D:Record.Key~}" data-tabular-group-index="{~D:Record.Group~}">{~T:TabularTemplateRow-ExtraPrefix~}\n'},{HashPostfix:"-TabularTemplate-Cell-Prefix",Template:'\n\t\t\t\t\t\t<td data-tabular-column-index="{~D:Record.PictForm.InputIndex~}">\x3c!-- {~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-Cell-Postfix",Template:"\n\t\t\t\t\t\t</td>\n"},{HashPostfix:"-TabularTemplate-Row-Postfix",Template:"\n\t\t\t\t\t{~T:TabularTemplateRow-ExtraPostfix~}</tr>"},{HashPostfix:"-TabularTemplate-Begin-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input",Template:' value="">'},{HashPostfix:"-TabularTemplate-Mid-Input",Template:" "},{HashPostfix:"-TabularTemplate-InformaryAddress-Input",Template:" data-i-index=\"{~D:Context[2].Key~}\" onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].dataChangedTabular('{~D:Context[2].Group~}', '{~D:Record.PictForm.InputIndex~}', '{~D:Context[2].Key~}')\" "},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-String",Template:' value="">'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-Number",Template:' value="">\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-TextArea",Template:"\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<textarea disabled {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} "},{HashPostfix:"-TabularTemplate-End-Input-InputType-TextArea",Template:" ></textarea>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" id="SELECT-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Option",Template:" value=\"\">\n\t\t\t\t\t<select disabled {~D:Record.Macro.ControlAttr~} id=\"SELECT-TABULAR-DROPDOWN-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}\" onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].inputDataRequestTabular('{~D:Context[2].Group~}', '{~D:Record.PictForm.InputIndex~}', '{~D:Context[2].Key~}')\"></select>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Boolean",Template:' value="" />\n'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" id="DATETIME-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-DateTime",Template:' value="">\n\t\t\t\t\t<input disabled {~D:Record.Macro.ControlAttr~} id="DATETIME-TABULAR-INPUT-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" onchange="{~P~}.views[\'{~D:Context[0].Hash~}\'].inputDataRequestTabular(\'{~D:Context[2].Group~}\', \'{~D:Record.PictForm.InputIndex~}\', \'{~D:Context[2].Key~}\')" type="datetime-local" value="" />\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Hidden",Template:'\n\t\t\t\t\t\x3c!-- InputType Hidden {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input disabled type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} {~D:Record.Macro.InformaryTabular~}\n'},{HashPostfix:"-TabularTemplate-End-Input-InputType-Hidden",Template:' value="">\n'}]}},{}],58:[function(t,e,i){e.exports={TemplatePrefix:"Pict-MT-Base",Templates:[{HashPostfix:"-Template-Form-Container-Header",Template:'\n\x3c!-- Pict Form Metacontroller container Header\n\n ;,//;, ,;/\n o:::::::;;///\n>::::::::;;\\ \'\'\\\\\'" \';\nGlug glug glug Oo... --\x3e\n<div id="Pict-{~D:Context[0].UUID~}-FormContainer" class="pict-form">'},{HashPostfix:"-Template-Form-Container-Wrap-Prefix",Template:'\n\x3c!-- Pict Form Metacontroller container [{~D:Context[0].UUID~}] --\x3e\n<div id="Pict-{~D:Context[0].UUID~}-{~D:Record.options.Hash~}-Wrap" class="pict-form">'},{HashPostfix:"-Template-Form-Container",Template:'\n\n\t\x3c!-- Pict Form View Container [{~D:Record.UUID~}]::[{~D:Record.Hash~}] --\x3e\n\t<div id="Pict-Form-Container-{~D:Record.options.Hash~}" class="pict-form-view"></div>'},{HashPostfix:"-Template-Form-Container-Custom",Template:'\n\n\t\x3c!-- Pict Form View Container [{~D:Record.UUID~}]::[{~D:Record.Hash~}] --\x3e\n\t<div id="{~D:Record.options.CustomTargetID~}" class="pict-form-view"></div>'},{HashPostfix:"-Template-Form-Container-Wrap-Postfix",Template:"\n</div>\n\x3c!-- Pict Form Metacontroller container [{~D:Context[0].UUID~}] --\x3e\n"},{HashPostfix:"-Template-Wrap-Prefix",Template:"\n\t\x3c!-- Pict Form Wrap Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] --\x3e\n"},{HashPostfix:"-Template-Wrap-Postfix",Template:"\n\t\x3c!-- Pict Form Wrap Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] --\x3e\n"},{HashPostfix:"-Template-Section-Prefix",Template:'\n\t\t\x3c!-- Form Section Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t<div id="SECTION-{~D:Context[0].formID~}" class="pict-form-section {~D:Record.CSSClass~}">\n\t\t<h2>{~D:Record.Name~}</h2>\n'},{HashPostfix:"-Template-Section-Postfix",Template:"\n\t\t</div>\n\t\t\x3c!-- Form Section Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Group-Prefix",Template:'\n\t\t\t\x3c!-- Form Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t<div id="GROUP-{~D:Context[0].formID~}-{~D:Record.Hash~}" class="{~D:Record.CSSClass~}" {~D:Record.Macro.PictFormLayout~}>\n\t\t\t<h3>Group: {~D:Record.Name~}</h3>\n'},{HashPostfix:"-Template-Row-Prefix",Template:"\n\t\t\t\t\x3c!-- Form Template Row Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t\t<div>\n"},{HashPostfix:"-Template-Row-Postfix",Template:"\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- Form Template Row Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-VerticalRow-Prefix",Template:'\n\t\t\t\t\x3c!-- Form Template Vertical Row Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-group">\n'},{HashPostfix:"-Template-VerticalRow-Postfix",Template:"\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- Form Template Vertical Row Postfix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Group-Postfix",Template:"\n\t\t\t</div>\n\t\t\t\x3c!-- Form Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-Template-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-PreciseNumber",Template:'\n\t\t\t\t\t\x3c!-- DataType PreciseNumber {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-InputType-PreciseNumberReadOnly",DefaultInputExtensions:["Pict-Input-PreciseNumber"],Template:'\n\t\t\t\t\t\x3c!-- InputType PreciseNumberReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} id="INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" value="" readonly="readonly">\n'},{HashPostfix:"-Template-Input-InputType-TextArea",Template:"\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <textarea {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~}></textarea>\n"},{HashPostfix:"-Template-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <select {~D:Record.Macro.ControlAttr~} id="SELECT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}"></select>\n'},{HashPostfix:"-Template-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n'},{HashPostfix:"-Template-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input {~D:Record.Macro.ControlAttr~} id="DATETIME-INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}" type="datetime-local" value="" />\n'},{HashPostfix:"-Template-Input-InputType-Hidden",Template:"\n\t\t\t\t\t\x3c!-- InputType Hidden {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n"},{HashPostfix:"-Template-Input-InputType-Color",Template:'\n\t\t\t\t\t\x3c!-- InputType Color {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="color" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} />\n'},{HashPostfix:"-Template-Input-InputType-DisplayOnly",Template:"\n\t\t\t\t\t\x3c!-- InputType DisplayOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <span {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></span>\n"},{HashPostfix:"-Template-Input-InputType-ReadOnly",Template:'\n\t\t\t\t\t\x3c!-- InputType ReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="text" readonly {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></input>\n'},{HashPostfix:"-Template-Input-InputType-Link",DefaultInputExtensions:["Pict-Input-Link"],Template:'\n\t\t\t\t\t\x3c!-- InputType Link {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<a {~D:Record.Macro.ControlAttr~} id="INPUT-FOR-{~D:Record.Macro.RawHTMLID~}">{~D:Record.Name~}</a>\n'},{HashPostfix:"-Template-Input-InputType-Chart",DefaultInputExtensions:["Pict-Input-Chart"],Template:'\n\t\t\t\t\t\x3c!-- InputType Chart {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<div style="width:{~DWAF:Record.PictForm.QuantizedWidth:100~}%; display:inline-block;">\n\t\t\t\t\t\t<input type="hidden" id="CONFIG-FOR-{~D:Record.Macro.RawHTMLID~}" value="">\n\t\t\t\t\t\t<h3><span>{~D:Record.Name~}:</span></h3>\n\t\t\t\t\t\t<div style="width:100%;"><canvas id="CANVAS-FOR-{~D:Record.Macro.RawHTMLID~}" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></canvas></div>\n\t\t\t\t\t</div>\n'},{HashPostfix:"-Template-Input-InputType-Markdown",DefaultInputExtensions:["Pict-Input-Markdown"],Template:'\n\t\t\t\t\t\x3c!-- InputType Markdown {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-markdown"></div>\n'},{HashPostfix:"-Template-Input-InputType-HTML",DefaultInputExtensions:["Pict-Input-HTML"],Template:'\n\t\t\t\t\t\x3c!-- InputType Markdown {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-html"></div>\n'},{HashPostfix:"-Template-Input-InputType-Templated",DefaultInputExtensions:["Pict-Input-Templated"],Template:'\n\t\t\t\t\t\x3c!-- InputType Templated {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-templated"></div>\n'},{HashPostfix:"-Template-Input-InputType-TemplatedEntityLookup",DefaultInputExtensions:["Pict-Input-TemplatedEntityLookup"],Template:'\n\t\t\t\t\t\x3c!-- InputType TemplatedEntityLookup {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n'},{HashPostfix:"-Template-Input-InputType-RichText",DefaultInputExtensions:["Pict-Input-RichText"],Template:'\n\t\t\t\t\t\x3c!-- InputType RichText {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-richtext"></div>\n'},{HashPostfix:"-Template-Input-InputType-Diagram",DefaultInputExtensions:["Pict-Input-Diagram"],Template:'\n\t\t\t\t\t\x3c!-- InputType Diagram {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-diagram"></div>\n'},{HashPostfix:"-VerticalTemplate-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-DataType-PreciseNumber",Template:'\n\t\t\t\t\t\x3c!-- DataType PreciseNumber {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-PreciseNumberReadOnly",DefaultInputExtensions:["Pict-Input-PreciseNumber"],Template:'\n\t\t\t\t\t\x3c!-- InputType PreciseNumberReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} id="INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" value="" readonly="readonly">\n\t\t\t\t\t</div>\n\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-TextArea",Template:'\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<textarea {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~}></textarea>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<select {~D:Record.Macro.ControlAttr~} id="SELECT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}"></select>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input {~D:Record.Macro.ControlAttr~} id="DATETIME-INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" onchange="{~D:Record.Macro.DataRequestFunction~}" type="datetime-local" value="" />\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Color",Template:'\n\t\t\t\t\t\x3c!-- InputType Color {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="color" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} />\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-DisplayOnly",Template:'\n\t\t\t\t\t\x3c!-- InputType DisplayOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<span {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></span>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-ReadOnly",Template:'\n\t\t\t\t\t\x3c!-- InputType ReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<input type="text" readonly {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}></input>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Link",DefaultInputExtensions:["Pict-Input-Link"],Template:'\n\t\t\t\t\t\x3c!-- InputType Link {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">\n\t\t\t\t\t<a {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~}>{~D:Record.Name~}</a>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Markdown",DefaultInputExtensions:["Pict-Input-Markdown"],Template:'\n\t\t\t\t\t\x3c!-- InputType Markdown {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-markdown"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-HTML",DefaultInputExtensions:["Pict-Input-HTML"],Template:'\n\t\t\t\t\t\x3c!-- InputType Markdown {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-html"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Templated",DefaultInputExtensions:["Pict-Input-Templated"],Template:'\n\t\t\t\t\x3c!-- InputType Templated {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-templated"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-TemplatedEntityLookup",DefaultInputExtensions:["Pict-Input-TemplatedEntityLookup"],Template:'\n\t\t\t\t\t\x3c!-- InputType TemplatedEntityLookup {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<span>{~D:Record.Name~}:</span>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-RichText",DefaultInputExtensions:["Pict-Input-RichText"],Template:'\n\t\t\t\t\t\x3c!-- InputType RichText {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<label class="pict-form-label">{~D:Record.Name~}</label>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-richtext"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-VerticalTemplate-Input-InputType-Diagram",DefaultInputExtensions:["Pict-Input-Diagram"],Template:'\n\t\t\t\t\t\x3c!-- InputType Diagram {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t<div class="pict-form-vertical-input">\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t<label class="pict-form-label">{~D:Record.Name~}</label>\n\t\t\t\t\t<span>{~D:Record.PictForm.ExtraDescription~}</span>\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="DISPLAY-FOR-{~D:Record.Macro.RawHTMLID~}" class="pict-section-form-diagram"></div>\n\t\t\t\t</div>\n'},{HashPostfix:"-Template-Input-InputType-TabGroupSelector",DefaultInputExtensions:["Pict-Input-TabGroupSelector"],Template:'\n\t\t\t\t\t\x3c!-- InputType TabGroupSelector {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t\x3c!-- the TabSelector Input provider deals with populating this from the manifest. --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t\x3c!-- <span>{~D:Record.Name~}:</span> --\x3e\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="TAB-SELECT-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n'},{HashPostfix:"-Template-Input-InputType-TabGroupSelector-TabElement",Template:"\n\t\t\t\x3c!-- Sections have \"tab groups\" which are defined by the hash of the Descriptor that hosts the current TabGroup value. --\x3e\n\t\t\t<a href=\"#/\" id=\"TAB-{~D:Context[1].TabGroupHash~}-{~D:Record.Macro.RawHTMLID~}\" onclick=\"{~P~}.providers['Pict-Input-TabGroupSelector'].selectTabByViewHash('{~D:Context[0].Hash~}','{~D:Record.Hash~}', '{~D:Context[1].TabGroupHash~}')\">{~D:Context[1].TabGroupName~}</a>\n"},{HashPostfix:"-Template-Input-InputType-TabGroupSelector-EmptyGroupContent",Template:"\n\t\t\t\x3c!-- This is the template for if the tmpInput.PictForm.TabGroupSet array is empty. --\x3e\n\t\t\t<p>Warning! No tabs to select from for {~D:Record.TabGroupSetRawHTMLID~}</p>\n"},{HashPostfix:"-Template-Input-InputType-TabSectionSelector",DefaultInputExtensions:["Pict-Input-TabSectionSelector"],Template:'\n\t\t\t\t\t\x3c!-- InputType TabSectionSelector {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t\x3c!-- the TabSelector Input provider deals with populating this from the manifest. --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">\n\t\t\t\t\t\x3c!-- <span>{~D:Record.Name~}:</span> --\x3e\n\t\t\t\t\t<div {~D:Record.Macro.ControlAttr~} id="TAB-SELECT-FOR-{~D:Record.Macro.RawHTMLID~}"></div>\n'},{HashPostfix:"-Template-Input-InputType-TabSectionSelector-TabElement",Template:"\n\t\t\t\x3c!-- Sections have \"tab groups\" which are defined by the hash of the Descriptor that hosts the current TabSection value. --\x3e\n\t\t\t<a href=\"#/\" id=\"TAB-{~D:Context[1].TabSectionHash~}-{~D:Record.Macro.RawHTMLID~}\" onclick=\"{~P~}.providers['Pict-Input-TabSectionSelector'].selectTabByViewHash('{~D:Context[0].Hash~}','{~D:Record.Hash~}', '{~D:Context[1].TabSectionHash~}')\">{~D:Context[1].TabSectionName~}</a>\n"},{HashPostfix:"-Template-Input-InputType-TabSectionSelector-EmptyGroupContent",Template:"\n\t\t\t\x3c!-- This is the template for if the tmpInput.PictForm.TabSectionSet array is empty. --\x3e\n\t\t\t<p>Warning! No tabs to select from for {~D:Record.TabSectionSetRawHTMLID~}</p>\n"},{HashPostfix:"-TuiGrid-Container",Template:'\n\t\t\t<div {~D:Record.Macro.ControlAttr~} id="{~D:Record.TuiGridHTMLID~}"></div>\n'},{HashPostfix:"-TuiGrid-Controls",Template:"\n\t\t\t<div>[ <a href=\"#/\" onclick=\"{~P~}.providers['Pict-Layout-TuiGrid'].addRow('{~D:Context[0].Hash~}', {~D:Record.GroupIndex~})\">create</a> ]</div>\n"},{HashPostfix:"-RecordSetTemplate-Group-Prefix",Template:"\n\t\t\t<div {~D:Record.Macro.PictFormLayout~}>\n\t\t\t\x3c!-- Form RecordSet Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n"},{HashPostfix:"-RecordSetTemplate-Group-Postfix",Template:'\n\t\t\t<div><a href="#/" onclick="{~D:Record.Macro.TabularCreateRowFunctionCall~}">create</a></div>\n\t\t\t</div>\n\t\t\t\x3c!-- Form RecordSet Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-RecordSetTemplate-Row-ExtraPrefix",Template:"\x3c!-- RecordSetTemplateRow-ExtraPrefix --\x3e"},{HashPostfix:"-RecordSetTemplate-Row-ExtraPostfix",Template:'\x3c!-- RecordSetTemplateRow-ExtraPostfix--\x3e\n\t\t\t\t\t<div class="PictSectionForm-RecordSet-Controls">\n\t\t\t\t\t\t<a href="#/" onClick="{~P~}.views[\'{~D:Context[0].Hash~}\'].deleteDynamicTableRow({~D:Record.Group~},\'{~D:Record.Key~}\')">del</a>\n\t\t\t\t\t\t<a href="#/" onClick="{~P~}.views[\'{~D:Context[0].Hash~}\'].moveDynamicTableRowUp({~D:Record.Group~},\'{~D:Record.Key~}\')">up</a>\n\t\t\t\t\t\t<a href="#/" onClick="{~P~}.views[\'{~D:Context[0].Hash~}\'].moveDynamicTableRowDown({~D:Record.Group~},\'{~D:Record.Key~}\')">down</a>\n\t\t\t\t\t</div>\n'},{HashPostfix:"-RecordSetTemplate-Row-Prefix",Template:'\n\t\t\t\t\t<div class="RecordSetEntry">\n\t\t\t\t\t\x3c!-- RecordSetTemplateRow-Prefix --\x3e\n'},{HashPostfix:"-RecordSetTemplate-Cell-Prefix",Template:'\n\t\t\t\t\t\t<div style="display:inline;">\n\t\t\t\t\t\t\t\x3c!-- RecordSetTemplateCell-Prefix --\x3e\n\t\t\t\t\t\t\t<span class="RecordSetInputLabel">{~D:Record.Name~}</span>\n'},{HashPostfix:"-RecordSetTemplate-Cell-Postfix",Template:"\n\t\t\t\t\t\t\t\x3c!-- RecordSetTemplateCell-Postfix --\x3e\n\t\t\t\t\t\t</div>\n"},{HashPostfix:"-RecordSetTemplate-Row-Postfix",Template:"\n\t\t\t\t\t\x3c!-- RecordSetTemplateRow-Postfix --\x3e\n\t\t\t\t\t</div>"},{HashPostfix:"-TabularTemplate-Group-Prefix",Template:'\n\t\t\t<div id="GROUP-{~D:Context[0].formID~}-{~D:Record.Hash~}" {~D:Record.Macro.PictFormLayout~}>\n\t\t\t<table>\n\t\t\t\t\t<tbody>\n\t\t\t\x3c!-- Form Tabular Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-Group-Postfix",Template:'\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<div><a href="#/" onclick="{~D:Record.Macro.TabularCreateRowFunctionCall~}">create</a></div>\n\t\t\t</div>\n\t\t\t\x3c!-- Form Tabular Template Group Prefix [{~D:Context[0].UUID~}]::[{~D:Context[0].Hash~}] {~D:Record.Hash~}::{~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-RowHeader-ExtraPrefix",Template:"\x3c!-- TabularTemplateRowHeader-ExtraPrefix --\x3e"},{HashPostfix:"-TabularTemplate-RowHeader-ExtraPostfix",Template:'\x3c!-- TabularTemplateRowHeader-ExtraPostfix --\x3e\n\t\t\t\t\t\t<th style="min-width:100px;"></th>\n'},{HashPostfix:"-TabularTemplate-Row-ExtraPrefix",Template:"\x3c!-- TabularTemplateRow-ExtraPrefix --\x3e"},{HashPostfix:"-TabularTemplate-Row-ExtraPostfix",Template:"\x3c!-- TabularTemplateRow-ExtraPostfix--\x3e\n\t\t\t\t\t<td><a href=\"#/\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].deleteDynamicTableRow({~D:Record.Group~},'{~D:Record.Key~}')\">del</a>\n\t\t\t\t\t<a href=\"#/\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].moveDynamicTableRowUp({~D:Record.Group~},'{~D:Record.Key~}')\">up</a>\n\t\t\t\t\t<a href=\"#/\" onClick=\"{~P~}.views['{~D:Context[0].Hash~}'].moveDynamicTableRowDown({~D:Record.Group~},'{~D:Record.Key~}')\">down</a></td>\n"},{HashPostfix:"-TabularTemplate-RowHeader-Prefix",Template:"\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n"},{HashPostfix:"-TabularTemplate-HeaderCell",Template:'\n\t\t\t\t\t\t\x3c!-- Descriptor {~D:Record.Name~} [{~D:Record.Hash~}] -> {~D:Record.Address~} --\x3e\n\t\t\t\t\t\t<th data-tabular-column-index="{~D:Record.PictForm.InputIndex~}">{~D:Record.Name~}</th>\n'},{HashPostfix:"-TabularTemplate-RowHeader-Postfix",Template:"\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n"},{HashPostfix:"-TabularTemplate-ExtraHeaderRow-Prefix",Template:'\n\t\t\t\t\t<tr class="pict-tabular-extra-header-row">\n'},{HashPostfix:"-TabularTemplate-ExtraHeaderRow-Postfix",Template:"\n\t\t\t\t\t</tr>\n"},{HashPostfix:"-TabularTemplate-ExtraHeaderCell",Template:'<th colspan="{~D:Record.ColumnSpan~}" class="pict-tabular-extra-header-cell {~D:Record.CSSClass~}">{~D:Record.Label~}</th>'},{HashPostfix:"-TabularTemplate-RowLabel-HeaderCell",Template:'<th class="pict-row-label-header">{~D:Record.Name~}</th>'},{HashPostfix:"-TabularTemplate-RowLabel-Cell",Template:'<td rowspan="{~D:Record.RowSpan~}" class="pict-row-label">{~D:Record.RenderedLabel~}</td>'},{HashPostfix:"-TabularTemplate-RowLabel-Cell-Skipped",Template:""},{HashPostfix:"-TabularTemplate-Row-Prefix",Template:'\n\t\t\t\t\t<tr data-tabular-row-index="{~D:Record.Key~}" data-tabular-group-index="{~D:Record.Group~}">{~T:TabularTemplateRow-ExtraPrefix~}\n'},{HashPostfix:"-TabularTemplate-Cell-Prefix",Template:'\n\t\t\t\t\t\t<td data-tabular-column-index="{~D:Record.PictForm.InputIndex~}">\x3c!-- {~D:Record.Name~} --\x3e\n'},{HashPostfix:"-TabularTemplate-Cell-Postfix",Template:"\n\t\t\t\t\t\t</td>\n"},{HashPostfix:"-TabularTemplate-Row-Postfix",Template:"\n\t\t\t\t\t{~T:TabularTemplateRow-ExtraPostfix~}</tr>"},{HashPostfix:"-TabularTemplate-Begin-Input",Template:'\n\t\t\t\t\t\x3c!-- DEFAULT Input {~"D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input",Template:' value="">'},{HashPostfix:"-TabularTemplate-Mid-Input",Template:" "},{HashPostfix:"-TabularTemplate-InformaryAddress-Input",Template:" data-i-index=\"{~D:Context[2].Key~}\" onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].dataChangedTabular('{~D:Context[2].Group~}', '{~D:Record.PictForm.InputIndex~}', '{~D:Context[2].Key~}')\" "},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-String",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-String",Template:' value="">'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-Number",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-Number",Template:' value="">\n'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-PreciseNumber",Template:'\n\t\t\t\t\t\x3c!-- DataType PreciseNumber {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="Number" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} id="TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" '},{HashPostfix:"-TabularTemplate-End-Input-DataType-PreciseNumber",Template:' value="">\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-PreciseNumberReadOnly",DefaultInputExtensions:["Pict-Input-PreciseNumber"],Template:'\n\t\t\t\t\t\x3c!-- InputType PreciseNumberReadOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" id="PRECISE-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.InformaryTabular~}\n'},{HashPostfix:"-TabularTemplate-End-Input-InputType-PreciseNumberReadOnly",Template:'\n\t\t\t\t\t\tvalue="">\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} id="TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~} value="" readonly="readonly">\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-TextArea",Template:"\n\t\t\t\t\t\x3c!-- InputType TextArea {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<textarea {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} "},{HashPostfix:"-TabularTemplate-End-Input-InputType-TextArea",Template:" ></textarea>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Option",DefaultInputExtensions:["Pict-Input-Select"],Template:'\n\t\t\t\t\t\x3c!-- InputType Option {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" id="SELECT-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Option",Template:" value=\"\">\n\t\t\t\t\t<select {~D:Record.Macro.ControlAttr~} id=\"SELECT-TABULAR-DROPDOWN-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}\" {~D:Record.Macro.HTMLName~} onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].inputDataRequestTabular('{~D:Context[2].Group~}', '{~D:Record.PictForm.InputIndex~}', '{~D:Context[2].Key~}')\"></select>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Boolean",Template:'\n\t\t\t\t\t\x3c!-- InputType Boolean {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="checkbox" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Boolean",Template:' value="" />\n'},{HashPostfix:"-TabularTemplate-Begin-Input-DataType-DateTime",DefaultInputExtensions:["Pict-Input-DateTime"],Template:'\n\t\t\t\t\t\x3c!-- DataType DateTime {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" id="DATETIME-TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-DataType-DateTime",Template:' value="">\n\t\t\t\t\t<input {~D:Record.Macro.ControlAttr~} id="DATETIME-TABULAR-INPUT-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~}\n\t\t\t\t\t\tonchange="{~P~}.views[\'{~D:Context[0].Hash~}\'].inputDataRequestTabular(\'{~D:Context[2].Group~}\', \'{~D:Record.PictForm.InputIndex~}\', \'{~D:Context[2].Key~}\')"\n\t\t\t\t\t\ttype="datetime-local" value="" />\n'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Hidden",Template:"\n\t\t\t\t\t\x3c!-- InputType Hidden {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span\n"},{HashPostfix:"-TabularTemplate-End-Input-InputType-Hidden",Template:"></span>"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Color",Template:'\n\t\t\t\t\t\x3c!-- InputType Color {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <input type="color" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} {~D:Record.Macro.InformaryTabular~}'},{HashPostfix:"-TabularTemplate-End-Input-InputType-Color",Template:" />\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-DisplayOnly",Template:"\n\t\t\t\t\t\x3c!-- InputType DisplayOnly {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<span>{~D:Record.Name~}:</span> <span {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InformaryTabular~}"},{HashPostfix:"-TabularTemplate-End-Input-InputType-DisplayOnly",Template:" ></span>\n"},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-ReadOnly",Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input readonly type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-ReadOnly",Template:' value="">'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-Link",DefaultInputExtensions:["Pict-Input-Link"],Template:'\n\t\t\t\t\t\x3c!-- DataType Number {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="hidden" {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-Link",Template:' value="">\n\t\t\t\t\t<a {~D:Record.Macro.ControlAttr~} id="TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~}>{~D:Record.Name~}</a>'},{HashPostfix:"-TabularTemplate-Begin-Input-InputType-TemplatedEntityLookup",Template:'\n\t\t\t\t\t\x3c!-- InputType TemplatedEntityLookup {~D:Record.Hash~} {~D:Record.DataType~} --\x3e\n\t\t\t\t\t<input type="text" {~D:Record.Macro.ControlAttr~} {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} '},{HashPostfix:"-TabularTemplate-End-Input-InputType-TemplatedEntityLookup",Template:' value="">'}]}},{}],59:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.log}getTriggerGroupConfigurationArray(t){let e=t.PictForm.AutofillTriggerGroup;return e?(Array.isArray(e)||(e=[e]),e):[]}autoFillFromAddressList(t,e,i,n){if(!("TriggerGroupHash"in i)||"string"!=typeof i.TriggerGroupHash)return this.log.warn("AutofillTriggerGroup failed to autofill because a TriggerGroupHash string is not present."),!1;if(!("TriggerAddress"in i)||"string"!=typeof i.TriggerAddress)return this.log.warn("AutofillTriggerGroup failed to autofill because a TriggerAddress string is not present."),!1;let r=this.pict.manifest.getValueByHash(this.pict,i.TriggerAddress);return!(!r&&!i.MarshalEmptyValues)&&(t.setDataByInput(e,r),t.manualMarshalDataToViewByInput(e),!0)}autoFillFromAddressListTabular(t,e,i,n,r){if(!("TriggerGroupHash"in i)||"string"!=typeof i.TriggerGroupHash)return this.log.warn("AutofillTriggerGroup failed to autofill because a TriggerGroupHash string is not present."),!1;if(!("TriggerAddress"in i)||"string"!=typeof i.TriggerAddress)return this.log.warn("AutofillTriggerGroup failed to autofill because a TriggerAddress string is not present."),!1;let o=this.pict.manifest.getValueByHash(this.pict,i.TriggerAddress);return!(!o&&!i.MarshalEmptyValues)&&(t.setDataTabularByHash(e.PictForm.GroupIndex,e.Hash,r,o),t.manualMarshalTabularDataToViewByInput(e,r),!0)}onDataChange(t,e,i,n,r){let o=this.getTriggerGroupConfigurationArray(e);if(Array.isArray(o)&&this.pict.views.PictFormMetacontroller)for(let i=0;i<o.length;i++){const n=o[i];n.TriggerAllInputs&&(Array.isArray(n.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,n.PreSolvers,"AutofillTriggerGroup hash ".concat(n.TriggerGroupHash," pre-trigger")),t.registerOnTransactionCompleteCallback(r,()=>{if(Array.isArray(n.PostSolvers)){this.pict.providers.DynamicSolver.executeSolvers(t,n.PostSolvers,"AutofillTriggerGroup hash ".concat(n.TriggerGroupHash," post-trigger"));const e=n.MarshalOnComplete;!0===e?this.pict.views.PictFormMetacontroller.marshalToView():e&&(this.pict.views.PictFormMetacontroller.marshalSectionToView(e.Section),this.pict.views.PictFormMetacontroller.marshalInputToView(e.Input))}}),this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("TriggerGroup:".concat(n.TriggerGroupHash,":DataChange:").concat(e.Hash||e.DataAddress,":").concat(this.pict.getUUID()),r))}return super.onDataChange(t,e,i,n,r)}onDataChangeTabular(t,e,i,n,r,o){let a=this.getTriggerGroupConfigurationArray(e);if(Array.isArray(a)&&this.pict.views.PictFormMetacontroller)for(let i=0;i<a.length;i++){const n=a[i];n.TriggerAllInputs&&(Array.isArray(n.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,n.PreSolvers,"AutofillTriggerGroup hash ".concat(n.TriggerGroupHash," tabular pre-trigger")),t.registerOnTransactionCompleteCallback(o,()=>{if(Array.isArray(n.PostSolvers)){this.pict.providers.DynamicSolver.executeSolvers(t,n.PostSolvers,"AutofillTriggerGroup hash ".concat(n.TriggerGroupHash," tabular post-trigger"));const e=n.MarshalOnComplete;!0===e?this.pict.views.PictFormMetacontroller.marshalToView():e&&(this.pict.views.PictFormMetacontroller.marshalSectionToView(e.Section),this.pict.views.PictFormMetacontroller.marshalInputToView(e.Input))}}),this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("TriggerGroup:".concat(n.TriggerGroupHash,":DataChange:").concat(e.Hash||e.DataAddress,":").concat(this.pict.getUUID()),o))}return super.onDataChangeTabular(t,e,i,n,r,o)}onAfterEventCompletion(t,e,i,n,r,o){let a=_slicedToArray(("string"==typeof r?r:"").split(":"),5),s=a[0],c=a[1],l=(a[2],a[3]),p=a[4];p||(p=this.pict.getUUID());let d=e.PictForm.AutofillTriggerGroup;if(!d||"TriggerGroup"!==s||(e.Hash||e.DataAddress)==l)return super.onAfterEventCompletion(t,e,i,n,r,o);Array.isArray(d)||(d=[d]);for(let r=0;r<d.length;r++){let o=d[r];if(o.TriggerGroupHash===c){if(Array.isArray(o.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,o.PreSolvers,"AutofillTriggerGroup hash ".concat(o.TriggerGroupHash," pre-autofill")),"TriggerAddress"in o&&this.autoFillFromAddressList(t,e,o,n),o.SelectOptionsRefresh){let t=this.pict.views[e.PictForm.ViewHash];this.pict.providers.DynamicMetaLists.rebuildListByHash(e.PictForm.SelectOptionsPickList),this.pict.providers["Pict-Input-Select"].refreshSelectList(t,t.getGroup(e.PictForm.GroupIndex),t.getRow(e.PictForm.GroupIndex,e.PictForm.Row),e,i,n),t.manualMarshalDataToViewByInput(e,p)}if(Array.isArray(o.PostSolvers)){this.pict.providers.DynamicSolver.executeSolvers(t,o.PostSolvers,"AutofillTriggerGroup hash ".concat(o.TriggerGroupHash," post-autofill"));const e=o.MarshalOnComplete;!0===e?this.pict.views.PictFormMetacontroller.marshalToView():e&&(this.pict.views.PictFormMetacontroller.marshalSectionToView(e.Section),this.pict.views.PictFormMetacontroller.marshalInputToView(e.Input))}}}return super.onAfterEventCompletion(t,e,i,n,r,o)}onAfterEventTabularCompletion(t,e,i,n,r,o,a){let s=_slicedToArray(("string"==typeof o?o:"").split(":"),5),c=s[0],l=s[1],p=(s[2],s[3]),d=s[4];if(d||(d=this.pict.getUUID()),!e.PictForm.AutofillTriggerGroup||"TriggerGroup"!==c||(e.Hash||e.DataAddress)==p)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);let u=e.PictForm.AutofillTriggerGroup;Array.isArray(u)||(u=[u]);for(const o of u)if(o.TriggerGroupHash===l)if(o.SelectOptionsRefresh)if(e.PictForm.SelectOptionsPickList){let t=this.pict.views[e.PictForm.ViewHash];this.pict.providers.DynamicMetaLists.rebuildListByHash(e.PictForm.SelectOptionsPickList),this.pict.providers["Pict-Input-Select"].refreshSelectListTabular(t,t.getGroup(e.PictForm.GroupIndex),t.getRow(e.PictForm.GroupIndex,e.PictForm.Row),e,i,n,r),t.manualMarshalTabularDataToViewByInput(e,r,d)}else;else this.autoFillFromAddressListTabular(t,e,o,n,r);return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],60:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.options.DefaultCoreParsingConfiguration&&Array.isArray(this.options.DefaultCoreParsingConfiguration)||(this.options.DefaultCoreParsingConfiguration={AddressInObject:"",ObjectType:"object",MergeMethod:"Object",Steps:[{InputProperty:!1,Method:"Initialize",Merge:!1},{InputProperty:"PictForm.ChartConfigCorePrototypeRaw",Method:"Raw",Merge:!0},{InputProperty:"PictForm.ChartConfigCorePrototypeAddress",Method:"Address",Merge:!0},{InputProperty:"PictForm.ChartConfigCorePrototype",Method:"SingleSolver",Merge:!0}]}),this.defaultCoreParsingConfiguration=JSON.parse(JSON.stringify(this.options.DefaultCoreParsingConfiguration)),"object"==typeof this.options.DefaultLabelParsingConfiguration&&Array.isArray(this.options.DefaultLabelParsingConfiguration.Steps)||(this.options.DefaultLabelParsingConfiguration={AddressInObject:"data.labels",ObjectType:"array",MergeMethod:"Array",Steps:[{InputProperty:!1,Method:"Initialize",Merge:!1},{InputProperty:"PictForm.ChartLabelsRaw",Method:"Raw",Merge:!1},{InputProperty:"PictForm.ChartLabelsAddress",Method:"Address",Merge:!1},{InputProperty:"PictForm.ChartLabelsSolver",Method:"SingleSolver",Merge:!1}]}),this.defaultLabelParsingConfiguration=JSON.parse(JSON.stringify(this.options.DefaultLabelParsingConfiguration)),"object"==typeof this.options.DefaultDataParsingConfiguration&&Array.isArray(this.options.DefaultDataParsingConfiguration.Steps)||(this.options.DefaultDataParsingConfiguration={AddressInObject:"data.datasets",ObjectType:"array",MergeMethod:"Array",Steps:[{InputProperty:!1,Method:"Initialize",Merge:!1},{InputProperty:"PictForm.ChartDatasetsRaw",Method:"Raw",Merge:!1},{InputProperty:"PictForm.ChartDatasetsAddress",Method:"Address",Merge:!1},{InputProperty:"PictForm.ChartDatasetsSolvers",Method:"ArrayOfSolvers",Merge:!0}]}),this.defaultDataParsingConfiguration=JSON.parse(JSON.stringify(this.options.DefaultDataParsingConfiguration)),this.currentChartObjects={},this.currentChartDataObjects={}}applyInputParsingConfiguration(t,e,i,n){let r=t,o=n,a=e,s=i;if("object"!=typeof t)return!1;if("string"!=typeof n||n.length<1)return!1;if("object"!=typeof s)return!1;"object"!=typeof a&&(a={});let c,l=this.pict.manifest.getValueByHash(r,o);"object"==typeof l&&(s=Object.assign(s,l)),c=s.AddressInObject&&""!=s.AddressInObject?this.pict.manifest.getValueByHash(a,s.AddressInObject):a;for(let e=0;e<s.Steps.length;e++){let i=s.Steps[e];switch(i.Method){case"Initialize":if(s.AddressInObject&&"string"==typeof s.AddressInObject&&s.AddressInObject.length>0){let t=this.pict.manifest.getValueByHash(a,s.AddressInObject);"array"===s.ObjectType?t&&Array.isArray(t)||this.pict.manifest.setValueByHash(a,s.AddressInObject,[]):"object"===s.ObjectType?t&&"object"==typeof t||this.pict.manifest.setValueByHash(a,s.AddressInObject,{}):this.pict.log.warn("Unsupported ObjectType ".concat(s.ObjectType," parsing chart Initialize configuration for input ").concat(r.Macro.RawHTMLID))}break;case"Raw":if(!this.pict.manifest.checkAddressExists(r,i.InputProperty))break;let e=this.pict.manifest.getValueByHash(r,i.InputProperty);if("object"!==typeof e)break;if("array"===s.ObjectType){if(Array.isArray(e))if(i.Merge){Array.isArray(c)||(c=[]);let t=c.concat(e);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e)}else if("object"===s.ObjectType)if(i.Merge)if(s.AddressInObject&&""!=s.AddressInObject)if("object"==typeof c&&null!=c||(c={}),i.Merge){let t=Object.assign(c,e);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);else a=i.Merge?Object.assign(a,e):e;else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);break;case"Address":let n=this.pict.manifest.getValueByHash(r,i.InputProperty);if(!n)break;if("object"!=typeof this.pict.resolveStateFromAddress(n,t))break;if("array"===s.ObjectType){if(Array.isArray(e))if(i.Merge){Array.isArray(c)||(c=[]);let t=c.concat(e);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e)}else if("object"===s.ObjectType)if(i.Merge)if(s.AddressInObject&&""!=s.AddressInObject)if("object"==typeof c&&null!=c||(c={}),i.Merge){let t=Object.assign(c,e);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);else a=i.Merge?Object.assign(a,e):e;else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);break;case"SingleSolver":let o=this.pict.manifest.getValueByHash(r,i.InputProperty);if("string"!=typeof o)break;let l=this.pict.providers.DynamicSolver.runSolver(o,!0);if("array"===s.ObjectType){if(Array.isArray(l))if(i.Merge){Array.isArray(c)||(c=[]);let t=c.concat(l);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,l)}else if("object"===s.ObjectType)if(i.Merge)if(s.AddressInObject&&""!=s.AddressInObject)if("object"==typeof c&&null!=c||(c={}),i.Merge){let t=Object.assign(c,l);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);else a=i.Merge?Object.assign(a,l):l;else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);break;case"ArrayOfSolvers":let p=this.pict.manifest.getValueByHash(r,i.InputProperty);if(!Array.isArray(p))break;for(let t=0;t<p.length;t++){let n=p[t];if("object"!=typeof n)continue;let r=n.Label,o=n.DataSolver,l=this.pict.providers.DynamicSolver.runSolver(o,!0),d={label:r,data:Array.isArray(l)?l:[]};if(n.ChartType&&(d.type=n.ChartType),n.CustomYAxisID&&(d.yAxisID=n.CustomYAxisID),n.CustomXAxisID&&(d.xAxisID=n.CustomXAxisID),n.Tension&&(d.tension=n.Tension),n.PointRadius&&(d.pointRadius=n.PointRadius),n.StackGroup&&(d.stack=n.StackGroup),"array"===s.ObjectType)Array.isArray(l)&&(i.Merge?(Array.isArray(c)||(c=[]),c.push(d),this.pict.manifest.setValueByHash(a,s.AddressInObject,c)):this.pict.manifest.setValueByHash(a,s.AddressInObject,[d]));else if("object"===s.ObjectType)if(i.Merge)if(s.AddressInObject&&""!=s.AddressInObject)if("object"==typeof c&&null!=c||(c={}),i.Merge){let t=Object.assign(c,l);this.pict.manifest.setValueByHash(a,s.AddressInObject,t)}else this.pict.manifest.setValueByHash(a,s.AddressInObject,e);else a=i.Merge?Object.assign(a,l):l;else this.pict.manifest.setValueByHash(a,s.AddressInObject,e)}}}}getInputChartConfiguration(t,e,i){if(!("PictForm"in e))return!1;let n=e.PictForm,r="object"==typeof n.ChartJSOptionsCorePrototype?n.ChartJSOptionsCorePrototype:{};return this.applyInputParsingConfiguration(e,r,this.defaultCoreParsingConfiguration,"PictForm.ChartConfigCoreParsingConfigurationOverride"),"type"in r||(r.type="string"==typeof n.ChartType?n.ChartType:"bar"),this.applyInputParsingConfiguration(e,r,this.defaultLabelParsingConfiguration,"PictForm.ChartLabelsParsingConfigurationOverride"),this.applyInputParsingConfiguration(e,r,this.defaultDataParsingConfiguration,"PictForm.ChartDataParsingConfigurationOverride"),r}initializeChartVisualization(t,e,i,n,r,o){let a="#CONFIG-FOR-".concat(n.Macro.RawHTMLID),s=this.getInputChartConfiguration(t,n,r);this.pict.ContentAssignment.assignContent(a,JSON.stringify(s));let c="#CANVAS-FOR-".concat(n.Macro.RawHTMLID),l=this.pict.ContentAssignment.getElement(c);if(!Array.isArray(l)||l.length<1)return this.log.warn("Chart canvas element not found for input ".concat(c)),!1;l=l[0],"function"!=typeof window.Chart?this.log.warn("Chart.js library not loaded for input ".concat(c)):(this.currentChartObjects["Object-For-".concat(n.Macro.RawHTMLID)]=new window.Chart(l,s),this.currentChartDataObjects["Data-For-".concat(n.Macro.RawHTMLID)]=JSON.stringify(s.data))}onInputInitialize(t,e,i,n,r,o,a){return this.initializeChartVisualization(t,e,i,n,r,o),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataChange(t,e,i,n,r){return super.onDataChange(t,e,i,n,r)}onDataChangeTabular(t,e,i,n,r,o){return super.onDataChangeTabular(t,e,i,n,r,o)}onDataMarshalToForm(t,e,i,n,r,o,a){if(this.currentChartObjects["Object-For-".concat(n.Macro.RawHTMLID)]){let e=this.getInputChartConfiguration(t,n,r),i=JSON.stringify(e.data);this.currentChartDataObjects["Data-For-".concat(n.Macro.RawHTMLID)]!==i&&(this.currentChartObjects["Object-For-".concat(n.Macro.RawHTMLID)].data=e.data,this.currentChartObjects["Object-For-".concat(n.Macro.RawHTMLID)].update(),this.currentChartDataObjects["Data-For-".concat(n.Macro.RawHTMLID)]=i)}else this.initializeChartVisualization(t,e,i,n,r,o);return super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}onDataRequest(t,e,i,n){return super.onDataRequest(t,e,i,n)}onDataRequestTabular(t,e,i,n,r){return super.onDataRequestTabular(t,e,i,n,r)}}},{"../Pict-Provider-InputExtension.js":52}],61:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.log}getDateTimeInputHTMLID(t){return"#DATETIME-INPUT-FOR-".concat(t)}getTabularDateTimeHiddenInputHTMLID(t,e){return"#DATETIME-TABULAR-DATA-".concat(t,"-").concat(e)}getTabularDateTimeInputHTMLID(t,e){return"#DATETIME-TABULAR-INPUT-".concat(t,"-").concat(e)}onDataMarshalToForm(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getDateTimeInputHTMLID(n.Macro.RawHTMLID),r),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getTabularDateTimeInputHTMLID(i.Macro.RawHTMLID,o),n),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}onDataRequest(t,e,i,n){let r;try{r=this.pict.ContentAssignment.readContent(this.getDateTimeInputHTMLID(e.Macro.RawHTMLID)),this.pict.ContentAssignment.assignContent(n,r),t.dataChanged(e.Hash)}catch(t){this.log.error("The value [".concat(r,"] is not a valid date; skipping parsing for [#").concat(e.Macro.RawHTMLID,"]."))}return super.onDataRequest(t,e,i,n)}onDataRequestTabular(t,e,i,n,r){let o;try{o=this.pict.ContentAssignment.readContent(this.getTabularDateTimeInputHTMLID(e.Macro.RawHTMLID,r)),this.pict.ContentAssignment.assignContent(this.getTabularDateTimeHiddenInputHTMLID(e.Macro.RawHTMLID,r),o),t.dataChangedTabular(e.PictForm.GroupIndex,e.PictForm.InputIndex,r)}catch(t){this.log.error("The value [".concat(o,"] is not a valid date; skipping parsing for [#").concat(e.Macro.RawHTMLID,"]."))}return super.onDataRequestTabular(t,e,i,n,r)}}},{"../Pict-Provider-InputExtension.js":52}],62:[function(t,e,i){e.exports="\n.pict-section-form-diagram\n{\n\tdisplay: block;\n\twidth: 100%;\n\tmin-height: 120px;\n\tborder: 1px solid var(--theme-color-border-primary, #D4C4A8);\n\tborder-radius: 4px;\n\tbackground: var(--theme-color-background-primary, #FFFFFF);\n\tcolor: var(--theme-color-text-primary, #2A2520);\n\tbox-sizing: border-box;\n\tposition: relative;\n}\n\n.pict-section-form-diagram-view\n{\n\tpadding: 12px;\n\tmin-height: 96px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow: auto;\n}\n\n.pict-section-form-diagram-view.is-empty\n{\n\tcolor: var(--theme-color-text-muted, #8A7F72);\n\tfont-style: italic;\n\tfont-size: 0.9rem;\n}\n\n.pict-section-form-diagram-view svg\n{\n\tdisplay: block;\n\tmax-width: 100%;\n\theight: auto;\n}\n\n.pict-section-form-diagram-edit\n{\n\tpadding: 0;\n\tmin-height: 420px;\n\tdisplay: flex;\n}\n\n/* The Excalidraw view brings its own chrome inside the slot. Force the wrap\n * and the Excalidraw root to fill so the canvas doesn't collapse to 0\n * height inside the form slot. */\n.pict-section-form-diagram-edit > .pict-excalidraw-wrap,\n.pict-section-form-diagram-edit > .pict-excalidraw-wrap > .pict-excalidraw-mount\n{\n\tflex: 1 1 auto;\n\tmin-height: 420px;\n}\n\n.pict-section-form-diagram-edit .excalidraw\n{\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 420px;\n}\n\n.pict-section-form-diagram-toggle\n{\n\tposition: absolute;\n\ttop: 6px;\n\tright: 6px;\n\tz-index: 2;\n\tpadding: 3px 9px;\n\tfont-size: 0.72rem;\n\tfont-weight: 600;\n\tcolor: var(--theme-color-text-secondary, #5A4A3C);\n\tbackground: var(--theme-color-background-tertiary, #F4EEE2);\n\tborder: 1px solid var(--theme-color-border-secondary, #D4C4A8);\n\tborder-radius: 3px;\n\tcursor: pointer;\n\tuser-select: none;\n}\n\n.pict-section-form-diagram-toggle:hover\n{\n\tcolor: var(--theme-color-text-primary, #2A2520);\n\tbackground: var(--theme-color-background-primary, #FFFFFF);\n\tborder-color: var(--theme-color-accent, #2E7D74);\n}\n\n.pict-section-form-diagram.mode-edit .pict-section-form-diagram-toggle::after { content: 'Done'; }\n.pict-section-form-diagram.mode-view .pict-section-form-diagram-toggle::after { content: 'Edit'; }\n"},{}],63:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js"),r=t("pict-section-excalidraw"),o=t("./Pict-Provider-Input-Diagram-CSS.js"),a=t("./util/Themeify-SVG.js"),s={ProviderIdentifier:"Pict-Input-Diagram",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(s)),e),i),this.pict,this.log,this._instances={},this.pict&&this.pict.CSSMap&&"function"==typeof this.pict.CSSMap.addCSS&&this.pict.CSSMap.addCSS("Pict-Input-Diagram-CSS",o,500)}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}_resolveValue(t,e){return"string"==typeof e&&e.length>0?e:t&&t.Content&&"string"==typeof t.Content?t.Content:t&&t.Default&&"string"==typeof t.Default?t.Default:""}_isLikelySvg(t){return"string"==typeof t&&/<svg[\s>]/i.test(t)}_assignSlotContent(t,e){return!(!this.pict||!this.pict.ContentAssignment||"function"!=typeof this.pict.ContentAssignment.assignContent)&&(this.pict.ContentAssignment.assignContent(t,e),!0)}_writeHiddenInputValue(t,e){let i="undefined"!=typeof document?document.getElementById(t):null;if(!i)return!1;i.value=null==e?"":String(e);try{i.dispatchEvent(new Event("change",{bubbles:!0}))}catch(t){}return!0}_resolveVendor(){return"undefined"==typeof window?null:window.PictSectionExcalidrawVendor||null}_buildViewHTML(t){return this._isLikelySvg(t)?'<div class="pict-section-form-diagram-view">'.concat(t,"</div>"):'<div class="pict-section-form-diagram-view is-empty">(empty diagram)</div>'}_setSlotModeClass(t,e){if("undefined"==typeof document)return;let i=t.Macro.RawHTMLID,n=document.getElementById(i)||document.querySelector(this.getContentDisplayHTMLID(i));n&&n.classList&&(n.classList.remove("mode-edit","mode-view","pict-section-form-diagram-edit"),"edit"===e?n.classList.add("mode-edit","pict-section-form-diagram-edit"):n.classList.add("mode-view"))}_mountView(t,e,i){let n=e.Macro.RawHTMLID,r=this.getContentDisplayHTMLID(n),o=this._resolveValue(e,i);this._assignSlotContent(r,this._buildViewHTML(o)),this._setSlotModeClass(e,"view");let a=this._instances[e.Hash]||{};a.mode="view",a.slotID=r,a.lastValue=o,a.input=e,a.viewInstance=null,this._instances[e.Hash]=a}_extractSceneFromSvg(t,e){if(!this._isLikelySvg(t))return e(null,null);let i=this._resolveVendor();if(!i||!i.loadFromBlob)return this.log&&this.log.warn("[Pict-Input-Diagram] vendor.loadFromBlob unavailable — falling back to empty scene"),e(null,null);try{let n=new window.Blob([t],{type:"image/svg+xml"}),r=i.loadFromBlob(n,null,null);Promise.resolve(r).then(t=>{e(null,t||null)},t=>{e(t,null)})}catch(t){e(t,null)}}_buildEditorOptions(t,e,i){let n=t.PictForm&&t.PictForm.Diagram||{},r=n.EditorOptions||{},o=t.Macro.RawHTMLID;this.pict.AppData._PictInputDiagram||(this.pict.AppData._PictInputDiagram={}),this.pict.AppData._PictInputDiagram[t.Hash]||(this.pict.AppData._PictInputDiagram[t.Hash]={Scene:null});let a="AppData._PictInputDiagram.".concat(t.Hash,".Scene");return Object.assign({},r,{ViewIdentifier:"Pict-Input-Diagram-Editor-".concat(t.Hash),TargetElementAddress:this.getContentDisplayHTMLID(o),DrawingDataAddress:a,EditorImplementation:n.EditorImplementation||"react"})}_mountEdit(t,e,i,n){let o=e.Macro.RawHTMLID,s=this.getContentDisplayHTMLID(o),c=this._resolveValue(e,i),l=this._instances[e.Hash]||{};l.input=e;let p=!1!==(e.PictForm&&e.PictForm.Diagram||{}).ThemeColors;this._assignSlotContent(s,""),this._extractSceneFromSvg(c,(t,i)=>{let d=this._buildEditorOptions(e,c,l),u=d.ViewIdentifier,h=this;i&&this.pict.AppData._PictInputDiagram&&this.pict.AppData._PictInputDiagram[e.Hash]&&(this.pict.AppData._PictInputDiagram[e.Hash].Scene={elements:i.elements||[],appState:i.appState||{},files:i.files||{}}),d.OnChange=(t,i)=>{try{let i=t.exportSvg({exportEmbedScene:!0,exportBackground:!1});Promise.resolve(i).then(t=>{let i=t&&"string"==typeof t.outerHTML?t.outerHTML:"string"==typeof t?t:null;if(!i)return;p&&(i=a.themeifySVG(i)),h._writeHiddenInputValue(o,i);let n=h._instances[e.Hash];n&&(n.lastValue=i)},t=>{h.log&&h.log.warn("[Pict-Input-Diagram] exportSvg failed in OnChange",{error:t.message,inputHash:e.Hash})})}catch(t){h.log&&h.log.warn("[Pict-Input-Diagram] OnChange handler threw",{error:t.message,inputHash:e.Hash})}},this.pict.addView(u,d,r);let m=this.pict.views[u];if(!m){let t=new Error("Failed to instantiate Diagram editor view "+u);return this.log&&this.log.error("[Pict-Input-Diagram] addView returned nothing",{viewHash:u}),void("function"==typeof n&&n(t))}this._setSlotModeClass(e,"edit"),l.mode="edit",l.slotID=s,l.lastValue=c,l.viewInstance=m,l.viewHash=u,l.themeColors=p,this._instances[e.Hash]=l;try{let t=m.render();t&&"function"==typeof t.then?t.then(()=>{"function"==typeof n&&n(null)},t=>{"function"==typeof n&&n(t)}):"function"==typeof n&&n(null)}catch(t){this.log&&this.log.error("[Pict-Input-Diagram] editor.render threw",{error:t.message}),"function"==typeof n&&n(t)}})}_destroyEdit(t){let e=this._instances[t.Hash];if(!e||!e.viewInstance)return;let i=e.viewInstance;try{"function"==typeof i.destroy&&i.destroy()}catch(t){this.log&&this.log.warn("[Pict-Input-Diagram] editor.destroy threw",{error:t.message})}if(this.pict.AppData._PictInputDiagram&&this.pict.AppData._PictInputDiagram[t.Hash]&&delete this.pict.AppData._PictInputDiagram[t.Hash],e.viewHash&&this.pict.views&&this.pict.views[e.viewHash])try{delete this.pict.views[e.viewHash]}catch(t){}e.viewInstance=null,e.viewHash=null}getMode(t){let e=this._instances[t];return e?e.mode:null}setMode(t,e,i){let n=this._instances[t];if(!n){let e=new Error("Cannot setMode — input is not mounted: "+t);return void("function"==typeof i&&i(e))}if("edit"!==e&&"view"!==e){let t=new Error('setMode: unknown mode "'+e+'" (use "edit" or "view")');return void("function"==typeof i&&i(t))}n.mode!==e?"edit"!==e?(this._destroyEdit(n.input),this._mountView(null,n.input,n.lastValue),"function"==typeof i&&i(null)):this._mountEdit(null,n.input,n.lastValue,i):"function"==typeof i&&i(null)}toggleMode(t,e){let i="edit"===this.getMode(t)?"view":"edit";this.setMode(t,i,e)}commit(t,e){let i=this._instances[t];if(!i||"edit"!==i.mode||!i.viewInstance)return void("function"==typeof e&&e(null));let n=!1!==i.themeColors,r=this,o=i.input.Macro.RawHTMLID;try{let t=i.viewInstance.exportSvg({exportEmbedScene:!0,exportBackground:!1});Promise.resolve(t).then(t=>{let s=t&&"string"==typeof t.outerHTML?t.outerHTML:null;s&&(n&&(s=a.themeifySVG(s)),r._writeHiddenInputValue(o,s),i.lastValue=s),"function"==typeof e&&e(null)},t=>{"function"==typeof e&&e(t)})}catch(t){"function"==typeof e&&e(t)}}onInputInitialize(t,e,i,n,r,o,a){return this._mountView(t,n,r),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){super.onInputInitializeTabular(t,e,i,n,r,o,a);let s=new Error("Diagram InputType is not supported inside Tabular rows in Phase 1.");throw this.log&&this.log.warn("[Pict-Input-Diagram] tabular not supported",{inputHash:i&&i.Hash}),s}onDataMarshalToForm(t,e,i,n,r,o,a){let s=this._instances[n.Hash];return s?"view"===s.mode?this._mountView(t,n,r):(s.lastValue="string"==typeof r?r:s.lastValue,this._extractSceneFromSvg(s.lastValue,(t,e)=>{if(!t&&e&&s.viewInstance&&"function"==typeof s.viewInstance.setScene)try{s.viewInstance.setScene(e)}catch(t){this.log&&this.log.warn("[Pict-Input-Diagram] setScene threw after marshal",{error:t.message})}})):this._mountView(t,n,r),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}},e.exports.default_configuration=s},{"../Pict-Provider-InputExtension.js":52,"./Pict-Provider-Input-Diagram-CSS.js":62,"./util/Themeify-SVG.js":77,"pict-section-excalidraw":19}],64:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.fable,this.log}gatherEntitySet(t,e,i,n,r){if(!("Entity"in e)||"string"!=typeof e.Entity)return this.log.warn("EntityBundleRequest failed to parse entity request because the entity stanza did not contain an Entity string."),t();if(!("Filter"in e)||"string"!=typeof e.Filter)return this.log.warn("EntityBundleRequest failed to parse entity request because the entity stanza did not contain a Filter string."),t();if(!("Destination"in e)||"string"!=typeof e.Destination)return this.log.warn("EntityBundleRequest failed to parse entity request because the entity stanza did not contain a Destination string."),t();const o={Value:r,Input:n,View:i};let a=null,s=null;e.RecordCount&&(a=null!=e.RecordStartCursor?e.RecordStartCursor:0,s=null!=e.RecordCount?e.RecordCount:null);const c=this.pict.parseTemplate(e.Filter,o);""==c&&this.log.warn("EntityBundleRequest failed to parse entity request because the entity Filter did not return a string for FilterBy");const l=(i,n)=>i?(this.log.error("EntityBundleRequest request Error getting entity set for [".concat(e.Entity,"] with filter [").concat(c,"]: ").concat(i),i),t(i,"")):(this.log.trace("EntityBundleRequest found ".concat(n.length," records for ").concat(e.Entity," filtered to [").concat(c,"]")),e.SingleRecord?(n.length>1&&this.log.warn("EntityBundleRequest found more than one record for ".concat(e.Entity," filtered to [").concat(c,"] but SingleRecord is true; setting the first record.")),n.length<1&&this.pict.manifest.setValueByHash(this.pict,e.Destination,!1),this.pict.manifest.setValueByHash(this.pict,e.Destination,n[0])):this.pict.manifest.setValueByHash(this.pict,e.Destination,n),t());s?this.pict.EntityProvider.getEntitySetPage(e.Entity,c,a,s,l):this.pict.EntityProvider.getEntitySet(e.Entity,c,l)}gatherCustomDataSet(t,e,i,n,r){if(!("URL"in e)||"string"!=typeof e.URL)return this.log.warn("EntityBundleRequest failed to parse custom data request because the stanza did not contain a URL string."),t();const o={Value:r,Input:n,View:i},a=this.pict.parseTemplate(e.URL,o);""==a&&this.log.warn("EntityBundleRequest failed to parse custom data request because the entity Filter did not return a string for FilterBy");let s="";const c=!!e.Host&&e.Host,l=e.Protocol?e.Protocol:"https",p=!!e.Port&&e.Port;c?(s="".concat(l,"://").concat(c),p&&(s+=":".concat(p))):s=this.pict.EntityProvider.options.urlPrefix;let d={url:"".concat(s).concat(a)};return d=this.pict.EntityProvider.prepareRequestOptions(d),this.pict.EntityProvider.restClient.getJSON(d,(i,n,r)=>i?(this.log.error("EntityBundleRequest request Error getting data set for [".concat(e.Entity,"] with filter [").concat(a,"]: ").concat(i),i),t(i,"")):(this.log.trace("EntityBundleRequest completed request for ".concat(e.Entity," filtered to [").concat(a,"]")),e.Destination&&this.pict.manifest.setValueByHash(this.pict,e.Destination,r),t()))}async gatherDataFromServer(t,e,i,n,r){if("object"!=typeof e||!("PictForm"in e)||!("EntitiesBundle"in e.PictForm)||!Array.isArray(e.PictForm.EntitiesBundle))return this.log.warn("Input at ".concat(n," is set as an EntityBundleRequest input but no array of entity requests was found")),null;const o="BundleLoad-".concat(this.pict.getUUID());r&&t.registerEventTransactionAsyncOperation(r,o);let a=e,s=i,c=this.fable.newAnticipate();if(a.PictForm.EntitiesBundle.length>0&&a.PictForm.EntitiesBundle[0].PictMode)c.anticipate(t=>{this.pict.EntityProvider.gatherDataFromServer(a.PictForm.EntitiesBundle,e=>{setTimeout(()=>t(e),0)})});else{const e=[];let i={Value:s,Input:a,View:t};for(let n=0;n<a.PictForm.EntitiesBundle.length;n++){let r=a.PictForm.EntitiesBundle[n];c.anticipate(n=>{try{switch(r.Type){case"Custom":return this.gatherCustomDataSet(n,r,t,a,s);case"SetStateAddress":e.push(i),i=this.fable.manifest.getValueByHash(this.fable,r.StateAddress),void 0===i&&(i={},this.fable.manifest.setValueByHash(this.fable,r.StateAddress,i));break;case"PopState":e.length>0?i=e.pop():this.log.warn("EntityBundleRequest encountered a PopState without a matching SetStateAddress.");break;case"MapJoin":this.pict.EntityProvider.mapJoin(r,this.pict.EntityProvider.prepareState(i,r));break;case"ProjectDataset":this.pict.EntityProvider.projectDataset(r,this.pict.EntityProvider.prepareState(i,r));break;default:return this.gatherEntitySet(n,r,t,a,s)}}catch(t){this.log.error("EntityBundleRequest error gathering entity set: ".concat(t),t)}return n()})}c.anticipate(t=>setTimeout(t,0))}return c.anticipate(i=>{if(a.PictForm.EntityBundleTriggerGroup&&this.pict.views.PictFormMetacontroller){const i=this.getTriggerGroupConfigurationArray(a,a.PictForm.EntityBundleTriggerGroup)[0];let n;i&&Array.isArray(i.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,i.PreSolvers,"EntityBundleTriggerGroup hash ".concat(i.TriggerGroupHash," pre-trigger")),i&&Array.isArray(i.PostSolvers)&&(n=r||this.pict.getUUID(),n!==r&&this.pict.TransactionTracking.registerTransaction(n),t.registerOnTransactionCompleteCallback(n,()=>{if(Array.isArray(i.PostSolvers)){this.pict.providers.DynamicSolver.executeSolvers(t,i.PostSolvers,"EntityBundleTriggerGroup hash ".concat(i.TriggerGroupHash," post-trigger"));const e=i.MarshalOnComplete;!0===e?this.pict.views.PictFormMetacontroller.marshalToView():e&&(this.pict.views.PictFormMetacontroller.marshalSectionToView(e.Section),this.pict.views.PictFormMetacontroller.marshalInputToView(e.Input))}})),this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("TriggerGroup:".concat(a.PictForm.EntityBundleTriggerGroup,":BundleLoad:").concat(e.Hash||e.DataAddress,":").concat(this.pict.getUUID()),r),n&&n!==r&&t.finalizeTransaction(n)}a.PictForm.EntityBundleTriggerMetacontrollerSolve&&this.pict.views.PictFormMetacontroller&&this.pict.views.PictFormMetacontroller.solve(),a.PictForm.EntityBundleTriggerMetacontrollerRender&&this.pict.views.PictFormMetacontroller&&this.pict.views.PictFormMetacontroller.render(),i()}),new Promise((e,i)=>{c.wait(i=>(i&&this.log.error("EntityBundleRequest error gathering entity set: ".concat(i),i),r&&t.eventTransactionAsyncOperationComplete(r,o),e(i)))})}getTriggerGroupConfigurationArray(t,e){let i=t.PictForm.AutofillTriggerGroup;return i?(Array.isArray(i)||(i=[i]),null==e?i:i.filter(t=>t.TriggerGroupHash===e)):[]}onInputInitialize(t,e,i,n,r,o,a){return n.PictForm&&(r||n.PictForm.EntityBundleTriggerWithoutValue)&&n.PictForm.EntityBundleTriggerOnInitialize&&this.gatherDataFromServer(t,n,r,o,a),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return this.log.error("EntityBundleRequest for input [".concat(i.Hash,"] Tabular support is intentionally not supported.")),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataChange(t,e,i,n,r){return e.PictForm&&(i||e.PictForm.EntityBundleTriggerWithoutValue)&&!1!==e.PictForm.EntityBundleTriggerOnDataChange&&this.gatherDataFromServer(t,e,i,n,r),super.onDataChange(t,e,i,n,r)}onAfterEventCompletion(t,e,i,n,r,o){const a=_slicedToArray(("string"==typeof r?r:"").split(":"),2),s=a[0],c=a[1];return"TriggerGroup"===s&&c&&e.PictForm.TriggerGroupHash===c?(this.gatherDataFromServer(t,e,i,n,o),super.onAfterEventCompletion(t,e,i,n,r,o)):super.onAfterEventCompletion(t,e,i,n,r,o)}}},{"../Pict-Provider-InputExtension.js":52}],65:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}getInputContent(t,e){let i=null;return e&&"string"==typeof e&&(i=e),t.Content&&"string"==typeof t.Content&&(i=t.Content),t.Default&&"string"==typeof t.Default&&(i=t.Default),i}onInputInitialize(t,e,i,n,r,o,a){let s=this.getInputContent(n,r);return s&&this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),s),super.onInputInitialize(t,e,i,n,s,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){let s=this.getInputContent(i,n);return s&&this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),s),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataMarshalToForm(t,e,i,n,r,o,a){let s=this.getInputContent(n,r);return s&&this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),s),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){let s=this.getInputContent(i,n);return s&&this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),s),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],66:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}onDataMarshalToForm(t,e,i,n,r,o,a){return this.pict.ContentAssignment.setAttribute(this.getInputHTMLID(n.Macro.RawHTMLID),"href",r),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return this.pict.ContentAssignment.setAttribute(this.getTabularInputHTMLID(i.Macro.RawHTMLID,o),"href",n),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],67:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js"),r=t("marked");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}getInputContent(t,e){let i=null;return e&&"string"==typeof e&&(i=e),t.Content&&"string"==typeof t.Content&&(i=t.Content),t.Default&&"string"==typeof t.Default&&(i=t.Default),i&&(i=r.parse(i)),i}onInputInitialize(t,e,i,n,r,o,a){let s=this.getInputContent(n,r);return s&&this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),s),super.onInputInitialize(t,e,i,n,s,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){let s=this.getInputContent(i,n);return s&&this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),s),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataMarshalToForm(t,e,i,n,r,o,a){let s=this.getInputContent(n,r);return s&&this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),s),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){let s=this.getInputContent(i,n);return s&&this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),s),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52,marked:4}],68:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}roundValue(t,e){let i=e;if("DecimalPrecision"in t.PictForm){let e=this.fable.Math.roundHalfUp;if("RoundingMethod"in t.PictForm)try{e=parseInt(t.PictForm.RoundingMethod)}catch(e){this.log.error("Error parsing rounding method onDataMarshalToForm for input ".concat(t.Hash),e)}i=this.fable.Math.toFixedPrecise(i,t.PictForm.DecimalPrecision,e)}return"AddCommas"in t.PictForm&&t.PictForm.AddCommas&&(i=this.fable.DataFormat.formatterAddCommasToNumber(i)),"DigitsPrefix"in t.PictForm&&(i=t.PictForm.DigitsPrefix+i),"DigitsPostfix"in t.PictForm&&(i+=t.PictForm.DigitsPostfix),i}onDataMarshalToForm(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getInputHTMLID(n.Macro.RawHTMLID),this.roundValue(n,r)),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent("#PRECISE-"+this.getTabularInputHTMLID(i.Macro.RawHTMLID,o).substring(1),n),this.pict.ContentAssignment.assignContent(this.getTabularInputHTMLID(i.Macro.RawHTMLID,o),this.roundValue(i,n)),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],69:[function(t,e,i){e.exports="\n.pict-section-form-richtext\n{\n\tdisplay: block;\n\twidth: 100%;\n\tmin-height: 64px;\n\tborder: 1px solid var(--theme-color-border-primary, #D4C4A8);\n\tborder-radius: 4px;\n\tbackground: var(--theme-color-background-primary, #FFFFFF);\n\tcolor: var(--theme-color-text-primary, #2A2520);\n\tfont-family: var(--theme-font-body, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);\n\tfont-size: 0.95rem;\n\tline-height: 1.55;\n\tbox-sizing: border-box;\n}\n\n.pict-section-form-richtext-view\n{\n\tpadding: 10px 14px;\n\tmin-height: 48px;\n}\n\n.pict-section-form-richtext-view.is-empty\n{\n\tcolor: var(--theme-color-text-muted, #8A7F72);\n\tfont-style: italic;\n}\n\n.pict-section-form-richtext-view :first-child { margin-top: 0; }\n.pict-section-form-richtext-view :last-child { margin-bottom: 0; }\n\n.pict-section-form-richtext-view h1,\n.pict-section-form-richtext-view h2,\n.pict-section-form-richtext-view h3,\n.pict-section-form-richtext-view h4\n{\n\tcolor: var(--theme-color-text-heading, var(--theme-color-text-primary, #2A2520));\n\tmargin: 0.6em 0 0.3em 0;\n\tline-height: 1.25;\n}\n\n.pict-section-form-richtext-view code\n{\n\tfont-family: var(--theme-font-mono, 'SFMono-Regular', Menlo, monospace);\n\tfont-size: 0.9em;\n\tpadding: 1px 5px;\n\tbackground: var(--theme-color-background-tertiary, #F4EEE2);\n\tborder-radius: 3px;\n}\n\n.pict-section-form-richtext-view pre\n{\n\tfont-family: var(--theme-font-mono, 'SFMono-Regular', Menlo, monospace);\n\tbackground: var(--theme-color-background-tertiary, #F4EEE2);\n\tpadding: 10px 12px;\n\tborder-radius: 4px;\n\toverflow: auto;\n}\n\n.pict-section-form-richtext-view blockquote\n{\n\tmargin: 0.5em 0;\n\tpadding: 4px 12px;\n\tborder-left: 3px solid var(--theme-color-accent, #2E7D74);\n\tcolor: var(--theme-color-text-secondary, #5A4A3C);\n\tbackground: var(--theme-color-background-secondary, #FBF7EE);\n}\n\n.pict-section-form-richtext-view img\n{\n\tmax-width: 100%;\n\theight: auto;\n\tborder-radius: 3px;\n}\n\n.pict-section-form-richtext-edit\n{\n\tpadding: 0;\n\tmin-height: 220px;\n}\n\n/*\n * The editor (pict-section-markdowneditor) brings its own chrome inside the\n * slot. We just provide a container border + sane min-height; CodeMirror takes\n * over from there.\n */\n\n/* Optional mode-toggle affordance — render inside the slot from the host UI\n * via _Pict.providers['Pict-Input-RichText'].toggleMode('<hash>'). The chip is\n * absolutely positioned in the top-right corner so it doesn't take a column\n * from the form layout. */\n.pict-section-form-richtext { position: relative; }\n\n.pict-section-form-richtext-toggle\n{\n\tposition: absolute;\n\ttop: 6px;\n\tright: 6px;\n\tz-index: 2;\n\tpadding: 3px 9px;\n\tfont-size: 0.72rem;\n\tfont-weight: 600;\n\tcolor: var(--theme-color-text-secondary, #5A4A3C);\n\tbackground: var(--theme-color-background-tertiary, #F4EEE2);\n\tborder: 1px solid var(--theme-color-border-secondary, #D4C4A8);\n\tborder-radius: 3px;\n\tcursor: pointer;\n\tuser-select: none;\n}\n\n.pict-section-form-richtext-toggle:hover\n{\n\tcolor: var(--theme-color-text-primary, #2A2520);\n\tbackground: var(--theme-color-background-primary, #FFFFFF);\n\tborder-color: var(--theme-color-accent, #2E7D74);\n}\n\n.pict-section-form-richtext.mode-edit .pict-section-form-richtext-toggle::after { content: 'Done'; }\n.pict-section-form-richtext.mode-view .pict-section-form-richtext-toggle::after { content: 'Edit'; }\n"},{}],70:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js"),r=t("marked"),o=t("pict-section-markdowneditor"),a=t("./Pict-Provider-Input-RichText-CSS.js"),s={ProviderIdentifier:"Pict-Input-RichText",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(s)),e),i),this.pict,this.log,this._instances={},this.pict&&this.pict.CSSMap&&"function"==typeof this.pict.CSSMap.addCSS&&this.pict.CSSMap.addCSS("Pict-Input-RichText-CSS",a,500)}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}_resolveContent(t,e){return"string"==typeof e&&e.length>0?e:t&&t.Content&&"string"==typeof t.Content?t.Content:t&&t.Default&&"string"==typeof t.Default?t.Default:""}_renderMarkdown(t){try{return r.parse(t||"")}catch(e){this.log&&this.log.warn("[Pict-Input-RichText] marked.parse failed",{error:e.message});let i=String(t||"").replace(/[&<>"]/g,t=>({"&":"&","<":"<",">":">",'"':"""}[t]));return"<pre>".concat(i,"</pre>")}}_writeHiddenInputValue(t,e){let i="undefined"!=typeof document?document.getElementById(t):null;if(!i)return!1;i.value=null==e?"":String(e);try{i.dispatchEvent(new Event("change",{bubbles:!0}))}catch(t){}return!0}_assignSlotContent(t,e){return!(!this.pict||!this.pict.ContentAssignment||"function"!=typeof this.pict.ContentAssignment.assignContent)&&(this.pict.ContentAssignment.assignContent(t,e),!0)}_mountView(t,e,i){let n,r=e.Macro.RawHTMLID,o=this.getContentDisplayHTMLID(r),a=this._resolveContent(e,i);if(n=a&&a.length>0?'<div class="pict-section-form-richtext-view">'.concat(this._renderMarkdown(a),"</div>"):'<div class="pict-section-form-richtext-view is-empty">(empty)</div>',this._assignSlotContent(o,n),"undefined"!=typeof document){let t=document.getElementById(r+"-CONTAINER")||document.querySelector(o);t&&t.classList&&(t.classList.remove("mode-edit"),t.classList.add("mode-view"))}let s=this._instances[e.Hash]||{};s.mode="view",s.slotID=o,s.lastValue=a,s.input=e,s.viewInstance=null,this._instances[e.Hash]=s}_buildEditorOptions(t,e,i){let n=(t.PictForm&&t.PictForm.RichText||{}).EditorOptions||{},r=t.Macro.RawHTMLID,o="AppData._PictInputRichText.".concat(t.Hash,".Segments");return this.pict.AppData._PictInputRichText||(this.pict.AppData._PictInputRichText={}),this.pict.AppData._PictInputRichText[t.Hash]={Segments:[{Content:e||""}]},Object.assign({},n,{ViewIdentifier:"Pict-Input-RichText-Editor-".concat(t.Hash),TargetElementAddress:this.getContentDisplayHTMLID(r),ContentDataAddress:o,ReadOnly:!1})}_mountEdit(t,e,i,n){let r=e.Macro.RawHTMLID,a=this.getContentDisplayHTMLID(r),s=this._resolveContent(e,i),c=this._instances[e.Hash]||{};c.input=e,this._assignSlotContent(a,"");let l=this._buildEditorOptions(e,s,c),p=l.ViewIdentifier,d=e.PictForm&&e.PictForm.RichText||{},u=this;this.pict.addView(p,l,class extends o{constructor(t,e,i){super(t,e,i)}onContentChange(t,i){try{u._writeHiddenInputValue(r,i);let t=u._instances[e.Hash];t&&(t.lastValue=i)}catch(t){u.log&&u.log.warn("[Pict-Input-RichText] onContentChange handler failed",{error:t.message,inputHash:e.Hash})}super.onContentChange&&super.onContentChange(t,i)}onImageUpload(t,i,n){if(!d.AllowImages)return u.log&&u.log.info("[Pict-Input-RichText] image upload rejected (AllowImages=false)",{inputHash:e.Hash,fileName:t&&t.name}),n("Image uploads are disabled for this field."),!0;let r=d.ImageUploader;if(r&&u.pict&&u.pict.PictApplication&&"function"==typeof u.pict.PictApplication[r])try{return u.pict.PictApplication[r](t,e,n)}catch(t){return u.log&&u.log.warn("[Pict-Input-RichText] ImageUploader threw",{error:t.message,inputHash:e.Hash}),n(t.message),!0}return!1}customConfigureExtensions(t,e){if(!1!==d.WordWrap){let e=this._codeMirrorModules;e&&e.EditorView&&e.EditorView.lineWrapping&&t.push(e.EditorView.lineWrapping)}return t}});let h=this.pict.views[p];if(!h){let t=new Error("Failed to instantiate RichText editor view "+p);return this.log&&this.log.error("[Pict-Input-RichText] addView returned nothing",{viewHash:p}),void("function"==typeof n&&n(t))}if("undefined"!=typeof document){let t=document.querySelector(a);t&&t.classList&&(t.classList.remove("mode-view"),t.classList.add("mode-edit","pict-section-form-richtext-edit"))}c.mode="edit",c.slotID=a,c.lastValue=s,c.viewInstance=h,c.viewHash=p,this._instances[e.Hash]=c;try{let t=h.render();t&&"function"==typeof t.then?t.then(()=>{"function"==typeof n&&n(null)},t=>{"function"==typeof n&&n(t)}):"function"==typeof n&&n(null)}catch(t){this.log&&this.log.error("[Pict-Input-RichText] editor.render threw",{error:t.message}),"function"==typeof n&&n(t)}}_destroyEdit(t){let e=this._instances[t.Hash];if(!e||!e.viewInstance)return;let i=e.viewInstance;try{"function"==typeof i.destroy&&i.destroy()}catch(t){this.log&&this.log.warn("[Pict-Input-RichText] editor.destroy threw",{error:t.message})}if(this.pict.AppData._PictInputRichText&&this.pict.AppData._PictInputRichText[t.Hash]&&delete this.pict.AppData._PictInputRichText[t.Hash],e.viewHash&&this.pict.views&&this.pict.views[e.viewHash])try{delete this.pict.views[e.viewHash]}catch(t){}e.viewInstance=null,e.viewHash=null}getMode(t){let e=this._instances[t];return e?e.mode:null}setMode(t,e,i){let n=this._instances[t];if(!n){let e=new Error("Cannot setMode — input is not mounted: "+t);return void("function"==typeof i&&i(e))}if("edit"!==e&&"view"!==e){let t=new Error('setMode: unknown mode "'+e+'" (use "edit" or "view")');return void("function"==typeof i&&i(t))}n.mode!==e?"edit"!==e?(this._destroyEdit(n.input),this._mountView(null,n.input,n.lastValue),"function"==typeof i&&i(null)):this._mountEdit(null,n.input,n.lastValue,i):"function"==typeof i&&i(null)}toggleMode(t,e){let i="edit"===this.getMode(t)?"view":"edit";this.setMode(t,i,e)}commit(t,e){let i=this._instances[t];i&&"edit"===i.mode&&i.viewInstance,"function"==typeof e&&e(null)}onInputInitialize(t,e,i,n,r,o,a){return this._mountView(t,n,r),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){let s=new Error("RichText InputType is not supported inside Tabular rows in Phase 1.");throw this.log&&this.log.warn("[Pict-Input-RichText] tabular not supported",{inputHash:i&&i.Hash}),s}onDataMarshalToForm(t,e,i,n,r,o,a){let s=this._instances[n.Hash];if(s){if("view"===s.mode)this._mountView(t,n,r);else if(s.lastValue="string"==typeof r?r:s.lastValue,this.pict.AppData._PictInputRichText&&this.pict.AppData._PictInputRichText[n.Hash]&&(this.pict.AppData._PictInputRichText[n.Hash].Segments=[{Content:s.lastValue}],s.viewInstance&&"function"==typeof s.viewInstance.render))try{s.viewInstance.render()}catch(t){this.log&&this.log.warn("[Pict-Input-RichText] re-render after marshal threw",{error:t.message})}}else this._mountView(t,n,r);return super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}},e.exports.default_configuration=s},{"../Pict-Provider-InputExtension.js":52,"./Pict-Provider-Input-RichText-CSS.js":69,marked:4,"pict-section-markdowneditor":28}],71:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getSelectInputHTMLID(t){return"#SELECT-FOR-".concat(t)}getTabularSelectInputID(t,e){return"#SELECT-TABULAR-DATA-".concat(t,"-").concat(e)}getTabularSelectDropdownID(t,e){return"#SELECT-TABULAR-DROPDOWN-".concat(t,"-").concat(e)}refreshSelectList(t,e,i,n,r,o){var a;let s=this.pict.ContentAssignment.getElement(this.getSelectInputHTMLID(n.Macro.RawHTMLID)),c=null===(a=n.PictForm)||void 0===a?void 0:a.SelectOptions;if(n.PictForm.SelectOptionsPickList&&this.pict.providers.DynamicMetaLists.hasList(n.PictForm.SelectOptionsPickList)&&(c=this.pict.providers.DynamicMetaLists.getList(n.PictForm.SelectOptionsPickList)),!s||s.length<1)return!1;if(c=this.pict.providers.ListDistilling.filterList(t,n,c),s=s[0],s.innerHTML="",s&&c&&Array.isArray(c))for(let t=0;t<c.length;t++){let e=document.createElement("option");e.value=c[t].id,e.text=c[t].text,s.appendChild(e)}}refreshSelectListTabular(t,e,i,n,r,o,a){var s;let c=this.pict.ContentAssignment.getElement(this.getTabularSelectDropdownID(n.Macro.RawHTMLID,a)),l=null===(s=n.PictForm)||void 0===s?void 0:s.SelectOptions;if(n.PictForm.SelectOptionsPickList&&this.pict.providers.DynamicMetaLists.hasList(n.PictForm.SelectOptionsPickList)&&(l=this.pict.providers.DynamicMetaLists.getList(n.PictForm.SelectOptionsPickList)),l=this.pict.providers.ListDistilling.filterList(t,n,l),Array.isArray(c)&&!(c.length<1)&&(c=c[0],c.innerHTML="",c&&l&&Array.isArray(l)))for(let t=0;t<l.length;t++){let e=document.createElement("option");e.value=l[t].id,e.text=l[t].text,c.appendChild(e)}}onInputInitialize(t,e,i,n,r,o,a){return this.refreshSelectList(t,e,i,n,r,o),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return this.refreshSelectListTabular(t,e,t.getRow(i.PictForm.GroupIndex,o),i,n,r,o),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onDataChange(t,e,i,n,r){return super.onDataChange(t,e,i,n,r)}onDataChangeTabular(t,e,i,n,r,o){return super.onDataChangeTabular(t,e,i,n,r,o)}onDataMarshalToForm(t,e,i,n,r,o,a){const s=this.pict.ContentAssignment.getElement(this.getSelectInputHTMLID(n.Macro.RawHTMLID));if(!s||s.length<1)return!1;const c=s[0];if(!(c instanceof HTMLSelectElement))return!1;let l=!1;for(let t=0;t<c.options.length;t++)if(c.options[t].value===r){c.selectedIndex=t,l=!0;break}return l||(c.selectedIndex=-1),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){const s=this.pict.ContentAssignment.getElement(this.getTabularSelectDropdownID(i.Macro.RawHTMLID,o));if(!s||s.length<1)return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a);const c=s[0];if(!(c instanceof HTMLSelectElement))return super.onDataMarshalToFormTabular(t,e,i,n,r,o,a);let l=!1;for(let t=0;t<c.options.length;t++)if(c.options[t].value===n){c.selectedIndex=t,l=!0;break}return l||(c.selectedIndex=-1),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}onDataRequest(t,e,i,n){let r=this.pict.ContentAssignment.readContent(this.getSelectInputHTMLID(e.Macro.RawHTMLID));return this.pict.ContentAssignment.assignContent(n,r),t.dataChanged(e.Hash),super.onDataRequest(t,e,r,n)}onDataRequestTabular(t,e,i,n,r){let o=this.pict.ContentAssignment.readContent(this.getTabularSelectDropdownID(e.Macro.RawHTMLID,r));return this.pict.ContentAssignment.assignContent(this.getTabularSelectInputID(e.Macro.RawHTMLID,r),o),t.dataChangedTabular(e.PictForm.GroupIndex,e.PictForm.InputIndex,r),super.onDataRequestTabular(t,e,i,n,r)}}},{"../Pict-Provider-InputExtension.js":52}],72:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.cssHideClass="pict-tab-group-hidden",this.cssSelectedTabClass="pict-tab-group-selectedtab",this.cssSnippet=".pict-tab-group-hidden { display: none; } .pict-tab-group-selectedtab { font-weight: bold; }",this.setCSSSnippets()}setCSSSnippets(t,e){this.cssHideClass=t||this.cssHideClass,this.cssSnippet=e||this.cssSnippet,this.pict.CSSMap.addCSS("Pict-Section-Form-Input-Group-TabSelector",this.cssSnippet,1001,"Pict-Input-TabSelector"),this.pict.CSSMap.injectCSS()}getTabSelector(t,e,i){return"#TAB-".concat(i,"-").concat(e.Macro.RawHTMLID)}getGroupSelector(t,e){return"#GROUP-".concat(t.formID,"-").concat(e)}selectTabByViewHash(t,e,i){var n;let r=this.pict.views[t];if(!r)return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the view did not exist!")),!1;let o=r.getInputFromHash(e);if(!o)return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the input did not exist!")),!1;if(null==o||null===(n=o.PictForm)||void 0===n||!n.TabGroupSet||!Array.isArray(o.PictForm.TabGroupSet))return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the input did not have a valid TabGroupSet array in the PictForm object!")),!1;for(let t=0;t<o.PictForm.TabGroupSet.length;t++){let e=o.PictForm.TabGroupSet[t];e!=i?(this.pict.ContentAssignment.addClass(this.getGroupSelector(r,e),this.cssHideClass),this.pict.ContentAssignment.removeClass(this.getTabSelector(r,o,e),this.cssSelectedTabClass)):(this.pict.ContentAssignment.removeClass(this.getGroupSelector(r,e),this.cssHideClass),this.pict.ContentAssignment.addClass(this.getTabSelector(r,o,e),this.cssSelectedTabClass))}return r.setDataByInput(o,i),!0}getTabSelectorInputHTMLID(t){return"#TAB-SELECT-FOR-".concat(t)}onInputInitialize(t,e,i,n,r,o,a){var s,c,l,p;let d=null===(s=n.PictForm)||void 0===s?void 0:s.TabGroupSet;if(!d||!Array.isArray(d)||d.length<1)return this.pict.log.error("TabSelector input provider tried to initialize Tab Group Set for HTML ID [".concat(n.Macro.RawHTMLID,"] but there were no valid entries in the tmpInput.PictForm.TabGroupSet array!")),!1;let u=this.pict.providers.DynamicInput.getInputTemplateHash(t,{PictForm:{InputType:"TabGroupSelector-TabElement",DataType:"String"}}),h="",m=(null===(c=n.PictForm)||void 0===c?void 0:c.TabGroupNames)||[];for(let e=0;e<d.length;e++)h+=this.pict.parseTemplateByHash(u,n,null,[t,{TabGroupHash:d[e],TabGroupName:m[e]||d[e]}]);this.pict.ContentAssignment.projectContent("replace",this.getTabSelectorInputHTMLID(n.Macro.RawHTMLID),h,"FixTheTypescriptTypes");const g=!1!==(null===(l=n.PictForm)||void 0===l?void 0:l.DefaultFromData)&&r||(null===(p=n.PictForm)||void 0===p?void 0:p.DefaultTabGroupHash)||d[0];return this.selectTabByViewHash(t.Hash,n.Hash,g),super.onInputInitialize(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],73:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.cssHideClass="pict-tab-section-hidden",this.cssSelectedTabClass="pict-tab-section-selectedtab",this.cssSnippet=".pict-tab-section-hidden { display: none; } .pict-tab-section-selectedtab { font-weight: bold; }",this.setCSSSnippets()}setCSSSnippets(t,e){this.cssHideClass=t||this.cssHideClass,this.cssSnippet=e||this.cssSnippet,this.pict.CSSMap.addCSS("Pict-Section-Form-Input-Section-TabSelector",this.cssSnippet,1001,"Pict-Input-TabSelector")}getViewHash(t){return"PictSectionForm-".concat(t)}getTabSelector(t,e){return"#TAB-".concat(t,"-").concat(e.Macro.RawHTMLID)}getSectionSelector(t){const e=this.pict.views.PictFormMetacontroller;return"#Pict-".concat(e?e.UUID:this.UUID,"-").concat(t,"-Wrap")}selectTabByViewHash(t,e,i){var n;let r=this.pict.views[t];if(!r)return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the view did not exist!")),!1;let o=r.getInputFromHash(e);if(!o)return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the input did not exist!")),!1;if(null==o||null===(n=o.PictForm)||void 0===n||!n.TabSectionSet||!Array.isArray(o.PictForm.TabSectionSet))return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the input did not have a valid TabSectionSet array in the PictForm object!")),!1;if(!this.pict.views[this.getViewHash(i)])return this.pict.log.error("TabSelector input provider tried to switch to view [".concat(t,"] input [").concat(e,"] tab [").concat(i,"] but the tab view did not exist!")),!1;for(let t=0;t<o.PictForm.TabSectionSet.length;t++){let e=o.PictForm.TabSectionSet[t];e!=i?(this.pict.ContentAssignment.addClass(this.getSectionSelector(e),this.cssHideClass),this.pict.ContentAssignment.removeClass(this.getTabSelector(e,o),this.cssSelectedTabClass)):(this.pict.ContentAssignment.removeClass(this.getSectionSelector(e),this.cssHideClass),this.pict.ContentAssignment.addClass(this.getTabSelector(e,o),this.cssSelectedTabClass))}return r.setDataByInput(o,i),!0}getTabSelectorInputHTMLID(t){return"#TAB-SELECT-FOR-".concat(t)}onInputInitialize(t,e,i,n,r,o,a){var s,c,l,p;let d=null===(s=n.PictForm)||void 0===s?void 0:s.TabSectionSet;if(!d||!Array.isArray(d)||d.length<1)return this.pict.log.error("TabSelector input provider tried to initialize Tab Group Set for HTML ID [".concat(n.Macro.RawHTMLID,"] but there were no valid entries in the tmpInput.PictForm.TabSectionSet array!")),!1;let u=this.pict.providers.DynamicInput.getInputTemplateHash(t,{PictForm:{InputType:"TabSectionSelector-TabElement",DataType:"String"}}),h="",m=(null===(c=n.PictForm)||void 0===c?void 0:c.TabSectionNames)||[];for(let e=0;e<d.length;e++)h+=this.pict.parseTemplateByHash(u,n,null,[t,{TabSectionHash:d[e],TabSectionName:m[e]||d[e]}]);this.pict.ContentAssignment.projectContent("replace",this.getTabSelectorInputHTMLID(n.Macro.RawHTMLID),h,"FixTheTypescriptTypes");const g=!1!==(null===(l=n.PictForm)||void 0===l?void 0:l.DefaultFromData)&&r||(null===(p=n.PictForm)||void 0===p?void 0:p.DefaultTabSectionHash)||d[0];return this.selectTabByViewHash(t.Hash,n.Hash,g),super.onInputInitialize(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],74:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.fable,this.pict,this.log}getTriggerGroupConfigurationArray(t){let e=t.PictForm.TabularTriggerGroup;return e?(Array.isArray(e)||(e=[e]),e):[]}ensureRowCache(t,e){return this.pict.AppData._TabularTriggerCache||(this.pict.AppData._TabularTriggerCache={}),this.pict.AppData._TabularTriggerCache[t]||(this.pict.AppData._TabularTriggerCache[t]={}),this.pict.AppData._TabularTriggerCache[t][e]||(this.pict.AppData._TabularTriggerCache[t][e]={}),this.pict.AppData._TabularTriggerCache[t][e]}gatherEntitySet(t,e,i,n,r,o,a){if(!e.Entity||"string"!=typeof e.Entity)return this.log.warn("TabularTriggerGroup failed to parse entity request: missing Entity string."),t();if(!e.Filter||"string"!=typeof e.Filter)return this.log.warn("TabularTriggerGroup failed to parse entity request: missing Filter string."),t();if(!e.Destination||"string"!=typeof e.Destination)return this.log.warn("TabularTriggerGroup failed to parse entity request: missing Destination string."),t();let s={Value:r,Input:n,View:i},c=this.pict.parseTemplate(e.Filter,s);""===c&&this.log.warn("TabularTriggerGroup: entity Filter did not return a string for FilterBy");let l=null,p=null;e.RecordCount&&(l=null!=e.RecordStartCursor?e.RecordStartCursor:0,p=null!=e.RecordCount?e.RecordCount:null);let d=(i,n)=>{if(i)return this.log.error("TabularTriggerGroup error getting entity set for [".concat(e.Entity,"] row ").concat(o,": ").concat(i),i),t(i);this.log.trace("TabularTriggerGroup found ".concat(n.length," records for ").concat(e.Entity," row ").concat(o));let r=this.ensureRowCache(a,o);return e.SingleRecord?n.length<1?this.pict.manifest.setValueByHash(r,e.Destination,!1):this.pict.manifest.setValueByHash(r,e.Destination,n[0]):this.pict.manifest.setValueByHash(r,e.Destination,n),t()};p?this.pict.EntityProvider.getEntitySetPage(e.Entity,c,l,p,d):this.pict.EntityProvider.getEntitySet(e.Entity,c,d)}gatherCustomDataSet(t,e,i,n,r,o,a){if(!e.URL||"string"!=typeof e.URL)return this.log.warn("TabularTriggerGroup failed to parse custom request: missing URL string."),t();let s={Value:r,Input:n,View:i},c=this.pict.parseTemplate(e.URL,s),l="",p=!!e.Host&&e.Host,d=e.Protocol?e.Protocol:"https",u=!!e.Port&&e.Port;p?(l="".concat(d,"://").concat(p),u&&(l+=":".concat(u))):l=this.pict.EntityProvider.options.urlPrefix;let h={url:"".concat(l).concat(c)};return h=this.pict.EntityProvider.prepareRequestOptions(h),this.pict.EntityProvider.restClient.getJSON(h,(i,n,r)=>{if(i)return this.log.error("TabularTriggerGroup error getting custom data for row ".concat(o,": ").concat(i),i),t(i);if(e.Destination){let t=this.ensureRowCache(a,o);this.pict.manifest.setValueByHash(t,e.Destination,r)}return t()})}async gatherDataForRow(t,e,i,n,r,o,a){if(!Array.isArray(o.EntitiesBundle)||o.EntitiesBundle.length<1)return this.log.warn("TabularTriggerGroup: no EntitiesBundle array found for triggering input [".concat(e.Hash,"] row ").concat(r)),null;let s=o.TriggerGroupHash,c="TabularBundleLoad-".concat(this.pict.getUUID());a&&t.registerEventTransactionAsyncOperation(a,c);let l=this.fable.newAnticipate();for(let n=0;n<o.EntitiesBundle.length;n++){let a=o.EntitiesBundle[n];l.anticipate(n=>{try{return"Custom"===a.Type?this.gatherCustomDataSet(n,a,t,e,i,r,s):this.gatherEntitySet(n,a,t,e,i,r,s)}catch(t){this.log.error("TabularTriggerGroup error gathering entity set for row ".concat(r,": ").concat(t),t)}return n()})}return l.anticipate(t=>setTimeout(t,0)),l.anticipate(i=>{this.pict.views.PictFormMetacontroller&&this.pict.views.PictFormMetacontroller.triggerGlobalInputEvent("TabularTriggerGroup:".concat(s,":DataChange:").concat(e.Hash||e.DataAddress,":").concat(r,":").concat(this.pict.getUUID()),a),o.PostSolvers&&Array.isArray(o.PostSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,o.PostSolvers,"TabularTriggerGroup hash ".concat(s," row ").concat(r," post-trigger")),i()}),new Promise((e,i)=>{l.wait(i=>(i&&this.log.error("TabularTriggerGroup error gathering data for row ".concat(r,": ").concat(i),i),a&&t.eventTransactionAsyncOperationComplete(a,c),e(i)))})}autoFillFromRowCache(t,e,i,n,r){if(!i.TriggerGroupHash||"string"!=typeof i.TriggerGroupHash)return this.log.warn("TabularTriggerGroup failed to autofill: missing TriggerGroupHash string."),!1;if(!i.TriggerAddress||"string"!=typeof i.TriggerAddress)return this.log.warn("TabularTriggerGroup failed to autofill: missing TriggerAddress string."),!1;let o=this.ensureRowCache(i.TriggerGroupHash,r),a=this.pict.manifest.getValueByHash(o,i.TriggerAddress);return!(!a&&!i.MarshalEmptyValues)&&(t.setDataTabularByHash(e.PictForm.GroupIndex,e.Hash,r,a),t.manualMarshalTabularDataToViewByInput(e,r),!0)}onDataChangeTabular(t,e,i,n,r,o){let a=this.getTriggerGroupConfigurationArray(e);for(let s=0;s<a.length;s++){let c=a[s];c.TriggerAllInputs&&(c.PreSolvers&&Array.isArray(c.PreSolvers)&&this.pict.providers.DynamicSolver.executeSolvers(t,c.PreSolvers,"TabularTriggerGroup hash ".concat(c.TriggerGroupHash," row ").concat(r," pre-trigger")),this.gatherDataForRow(t,e,i,n,r,c,o))}return super.onDataChangeTabular(t,e,i,n,r,o)}onAfterEventTabularCompletion(t,e,i,n,r,o,a){let s=("string"==typeof o?o:"").split(":"),c=s[0],l=s[1],p=(s[2],s[3]),d=parseInt(s[4],10);if("TabularTriggerGroup"!==c)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);if((e.Hash||e.DataAddress)===p)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);if(r!==d)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);let u=this.getTriggerGroupConfigurationArray(e);for(let o=0;o<u.length;o++){let a=u[o];if(a.TriggerGroupHash===l&&(a.TriggerAddress&&this.autoFillFromRowCache(t,e,a,n,r),a.SelectOptionsRefresh)){let t=this.pict.views[e.PictForm.ViewHash];t&&e.PictForm.SelectOptionsPickList&&(this.pict.providers.DynamicMetaLists.rebuildListByHash(e.PictForm.SelectOptionsPickList),this.pict.providers["Pict-Input-Select"].refreshSelectListTabular(t,t.getGroup(e.PictForm.GroupIndex),t.getRow(e.PictForm.GroupIndex,e.PictForm.Row),e,i,n,r),t.manualMarshalTabularDataToViewByInput(e,r))}}return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)}onDataChange(t,e,i,n,r){return super.onDataChange(t,e,i,n,r)}onAfterEventCompletion(t,e,i,n,r,o){return super.onAfterEventCompletion(t,e,i,n,r,o)}},e.exports.default_configuration={ProviderIdentifier:"Pict-Input-TabularTriggerGroup",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1}},{"../Pict-Provider-InputExtension.js":52}],75:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#DISPLAY-FOR-TABULAR-".concat(t,"-").concat(e)}handleContentUpdate(t,e,i,n){let r="";i&&"string"==typeof i&&(r=i);e.PictForm&&e.PictForm.Template&&"string"==typeof e.PictForm.Template&&(r=this.pict.parseTemplate(e.PictForm.Template,Object.assign({},this.pict,{Data:t.getMarshalDestinationObject()}),null,[this],this)),!r&&e.Default&&"string"==typeof e.Default&&(r=e.Default),null!=n?t.setDataTabularByHash(e.PictForm.GroupIndex,e.Hash,n,r):t.setDataByInput(e,r)}onInputInitialize(t,e,i,n,r,o,a){return this._handleInitialize(t,e,i,n,r,o,null,a),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return this._handleInitialize(t,e,null,i,n,r,o,a),super.onInputInitializeTabular(t,e,i,n,r,o,a)}_handleInitialize(t,e,i,n,r,o,a,s){if(n.PictForm&&n.PictForm.Templates&&"object"==typeof n.PictForm.Templates&&!Array.isArray(n.PictForm.Templates))for(const t of Object.entries(n.PictForm.Templates)){var c=_slicedToArray(t,2);const e=c[0],i=c[1];this.pict.TemplateProvider.templates[e]?this.pict.log.error("[Pict-Input-Templated] Attempt to override template with hash: ".concat(e,"; skipping.")):this.pict.TemplateProvider.addTemplate(e,i,"Templated Input hash: ".concat(n.Hash))}this.handleContentUpdate(t,n,r)}onDataMarshalToForm(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),r),super.onDataMarshalToForm(t,e,i,n,r,o,a)}onDataMarshalToFormTabular(t,e,i,n,r,o,a){return this.pict.ContentAssignment.assignContent(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),n),super.onDataMarshalToFormTabular(t,e,i,n,r,o,a)}onAfterEventCompletion(t,e,i,n,r,o){var a,s;let c=_slicedToArray(("string"==typeof r?r:"").split(":"),2),l=c[0],p=c[1];if("TriggerGroup"!==l)return super.onAfterEventCompletion(t,e,i,n,r,o);const d=Array.isArray(null===(a=e.PictForm)||void 0===a?void 0:a.TriggerGroupHash)?e.PictForm.TriggerGroupHash:[null===(s=e.PictForm)||void 0===s?void 0:s.TriggerGroupHash];return e.PictForm&&e.PictForm.TriggerGroupHash&&d.includes(p)?(this.handleContentUpdate(t,e,i),t.manualMarshalDataToViewByInput(e,o),super.onAfterEventCompletion(t,e,i,n,r,o)):super.onAfterEventCompletion(t,e,i,n,r,o)}onAfterEventTabularCompletion(t,e,i,n,r,o,a){var s,c;let l=_slicedToArray(("string"==typeof o?o:"").split(":"),2),p=l[0],d=l[1];if("TriggerGroup"!==p)return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);const u=Array.isArray(null===(s=e.PictForm)||void 0===s?void 0:s.TriggerGroupHash)?e.PictForm.TriggerGroupHash:[null===(c=e.PictForm)||void 0===c?void 0:c.TriggerGroupHash];return e.PictForm&&e.PictForm.TriggerGroupHash&&u.includes(d)?(this.handleContentUpdate(t,e,i,r),t.manualMarshalTabularDataToViewByInput(e,r,a),super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)):super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52}],76:[function(t,e,i){const n=t("../Pict-Provider-InputExtension.js");t("marked");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}getContentDisplayHTMLID(t){return"#DISPLAY-FOR-".concat(t)}getTabularContentDisplayInputID(t,e){return"#".concat(t,"-").concat(e)}assignDisplayEntityData(t,e,i){let n="string"==typeof e.PictForm.TemplatedEntityLookup.Template?e.PictForm.TemplatedEntityLookup.Template:"",r="";if("object"!=typeof e)return void this.log.error("Error in assignDisplayEntityData: pInput is not an object");if(!("PictForm"in e))return void this.log.error("Error in assignDisplayEntityData: pInput.PictForm is not an object");if(!("TemplatedEntityLookup"in e.PictForm))return void this.log.error("Error in assignDisplayEntityData: pInput.PictForm.TemplatedEntityLookup is not in the PictForm object");if(!Array.isArray(e.PictForm.TemplatedEntityLookup.EntitiesBundle))return void this.log.error("Error in assignDisplayEntityData: pInput.PictForm.TemplatedEntityLookup.EntitiesBundle is not an array");const o=this.fable.newAnticipate();o.anticipate(function(t){this.pict.EntityProvider.gatherDataFromServer(e.PictForm.TemplatedEntityLookup.EntitiesBundle,e=>{setTimeout(()=>t(e),0)})}.bind(this)),o.anticipate(function(t){this.pict.parseTemplate(n,{Value:i},function(e,i){if(!e)return r=i,t();this.log.error("Error rendering template in assignDisplayEntityData",e)}.bind(this))}.bind(this)),o.wait(function(e){e?this.log.error("Error in assignDisplayEntityData",e):this.pict.ContentAssignment.assignContent(t,r)}.bind(this))}onInputInitialize(t,e,i,n,r,o,a){return this.assignDisplayEntityData(this.getContentDisplayHTMLID(n.Macro.RawHTMLID),n,r),super.onInputInitialize(t,e,i,n,r,o,a)}onInputInitializeTabular(t,e,i,n,r,o,a){return this.assignDisplayEntityData(this.getTabularContentDisplayInputID(i.Macro.RawHTMLID,o),i,n),super.onInputInitializeTabular(t,e,i,n,r,o,a)}onAfterEventCompletion(t,e,i,n,r,o){let a=_slicedToArray(("string"==typeof r?r:"").split(":"),5),s=(a[0],a[1]),c=(a[2],a[3],a[4]);if(c||(c=this.pict.getUUID()),!e.PictForm.TemplatedEntityLookup||!("TriggerGroupHash"in e.PictForm.TemplatedEntityLookup))return super.onAfterEventCompletion(t,e,i,n,r,o);let l=[e.PictForm.TemplatedEntityLookup];for(let t=0;t<l.length;t++){l[t].TriggerGroupHash===s&&this.assignDisplayEntityData(this.getContentDisplayHTMLID(e.Macro.RawHTMLID),e,i)}return super.onAfterEventCompletion(t,e,i,n,r,o)}onAfterEventTabularCompletion(t,e,i,n,r,o,a){let s=_slicedToArray(("string"==typeof o?o:"").split(":"),5),c=(s[0],s[1]),l=(s[2],s[3],s[4]);if(l||(l=this.pict.getUUID()),!e.PictForm.TemplatedEntityLookup||!("TriggerGroupHash"in e.PictForm.TemplatedEntityLookup))return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a);let p=[e.PictForm.TemplatedEntityLookup];for(const t of p)t.TriggerGroupHash===c&&this.assignDisplayEntityData(this.getTabularContentDisplayInputID(e.Macro.RawHTMLID,r),e,i);return super.onAfterEventTabularCompletion(t,e,i,n,r,o,a)}}},{"../Pict-Provider-InputExtension.js":52,marked:4}],77:[function(t,e,i){const n=["ink","paper","accent","highlight","deemphasis","link"],r={ink:"#1B1F23",paper:"#FDFCF7",accent:"#E66C2C",highlight:"#FFD966",deemphasis:"#A0A0A0",link:"#2E7D74"};function o(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}e.exports={themeifySVG:function(t,e){if("string"!=typeof t)return t;let i=r;e&&"object"==typeof e&&(i=e.Palette||e);let a=t.match(/<metadata[\s\S]*?<\/metadata>/i),s=a?a[0]:"",c=" PICT-SECTION-EXCALIDRAW-METADATA ",l=s?t.replace(s,c):t;for(let t=0;t<n.length;t++){let e=n[t],r=i[e];if("string"!=typeof r||!/^#[0-9a-fA-F]{6}$/.test(r))continue;let a=new RegExp('(stroke|fill)(="|:\\s*)('+o(r)+')(?=["\\s;)])',"gi");l=l.replace(a,(t,i,n,r)=>i+n+"var(--diagram-"+e+", "+r+")")}return s?l.replace(c,s):l},paletteTokens:n,defaultPalette:r}},{}],78:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){let i=this.pict.providers.MetatemplateGenerator,n="";return n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),n+="No really... this is a chart.",n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n}}},{"../Pict-Provider-DynamicLayout.js":45}],79:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){for(let t=0;t<e.Rows.length;t++){let i=e.Rows[t];for(let n=0;n<i.Inputs.length;n++){let r=i.Inputs[n];r.PictForm.InputIndex=n,r.PictForm.GroupIndex=e.GroupIndex,r.PictForm.RowIndex=t}}const i=e.CustomLayoutTemplateHash;if(i){const t=this.pict.TemplateProvider.getTemplate(i);if(t)return t;this.log.warn("Custom layout template not found for hash: ".concat(i))}return e.CustomLayoutTemplate||""}}},{"../Pict-Provider-DynamicLayout.js":45}],80:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){let i=this.pict.providers.MetatemplateGenerator,n="";"Rows"in e||(e.Rows=[]),n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let r=0;r<e.Rows.length;r++){let o=e.Rows[r];o.WidthTotalRaw=0,n+=i.getMetatemplateTemplateReference(t,"-Template-Row-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let t=0;t<o.Inputs.length;t++){let i=o.Inputs[t];i.PictForm.InputIndex=t,i.PictForm.GroupIndex=e.GroupIndex,i.PictForm.RowIndex=r;let n=1;try{n=Math.abs(parseFloat(i.PictForm.Width))}catch(t){n=1}(!n||isNaN(n)||n<=0)&&(n=1),i.PictForm.RawWidth=n,o.WidthTotalRaw+=n}let a=95;if("WidthQuantization"in e)try{a=Math.abs(parseInt(e.WidthQuantization)),(!a||isNaN(a)||a<=0)&&(a=95)}catch(t){a=95}else"WidthQuantization"in this.pict.PictApplication.options&&(a=this.pict.PictApplication.options.WidthQuantization);for(let s=0;s<o.Inputs.length;s++){let c=o.Inputs[s];c.PictForm.QuantizedWidth=Math.round(c.PictForm.RawWidth/o.WidthTotalRaw*a),n+=i.getInputMetatemplateTemplateReference(t,c.DataType,c.PictForm.InputType,'getInput("'.concat(e.GroupIndex,'","').concat(r,'","').concat(s,'")'))}n+=i.getMetatemplateTemplateReference(t,"-Template-Row-Postfix",'getGroup("'.concat(e.GroupIndex,'")'))}return n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n}}},{"../Pict-Provider-DynamicLayout.js":45}],81:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){if(!e.supportingManifest)return this.log.error("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] error generating tabular metatemplate: missing group manifest ").concat(e.RecordManifest," from supportingManifests.")),"";let i=this.pict.providers.MetatemplateGenerator,n="",r="";n+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));let o=0;for(let t=0;t<e.supportingManifest.elementAddresses.length;t++){let i=e.supportingManifest.elementAddresses[t],n=e.supportingManifest.elementDescriptors[i];"PictForm"in n||(n.PictForm={}),n.PictForm.TabularHidden||(n.PictForm.InputIndex=t,n.PictForm.GroupIndex=e.GroupIndex,n.PictForm.Row&&(n.PictForm.RowIndex=n.PictForm.Row,n.PictForm.RowIndex>o&&(o=n.PictForm.RowIndex)))}for(let t=0;t<e.supportingManifest.elementAddresses.length;t++){let i=e.supportingManifest.elementAddresses[t],n=e.supportingManifest.elementDescriptors[i];"PictForm"in n||(n.PictForm={}),n.PictForm.TabularHidden||(n.PictForm.RowIndex||(n.PictForm.RowIndex=o+1))}for(let n=0;n<o+1;n++){r+=i.getMetatemplateTemplateReference(t,"-Template-Row-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let o=0;o<e.supportingManifest.elementAddresses.length;o++){let a=e.supportingManifest.elementAddresses[o],s=e.supportingManifest.elementDescriptors[a];if(!s.PictForm.TabularHidden&&s.PictForm.RowIndex==n){r+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Cell-Prefix",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'));let n="PictForm"in s&&s.PictForm.InputType?s.PictForm.InputType:"Default";r+=i.getTabularInputMetatemplateTemplateReference(t,s.DataType,n,'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'),e.GroupIndex,o),r+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Cell-Postfix",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'))}}r+=i.getMetatemplateTemplateReference(t,"-Template-Row-Postfix",'getGroup("'.concat(e.GroupIndex,'")'))}let a="";return a+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Row-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),a+=i.getMetatemplateTemplateReferenceRaw(t,"-RecordSetTemplate-Row-ExtraPrefix","Record"),a+="\n\n{~T:".concat(e.SectionTabularRowTemplateHash,":Record~}\n"),a+=i.getMetatemplateTemplateReferenceRaw(t,"-RecordSetTemplate-Row-ExtraPostfix","Record"),a+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Row-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n+="\n\n{~MTVS:".concat(e.SectionTabularRowVirtualTemplateHash,":").concat(e.GroupIndex,":").concat(t.getMarshalDestinationAddress(),".").concat(e.RecordSetAddress,"~}\n"),n+=i.getMetatemplateTemplateReference(t,"-RecordSetTemplate-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),this.pict.TemplateProvider.addTemplate(e.SectionTabularRowVirtualTemplateHash,a),this.pict.TemplateProvider.addTemplate(e.SectionTabularRowTemplateHash,r),n}}},{"../Pict-Provider-DynamicLayout.js":45}],82:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.pict&&this.pict.providers&&this.pict.providers.Icon&&"function"==typeof this.pict.providers.Icon.registerSet&&this.pict.providers.Icon.registerSet({Outline:{Sort:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 20V5"/><path d="M5.5 8.5L9 5L12.5 8.5"/><path d="M15 4V19"/><path d="M11.5 15.5L15 19L18.5 15.5"/></svg>',SortAscending:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20V5"/><path d="M6 11L12 5L18 11"/></svg>',SortDescending:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 4V19"/><path d="M6 13L12 19L18 13"/></svg>'}}),this.pict&&this.pict.CSSMap&&"function"==typeof this.pict.CSSMap.addCSS&&(this.pict.CSSMap.addCSS("Pict-Layout-Tabular-Sort-CSS",".pict-tabular-sort-control { cursor: pointer; display: inline-flex; vertical-align: middle; margin-left: 0.3em; opacity: 0.4; } .pict-tabular-sort-control:hover { opacity: 0.75; } .pict-tabular-sort-control.pict-tabular-sort-asc, .pict-tabular-sort-control.pict-tabular-sort-desc { opacity: 1; }",500),this.pict.CSSMap.addCSS("Pict-Layout-Tabular-ColumnChooser-CSS","\n\t.pict-tabular-colchooser-bar { display: flex; justify-content: flex-end; margin: 0 0 0.35rem; }\n\t.pict-tabular-colchooser-trigger { display: inline-flex; align-items: center; gap: 0.35rem; cursor: pointer; font: inherit; font-size: 0.88rem;\n\t\tpadding: 0.3rem 0.65rem; border: 1px solid var(--theme-color-border-default, #d7dce3); border-radius: 7px;\n\t\tbackground: var(--theme-color-background-panel, #fff); color: var(--theme-color-text-secondary, #45505f); }\n\t.pict-tabular-colchooser-trigger:hover { background: var(--theme-color-background-tertiary, #eceef2); color: var(--theme-color-text-primary, #1f2733); }\n\t.pict-tabular-colchooser-count { font-size: 0.8em; color: var(--theme-color-text-muted, #6b7686); }\n\t.pict-tabular-colchooser-pop { position: fixed; z-index: 30; min-width: 220px; max-width: 320px; display: none; }\n\t.pict-tabular-colchooser-pop.open { display: block; }\n\t.pict-tabular-colchooser-backdrop { position: fixed; inset: 0; z-index: 0; }\n\t.pict-tabular-colchooser-panel { position: relative; z-index: 1; display: flex; flex-direction: column; max-height: min(70vh, 420px);\n\t\tbackground: var(--theme-color-background-panel, #fff); border: 1px solid var(--theme-color-border-default, #d7dce3);\n\t\tborder-radius: 10px; box-shadow: 0 10px 28px rgba(17, 24, 39, 0.14); overflow: hidden; }\n\t.pict-tabular-colchooser-list { flex: 1 1 auto; overflow-y: auto; padding: 0.25rem 0; }\n\t.pict-tabular-colchooser-row { display: flex; align-items: center; gap: 0.5rem; font-size: 0.9rem; cursor: pointer;\n\t\tpadding: 0.32rem 0.8rem; color: var(--theme-color-text-primary, #1f2733); }\n\t.pict-tabular-colchooser-row:hover { background: var(--theme-color-background-tertiary, #eceef2); }\n\t.pict-tabular-colchooser-row input { flex: 0 0 auto; margin: 0; cursor: pointer; }\n\t.pict-tabular-colchooser-footer { flex: 0 0 auto; display: flex; justify-content: flex-end; padding: 0.45rem 0.7rem; border-top: 1px solid var(--theme-color-border-light, #e8ebf0); }\n\t.pict-tabular-colchooser-reset { font: inherit; font-size: 0.84rem; cursor: pointer; border: none; background: transparent; color: var(--theme-color-text-muted, #6b7686); padding: 0.15rem 0.3rem; border-radius: 5px; }\n\t.pict-tabular-colchooser-reset:hover { color: var(--theme-color-text-primary, #1f2733); background: var(--theme-color-background-tertiary, #eceef2); }\n",500))}_buildSortableHeaderCell(t,e,i,n){let r=e._SortState||{ColumnIndex:-1,Direction:"none"},o=r.ColumnIndex===n&&"none"!==r.Direction,a="Sort",s="pict-tabular-sort-none";o&&"asc"===r.Direction?(a="SortAscending",s="pict-tabular-sort-asc"):o&&"desc"===r.Direction&&(a="SortDescending",s="pict-tabular-sort-desc");let c="function"==typeof this.pict.icon?this.pict.icon(a):"",l=this._escapeHTML(i&&null!=i.Name?String(i.Name):"");return'\n\t\t\t\t\t\t<th data-tabular-column-index="'.concat(n,'">').concat(l," ")+'<span class="pict-tabular-sort-control '.concat(s,'" ')+"onclick=\"_Pict.providers['Pict-Layout-Tabular'].sortTabularColumn('".concat(t.Hash,"', ").concat(e.GroupIndex,", ").concat(n,')">')+"".concat(c,"</span></th>\n")}_getTabularCellValue(t,e,i){if(!e||!i||!t.supportingManifest)return;let n=e.PictForm&&"string"==typeof e.PictForm.InformaryDataAddress&&e.PictForm.InformaryDataAddress.length>0?e.PictForm.InformaryDataAddress:e.Hash;try{return t.supportingManifest.getValueByHash(i,n)}catch(t){return}}_compareTabularValues(t,e){let i=null==t?"":t,n=null==e?"":e,r=Number(i),o=Number(n);return""===i||""===n||isNaN(r)||isNaN(o)?String(i).localeCompare(String(n)):r<o?-1:r>o?1:0}sortTabularColumn(t,e,i){let n=this.pict.views[t];if(!n||!n.sectionDefinition||!Array.isArray(n.sectionDefinition.Groups))return!1;let r=n.sectionDefinition.Groups[Number(e)];if(!r||!0!==r.ColumnSorting)return!1;let o=Number(i);if(isNaN(o)||o<0)return!1;r._SortState||(r._SortState={ColumnIndex:-1,Direction:"none"}),r._SortState.ColumnIndex===o&&"asc"===r._SortState.Direction?r._SortState.Direction="desc":(r._SortState.ColumnIndex=o,r._SortState.Direction="asc");let a=null;if(r.supportingManifest&&Array.isArray(r.supportingManifest.elementAddresses)){let t=r.supportingManifest.elementAddresses[o];a=r.supportingManifest.elementDescriptors[t]}let s=n.sectionManifest.getValueByHash(n.getMarshalDestinationObject(),r.RecordSetAddress);if(a&&Array.isArray(s)){let t="desc"===r._SortState.Direction?-1:1;s.sort((e,i)=>this._compareTabularValues(this._getTabularCellValue(r,a,e),this._getTabularCellValue(r,a,i))*t)}return n.rebuildCustomTemplate(),n.render(),this.pict.views.PictFormMetacontroller?this.pict.views.PictFormMetacontroller.marshalFormSections():n.marshalToView(),!0}_parseTabularTemplate(t,e){if("string"!=typeof t)return"";if(-1===t.indexOf("{"))return t;try{let i=this.pict.parseTemplate(t,e,null);return"string"==typeof i?i:""}catch(t){return this.log.warn("PICT Form Tabular template parse failed: ".concat(t&&t.message)),""}}_buildExpandedHeadersConfig(t,e){let i=[],n=this._getTabularColumnChooserHiddenSet(t,e),r=[];if(n&&e.supportingManifest&&Array.isArray(e.supportingManifest.elementAddresses))for(let t=0;t<e.supportingManifest.elementAddresses.length;t++){let i=e.supportingManifest.elementDescriptors[e.supportingManifest.elementAddresses[t]];!i||i.PictForm&&i.PictForm.TabularHidden||r.push(!n.has(String(e.supportingManifest.elementAddresses[t])))}if(Array.isArray(e.Headers))for(let t=0;t<e.Headers.length;t++){let o=e.Headers[t];if(!Array.isArray(o))continue;let a=[],s=0;for(let t=0;t<o.length;t++){let e=o[t];if(!e||"object"!=typeof e)continue;let i=Number(e.ColumnSpan)>0?Number(e.ColumnSpan):1;if(n){let t=0;for(let e=0;e<i;e++)(s>=r.length||r[s])&&t++,s++;if(0===t)continue;i=t}a.push({Label:"string"==typeof e.Label?e.Label:"",ColumnSpan:i,CSSClass:"string"==typeof e.CSSClass?e.CSSClass:""})}i.push(a)}let o=!1;if(Array.isArray(e.DynamicColumns))for(let t=0;t<e.DynamicColumns.length;t++)if(e.DynamicColumns[t]&&e.DynamicColumns[t].HeaderGroupTemplate){o=!0;break}if(o&&e.supportingManifest){let t=[],r=null,o=e.supportingManifest.elementAddresses;for(let i=0;i<o.length;i++){let a=e.supportingManifest.elementDescriptors[o[i]];if(!a)continue;if(a.PictForm&&a.PictForm.TabularHidden)continue;if(n&&n.has(String(o[i])))continue;let s="number"==typeof a._DynamicColumnGeneratorIndex,c=s&&"string"==typeof a._DynamicColumnHeaderGroup?a._DynamicColumnHeaderGroup:"",l=s?"D".concat(a._DynamicColumnGeneratorIndex,"|").concat(c):"S|".concat(i);r&&r.RunKey===l?r.Cell.ColumnSpan+=1:(r={RunKey:l,Cell:{Label:s?c:"",ColumnSpan:1,CSSClass:s?"pict-tabular-dynamic-header-group":"pict-tabular-static-header-spacer"}},t.push(r.Cell))}i.push(t)}return i}_computeRowLabelMetadata(t,e){if(!Array.isArray(e.RowLabels)||0===e.RowLabels.length)return void(e.RowLabelMetadata=[]);let i=[];if("string"==typeof e.RecordSetAddress&&e.RecordSetAddress.length>0){let n=t.getMarshalDestinationObject(),r=t.sectionManifest.getValueByHash(n,e.RecordSetAddress);Array.isArray(r)&&(i=r)}let n=[];for(let t=0;t<i.length;t++){let r=i[t],o=[];for(let i=0;i<e.RowLabels.length;i++){let n=e.RowLabels[i],a="";if(!0===n.RowNumber)a=String(t+1);else if("string"==typeof n.SourceAddress&&n.SourceAddress.length>0){let e=this.pict.resolveStateFromAddress(n.SourceAddress,null);if(Array.isArray(e)&&t<e.length){let i=e[t];a="string"==typeof i?i:null==i?"":String(i)}}else"string"==typeof n.Template&&(a=this._parseTabularTemplate(n.Template,{Value:r,Key:t}));o.push({Label:n.Name||"",RenderedLabel:a,RowSpan:1,Skip:!1,Cluster:!0===n.Cluster,CSSClass:"string"==typeof n.CSSClass?n.CSSClass:""})}n.push({Cells:o})}for(let t=0;t<e.RowLabels.length;t++){if(!e.RowLabels[t].Cluster)continue;let i=0;for(let e=1;e<=n.length;e++){if(!(e===n.length)&&n[e].Cells[t].RenderedLabel===n[i].Cells[t].RenderedLabel)n[e].Cells[t].Skip=!0;else{let r=e-i;n[i].Cells[t].RowSpan=r,i=e}}}e.RowLabelMetadata=n}_renderTabularRowLabelsHTML(t,e,i){if(!t||!t.sectionDefinition||!Array.isArray(t.sectionDefinition.Groups))return"";let n=Number(e);if(isNaN(n)||n<0||n>=t.sectionDefinition.Groups.length)return"";let r=t.sectionDefinition.Groups[n],o=Number(i);0===o&&this._computeRowLabelMetadata(t,r);let a="";if(r._RowSelectionConfig&&!isNaN(o)&&o>=0){let e=this._getTabularSelectionArray(t,r._RowSelectionConfig)[o]?' checked="checked"':"";a+='<td class="pict-tabular-row-select">'+'<input type="checkbox"'.concat(e," onchange=\"_Pict.providers['Pict-Layout-Tabular'].toggleTabularRowSelection('").concat(t.Hash,"', ").concat(n,", '").concat(o,"', this.checked)\">")+"</td>"}if(Array.isArray(r.RowLabelMetadata)&&!isNaN(o)&&o>=0&&o<r.RowLabelMetadata.length){let t=r.RowLabelMetadata[o].Cells;for(let e=0;e<t.length;e++){let i=t[e];if(i.Skip)continue;let n=i.RowSpan>1?' rowspan="'.concat(i.RowSpan,'"'):"",r="pict-row-label".concat(i.Cluster?" pict-row-label-clustered":"").concat(i.CSSClass?" "+i.CSSClass:"");a+="<td".concat(n,' class="').concat(r,'">').concat(this._escapeHTML(i.RenderedLabel),"</td>")}}return a}_renderTabularEditingControlsHTML(t,e,i){if(!t)return"";let n=t.Hash;return'<td class="pict-tabular-editing-controls"><a href="#/" onClick="_Pict.views[\''.concat(n,"'].deleteDynamicTableRow(").concat(e,",'").concat(i,'\')">del</a> <a href="#/" onClick="_Pict.views[\'').concat(n,"'].moveDynamicTableRowUp(").concat(e,",'").concat(i,'\')">up</a> <a href="#/" onClick="_Pict.views[\'').concat(n,"'].moveDynamicTableRowDown(").concat(e,",'").concat(i,"')\">down</a></td>")}_escapeHTML(t){return"string"!=typeof t?"":t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}_normalizeSelectionConfig(t,e,i){if(!0!==t&&("object"!=typeof t||null===t))return null;let n="object"==typeof t?t:{};return!1===n.Enabled?null:{DataAddress:"string"==typeof n.DataAddress&&n.DataAddress.length>0?n.DataAddress:e,HighlightClass:"HighlightClass"in n?n.HighlightClass||"":i,HeaderLabel:"string"==typeof n.HeaderLabel?n.HeaderLabel:""}}_getTabularSelectionAddress(t,e){return"".concat(t.getMarshalDestinationAddress(),".").concat(e.DataAddress)}_getTabularSelectionArray(t,e){let i=this.pict.resolveStateFromAddress(this._getTabularSelectionAddress(t,e));return Array.isArray(i)?i:[]}_setTabularSelectionFlag(t,e,i,n){let r=this._getTabularSelectionArray(t,e),o=Number(i);return!isNaN(o)&&o>=0&&(r[o]=!!n),this.pict.setStateValueAtAddress(this._getTabularSelectionAddress(t,e),null,r),r}toggleTabularRowSelection(t,e,i,n){let r=this.pict.views[t];if(!r||!r.sectionDefinition||!Array.isArray(r.sectionDefinition.Groups))return!1;let o=r.sectionDefinition.Groups[Number(e)];return!(!o||!o._RowSelectionConfig)&&(this._setTabularSelectionFlag(r,o._RowSelectionConfig,i,n),o._RowSelectionConfig.HighlightClass&&this.pict.providers.DynamicFormSolverBehaviors&&this.pict.providers.DynamicFormSolverBehaviors.highlightTabularRow(r.sectionDefinition.Hash,o.Hash,i,n?1:0,o._RowSelectionConfig.HighlightClass),this.pict.PictApplication.solve(),!0)}toggleTabularColumnSelection(t,e,i,n){let r=this.pict.views[t];if(!r||!r.sectionDefinition||!Array.isArray(r.sectionDefinition.Groups))return!1;let o=r.sectionDefinition.Groups[Number(e)];return!(!o||!o._ColumnSelectionConfig)&&(this._setTabularSelectionFlag(r,o._ColumnSelectionConfig,i,n),o._ColumnSelectionConfig.HighlightClass&&this.pict.providers.DynamicFormSolverBehaviors&&this.pict.providers.DynamicFormSolverBehaviors.highlightTabularColumn(r.sectionDefinition.Hash,o.Hash,i,n?1:0,o._ColumnSelectionConfig.HighlightClass),this.pict.PictApplication.solve(),!0)}_reapplyTabularSelectionHighlights(t,e){let i=this.pict.providers.DynamicFormSolverBehaviors;if(!i||!t.sectionDefinition)return;let n=t.sectionDefinition.Hash;if(e._RowSelectionConfig&&e._RowSelectionConfig.HighlightClass){let r=this._getTabularSelectionArray(t,e._RowSelectionConfig);for(let t=0;t<r.length;t++)i.highlightTabularRow(n,e.Hash,t,r[t]?1:0,e._RowSelectionConfig.HighlightClass)}if(e._ColumnSelectionConfig&&e._ColumnSelectionConfig.HighlightClass){let r=this._getTabularSelectionArray(t,e._ColumnSelectionConfig);for(let t=0;t<r.length;t++)i.highlightTabularColumn(n,e.Hash,t,r[t]?1:0,e._ColumnSelectionConfig.HighlightClass)}}_normalizeColumnChooserConfig(t,e){if(!0!==t&&("object"!=typeof t||null===t))return null;let i="object"==typeof t?t:{};return!1===i.Enabled?null:{DataAddress:"string"==typeof i.DataAddress&&i.DataAddress.length>0?i.DataAddress:e,ButtonLabel:"string"==typeof i.ButtonLabel&&i.ButtonLabel.length>0?i.ButtonLabel:"Columns",DefaultHiddenColumns:Array.isArray(i.DefaultHiddenColumns)?i.DefaultHiddenColumns.map(t=>String(t)):[]}}_ensureTabularColumnChooserConfig(t){return void 0===t._ColumnChooserConfig&&(t._ColumnChooserConfig=this._normalizeColumnChooserConfig(t.ColumnChooser,"".concat(t.Hash,"_HiddenColumns"))),t._ColumnChooserConfig}_getTabularHiddenColumnsAddress(t,e){return"".concat(t.getMarshalDestinationAddress(),".").concat(e.DataAddress)}_getTabularColumnChooserDefaultHidden(t){let e=t._ColumnChooserConfig;if(!e)return[];let i={};for(let t=0;t<e.DefaultHiddenColumns.length;t++)i[e.DefaultHiddenColumns[t]]=!0;if(t.supportingManifest&&Array.isArray(t.supportingManifest.elementAddresses))for(let e=0;e<t.supportingManifest.elementAddresses.length;e++){let n=t.supportingManifest.elementAddresses[e],r=t.supportingManifest.elementDescriptors[n];r&&r.PictForm&&!r.PictForm.TabularHidden&&!0===r.PictForm.TabularDefaultHidden&&(i[String(n)]=!0)}return Object.keys(i)}_getTabularColumnChooserHiddenSet(t,e){let i=this._ensureTabularColumnChooserConfig(e);if(!i)return null;let n=this.pict.resolveStateFromAddress(this._getTabularHiddenColumnsAddress(t,i)),r=Array.isArray(n)?n:this._getTabularColumnChooserDefaultHidden(e),o=new Set;for(let t=0;t<r.length;t++)o.add(String(r[t]));return o}_getTabularColumnChooserStateKey(t,e){let i=this._getTabularColumnChooserHiddenSet(t,e);return i?Array.from(i).sort().join("|"):""}_getTabularChoosableColumns(t,e){let i=[];if(!e.supportingManifest||!Array.isArray(e.supportingManifest.elementAddresses))return i;let n=this._getTabularColumnChooserHiddenSet(t,e);for(let t=0;t<e.supportingManifest.elementAddresses.length;t++){let r=String(e.supportingManifest.elementAddresses[t]),o=e.supportingManifest.elementDescriptors[r];!o||o.PictForm&&o.PictForm.TabularHidden||i.push({Key:r,Name:null!=o.Name&&String(o.Name).length>0?String(o.Name):r,ColumnIndex:t,Visible:!(n&&n.has(r))})}return i}_getTabularColumnChooserElementId(t,e,i){return"PICTFORM-COLCHOOSER-".concat(i,"-").concat(t.formID,"-").concat(e.Hash)}_buildTabularColumnChooserBarHTML(t,e){let i=this._getTabularChoosableColumns(t,e).filter(t=>!t.Visible).length,n="function"==typeof this.pict.icon?this.pict.icon("Settings"):"",r=i>0?' <span class="pict-tabular-colchooser-count">('.concat(i," hidden)</span>"):"";return'<div class="pict-tabular-colchooser-bar">'+'<button type="button" class="pict-tabular-colchooser-trigger" id="'.concat(this._getTabularColumnChooserElementId(t,e,"TRIGGER"),'" ')+'title="Choose which columns to show" '+"onclick=\"_Pict.providers['Pict-Layout-Tabular'].toggleTabularColumnChooser('".concat(t.Hash,"', ").concat(e.GroupIndex,')">')+"".concat(n," ").concat(this._escapeHTML(e._ColumnChooserConfig.ButtonLabel)).concat(r,"</button>")+'<div class="pict-tabular-colchooser-pop" id="'.concat(this._getTabularColumnChooserElementId(t,e,"POPOVER"),'"></div>')+"</div>"}_renderTabularColumnChooserPopover(t,e){let i=this._getTabularChoosableColumns(t,e),n="";for(let r=0;r<i.length;r++){let o=i[r];n+='<label class="pict-tabular-colchooser-row">'+'<input type="checkbox"'.concat(o.Visible?' checked="checked"':""," ")+"onchange=\"_Pict.providers['Pict-Layout-Tabular'].toggleTabularColumnVisibility('".concat(t.Hash,"', ").concat(e.GroupIndex,", ").concat(o.ColumnIndex,', this.checked)">')+"<span>".concat(this._escapeHTML(o.Name),"</span>")+"</label>"}let r="<div class=\"pict-tabular-colchooser-backdrop\" onclick=\"_Pict.providers['Pict-Layout-Tabular'].closeTabularColumnChooser('".concat(t.Hash,"', ").concat(e.GroupIndex,')"></div>')+'<div class="pict-tabular-colchooser-panel">'+'<div class="pict-tabular-colchooser-list">'.concat(n,"</div>")+'<div class="pict-tabular-colchooser-footer">'+'<button type="button" class="pict-tabular-colchooser-reset" onclick="_Pict.providers[\'Pict-Layout-Tabular\'].resetTabularColumnVisibility(\''.concat(t.Hash,"', ").concat(e.GroupIndex,')">Reset to defaults</button>')+"</div></div>";this.pict.ContentAssignment.assignContent("#".concat(this._getTabularColumnChooserElementId(t,e,"POPOVER")),r)}_paintTabularColumnChooserOpenState(t,e,i){let n=this.pict.ContentAssignment.getElement("#".concat(this._getTabularColumnChooserElementId(t,e,"POPOVER")));n.length&&(n[0].classList.toggle("open",!!i),i&&this._positionTabularColumnChooserPopover(t,e,n[0]))}_positionTabularColumnChooserPopover(t,e,i){let n=this.pict.ContentAssignment.getElement("#".concat(this._getTabularColumnChooserElementId(t,e,"TRIGGER")));if(!n.length||"undefined"==typeof window)return;let r=i.querySelector(".pict-tabular-colchooser-panel"),o=n[0].getBoundingClientRect(),a=window.innerHeight,s=window.innerWidth,c=i.offsetWidth||240;i.style.left="".concat(Math.round(Math.max(8,Math.min(o.right-c,s-c-8))),"px"),i.style.right="auto";let l=a-o.bottom-6-8,p=o.top-6-8;l>=220||l>=p?(i.style.top="".concat(Math.round(o.bottom+6),"px"),i.style.bottom="auto",r&&(r.style.maxHeight="".concat(Math.max(160,Math.min(l,420)),"px"))):(i.style.top="auto",i.style.bottom="".concat(Math.round(a-o.top+6),"px"),r&&(r.style.maxHeight="".concat(Math.max(160,Math.min(p,420)),"px")))}_rebuildTabularGroupView(t){t.rebuildCustomTemplate(),t.render(),this.pict.views.PictFormMetacontroller?this.pict.views.PictFormMetacontroller.marshalFormSections():t.marshalToView()}toggleTabularColumnChooser(t,e){let i=this.pict.views[t];if(!i||!i.sectionDefinition||!Array.isArray(i.sectionDefinition.Groups))return!1;let n=i.sectionDefinition.Groups[Number(e)];if(!n||!this._ensureTabularColumnChooserConfig(n))return!1;let r=this.pict.ContentAssignment.getElement("#".concat(this._getTabularColumnChooserElementId(i,n,"POPOVER")));return r.length&&r[0].classList.contains("open")?(this._paintTabularColumnChooserOpenState(i,n,!1),!0):(this._renderTabularColumnChooserPopover(i,n),this._paintTabularColumnChooserOpenState(i,n,!0),!0)}closeTabularColumnChooser(t,e){let i=this.pict.views[t];if(!i||!i.sectionDefinition||!Array.isArray(i.sectionDefinition.Groups))return!1;let n=i.sectionDefinition.Groups[Number(e)];return!!n&&(this._paintTabularColumnChooserOpenState(i,n,!1),!0)}toggleTabularColumnVisibility(t,e,i,n){let r=this.pict.views[t];if(!r||!r.sectionDefinition||!Array.isArray(r.sectionDefinition.Groups))return!1;let o=r.sectionDefinition.Groups[Number(e)];if(!o)return!1;let a=this._ensureTabularColumnChooserConfig(o);if(!a)return!1;let s=this._getTabularChoosableColumns(r,o),c=s.find(t=>t.ColumnIndex===Number(i));if(!c)return!1;let l=this._getTabularColumnChooserHiddenSet(r,o);if(n)l.delete(c.Key);else{if(s.filter(t=>t.Visible).length<=1&&c.Visible)return this.log.warn("PICT Form Tabular column chooser on group [".concat(o.Hash,"] refused to hide the last visible column [").concat(c.Key,"].")),this._renderTabularColumnChooserPopover(r,o),this._paintTabularColumnChooserOpenState(r,o,!0),!1;l.add(c.Key)}return this.pict.setStateValueAtAddress(this._getTabularHiddenColumnsAddress(r,a),null,Array.from(l)),this._rebuildTabularGroupView(r),this._renderTabularColumnChooserPopover(r,o),this._paintTabularColumnChooserOpenState(r,o,!0),!0}resetTabularColumnVisibility(t,e){let i=this.pict.views[t];if(!i||!i.sectionDefinition||!Array.isArray(i.sectionDefinition.Groups))return!1;let n=i.sectionDefinition.Groups[Number(e)];if(!n)return!1;let r=this._ensureTabularColumnChooserConfig(n);return!!r&&(this.pict.setStateValueAtAddress(this._getTabularHiddenColumnsAddress(i,r),null,this._getTabularColumnChooserDefaultHidden(n)),this._rebuildTabularGroupView(i),this._renderTabularColumnChooserPopover(i,n),this._paintTabularColumnChooserOpenState(i,n,!0),!0)}generateGroupLayoutTemplate(t,e){if(!e.supportingManifest)return this.log.error("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] error generating tabular metatemplate: missing group manifest ").concat(e.RecordManifest," from supportingManifests.")),"";let i=this.pict.providers.MetatemplateGenerator,n="",r="",o="string"==typeof e.EditingControlsPosition?e.EditingControlsPosition:"right",a=Array.isArray(e.RowLabels)?e.RowLabels:[],s=!0===e.SuppressDefaultColumnHeaderRow,c=!0===e.ColumnSorting;c&&!e._SortState&&(e._SortState={ColumnIndex:-1,Direction:"none"}),e._ColumnChooserConfig=this._normalizeColumnChooserConfig(e.ColumnChooser,"".concat(e.Hash,"_HiddenColumns"));let l=this._getTabularColumnChooserHiddenSet(t,e);e._ColumnChooserBakedStateKey=l?Array.from(l).sort().join("|"):"";let p=this._buildExpandedHeadersConfig(t,e);e.ExpandedHeaders=p,e.RowLabelHeaderCells=a.map(t=>({Name:t.Name||"",CSSClass:"string"==typeof t.CSSClass?t.CSSClass:""})),e._RowSelectionConfig=this._normalizeSelectionConfig(e.RowSelection,"".concat(e.Hash,"_RowSelection"),"pict-tabular-row-highlight"),e._ColumnSelectionConfig=this._normalizeSelectionConfig(e.ColumnSelection,"".concat(e.Hash,"_ColumnSelection"),"pict-tabular-column-highlight");let d=null!=e._RowSelectionConfig,u=null!=e._ColumnSelectionConfig,h="left"===o,m="right"===o,g=(d?1:0)+a.length+(h?1:0);"left"!==o&&"hidden"!==o||(this.pict.TemplateProvider.addTemplate(t.getViewSpecificTemplateHash("-TabularTemplate-Row-ExtraPostfix"),""),this.pict.TemplateProvider.addTemplate(t.getViewSpecificTemplateHash("-TabularTemplate-RowHeader-ExtraPostfix"),"")),e._ColumnChooserConfig&&(n+=this._buildTabularColumnChooserBarHTML(t,e)),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowHeader-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let r=0;r<p.length;r++){let o=p[r];n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-ExtraHeaderRow-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let t=0;t<g;t++)n+='<th class="pict-row-label-spacer"></th>';for(let a=0;a<o.length;a++){let o='getGroup("'.concat(e.GroupIndex,'").ExpandedHeaders.').concat(r,".").concat(a);n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-ExtraHeaderCell",o)}m&&(n+='<th class="pict-row-label-spacer"></th>'),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-ExtraHeaderRow-Postfix",'getGroup("'.concat(e.GroupIndex,'")'))}if(u){let i=this._getTabularSelectionArray(t,e._ColumnSelectionConfig),r='<tr class="pict-tabular-column-select-row">';for(let t=0;t<g;t++)r+='<th class="pict-row-label-spacer"></th>';for(let n=0;n<e.supportingManifest.elementAddresses.length;n++){let o=e.supportingManifest.elementDescriptors[e.supportingManifest.elementAddresses[n]];if(!o||o.PictForm&&o.PictForm.TabularHidden)continue;if(l&&l.has(String(e.supportingManifest.elementAddresses[n])))continue;let a=i[n]?' checked="checked"':"";r+='<th class="pict-tabular-column-select">'+'<input type="checkbox"'.concat(a," onchange=\"_Pict.providers['Pict-Layout-Tabular'].toggleTabularColumnSelection('").concat(t.Hash,"', ").concat(e.GroupIndex,", ").concat(n,', this.checked)">')+"</th>"}m&&(r+='<th class="pict-row-label-spacer"></th>'),r+="</tr>",n+=r}n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowHeader-ExtraPrefix",'getGroup("'.concat(e.GroupIndex,'")')),d&&(n+='<th class="pict-row-label-header pict-tabular-row-select-header">'.concat(this._escapeHTML(e._RowSelectionConfig.HeaderLabel),"</th>"));for(let r=0;r<a.length;r++){let o='getGroup("'.concat(e.GroupIndex,'").RowLabelHeaderCells.').concat(r);n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowLabel-HeaderCell",o)}h&&(n+='<th class="pict-row-label-header pict-tabular-editing-controls-header"></th>');let f=0;for(let o=0;o<e.supportingManifest.elementAddresses.length;o++){let a=e.supportingManifest.elementAddresses[o],p=e.supportingManifest.elementDescriptors[a];if("PictForm"in p||(p.PictForm={}),p.PictForm.TabularHidden)continue;if(l&&l.has(String(a)))continue;p.PictForm.InputIndex=o,p.PictForm.GroupIndex=e.GroupIndex,p.PictForm.RowIndex=0,s||(n+=c?this._buildSortableHeaderCell(t,e,p,o):i.getMetatemplateTemplateReference(t,"-TabularTemplate-HeaderCell",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'))),r+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Cell-Prefix",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'));let d="PictForm"in p&&p.PictForm.InputType?p.PictForm.InputType:"Default";r+=i.getTabularInputMetatemplateTemplateReference(t,p.DataType,d,'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")'),e.GroupIndex,o),r+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Cell-Postfix",'getTabularRecordInput("'.concat(e.GroupIndex,'","').concat(o,'")')),f++}n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowHeader-ExtraPostfix",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-RowHeader-Postfix",'getGroup("'.concat(e.GroupIndex,'")'));for(let i=0;i<p.length;i++){let n=0;for(let t=0;t<p[i].length;t++)n+=p[i][t].ColumnSpan||1;n!==f&&this.log.warn("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] tabular group [").concat(e.Hash,"] header row ").concat(i," total ColumnSpan (").concat(n,") does not match data column count (").concat(f,"). Header will visually misalign."))}this._computeRowLabelMetadata(t,e);let D="";return D+=i.getMetatemplateTemplateReferenceRaw(t,"-TabularTemplate-Row-Prefix","Record"),D+=i.getMetatemplateTemplateReferenceRaw(t,"-TabularTemplate-Row-ExtraPrefix","Record"),(a.length>0||d)&&(D+="{~TRL:".concat(t.Hash,"~}")),h&&(D+="{~TEC:".concat(t.Hash,"~}")),D+="\n\n{~T:".concat(e.SectionTabularRowTemplateHash,":Record~}\n"),D+=i.getMetatemplateTemplateReferenceRaw(t,"-TabularTemplate-Row-ExtraPostfix","Record"),D+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Row-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n+="\n\n{~MTVS:".concat(e.SectionTabularRowVirtualTemplateHash,":").concat(e.GroupIndex,":").concat(t.getMarshalDestinationAddress(),".").concat(e.RecordSetAddress,"~}\n"),n+=i.getMetatemplateTemplateReference(t,"-TabularTemplate-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),this.pict.TemplateProvider.addTemplate(e.SectionTabularRowVirtualTemplateHash,D),this.pict.TemplateProvider.addTemplate(e.SectionTabularRowTemplateHash,r),n}onGroupLayoutInitialize(t,e){return!e||(this._reapplyTabularSelectionHighlights(t,e),!0)}onDataMarshalToForm(t,e){if(!e)return!0;if(e._RebuildInProgress)return!0;if(Array.isArray(e.DynamicColumns)&&e.DynamicColumns.length>0&&this.fable.ManifestFactory&&"function"==typeof this.fable.ManifestFactory._resolveDynamicColumns){let i=this.fable.ManifestFactory._resolveDynamicColumns(t,e);if(i&&i.changed){e._RebuildInProgress=!0;try{t.rebuildCustomTemplate(),t.render()}finally{e._RebuildInProgress=!1}return this._reapplyTabularSelectionHighlights(t,e),!0}}if(this._ensureTabularColumnChooserConfig(e)){if(this._getTabularColumnChooserStateKey(t,e)!==e._ColumnChooserBakedStateKey){e._RebuildInProgress=!0;try{t.rebuildCustomTemplate(),t.render()}finally{e._RebuildInProgress=!1}return this._reapplyTabularSelectionHighlights(t,e),!0}}return this._computeRowLabelMetadata(t,e),this._reapplyTabularSelectionHighlights(t,e),!0}}},{"../Pict-Provider-DynamicLayout.js":45}],83:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js"),r=t("./Pict-Layout-TuiGrid/Pict-Section-TuiGrid.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.options,this.pict,this.log,this.viewGridConfigurations={},this.viewTuiGrids={},this.viewGridState={}}getGridHtmlID(t,e){return"View-".concat(t.UUID,"-GroupTuiGrid-").concat(e.GroupIndex)}getViewTuiHtmlID(t,e){return"#".concat(this.getGridHtmlID(t,e))}getViewGrid(t,e){let i=this.getGridHtmlID(t,e);return this.viewTuiGrids.hasOwnProperty(i)?this.viewTuiGrids[i]:null}createViewTuiGrid(t,e){let i=this.getGridHtmlID(t,e);this.viewTuiGrids.hasOwnProperty(i)&&this.log.info("Dynamic TuiGrid view [".concat(t.UUID,"]::[").concat(t.Hash,"] is reinitializing a TuiGrid in group ").concat(e.GroupIndex," TuiGrid UUID [").concat(i,"]."));let n=this.getViewTuiConfiguration(t,e),o=this.pict.addView(i,n,r);return o.cachedGridData=this.generateDataRepresentation(t,e),o.initialize(),this.viewTuiGrids[i]=o,o}getViewTuiConfiguration(t,e){var i,n;let o=this.getGridHtmlID(t,e);if(!this.viewGridConfigurations.hasOwnProperty(o)){let a=JSON.parse(JSON.stringify(r.default_configuration));this.viewGridConfigurations[o]=a,a.DefaultDestinationAddress=this.getViewTuiHtmlID(t,e),a.TargetElementAddress=this.getViewTuiHtmlID(t,e),a.TuiColumnSchema=[];for(let r=0;r<e.supportingManifest.elementAddresses.length;r++){let o=e.supportingManifest.elementAddresses[r],s=e.supportingManifest.elementDescriptors[o];"PictForm"in s||(s.PictForm={}),s.PictForm.InputIndex=r,s.PictForm.GroupIndex=e.GroupIndex,s.PictForm.RowIndex=0;let c={header:s.Name,name:s.Hash,PictTriggerSolveOnChange:!0,PictSectionFormInput:s};switch(s.DataType){case"Number":case"PreciseNumber":c.editor={type:"EditorNumber",options:{}},c.editor.options.decimalPrecision=null!==(i=null==s||null===(n=s.PictForm)||void 0===n?void 0:n.DecimalPrecision)&&void 0!==i?i:10;break;case"String":c.editor="text";break;case"DateTime":c.editor={type:"datePicker",options:{format:"yyyy-MM-dd"}}}switch(s.PictForm.InputType){case"Option":{c.editor={type:"select",options:{listItems:[]}};let e=s.PictForm.SelectOptions;if(s.PictForm.SelectOptionsPickList&&this.pict.providers.DynamicMetaLists.hasList(t.Hash,s.PictForm.SelectOptionsPickList)&&(e=this.pict.providers.DynamicMetaLists.getList(t.Hash,s.PictForm.SelectOptionsPickList)),e&&Array.isArray(e))for(let t=0;t<e.length;t++){let i={value:e[t].id,text:e[t].text};c.editor.options.listItems.push(i)}break}}a.TuiColumnSchema.push(c)}}return this.viewGridConfigurations[o]}generateGroupLayoutTemplate(t,e){if(!e.supportingManifest)return this.log.error("PICT Form [".concat(t.UUID,"]::[").concat(t.Hash,"] error generating tabular metatemplate: missing group manifest ").concat(e.RecordManifest," from supportingManifests.")),"";let i=this.pict.providers.MetatemplateGenerator,n="";return n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),e.TuiGridHTMLID=this.getGridHtmlID(t,e),n+=i.getMetatemplateTemplateReference(t,"-TuiGrid-Container",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-TuiGrid-Controls",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n}generateDataRepresentation(t,e){let i=[];this.viewGridState[this.getGridHtmlID(t,e)]=i;let n=t.getTabularRecordSet(e.GroupIndex);if(Array.isArray(n))for(let t=0;t<n.length;t++){let r={RecordIndex:t},o=n[t];for(let t=0;t<e.supportingManifest.elementAddresses.length;t++){let i=e.supportingManifest.elementDescriptors[e.supportingManifest.elementAddresses[t]];i&&e.supportingManifest.setValueAtAddress(r,i.Hash,e.supportingManifest.getValueByHash(o,i.Hash))}i.push(r)}return i}onGroupLayoutInitialize(t,e){let i=this.createViewTuiGrid(t,e);if(i.render(),i.tuiGrid){const n=i.tuiGrid;n.View=t,n.Group=e}return!0}onDataMarshalToForm(t,e){let i=this.getViewGrid(t,e);if(!i)return this.log.error("PICT Form TuiGrid [".concat(t.UUID,"]::[").concat(t.Hash,"] error marshalling data to form: missing TuiGrid for group ").concat(e.GroupIndex,"; skipping marshal.")),!1;let n=t.getTabularRecordSet(e.GroupIndex),r=i.tuiGrid.getData();if(Array.isArray(n))for(let o=0;o<n.length;o++)try{let a=n[o],s=r[o];for(let n=0;n<e.supportingManifest.elementAddresses.length;n++){let r=e.supportingManifest.elementDescriptors[e.supportingManifest.elementAddresses[n]];if(r){let n=e.supportingManifest.getValueAtAddress(s,r.Hash),c=e.supportingManifest.getValueByHash(a,r.Hash);n!==c&&(this.log.trace("PICT Form TuiGrid Dynamic View [".concat(t.UUID,"]::[").concat(t.Hash,"] updating tabular record ").concat(o," element ").concat(r.Hash," from [").concat(n,"] to [").concat(c,"].")),i.tuiGrid.setValue(o,r.Hash,c))}}}catch(e){this.log.error("PICT Form TuiGrid [".concat(t.UUID,"]::[").concat(t.Hash,"] gross error marshalling data to form: ").concat(e))}return!0}addRow(t,e){if(!(t in this.pict.views))return this.log.error("PICT Form View [".concat(t,"] error adding row: no matching view found in pict.")),!1;let i=this.pict.views[t],n=i.getGroup(e);if(!n)return this.log.error("PICT Form View [".concat(t,"] error adding row: no matching group index ").concat(e," found in view.")),!1;let r=i.sectionManifest.getValueByHash(i.getMarshalDestinationObject(),n.RecordSetAddress),o=n.supportingManifest.populateDefaults({});if(Array.isArray(r))r.push(o);else if("object"==typeof r){r[i.fable.getUUID()]=o}let a=this.getViewGrid(i,n);a&&a.tuiGrid.appendRow(JSON.parse(JSON.stringify(o)))}}},{"../Pict-Provider-DynamicLayout.js":45,"./Pict-Layout-TuiGrid/Pict-Section-TuiGrid.js":84}],84:[function(t,e,i){const n=t("pict-section-tuigrid");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.viewGridConfigurations={},this.cachedGridData=[]}customConfigureGridSettings(){return this.gridSettings.data=this.cachedGridData,super.customConfigureGridSettings()}changeHandler(t){for(let e=0;e<t.changes.length;e++){let i=t.changes[e],n=t.instance.getValue(i.rowKey,"RecordIndex");t.instance.View.setDataTabularByHash(t.instance.Group.GroupIndex,i.columnName,n,i.value)}return super.changeHandler(t)}}},{"pict-section-tuigrid":30}],85:[function(t,e,i){const n=t("../Pict-Provider-DynamicLayout.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log}generateGroupLayoutTemplate(t,e){let i=this.pict.providers.MetatemplateGenerator,n="";"Rows"in e||(e.Rows=[]),n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Prefix",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-Template-VerticalRow-Prefix",'getGroup("'.concat(e.GroupIndex,'")'));for(let r=0;r<e.Rows.length;r++){let o=e.Rows[r];for(let a=0;a<o.Inputs.length;a++){let s=o.Inputs[a];s.PictForm.InputIndex=a,s.PictForm.GroupIndex=e.GroupIndex,s.PictForm.RowIndex=r,n+=i.getVerticalInputMetatemplateTemplateReference(t,s.DataType,s.PictForm.InputType,'getInput("'.concat(e.GroupIndex,'","').concat(r,'","').concat(a,'")'))}}return n+=i.getMetatemplateTemplateReference(t,"-Template-VerticalRow-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n+=i.getMetatemplateTemplateReference(t,"-Template-Group-Postfix",'getGroup("'.concat(e.GroupIndex,'")')),n}}},{"../Pict-Provider-DynamicLayout.js":45}],86:[function(t,e,i){const n=t("fable-serviceproviderbase");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.fable,this.log,this.UUID,this.CSV_HEADER=["Form","Form Name","SubManifest","HideTabularEditingControls","GroupRecordSetAddress","DataOnly","Section Name","Section Hash","Group Name","Group Hash","Group Layout","Group CSS","Group Show Title","Row","Width","Minimum Row Count","Maximum Row Count","Input Address","Input Name","Input Hash","Input Extra","Units","DataType","Decimal Precision","InputType","Equation","Equation Ordinal","Default","Description","Tooltip","Input Notes","Entity","EntityColumnFilter","EntityDestination","EntitySingleRecord","TriggerGroup","TriggerAddress","TriggerAllInputs","MarshalEmptyValues","ChartType","ChartLabelsAddress","ChartLabelsSolver","ChartDatasetsAddress","ChartDatasetsLabel","ChartDatasetsSolvers"],this.CSV_COLUMN_MAP={};for(let t=0;t<this.CSV_HEADER.length;t++){let e=this.CSV_HEADER[t];this.CSV_COLUMN_MAP[e]=t}}getRowFromDescriptor(t,e,i){let n=new Array(this.CSV_HEADER.length).fill("");if(!i||"object"!=typeof i||!e||"string"!=typeof e)return!1;let r=i.PictForm;if(n[this.CSV_COLUMN_MAP.Form]=t,n[this.CSV_COLUMN_MAP["Form Name"]]=i.FormName||"",n[this.CSV_COLUMN_MAP.SubManifest]="",n[this.CSV_COLUMN_MAP.DataOnly]=void 0===r?"1":"",n[this.CSV_COLUMN_MAP["Section Name"]]="",n[this.CSV_COLUMN_MAP["Section Hash"]]=r&&r.Section?r.Section:i.FormSection?i.FormSection:"",n[this.CSV_COLUMN_MAP["Group Name"]]="",n[this.CSV_COLUMN_MAP["Group Hash"]]=r&&r.Group?r.Group:i.FormGroup?i.FormGroup:"",n[this.CSV_COLUMN_MAP["Group Layout"]]="",n[this.CSV_COLUMN_MAP["Group CSS"]]="",n[this.CSV_COLUMN_MAP["Group Show Title"]]="",n[this.CSV_COLUMN_MAP.Row]=r&&r.Row?r.Row:"",n[this.CSV_COLUMN_MAP.Width]=r&&r.Width?r.Width:"",n[this.CSV_COLUMN_MAP["Minimum Row Count"]]="",n[this.CSV_COLUMN_MAP["Maximum Row Count"]]="",n[this.CSV_COLUMN_MAP["Input Address"]]=i.DataAddress?i.DataAddress:e,n[this.CSV_COLUMN_MAP["Input Name"]]=i.Name||i.DataAddress||e,n[this.CSV_COLUMN_MAP["Input Hash"]]=i.Hash||e,n[this.CSV_COLUMN_MAP["Input Extra"]]="",n[this.CSV_COLUMN_MAP.Units]=r&&r.Units?r.Units:"",n[this.CSV_COLUMN_MAP.DataType]=i.DataType||"String",n[this.CSV_COLUMN_MAP["Decimal Precision"]]=r&&r.DecimalPrecision?r.DecimalPrecision:"",n[this.CSV_COLUMN_MAP.InputType]=r&&r.InputType?r.InputType:"",n[this.CSV_COLUMN_MAP.Equation]="",n[this.CSV_COLUMN_MAP["Equation Ordinal"]]="",n[this.CSV_COLUMN_MAP.Default]=void 0!==i.Default?i.Default:"",n[this.CSV_COLUMN_MAP.Description]=i.Description?i.Description:"",n[this.CSV_COLUMN_MAP.Tooltip]=r&&r.Tooltip?r.Tooltip:"",n[this.CSV_COLUMN_MAP["Input Notes"]]=r&&r.SpreadsheetNotes?r.SpreadsheetNotes:"",n[this.CSV_COLUMN_MAP.Entity]="",n[this.CSV_COLUMN_MAP.EntityColumnFilter]="",n[this.CSV_COLUMN_MAP.EntityDestination]="",n[this.CSV_COLUMN_MAP.EntitySingleRecord]="",r&&r.EntitiesBundle&&Array.isArray(r.EntitiesBundle)&&r.EntitiesBundle.length>0){let t=r.EntitiesBundle[0];if(t.Entity&&(n[this.CSV_COLUMN_MAP.Entity]=t.Entity),t.Filter){let e=t.Filter,i=e.indexOf("FBV~"),r=e.indexOf("~EQ~");if(i>=0&&r>i){let t=e.substring(i+4,r);n[this.CSV_COLUMN_MAP.EntityColumnFilter]=t}}t.Destination&&(n[this.CSV_COLUMN_MAP.EntityDestination]=t.Destination),t.SingleRecord&&(n[this.CSV_COLUMN_MAP.EntitySingleRecord]="true")}if(n[this.CSV_COLUMN_MAP.TriggerGroup]="",n[this.CSV_COLUMN_MAP.TriggerAddress]="",n[this.CSV_COLUMN_MAP.TriggerAllInputs]="",n[this.CSV_COLUMN_MAP.MarshalEmptyValues]="",r&&r.AutofillTriggerGroup){let t;Array.isArray(r.AutofillTriggerGroup)&&r.AutofillTriggerGroup.length>0?t=r.AutofillTriggerGroup[0]:"object"==typeof r.AutofillTriggerGroup&&(t=r.AutofillTriggerGroup),t&&(t.TriggerGroupHash&&(n[this.CSV_COLUMN_MAP.TriggerGroup]=t.TriggerGroupHash),t.TriggerAllInputs&&(n[this.CSV_COLUMN_MAP.TriggerAllInputs]="true"),t.TriggerAddress&&(n[this.CSV_COLUMN_MAP.TriggerAddress]=t.TriggerAddress),t.MarshalEmptyValues&&(n[this.CSV_COLUMN_MAP.MarshalEmptyValues]="true"))}if(n[this.CSV_COLUMN_MAP.ChartType]=r&&r.ChartType?r.ChartType:"",n[this.CSV_COLUMN_MAP.ChartLabelsAddress]=r&&r.ChartLabelsAddress?r.ChartLabelsAddress:"",n[this.CSV_COLUMN_MAP.ChartLabelsSolver]=r&&r.ChartLabelsSolver?r.ChartLabelsSolver:"",n[this.CSV_COLUMN_MAP.ChartDatasetsAddress]=r&&r.ChartDatasetsAddress?r.ChartDatasetsAddress:"",n[this.CSV_COLUMN_MAP.ChartDatasetsLabel]=r&&r.ChartDatasetsSolvers&&Array.isArray(r.ChartDatasetsSolvers)&&r.ChartDatasetsSolvers.length>0?r.ChartDatasetsSolvers[0].Label:"",n[this.CSV_COLUMN_MAP.ChartDatasetsSolvers]=r&&r.ChartDatasetsSolvers&&Array.isArray(r.ChartDatasetsSolvers)&&r.ChartDatasetsSolvers.length>0?r.ChartDatasetsSolvers[0].DataSolver:"",r&&"Option"==r.InputType&&r.SelectOptions&&Array.isArray(r.SelectOptions)){let t="";for(let e=0;e<r.SelectOptions.length;e++){let i=r.SelectOptions[e];i.id&&i.text&&(t.length>0&&(t+=","),t+="".concat(i.id,"^").concat(i.text))}n[this.CSV_COLUMN_MAP["Input Extra"]]=t}return n}createTabularArrayFromManifests(t){let e=[],i="Default";if(t&&t.Scope&&"string"==typeof t.Scope&&(i=t.Scope),t&&t.Form&&"string"==typeof t.Form&&(i=t.Form),e.push(this.CSV_HEADER),"object"!=typeof t)return this.log.error("ManifestConversionToCSV: Provided manifest is not an object; cannot convert to CSV."),e;if(!t.Descriptors||"object"!=typeof t.Descriptors)return this.log.error("ManifestConversionToCSV: Provided manifest does not have a valid Descriptors property; cannot convert to CSV."),e;let n=Object.keys(t.Descriptors);for(let r=0;r<n.length;r++){let o=n[r],a=t.Descriptors[o];if(!a||"object"!=typeof a)continue;let s=this.getRowFromDescriptor(i,o,a);s&&e.push(s)}for(let n=0;n<t.Sections.length;n++){let r=t.Sections[n],o=r.Hash||"DEFAULT_SECTION_HASH";if(r&&"object"==typeof r){if(r.Groups&&Array.isArray(r.Groups))for(let n=0;n<r.Groups.length;n++){let a=r.Groups[n],s=a.Hash;if(("Tabular"==a.Layout||"RecordSet"==a.Layout)&&a.RecordSetAddress&&a.RecordManifest){let n=-1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){let e=i[this.CSV_COLUMN_MAP["Section Hash"]],r=i[this.CSV_COLUMN_MAP["Group Hash"]];if(e===o&&r===s){n=t;break}if(i[this.CSV_COLUMN_MAP["Input Address"]]===a.RecordSetAddress){i[this.CSV_COLUMN_MAP["Section Hash"]]=o,i[this.CSV_COLUMN_MAP["Group Hash"]]=s,n=t;break}}}if(n>=0){let r=e[n];r[this.CSV_COLUMN_MAP.SubManifest]=a.RecordManifest,r[this.CSV_COLUMN_MAP.GroupRecordSetAddress]=a.RecordSetAddress,r[this.CSV_COLUMN_MAP.HideTabularEditingControls]=a.HideTabularEditingControls,a.MinimumRowCount&&(r[this.CSV_COLUMN_MAP["Minimum Row Count"]]=a.MinimumRowCount),a.MaximumRowCount&&(r[this.CSV_COLUMN_MAP["Maximum Row Count"]]=a.MaximumRowCount);let c=t.ReferenceManifests[a.RecordManifest],l=Object.keys(c.Descriptors);for(let t=0;t<l.length;t++){let r=l[t],p=c.Descriptors[r];if(!p||"object"!=typeof p)continue;let d=this.getRowFromDescriptor(i,r,p);d&&(d[this.CSV_COLUMN_MAP["Section Hash"]]=o,d[this.CSV_COLUMN_MAP["Group Hash"]]=s,d[this.CSV_COLUMN_MAP.SubManifest]=a.RecordManifest,e.splice(n+1,0,d))}}}if(s)for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){i[this.CSV_COLUMN_MAP["Group Hash"]]===s&&(i[this.CSV_COLUMN_MAP["Group Name"]]=a.Name||s,a.Layout&&(i[this.CSV_COLUMN_MAP["Group Layout"]]=a.Layout),a.hasOwnProperty("ShowTitle")&&(i[this.CSV_COLUMN_MAP["Group Show Title"]]=a.ShowTitle),a.hasOwnProperty("CSSClass")&&(i[this.CSV_COLUMN_MAP["Group CSS"]]=a.CSSClass))}}}for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){i[this.CSV_COLUMN_MAP["Section Hash"]]===o&&(i[this.CSV_COLUMN_MAP["Section Name"]]=r.Name||o)}}if(r.Solvers&&Array.isArray(r.Solvers))for(let t=0;t<r.Solvers.length;t++){let n=r.Solvers[t],a=!1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){let t=i[this.CSV_COLUMN_MAP["Section Hash"]],e=i[this.CSV_COLUMN_MAP.Equation],r=i[this.CSV_COLUMN_MAP.SubManifest];if(!(t!==o||r&&""!=r||e&&0!=e.length)){"string"==typeof n?(i[this.CSV_COLUMN_MAP.Equation]=n,i[this.CSV_COLUMN_MAP["Equation Ordinal"]]=1):"object"==typeof n&&n.Expression&&(i[this.CSV_COLUMN_MAP.Equation]=n.Expression,i[this.CSV_COLUMN_MAP["Equation Ordinal"]]=n.Ordinal||1),a=!0;break}}}if(!a){let a=new Array(this.CSV_HEADER.length).fill("");a[this.CSV_COLUMN_MAP.Form]=i,a[this.CSV_COLUMN_MAP["Section Hash"]]=o,a[this.CSV_COLUMN_MAP.DataOnly]="1",a[this.CSV_COLUMN_MAP.DataType]="String",a[this.CSV_COLUMN_MAP.InputType]="Hidden";let s="Solver_for_".concat(o,"_").concat(t+1);a[this.CSV_COLUMN_MAP["Input Hash"]]=s,a[this.CSV_COLUMN_MAP["Input Name"]]="Auto gen hidden solver entry for ".concat(r.Name||o," #").concat(t+1),a[this.CSV_COLUMN_MAP["Input Address"]]=s,"string"==typeof n?(a[this.CSV_COLUMN_MAP.Equation]=n,a[this.CSV_COLUMN_MAP["Equation Ordinal"]]=1):"object"==typeof n&&n.Expression&&(a[this.CSV_COLUMN_MAP.Equation]=n.Expression,a[this.CSV_COLUMN_MAP["Equation Ordinal"]]=n.Ordinal||1);let c=-1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){i[this.CSV_COLUMN_MAP["Section Hash"]]===o&&(c=t)}}c>=0?e.splice(c+1,0,a):e.push(a)}}if(r.Groups&&Array.isArray(r.Groups))for(let t=0;t<r.Groups.length;t++){let n=r.Groups[t],a=n.Hash;if(n.RecordSetSolvers&&Array.isArray(n.RecordSetSolvers))for(let t=0;t<n.RecordSetSolvers.length;t++){let r=n.RecordSetSolvers[t],s=!1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){let t=i[this.CSV_COLUMN_MAP["Group Hash"]],e=i[this.CSV_COLUMN_MAP.Equation],o=i[this.CSV_COLUMN_MAP.SubManifest];if(t===a&&o==n.RecordManifest&&(!e||0==e.length)){"string"==typeof r?(i[this.CSV_COLUMN_MAP.Equation]=r,i[this.CSV_COLUMN_MAP["Equation Ordinal"]]=1):"object"==typeof r&&r.Expression&&(i[this.CSV_COLUMN_MAP.Equation]=r.Expression,i[this.CSV_COLUMN_MAP["Equation Ordinal"]]=r.Ordinal||1),s=!0;break}}}if(!s){let s=new Array(this.CSV_HEADER.length).fill("");s[this.CSV_COLUMN_MAP.Form]=i,s[this.CSV_COLUMN_MAP["Section Hash"]]=o,s[this.CSV_COLUMN_MAP["Group Hash"]]=a,s[this.CSV_COLUMN_MAP.SubManifest]=n.RecordManifest,s[this.CSV_COLUMN_MAP.DataOnly]="1";let c="Solver_for_".concat(a,"_").concat(t+1);s[this.CSV_COLUMN_MAP["Input Hash"]]=c,s[this.CSV_COLUMN_MAP["Input Name"]]="Auto gen hidden solver entry for ".concat(n.Name||a," #").concat(t+1),s[this.CSV_COLUMN_MAP["Input Address"]]=c,s[this.CSV_COLUMN_MAP.DataType]="String",s[this.CSV_COLUMN_MAP.InputType]="Hidden","string"==typeof r?(s[this.CSV_COLUMN_MAP.Equation]=r,s[this.CSV_COLUMN_MAP["Equation Ordinal"]]=1):"object"==typeof r&&r.Expression&&(s[this.CSV_COLUMN_MAP.Equation]=r.Expression,s[this.CSV_COLUMN_MAP["Equation Ordinal"]]=r.Ordinal||1);let l=-1;for(let t=0;t<e.length;t++){let i=e[t];if(i&&Array.isArray(i)&&i.length>=this.CSV_HEADER.length){i[this.CSV_COLUMN_MAP["Group Hash"]]===a&&(l=t)}}l>=0?e.splice(l+1,0,s):e.push(s)}}}}}if(e.length>1){let i=e[1];i&&t.FormName&&(i[this.CSV_COLUMN_MAP["Form Name"]]=t.FormName||i[this.CSV_COLUMN_MAP["Form Name"]])}return e}}},{"fable-serviceproviderbase":3}],87:[function(t,e,i){const n=t("fable-serviceproviderbase"),r={Manifest:{Scope:"Default"}};class o extends n{constructor(t,e,i){let n=Object.assign({},JSON.parse(JSON.stringify(r)),e);super(t,e,i),this.fable,this.log,this.UUID,this.manifest=n.Manifest,"Descriptors"in this.manifest||(this.manifest.Descriptors={}),"Sections"in this.manifest||(this.manifest.Sections=[]),"ReferenceManifests"in this.manifest||(this.manifest.ReferenceManifests={}),this.referenceManifestFactories={},this.sectionHashLookup={},this.groupHashLookup={};let o=Object.keys(this.manifest.ReferenceManifests);for(let t=0;t<o.length;t++)this.referenceManifestFactories[o[t]]=this.fable.instantiateServiceProviderWithoutRegistration("ManifestFactory",this.manifest.ReferenceManifests[o[t]],"".concat(this.UUID,"-").concat(o[t]));this.defaultHashCounter=0,this._SanitizeObjectKeyRegex=/[^a-zA-Z0-9_]/gi,this._SanitizeObjectKeyReplacement="_",this._SanitizeObjectKeyInvalid="INVALID"}sanitizeObjectKey(t){return"string"!=typeof t||t.length<1?this._SanitizeObjectKeyInvalid:t.replace(this._SanitizeObjectKeyRegex,this._SanitizeObjectKeyReplacement)}initializeFormGroups(t){let e=Object.keys(t.options.Manifests.Section.Descriptors);for(let i=0;i<e.length;i++){let n=t.options.Manifests.Section.Descriptors[e[i]];if("object"==typeof n&&"PictForm"in n&&"object"==typeof n.PictForm&&"Section"in n.PictForm&&n.PictForm.Section==t.sectionDefinition.Hash){n.PictForm.InformaryDataAddress=e[i],n.PictForm.ViewHash=t.Hash;let r="string"==typeof n.PictForm.Group?n.PictForm.Group:"Default";"Groups"in t.sectionDefinition||(t.sectionDefinition.Groups=[]);let o=t.sectionDefinition.Groups.find(t=>t.Hash==r);o?Array.isArray(o.Rows)||(o.Rows=[]):(o={Hash:r,Name:r,Description:!1,Rows:[]},t.sectionDefinition.Groups.push(o));let a="string"==typeof n.PictForm.Row?n.PictForm.Row:"number"==typeof n.PictForm.Row?"Row_".concat(n.PictForm.Row.toString()):"Row_Default";n.PictForm.RowHash=a;let s=o.Rows.find(t=>t.Hash==a);s||(s={Hash:a,Name:a,Inputs:[]},o.Rows.push(s)),s.Inputs.push(n)}}for(let e=0;e<t.sectionDefinition.Groups.length;e++){let i=t.sectionDefinition.Groups[e];if(i.GroupIndex=e,"HideTitle"in i&&(i.HideTitle=!1),i.hasOwnProperty("Layout")||(i.Layout="Record"),i.hasOwnProperty("Rows")&&Array.isArray(i.Rows)||(i.Rows=[]),"RecordManifest"in i&&(i.supportingManifest=t.fable.instantiateServiceProviderWithoutRegistration("Manifest",t.options.Manifests.Section.ReferenceManifests[i.RecordManifest])),i.supportingManifest){let e=Object.keys(i.supportingManifest.elementDescriptors);for(let n=0;n<e.length;n++){let r=i.supportingManifest.elementDescriptors[e[n]];r.IsTabular=!0,"PictForm"in r||(r.PictForm={}),r.PictForm.ViewHash=t.Hash,r.PictForm.InformaryDataAddress=e[n],"string"==typeof i.RecordSetAddress&&(r.PictForm.InformaryContainerAddress=i.RecordSetAddress),r.RowIdentifierTemplateHash="{~D:Record.RowID~}"}Array.isArray(i.DynamicColumns)&&i.DynamicColumns.length>0&&this._resolveDynamicColumns(t,i)}if(i.RecordSetAddress){let e=t.getMarshalDestinationObject(),n=t.sectionManifest.checkAddressExistsByHash(e,i.RecordSetAddress),r=t.sectionManifest.getValueAtAddress(e,i.RecordSetAddress);if(n?Array.isArray(r)?t.log.trace("RecordSetAddress is an Array for [".concat(i.Hash,"]")):"object"==typeof r?t.log.trace("RecordSetAddress is an Object for [".concat(i.Hash,"]")):t.log.error("RecordSetAddress is not an Array or Object for [".concat(i.Hash,"]; it is a [").concat(typeof r,"] -- likely the data shape will cause erratic problems.")):(t.log.warn("Automatically setting an empty array at [".concat(i.RecordSetAddress,"].")),t.sectionManifest.setValueByHash(e,i.RecordSetAddress,[])),i.MinimumRowCount){r||(t.sectionManifest.setValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress,[]),r=t.sectionManifest.getValueByHash(t.getMarshalDestinationObject(),i.RecordSetAddress));for(let e=r.length;e<i.MinimumRowCount;e++)t.pict.providers.DynamicTabularData.createDynamicTableRowWithoutEvents(t,i.GroupIndex)}}}}_parseDynamicColumnTemplate(t,e){if("string"!=typeof t)return"";if(-1===t.indexOf("{"))return t;try{let i=this.fable.parseTemplate(t,e,null);return"string"==typeof i?i:""}catch(t){return this.log.warn("PICT Form Tabular DynamicColumns template parse failed: ".concat(t&&t.message)),""}}_resolveDynamicColumns(t,e){let i={added:[],removed:[],unchanged:[],changed:!1};if(!e||!Array.isArray(e.DynamicColumns)||0===e.DynamicColumns.length)return i;if(!e.supportingManifest)return this.log.warn("PICT Form Tabular DynamicColumns on group [".concat(e.Hash,"] skipped: no supportingManifest.")),i;Array.isArray(e.DynamicColumnsState)||(e.DynamicColumnsState=[]);let n=t.getMarshalDestinationObject(),r=e.supportingManifest,o=[],a=[],s=[],c=!1;for(let i=0;i<e.DynamicColumns.length;i++){let l=e.DynamicColumns[i];e.DynamicColumnsState[i]||(e.DynamicColumnsState[i]={LastHashes:[],LastHeaderGroups:[]});let p=e.DynamicColumnsState[i];if("string"!=typeof l.SourceAddress||0===l.SourceAddress.length){this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," on group [").concat(e.Hash,"] is missing SourceAddress."));continue}if("string"!=typeof l.HashTemplate||0===l.HashTemplate.length){this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," on group [").concat(e.Hash,"] is missing HashTemplate."));continue}if("string"!=typeof l.InformaryDataAddressTemplate||0===l.InformaryDataAddressTemplate.length){this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," on group [").concat(e.Hash,"] is missing InformaryDataAddressTemplate."));continue}let d=t.sectionManifest.getValueByHash(n,l.SourceAddress);Array.isArray(d)||(d=[]);let u=[],h={},m=[],g={};for(let n=0;n<d.length;n++){let r=d[n],o=r&&"object"==typeof r?Object.assign({},r,{__Index:n,__RowNumber:n+1}):{Value:r,__Index:n,__RowNumber:n+1},a=this._parseDynamicColumnTemplate(l.HashTemplate,o);if(!a)continue;g[a]&&this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," produced duplicate Hash [").concat(a,"] on group [").concat(e.Hash,"]; later row wins.")),g[a]=!0;let s=l.NameTemplate?this._parseDynamicColumnTemplate(l.NameTemplate,o):a,c=this._parseDynamicColumnTemplate(l.InformaryDataAddressTemplate,o);if(!c){this.log.warn("PICT Form Tabular DynamicColumns generator ".concat(i," produced empty InformaryDataAddress for row ").concat(n," on group [").concat(e.Hash,"]; skipping."));continue}let p=l.HeaderGroupTemplate?this._parseDynamicColumnTemplate(l.HeaderGroupTemplate,o):"",f={Hash:a,Name:s||a,DataType:l.DataType||"String",IsTabular:!0,_DynamicColumnGeneratorIndex:i,_DynamicColumnHeaderGroup:p,PictForm:Object.assign({},l.PictForm||{},{ViewHash:t.Hash,InformaryContainerAddress:e.RecordSetAddress,InformaryDataAddress:c})};u.push(a),h[a]=f,m.push(p)}let f=Array.isArray(p.LastHashes)?p.LastHashes:[],D={};for(let t=0;t<u.length;t++)D[u[t]]=!0;let y=f.filter(t=>!D[t]),v={};for(let t=0;t<f.length;t++)v[f[t]]=!0;let b=u.filter(t=>!v[t]),T=u.filter(t=>v[t]),w=JSON.stringify(m)!==JSON.stringify(p.LastHeaderGroups||[]),S=JSON.stringify(u)!==JSON.stringify(f);for(let t=0;t<y.length;t++){let e=y[t],i=r.elementAddresses.indexOf(e);i>=0&&r.elementAddresses.splice(i,1),delete r.elementDescriptors[e],r.elementHashes&&e in r.elementHashes&&delete r.elementHashes[e]}for(let t=0;t<u.length;t++){let e=u[t],i=r.elementAddresses.indexOf(e);i>=0&&r.elementAddresses.splice(i,1);let n=r.elementDescriptors[e];if(n){let t=h[e];n.Name=t.Name,n.DataType=t.DataType,n.IsTabular=t.IsTabular,n._DynamicColumnGeneratorIndex=t._DynamicColumnGeneratorIndex,n._DynamicColumnHeaderGroup=t._DynamicColumnHeaderGroup,n.PictForm||(n.PictForm={}),Object.assign(n.PictForm,t.PictForm),h[e]=n}else r.elementDescriptors[e]=h[e];r.elementHashes||(r.elementHashes={}),r.elementHashes[e]=e}let P,x=l.InsertAt||"End";if("Start"===x)P=0;else if("object"==typeof x&&null!==x&&"string"==typeof x.After){let t=r.elementAddresses.indexOf(x.After);P=t<0?r.elementAddresses.length:t+1}else P=r.elementAddresses.length;for(let t=0;t<u.length;t++)r.elementAddresses.splice(P+t,0,u[t]);p.LastHashes=u.slice(),p.LastHeaderGroups=m.slice(),(b.length||y.length||w||S)&&(c=!0),o.push.apply(o,b),a.push.apply(a,y),s.push.apply(s,T)}return{added:o,removed:a,unchanged:s,changed:c}}addDescriptor(t){t.DataAddress in this.manifest.Descriptors&&this.log.info("[ERROR] Duplicate descriptor hash found:",t),this.manifest.Descriptors[t.DataAddress]=t}getManifestSection(t){for(const e of this.manifest.Sections)if(e.Hash===t)return e;const e={Name:t,Hash:t,Solvers:[],Groups:[]};return this.manifest.Sections.push(e),e}getManifestGroup(t,e){let i="string"==typeof t?this.getManifestSection(t):t;for(const t of i.Groups)if(t.Hash===e)return t;const n={Name:e,Hash:e,Rows:[],RecordSetSolvers:[]};return i.Groups.push(n),n}tabularRowLint(t){return t?!!t.Form||(this.log.error("Form is missing from record:",t),!1):(this.log.error("Record is missing from record:",t),!1)}decorateChartDescriptorFromTabularRow(t,e,i){let n=t,r=e,o=i||"";if(n.ChartType&&(r.PictForm.ChartType=n.ChartType),""==o&&(n.ChartLabelsAddress&&(r.PictForm.ChartLabelsAddress=n.ChartLabelsAddress),n.ChartLabelsSolver&&(r.PictForm.ChartLabelsSolver=n.ChartLabelsSolver),n.ChartDatasetsAddress&&(r.PictForm.ChartDatasetsAddress=n.ChartDatasetsAddress)),n["ChartDatasetsSolver".concat(o)]){let t={DataSolver:n["ChartDatasetsSolver".concat(o)]};n["ChartDatasetsLabel".concat(o)]?t.Label=n["ChartDatasetsLabel".concat(o)]:t.Label="Data",n["ChartDataSetsSolverChartType".concat(o)]&&(t.ChartType=n["ChartDataSetsSolverChartType".concat(o)]),r.PictForm.ChartDatasetsSolvers&&Array.isArray(r.PictForm.ChartDatasetsSolvers)||(r.PictForm.ChartDatasetsSolvers=[]),r.PictForm.ChartDatasetsSolvers.push(t)}}tabularRowAddDescriptor(t,e){var i,n,r,o,a,s,c,l,p,d,u,h;if("object"!=typeof e)return this.log.error("Invalid record passed to addManifestDescriptor: ".concat(e)),!1;let m=JSON.parse(JSON.stringify(e));m["Input Hash"]=(null===(i=m["Input Hash"])||void 0===i||null===(n=i.trim)||void 0===n?void 0:n.call(i))||"DefaultHash".concat(this.defaultHashCounter++),m["Input Address"]=(null===(r=m["Input Address"])||void 0===r||null===(o=r.trim)||void 0===o?void 0:o.call(r))||"DefaultData.InputHash_".concat(m["Input Hash"]),m["Input Name"]=(null===(a=m["Input Name"])||void 0===a||null===(s=a.trim)||void 0===s?void 0:s.call(a))||"Auto Input ".concat(m["Input Hash"]),m.DataType=(null===(c=m.DataType)||void 0===c||null===(l=c.trim)||void 0===l?void 0:l.call(c))||"String";const g={Hash:m["Input Hash"],Name:m["Input Name"],DataAddress:m["Input Address"],DataType:m.DataType,PictForm:{}};if(m.Default&&(g.Default=m.Default),m.InputType&&(g.PictForm.InputType=m.InputType),m.Row&&(g.PictForm.Row=m.Row),m.Width&&(g.PictForm.Width=m.Width),m["Input Notes"]&&(g.PictForm.SpreadsheetNotes=m["Input Notes"]),m.Description&&(g.Description=m.Description),m.Units&&(g.PictForm.Units=m.Units),m.Tooltip&&(g.PictForm.Tooltip=m.Tooltip),"Option"==g.PictForm.InputType&&m["Input Extra"]){let t=[],e=m["Input Extra"].split(",");for(let i=0;i<e.length;i++)if(""!=e[i].trim()){let n=e[i].split("^");2==n.length?t.push({id:n[0].trim(),text:n[1].trim()}):t.push({id:e[i].trim(),text:e[i].trim()})}t.length>0&&(g.PictForm.SelectOptions=t)}if(("TabSectionSelector"==g.PictForm.InputType||"TabGroupSelector"==g.PictForm.InputType)&&m["Input Extra"]){let t=[],e=[],i=m["Input Extra"].split(",");for(let n=0;n<i.length;n++)if(""!=i[n].trim()){let r=i[n].split("^");r.length>=2?(t.push(r[0].trim()),e.push(r[1].trim())):(t.push(r[0].trim()),e.push(r[0].trim()))}t.length>0&&("TabSectionSelector"==g.PictForm.InputType?(g.PictForm.TabSectionSet=t,g.PictForm.TabSectionNames=e):"TabGroupSelector"==g.PictForm.InputType&&(g.PictForm.TabGroupSet=t,g.PictForm.TabGroupNames=e))}if("TriggerGroup"in m&&"string"==typeof m.TriggerGroup&&""!=m.TriggerGroup){if(Array.isArray(g.PictForm.Providers)||(g.PictForm.Providers=[]),g.PictForm.Providers.push("Pict-Input-AutofillTriggerGroup"),!Array.isArray(g.PictForm.AutofillTriggerGroup)){const t=g.PictForm.AutofillTriggerGroup;g.PictForm.AutofillTriggerGroup=[],t&&g.PictForm.AutofillTriggerGroup.push(t)}const t=m.TriggerGroup.split(","),e="TriggerAddress"in m?m.TriggerAddress.split(","):[],i="TriggerAllInputs"in m?m.TriggerAllInputs.split(","):[];for(let n=0;n<t.length;n++){var f,D,y,v;const r={TriggerGroupHash:t[n].trim(),MarshalEmptyValues:!!m.MarshalEmptyValues},o=null===(f=e[n])||void 0===f||null===(D=f.trim)||void 0===D?void 0:D.call(f);o&&(r.TriggerAddress=o);const a=null===(y=i[n])||void 0===y||null===(v=y.trim)||void 0===v?void 0:v.call(y);null==a||"true"!=a.toLowerCase()&&"x"!=a.toLowerCase()&&"1"!=a.toLowerCase()||(r.TriggerAllInputs=!0),"Option"==g.PictForm.InputType&&(r.SelectOptionsRefresh=!0),g.PictForm.AutofillTriggerGroup.push(r)}}"string"==typeof m.Entity&&m.Entity.trim()&&("string"==typeof m.EntityColumnFilter&&m.EntityColumnFilter.trim()||"string"==typeof m.EntityFilterTemplate&&m.EntityFilterTemplate.trim())&&"string"==typeof m.EntityDestination&&m.EntityDestination.trim()&&(Array.isArray(g.PictForm.Providers)||(g.PictForm.Providers=[]),g.PictForm.Providers.includes("Pict-Input-EntityBundleRequest")||g.PictForm.Providers.push("Pict-Input-EntityBundleRequest"),g.PictForm.EntitiesBundle=[{Entity:m.Entity,Filter:m.EntityFilterTemplate&&m.EntityFilterTemplate.trim()||"FBV~".concat(m.EntityColumnFilter.trim(),"~EQ~{~D:Record.Value~}"),Destination:m.EntityDestination,SingleRecord:m.EntitySingleRecord&&"false"!==m.EntitySingleRecord}]);let b=t;if("SubManifest"in m&&m.SubManifest&&"TabularAddress"!=m.InputType&&(g.IsTabular=!0,m.SubManifest in t.manifest.ReferenceManifests||(t.referenceManifestFactories[m.SubManifest]=this.fable.instantiateServiceProviderWithoutRegistration("ManifestFactory",{Manifest:{Scope:m.SubManifest}},"".concat(this.UUID,"-").concat(m.SubManifest)),t.manifest.ReferenceManifests[m.SubManifest]=t.referenceManifestFactories[m.SubManifest].manifest),t=t.referenceManifestFactories[m.SubManifest]),"Decimal Precision"in m&&m["Decimal Precision"]&&""!=m["Decimal Precision"])try{g.PictForm.DecimalPrecision=parseInt(m["Decimal Precision"])}catch(t){this.log.error("Failed to parse Decimal Precision for ".concat(m["Input Hash"],": ").concat(t))}const T=null===(p=m["Section Name"])||void 0===p||null===(d=p.trim)||void 0===d?void 0:d.call(p);let w=this.sanitizeObjectKey(T||"Default_Section");m["Section Hash"]&&""!=m["Section Hash"]&&(w=this.sanitizeObjectKey(m["Section Hash"])),g.PictForm.Section=w;const S=b.getManifestSection(w);T&&(S.Name=T),m["Section CSS"]&&(S.CSSClass=m["Section CSS"]);const P=null===(u=m["Group Name"])||void 0===u||null===(h=u.trim)||void 0===h?void 0:h.call(u);let x=this.sanitizeObjectKey(P||"Default_Group");m["Group Hash"]&&""!=m["Group Hash"]&&(x=this.sanitizeObjectKey(m["Group Hash"])),g.PictForm.Group=x;const I=b.getManifestGroup(S,x);if(I.Name=P||"",m["Group CSS"]&&(I.CSSClass=m["Group CSS"]),m["Group Layout"]&&(I.Layout=m["Group Layout"]),m["Minimum Row Count"])try{I.MinimumRowCount=parseInt(m["Minimum Row Count"])}catch(t){this.log.error("Failed to parse Minimum Row Count for ".concat(m["Input Hash"],": ").concat(t))}if(m["Maximum Row Count"])try{I.MaximumRowCount=parseInt(m["Maximum Row Count"])}catch(t){this.log.error("Failed to parse Maximum Row Count for ".concat(m["Input Hash"],": ").concat(t))}if(!m.HideTabularEditingControls||"1"!=m.HideTabularEditingControls&&"true"!=m.HideTabularEditingControls.toLowerCase()&&"t"!=m.HideTabularEditingControls.toLowerCase()&&"y"!=m.HideTabularEditingControls.toLowerCase()||(I.HideTabularEditingControls=!0),m["Group Show Title"]&&""!=m["Group Show Title"])switch(m["Group Show Title"].toLowerCase()){case 1:case"1":case"true":I.ShowTitle=!0;break;case 0:case"0":case"false":I.ShowTitle=!1}if(g.Hash in t.manifest.Descriptors&&this.log.info("[ERROR] Duplicate descriptor hash found ".concat(g.Hash,". This will overwrite the original descriptor.")),"TabularAddress"==m.InputType&&(I.Layout="Tabular",this.log.info("Group ".concat(I.Hash," RSA ").concat(m.GroupRecordSetAddress," -> Descriptor ").concat(g.DataAddress)),m.GroupRecordSetAddress&&(m.GroupRecordSetAddress,1)&&m.GroupRecordSetAddress.length>0?I.RecordSetAddress=m.GroupRecordSetAddress:I.RecordSetAddress=g.DataAddress,I.RecordManifest=m.SubManifest),m.Equation&&!this._isTrue(m.Validator)){const t=m.Equation.trim();let e=1;if(m["Equation Ordinal"])try{e=parseInt(m["Equation Ordinal"])}catch(t){this.log.error("Failed to parse Equation Ordinal for ".concat(m["Input Hash"],": ").concat(t))}this.log.trace("Adding solver to ".concat(m.Form," --\x3e ").concat(I.Name," for ").concat(m["Input Hash"]," Ordinal ").concat(e,": ").concat(m.Equation)),"Tabular"==I.Layout||"RecordSet"==I.Layout?1==e?I.RecordSetSolvers.push(t):I.RecordSetSolvers.push({Ordinal:e,Expression:t}):1==e?S.Solvers.push(t):S.Solvers.push({Ordinal:e,Expression:t})}this.onTabularRowAddDescriptor(m,S,I,g),m.DataOnly&&g.PictForm&&(g.PictForm.Group&&(g.FormGroup=g.PictForm.Group),g.PictForm.Section&&(g.FormSection=g.PictForm.Section),delete g.PictForm),"Chart"==m.InputType&&g.PictForm&&(this.decorateChartDescriptorFromTabularRow(m,g,""),this.decorateChartDescriptorFromTabularRow(m,g,"1"),this.decorateChartDescriptorFromTabularRow(m,g,"2"),this.decorateChartDescriptorFromTabularRow(m,g,"3"),this.decorateChartDescriptorFromTabularRow(m,g,"4"),this.decorateChartDescriptorFromTabularRow(m,g,"5"),this.decorateChartDescriptorFromTabularRow(m,g,"6"),this.decorateChartDescriptorFromTabularRow(m,g,"7"),this.decorateChartDescriptorFromTabularRow(m,g,"8"),this.decorateChartDescriptorFromTabularRow(m,g,"9"));const A=Object.keys(m);let C=this.fable.newManyfest();for(let t=0;t<A.length;t++){let e=A[t];if(e.startsWith("Descriptor_Extension_")){const t=e.replace("Descriptor_Extension_","");try{let i=t,n=m[e];n&&C.setValueAtAddress(g,i,n)}catch(t){this.log.error("Failed to set Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"]: ").concat(t))}}if(e.startsWith("Descriptor_Float_Extension_")){const t=e.replace("Descriptor_Float_Extension_","");try{let i=t,n=m[e],r=parseFloat(n);isNaN(r)||(C.setValueAtAddress(g,i,r),this.log.trace("Set Float Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"] to value [").concat(r,"]")))}catch(t){this.log.error("Failed to set Float Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"]: ").concat(t))}}if(e.startsWith("Descriptor_Integer_Extension_")){const t=e.replace("Descriptor_Integer_Extension_","");try{let i=t,n=m[e],r=parseInt(n);isNaN(r)||C.setValueAtAddress(g,i,r)}catch(t){this.log.error("Failed to set Integer Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"]: ").concat(t))}}if(e.startsWith("Descriptor_Boolean_Extension_")){const t=e.replace("Descriptor_Boolean_Extension_","");try{let i,n=t,r=m[e];"x"!=r.toLowerCase()&&"y"!=r.toLowerCase()&&"yes"!=r.toLowerCase()&&"t"!=r.toLowerCase()&&"true"!=r.toLowerCase()&&"1"!=r||(i=!0),"n"!=r.toLowerCase()&&"no"!=r.toLowerCase()&&"f"!=r.toLowerCase()&&"false"!=r.toLowerCase()&&"0"!=r||(i=!1),!0===i||!1===i?C.setValueAtAddress(g,n,i):r&&this.log.warn("Could not parse Boolean value [".concat(r,"] for Descriptor Boolean Extension [").concat(e,"] on descriptor [").concat(g.Hash,"]"))}catch(t){this.log.error("Failed to set Boolean Descriptor Extension [".concat(e,"] on descriptor [").concat(g.Hash,"]: ").concat(t))}}}return"TabularAddress"!=m.InputType?t.addDescriptor(g):b.addDescriptor(g),g}tabularRowAddValidator(t,e){if(e.Equation){const i=e.Equation.trim();let n=1;if(e["Equation Ordinal"])try{n=parseInt(e["Equation Ordinal"])}catch(t){this.log.error("Failed to parse Equation Ordinal for ".concat(e["Input Hash"],": ").concat(t))}this.log.trace("Adding solver to ".concat(e.Form," Validation Solvers Ordinal ").concat(n,": ").concat(e.Equation)),Array.isArray(t.ValidationSolvers)||(t.ValidationSolvers=[]),1==n?t.ValidationSolvers.push(i):t.ValidationSolvers.push({Ordinal:n,Expression:i})}}onTabularRowAddDescriptor(t,e,i,n){}migrateAutofillTriggerGroupSolvers(t){for(const e of Object.values(t)){const t=e.manifest,i=[];for(const e of t.Sections||[]){if(Array.isArray(e.Solvers))for(let t=0;t<e.Solvers.length;t++){const n=e.Solvers[t],r="string"==typeof n?n:n.Expression;"string"==typeof r&&r.startsWith("TriggerGroup:")&&(i.push(n),e.Solvers.splice(t,1),--t)}for(const t of e.Groups||[])if(Array.isArray(t.RecordSetSolvers))for(let e=0;e<t.RecordSetSolvers.length;e++){const n=t.RecordSetSolvers[e],r="string"==typeof n?n:n.Expression;"string"==typeof r&&r.startsWith("TriggerGroup:")&&(i.push(n),t.RecordSetSolvers.splice(e,1),--e)}}for(const e of i){const i="string"==typeof e?e:e.Expression;let n=_slicedToArray(i.split(":"),4),r=(n[0],n[1]),o=n[2],a=n[3];if(a||(a=o,o="post"),!a||""===a.trim()){this.log.error("Skipping migration of empty TriggerGroup solver expression in manifest [".concat(t.Scope,"] for TriggerGroup [").concat(r,"]"));continue}const s=Object.values(t.Descriptors).find(t=>{var e;if(null===(e=t.PictForm)||void 0===e||!e.AutofillTriggerGroup)return!1;return(Array.isArray(t.PictForm.AutofillTriggerGroup)?t.PictForm.AutofillTriggerGroup:[t.PictForm.AutofillTriggerGroup]).some(t=>t.TriggerGroupHash===r)});if(!s){this.log.error("Could not find descriptor for TriggerGroup [".concat(r,"] in manifest [").concat(t.Scope,"] while migrating solver expression: ").concat(i));continue}const c=(Array.isArray(s.PictForm.AutofillTriggerGroup)?s.PictForm.AutofillTriggerGroup:[s.PictForm.AutofillTriggerGroup]).find(t=>t.TriggerGroupHash===r);if(!c){this.log.error("Could not find TriggerGroup entry for TriggerGroup [".concat(r,"] in descriptor [").concat(s.Hash,"] while migrating solver expression: ").concat(i));continue}let l=e;"string"==typeof e?l=a:e.Expression=a,"pre"===o.toLowerCase()?(c.PreSolvers=c.PreSolvers||[],c.PreSolvers.push(l)):(c.PostSolvers=c.PostSolvers||[],c.PostSolvers.push(l))}}}_isTrue(t){if("boolean"==typeof t)return t;if("string"==typeof t){const e=t.trim().toLowerCase();return"true"===e||"t"===e||"yes"===e||"y"===e||"1"===e}return 1==t||1==t}createManifestsFromTabularArray(t){if(!t||!Array.isArray(t))return this.log.info("Invalid records passed to generateManifests."),{};const e={};for(let i=0;i<t.length;i++){let n=t[i];if(!this.tabularRowLint(n))continue;e[n.Form]||(e[n.Form]=this.fable.instantiateServiceProviderWithoutRegistration("ManifestFactory",{Manifest:{Form:n.Form}},"".concat(this.UUID,"-").concat(n.Form)));const r=e[n.Form];n["Form Name"]&&(r.manifest.FormName=n["Form Name"]),n["Input Hash"]&&this.tabularRowAddDescriptor(r,n),this._isTrue(n.Validator)&&(this.log.trace("Adding validator from tabular row on form ".concat(n.Form,": ").concat(n.Equation)),this.tabularRowAddValidator(r.manifest,n))}this.migrateAutofillTriggerGroupSolvers(e),this.log.info("Generated ".concat(Object.keys(e).length," manifests."));let i=Object.keys(e),n={};for(let t=0;t<i.length;t++)n[i[t]]=e[i[t]].manifest;return n}}e.exports=o,o.default_configuration={}},{"fable-serviceproviderbase":3}],88:[function(t,e,i){const n=t("fable-serviceproviderbase"),r=t("../services/ManifestFactory.js"),o=t("../providers/Pict-Provider-DynamicSolver.js"),a=t("../providers/Pict-Provider-DynamicInput.js"),s=t("../providers/Pict-Provider-DynamicInputEvents.js"),c=t("../providers/Pict-Provider-DynamicTabularData.js"),l=t("../providers/Pict-Provider-DynamicRecordSet.js"),p=t("../providers/Pict-Provider-DynamicTemplates.js"),d=t("../providers/Pict-Provider-MetatemplateGenerator.js"),u=t("../providers/Pict-Provider-MetatemplateMacros.js"),h=t("../providers/layouts/Pict-Layout-Record.js"),m=t("../providers/layouts/Pict-Layout-VerticalRecord.js"),g=t("../providers/layouts/Pict-Layout-Tabular.js"),f=t("../providers/layouts/Pict-Layout-RecordSet.js"),D=t("../providers/layouts/Pict-Layout-Chart.js"),y=t("../providers/layouts/Pict-Layout-TuiGrid.js"),v=t("../providers/layouts/Pict-Layout-Custom.js"),b=t("../providers/Pict-Provider-Informary.js");class T extends n{constructor(t,e,i){super(t,e,i),this.fable,this.log,this.UUID,this.fable.addAndInstantiateSingletonService("ManifestFactory",r.default_configuration,r),this.fable.addProviderSingleton("DynamicInput",a.default_configuration,a),this.fable.addProviderSingleton("DynamicInputEvents",s.default_configuration,s),this.fable.addProviderSingleton("DynamicSolver",o.default_configuration,o),this.fable.addProviderSingleton("DynamicTabularData",c.default_configuration,c),this.fable.addProviderSingleton("DynamicRecordSet",l.default_configuration,l),this.fable.addProviderSingleton("PictFormSectionDefaultTemplateProvider",p.default_configuration,p),this.fable.addProviderSingleton("MetatemplateGenerator",d.default_configuration,d),this.fable.addProviderSingleton("MetatemplateMacros",u.default_configuration,u),this.fable.addProviderSingleton("Pict-Layout-Record",h.default_configuration,h),this.fable.addProviderSingleton("Pict-Layout-VerticalRecord",m.default_configuration,m),this.fable.addProviderSingleton("Pict-Layout-Tabular",g.default_configuration,g),this.fable.addProviderSingleton("Pict-Layout-RecordSet",f.default_configuration,f),this.fable.addProviderSingleton("Pict-Layout-Chart",D.default_configuration,D),this.fable.addProviderSingleton("Pict-Layout-TuiGrid",y.default_configuration,y),this.fable.addProviderSingleton("Pict-Layout-Custom",v.default_configuration,v),this.fable.addProviderSingleton("Informary",b.default_configuration,b)}}e.exports=T,T.default_configuration={}},{"../providers/Pict-Provider-DynamicInput.js":43,"../providers/Pict-Provider-DynamicInputEvents.js":44,"../providers/Pict-Provider-DynamicRecordSet.js":46,"../providers/Pict-Provider-DynamicSolver.js":47,"../providers/Pict-Provider-DynamicTabularData.js":48,"../providers/Pict-Provider-DynamicTemplates.js":49,"../providers/Pict-Provider-Informary.js":51,"../providers/Pict-Provider-MetatemplateGenerator.js":55,"../providers/Pict-Provider-MetatemplateMacros.js":56,"../providers/layouts/Pict-Layout-Chart.js":78,"../providers/layouts/Pict-Layout-Custom.js":79,"../providers/layouts/Pict-Layout-Record.js":80,"../providers/layouts/Pict-Layout-RecordSet.js":81,"../providers/layouts/Pict-Layout-Tabular.js":82,"../providers/layouts/Pict-Layout-TuiGrid.js":83,"../providers/layouts/Pict-Layout-VerticalRecord.js":85,"../services/ManifestFactory.js":87,"fable-serviceproviderbase":3}],89:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~DynamicInput:","~}"),this.addPattern("{~DI:","~}")}render(t,e,i,n,r){return this.renderAsync(t,e,null,i,n)}renderAsync(t,e,i,n,r,o){const a=this.pict.providers.MetatemplateGenerator,s=t.trim(),c=this.pict.views.PictFormMetacontroller,l=(c?c.manifest:this.pict.manifest).getDescriptor(s);if(!l)return this.log.error("PictTemplateControlFromDynamicManifest: Cannot find descriptor for address [".concat(s,"]")),"function"==typeof i?i(null,""):"";const p=this.pict.views[l.PictForm.ViewHash],d=p||r,u=d?[d]:n||[this.pict];this.pict.providers.MetatemplateMacros.buildInputMacros(p,l);const h=a.getInputMetatemplateTemplateReference(p,l.DataType,l.PictForm.InputType,'getInput("'.concat(l.PictForm.GroupIndex,'","').concat(l.PictForm.RowIndex,'","').concat(l.PictForm.InputIndex,'")'));return this.pict.parseTemplate(h,l,i,u,d,o)}}},{"pict-template":36}],90:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~DynamicInputForHash:","~}"),this.addPattern("{~DIH:","~}")}render(t,e,i,n,r){return this.renderAsync(t,e,null,i,n,r)}renderAsync(t,e,i,n,r,o){const a=this.pict.providers.MetatemplateGenerator,s=t.trim(),c=this.pict.views.PictFormMetacontroller,l=(c?c.manifest:this.pict.manifest).getDescriptorByHash(s);if(!l)return this.log.error("PictTemplateControlFromDynamicManifest: Cannot find descriptor for hash [".concat(s,"]")),"function"==typeof i?i(null,""):"";const p=this.pict.views[l.PictForm.ViewHash],d=p||r,u=d?[d]:n||[this.pict];this.pict.providers.MetatemplateMacros.buildInputMacros(p,l);const h=a.getInputMetatemplateTemplateReference(p,l.DataType,l.PictForm.InputType,'getInput("'.concat(l.PictForm.GroupIndex,'","').concat(l.PictForm.RowIndex,'","').concat(l.PictForm.InputIndex,'")'));return this.pict.parseTemplate(h,l,i,u,d,o)}}},{"pict-template":36}],91:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~SchemaValue:","~}"),this.addPattern("{~SV:","~}")}render(t,e,i,n,r){return this.renderAsync(t,e,null,i,n,r)}renderAsync(t,e,i,n,r,o){const a=_slicedToArray(t.trim().split("^"),2),s=a[0],c=a[1],l=this.pict.views.PictFormMetacontroller,p=(l?l.manifest:this.pict.manifest).getDescriptor(s);if(!p)return this.log.error("PictTemplateGetViewSchemaValue: Cannot find descriptor for address [".concat(s,"]")),"function"==typeof i?i(null,""):"";const d=this.pict.views[p.PictForm.ViewHash],u=d.getValueByHash(s);if(c){const t={Value:u,ParentRecord:e,View:d,Descriptor:p};return"function"!=typeof i?this.pict.parseTemplateByHash(c,t,null,n,r,o):this.pict.parseTemplateByHash(c,t,(t,e)=>t?i(t,""):i(null,e),n,r,o)}if("function"!=typeof i)return u?String(u):"";i(null,u?String(u):"")}}},{"pict-template":36}],92:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~SchemaValueForHash:","~}"),this.addPattern("{~SVH:","~}")}render(t,e,i,n,r){return this.renderAsync(t,e,null,i,n,r)}renderAsync(t,e,i,n,r,o){const a=_slicedToArray(t.trim().split("^"),2),s=a[0],c=a[1],l=this.pict.views.PictFormMetacontroller,p=(l?l.manifest:this.pict.manifest).getDescriptorByHash(s);if(!p)return this.log.error("PictTemplateGetViewSchemaValueByHash: Cannot find descriptor for address [".concat(s,"]")),"function"==typeof i?i(null,""):"";const d=this.pict.views[p.PictForm.ViewHash],u=d.getValueByHash(s);if(c){const t={Value:u,ParentRecord:e,View:d,Descriptor:p};return"function"!=typeof i?this.pict.parseTemplateByHash(c,t,null,n,r,o):this.pict.parseTemplateByHash(c,t,(t,e)=>t?i(t,""):i(null,e),n,r,o)}if("function"!=typeof i)return u?String(u):"";i(null,u?String(u):"")}}},{"pict-template":36}],93:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~MetacontrollerTemplateValueSet:","~}"),this.addPattern("{~MTVS:","~}")}render(t,e,i,n,r){let o,a,s,c=t.trim(),l="object"==typeof e?e:{};this.pict.LogNoisiness>4?this.log.trace("PICT Metacontroller Template [MetacontrollerTemplateValueSet]::[".concat(c,"] with tmpData:"),l):this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetacontrollerTemplateValueSet]::[".concat(c,"]"));let p=c.split(":");if(p.length<3)return this.log.warn("Metacontroller template requires 3 parameters [".concat(c,"]")),"";a=p[0],o=p[1],s=p[2],l=this.resolveStateFromAddress(s,l,i,null,n);let d=[];if(Array.isArray(l))for(let t=0;t<l.length;t++)d.push({Value:l[t],Key:t,Group:o});else if("object"==typeof l){let t=Object.keys(l);for(let e=0;e<t.length;e++)d.push({Value:l[t[e]],Key:t[e],Group:o})}else d.push({Value:l});return l=d,l?this.pict.parseTemplateSetByHash(a,l,null,i,n,r):this.pict.parseTemplateSetByHash(a,e,null,i,n,r)}renderAsync(t,e,i,n,r,o){let a,s,c=t.trim(),l="object"==typeof e?e:{},p="function"==typeof i?i:()=>"";this.pict.LogNoisiness>4?this.log.trace("PICT Template [fTemplateValueSetRenderAsync]::[".concat(c,"] with tmpData:"),l):this.pict.LogNoisiness>0&&this.log.trace("PICT Template [fTemplateValueSetRenderAsync]::[".concat(c,"]"));let d=c.split(":");if(d.length<2)return this.log.trace("PICT TemplateFromMap [fTemplateRenderAsync]::[".concat(c,"] failed because there were not three stanzas in the expression [").concat(t,"]")),i(null,"");if(a=d[0],s=d[1],!a)return this.log.warn("Pict: TemplateFromMap Render Async: TemplateFromMapHash not resolved for [".concat(c,"]")),i(null,"");l=this.resolveStateFromAddress(s,l,n,null,r);let u=[];if(Array.isArray(l))for(let t=0;t<l.length;t++)u.push({Value:l[t],Key:t});else if("object"==typeof l){let t=Object.keys(l);for(let e=0;e<t.length;e++)u.push({Value:l[t[e]],Key:t[e]})}else u.push({Value:l});return l=u,l?void this.pict.parseTemplateSetByHash(a,l,(t,e)=>t?p(t,""):p(null,e),n,r,o):void this.pict.parseTemplateSetByHash(a,e,(t,e)=>t?p(t,""):p(null,e),n,r,o)}}},{"pict-template":36}],94:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~MetaTemplateInput:","~}"),this.addPattern("{~MTI:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s,c,l=t.trim(),p=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetaTemplateInput]::[".concat(l,"]"));let d=l.split(":");if(d.length<2)return this.log.warn("MetaTemplateInput template requires at least parameters (Address and DataType) [".concat(l,"]")),"";o=d[0],a=d[1],s=d[2],d.length>3&&(c=d[3]);let u={Address:a,DataAddress:a,Name:o,Hash:this.fable.ManifestFactory.sanitizeObjectKey(a),DataType:s,PictForm:{InformaryDataAddress:a,GroupIndex:0,Row:0}};this.currentInputIndex++,c&&(u.PictForm.InputType=c);let h=p.dynamicInputView.getRow(0,0);for(let t=0;t<h.Inputs.length;t++)if(h.Inputs[t].Hash===u.Hash){let e=h.Inputs[t];return this.pict.parseTemplate(p.getInputMetatemplateTemplateReference(p.dynamicInputView,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[p.dynamicInputView],p.dynamicInputView,r)}u.PictForm.InputIndex=h.Inputs.length,p.dynamicInputView.sectionManifest.addDescriptor(u.Address,u),h.Inputs.push(u),this.pict.providers.MetatemplateMacros.buildInputMacros(p.dynamicInputView,u);let m=p.getInputMetatemplateTemplateReference(p.dynamicInputView,u.DataType,u.PictForm.InputType,'getInput("0","0","'.concat(u.PictForm.InputIndex,'")'));return this.pict.parseTemplate(m,u,null,[p.dynamicInputView],p.dynamicInputView,r)}renderAsync(t,e,i,n,r,o){let a,s,c,l,p=t.trim(),d=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetaTemplateInput]::[".concat(p,"]"));let u=p.split(":");if(u.length<2)return this.log.warn("MetaTemplateInput template requires at least parameters (Address and DataType) [".concat(p,"]")),i(null,"");a=u[0],s=u[1],c=u[2],u.length>3&&(l=u[3]);let h={Address:s,DataAddress:s,Name:a,Hash:this.fable.ManifestFactory.sanitizeObjectKey(s),DataType:c,PictForm:{InformaryDataAddress:s,GroupIndex:0,Row:0}};this.currentInputIndex++,l&&(h.PictForm.InputType=l);let m=d.dynamicInputView.getRow(0,0);for(let t=0;t<m.Inputs.length;t++)if(m.Inputs[t].Hash===h.Hash){let e=m.Inputs[t],n=d.getInputMetatemplateTemplateReference(d.dynamicInputView,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[d.dynamicInputView],d.dynamicInputView,o)}h.PictForm.InputIndex=m.Inputs.length,d.dynamicInputView.sectionManifest.addDescriptor(h.Address,h),m.Inputs.push(h),this.pict.providers.MetatemplateMacros.buildInputMacros(d.dynamicInputView,h);let g=d.getInputMetatemplateTemplateReference(d.dynamicInputView,h.DataType,h.PictForm.InputType,'getInput("0","0","'.concat(h.PictForm.InputIndex,'")'));this.pict.parseTemplate(g,h,i,[d.dynamicInputView],d.dynamicInputView,o)}}},{"pict-template":36}],95:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~MetaTemplateInputWithHashAddress:","~}"),this.addPattern("{~MTIWHA:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s,c,l=t.trim(),p=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetaTemplateInput]::[".concat(l,"]"));let d=l.split(":");if(d.length<2)return this.log.warn("MetaTemplateInput template requires at least parameters (Address and DataType) [".concat(l,"]")),"";if(o=d[0],a=this.resolveStateFromAddress(d[1],e,i,null,n,r),"string"!=typeof a||a.length<1)return this.log.warn("MetaTemplateInput template requires a valid Address for an Address in the second parameter [".concat(l,"]")),"";s=d[2],d.length>3&&(c=d[3]);const u={Address:a,DataAddress:a,Name:o,Hash:this.fable.ManifestFactory.sanitizeObjectKey(a),DataType:s,PictForm:{InformaryDataAddress:a,GroupIndex:0,Row:0}};this.currentInputIndex++,c&&(u.PictForm.InputType=c);let h=p.dynamicInputView.getRow(0,0);for(let t=0;t<h.Inputs.length;t++)if(h.Inputs[t].Hash===u.Hash){const e=h.Inputs[t];return this.pict.parseTemplate(p.getInputMetatemplateTemplateReference(p.dynamicInputView,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[p.dynamicInputView],p.dynamicInputView,r)}u.PictForm.InputIndex=h.Inputs.length,p.dynamicInputView.sectionManifest.addDescriptor(u.Address,u),h.Inputs.push(u),this.pict.providers.MetatemplateMacros.buildInputMacros(p.dynamicInputView,u);const m=p.getInputMetatemplateTemplateReference(p.dynamicInputView,u.DataType,u.PictForm.InputType,'getInput("0","0","'.concat(u.PictForm.InputIndex,'")'));return this.pict.parseTemplate(m,u,null,[p.dynamicInputView],p.dynamicInputView,r)}renderAsync(t,e,i,n,r,o){let a,s,c,l,p=t.trim(),d=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [MetaTemplateInput]::[".concat(p,"]"));let u=p.split(":");if(u.length<2)return this.log.warn("MetaTemplateInput template requires at least parameters (Address and DataType) [".concat(p,"]")),i(null,"");if(a=u[0],s=this.resolveStateFromAddress(u[1],e,n,null,r,o),"string"!=typeof s||s.length<1)return this.log.warn("MetaTemplateInput template requires a valid Address for an Address in the second parameter [".concat(p,"]")),i(null,"");c=u[2],u.length>3&&(l=u[3]);let h={Address:s,DataAddress:s,Name:a,Hash:this.fable.ManifestFactory.sanitizeObjectKey(s),DataType:c,PictForm:{InformaryDataAddress:s,GroupIndex:0,Row:0}};this.currentInputIndex++,l&&(h.PictForm.InputType=l);let m=d.dynamicInputView.getRow(0,0);for(let t=0;t<m.Inputs.length;t++)if(m.Inputs[t].Hash===h.Hash){let e=m.Inputs[t],n=d.getInputMetatemplateTemplateReference(d.dynamicInputView,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[d.dynamicInputView],d.dynamicInputView,o)}h.PictForm.InputIndex=m.Inputs.length,d.dynamicInputView.sectionManifest.addDescriptor(h.Address,h),m.Inputs.push(h),this.pict.providers.MetatemplateMacros.buildInputMacros(d.dynamicInputView,h);const g=d.getInputMetatemplateTemplateReference(d.dynamicInputView,h.DataType,h.PictForm.InputType,'getInput("0","0","'.concat(h.PictForm.InputIndex,'")'));this.pict.parseTemplate(g,h,i,[d.dynamicInputView],d.dynamicInputView,o)}}},{"pict-template":36}],96:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~InputWithView:","~}"),this.addPattern("{~IWV:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s,c,l,p=t.trim(),d=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithView]::[".concat(p,"]"));let u=p.split(":");if(u.length<3)return this.log.warn("InputWithView template requires at least three parameters (ViewHash, Address and DataType) [".concat(p,"]")),"";o=u[0],a=u[1],s=u[2],c=u[3],u.length>4&&(l=u[4]);let h={Address:s,DataAddress:s,Name:a,Hash:this.fable.ManifestFactory.sanitizeObjectKey(s),DataType:c,PictForm:{InformaryDataAddress:s,GroupIndex:0,Row:0}};this.currentInputIndex++,l&&(h.PictForm.InputType=l);const m=this.pict.views[o];if(!m||!m.sectionManifest||"function"!=typeof m.getRow)return this.log.warn("InputWithView template requires a valid dynamic View hash [".concat(p,"]")),"";let g=m.getRow(0,0);for(let t=0;t<g.Inputs.length;t++)if(g.Inputs[t].Hash===h.Hash){let e=g.Inputs[t];return this.pict.parseTemplate(d.getInputMetatemplateTemplateReference(m,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[m],m,r)}h.PictForm.InputIndex=g.Inputs.length,m.sectionManifest.addDescriptor(h.Address,h),g.Inputs.push(h),this.pict.providers.MetatemplateMacros.buildInputMacros(m,h);let f=d.getInputMetatemplateTemplateReference(m,h.DataType,h.PictForm.InputType,'getInput("0","0","'.concat(h.PictForm.InputIndex,'")'));return this.pict.parseTemplate(f,h,null,[m],m,r)}renderAsync(t,e,i,n,r,o){let a,s,c,l,p,d=t.trim(),u=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithView]::[".concat(d,"]"));let h=d.split(":");if(h.length<3)return this.log.warn("InputWithView template requires at least three parameters (ViewHash, Address and DataType) [".concat(d,"]")),i(null,"");a=h[0],s=h[1],c=h[2],l=h[3],h.length>4&&(p=h[4]);let m={Address:c,DataAddress:c,Name:s,Hash:this.fable.ManifestFactory.sanitizeObjectKey(c),DataType:l,PictForm:{InformaryDataAddress:c,GroupIndex:0,Row:0}};this.currentInputIndex++,p&&(m.PictForm.InputType=p);const g=this.pict.views[a];if(!g||!g.sectionManifest||"function"!=typeof g.getRow)return this.log.warn("InputWithView template requires a valid dynamic View hash [".concat(d,"]")),i(null,"");let f=g.getRow(0,0);for(let t=0;t<f.Inputs.length;t++)if(f.Inputs[t].Hash===m.Hash){let e=f.Inputs[t],n=u.getInputMetatemplateTemplateReference(g,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[g],g,o)}m.PictForm.InputIndex=f.Inputs.length,g.sectionManifest.addDescriptor(m.Address,m),f.Inputs.push(m),this.pict.providers.MetatemplateMacros.buildInputMacros(g,m);let D=u.getInputMetatemplateTemplateReference(g,m.DataType,m.PictForm.InputType,'getInput("0","0","'.concat(m.PictForm.InputIndex,'")'));this.pict.parseTemplate(D,m,i,[g],g,o)}}},{"pict-template":36}],97:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~InputWithViewAndDescriptorAddress:","~}"),this.addPattern("{~IWVDA:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s=t.trim(),c=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithViewAndDescriptorAddress]::[".concat(s,"]"));let l=s.split(":");if(l.length<2)return this.log.warn("InputWithViewAndDescriptorAddress template requires two parameters (ViewHash and DescriptorAddress) [".concat(s,"]")),"";o=l[0],a=l[1];const p=this.resolveStateFromAddress(a,e,i,null,n,r);if(!p||"object"!=typeof p||Array.isArray(p)||!p.Address)return this.log.warn("InputWithViewAndDescriptorAddress template requires a valid input object at address [".concat(a,"]")),"";this._shoreUpDescriptor(p),this.currentInputIndex++;const d=this.pict.views[o];if(!d||!d.sectionManifest||"function"!=typeof d.getRow)return this.log.warn("InputWithViewAndDescriptorAddress template requires a valid dynamic View hash [".concat(s,"]")),"";let u=d.getRow(0,0);for(let t=0;t<u.Inputs.length;t++)if(u.Inputs[t].Hash===p.Hash){let e=u.Inputs[t];return this.pict.parseTemplate(c.getInputMetatemplateTemplateReference(d,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[d],d,r)}p.PictForm.InputIndex=u.Inputs.length,d.sectionManifest.addDescriptor(p.Address,p),u.Inputs.push(p),this.pict.providers.MetatemplateMacros.buildInputMacros(d,p);let h=c.getInputMetatemplateTemplateReference(d,p.DataType,p.PictForm.InputType,'getInput("0","0","'.concat(p.PictForm.InputIndex,'")'));return this.pict.parseTemplate(h,p,null,[d],d,r)}renderAsync(t,e,i,n,r,o){let a,s,c=t.trim(),l=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithViewAndDescriptorAddress]::[".concat(c,"]"));let p=c.split(":");if(p.length<2)return this.log.warn("InputWithViewAndDescriptorAddress template requires two parameters (ViewHash and DescriptorAddress) [".concat(c,"]")),i(null,"");a=p[0],s=p[1];const d=this.resolveStateFromAddress(s,e,n,null,r,o);this._shoreUpDescriptor(d),this.currentInputIndex++;const u=this.pict.views[a];if(!u||!u.sectionManifest||"function"!=typeof u.getRow)return this.log.warn("InputWithViewAndDescriptorAddress template requires a valid dynamic View hash [".concat(c,"]")),i(null,"");let h=u.getRow(0,0);for(let t=0;t<h.Inputs.length;t++)if(h.Inputs[t].Hash===d.Hash){let e=h.Inputs[t],n=l.getInputMetatemplateTemplateReference(u,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[u],u,o)}d.PictForm.InputIndex=h.Inputs.length,u.sectionManifest.addDescriptor(d.Address,d),h.Inputs.push(d),this.pict.providers.MetatemplateMacros.buildInputMacros(u,d);let m=l.getInputMetatemplateTemplateReference(u,d.DataType,d.PictForm.InputType,'getInput("0","0","'.concat(d.PictForm.InputIndex,'")'));this.pict.parseTemplate(m,d,i,[u],u,o)}_shoreUpDescriptor(t){if(!t||"object"!=typeof t||Array.isArray(t))throw new Error("Invalid descriptor object provided to shoreUpDescriptor");t.DataAddress||(t.DataAddress=t.Address),t.Hash||(t.Hash=this.fable.DataFormat.sanitizeObjectKey(t.Address)),t.Name||(t.Name=t.Hash),t.DataType||(t.DataType="String"),t.PictForm||(t.PictForm={}),t.PictForm.InformaryDataAddress||(t.PictForm.InformaryDataAddress=t.DataAddress),null==t.PictForm.GroupIndex&&(t.PictForm.GroupIndex=0),null==t.PictForm.Row&&(t.PictForm.Row=0)}}},{"pict-template":36}],98:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~InputWithViewAndHashAddress:","~}"),this.addPattern("{~IWVHA:","~}"),this.currentInputIndex=0}render(t,e,i,n,r){let o,a,s,c,l,p=t.trim(),d=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithViewAndHashAddress]::[".concat(p,"]"));let u=p.split(":");if(u.length<3)return this.log.warn("InputWithViewAndHashAddress template requires at least three parameters (ViewHash, Address and DataType) [".concat(p,"]")),"";if(o=u[0],a=u[1],s=this.resolveStateFromAddress(u[2],e,i,null,n),"string"!=typeof s||s.length<1)return this.log.warn("InputWithViewAndHashAddress template requires a valid Address for an Address in the third parameter [".concat(p,"]")),"";c=u[3],u.length>4&&(l=u[4]);const h={Address:s,DataAddress:s,Name:a,Hash:this.fable.ManifestFactory.sanitizeObjectKey(s),DataType:c,PictForm:{InformaryDataAddress:s,GroupIndex:0,Row:0}};this.currentInputIndex++,l&&(h.PictForm.InputType=l);const m=this.pict.views[o];if(!m||!m.sectionManifest||"function"!=typeof m.getRow)return this.log.warn("InputWithViewAndHashAddress template requires a valid dynamic View hash as the first parameter [".concat(p,"]")),"";let g=m.getRow(0,0);for(let t=0;t<g.Inputs.length;t++)if(g.Inputs[t].Hash===h.Hash){const e=g.Inputs[t];return this.pict.parseTemplate(d.getInputMetatemplateTemplateReference(m,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")')),e,null,[m],m,r)}h.PictForm.InputIndex=g.Inputs.length,m.sectionManifest.addDescriptor(h.Address,h),g.Inputs.push(h),this.pict.providers.MetatemplateMacros.buildInputMacros(m,h);const f=d.getInputMetatemplateTemplateReference(m,h.DataType,h.PictForm.InputType,'getInput("0","0","'.concat(h.PictForm.InputIndex,'")'));return this.pict.parseTemplate(f,h,null,[m],m,r)}renderAsync(t,e,i,n,r,o){let a,s,c,l,p,d=t.trim(),u=this.pict.providers.MetatemplateGenerator;this.pict.LogNoisiness>0&&this.log.trace("PICT Metacontroller Template [InputWithViewAndHashAddress]::[".concat(d,"]"));let h=d.split(":");if(h.length<3)return this.log.warn("InputWithViewAndHashAddress template requires at least three parameters (ViewHash, Address and DataType) [".concat(d,"]")),i(null,"");if(a=h[0],s=h[1],c=this.resolveStateFromAddress(h[2],e,n,null,r),"string"!=typeof c||c.length<1)return this.log.warn("InputWithViewAndHashAddress template requires a valid Address for an Address in the third parameter [".concat(d,"]")),i(null,"");l=h[3],h.length>4&&(p=h[4]);let m={Address:c,DataAddress:c,Name:s,Hash:this.fable.ManifestFactory.sanitizeObjectKey(c),DataType:l,PictForm:{InformaryDataAddress:c,GroupIndex:0,Row:0}};this.currentInputIndex++,p&&(m.PictForm.InputType=p);const g=this.pict.views[a];if(!g||!g.sectionManifest||"function"!=typeof g.getRow)return this.log.warn("InputWithViewAndHashAddress template requires a valid View hash as the first parameter [".concat(d,"]")),i(null,"");let f=g.getRow(0,0);for(let t=0;t<f.Inputs.length;t++)if(f.Inputs[t].Hash===m.Hash){let e=f.Inputs[t],n=u.getInputMetatemplateTemplateReference(g,e.DataType,e.PictForm.InputType,'getInput("0","0","'.concat(e.PictForm.InputIndex,'")'));return void this.pict.parseTemplate(n,e,i,[g],g,o)}m.PictForm.InputIndex=f.Inputs.length,g.sectionManifest.addDescriptor(m.Address,m),f.Inputs.push(m),this.pict.providers.MetatemplateMacros.buildInputMacros(g,m);const D=u.getInputMetatemplateTemplateReference(g,m.DataType,m.PictForm.InputType,'getInput("0","0","'.concat(m.PictForm.InputIndex,'")'));this.pict.parseTemplate(D,m,i,[g],g,o)}}},{"pict-template":36}],99:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~PluckJoinUnique:","~}"),this.addPattern("{~PJU:","~}")}render(t,e,i,n,r){let o=t,a="object"==typeof e?e:{};this.pict.LogNoisiness>4?this.log.trace("PICT Pluck Join Unique [fDataRender]::[".concat(o,"] with tmpData:"),a):this.pict.LogNoisiness>3&&this.log.trace("PICT Pluck Join Unique [fDataRender]::[".concat(o,"]"));let s=o.split("^");if(s.length<3)return"";let c=s.shift(),l=s.shift(),p=[],d={};for(let t=0;t<s.length;t++){let e=this.resolveStateFromAddress(s[t],a,i,null,n);if(e&&Array.isArray(e))for(let t=0;t<e.length;t++){if(null===e[t]||"object"!=typeof e)continue;let i=this.pict.manifest.getValueByHash(e[t],l);i in d||(d[i]=!0,p.push(i))}else e&&(e in d||(d[e]=!0,p.push(e)))}return p.join(c)}}},{"pict-template":36}],100:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~TabularEditingControls:","~}"),this.addPattern("{~TEC:","~}")}render(t,e,i,n,r){let o=t.trim();if(!o||!e)return"";let a=this.pict.views[o];if(!a)return"";let s=e.Group,c=e.Key,l=this.pict.providers["Pict-Layout-Tabular"];return l&&"function"==typeof l._renderTabularEditingControlsHTML?l._renderTabularEditingControlsHTML(a,s,c):""}}},{"pict-template":36}],101:[function(t,e,i){const n=t("pict-template");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict,this.fable,this.log,this.addPattern("{~TabularRowLabels:","~}"),this.addPattern("{~TRL:","~}")}render(t,e,i,n,r){let o=t.trim();if(!o||!e)return"";let a=this.pict.views[o];if(!a)return"";let s=e.Group,c=e.Key,l=this.pict.providers["Pict-Layout-Tabular"];return l&&"function"==typeof l._renderTabularRowLabelsHTML?l._renderTabularRowLabelsHTML(a,s,c):""}}},{"pict-template":36}],102:[function(t,e,i){e.exports={AutoRender:!1,AutoSolveWithApp:!1,ExecuteSolversWithoutMetacontroller:!1,IncludeInMetatemplateSectionGeneration:!0,IncludeInDefaultDynamicRender:!0,DefaultRenderable:"Form-Main",DefaultDestinationAddress:"#Pict-Form-Container",Renderables:[],Templates:[],MacroTemplates:{Section:{HTMLID:' id="Section-{~D:Context[0].UUID~}" '},Group:{HTMLID:' id="Group-{~D:Context[0].UUID~}" ',PictFormLayout:' data-i-pictdynamiclayout="true" data-i-pictgroupindex="{~D:Record.GroupIndex~}" data-i-pictlayout="{~D:Record.Layout~}" ',TabularCreateRowFunctionCall:"{~P~}.views['{~D:Context[0].Hash~}'].createDynamicTableRow({~D:Record.GroupIndex~})"},Input:{Informary:' data-i-form="{~D:Context[0].formID~}" data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}" ',InformaryTabular:' data-i-form="{~D:Context[0].formID~}" data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}" data-i-container="{~D:Record.PictForm.InformaryContainerAddress~}" ',ControlAttr:' data-control="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}" ',HTMLSelector:'[data-i-form="{~D:Context[0].formID~}"][data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}"]',HTMLSelectorTabular:'[data-i-form="{~D:Context[0].formID~}"][data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}"][data-i-container="{~D:Record.PictForm.InformaryContainerAddress~}"]',HTMLSelectorControl:'[data-control="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}"]',HTMLSelectorControlTabular:'[data-control="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}"]',RawHTMLID:"{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}",HTMLName:' name="{~D:Record.Name~}" ',HTMLIDAddress:"#{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}",HTMLID:' id="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}" ',HTMLForID:' for="{~D:Context[0].UUID~}-FormInput-{~D:Record.Hash~}" ',InputFullProperties:' data-i-form="{~D:Context[0].formID~}" data-i-datum="{~D:Record.PictForm.InformaryDataAddress~}" name="{~D:Record.Name~}" ',InputChangeHandler:" onchange=\"{~P~}.views['{~D:Context[0].Hash~}'].dataChanged('{~D:Record.Hash~}')\" ",DataRequestFunction:" {~P~}.views['{~D:Context[0].Hash~}'].inputDataRequest('{~D:Record.Hash~}'); "}},TargetElementAddress:"#Form-Container-Div"}},{}],103:[function(t,e,i){const n=t("pict-view"),r=t("../../package.json"),o=t("./Pict-View-DynamicForm-DefaultConfiguration.json"),a="PendingAsyncOperation",s="onTransactionComplete",c="ReadyToFinalize";e.exports=class extends n{constructor(t,e,i){let n=Object.assign({},JSON.parse(JSON.stringify(o)),e);if(!n.Manifests)throw new Error("PictSectionForm instantiation attempt without a Manifests in pOptions.Manifest -- cannot instantiate.");if(!("Section"in n.Manifests))throw new Error("PictSectionForm instantiation attempt without a Section manifest in pOptions.Manifests -- cannot instantiate.");if("#Pict-Form-Container"===n.DefaultDestinationAddress&&(n.DefaultDestinationAddress="#Pict-Form-Container-".concat(n.Hash)),"Form-Main"===n.DefaultRenderable&&(n.DefaultRenderable="Form-".concat(n.Hash)),n.SectionTemplateHash||(n.SectionTemplateHash="Pict-Form-Template-".concat(n.Hash)),n.Renderables.length<1&&n.Renderables.push({RenderableHash:n.DefaultRenderable,TemplateHash:n.SectionTemplateHash,RenderMethod:"replace"}),super(t,n,i),!this.fable.PictDynamicFormDependencyManager)throw new Error("PictSectionForm instantiation attempt without a PictDynamicFormDependencyManager service in fable -- cannot instantiate.");if(this._PackagePictView=this._Package,this._Package=r,this.sectionDefinition=this.options,this.sectionManifest=this.fable.instantiateServiceProviderWithoutRegistration("Manifest",this.options.Manifests.Section),this.sectionSolvers=[],"Solvers"in this.options&&Array.isArray(this.options.Solvers))for(let t=0;t<this.options.Solvers.length;t++)"string"==typeof this.options.Solvers[t]&&this.sectionSolvers.push(this.options.Solvers[t]);if(this.formsTemplateSetPrefix="PFT-".concat(this.Hash,"-").concat(this.UUID),"MetaTemplates"in this.options&&Array.isArray(this.options.MetaTemplates))for(let t=0;t<this.options.MetaTemplates.length;t++){let e=this.options.MetaTemplates[t];if("HashPostfix"in e&&"Template"in e){let t="".concat(this.formsTemplateSetPrefix).concat(e.HashPostfix);this.pict.TemplateProvider.addTemplate(t,e.Template)}else this.log.warn("MetaTemplate entry ".concat(t," in PictSectionForm [").concat(this.UUID,"]::[").concat(this.Hash,"] does not have a Hash and Template property; custom template skipped."))}this.customDefaultTemplatePrefix=null,this.formID="Pict-Form-".concat(this.Hash,"-").concat(this.UUID),this.viewMarshalDestination=null,this.initialBundleLoaded=!1,this.fable.ManifestFactory.initializeFormGroups(this),this._LoopDetectionData={}}get defaultTemplatePrefix(){return this.customDefaultTemplatePrefix?this.customDefaultTemplatePrefix:this.pict.views.PictFormMetacontroller?this.pict.views.PictFormMetacontroller.formTemplatePrefix:this.pict.providers.MetatemplateGenerator.baseTemplatePrefix}dataChanged(t){let e=this.getInputFromHash(t);if(this.pict.LogNoisiness>2&&this.log.trace("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] dataChanged event for input [").concat(t,"].")),t){let i=this.sectionManifest.resolveHashAddress(t);const n=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(n);try{let t=this.getMarshalDestinationObject();this.pict.providers.Informary.marshalFormToData(t,this.formID,this.sectionManifest,i);let r=this.sectionManifest.getValueByHash(t,i),o=this.getInputProviderList(e);for(let t=0;t<o.length;t++)this.pict.providers[o[t]]?this.pict.providers[o[t]].onDataChange(this,e,r,e.Macro.HTMLSelector,n):this.log.error("Dynamic form dataChanged [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(o[t],"] for input [").concat(e.Hash,"]."))}catch(e){this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] gross error marshaling specific (").concat(t,") data from view in dataChanged event: ").concat(e))}finally{this.finalizeTransaction(n)}}else this.marshalFromView();this.pict.PictApplication.solve(),this.pict.views.PictFormMetacontroller?this.pict.views.PictFormMetacontroller.marshalFormSections():this.marshalToView(),this.pict.providers.FormPersistence&&this.pict.providers.FormPersistence.onFormDataChanged()}dataChangedTabular(t,e,i){this.pict.LogNoisiness>2&&this.log.trace("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] dataChangedTabular event for group ").concat(t," input ").concat(e," row ").concat(i,"."));let n=this.getTabularRecordInput(t,e);if(void 0!==t&&void 0!==e&&void 0!==i&&"object"==typeof n){let e=n.Address;const r=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(r);try{let t=this.getMarshalDestinationObject();this.pict.providers.Informary.marshalFormToData(t,this.formID,this.sectionManifest,e,i);let o=this.pict.providers.Informary.getComposedContainerAddress(n.PictForm.InformaryContainerAddress,i,n.PictForm.InformaryDataAddress),a=this.sectionManifest.getValueByHash(t,o),s=n.Macro.HTMLSelectorTabular+'[data-i-index="'.concat(i,'"]'),c=this.getInputProviderList(n);for(let t=0;t<c.length;t++)this.pict.providers[c[t]]?this.pict.providers[c[t]].onDataChangeTabular(this,n,a,s,i,r):this.log.error("Dynamic form dataChangedTabular [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(c[t],"] for input [").concat(n.Hash,"] row ").concat(i,"."))}catch(e){this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] gross error marshaling specific (").concat(n.Hash,") tabular data for group ").concat(t," row ").concat(i," from view in dataChanged event: ").concat(e))}finally{this.finalizeTransaction(r)}}else this.marshalFromView();this.pict.PictApplication.solve(),this.pict.views.PictFormMetacontroller?this.pict.views.PictFormMetacontroller.marshalFormSections():this.marshalToView(),this.pict.providers.FormPersistence&&this.pict.providers.FormPersistence.onFormDataChanged()}setDataByInput(t,e){const i=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(i);try{this.sectionManifest.setValueByHash(this.getMarshalDestinationObject(),t.Hash,e);let n=e,r=t.Macro.HTMLSelector,o=this.getInputProviderList(t);for(let e=0;e<o.length;e++)this.pict.providers[o[e]]?this.pict.providers[o[e]].onDataChange(this,t,n,r,i):this.log.error("Dynamic form setDataByInput [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(o[e],"] for input [").concat(t.Hash,"]."))}catch(e){this.log.error("Dynamic form setDataByInput [".concat(this.Hash,"]::[").concat(this.UUID,"] gross error marshaling specific (").concat(t.Hash,") from view in dataChanged event: ").concat(e))}finally{this.finalizeTransaction(i)}return!1}setDataTabularByHash(t,e,i,n){let r=this.getGroup(t);if(!r)return this.log.warn("PICT View Metatemplate Helper setDataTabularByHash ".concat(t," was not a valid group.")),!1;let o=-1,a=Object.keys(r.supportingManifest.elementDescriptors);for(let t=0;t<a.length;t++)if(r.supportingManifest.elementDescriptors[a[t]].Hash===e){o=t;break}if(o<0)return this.log.warn("PICT View Metatemplate Helper setDataTabularByHash Group ".concat(t," did not have hash [").concat(e,"].")),!1;let s=this.getTabularRecordInput(t,o);if(void 0!==t&&void 0!==i&&"object"==typeof s){const r=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(r);try{let t=this.getMarshalDestinationObject(),e=this.pict.providers.Informary.getComposedContainerAddress(s.PictForm.InformaryContainerAddress,i,s.PictForm.InformaryDataAddress);this.sectionManifest.setValueByHash(t,e,n);let o=n,a=s.Macro.HTMLSelectorTabular+'[data-i-index="'.concat(i,'"]'),c=this.getInputProviderList(s);for(let t=0;t<c.length;t++)this.pict.providers[c[t]]?this.pict.providers[c[t]].onDataChangeTabular(this,s,o,a,i,r):this.log.error("Dynamic form setDataTabularByHash [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(c[t],"] for input [").concat(s.Hash,"] row ").concat(i,"."))}catch(n){this.log.error("Dynamic form setDataTabularByHash [".concat(this.Hash,"]::[").concat(this.UUID,"] gross error marshaling specific (").concat(e,") tabular data for group ").concat(t," row ").concat(i," from view in dataChanged event: ").concat(n))}finally{this.finalizeTransaction(r)}}return!1}getMarshalDestinationAddress(){return this.viewMarshalDestination||this.pict.providers.DataBroker.marshalDestination}getMarshalDestinationObject(){return this.pict.providers.DataBroker.resolveMarshalDestinationObject(this.viewMarshalDestination)}getValueByHash(t){return this.sectionManifest.getValueByHash(this.getMarshalDestinationObject(),t)}getTabularValueByHash(t,e,i){const n=this.getTabularRecordInput(t,e),r=this.pict.providers.Informary.getComposedContainerAddress(n.PictForm.InformaryContainerAddress,i,n.PictForm.InformaryDataAddress);return this.sectionManifest.getValueByHash(this.getMarshalDestinationObject(),r)}onMarshalToView(){const t=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(t);try{let e=this.getMarshalDestinationObject();this.pict.providers.Informary.marshalDataToForm(e,this.formID,this.sectionManifest),this.runLayoutProviderFunctions("onDataMarshalToForm",t),this.runInputProviderFunctions("onDataMarshalToForm",null,null,t)}catch(t){this.log.error("Gross error marshaling data to view: ".concat(t))}finally{this.finalizeTransaction(t)}return super.onMarshalToView()}manualMarshalDataToViewByInput(t,e){const i="string"==typeof e?e:this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(i);try{this.pict.providers.Informary.manualMarshalDataToFormByInput(t),this.runLayoutProviderFunctions("onDataMarshalToForm",i),this.runInputProviderFunctions("onDataMarshalToForm",t.Hash,null,i)}catch(t){this.log.error("Gross error marshaling data to view: ".concat(t))}finally{i!==e&&this.finalizeTransaction(i)}}manualMarshalTabularDataToViewByInput(t,e,i){const n="string"==typeof i?i:this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(n);try{this.pict.providers.Informary.manualMarshalTabularDataToFormByInput(t,e),this.runLayoutProviderFunctions("onDataMarshalToForm",n),this.runInputProviderFunctions("onDataMarshalToForm",t.Hash,e,n)}catch(t){this.log.error("Gross error marshaling tabular data to view: ".concat(t))}finally{n!==i&&this.finalizeTransaction(n)}}onMarshalFromView(){try{let t=this.getMarshalDestinationObject();this.pict.providers.Informary.marshalFormToData(t,this.formID,this.sectionManifest)}catch(t){this.log.error("Gross error marshaling data from view: ".concat(t))}return super.onMarshalFromView()}onAfterMarshalToForm(){const t=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(t);try{this.runInputProviderFunctions("onAfterMarshalToForm",null,null,t)}catch(t){this.log.error("Gross error running after marshal to form: ".concat(t))}finally{this.finalizeTransaction(t)}}onSolve(){return this.options.ExecuteSolversWithoutMetacontroller&&this.pict.providers.DynamicSolver.solveViews([this.Hash]),super.onSolve()}onBeforeRender(t){return this.initialBundleLoaded||(Array.isArray(this.sectionDefinition.InitialBundle)&&this.pict.EntityProvider.processBundle(this.sectionDefinition.InitialBundle),this.initialBundleLoaded=!0),super.onBeforeRender(t)}onBeforeRenderAsync(t,e){super.onBeforeRenderAsync(e=>{if(!this.initialBundleLoaded){if(Array.isArray(this.sectionDefinition.InitialBundle))return void this.pict.EntityProvider.gatherDataFromServer(this.sectionDefinition.InitialBundle,i=>{i&&this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] failed to load initial bundle: ").concat(i)),setTimeout(()=>t(e),0)});this.initialBundleLoaded=!0}return t(e)},e)}onAfterRender(t){let e=this.fable.getUUID();this.pict.TransactionTracking.registerTransaction(e);try{this.runLayoutProviderFunctions("onGroupLayoutInitialize",e),this.runInputProviderFunctions("onInputInitialize",null,null,e,!0)}catch(t){this.log.error("Gross error running after render: ".concat(t.message||t))}finally{this.finalizeTransaction(e)}return super.onAfterRender(t)}runLayoutProviderFunctions(t,e){const i="string"==typeof e?e:this.fable.getUUID(),n=this.pict.TransactionTracking.registerTransaction(i);let r=this.pict.ContentAssignment.getElement("".concat(this.sectionDefinition.DefaultDestinationAddress,' [data-i-pictdynamiclayout="true"]'));for(let e=0;e<r.length;e++){let e=r[0].getAttribute("data-i-pictgroupindex"),i=r[0].getAttribute("data-i-pictlayout");if(isNaN(e)||e<0){this.log.warn("PICT View Metatemplate Helper runLayoutProviderFunctions ".concat(e," was not a valid group index."));continue}let o=this.getGroup(e);if(!o){this.log.warn("PICT View Metatemplate Helper runLayoutProviderFunctions for group ".concat(e," was not a valid group."));continue}if(!i||"string"!=typeof i){this.log.warn("PICT View Metatemplate Helper runLayoutProviderFunctions for group ".concat(o," layout [").concat(i,"] was not a valid layout."));continue}let a=this.pict.providers.MetatemplateGenerator.getGroupLayoutProvider(this,o);if(a&&t in a){let r=a[t];this.pict.TransactionTracking.checkEvent(n.TransactionKey,"G".concat(e,"-L").concat(i),t)&&r.call(a,this,o)}}i!==e&&this.finalizeTransaction(i)}_trackInfiniteLoop(t,e,i){this._LoopDetectionData[t]=this._LoopDetectionData[t]||{};const n="".concat(null!=e?e:"","::").concat(null!=i?i:""),r=Date.now();return this._LoopDetectionData[t][n]=this._LoopDetectionData[t][n]||{Count:0,Timestamp:r},r-this._LoopDetectionData[t][n].Timestamp>1e3&&(this._LoopDetectionData[t][n].Count=0,this._LoopDetectionData[t][n].Timestamp=r),this._LoopDetectionData[t][n].Count+=1,this._LoopDetectionData[t][n]}runInputProviderFunctions(t,e,i,n,r){const o=this._trackInfiniteLoop(t,e,i);if(r&&o.Count>10)return void this.log.fatal(" !!!!!! Infinite loop detected in runInputProviderFunctions for function [".concat(t,"] on input [").concat(e,"] row [").concat(i,"] in form [").concat(this.Hash,"]::[").concat(this.UUID,"]. Aborting further processing."),{Stack:(new Error).stack});const a="string"==typeof n?n:this.fable.getUUID(),s=this.pict.TransactionTracking.registerTransaction(a);for(let n=0;n<this.sectionDefinition.Groups.length;n++){let r=this.sectionDefinition.Groups[n];if(Array.isArray(r.Rows))for(let i=0;i<r.Rows.length;i++){let n=r.Rows[i];for(let o=0;o<n.Inputs.length;o++){let c=n.Inputs[o];if(c&&c.PictForm&&(!e||e===c.Hash)){let e=this.getInputProviderList(c);for(let n=0;n<e.length;n++)if(this.pict.providers[e[n]]){let o=this.sectionManifest.resolveHashAddress(c.Hash),l=this.sectionManifest.getValueByHash(this.getMarshalDestinationObject(),o);try{this.pict.LogNoisiness>2&&this.log.trace("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] running provider [").concat(e[n],"] function [").concat(t,"] for input [").concat(c.Hash,"].")),("Option"==c.PictForm.InputType||this.pict.TransactionTracking.checkEvent(s.TransactionKey,"I".concat(c.Hash,"-P").concat(e[n]),t))&&this.pict.providers[e[n]][t](this,r,i,c,l,c.Macro.HTMLSelector,a)}catch(i){this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] failed to run provider [").concat(e[n],"] function [").concat(t,"] for input [").concat(c.Hash,"] with error: ").concat(i))}}else this.log.error("Dynamic form runInputProviderFunctions core [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(e[n],"] for input [").concat(c.Hash,"]."))}}}if(r.supportingManifest){let n=Object.keys(r.supportingManifest.elementDescriptors);for(let o=0;o<n.length;o++){let c=this.getTabularRecordSet(r.GroupIndex);if(c&&Array.isArray(c)){let l=r.supportingManifest.elementDescriptors[n[o]];if(l&&l.PictForm&&(!e||e===l.Hash)){let e=this.getInputProviderList(l);for(let n=0;n<e.length;n++){let o=[];if(null!=i)i<c.length?o.push(i):this.log.error("Dynamic form runInputProviderFunctions [".concat(this.Hash,"]::[").concat(this.UUID,"] row index ").concat(i," is out of bounds for input [").concat(l.Hash,"] with ").concat(c.length," rows."));else for(let t=0;t<c.length;t++)o.push(t);for(const c of o)if(!this.pict.providers[e[n]]||null!=i&&i!==c)this.log.error("Dynamic form runInputProviderFunctions supporting [".concat(this.Hash,"]::[").concat(this.UUID,"] cannot find provider [").concat(e[n],"] for input [").concat(l.Hash,"]").concat(null!=i?" in row ".concat(i):"","."));else{let i=this.pict.providers.Informary.getComposedContainerAddress(l.PictForm.InformaryContainerAddress,c,l.PictForm.InformaryDataAddress),o=this.sectionManifest.getValueByHash(this.getMarshalDestinationObject(),i);try{this.pict.TransactionTracking.checkEvent(s.TransactionKey,"TI".concat(l.Hash,"-P").concat(e[n],"-R").concat(c),t)&&this.pict.providers[e[n]][t+"Tabular"](this,r,l,o,l.Macro.HTMLSelectorTabular,c,a)}catch(i){this.log.error("Dynamic form [".concat(this.Hash,"]::[").concat(this.UUID,"] failed to run provider [").concat(e[n],"] function [").concat(t,"] for input [").concat(l.Hash,"] with error: ").concat(i))}}}}}}}}n!==a&&this.finalizeTransaction(a)}checkViewSpecificTemplate(t){return this.getViewSpecificTemplateHash(t)in this.pict.TemplateProvider.templates}getViewSpecificTemplateHash(t){return"".concat(this.formsTemplateSetPrefix).concat(t)}checkThemeSpecificTemplate(t){return this.getThemeSpecificTemplateHash(t)in this.pict.TemplateProvider.templates}getThemeSpecificTemplateHash(t){return"".concat(this.defaultTemplatePrefix).concat(t)}rebuildCustomTemplate(){this.pict.providers.MetatemplateGenerator.rebuildCustomTemplate(this)}getGroupIndexFromHash(t){for(let e=0;e<this.sectionDefinition.Groups.length;e++)if(this.sectionDefinition.Groups[e].Hash===t)return e;return this.log.warn("PICT View Metatemplate Helper getGroupIndexByHash could not find group with hash [".concat(t,"].")),-1}getGroupFromHash(t){for(let e=0;e<this.sectionDefinition.Groups.length;e++)if(this.sectionDefinition.Groups[e].Hash===t)return this.sectionDefinition.Groups[e];return this.log.warn("PICT View Metatemplate Helper getGroupByHash could not find group with hash [".concat(t,"].")),!1}getGroup(t){return isNaN(t)?(this.log.warn("PICT View Metatemplate Helper getGroup ".concat(t," was expecting a number.")),!1):t>this.sectionDefinition.Groups.length?(this.log.warn("PICT View Metatemplate Helper getGroup ".concat(t," was out of bounds.")),!1):this.sectionDefinition.Groups[t]}getGroups(){return Array.isArray(this.sectionDefinition.Groups)?this.sectionDefinition.Groups:[]}getRow(t,e){let i=this.getGroup(t);return!!i&&(isNaN(e)?(this.log.warn("PICT View Metatemplate Helper getRow ".concat(e," was expecting a number.")),!1):e>i.Rows.length?[]:i.Rows[e])}getRowKeyValuePair(t,e){return{Key:t,Value:this.getRow(t,e),Group:this.getGroup(t)}}getInput(t,e,i){let n=this.getRow(t,e);return!!n&&(isNaN(i)?(this.log.warn("PICT View Metatemplate Helper getInput ".concat(i," was expecting a number.")),!1):i>n.Inputs.length?(this.log.warn("PICT View Metatemplate Helper getInput ".concat(i," was out of bounds.")),!1):n.Inputs[i])}getInputProviderList(t){if(!("PictForm"in t))return[];if("Providers"in t.PictForm&&Array.isArray(t.PictForm.Providers)){let e=this.pict.providers.DynamicInput.getDefaultInputProviders(this,t);return e.length>0?e.concat(t.PictForm.Providers):t.PictForm.Providers}return this.pict.providers.DynamicInput.getDefaultInputProviders(this,t)}getInputFromHash(t){return this.sectionManifest.getDescriptorByHash(t)}inputDataRequest(t,e){return this.pict.providers.DynamicInputEvents.inputDataRequest(this,t,e)}inputEvent(t,e,i){return this.pict.providers.DynamicInputEvents.inputEvent(this,t,e,i)}globalInputEvent(t,e,i){this.manifestInputEvent(t,e,i)}manifestInputEvent(t,e,i){const n=i&&"string"==typeof i?i:this.fable.getUUID(),r=Object.keys(this.sectionManifest.elementHashes);for(let n=0;n<r.length;n++)r[n]in e||(e[r[n]]=!0,this.inputEvent(r[n],t,i));i!==n&&this.finalizeTransaction(n)}inputDataRequestTabular(t,e,i,n){return this.pict.providers.DynamicInputEvents.inputDataRequestTabular(this,t,e,i,n)}inputEventTabular(t,e,i,n,r){return this.pict.providers.DynamicInputEvents.inputEventTabular(this,t,e,i,n,r)}registerEventTransactionAsyncOperation(t,e){this.pict.TransactionTracking.pushToTransactionQueue(t,e,a)}eventTransactionAsyncOperationComplete(t,e){const i=this.pict.TransactionTracking.checkTransactionQueue(t);let n=0,r=0,o=!1;for(let t=0;t<i.length;t++){const s=i[t];s.Type===a&&(s.Data===e?(i.splice(t,1),++r,--t):++n),s.Type===c&&(o=!0)}if(0!==r){if(o&&0===n){for(let t=0;t<i.length;t++){const e=i[t];if(e.Type===s){if(i.splice(t,1),--t,"function"!=typeof e.Data){this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete transaction callback was not a function.");continue}try{e.Data()}catch(t){this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete transaction callback error: ".concat(t),{Stack:t.stack})}}}delete this.pict.TransactionTracking.transactions[t]}return r>0}this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete ".concat(t," could not find async operation with hash ").concat(e,"."))}finalizeTransaction(t){this.pict.TransactionTracking.pushToTransactionQueue(t,null,c);const e=this.pict.TransactionTracking.checkTransactionQueue(t);let i=0;for(const t of e)t.Type===a&&++i;if(i>0)return this.pict.log.info("PICT View Metatemplate Helper finalizeTransaction ".concat(t," is waiting on ").concat(i," pending async operations.")),!1;for(let t=0;t<e.length;t++){const i=e[t];if(i.Type===s){if(e.splice(t,1),--t,"function"!=typeof i.Data){this.log.error("PICT View Metatemplate Helper finalizeTransaction transaction callback was not a function.");continue}try{i.Data()}catch(t){this.log.error("PICT View Metatemplate Helper finalizeTransaction transaction callback error: ".concat(t),{Stack:t.stack})}}}return delete this.pict.TransactionTracking.transactions[t],!0}registerOnTransactionCompleteCallback(t,e){const i=this.pict.TransactionTracking.checkTransactionQueue(t);let n=0,r=!1;for(const t of i)t.Type===a&&++n,t.Type===c&&(r=!0);r&&0===n?e():this.pict.TransactionTracking.pushToTransactionQueue(t,e,s)}groupInputEvent(t,e,i,n){const r=this.getGroup(t);if(!r)return void this.log.warn("PICT View Metatemplate Helper subManifestInputEvent ".concat(t," is not a valid group index."));const o=n&&"string"==typeof n?n:this.fable.getUUID();if(n!==o&&this.pict.TransactionTracking.registerTransaction(o),r.Rows.length<1){const n=this.getTabularRecordSet(t);if(!Array.isArray(n))return;for(let a=0;a<n.length;a++)for(const n of Object.values(r.supportingManifest.elementDescriptors)){const s="".concat(this.Hash,"-").concat(r.Hash,"-").concat(n.Hash,"-").concat(a);s in i||(i[s]=!0,this.inputEventTabular(t,n.PictForm.InputIndex,a,e,o))}}for(const t of r.Rows||[])for(const n of t.Inputs||[]){const a="".concat(this.Hash,"-").concat(r.Hash,"-").concat(n.Hash,"-").concat(t.Hash);a in i||(i[a]=!0,this.inputEvent(n.Hash,e,o))}n!==o&&this.finalizeTransaction(o)}sectionInputEvent(t,e,i){const n=this.sectionDefinition.Groups.length,r=i&&"string"==typeof i?i:this.fable.getUUID();i!==r&&this.pict.TransactionTracking.registerTransaction(r);for(let r=0;r<n;r++)this.groupInputEvent(r,t,e,i);i!==r&&this.finalizeTransaction(r)}getTabularRecordInput(t,e){return this.pict.providers.DynamicTabularData.getTabularRecordInput(this,t,e)}getTabularRecordInputByHash(t,e){return this.pict.providers.DynamicTabularData.getTabularRecordInputByHash(this,t,e)}getTabularRecordData(t,e){return this.pict.providers.DynamicTabularData.getTabularRecordData(this,t,e)}getTabularRecordSet(t){return this.pict.providers.DynamicTabularData.getTabularRecordSet(this,t)}createDynamicTableRow(t){return this.pict.providers.DynamicTabularData.createDynamicTableRow(this,t)}setDynamicTableRowIndex(t,e,i){return this.pict.providers.DynamicTabularData.setDynamicTableRowIndex(this,t,e,i)}moveDynamicTableRowDown(t,e){return this.pict.providers.DynamicTabularData.moveDynamicTableRowDown(this,t,e)}moveDynamicTableRowUp(t,e){return this.pict.providers.DynamicTabularData.moveDynamicTableRowUp(this,t,e)}deleteDynamicTableRow(t,e){return this.pict.providers.DynamicTabularData.deleteDynamicTableRow(this,t,e)}get isPictSectionForm(){return!0}},e.exports.default_configuration=o},{"../../package.json":39,"./Pict-View-DynamicForm-DefaultConfiguration.json":102,"pict-view":38}],104:[function(t,e,i){const n=t("pict-view"),r=t("../services/Pict-Service-DynamicFormDependencyManager.js"),o=t("./Pict-View-DynamicForm.js"),a="PendingAsyncOperation",s="onTransactionComplete",c="ReadyToFinalize";e.exports=class extends n{constructor(e,i,n){super(e,i,n),this.serviceType="PictFormMetacontroller",this.fable.addAndInstantiateSingletonService("PictDynamicFormDependencyManager",r.default_configuration,r),this.lastRenderedViews=[],this.formTemplatePrefix=this.pict.providers.MetatemplateGenerator.baseTemplatePrefix,this.manifest=this.pict.manifest,this.AutoSolveOnFirstRender=!0,this.FirstRenderCompleted=!1,this.comprehensionDestinationAddress=this.options&&"string"==typeof this.options.ComprehensionDestinationAddress&&this.options.ComprehensionDestinationAddress.length>0?this.options.ComprehensionDestinationAddress:"AppData.FormEntityComprehensions",this.SupportViewPrototypes={LifecycleVisualization:t("./support/Pict-View-PSF-LifeCycle-Visualization.js"),DebugViewer:t("./support/Pict-View-PSF-DebugViewer.js"),AppDataViewer:t("./support/Pict-View-PSF-AppData-Visualization.js"),SolverVisualization:t("./support/Pict-View-PSF-Solver-Visualization.js"),SpecificSolveVisualization:t("./support/Pict-View-PSF-SpecificSolve-Visualization.js")}}get viewMarshalDestination(){return this.pict.providers.DataBroker.marshalDestination}set viewMarshalDestination(t){this.pict.providers.DataBroker.marshalDestination=t}onMarshalFromView(){let t=Object.keys(this.fable.views);for(let e=0;e<t.length;e++)this.fable.views[t[e]].isPictSectionForm&&this.fable.views[t[e]].marshalFromView();return super.onMarshalFromView()}onMarshalToView(){let t=Object.keys(this.fable.views);for(let e=0;e<t.length;e++)this.fable.views[t[e]].isPictSectionForm&&this.fable.views[t[e]].marshalToView();return super.onMarshalToView()}gatherInitialBundle(t){return this.manifestDescription&&this.manifestDescription.InitialBundle?(this.log.info("Gathering initial bundle for ".concat(this.manifestDescription.InitialBundle.length," entities.")),this.pict.EntityProvider.gatherDataFromServer(this.manifestDescription.InitialBundle,e=>{setTimeout(()=>t(e),0)})):(this.log.info("No initial bundle to gather."),t())}onAfterInitializeAsync(t){return super.onAfterInitializeAsync(function(e){if(e)return t(e);this.gatherInitialBundle(e=>(this.bootstrapPictFormViewsFromManifest(),this.generateMetatemplate(),t(e)))}.bind(this))}onAfterRender(t){const e=super.onAfterRender(t);return this.regenerateFormSectionTemplates(),this.renderFormSections(),this.AutoSolveOnFirstRender&&!this.FirstRenderCompleted&&(this.FirstRenderCompleted=!0,this.pict.providers.DynamicSolver.solveViews()),this.options.AutoPopulateAfterRender&&this.marshalToView(),e}onSolve(){return this.pict.providers.DynamicSolver.solveViews(),super.onSolve()}runSolver(t,e){this.pict.providers.DynamicSolver.runSolver(t,e)}onBeforeFilterViews(t){return t}onAfterFilterViews(t){return t}findDynamicSectionManifestDefinition(t){var e;const i=null===(e=this.manifestDescription)||void 0===e||null===(e=e.ReferenceManifests)||void 0===e?void 0:e[t];return"object"!=typeof i?(this.log.error("findDynamicSectionManifestDefinition() could not find a section manifest with hash [".concat(t,"]")),null):i}injectManifestAndRender(t,e,i){const n=i?this.createDistinctManifest(t,i):t,r=this.injectManifest(n,e);return this.updateMetatemplateInDOM(),setTimeout(()=>{for(const t of r)t.render();if(this.options.AutoPopulateAfterRender)for(const t of r)t.marshalToView()},0),r}injectManifest(t,e){const i=e?e.startsWith("PictSectionForm-")?e:"PictSectionForm-".concat(e):null,n=Object.keys(this.pict.views),r=i?n.indexOf(i):-1,o=[];if(r>=0)for(let t=r+1;t<n.length;t++){const e=n[t];o.push({key:e,view:this.pict.views[e]}),delete this.pict.views[e]}const a=this.bootstrapAdditiveManifest(t,i);for(const t of o)this.pict.views[t.key]=t.view;this.generateMetatemplate();for(const t of a)t.rebuildCustomTemplate();return this.pict.CSSMap.injectCSS(),a}buildManifestTranslations(t){const e={};for(const i of t.Sections||[]){i.OriginalHash&&(e[i.OriginalHash]=i.Hash);for(const t of i.Groups||[])t.OriginalHash&&(e[t.OriginalHash]=t.Hash)}const i={};for(const n of Object.values((null==t?void 0:t.Descriptors)||{}))n.OriginalDataAddress&&(e[n.OriginalDataAddress]=n.DataAddress),n.OriginalHash&&(i[n.OriginalHash]=n.Hash);return{AddressTranslation:e,HashTranslation:i}}rewriteSolverExpression(t,e,i){const n=e||{},r=i||{},o=this.fable.instantiateServiceProviderIfNotExists("ExpressionParser"),a=this.viewMarshalDestination;if("string"!=typeof t||0===t.length)return t;let s={};o.tokenize(t,s);let c=Array.from(s.OriginalRawTokens),l=!1,p=[],d=0;for(let t=0;t<c.length;t++){let e=c[t],i=o.Tokenizer.getTokenType(e);if("("!==e)if(")"!==e)if(","!==e){if("Token.Symbol"===i){let i=null;if(e in n)i=n[e];else if(e in r)i=r[e];else if(a&&e.startsWith(a+".")){let t=e.substring(a.length+1);t in n?i=a+"."+n[t]:t in r&&(i=a+"."+r[t])}null!==i&&(c[t]=i,l=!0)}else if("Token.StateAddress"===i){let i=e.substring(1,e.length-1),o=null;if(i in r)o="{"+r[i]+"}";else if(i in n)o="{"+n[i]+"}";else if(a&&i.startsWith(a+".")){let t=i.substring(a.length+1);t in r?o="{"+a+"."+r[t]+"}":t in n&&(o="{"+a+"."+n[t]+"}")}null!==o&&(c[t]=o,l=!0)}else if("Token.String"===i&&p.length>0){let i=p[p.length-1],s=o.functionMap[i.name];if(s&&Array.isArray(s.AddressParameterIndices)&&s.AddressParameterIndices.includes(i.paramIndex)){let i=e.substring(1,e.length-1),o=null;if(i in n)o='"'+n[i]+'"';else if(i in r)o='"'+r[i]+'"';else if(a&&i.startsWith(a+".")){let t=i.substring(a.length+1);t in n?o='"'+a+"."+n[t]+'"':t in r&&(o='"'+a+"."+r[t]+'"')}null!==o&&(c[t]=o,l=!0)}}}else p.length>0&&p[p.length-1].depth===d-1&&p[p.length-1].paramIndex++;else d--,p.length>0&&p[p.length-1].depth===d&&p.pop();else{if(t>0){let e=c[t-1].toLowerCase();e in o.functionMap&&p.push({name:e,paramIndex:0,depth:d})}d++}}return l?o.recompose(c):t}createDistinctManifest(t,e){const i=null!=e?e:this.pict.getUUID().replace(/-/g,""),n=JSON.parse(JSON.stringify(t)),r={};for(const t of n.Sections||[]){t.Hash||(t.Hash="".concat(this.fable.getUUID())),t.OriginalHash=t.Hash,t.Hash="".concat(t.Hash,"_").concat(i),r[t.OriginalHash]=t.Hash;for(const e of t.Groups||[])e.Hash||(e.Hash="".concat(this.fable.getUUID())),e.OriginalHash=e.Hash,e.Hash="".concat(e.Hash,"_").concat(i),r[e.OriginalHash]=e.Hash}const o=n.Descriptors||{},a={};for(const t of Object.entries(o)){var s=_slicedToArray(t,2);const e=s[0],n=s[1];n.DataAddress||(n.DataAddress=e),n.OriginalDataAddress=n.DataAddress,n.DataAddress="".concat(i,".").concat(n.OriginalDataAddress),null!=n.Address&&(n.Address=n.DataAddress),n.Hash&&(n.OriginalHash=n.Hash,n.Hash="".concat(n.Hash,"_").concat(i)),n.PictForm&&(n.PictForm.Section&&(n.PictForm.Section="".concat(n.PictForm.Section,"_").concat(i)),n.PictForm.Group&&(n.PictForm.Group="".concat(n.PictForm.Group,"_").concat(i))),a[n.DataAddress]=n}n.Descriptors=a;const c={};for(const t of Object.values((null==n?void 0:n.Descriptors)||{}))t.OriginalDataAddress&&(r[t.OriginalDataAddress]=t.DataAddress),t.OriginalHash&&(c[t.OriginalHash]=t.Hash);const l=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");for(const t of Object.entries(r)){var p=_slicedToArray(t,2);const e=p[0],i=p[1];for(const t of Object.keys(r)){if(t===e)continue;const o=r[t].replace(new RegExp("^".concat(l(e),"\\b"),"g"),i);if(o!==r[t]){this.pict.log.info('DocumentDynamicSectionManager.createDistinctManifest: Updated address translation for "'.concat(t,'" from "').concat(r[t],'" to "').concat(o,'".')),r[t]=o;const e=Object.entries(n.Descriptors).find(e=>{let i=_slicedToArray(e,2);i[0];return i[1].OriginalDataAddress===t}),i=_slicedToArray(e,2),a=i[0];i[1];n.Descriptors[a].DataAddress=o,null!=n.Descriptors[a].Address&&(n.Descriptors[a].Address=n.Descriptors[a].DataAddress),n.Descriptors[o]=n.Descriptors[a],delete n.Descriptors[a]}}}const d=(t,e,i)=>{const n=t[e],o="string"==typeof n?n:n.Expression;if(!o)return;const a=this.rewriteSolverExpression(o,c,r);a!==o&&(this.pict.log.info("DocumentDynamicSectionManager.createDistinctManifest: Updated ".concat(i," ").concat(e,' from "').concat(o,'" to "').concat(a,'".')),"string"==typeof n?t[e]=a:t[e].Expression=a)};for(const t of n.Sections||[]){if(Array.isArray(t.Solvers)&&t.Solvers.length>0)for(let e=0;e<t.Solvers.length;e++)d(t.Solvers,e,"section solver reference");for(const e of t.Groups||[]){if(e.RecordSetAddress){let t="".concat(i,".").concat(e.RecordSetAddress);this.pict.log.info('DocumentDynamicSectionManager.createDistinctManifest: Updated group record set address from "'.concat(e.RecordSetAddress,'" to "').concat(t,'".')),e.RecordSetAddress=t}if(Array.isArray(e.RecordSetSolvers)&&e.RecordSetSolvers.length>0)for(let t=0;t<e.RecordSetSolvers.length;t++)d(e.RecordSetSolvers,t,"group solver reference")}}if(Array.isArray(n.ValidationSolvers))for(let t=0;t<n.ValidationSolvers.length;t++)d(n.ValidationSolvers,t,"validation solver reference");return n}injectManifestsByHash(t,e,i){let n=[];for(const r of t){const t=this.findDynamicSectionManifestDefinition(r);if(t){const r=this.createDistinctManifest(t,i),o=this.injectManifest(r,e);n=n.concat(o)}}this.updateMetatemplateInDOM(),setTimeout(()=>{for(const t of n)t.render()},0)}bootstrapAdditiveManifest(t,e){const i=[],n=this.bootstrapPictFormViewsFromManifest(t,e);for(const t of n){const e=this.pict.views["PictSectionForm-".concat(t.Hash)];e&&i.push(e)}return i}filterViews(t,e){let i={ViewHashList:Object.keys(this.pict.views),RenderLastRenderedViewsWithoutCustomization:!0,LastRenderedViews:this.lastRenderedViews,FilterFunction:t,SortFunction:e,FilteredViewList:[]};i=this.onBeforeFilterViews(i);for(let t=0;t<i.ViewHashList.length;t++){let e=this.fable.views[i.ViewHashList[t]];if(!i.FilterFunction||i.FilterFunction(e))if(e.isPictSectionForm){if("function"!=typeof i.FilterFunction&&!e.sectionDefinition.IncludeInDefaultDynamicRender)continue;i.FilteredViewList.push(e)}else this.options.OnlyRenderDynamicSections&&!e.options.IncludeInMetacontrollerOperations||i.FilteredViewList.push(e)}const n=i.FilteredViewList.filter(t=>t.options.DynamicPlacementMode||t.options.DynamicAnchor);for(const t of n){const e=t.options.DynamicPlacementMode||"After",n=t.options.DynamicAnchor;let r,o=i.FilteredViewList.findIndex(e=>e===t);switch(e){case"First":i.FilteredViewList.splice(o,1),i.FilteredViewList.unshift(t);break;case"Last":i.FilteredViewList.splice(o,1),i.FilteredViewList.push(t);break;case"Before":case"After":if(r=i.FilteredViewList.findIndex(t=>t.Hash==n),r<0){const t="PictSectionForm-".concat(n);r=i.FilteredViewList.findIndex(e=>e.Hash==t)}if(r<0){this.log.error("No anchor view [".concat(n,"] found to position view [").concat(t.Hash,"] [").concat(e,"]."));break}i.FilteredViewList.splice(o,1),o<r&&--r,"After"===e&&++r,i.FilteredViewList.splice(r,0,t);break;default:this.log.error("Not auto-positioning view with unknown DynamicPlacementMode: ".concat(e))}}return"function"==typeof i.SortFunction&&i.FilteredViewList.sort(i.SortFunction),i=this.onAfterFilterViews(i),i.FilteredViewList}renderSpecificFormSection(t){this.lastRenderedViews=this.filterViews(e=>e.Hash==t),this.regenerateFormSectionTemplates(),this.generateMetatemplate(),this.render()}renderDefaultFormSections(){this.lastRenderedViews=this.filterViews(t=>{var e,i;return null!==(e=null==t||null===(i=t.sectionDefinition)||void 0===i?void 0:i.IncludeInDefaultDynamicRender)&&void 0!==e&&e}),this.regenerateFormSectionTemplates(),this.generateMetatemplate(),this.render()}renderFormSections(t,e){let i=this.filterViews(t,e);for(let t=0;t<i.length;t++)i[t]!==this&&i[t].render()}marshalFormSections(t,e){let i=this.filterViews(t,e);for(let t=0;t<i.length;t++)i[t]!==this&&i[t].marshalToView()}regenerateFormSectionTemplates(t,e){let i=this.filterViews(t,e);for(let t=0;t<i.length;t++){const e=i[t];e!==this&&(e.isPictSectionForm&&e.rebuildCustomTemplate())}this.pict.CSSMap.injectCSS()}generateMetatemplate(t,e){let i="";this.formTemplatePrefix||(this.formTemplatePrefix=this.pict.providers.MetatemplateGenerator.baseTemplatePrefix),i+="{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Header:Pict.views["').concat(this.Hash,'"]~}');let n=this.filterViews(t,e);for(let t=0;t<n.length;t++){let e=n[t];e!==this&&(e.options.IncludeInMetatemplateSectionGeneration?(i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Prefix:Pict.views["').concat(e.Hash,'"]~}'),e.isPictSectionForm?i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container:Pict.views["').concat(e.Hash,'"]~}'):(e.options.CustomTargetID=e.options.DefaultDestinationAddress.replace(/#/,""),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Custom:Pict.views["').concat(e.Hash,'"]~}')),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Postfix:Pict.views["').concat(e.Hash,'"]~}')):e.isPictSectionForm||(e.options.CustomTargetID=e.options.DefaultDestinationAddress.replace(/#/,""),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Prefix:Pict.views["').concat(e.Hash,'"]~}'),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Custom:Pict.views["').concat(e.Hash,'"]~}'),i+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Postfix:Pict.views["').concat(e.Hash,'"]~}')))}i+="{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Footer:Pict.views["').concat(this.Hash,'"]~}'),this.pict.TemplateProvider.addTemplate(this.options.MetaTemplateHash,i)}updateMetatemplateInDOM(t,e){this.formTemplatePrefix||(this.formTemplatePrefix=this.pict.providers.MetatemplateGenerator.baseTemplatePrefix);let i,n=this.filterViews(t,e),r=null,o=null;for(let t=0;t<n.length;t++){let e=n[t];if(e===this)continue;if(!e.isPictSectionForm)continue;if(!e.options.IncludeInMetatemplateSectionGeneration)continue;const a=e.options.CustomTargetID||"Pict-".concat(this.UUID,"-").concat(e.options.Hash,"-Wrap");let s=this.pict.ContentAssignment.getElement("#".concat(a));if(s.length>0){const t=s[0];o&&(this.pict.ContentAssignment.insertContentBefore("#".concat(a),i),o=null,i=null),r=t;continue}let c="";e.options.IncludeInMetatemplateSectionGeneration?(c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Prefix:Pict.views["').concat(e.Hash,'"]~}'),e.isPictSectionForm?c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container:Pict.views["').concat(e.Hash,'"]~}'):(e.options.CustomTargetID=e.options.DefaultDestinationAddress.replace(/#/,""),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Custom:Pict.views["').concat(e.Hash,'"]~}')),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Postfix:Pict.views["').concat(e.Hash,'"]~}')):e.isPictSectionForm||(e.options.CustomTargetID=e.options.DefaultDestinationAddress.replace(/#/,""),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Prefix:Pict.views["').concat(e.Hash,'"]~}'),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Custom:Pict.views["').concat(e.Hash,'"]~}'),c+="\n{~T:".concat(this.formTemplatePrefix,'-Template-Form-Container-Wrap-Postfix:Pict.views["').concat(e.Hash,'"]~}'));const l=this.pict.parseTemplate(c,e,null,[this]);r?(this.pict.ContentAssignment.insertContentAfter("#".concat(r.id),l),s=this.pict.ContentAssignment.getElement("#".concat(a)),r=s[0]):(o=a,i=l)}o&&(this.pict.ContentAssignment.appendContent("#Pict-".concat(this.UUID,"-FormContainer"),i),o=null,i=null)}getSectionDefinition(t){if("object"!=typeof t)return this.log.error("getSectionDefinition() called without a valid section object."),!1;if(!("Hash"in t))return this.log.error("getSectionDefinition() called without a valid section object hash."),!1;try{let e=JSON.parse(JSON.stringify(t));return"Name"in e||(e.Name=e.Hash),"Description"in e||(e.Description="PICT Section [".concat(e.Name,"].")),"Groups"in e||(e.Groups=[]),e}catch(t){return this.log.error("getSectionDefinition() failed to parse the section object with error: ".concat(t.message||t)),!1}}getSectionViewFromHash(t){let e="string"==typeof t&&t;if(!e)return this.log.error("getSectionViewFromHash() called without a valid section hash."),!1;let i="PictSectionForm-".concat(e);return i in this.fable.views?this.fable.views[i]:(this.log.error("getSectionViewFromHash() could not find a view for section hash [".concat(e,"].")),!1)}marshalSectionToView(t){const e=(Array.isArray(t)?t:[t]).filter(t=>"string"==typeof t&&t.length>0);for(const t of e){const e=this.getSectionViewFromHash(t);e&&e.marshalToView()}}marshalInputToView(t){const e=(Array.isArray(t)?t:[t]).filter(t=>"string"==typeof t&&t.length>0);if(e.length<1)return;const i=this.filterViews();for(const t of e)for(let e=0;e<i.length;e++){const n=i[e];if(n===this||"function"!=typeof n.getInputFromHash)continue;const r=n.getInputFromHash(t);if(r){n.manualMarshalDataToViewByInput(r);break}}}clearManifestDescription(){this.manifestDescription=null}bootstrapPictFormViewsFromManifest(t,e){let i="object"==typeof t&&t,n=[];if("object"!=typeof i){if(!("DefaultFormManifest"in this.fable.settings)||"object"!=typeof this.fable.settings.DefaultFormManifest||!("Descriptors"in this.fable.settings.DefaultFormManifest))return this.log.error("PictFormMetacontroller.bootstrapPictFormViewsFromManifest() called without a valid manifest, and no settings.DefaultFormManifest was provided."),n;i=this.fable.settings.DefaultFormManifest}if(this.manifestDescription){this.stashedManifestDescription=this.manifestDescription,this.manifestDescription=i;for(const t of Object.entries(this.manifestDescription.Descriptors||{})){var r=_slicedToArray(t,2);const e=r[0],i=r[1];this.stashedManifestDescription.Descriptors[e]?this.log.error("PictFormMetacontroller.bootstrapPictFormViewsFromManifest() found a duplicate descriptor key [".concat(e,"] when merging manifests. The new descriptor will be skipped.")):this.stashedManifestDescription.Descriptors[e]=JSON.parse(JSON.stringify(i))}for(const t of Object.keys(this.manifestDescription.ReferenceManifests||{}))this.stashedManifestDescription.ReferenceManifests[t]?this.log.warn("PictFormMetacontroller.bootstrapPictFormViewsFromManifest() found a duplicate reference manifest key [".concat(t,"] when merging manifests. The new reference manifest will be skipped.")):this.stashedManifestDescription.ReferenceManifests[t]=JSON.parse(JSON.stringify(this.manifestDescription.ReferenceManifests[t]));let t=this.stashedManifestDescription.Sections.findIndex(t=>t.Hash==e);t<0?t=0:++t;for(const e of this.manifestDescription.Sections||[]){const i=JSON.parse(JSON.stringify(e));this.stashedManifestDescription.Sections.splice(t,0,i),++t}}else this.manifestDescription=i;let a=this.fable.instantiateServiceProviderWithoutRegistration("Manifest",this.manifestDescription);if(this.options.AutoPopulateDefaultObject){const t=this.pict.providers.DataBroker.marshalDestinationObject;"object"==typeof t&&a.populateDefaults(t)}if("Sections"in this.manifestDescription&&Array.isArray(this.manifestDescription.Sections))for(let t=0;t<this.manifestDescription.Sections.length;t++){let e=this.getSectionDefinition(this.manifestDescription.Sections[t]);e&&n.push(e)}let s={},c=Object.keys(a.elementDescriptors);for(let t=0;t<c.length;t++){let e=a.elementDescriptors[c[t]];e&&this.pict.manifest.addDescriptor(c[t],e),"object"==typeof e&&"PictForm"in e&&"object"==typeof e.PictForm&&"Section"in e.PictForm&&"string"==typeof e.PictForm.Section&&(s[e.PictForm.Section]=!0)}let l=Object.keys(s);for(let t=0;t<l.length;t++){n.find(e=>e.Hash==l[t])||n.push(this.getSectionDefinition({Hash:l[t]}))}for(let t=0;t<n.length;t++){let e="PictSectionForm-".concat(n[t].Hash);if(e in this.fable.views){this.log.info("getSectionList() found an existing view for section [".concat(n[t].Hash,"] so will be skipped."));continue}let i=JSON.parse(JSON.stringify(n[t]));"Manifests"in i||(i.Manifests={}),i.Manifests.Section=this.manifestDescription,this.pict.addView(e,i,o)}if("PickLists"in this.manifestDescription){let t=Object.keys(this.manifestDescription.PickLists);for(let e=0;e<t.length;e++){let i=this.manifestDescription.PickLists[t[e]];this.pict.providers.DynamicMetaLists.buildList(i)}}for(let t=0;t<n.length;t++){let e=n[t];"CustomCSS"in e&&"string"==typeof e.CustomCSS&&this.pict.CSSMap.addCSS("PSF-SectionCSS-".concat(e.Hash),e.CustomCSS)}return this.stashedManifestDescription&&(this.manifestDescription=this.stashedManifestDescription,delete this.stashedManifestDescription),n}triggerGlobalInputEvent(t,e){const i=e&&"string"==typeof e?e:this.fable.getUUID();e!==i&&this.pict.TransactionTracking.registerTransaction(i);let n="string"==typeof t?t:this.fable.getUUID(),r=Object.keys(this.pict.views),o={},a=null;for(let t=0;t<r.length;t++){let e=this.pict.views[r[t]];e.isPictSectionForm&&(a=e,e.sectionInputEvent(n,o,i))}e!==i&&a&&a.finalizeTransaction(i)}registerEventTransactionAsyncOperation(t,e){this.pict.TransactionTracking.pushToTransactionQueue(t,e,a)}eventTransactionAsyncOperationComplete(t,e){const i=this.pict.TransactionTracking.checkTransactionQueue(t);let n=0,r=0,o=!1;for(let t=0;t<i.length;t++){const s=i[t];s.Type===a&&(s.Data===e?(i.splice(t,1),++r,--t):++n),s.Type===c&&(o=!0)}if(0!==r){if(o&&0===n){for(let t=0;t<i.length;t++){const e=i[t];if(e.Type===s){if(i.splice(t,1),--t,"function"!=typeof e.Data){this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete transaction callback was not a function.");continue}try{e.Data()}catch(t){this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete transaction callback error: ".concat(t),{Stack:t.stack})}}}delete this.pict.TransactionTracking.transactions[t]}return r>0}this.log.error("PICT View Metatemplate Helper eventTransactionAsyncOperationComplete ".concat(t," could not find async operation with hash ").concat(e,"."))}finalizeTransaction(t){this.pict.TransactionTracking.pushToTransactionQueue(t,null,c);const e=this.pict.TransactionTracking.checkTransactionQueue(t);let i=0;for(const t of e)t.Type===a&&++i;if(i>0)return this.pict.log.info("PICT View Metatemplate Helper finalizeTransaction ".concat(t," is waiting on ").concat(i," pending async operations.")),!1;for(let t=0;t<e.length;t++){const i=e[t];if(i.Type===s){if(e.splice(t,1),--t,"function"!=typeof i.Data){this.log.error("PICT View Metatemplate Helper finalizeTransaction transaction callback was not a function.");continue}try{i.Data()}catch(t){this.log.error("PICT View Metatemplate Helper finalizeTransaction transaction callback error: ".concat(t),{Stack:t.stack})}}}return delete this.pict.TransactionTracking.transactions[t],!0}registerOnTransactionCompleteCallback(t,e){const i=this.pict.TransactionTracking.checkTransactionQueue(t);let n=0,r=!1;for(const t of i)t.Type===a&&++n,t.Type===c&&(r=!0);r&&0===n?e():this.pict.TransactionTracking.pushToTransactionQueue(t,e,s)}showSupportViewInlineEditor(){this.pict.addViewSingleton("Pict-Form-DebugViewer",{},this.SupportViewPrototypes.DebugViewer),this.pict.addViewSingleton("Pict-Form-AppDataViewer",{},this.SupportViewPrototypes.AppDataViewer),this.pict.addViewSingleton("Pict-Form-SolverVisualization",{},this.SupportViewPrototypes.SolverVisualization),this.pict.views["Pict-Form-DebugViewer"].bootstrapContainer(),this.pict.views["Pict-Form-DebugViewer"].render()}get isPictMetacontroller(){return!0}},e.exports.default_configuration={AutoRender:!0,AutoPopulateDefaultObject:!0,AutoSolveBeforeRender:!0,AutoPopulateAfterRender:!0,DefaultRenderable:"Pict-Forms-Metacontainer",DefaultDestinationAddress:"#Pict-Form-Container",OnlyRenderDynamicSections:!0,MetaTemplateHash:"Pict-Forms-Metatemplate",Templates:[{Hash:"Pict-Forms-Metatemplate",Template:"\x3c!-- Pict-Forms-Metatemplate HAS NOT BEEN GENERATED; call pict.views.PictFormsMetatemplate.generateMetatemplate() to build the containers --\x3e"}],Renderables:[{RenderableHash:"Pict-Forms-Metacontainer",TemplateHash:"Pict-Forms-Metatemplate",DestinationAddress:"#Pict-Form-Container"}]}},{"../services/Pict-Service-DynamicFormDependencyManager.js":88,"./Pict-View-DynamicForm.js":103,"./support/Pict-View-PSF-AppData-Visualization.js":106,"./support/Pict-View-PSF-DebugViewer.js":107,"./support/Pict-View-PSF-LifeCycle-Visualization.js":108,"./support/Pict-View-PSF-Solver-Visualization.js":109,"./support/Pict-View-PSF-SpecificSolve-Visualization.js":110,"pict-view":38}],105:[function(t,e,i){const n=t("pict-provider"),r={ProviderIdentifier:"Pict-Form-SupportExtensions",AutoInitialize:!0,AutoInitializeOrdinal:0,AutoSolveWithApp:!1};e.exports=class extends n{constructor(t,e,i){super(t,Object.assign({},JSON.parse(JSON.stringify(r)),e),i),"Pict-Support"in this.pict.CSSMap.inlineCSSMap||this.pict.CSSMap.addCSS("Pict-Support",'\n\t\t\t\t\t:root{\n\t\t\t\t\t\t--PSF-Global-background-color: #dcdce5;\n\t\t\t\t\t\t--PSF-Global-text-color: var(--theme-color-text-primary, #333333);\n\n\t\t\t\t\t\t--PSFExt-gutter-size: 5px;\n\t\t\t\t\t\t--PSFExt-indentation-size: calc(2 * var(--PSFExt-gutter-size));\n\t\t\t\t\t\t--PSFExt-Global-background-color: #dedede;\n\t\t\t\t\t\t--PSFExt-Global-text-color: var(--theme-color-text-primary, #333333);\n\t\t\t\t\t\t--PSFExt-Section-background-color: var(--theme-color-background-tertiary, #efefef);\n\t\t\t\t\t\t--PSFExt-Section-button-color: #5A52A3;\n\t\t\t\t\t\t--PSFExt-Section-button-text-color: #D8D7E5;\n\t\t\t\t\t\t--PSFExt-Section-token-color: #eAf3a2;\n\t\t\t\t\t\t--PSFExt-Section-label-color: var(--theme-color-text-muted, #999);\n\t\t\t\t\t\t--PSFExt-Section-Data-background-color: var(--theme-color-background-secondary, #fafafa);\n\t\t\t\t\t\t--PSFExt-Section-Group-Header-background-color: #ebebff;\n\t\t\t\t\t\t--PSFExt-Section-Group-Row-Header-background-color: #dcf0f0;\n\t\t\t\t\t\t--PSFExt-Solver-Entry-text-color: #bb4a9c;\n\t\t\t\t\t\t--PSFExt-Section-DynamicInput-background-color: #a3ccd8;\n\t\t\t\t\t\t--PSFExt-Section-DynamicInput-button-color: #2b89a4;\n\t\t\t\t\t\t--PSFExt-Section-DynamicInput-button-text-color: #D8D7E5;\n\t\t\t\t\t}\n\n\t\t\t\t\t/** Wrapping container\t*/\n\t\t\t\t\t#Pict-Form-Extensions-Wrap {\n\t\t\t\t\t\tdisplay:flex;\n\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\theight: 75vh;\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tleft: 50%;\n\t\t\t\t\t\ttop: 0px;\n\t\t\t\t\t\twidth: 20vw;\n\t\t\t\t\t\tmin-width: 340px;\n\t\t\t\t\t\tmin-height: 200px;\n\t\t\t\t\t}\n\t\t\t\t\t#Pict-Form-Extension-DragControl {\n\t\t\t\t\t\tbackground-color: #eae;\n\t\t\t\t\t\tcursor: move;\n\t\t\t\t\t\tpadding: 4px 6px;\n\t\t\t\t\t\tborder-radius: 3px;\n\t\t\t\t\t\tborder: 1px solid var(--theme-color-text-primary, #111);\n\t\t\t\t\t}\n\t\t\t\t\t#Pict-Form-Extensions-Container { \n\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\toverflow: auto;\n\t\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t\t\tcolor: var(--PSF-Global-text-color);\n\t\t\t\t\t\tbackground-color: var(--PSF-Global-background-color);\n\t\t\t\t\t\tpadding: 10px;\n\t\t\t\t\t\tborder: 4px double var(--theme-color-text-primary, #111);\n\t\t\t\t\t\tborder-radius: 8px;\n\t\t\t\t\t\tbox-shadow: 2px 2px 10px rgba(0,0,0,0.5);\n\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t\tfont-family: Arial, sans-serif;\n\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t}\n\t\t\t\t\t#Pict-Form-Extension-ResizeControl {\n\t\t\t\t\t\tbackground-color: #eae;\n\t\t\t\t\t\tcursor: move;\n\t\t\t\t\t\tpadding: 4px 4px;\n\t\t\t\t\t\tborder-radius: 3px;\n\t\t\t\t\t\tborder: 1px solid var(--theme-color-text-primary, #111);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Extension-Footer {\n\t\t\t\t\t\ttext-align: right;\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tmargin-top: 8px;\n\t\t\t\t\t}\n\n\t\t\t\t\t/** Headers\t*/\n\t\t\t\t\t.PSFExt-Extension-Header {\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tmargin-bottom: var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Global-Header {\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Header {\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Content-Header {\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-background-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Data-Header {\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tborder-bottom: 1px dotted var(--theme-color-border-default, #ccc);\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t/** Section content */\n\t\t\t\t\t.PSFExt-Section { \n\t\t\t\t\t\tmargin: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-background-color);\n\t\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Descriptors { \n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size) 0;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Group { \n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Buttons {\n\t\t\t\t\t\tlist-style-type: none;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\tpadding-bottom: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin: calc(var(--PSFExt-gutter-size) * 2) var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Button { \n\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\tmargin-right: calc(var(--PSFExt-gutter-size) * 0.25);\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-button-color);\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tborder-radius: var(--PSFExt-gutter-size);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Button a { \n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\tcolor: var(--PSFExt-Section-button-text-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Button a:hover { \n\t\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Solver-Entry:not(:last-child) {\n\t\t\t\t\t\tborder-bottom: 1px solid var(--theme-color-border-default, #ccc);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Solver-Entry { \n\t\t\t\t\t\tfont-family: "Courier New", "Lucida Console", monospace;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tmargin-top: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tline-height: 1.2;\n\t\t\t\t\t\tcolor: var(--PSFExt-Solver-Entry-text-color);\n\t\t\t\t\t\tborder-bottom: 1px dotted var(--theme-color-border-default, #ccc);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Solver-Result { \n\t\t\t\t\t\tfont-family: "Courier New", "Lucida Console", monospace;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tmargin-top: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tpadding: 0 var(--PSFExt-gutter-size);\n\t\t\t\t\t\tline-height: 1.2;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-ExtraData {\n\t\t\t\t\t\tpadding-top: calc(var(--PSFExt-gutter-size) / 2);\n\t\t\t\t\t\tpadding-bottom: calc(var(--PSFExt-gutter-size) / 2);\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-Data-background-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Group .PSFExt-Content-Header.PSFExt-Section-Group-Header {\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-Group-Header-background-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Group .PSFExt-Content-Header.PSFExt-Section-Group-Row-Header {\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-Group-Row-Header-background-color);\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-DeEmphasize { \n\t\t\t\t\t\tcolor: var(--PSFExt-Section-label-color);\n\t\t\t\t\t\tfont-size: smaller;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Data { \n\t\t\t\t\t\tmargin-left: var(--PSFExt-indentation-size);\n\t\t\t\t\t\tline-height: 0.85;\n\t\t\t\t\t\tfont-size: smaller;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Data-Table {\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tborder-collapse: collapse;\n\t\t\t\t\t\tmargin-left: var(--PSFExt-indentation-size);\n\t\t\t\t\t\tmargin-top: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tmargin-bottom: var(--PSFExt-gutter-size);\n\t\t\t\t\t\toverflow-x: auto;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Label { \n\t\t\t\t\t\tmin-width: 15%;\n\t\t\t\t\t\tcolor: var(--PSFExt-Section-label-color);\n\t\t\t\t\t\tmargin: var(--PSFExt-gutter-size) 0;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Label::after {\n\t\t\t\t\t\tcontent: ": ";\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Hidden { \n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Section-Solver-DynamicInput {\n\t\t\t\t\t\tbackground-color: var(--theme-color-background-panel, #ffffff);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/** empty states */\n\t\t\t\t\t.PSFExt-Section-Solvers:empty::before {\n\t\t\t\t\t\tcontent: "No Section Solvers Defined";\n\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\tcolor: var(--PSFExt-Section-label-color);\n\t\t\t\t\t\tmargin-left: var(--PSFExt-indentation-size);\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tfont-size: smaller;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Group-Solvers:empty::before {\n\t\t\t\t\t\tcontent: "No Group/RecordSet Solvers Defined";\n\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\tcolor: var(--PSFExt-Section-label-color);\n\t\t\t\t\t\tmargin-left: var(--PSFExt-indentation-size);\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tpadding: var(--PSFExt-gutter-size);\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tfont-size: smaller;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-ExpressionEditbox {\n\t\t\t\t\t\twidth: calc(100% - 20px);\n\t\t\t\t\t\tresize: vertical;\n\t\t\t\t\t\tmin-height: 80px;\n\t\t\t\t\t\tfont-family: monospace;\n\t\t\t\t\t\tfont-size: 0.9em;\n\t\t\t\t\t}\n\t\t\t\t\t.PSFExt-Token {\n\t\t\t\t\t\tbackground-color: var(--PSFExt-Section-token-color);\n\t\t\t\t\t}\n\t\t\t\t',1e3,"Pict-Form-SupportBase"),null==this.pict.TemplateProvider.getTemplate("Pict-Form-Support-Container")&&this.pict.TemplateProvider.addTemplate("Pict-Form-Support-Container",'\n\t\t\t<div id="Pict-Form-Extensions-Wrap">\n\t\t\t\t<p class="PSFExt-Extension-Header"><span id="Pict-Form-Extension-DragControl" class="PSDV-Extension-Header-Controlbar">Pict.Extensions {~TS:Pict-Form-Support-Container-Link:Pict.providers[Pict-Form-SupportExtensions].getSupportViewLinks()~} <a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.toggleClass(\'#Pict-Form-Extensions-Container\', \'PSFExt-Hidden\');{~P~}.ContentAssignment.toggleClass(\'#Pict-Form-Extensions-Footer\', \'PSFExt-Hidden\');">toggle</a></span></p>\n\t\t\t\t<div id="Pict-Form-Extensions-Container"></div>\n\t\t\t\t<p id="Pict-Form-Extensions-Footer" class="PSFExt-Extension-Footer"><span id="Pict-Form-Extension-ResizeControl">Pict.Extensions Resize</span></p>\n\t\t\t</div>\n\t\t\t\t'),null==this.pict.TemplateProvider.getTemplate("Pict-Form-Support-Container-Link")&&this.pict.TemplateProvider.addTemplate("Pict-Form-Support-Container-Link",' [ <a href="{~D:Record.Link~}" onclick="{~D:Record.OnClick~}" data-shortname="{~D:Record.ShortName~}" data-longname="{~D:Record.LongName~}">{~D:Record.ShortName~}</a> ] '),this.SupportViews={}}registerSupportView(t){this.pict.log.info("Registering support view ".concat(t.Hash," with Pict Support Extension provider.")),this.SupportViews[t.Hash]=t}getSupportViewLinks(){let t=[],e=Object.keys(this.SupportViews);for(let i=0;i<e.length;i++){let n=e[i],r=this.SupportViews[n];t.push({Hash:r.Hash,Link:"javascript:void(0);",ShortName:r.DisplayShortName,LongName:r.DisplayLongName,OnClick:"".concat(this.pict.browserAddress,".views['").concat(r.Hash,"'].render()")})}return t}},e.exports.default_configuration=r},{"pict-provider":9}],106:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="FDT",this.DisplayLongName="FormData"}flattenMarshalDestination(){return this.flattenAddress(this.pict.views.PictFormMetacontroller.viewMarshalDestination)}flattenAppData(){return this.flattenAddress("AppData")}flattenAddress(t){let e=this.pict.resolveStateFromAddress(t);return this.pict.manifest.objectAddressGeneration.generateAddressses(e)}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-AppData",DefaultRenderable:"Pict-Form-AppData-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"",Templates:[{Hash:"Pict-Form-AppData-Content",Template:'\n<div id="Pict-Form-AppData-Content">\n\t<h2 class="PSFAD-Global-Header">Pict Form Data Visualization</h2>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">Form Marshal Destination</span> {~D:Pict.views.PictFormMetacontroller.viewMarshalDestination~}\n\t</p>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">Form Data</span> [<a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].downloadJSONObjectAsFile(\'Pict.{~D:Pict.views.PictFormMetacontroller.viewMarshalDestination~}\')">Download JSON</a>]\n\t</p>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">AppData</span> [<a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].downloadJSONObjectAsFile(\'Pict.AppData\')">Download AppData JSON</a>]\n\t</p>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">Fable Settings</span> [<a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].downloadJSONObjectAsFile(\'Pict.settings\')">Download fable settings JSON</a>]\n\t</p>\n\t<p class="PSFExt-Data">\n\t\t<span class="PSFExt-Label">Application Options</span> [<a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].downloadJSONObjectAsFile(\'Pict.PictApplication.options\')">Download Application options JSON</a>]\n\t</p>\n\t<div id="PSFExt-Data-Browser" class="PSFExt-Section">\n\t\t{~TVS:Pict-Form-AppData:Context[0].flattenMarshalDestination()~}\n\t</div>\n'},{Hash:"Pict-Form-AppData",Template:'\n\t<div class="PSFExt-Section">\n\t\t<h3 class="PSFExt-Section-Header"><span class="PSFExt-DeEmphasize">Address:</span> \n\t\t\t{~D:Record.Key~}\n\t\t</h3>\n\t\t<div id="PSFExt-AD-{~D:Record.Key~}-Extra" class="PSFExt-Section-ExtraData">\n\t\t\t{~TIfAbs:Pict-Form-AppData-ObjectValueDisplay:Record:Record.Value.DataType^==^Object~}\n\t\t\t{~TIfAbs:Pict-Form-AppData-NotObjectValueDisplay:Record:Record.Value.DataType^!=^Object~}\n\t\t</div>\n\t</div>\n'},{Hash:"Pict-Form-AppData-NotObjectValueDisplay",Template:"\n\t\t\t\t\x3c!-- Not Object Value Display --\x3e\n\t\t\t\t{~TIfAbs:Pict-Form-AppData-ArrayValueDisplay:Record:Record.Value.DataType^==^Array~}\n\t\t\t\t{~TIfAbs:Pict-Form-AppData-PrimitiveValueDisplay:Record:Record.Value.DataType^!=^Array~}\n"},{Hash:"Pict-Form-AppData-ObjectValueDisplay",Template:'\n\t\t\t\x3c!-- Object Value Display --\x3e\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Type</span> Javascript Object {~T:Pict-Form-AppData-ObjectDownloadLink~}\n\t\t\t</p>\n'},{Hash:"Pict-Form-AppData-ArrayValueDisplay",Template:'\n\t\t\t\x3c!-- Array Value Display --\x3e\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Type</span> Array {~TIfAbs:Pict-Form-AppData-ArrayDownloadLink~}\n\n\t\t\t</p>\n'},{Hash:"Pict-Form-AppData-PrimitiveValueDisplay",Template:'\n\t\t\t\x3c!-- Primitive Value Display --\x3e\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Value</span> {~D:Record.Value.Default~}\n\t\t\t</p>\n'},{Hash:"Pict-Form-AppData-ObjectDownloadLink",Template:"[<a href=\"javascript:void(0);\" onclick=\"{~P~}.views['{~D:Context[0].Hash~}'].downloadJSONObjectAsFile('Pict.{~D:Pict.views.PictFormMetacontroller.viewMarshalDestination~}')\">Download JSON</a>]"},{Hash:"Pict-Form-AppData-ArrayDownloadLink",Template:"[<a href=\"javascript:void(0);\" onclick=\"{~P~}.views['{~D:Context[0].Hash~}'].downloadJSONObjectAsFile('Pict.{~D:Pict.views.PictFormMetacontroller.viewMarshalDestination~}')\">Download Array</a>]"}],Renderables:[{RenderableHash:"Pict-Form-AppData-Renderable",TemplateHash:"Pict-Form-AppData-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],107:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="ILE",this.DisplayLongName="InlineEditor"}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-DebugViewer",DefaultRenderable:"Pict-Form-DebugViewer-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"\n\t/** Dynamic Input Section Overrides */\n\t#PSFExt-DynamicInputSection .PSFExt-Section { \n\t\tmargin: var(--PSFExt-gutter-size);\n\t\tpadding: var(--PSFExt-gutter-size);\n\t\tbackground-color: var(--PSFExt-Section-DynamicInput-background-color);\n\t}\n\n\t#PSFExt-DynamicInputSection .PSFExt-Section .PSFExt-Section-Button { \n\t\tbackground-color: var(--PSFExt-Section-DynamicInput-button-color);\n\t}\n\t#PSFExt-DynamicInputSection .PSFExt-Section .PSFExt-Section-Button a { \n\t\tcolor: var(--PSFExt-Section-DynamicInput-button-text-color);\n\t}\n\t#PSFExt-DynamicInputSection .PSFExt-Section .PSFExt-Label,\n\t#PSFExt-DynamicInputSection .PSFExt-Section .PSFExt-DeEmphasize { \n\t\tcolor: var(--PSFExt-Section-DynamicInput-button-color);\n\t}\n\t#PSFExt-DynamicInputSection .PSFExt-Section-Descriptors { \n\t\tborder-left: 5px solid var(--PSFExt-Section-DynamicInput-background-color);\n\t}\n\t#PSFExt-DynamicInputSection .PSFExt-Section-Group { \n\t\tborder-left: 5px solid var(--PSFExt-Section-DynamicInput-button-color);\n\t}\n",Templates:[{Hash:"Pict-Form-DebugViewer-Content",Template:'\n<div id="Pict-Form-DebugViewer-Content">\n\t<h2 class="PSFExt-Global-Header">Pict Inline Form Editing Tool</h2>\n\t{~T:Pict-Form-DebugViewer-MetacontrollerContainer~}\n</div>'},{Hash:"Pict-Form-DebugViewer-MetacontrollerContainer",Template:'\n\t<p class="PSFExt-Data"><span class="PSFExt-Label">Scope:</span> {~D:Context[0].getDynamicState().Scope~}</p>\n\t<ul class="PSFExt-Section-Buttons">\n\t</ul>\n\t<div id="PSFExt-SectionList">\n\t\t{~TS:Pict-Form-DebugViewer-SectionContainer:Context[0].getDynamicState().SectionViews~}\n\t</div>\n\t<hr>\n\t<div id="PSFExt-DynamicInputSection">\n\t\t{~T:Pict-Form-DebugViewer-SectionContainer:Context[0].getDynamicState().DynamicInputView~}\n\t</div>\n'},{Hash:"Pict-Form-DebugViewer-SectionContainer",Template:'\n\t<div id="PSFExt-Section-{~D:Record.Hash~}" class="PSFExt-Section">\n\t\t<h3 class="PSFExt-Section-Header"><span class="PSFExt-DeEmphasize">Section:</span> {~D:Record.sectionDefinition.Name~}</h3>\n\t\t<ul class="PSFExt-Section-Buttons">\n\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Record.View.Hash~}\'].render()">Render</a></li>\n\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.assignContent(\'{~D:Record.View.options.DefaultDestinationAddress~}\',\'\')">Clear</a></li>\n\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.removeClass(\'#PSFExt-{~D:Record.View.Hash~}-Extra\', \'PSFExt-Hidden\')">Extra Data</a></li>\n\t\t</ul>\n\t\t<div id="PSFExt-{~D:Record.View.Hash~}-Extra" class="PSFExt-Hidden PSFExt-Section-ExtraData">\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Description</span> {~D:Record.sectionDefinition.Description~}\n\t\t\t</p>\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Hash</span> {~D:Record.View.Hash~}\n\t\t\t</p>\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">HTML ID</span> {~D:Record.View.sectionDefinition.Macro.HTMLID~}\n\t\t\t</p>\n\t\t\t<h4 class="PSFExt-Content-Header">Section Solvers:</h4>\n\t\t\t<div class="PSFExt-Section-Solvers">{~TS:Pict-Form-DebugViewer-SolverEntry:Record.Solvers[]<<~?ExpressionScope,==,Section?~>>~}</div>\n\t\t\t<h4 class="PSFExt-Content-Header">Tabular/RecordSet Solvers:</h4>\n\t\t\t<div class="PSFExt-Group-Solvers">{~TS:Pict-Form-DebugViewer-SolverEntry:Record.Solvers[]<<~?ExpressionScope,==,Group?~>>~}</div>\n\t\t\t<h4 class="PSFExt-Content-Header">Inputs:</h4>\n\t\t\t<div class="PSFExt-Section-Solver-DynamicInput">\n\t\t\t\t{~TS:Pict-Form-DebugViewer-GroupContainer:Record.View.sectionDefinition.Groups~}\n\t\t\t</div>\n\t\t\t<ul class="PSFExt-Section-Buttons">\n\t\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.addClass(\'#PSFExt-{~D:Record.View.Hash~}-Extra\', \'PSFExt-Hidden\')">Hide Extra Data for {~D:Record.View.Hash~}</a></li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n'},{Hash:"Pict-Form-DebugViewer-SolverEntry",Template:'\n\t\t\t<div class="PSFExt-Section-Solver-Entry">\n\t\t\t\t<p class="PSFExt-Solver-Entry">{~D:Record.Expression~}</p>\n\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Last Result</span> <span class="PSFExt-Solver-Result">{~D:Record.LastResult~}</span></p>\n\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Sequence</span> Ordinal [{~D:Record.Ordinal~}] Index [{~D:Record.Index~}]</p>\n\t\t\t</div>\n\t\t\t'},{Hash:"Pict-Form-DebugViewer-GroupContainer",Template:'\n\t\t\t<div class="PSFExt-Section-Group">\n\t\t\t\t<h5 class="PSFExt-Content-Header PSFExt-Section-Group-Header">\n\t\t\t\t\t<span class="PSFExt-DeEmphasize">Group:</span> {~D:Record.Name~} [idx <em>{~D:Record.GroupIndex~}</em>]\n\t\t\t\t</h5>\n\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Layout</span> {~D:Record.Layout~}</p>\n\t\t\t\t<div class="PSFExt-Section-Rows">\n\t\t\t\t\t{~TS:Pict-Form-DebugViewer-RowContainer:Record.Rows~}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t'},{Hash:"Pict-Form-DebugViewer-RowContainer",Template:'\n\t\t\t\t\t<div class="PSFExt-Section-Descriptors">\n\t\t\t\t\t\t<h6 class="PSFExt-Content-Header PSFExt-Section-Group-Row-Header">\n\t\t\t\t\t\t\t<span class="PSFExt-DeEmphasize">Row:</span> {~D:Record.Hash~}\n\t\t\t\t\t\t</h6>\n\t\t\t\t\t\t{~TS:Pict-Form-DebugViewer-DescriptorContainer:Record.Inputs~}\n\t\t\t\t\t</div>\n'},{Hash:"Pict-Form-DebugViewer-DescriptorContainer",Template:'\n\t\t\t\t\t\t<div class="PSFExt-Section-Descriptor">\n\t\t\t\t\t\t\t<p class="PSFExt-Data-Header"><span class="PSFExt-DeEmphasize">Input:</span> {~D:Record.Name~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Hash</span> {~D:Record.Hash~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">DataType</span> {~D:Record.DataType~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">InputType</span> {~D:Record.PictForm.InputType~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Informary Data Address</span> {~D:Record.PictForm.InformaryDataAddress~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">Input Index</span> {~D:Record.PictForm.InputIndex~}</p>\n\t\t\t\t\t\t\t<p class="PSFExt-Data"><span class="PSFExt-Label">HTML ID</span> {~D:Record.PictForm.Macro.HTMLID~}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t'}],Renderables:[{RenderableHash:"Pict-Form-DebugViewer-Renderable",TemplateHash:"Pict-Form-DebugViewer-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],108:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="LCV",this.DisplayLongName="LifecycleVisulization"}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-LifeCycle",DefaultRenderable:"Pict-Form-LifeCycle-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"",Templates:[{Hash:"Pict-Form-LifeCycle-Content",Template:'\n<div id="Pict-Form-LifeCycle-Content">\n\t<h2 class="PSFLC-Global-Header">Pict LifeCycle Visualization</h2>\n</div>\n'}],Renderables:[{RenderableHash:"Pict-Form-LifeCycle-Renderable",TemplateHash:"Pict-Form-LifeCycle-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],109:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="SLV",this.DisplayLongName="SolverVisualization"}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-Solver",DefaultRenderable:"Pict-Form-Solver-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"",Templates:[{Hash:"Pict-Form-Solver-Content",Template:'\n<div id="Pict-Form-Solver-Content">\n\t<h2 class="PSFS-Global-Header">Pict Solver Visualization</h2>\n\t<ul class="PSFExt-Section-Buttons">\n\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.views.PictFormMetacontroller.solve(); {~P~}.views.PictFormMetacontroller.marshalFormSections(); {~P~}.views[\'{~D:Context[0].Hash~}\'].render();">Solve</a></li>\n\t</ul>\n\t{~TS:Pict-Form-Solver-Entries:Context[0].getDynamicState().Solvers~}\n</div>\n'},{Hash:"Pict-Form-Solver-Entries",Template:'\n\t<div id="PSFExt-Section-{~D:Record.Hash~}" class="PSFExt-Section">\n\t\t<h3 class="PSFExt-Section-Header">\n\t\t\t<span class="PSFExt-DeEmphasize">{~D:Record.ExpressionScope~} {~D:Record.SectionOrdinal~}.G.{~D:Record.GroupOrdinal~}</span> Ord</span>{~D:Record.Ordinal~} <span class="PSFExt-DeEmphasize">Ind</span>{~D:Record.Index~}\n\t\t\t[ <a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.toggleClass(\'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionContainer\', \'PSFExt-Hidden\');">Edit</a> ]\n\t\t\t[ <a href="javascript:void(0);" onclick="{~P~}.ContentAssignment.toggleClass(\'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExtraDataContainer\', \'PSFExt-Hidden\');">More</a> ]\n\t\t</h3>\n\t\t\n\t\t<div id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionContainer" class="PSFExt-Hidden">\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<textarea id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionEditbox" class="PSFExt-ExpressionEditbox">{~D:Record.Expression~}</textarea>\n\t\t\t</p>\n\t\t\t<ul class="PSFExt-Section-Buttons">\n\t\t\t\t<li class="PSFExt-Section-Button"><a href="javascript:void(0);" onclick="{~P~}.views[\'{~D:Context[0].Hash~}\'].updateExpressionFromElement(\'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionEditbox\', \'{~D:Record.ExpressionScope~}\', \'{~D:Record.ViewHash~}\', {~D:Record.SectionOrdinal~}, {~D:Record.Index~}, \'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-Display\'); {~P~}.ContentAssignment.addClass(\'#PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExpressionContainer\', \'PSFExt-Hidden\');">Apply</a></li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<div id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-Extra" class="PSFExt-Section-ExtraData">\n\t\t\t<p class="PSFExt-Solver-Entry" id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-Display">{~D:Record.Expression~}</p>\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">Value</span> {~TBT:Record.Value:object,array:Pict-Form-RecordValueDisplayComplex:Record:Pict-Form-RecordValueDisplaySimple~}\n\t\t\t</p>\n\t\t</div>\n\t\t<div id="PSFExt-{~D:Record.ExpressionScope~}-{~D:Record.ViewHash~}-S{~D:Record.SectionOrdinal~}-G{~D:Record.GroupOrdinal~}-{~D:Record.Index~}-ExtraDataContainer" class="PSFExt-Section-ExtraData PSFExt-Hidden">\n\t\t\t<h5 class="PSFExt-Content-Header PSFExt-Section-Group-Header">{~D:Record.LastResultsObject.PostfixTokenObjects.length~} Postfix Tokens</h5>\n\t\t\t{~TS:Pict-Form-Solver-PostfixToken:Record.LastResultsObject.PostfixTokenObjects~}\n\t\t\t<h5 class="PSFExt-Content-Header PSFExt-Section-Group-Header">Virtual Symbols</h5>\n\t\t\t{~TVS:Pict-Form-Solver-VirtualSymbols:Record.LastResultsObject.VirtualSymbols~}\n\t\t\t<h5 class="PSFExt-Content-Header PSFExt-Section-Group-Header">{~D:Record.LastResultsObject.PostfixTokenObjects.length~} Postfix Solve List</h5>\n\t\t\t{~TVS:Pict-Form-Solver-PostFixSolveEntry:Record.LastResultsObject.PostfixSolveList~}\n\t\t</div>\n\t</div>\n'},{Hash:"Pict-Form-Solver-PostfixToken",Template:'\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">{~D:Record.Type~}</span> <span class="PSFExt-Token">{~D:Record.Token~}</span>\n\t\t\t</p>\n'},{Hash:"Pict-Form-Solver-VirtualSymbols",Template:'\n\t\t\t<p class="PSFExt-Data">\n\t\t\t\t<span class="PSFExt-Label">{~D:Record.Key~}</span> {~TBT:Record.Value:object,array:Pict-Form-RecordValueDisplayComplex:Record:Pict-Form-RecordValueDisplaySimple~}\n\t\t\t</p>\n'},{Hash:"Pict-Form-RecordValueDisplayComplex",Template:"\n\t\t\t\x3c!-- Complex Value --\x3e\n\t\t\t{~TBT:Record.Value:array:Pict-Form-RecordValueDisplayArray:Record:Pict-Form-RecordValueDisplayObject~}\n"},{Hash:"Pict-Form-RecordValueDisplayObject",Template:"JSON Object\n\t\t\t\x3c!-- RAW Object\n{~DJ:Record.Value~}\n\t\t\t--\x3e"},{Hash:"Pict-Form-RecordValueDisplayArray",Template:"JSON Array ({~D:Record.Value.length~} items)\n\t\t\t\x3c!-- RAW Array\n{~DJ:Record.Value~}\n\t\t\t--\x3e"},{Hash:"Pict-Form-RecordValueDisplaySimple",Template:"{~D:Record.Value~}"},{Hash:"Pict-Form-Solver-PostFixSolveEntry",Template:'\n\t\t\t<div>\n\t\t\t\t<h6 class="PSFExt-Content-Header PSFExt-Data-Header">Postfix Solve Entry #{~D:Record.Key~} Symbol <span class="PSFExt-Token">{~D:Record.Value.VirtualSymbolName~}</span></h6>\n\t\t\t\t<table class="PSFExt-Data-Table">\n\t\t\t\t\t<th>\n\t\t\t\t\t\t<tr><td></td><td>Left</td><td>Operation</td><td>Right</td></tr>\n\t\t\t\t\t</th>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Virtual Symbol</td>\n\t\t\t\t\t\t<td> {~D:Record.Value.LeftValue.VirtualSymbolName~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.Operation.VirtualSymbolName~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.RightValue.VirtualSymbolName~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Value</td>\n\t\t\t\t\t\t<td> {~TBT:Record.Value.LeftValue.Value:object,array:Pict-Form-RecordValueDisplayComplex:Record.Value.LeftValue:Pict-Form-RecordValueDisplaySimple~} </td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td> {~TBT:Record.Value.RightValue.Value:object,array:Pict-Form-RecordValueDisplayComplex:Record.Value.RightValue:Pict-Form-RecordValueDisplaySimple~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Tokens</td>\n\t\t\t\t\t\t<td> {~D:Record.Value.LeftValue.Token~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.Operation.Token~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.RightValue.Token~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Type</td>\n\t\t\t\t\t\t<td> {~D:Record.Value.LeftValue.Type~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.Operation.Type~} </td>\n\t\t\t\t\t\t<td> {~D:Record.Value.RightValue.Type~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Solve Layer</td>\n\t\t\t\t\t\t<td> {~D:Record.Value.LeftValue.SolveLayerStack~} </td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td> {~D:Record.Value.RightValue.SolveLayerStack~} </td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</div>\n'}],Renderables:[{RenderableHash:"Pict-Form-Solver-Renderable",TemplateHash:"Pict-Form-Solver-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],110:[function(t,e,i){const n=t("./Pict-View-PSF-SupportBase.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.DisplayShortName="STV",this.DisplayLongName="SpecificSolveTimingVisualization"}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-SpecificSolve",DefaultRenderable:"Pict-Form-SpecificSolve-Renderable",DefaultDestinationAddress:"#Pict-Form-Extensions-Container",RenderOnLoad:!1,CSS:"",Templates:[{Hash:"Pict-Form-SpecificSolve-Content",Template:'\n<div id="Pict-Form-SpecificSolve-Content">\n\t<h2 class="PSFSS-Global-Header">Pict Specific Solve Timing Visualization</h2>\n</div>\n'}],Renderables:[{RenderableHash:"Pict-Form-SpecificSolve-Renderable",TemplateHash:"Pict-Form-SpecificSolve-Content"}]}},{"./Pict-View-PSF-SupportBase.js":111}],111:[function(t,e,i){const n=t("pict-view"),r=t("./Pict-Provider-PSF-Support.js");e.exports=class extends n{constructor(t,e,i){super(t,e,i),this.pict.addProviderSingleton("Pict-Form-SupportExtensions",{},r),this.DisplayShortName="U",this.DisplayLongName="UNDEFINED",this.pict.providers["Pict-Form-SupportExtensions"].registerSupportView(this)}getDynamicState(){if(!("PictFormMetacontroller"in this.pict.views))return this.pict.log.warn("Pict Forms Inline Editor tried to initialize but no metacontroller was found."),{Scope:"ERR_NO_METACONTROLLER",Description:"Error initializing inline editor -- no metacontroller found.",Manifest:this.fable.newManyfest(),Sections:[]};let t=this.pict.views.PictFormMetacontroller,e={Scope:t.manifestDescription.Scope,Description:"",Manifest:t.manifest,ManifestDescription:t.manifestDescription,AllViews:t.filterViews(),SectionViews:[],DynamicInputView:!1,Solvers:[]};for(let t=0;t<e.AllViews.length;t++){let i=e.AllViews[t];i.isPictSectionForm&&"PictFormMetacontroller-DynamicInputs"==i.Hash?e.DynamicInputView=i:i.isPictSectionForm&&e.SectionViews.push({View:i,sectionDefinition:i.sectionDefinition,Solvers:[]})}for(let t=0;t<e.SectionViews.length;t++){let i=e.SectionViews[t].View,n=e.SectionViews[t].Solvers;if(i.isPictSectionForm&&Array.isArray(i.sectionDefinition.Solvers))for(let r=0;r<i.sectionDefinition.Solvers.length;r++){let o=i.sectionDefinition.Solvers[r],a={ViewHash:i.Hash,SectionOrdinal:t,GroupOrdinal:-1,Ordinal:1,Index:r,Expression:"",ExpressionType:"Unknown",ExpressionScope:"Section"};"string"==typeof o?(a.Expression=o,a.ExpressionType="Simple"):"object"==typeof o&&(a.Expression=o.Expression,a.Ordinal=o.Ordinal,a.ExpressionType="Complex"),e.Solvers.push(a),n.push(a)}for(let r=0;r<i.sectionDefinition.Groups.length;r++){let o=i.getGroup(r);if("RecordSetSolvers"in o)for(let a=0;a<o.RecordSetSolvers.length;a++){let s=o.RecordSetSolvers[a],c={ViewHash:i.Hash,SectionOrdinal:t,GroupOrdinal:r,Ordinal:1,Index:a,Expression:"",ExpressionType:"Unknown",ExpressionScope:"Group"};s&&("string"==typeof s?(c.Expression=s,c.ExpressionType="Simple"):"object"==typeof s&&(c.Expression=s.Expression,c.Ordinal=s.Ordinal,c.ExpressionType="Complex")),e.Solvers.push(c),n.push(c)}}n.sort((t,e)=>t.Ordinal<e.Ordinal?-1:t.Ordinal>e.Ordinal?1:"Group"==t.ExpressionScope&&"Section"==e.ExpressionScope?-1:"Section"==t.ExpressionScope&&"Group"==e.ExpressionScope?1:t.Index<e.Index?-1:t.Index>e.Index?1:0)}if(e.Solvers.sort((t,e)=>t.Ordinal<e.Ordinal?-1:t.Ordinal>e.Ordinal?1:"Group"==t.ExpressionScope&&"Section"==e.ExpressionScope?-1:"Section"==t.ExpressionScope&&"Group"==e.ExpressionScope?1:t.Index<e.Index?-1:t.Index>e.Index?1:0),e.LastSolveOutcome=this.pict.providers.DynamicSolver.lastSolveOutcome,"object"==typeof e.LastSolveOutcome)for(let t=0;t<e.Solvers.length;t++){let i=e.Solvers[t];if(i.Ordinal in e.LastSolveOutcome.SolveOrdinals)if("Section"==i.ExpressionScope){let t=e.LastSolveOutcome.SolveOrdinals[i.Ordinal].SectionSolvers;if(Array.isArray(t))for(let e=0;e<t.length;e++){let n=t[e];n.ViewHash==i.ViewHash&&n.Solver.Expression==i.Expression&&(i.LastResult=n.Solver.ResultsObject.RawResult,i.Value=n.Solver.ResultsObject.RawResult,i.LastResultsObject=n.Solver.ResultsObject)}}else if("Group"==i.ExpressionScope){let t=e.LastSolveOutcome.SolveOrdinals[i.Ordinal].GroupSolvers;if(Array.isArray(t))for(let e=0;e<t.length;e++){let n=t[e];n.ViewHash==i.ViewHash&&n.Solver.Expression==i.Expression&&(n.Solver&&"ResultsObject"in n.Solver&&(i.LastResult=n.Solver.ResultsObject.RawResult),n.Solver&&"ResultsObject"in n.Solver&&(i.LastResultsObject=n.Solver.ResultsObject))}}}return e}getSectionSolvers(t){return this.getDynamicState().Solvers.map(e=>{if(e.ViewHash===t)return e})}downloadJSONObjectAsFile(t){try{const e=this.pict.resolveStateFromAddress(t),i="PICT_JSON_".concat(t.replace(".","_"),".json"),n=JSON.stringify(e,null,4);if(!URL||!Blob)return void this.pict.log.error("Browser does not support required features for downloading JSON object from address ".concat(t,"."));const r=new Blob([n],{type:"application/json"}),o=URL.createObjectURL(r),a=document.createElement("a");a.href=o,a.download=i,a.click(),URL.revokeObjectURL(o)}catch(e){this.pict.log.error("Error downloading JSON object from address ".concat(t,": ").concat(e.message))}}updateExpressionFromElement(t,e,i,n,r,o){let a=this.pict.ContentAssignment.readContent(t);if(!a)return void this.pict.log.warn("No expression found in element at address ".concat(t,"; cannot update ").concat(e," solver Ordinal ").concat(n," Index ").concat(r,"."));let s=this.pict.views.PictFormMetacontroller,c={Scope:s.manifestDescription.Scope,Description:"",Manifest:s.manifest,ManifestDescription:s.manifestDescription,AllViews:s.filterViews(),SectionViews:[],DynamicInputView:!1,Solvers:[]};for(let t=0;t<c.AllViews.length;t++){let e=c.AllViews[t];e.isPictSectionForm&&"PictFormMetacontroller-DynamicInputs"==e.Hash?c.DynamicInputView=e:e.isPictSectionForm&&c.SectionViews.push({View:e,sectionDefinition:e.sectionDefinition,Solvers:[]})}for(let t=0;t<c.SectionViews.length;t++){let o=c.SectionViews[t].View;c.SectionViews[t].Solvers;if(o.isPictSectionForm&&Array.isArray(o.sectionDefinition.Solvers))for(let s=0;s<o.sectionDefinition.Solvers.length;s++){let c=o.sectionDefinition.Solvers[s];"Section"==e&&t==n&&s==r&&o.Hash==i&&("string"==typeof c?o.sectionDefinition.Solvers[s]=a:"object"==typeof c&&(o.sectionDefinition.Solvers[s].Expression=a))}for(let s=0;s<o.sectionDefinition.Groups.length;s++){let c=o.getGroup(s);if("RecordSetSolvers"in c)for(let l=0;l<c.RecordSetSolvers.length;l++){let p=c.RecordSetSolvers[l];"Group"==e&&t==n&&s==r&&o.Hash==i&&("string"==typeof p?o.sectionDefinition.Solvers[s]=a:"object"==typeof p&&(o.sectionDefinition.Solvers[s].Expression=a))}}}o&&this.pict.ContentAssignment.assignContent(o,a)}bootstrapContainer(){let t=this.options.DefaultDestinationAddress;if(this.pict.ContentAssignment.getElement(this.options.DefaultDestinationAddress).length>0)return!0;let e="Pict-Form-Support-Container";e in this.renderables||(this.renderables[e]={RenderableHash:"Pict-Form-Support-Container",TemplateHash:"Pict-Form-Support-Container",ContentDestinationAddress:"body",RenderMethod:"append_once",TestAddress:"#Pict-Form-Extensions-Container"}),this.renderables[e].TestAddress=t,this.pict.CSSMap.injectCSS(),this.render(e);let i=document.getElementById("Pict-Form-Extensions-Wrap"),n=document.getElementById("Pict-Form-Extension-DragControl");i&&n&&n.addEventListener("mousedown",function(t){let e=t.offsetX+n.clientLeft,r=t.offsetY+n.clientTop;function o(t){t.stopPropagation(),i.style.left=t.clientX-e+"px",i.style.top=t.clientY-r+"px"}window.addEventListener("pointermove",o),window.addEventListener("pointerup",function t(e){window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",t)}),t.preventDefault()});let r=document.getElementById("Pict-Form-Extensions-Wrap"),o=document.getElementById("Pict-Form-Extension-ResizeControl");r&&o&&o.addEventListener("mousedown",function(t){function e(t){t.stopPropagation();let e=t.clientX-r.getBoundingClientRect().left,i=t.clientY-r.getBoundingClientRect().top,n=getComputedStyle(r),o=parseInt(n.minWidth,10),a=parseInt(n.minHeight,10);e<o&&(e=o),i<a&&(i=a),r.style.width=e+"px",r.style.height=i+"px"}window.addEventListener("pointermove",e),window.addEventListener("pointerup",function t(i){window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)}),t.preventDefault()})}},e.exports.default_configuration={ViewIdentifier:"Pict-Form-SupportBase",DefaultRenderable:"Pict-Form-SUPPORT-BASE",RenderOnLoad:!1,Templates:[],Renderables:[{RenderableHash:"Pict-Form-SUPPORT-BASE",TemplateHash:"Pict-Form-SUPPORT-BASE-NOTEMPLATE"}]}},{"./Pict-Provider-PSF-Support.js":105,"pict-view":38}]},{},[1])(1)});
|