pict-docuserve 0.0.30 → 0.0.32

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.
@@ -4860,664 +4860,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
4860
4860
  "fable-serviceproviderbase": 2
4861
4861
  }],
4862
4862
  8: [function (require, module, exports) {
4863
- /**
4864
- * Simple syntax highlighter for use with CodeJar.
4865
- *
4866
- * Provides basic keyword/string/number/comment highlighting for common languages.
4867
- * Can be replaced with Prism.js or highlight.js for more sophisticated highlighting
4868
- * by passing a custom highlight function to the view options.
4869
- *
4870
- * @module Pict-Code-Highlighter
4871
- */
4872
-
4873
- // Language definition map
4874
- const _LanguageDefinitions = {
4875
- 'javascript': {
4876
- // Combined regex to tokenize: comments, strings, template literals, regex, then everything else
4877
- tokenizer: /(\/\/[^\n]*|\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2|(`(?:[^`\\]|\\.)*?`)|(\/(?![/*])(?:\\.|\[(?:\\.|[^\]])*\]|[^/\\\n])+\/[gimsuvy]*)/g,
4878
- 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,
4879
- 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,
4880
- numbers: /\b(\d+\.?\d*(?:e[+-]?\d+)?|0x[0-9a-fA-F]+|0b[01]+|0o[0-7]+)\b/g
4881
- },
4882
- 'json': {
4883
- tokenizer: /(\/\/[^\n]*|\/\*[\s\S]*?\*\/)|("(?:[^"\\]|\\.)*")/g,
4884
- keywords: /\b(true|false|null)\b/g,
4885
- numbers: /-?\b\d+\.?\d*(?:e[+-]?\d+)?\b/g
4886
- },
4887
- 'html': {
4888
- // Tokenizer captures: (1) comments, (2) strings, (3) tags with attributes
4889
- tokenizer: /(<!--[\s\S]*?-->)|(["'])(?:(?!\2|\\).|\\.)*?\2|(<\/?[a-zA-Z][a-zA-Z0-9-]*(?:\s+[a-zA-Z-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*\/?>)/g,
4890
- // tagToken group index for identifying tag matches
4891
- tagGroupIndex: 3
4892
- },
4893
- 'css': {
4894
- tokenizer: /(\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2/g,
4895
- selectors: /([.#]?[a-zA-Z_][\w-]*(?:\s*[>+~]\s*[.#]?[a-zA-Z_][\w-]*)*)\s*\{/g,
4896
- properties: /\b([a-zA-Z-]+)\s*:/g,
4897
- numbers: /\b(\d+\.?\d*)(px|em|rem|%|vh|vw|s|ms|deg|fr)?\b/g,
4898
- keywords: /\b(important|inherit|initial|unset|none|auto|block|inline|flex|grid)\b/g
4899
- },
4900
- 'sql': {
4901
- tokenizer: /(--[^\n]*|\/\*[\s\S]*?\*\/)|(["'])(?:(?!\2|\\).|\\.)*?\2/g,
4902
- 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,
4903
- numbers: /\b\d+\.?\d*\b/g
4904
- }
4905
- };
4906
-
4907
- // Alias some common language names
4908
- _LanguageDefinitions['js'] = _LanguageDefinitions['javascript'];
4909
- _LanguageDefinitions['htm'] = _LanguageDefinitions['html'];
4910
-
4911
- /**
4912
- * Escape HTML special characters to prevent XSS when inserting into innerHTML.
4913
- *
4914
- * @param {string} pString - The string to escape
4915
- * @returns {string} The escaped string
4916
- */
4917
- function escapeHTML(pString) {
4918
- return pString.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
4919
- }
4920
-
4921
- /**
4922
- * Highlight a segment of code that is NOT inside a string or comment.
4923
- * This applies keyword, number, and structural highlighting.
4924
- *
4925
- * @param {string} pCode - The code segment to highlight (already HTML-escaped)
4926
- * @param {object} pLanguageDef - The language definition
4927
- * @returns {string} The highlighted HTML
4928
- */
4929
- function highlightCodeSegment(pCode, pLanguageDef) {
4930
- let tmpResult = pCode;
4931
-
4932
- // CSS selectors
4933
- if (pLanguageDef.selectors) {
4934
- pLanguageDef.selectors.lastIndex = 0;
4935
- tmpResult = tmpResult.replace(pLanguageDef.selectors, '<span class="function-name">$1</span>{');
4936
- }
4937
-
4938
- // CSS properties
4939
- if (pLanguageDef.properties) {
4940
- pLanguageDef.properties.lastIndex = 0;
4941
- tmpResult = tmpResult.replace(pLanguageDef.properties, '<span class="property">$1</span>:');
4942
- }
4943
-
4944
- // Keywords
4945
- if (pLanguageDef.keywords) {
4946
- pLanguageDef.keywords.lastIndex = 0;
4947
- tmpResult = tmpResult.replace(pLanguageDef.keywords, '<span class="keyword">$1</span>');
4948
- }
4949
-
4950
- // Builtins
4951
- if (pLanguageDef.builtins) {
4952
- pLanguageDef.builtins.lastIndex = 0;
4953
- tmpResult = tmpResult.replace(pLanguageDef.builtins, '<span class="keyword">$1</span>');
4954
- }
4955
-
4956
- // Numbers (CSS numbers may have units as a capture group, others do not)
4957
- if (pLanguageDef.numbers) {
4958
- pLanguageDef.numbers.lastIndex = 0;
4959
- tmpResult = tmpResult.replace(pLanguageDef.numbers, pMatch => {
4960
- return "<span class=\"number\">".concat(pMatch, "</span>");
4961
- });
4962
- }
4963
- return tmpResult;
4964
- }
4965
-
4966
- /**
4967
- * Highlight an HTML tag token, applying tag name, attribute name, and attribute value colors.
4968
- *
4969
- * The approach: parse the raw tag into structured pieces first, then build the
4970
- * highlighted output from those pieces. This avoids mixing raw text with HTML span
4971
- * tags, which would cause regex replacements to match span attributes on subsequent passes.
4972
- *
4973
- * @param {string} pTag - The raw (unescaped) tag string
4974
- * @returns {string} The highlighted HTML
4975
- */
4976
- function highlightHTMLTag(pTag) {
4977
- let tmpResult = '';
4978
- let tmpRest = pTag;
4979
-
4980
- // 1. Extract the opening bracket and tag name: < or </ followed by tagname
4981
- let tmpTagNameMatch = tmpRest.match(/^(<\/?)([a-zA-Z][a-zA-Z0-9-]*)/);
4982
- if (!tmpTagNameMatch) {
4983
- // Not a recognizable tag, just escape the whole thing
4984
- return escapeHTML(pTag);
4985
- }
4986
- tmpResult += escapeHTML(tmpTagNameMatch[1]);
4987
- tmpResult += '<span class="tag">' + escapeHTML(tmpTagNameMatch[2]) + '</span>';
4988
- tmpRest = tmpRest.substring(tmpTagNameMatch[0].length);
4989
-
4990
- // 2. Parse attributes from the remaining text (before the closing > or />)
4991
- // Repeatedly match: whitespace + attr-name + optional =value
4992
- let tmpAttrRegex = /^(\s+)([a-zA-Z-]+)(?:(\s*=\s*)(["'])([^"']*?)\4)?/;
4993
- let tmpAttrMatch;
4994
- while ((tmpAttrMatch = tmpRest.match(tmpAttrRegex)) !== null) {
4995
- // Whitespace before the attribute
4996
- tmpResult += tmpAttrMatch[1];
4997
- // Attribute name
4998
- tmpResult += '<span class="attr-name">' + escapeHTML(tmpAttrMatch[2]) + '</span>';
4999
-
5000
- // If there's an = value part
5001
- if (tmpAttrMatch[3]) {
5002
- tmpResult += escapeHTML(tmpAttrMatch[3]);
5003
- tmpResult += '<span class="attr-value">' + escapeHTML(tmpAttrMatch[4]) + escapeHTML(tmpAttrMatch[5]) + escapeHTML(tmpAttrMatch[4]) + '</span>';
5004
- }
5005
- tmpRest = tmpRest.substring(tmpAttrMatch[0].length);
5006
- }
5007
-
5008
- // 3. Whatever remains (whitespace, />, >) — escape it all
5009
- tmpResult += escapeHTML(tmpRest);
5010
- return tmpResult;
5011
- }
5012
-
5013
- /**
5014
- * Create a highlight function for a given language.
5015
- *
5016
- * The approach: use a single tokenizer regex to split the code into protected tokens
5017
- * (comments, strings) and code segments. Process each segment independently.
5018
- * This avoids placeholder/sentinel issues entirely.
5019
- *
5020
- * @param {string} pLanguage - The language identifier (e.g. "javascript", "json", "html")
5021
- * @returns {function} A function that takes an element and highlights its textContent
5022
- */
5023
- function createHighlighter(pLanguage) {
5024
- return function highlightElement(pElement) {
5025
- let tmpCode = pElement.textContent;
5026
- let tmpLanguageName = typeof pLanguage === 'string' ? pLanguage.toLowerCase() : 'javascript';
5027
- let tmpLanguageDef = _LanguageDefinitions[tmpLanguageName];
5028
- if (!tmpLanguageDef) {
5029
- // No highlighting rules for this language; just escape and return
5030
- pElement.innerHTML = escapeHTML(tmpCode);
5031
- return;
5032
- }
5033
- if (!tmpLanguageDef.tokenizer) {
5034
- // No tokenizer; just escape and apply keyword highlighting
5035
- pElement.innerHTML = highlightCodeSegment(escapeHTML(tmpCode), tmpLanguageDef);
5036
- return;
5037
- }
5038
-
5039
- // Split the code into tokens using the tokenizer regex.
5040
- // The tokenizer captures comments and strings as groups.
5041
- // We process everything between matches as code.
5042
- let tmpResult = '';
5043
- let tmpLastIndex = 0;
5044
- let tmpTagGroupIndex = tmpLanguageDef.tagGroupIndex || 0;
5045
- tmpLanguageDef.tokenizer.lastIndex = 0;
5046
- let tmpMatch;
5047
- while ((tmpMatch = tmpLanguageDef.tokenizer.exec(tmpCode)) !== null) {
5048
- // Add the code segment before this match
5049
- if (tmpMatch.index > tmpLastIndex) {
5050
- let tmpSegment = tmpCode.substring(tmpLastIndex, tmpMatch.index);
5051
- tmpResult += highlightCodeSegment(escapeHTML(tmpSegment), tmpLanguageDef);
5052
- }
5053
- let tmpFullMatch = tmpMatch[0];
5054
-
5055
- // Determine token type from capture groups
5056
- // Group 1 is always comments, Group 2+ are strings/template literals/regex
5057
- if (tmpMatch[1]) {
5058
- // Comment
5059
- tmpResult += "<span class=\"comment\">".concat(escapeHTML(tmpFullMatch), "</span>");
5060
- } else if (tmpTagGroupIndex > 0 && tmpMatch[tmpTagGroupIndex]) {
5061
- // HTML tag — highlight tag name, attributes, and values
5062
- tmpResult += highlightHTMLTag(tmpFullMatch);
5063
- } else {
5064
- // String, template literal, or regex
5065
- tmpResult += "<span class=\"string\">".concat(escapeHTML(tmpFullMatch), "</span>");
5066
- }
5067
- tmpLastIndex = tmpLanguageDef.tokenizer.lastIndex;
5068
- }
5069
-
5070
- // Add any remaining code after the last match
5071
- if (tmpLastIndex < tmpCode.length) {
5072
- let tmpSegment = tmpCode.substring(tmpLastIndex);
5073
- tmpResult += highlightCodeSegment(escapeHTML(tmpSegment), tmpLanguageDef);
5074
- }
5075
- pElement.innerHTML = tmpResult;
5076
- };
5077
- }
5078
- module.exports = createHighlighter;
5079
- module.exports.LanguageDefinitions = _LanguageDefinitions;
5080
- }, {}],
5081
- 9: [function (require, module, exports) {
5082
- module.exports = {
5083
- "RenderOnLoad": true,
5084
- "DefaultRenderable": "CodeEditor-Wrap",
5085
- "DefaultDestinationAddress": "#CodeEditor-Container-Div",
5086
- "Templates": [{
5087
- "Hash": "CodeEditor-Container",
5088
- "Template": "<!-- CodeEditor-Container Rendering Soon -->"
5089
- }],
5090
- "Renderables": [{
5091
- "RenderableHash": "CodeEditor-Wrap",
5092
- "TemplateHash": "CodeEditor-Container",
5093
- "DestinationAddress": "#CodeEditor-Container-Div"
5094
- }],
5095
- "TargetElementAddress": "#CodeEditor-Container-Div",
5096
- // Address in AppData or other Pict address space to read/write code content
5097
- "CodeDataAddress": false,
5098
- // The language for syntax highlighting (e.g. "javascript", "html", "css", "json")
5099
- "Language": "javascript",
5100
- // Whether the editor is read-only
5101
- "ReadOnly": false,
5102
- // Tab character: use tab or spaces
5103
- "Tab": "\t",
5104
- // Whether to indent with the same whitespace as the previous line
5105
- "IndentOn": /[({[]$/,
5106
- // Whether to add a closing bracket/paren/brace
5107
- "MoveToNewLine": /^[)}\]]/,
5108
- // Whether to handle the closing character
5109
- "AddClosing": true,
5110
- // Whether to preserve indentation on new lines
5111
- "CatchTab": true,
5112
- // Whether to show line numbers
5113
- "LineNumbers": true,
5114
- // Default code content if no address is provided
5115
- "DefaultCode": "// Enter your code here\n",
5116
- // CSS for the code editor
5117
- "CSS": ".pict-code-editor-wrap\n{\n\tdisplay: flex;\n\tfont-family: 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace;\n\tfont-size: 14px;\n\tline-height: 1.5;\n\tborder: 1px solid #D0D0D0;\n\tborder-radius: 4px;\n\toverflow: auto;\n}\n.pict-code-editor-wrap .pict-code-line-numbers\n{\n\tposition: sticky;\n\tleft: 0;\n\twidth: 40px;\n\tmin-width: 40px;\n\tpadding: 10px 0;\n\ttext-align: right;\n\tbackground: #F5F5F5;\n\tborder-right: 1px solid #D0D0D0;\n\tcolor: #999;\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tuser-select: none;\n\tpointer-events: none;\n\tbox-sizing: border-box;\n\tz-index: 1;\n}\n.pict-code-editor-wrap .pict-code-line-numbers span\n{\n\tdisplay: block;\n\tpadding: 0 8px 0 0;\n}\n.pict-code-editor-wrap .pict-code-editor\n{\n\tmargin: 0;\n\tpadding: 10px 10px 10px 8px;\n\tmin-height: 100px;\n\tflex: 1;\n\tmin-width: 0;\n\toutline: none;\n\ttab-size: 4;\n\twhite-space: pre;\n\toverflow-wrap: normal;\n\tcolor: #383A42;\n\tbackground: #FAFAFA;\n\tcaret-color: #526FFF;\n\tborder-radius: 0 4px 4px 0;\n}\n.pict-code-editor-wrap .pict-code-editor.pict-code-no-line-numbers\n{\n\tpadding-left: 10px;\n\tborder-radius: 4px;\n}\n.pict-code-editor-wrap .pict-code-editor .keyword { color: #A626A4; }\n.pict-code-editor-wrap .pict-code-editor .string { color: #50A14F; }\n.pict-code-editor-wrap .pict-code-editor .number { color: #986801; }\n.pict-code-editor-wrap .pict-code-editor .comment { color: #A0A1A7; font-style: italic; }\n.pict-code-editor-wrap .pict-code-editor .operator { color: #0184BC; }\n.pict-code-editor-wrap .pict-code-editor .punctuation { color: #383A42; }\n.pict-code-editor-wrap .pict-code-editor .function-name { color: #4078F2; }\n.pict-code-editor-wrap .pict-code-editor .property { color: #E45649; }\n.pict-code-editor-wrap .pict-code-editor .tag { color: #E45649; }\n.pict-code-editor-wrap .pict-code-editor .attr-name { color: #986801; }\n.pict-code-editor-wrap .pict-code-editor .attr-value { color: #50A14F; }\n"
5118
- };
5119
- }, {}],
5120
- 10: [function (require, module, exports) {
5121
- const libPictViewClass = require('pict-view');
5122
- const libCreateHighlighter = require('./Pict-Code-Highlighter.js');
5123
- const _DefaultConfiguration = require('./Pict-Section-Code-DefaultConfiguration.js');
5124
- class PictSectionCode extends libPictViewClass {
5125
- constructor(pFable, pOptions, pServiceHash) {
5126
- let tmpOptions = Object.assign({}, _DefaultConfiguration, pOptions);
5127
- super(pFable, tmpOptions, pServiceHash);
5128
- this.initialRenderComplete = false;
5129
-
5130
- // The CodeJar instance
5131
- this.codeJar = null;
5132
-
5133
- // The highlight function (can be overridden)
5134
- this._highlightFunction = null;
5135
-
5136
- // The current language
5137
- this._language = this.options.Language || 'javascript';
5138
- }
5139
- onBeforeInitialize() {
5140
- super.onBeforeInitialize();
5141
- this._codeJarPrototype = null;
5142
- this.targetElement = false;
5143
-
5144
- // Build the default highlight function for the configured language
5145
- this._highlightFunction = libCreateHighlighter(this._language);
5146
- return super.onBeforeInitialize();
5147
- }
5148
-
5149
- /**
5150
- * Connect the CodeJar prototype. If not passed explicitly, try to find it
5151
- * as a global (window.CodeJar) or require it from the npm package.
5152
- *
5153
- * @param {function} [pCodeJarPrototype] - The CodeJar constructor function
5154
- * @returns {boolean|void}
5155
- */
5156
- connectCodeJarPrototype(pCodeJarPrototype) {
5157
- if (typeof pCodeJarPrototype === 'function') {
5158
- this._codeJarPrototype = pCodeJarPrototype;
5159
- return;
5160
- }
5161
-
5162
- // Try to find CodeJar in global scope
5163
- if (typeof window !== 'undefined') {
5164
- if (typeof window.CodeJar === 'function') {
5165
- this.log.trace("PICT-Code Found CodeJar in window.CodeJar.");
5166
- this._codeJarPrototype = window.CodeJar;
5167
- return;
5168
- }
5169
- }
5170
- this.log.error("PICT-Code No CodeJar prototype found. Include codejar via script tag or call connectCodeJarPrototype(CodeJar) explicitly.");
5171
- return false;
5172
- }
5173
- onAfterRender(pRenderable) {
5174
- // Ensure the CSS from all registered views is injected into the DOM
5175
- this.pict.CSSMap.injectCSS();
5176
- if (!this.initialRenderComplete) {
5177
- this.onAfterInitialRender();
5178
- this.initialRenderComplete = true;
5179
- }
5180
- return super.onAfterRender(pRenderable);
5181
- }
5182
- onAfterInitialRender() {
5183
- // Resolve the CodeJar prototype if not already set
5184
- if (!this._codeJarPrototype) {
5185
- this.connectCodeJarPrototype();
5186
- }
5187
- if (!this._codeJarPrototype) {
5188
- this.log.error("PICT-Code Cannot initialize editor; no CodeJar prototype available.");
5189
- return false;
5190
- }
5191
- if (this.codeJar) {
5192
- this.log.error("PICT-Code editor is already initialized!");
5193
- return false;
5194
- }
5195
-
5196
- // Find the target element
5197
- let tmpTargetElementSet = this.services.ContentAssignment.getElement(this.options.TargetElementAddress);
5198
- if (!tmpTargetElementSet || tmpTargetElementSet.length < 1) {
5199
- this.log.error("PICT-Code Could not find target element [".concat(this.options.TargetElementAddress, "]!"));
5200
- this.targetElement = false;
5201
- return false;
5202
- }
5203
- this.targetElement = tmpTargetElementSet[0];
5204
-
5205
- // Build the editor DOM structure
5206
- this._buildEditorDOM();
5207
-
5208
- // Get initial code content
5209
- let tmpCode = this._resolveCodeContent();
5210
-
5211
- // Create the CodeJar options
5212
- let tmpCodeJarOptions = {};
5213
- if (this.options.Tab) {
5214
- tmpCodeJarOptions.tab = this.options.Tab;
5215
- }
5216
- if (this.options.IndentOn) {
5217
- tmpCodeJarOptions.indentOn = this.options.IndentOn;
5218
- }
5219
- if (this.options.MoveToNewLine) {
5220
- tmpCodeJarOptions.moveToNewLine = this.options.MoveToNewLine;
5221
- }
5222
- if (typeof this.options.AddClosing !== 'undefined') {
5223
- tmpCodeJarOptions.addClosing = this.options.AddClosing;
5224
- }
5225
- if (typeof this.options.CatchTab !== 'undefined') {
5226
- tmpCodeJarOptions.catchTab = this.options.CatchTab;
5227
- }
5228
- this.customConfigureEditorOptions(tmpCodeJarOptions);
5229
-
5230
- // Instantiate CodeJar on the editor element
5231
- let tmpEditorElement = this._editorElement;
5232
- this.codeJar = this._codeJarPrototype(tmpEditorElement, this._highlightFunction, tmpCodeJarOptions);
5233
-
5234
- // CodeJar forces white-space:pre-wrap and overflow-wrap:break-word
5235
- // via inline styles, which causes line wrapping that breaks the
5236
- // line-number alignment. Override back to non-wrapping so the
5237
- // wrap container scrolls horizontally instead.
5238
- this._resetEditorWrapStyles();
5239
-
5240
- // Set the initial code
5241
- if (tmpCode) {
5242
- this.codeJar.updateCode(tmpCode);
5243
- }
5244
-
5245
- // Wire up the change handler
5246
- this.codeJar.onUpdate(pCode => {
5247
- this._updateLineNumbers();
5248
- this.onCodeChange(pCode);
5249
- });
5250
-
5251
- // Initial line number render
5252
- this._updateLineNumbers();
5253
-
5254
- // Handle read-only
5255
- if (this.options.ReadOnly) {
5256
- tmpEditorElement.setAttribute('contenteditable', 'false');
5257
- }
5258
- }
5259
-
5260
- /**
5261
- * Build the editor DOM elements inside the target container.
5262
- */
5263
- _buildEditorDOM() {
5264
- // Clear the target
5265
- this.targetElement.innerHTML = '';
5266
-
5267
- // Create wrapper
5268
- let tmpWrap = document.createElement('div');
5269
- tmpWrap.className = 'pict-code-editor-wrap';
5270
-
5271
- // Create line numbers container
5272
- if (this.options.LineNumbers) {
5273
- let tmpLineNumbers = document.createElement('div');
5274
- tmpLineNumbers.className = 'pict-code-line-numbers';
5275
- tmpWrap.appendChild(tmpLineNumbers);
5276
- this._lineNumbersElement = tmpLineNumbers;
5277
- }
5278
-
5279
- // Create the editor element (CodeJar needs a pre or div)
5280
- let tmpEditor = document.createElement('div');
5281
- tmpEditor.className = 'pict-code-editor language-' + this._language;
5282
- if (!this.options.LineNumbers) {
5283
- tmpEditor.className += ' pict-code-no-line-numbers';
5284
- }
5285
- tmpWrap.appendChild(tmpEditor);
5286
- this.targetElement.appendChild(tmpWrap);
5287
- this._editorElement = tmpEditor;
5288
- this._wrapElement = tmpWrap;
5289
- }
5290
-
5291
- /**
5292
- * Update the line numbers display based on current code content.
5293
- */
5294
- _updateLineNumbers() {
5295
- if (!this.options.LineNumbers || !this._lineNumbersElement || !this._editorElement) {
5296
- return;
5297
- }
5298
- let tmpCode = this._editorElement.textContent || '';
5299
- let tmpLineCount = tmpCode.split('\n').length;
5300
- let tmpHTML = '';
5301
- for (let i = 1; i <= tmpLineCount; i++) {
5302
- tmpHTML += "<span>".concat(i, "</span>");
5303
- }
5304
- this._lineNumbersElement.innerHTML = tmpHTML;
5305
- }
5306
-
5307
- /**
5308
- * Reset inline styles that CodeJar sets on the editor element.
5309
- *
5310
- * CodeJar forces white-space:pre-wrap and overflow-wrap:break-word so
5311
- * long lines wrap visually. That breaks line-number alignment because
5312
- * each wrapped visual row is not a logical line. Resetting to pre /
5313
- * normal makes the outer .pict-code-editor-wrap scroll horizontally.
5314
- */
5315
- _resetEditorWrapStyles() {
5316
- if (!this._editorElement) {
5317
- return;
5318
- }
5319
- this._editorElement.style.whiteSpace = 'pre';
5320
- this._editorElement.style.overflowWrap = 'normal';
5321
- }
5322
-
5323
- /**
5324
- * Resolve the initial code content from address or default.
5325
- *
5326
- * @returns {string} The code content
5327
- */
5328
- _resolveCodeContent() {
5329
- if (this.options.CodeDataAddress) {
5330
- const tmpAddressSpace = {
5331
- Fable: this.fable,
5332
- Pict: this.fable,
5333
- AppData: this.AppData,
5334
- Bundle: this.Bundle,
5335
- Options: this.options
5336
- };
5337
- let tmpAddressedData = this.fable.manifest.getValueByHash(tmpAddressSpace, this.options.CodeDataAddress);
5338
- if (typeof tmpAddressedData === 'string') {
5339
- return tmpAddressedData;
5340
- } else {
5341
- this.log.warn("PICT-Code Address [".concat(this.options.CodeDataAddress, "] did not return a string; it was ").concat(typeof tmpAddressedData, "."));
5342
- }
5343
- }
5344
- return this.options.DefaultCode || '';
5345
- }
5346
-
5347
- /**
5348
- * Hook for subclasses to customize CodeJar options before instantiation.
5349
- *
5350
- * @param {object} pOptions - The CodeJar options object to modify
5351
- */
5352
- customConfigureEditorOptions(pOptions) {
5353
- // Override in subclass to tweak options
5354
- }
5355
-
5356
- /**
5357
- * Called when the code content changes. Override in subclasses to handle changes.
5358
- *
5359
- * @param {string} pCode - The new code content
5360
- */
5361
- onCodeChange(pCode) {
5362
- // Write back to data address if configured
5363
- if (this.options.CodeDataAddress) {
5364
- const tmpAddressSpace = {
5365
- Fable: this.fable,
5366
- Pict: this.fable,
5367
- AppData: this.AppData,
5368
- Bundle: this.Bundle,
5369
- Options: this.options
5370
- };
5371
- this.fable.manifest.setValueByHash(tmpAddressSpace, this.options.CodeDataAddress, pCode);
5372
- }
5373
- }
5374
-
5375
- // -- Public API Methods --
5376
-
5377
- /**
5378
- * Get the current code content.
5379
- *
5380
- * @returns {string} The current code
5381
- */
5382
- getCode() {
5383
- if (!this.codeJar) {
5384
- this.log.warn('PICT-Code getCode called before editor initialized.');
5385
- return '';
5386
- }
5387
- return this.codeJar.toString();
5388
- }
5389
-
5390
- /**
5391
- * Set the code content.
5392
- *
5393
- * @param {string} pCode - The code to set
5394
- */
5395
- setCode(pCode) {
5396
- if (!this.codeJar) {
5397
- this.log.warn('PICT-Code setCode called before editor initialized.');
5398
- return;
5399
- }
5400
- this.codeJar.updateCode(pCode);
5401
- this._updateLineNumbers();
5402
- }
5403
-
5404
- /**
5405
- * Change the editor language and re-highlight.
5406
- *
5407
- * @param {string} pLanguage - The language identifier
5408
- */
5409
- setLanguage(pLanguage) {
5410
- this._language = pLanguage;
5411
- this._highlightFunction = libCreateHighlighter(pLanguage);
5412
- if (this._editorElement) {
5413
- // Update the class
5414
- this._editorElement.className = 'pict-code-editor language-' + pLanguage;
5415
- if (!this.options.LineNumbers) {
5416
- this._editorElement.className += ' pict-code-no-line-numbers';
5417
- }
5418
- }
5419
- if (this.codeJar) {
5420
- // Re-create the editor with the new highlight function
5421
- let tmpCode = this.codeJar.toString();
5422
- this.codeJar.destroy();
5423
- this.codeJar = this._codeJarPrototype(this._editorElement, this._highlightFunction, {
5424
- tab: this.options.Tab,
5425
- catchTab: this.options.CatchTab,
5426
- addClosing: this.options.AddClosing
5427
- });
5428
- this._resetEditorWrapStyles();
5429
- this.codeJar.updateCode(tmpCode);
5430
- this.codeJar.onUpdate(pCode => {
5431
- this._updateLineNumbers();
5432
- this.onCodeChange(pCode);
5433
- });
5434
- }
5435
- }
5436
-
5437
- /**
5438
- * Set a custom highlight function to replace the built-in highlighter.
5439
- * Useful for integrating Prism.js, highlight.js, or any other library.
5440
- *
5441
- * @param {function} pHighlightFunction - A function that takes a DOM element and highlights its textContent
5442
- */
5443
- setHighlightFunction(pHighlightFunction) {
5444
- if (typeof pHighlightFunction !== 'function') {
5445
- this.log.error('PICT-Code setHighlightFunction requires a function.');
5446
- return;
5447
- }
5448
- this._highlightFunction = pHighlightFunction;
5449
- if (this.codeJar) {
5450
- let tmpCode = this.codeJar.toString();
5451
- this.codeJar.destroy();
5452
- this.codeJar = this._codeJarPrototype(this._editorElement, this._highlightFunction, {
5453
- tab: this.options.Tab,
5454
- catchTab: this.options.CatchTab,
5455
- addClosing: this.options.AddClosing
5456
- });
5457
- this._resetEditorWrapStyles();
5458
- this.codeJar.updateCode(tmpCode);
5459
- this.codeJar.onUpdate(pCode => {
5460
- this._updateLineNumbers();
5461
- this.onCodeChange(pCode);
5462
- });
5463
- }
5464
- }
5465
-
5466
- /**
5467
- * Set the read-only state of the editor.
5468
- *
5469
- * @param {boolean} pReadOnly - Whether the editor should be read-only
5470
- */
5471
- setReadOnly(pReadOnly) {
5472
- this.options.ReadOnly = pReadOnly;
5473
- if (this._editorElement) {
5474
- this._editorElement.setAttribute('contenteditable', pReadOnly ? 'false' : 'true');
5475
- }
5476
- }
5477
-
5478
- /**
5479
- * Destroy the editor and clean up.
5480
- */
5481
- destroy() {
5482
- if (this.codeJar) {
5483
- this.codeJar.destroy();
5484
- this.codeJar = null;
5485
- }
5486
- }
5487
-
5488
- /**
5489
- * Marshal code content from the data address into the view.
5490
- */
5491
- marshalToView() {
5492
- super.marshalToView();
5493
- if (this.codeJar && this.options.CodeDataAddress) {
5494
- let tmpCode = this._resolveCodeContent();
5495
- if (typeof tmpCode === 'string') {
5496
- this.codeJar.updateCode(tmpCode);
5497
- this._updateLineNumbers();
5498
- }
5499
- }
5500
- }
5501
-
5502
- /**
5503
- * Marshal the current code content back to the data address.
5504
- */
5505
- marshalFromView() {
5506
- super.marshalFromView();
5507
- if (this.codeJar && this.options.CodeDataAddress) {
5508
- this.onCodeChange(this.codeJar.toString());
5509
- }
5510
- }
5511
- }
5512
- module.exports = PictSectionCode;
5513
- module.exports.default_configuration = _DefaultConfiguration;
5514
- module.exports.createHighlighter = libCreateHighlighter;
5515
- }, {
5516
- "./Pict-Code-Highlighter.js": 8,
5517
- "./Pict-Section-Code-DefaultConfiguration.js": 9,
5518
- "pict-view": 15
5519
- }],
5520
- 11: [function (require, module, exports) {
5521
4863
  // The container for all the Pict-Section-Content related code.
5522
4864
 
5523
4865
  // The main content view class
@@ -5526,12 +4868,11 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5526
4868
  // The content provider (markdown parsing, HTML escaping)
5527
4869
  module.exports.PictContentProvider = require('./providers/Pict-Provider-Content.js');
5528
4870
  }, {
5529
- "./providers/Pict-Provider-Content.js": 12,
5530
- "./views/Pict-View-Content.js": 13
4871
+ "./providers/Pict-Provider-Content.js": 9,
4872
+ "./views/Pict-View-Content.js": 10
5531
4873
  }],
5532
- 12: [function (require, module, exports) {
4874
+ 9: [function (require, module, exports) {
5533
4875
  const libPictProvider = require('pict-provider');
5534
- const libCreateHighlighter = require('pict-section-code').createHighlighter;
5535
4876
 
5536
4877
  /**
5537
4878
  * Content Provider for Pict Section Content
@@ -5539,7 +4880,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5539
4880
  * A general-purpose markdown-to-HTML parser with support for:
5540
4881
  * - Headings, paragraphs, lists, blockquotes, horizontal rules
5541
4882
  * - Fenced code blocks with language tags (nested fence support)
5542
- * - Syntax highlighting and line numbers for code blocks (via pict-section-code)
5543
4883
  * - Tables (GFM pipe syntax)
5544
4884
  * - Mermaid diagram blocks
5545
4885
  * - KaTeX math (inline and display)
@@ -5552,55 +4892,14 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5552
4892
  super(pFable, pOptions, pServiceHash);
5553
4893
  }
5554
4894
 
5555
- /**
5556
- * Highlight a code string using pict-section-code's syntax highlighter.
5557
- * Uses a mock element to interface with the highlighter's DOM-based API.
5558
- *
5559
- * @param {string} pCode - The raw code string
5560
- * @param {string} pLanguage - The language identifier (e.g. "javascript", "html")
5561
- * @returns {string} The syntax-highlighted HTML
5562
- */
5563
- highlightCode(pCode, pLanguage) {
5564
- if (!pCode) {
5565
- return '';
5566
- }
5567
- let tmpHighlighter = libCreateHighlighter(pLanguage);
5568
- // Create a mock element to interface with the highlighter
5569
- let tmpMockElement = {
5570
- textContent: pCode,
5571
- innerHTML: ''
5572
- };
5573
- tmpHighlighter(tmpMockElement);
5574
- return tmpMockElement.innerHTML;
5575
- }
5576
-
5577
- /**
5578
- * Generate line number HTML for a code block.
5579
- *
5580
- * @param {string} pCode - The raw code string
5581
- * @returns {string} HTML string with line number spans
5582
- */
5583
- generateLineNumbers(pCode) {
5584
- if (!pCode) {
5585
- return '<span>1</span>';
5586
- }
5587
- let tmpLineCount = pCode.split('\n').length;
5588
- let tmpHTML = '';
5589
- for (let i = 1; i <= tmpLineCount; i++) {
5590
- tmpHTML += '<span>' + i + '</span>';
5591
- }
5592
- return tmpHTML;
5593
- }
5594
-
5595
4895
  /**
5596
4896
  * Parse a markdown string into HTML.
5597
4897
  *
5598
4898
  * @param {string} pMarkdown - The raw markdown text
5599
4899
  * @param {Function} [pLinkResolver] - Optional callback for link resolution: (pHref, pLinkText) => { href, target, rel } or null
5600
- * @param {Function} [pImageResolver] - Optional callback for image URL resolution: (pSrc, pAlt) => resolvedSrc or null
5601
4900
  * @returns {string} The parsed HTML
5602
4901
  */
5603
- parseMarkdown(pMarkdown, pLinkResolver, pImageResolver) {
4902
+ parseMarkdown(pMarkdown, pLinkResolver) {
5604
4903
  if (!pMarkdown) {
5605
4904
  return '';
5606
4905
  }
@@ -5622,7 +4921,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5622
4921
  let fFlushParagraph = () => {
5623
4922
  if (tmpParagraphLines.length > 0) {
5624
4923
  tmpHTML.push('<p>' + tmpParagraphLines.map(pLine => {
5625
- return this.parseInline(pLine, pLinkResolver, pImageResolver);
4924
+ return this.parseInline(pLine, pLinkResolver);
5626
4925
  }).join(' ') + '</p>');
5627
4926
  tmpParagraphLines = [];
5628
4927
  }
@@ -5646,7 +4945,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5646
4945
  tmpInList = false;
5647
4946
  }
5648
4947
  if (tmpInBlockquote) {
5649
- tmpHTML.push('<blockquote>' + this.parseMarkdown(tmpBlockquoteLines.join('\n'), pLinkResolver, pImageResolver) + '</blockquote>');
4948
+ tmpHTML.push('<blockquote>' + this.parseMarkdown(tmpBlockquoteLines.join('\n'), pLinkResolver) + '</blockquote>');
5650
4949
  tmpInBlockquote = false;
5651
4950
  tmpBlockquoteLines = [];
5652
4951
  }
@@ -5671,10 +4970,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5671
4970
  // Mermaid diagrams: output raw content for client-side rendering
5672
4971
  tmpHTML.push('<pre class="mermaid">' + tmpCodeLines.join('\n') + '</pre>');
5673
4972
  } else {
5674
- let tmpCodeText = tmpCodeLines.join('\n');
5675
- let tmpHighlightedCode = this.highlightCode(tmpCodeText, tmpCodeLang);
5676
- let tmpLineNumbersHTML = this.generateLineNumbers(tmpCodeText);
5677
- tmpHTML.push('<div class="pict-content-code-wrap"><div class="pict-content-code-line-numbers">' + tmpLineNumbersHTML + '</div><pre><code class="language-' + this.escapeHTML(tmpCodeLang) + '">' + tmpHighlightedCode + '</code></pre></div>');
4973
+ tmpHTML.push('<pre><code class="language-' + this.escapeHTML(tmpCodeLang) + '">' + this.escapeHTML(tmpCodeLines.join('\n')) + '</code></pre>');
5678
4974
  }
5679
4975
  tmpInCodeBlock = false;
5680
4976
  tmpCodeFenceLength = 0;
@@ -5695,7 +4991,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5695
4991
  tmpInList = false;
5696
4992
  }
5697
4993
  if (tmpInBlockquote) {
5698
- tmpHTML.push('<blockquote>' + this.parseMarkdown(tmpBlockquoteLines.join('\n'), pLinkResolver, pImageResolver) + '</blockquote>');
4994
+ tmpHTML.push('<blockquote>' + this.parseMarkdown(tmpBlockquoteLines.join('\n'), pLinkResolver) + '</blockquote>');
5699
4995
  tmpInBlockquote = false;
5700
4996
  tmpBlockquoteLines = [];
5701
4997
  }
@@ -5727,7 +5023,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5727
5023
  tmpBlockquoteLines.push(tmpLine.replace(/^>\s?/, ''));
5728
5024
  continue;
5729
5025
  } else if (tmpInBlockquote) {
5730
- tmpHTML.push('<blockquote>' + this.parseMarkdown(tmpBlockquoteLines.join('\n'), pLinkResolver, pImageResolver) + '</blockquote>');
5026
+ tmpHTML.push('<blockquote>' + this.parseMarkdown(tmpBlockquoteLines.join('\n'), pLinkResolver) + '</blockquote>');
5731
5027
  tmpInBlockquote = false;
5732
5028
  tmpBlockquoteLines = [];
5733
5029
  }
@@ -5752,7 +5048,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5752
5048
  tmpInList = false;
5753
5049
  }
5754
5050
  let tmpLevel = tmpHeadingMatch[1].length;
5755
- let tmpText = this.parseInline(tmpHeadingMatch[2], pLinkResolver, pImageResolver);
5051
+ let tmpText = this.parseInline(tmpHeadingMatch[2], pLinkResolver);
5756
5052
  let tmpID = tmpHeadingMatch[2].toLowerCase().replace(/[^\w\s-]/g, '').replace(/\s+/g, '-');
5757
5053
  tmpHTML.push('<h' + tmpLevel + ' id="' + tmpID + '">' + tmpText + '</h' + tmpLevel + '>');
5758
5054
  continue;
@@ -5770,7 +5066,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5770
5066
  tmpInList = true;
5771
5067
  tmpListType = 'ul';
5772
5068
  }
5773
- tmpHTML.push('<li>' + this.parseInline(tmpULMatch[2], pLinkResolver, pImageResolver) + '</li>');
5069
+ tmpHTML.push('<li>' + this.parseInline(tmpULMatch[2], pLinkResolver) + '</li>');
5774
5070
  continue;
5775
5071
  }
5776
5072
 
@@ -5786,7 +5082,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5786
5082
  tmpInList = true;
5787
5083
  tmpListType = 'ol';
5788
5084
  }
5789
- tmpHTML.push('<li>' + this.parseInline(tmpOLMatch[2], pLinkResolver, pImageResolver) + '</li>');
5085
+ tmpHTML.push('<li>' + this.parseInline(tmpOLMatch[2], pLinkResolver) + '</li>');
5790
5086
  continue;
5791
5087
  }
5792
5088
 
@@ -5818,7 +5114,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5818
5114
  });
5819
5115
  tmpTableHTML += '<thead><tr>';
5820
5116
  for (let h = 0; h < tmpHeaders.length; h++) {
5821
- tmpTableHTML += '<th>' + this.parseInline(tmpHeaders[h].trim(), pLinkResolver, pImageResolver) + '</th>';
5117
+ tmpTableHTML += '<th>' + this.parseInline(tmpHeaders[h].trim(), pLinkResolver) + '</th>';
5822
5118
  }
5823
5119
  tmpTableHTML += '</tr></thead>';
5824
5120
 
@@ -5834,7 +5130,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5834
5130
  });
5835
5131
  tmpTableHTML += '<tr>';
5836
5132
  for (let c = 0; c < tmpCells.length; c++) {
5837
- tmpTableHTML += '<td>' + this.parseInline(tmpCells[c].trim(), pLinkResolver, pImageResolver) + '</td>';
5133
+ tmpTableHTML += '<td>' + this.parseInline(tmpCells[c].trim(), pLinkResolver) + '</td>';
5838
5134
  }
5839
5135
  tmpTableHTML += '</tr>';
5840
5136
  }
@@ -5856,13 +5152,10 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5856
5152
  tmpHTML.push(tmpListType === 'ul' ? '</ul>' : '</ol>');
5857
5153
  }
5858
5154
  if (tmpInBlockquote) {
5859
- tmpHTML.push('<blockquote>' + this.parseMarkdown(tmpBlockquoteLines.join('\n'), pLinkResolver, pImageResolver) + '</blockquote>');
5155
+ tmpHTML.push('<blockquote>' + this.parseMarkdown(tmpBlockquoteLines.join('\n'), pLinkResolver) + '</blockquote>');
5860
5156
  }
5861
5157
  if (tmpInCodeBlock) {
5862
- let tmpCodeText = tmpCodeLines.join('\n');
5863
- let tmpHighlightedCode = this.highlightCode(tmpCodeText, tmpCodeLang);
5864
- let tmpLineNumbersHTML = this.generateLineNumbers(tmpCodeText);
5865
- tmpHTML.push('<div class="pict-content-code-wrap"><div class="pict-content-code-line-numbers">' + tmpLineNumbersHTML + '</div><pre><code>' + tmpHighlightedCode + '</code></pre></div>');
5158
+ tmpHTML.push('<pre><code>' + this.escapeHTML(tmpCodeLines.join('\n')) + '</code></pre>');
5866
5159
  }
5867
5160
  return tmpHTML.join('\n');
5868
5161
  }
@@ -5872,10 +5165,9 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5872
5165
  *
5873
5166
  * @param {string} pText - The text to parse
5874
5167
  * @param {Function} [pLinkResolver] - Optional callback: (pHref, pLinkText) => { href, target, rel } or null
5875
- * @param {Function} [pImageResolver] - Optional callback: (pSrc, pAlt) => resolvedSrc or null
5876
5168
  * @returns {string} HTML with inline elements
5877
5169
  */
5878
- parseInline(pText, pLinkResolver, pImageResolver) {
5170
+ parseInline(pText, pLinkResolver) {
5879
5171
  if (!pText) {
5880
5172
  return '';
5881
5173
  }
@@ -5896,16 +5188,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5896
5188
  tmpResult = tmpResult.replace(/\$([^\$\s])\$/g, '<span class="pict-content-katex-inline">$1</span>');
5897
5189
 
5898
5190
  // Images
5899
- tmpResult = tmpResult.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, (pMatch, pAlt, pSrc) => {
5900
- let tmpSrc = pSrc;
5901
- if (typeof pImageResolver === 'function') {
5902
- let tmpResolved = pImageResolver(pSrc, pAlt);
5903
- if (tmpResolved) {
5904
- tmpSrc = tmpResolved;
5905
- }
5906
- }
5907
- return '<img src="' + tmpSrc + '" alt="' + pAlt + '">';
5908
- });
5191
+ tmpResult = tmpResult.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '<img src="$2" alt="$1">');
5909
5192
 
5910
5193
  // Links
5911
5194
  tmpResult = tmpResult.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (pMatch, pLinkText, pHref) => {
@@ -5959,17 +5242,16 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5959
5242
  AutoInitializeOrdinal: 0
5960
5243
  };
5961
5244
  }, {
5962
- "pict-provider": 7,
5963
- "pict-section-code": 10
5245
+ "pict-provider": 7
5964
5246
  }],
5965
- 13: [function (require, module, exports) {
5247
+ 10: [function (require, module, exports) {
5966
5248
  const libPictView = require('pict-view');
5967
5249
  const _ViewConfiguration = {
5968
5250
  ViewIdentifier: "Pict-Content",
5969
5251
  DefaultRenderable: "Pict-Content-Display",
5970
5252
  DefaultDestinationAddress: "#Pict-Content-Container",
5971
5253
  AutoRender: false,
5972
- CSS: /*css*/"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.pict-content h1 {\n\t\t\tfont-size: 2em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\tpadding-bottom: 0.3em;\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t.pict-content h2 {\n\t\t\tfont-size: 1.5em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tpadding-bottom: 0.25em;\n\t\t\tmargin-top: 1.5em;\n\t\t}\n\t\t.pict-content h3 {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin-top: 1.25em;\n\t\t}\n\t\t.pict-content h4, .pict-content h5, .pict-content h6 {\n\t\t\tcolor: #5E5549;\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.pict-content p {\n\t\t\tline-height: 1.7;\n\t\t\tcolor: #423D37;\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.pict-content a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.pict-content-code-wrap {\n\t\t\tposition: relative;\n\t\t\tfont-family: 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.5;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow: auto;\n\t\t\tmargin: 1em 0;\n\t\t\tbackground: #3D3229;\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 40px;\n\t\t\tpadding: 1.25em 0;\n\t\t\ttext-align: right;\n\t\t\tbackground: #342A22;\n\t\t\tborder-right: 1px solid #4A3F35;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 13px;\n\t\t\tline-height: 1.5;\n\t\t\tuser-select: none;\n\t\t\tpointer-events: none;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers span {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0 8px 0 0;\n\t\t}\n\t\t.pict-content-code-wrap pre {\n\t\t\tmargin: 0;\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em 1.25em 1.25em 52px;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content-code-wrap pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t\tfont-family: inherit;\n\t\t}\n\t\t.pict-content-code-wrap .keyword { color: #C678DD; }\n\t\t.pict-content-code-wrap .string { color: #98C379; }\n\t\t.pict-content-code-wrap .number { color: #D19A66; }\n\t\t.pict-content-code-wrap .comment { color: #7F848E; font-style: italic; }\n\t\t.pict-content-code-wrap .operator { color: #56B6C2; }\n\t\t.pict-content-code-wrap .punctuation { color: #E8E0D4; }\n\t\t.pict-content-code-wrap .function-name { color: #61AFEF; }\n\t\t.pict-content-code-wrap .property { color: #E06C75; }\n\t\t.pict-content-code-wrap .tag { color: #E06C75; }\n\t\t.pict-content-code-wrap .attr-name { color: #D19A66; }\n\t\t.pict-content-code-wrap .attr-value { color: #98C379; }\n\t\t.pict-content pre {\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: 0.9em;\n\t\t}\n\t\t.pict-content code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t\t.pict-content pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content blockquote {\n\t\t\tborder-left: 4px solid #2E7D74;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: #F7F5F0;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.pict-content blockquote p {\n\t\t\tmargin: 0.25em 0;\n\t\t}\n\t\t.pict-content ul, .pict-content ol {\n\t\t\tpadding-left: 2em;\n\t\t\tline-height: 1.8;\n\t\t}\n\t\t.pict-content li {\n\t\t\tmargin: 0.25em 0;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid #DDD6CA;\n\t\t\tmargin: 2em 0;\n\t\t}\n\t\t.pict-content table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content table th {\n\t\t\tbackground: #F5F0E8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.6em 0.8em;\n\t\t\ttext-align: left;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: #F7F5F0;\n\t\t}\n\t\t.pict-content img {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content pre.mermaid {\n\t\t\tbackground: #fff;\n\t\t\tcolor: #3D3229;\n\t\t\ttext-align: center;\n\t\t\tpadding: 1em;\n\t\t}\n\t\t.pict-content .pict-content-katex-display {\n\t\t\ttext-align: center;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em;\n\t\t\toverflow-x: auto;\n\t\t}\n\t\t.pict-content .pict-content-katex-inline {\n\t\t\tdisplay: inline;\n\t\t}\n\t",
5254
+ CSS: /*css*/"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.pict-content h1 {\n\t\t\tfont-size: 2em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\tpadding-bottom: 0.3em;\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t.pict-content h2 {\n\t\t\tfont-size: 1.5em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tpadding-bottom: 0.25em;\n\t\t\tmargin-top: 1.5em;\n\t\t}\n\t\t.pict-content h3 {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin-top: 1.25em;\n\t\t}\n\t\t.pict-content h4, .pict-content h5, .pict-content h6 {\n\t\t\tcolor: #5E5549;\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.pict-content p {\n\t\t\tline-height: 1.7;\n\t\t\tcolor: #423D37;\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.pict-content a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.pict-content pre {\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: 0.9em;\n\t\t}\n\t\t.pict-content code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t\t.pict-content pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content blockquote {\n\t\t\tborder-left: 4px solid #2E7D74;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: #F7F5F0;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.pict-content blockquote p {\n\t\t\tmargin: 0.25em 0;\n\t\t}\n\t\t.pict-content ul, .pict-content ol {\n\t\t\tpadding-left: 2em;\n\t\t\tline-height: 1.8;\n\t\t}\n\t\t.pict-content li {\n\t\t\tmargin: 0.25em 0;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid #DDD6CA;\n\t\t\tmargin: 2em 0;\n\t\t}\n\t\t.pict-content table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content table th {\n\t\t\tbackground: #F5F0E8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.6em 0.8em;\n\t\t\ttext-align: left;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: #F7F5F0;\n\t\t}\n\t\t.pict-content img {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content pre.mermaid {\n\t\t\tbackground: #fff;\n\t\t\tcolor: #3D3229;\n\t\t\ttext-align: center;\n\t\t\tpadding: 1em;\n\t\t}\n\t\t.pict-content .pict-content-katex-display {\n\t\t\ttext-align: center;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em;\n\t\t\toverflow-x: auto;\n\t\t}\n\t\t.pict-content .pict-content-katex-inline {\n\t\t\tdisplay: inline;\n\t\t}\n\t",
5973
5255
  Templates: [{
5974
5256
  Hash: "Pict-Content-Template",
5975
5257
  Template: /*html*/"\n<div class=\"pict-content\" id=\"Pict-Content-Body\">\n\t<div class=\"pict-content-loading\">Loading content...</div>\n</div>\n"
@@ -6098,9 +5380,9 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
6098
5380
  module.exports = PictContentView;
6099
5381
  module.exports.default_configuration = _ViewConfiguration;
6100
5382
  }, {
6101
- "pict-view": 15
5383
+ "pict-view": 12
6102
5384
  }],
6103
- 14: [function (require, module, exports) {
5385
+ 11: [function (require, module, exports) {
6104
5386
  module.exports = {
6105
5387
  "name": "pict-view",
6106
5388
  "version": "1.0.67",
@@ -6154,7 +5436,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
6154
5436
  }
6155
5437
  };
6156
5438
  }, {}],
6157
- 15: [function (require, module, exports) {
5439
+ 12: [function (require, module, exports) {
6158
5440
  const libFableServiceBase = require('fable-serviceproviderbase');
6159
5441
  const libPackage = require('../package.json');
6160
5442
  const defaultPictViewSettings = {
@@ -7318,10 +6600,10 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
7318
6600
  }
7319
6601
  module.exports = PictView;
7320
6602
  }, {
7321
- "../package.json": 14,
6603
+ "../package.json": 11,
7322
6604
  "fable-serviceproviderbase": 2
7323
6605
  }],
7324
- 16: [function (require, module, exports) {
6606
+ 13: [function (require, module, exports) {
7325
6607
  module.exports = {
7326
6608
  "Name": "Pict Docuserve",
7327
6609
  "Hash": "Docuserve",
@@ -7334,7 +6616,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
7334
6616
  }
7335
6617
  };
7336
6618
  }, {}],
7337
- 17: [function (require, module, exports) {
6619
+ 14: [function (require, module, exports) {
7338
6620
  const libPictApplication = require('pict-application');
7339
6621
 
7340
6622
  // Provider
@@ -7599,17 +6881,17 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
7599
6881
  module.exports = DocuserveApplication;
7600
6882
  module.exports.default_configuration = require('./Pict-Application-Docuserve-Configuration.json');
7601
6883
  }, {
7602
- "./Pict-Application-Docuserve-Configuration.json": 16,
7603
- "./providers/Pict-Provider-Docuserve-Documentation.js": 18,
7604
- "./views/PictView-Docuserve-Content.js": 19,
7605
- "./views/PictView-Docuserve-Layout.js": 20,
7606
- "./views/PictView-Docuserve-Search.js": 21,
7607
- "./views/PictView-Docuserve-Sidebar.js": 22,
7608
- "./views/PictView-Docuserve-Splash.js": 23,
7609
- "./views/PictView-Docuserve-TopBar.js": 24,
6884
+ "./Pict-Application-Docuserve-Configuration.json": 13,
6885
+ "./providers/Pict-Provider-Docuserve-Documentation.js": 15,
6886
+ "./views/PictView-Docuserve-Content.js": 16,
6887
+ "./views/PictView-Docuserve-Layout.js": 17,
6888
+ "./views/PictView-Docuserve-Search.js": 18,
6889
+ "./views/PictView-Docuserve-Sidebar.js": 19,
6890
+ "./views/PictView-Docuserve-Splash.js": 20,
6891
+ "./views/PictView-Docuserve-TopBar.js": 21,
7610
6892
  "pict-application": 5
7611
6893
  }],
7612
- 18: [function (require, module, exports) {
6894
+ 15: [function (require, module, exports) {
7613
6895
  const libPictProvider = require('pict-provider');
7614
6896
  const libLunr = require('lunr');
7615
6897
  const libPictSectionContent = require('pict-section-content');
@@ -8746,9 +8028,9 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
8746
8028
  }, {
8747
8029
  "lunr": 3,
8748
8030
  "pict-provider": 7,
8749
- "pict-section-content": 11
8031
+ "pict-section-content": 8
8750
8032
  }],
8751
- 19: [function (require, module, exports) {
8033
+ 16: [function (require, module, exports) {
8752
8034
  const libPictContentView = require('pict-section-content');
8753
8035
  const _ViewConfiguration = {
8754
8036
  ViewIdentifier: "Docuserve-Content",
@@ -8760,7 +8042,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
8760
8042
  // the child provides its own. We cannot read the parent's
8761
8043
  // default_configuration.CSS at module scope because browserify's
8762
8044
  // module initialisation order does not guarantee it is populated yet.
8763
- CSS: /*css*/"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.pict-content h1 {\n\t\t\tfont-size: 2em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\tpadding-bottom: 0.3em;\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t.pict-content h2 {\n\t\t\tfont-size: 1.5em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tpadding-bottom: 0.25em;\n\t\t\tmargin-top: 1.5em;\n\t\t}\n\t\t.pict-content h3 {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin-top: 1.25em;\n\t\t}\n\t\t.pict-content h4, .pict-content h5, .pict-content h6 {\n\t\t\tcolor: #5E5549;\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.pict-content p {\n\t\t\tline-height: 1.7;\n\t\t\tcolor: #423D37;\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.pict-content a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.pict-content pre {\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: 0.9em;\n\t\t}\n\t\t.pict-content code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t\t.pict-content pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content blockquote {\n\t\t\tborder-left: 4px solid #2E7D74;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: #F7F5F0;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.pict-content blockquote p {\n\t\t\tmargin: 0.25em 0;\n\t\t}\n\t\t.pict-content ul, .pict-content ol {\n\t\t\tpadding-left: 2em;\n\t\t\tline-height: 1.8;\n\t\t}\n\t\t.pict-content li {\n\t\t\tmargin: 0.25em 0;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid #DDD6CA;\n\t\t\tmargin: 2em 0;\n\t\t}\n\t\t.pict-content table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content table th {\n\t\t\tbackground: #F5F0E8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.6em 0.8em;\n\t\t\ttext-align: left;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: #F7F5F0;\n\t\t}\n\t\t.pict-content img {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content pre.mermaid {\n\t\t\tbackground: #fff;\n\t\t\tcolor: #3D3229;\n\t\t\ttext-align: center;\n\t\t\tpadding: 1em;\n\t\t}\n\t\t.pict-content .pict-content-katex-display {\n\t\t\ttext-align: center;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em;\n\t\t\toverflow-x: auto;\n\t\t}\n\t\t.pict-content .pict-content-katex-inline {\n\t\t\tdisplay: inline;\n\t\t}\n\t\t.docuserve-module-external-link {\n\t\t\tpadding: 0.5em 0;\n\t\t\tmargin-bottom: 0.5em;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tfont-size: 0.85em;\n\t\t\ttext-align: right;\n\t\t}\n\t\t.docuserve-module-external-link a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.docuserve-module-external-link a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.docuserve-not-found {\n\t\t\ttext-align: center;\n\t\t\tpadding: 3em 1em;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.docuserve-not-found h2 {\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1.5em;\n\t\t\tborder-bottom: none;\n\t\t}\n\t\t.docuserve-not-found code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t",
8045
+ CSS: /*css*/"\n\t\t.pict-content {\n\t\t\tpadding: 2em 3em;\n\t\t\tmax-width: 900px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.pict-content-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 200px;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1em;\n\t\t}\n\t\t.pict-content h1 {\n\t\t\tfont-size: 2em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\tpadding-bottom: 0.3em;\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t.pict-content h2 {\n\t\t\tfont-size: 1.5em;\n\t\t\tcolor: #3D3229;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tpadding-bottom: 0.25em;\n\t\t\tmargin-top: 1.5em;\n\t\t}\n\t\t.pict-content h3 {\n\t\t\tfont-size: 1.25em;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin-top: 1.25em;\n\t\t}\n\t\t.pict-content h4, .pict-content h5, .pict-content h6 {\n\t\t\tcolor: #5E5549;\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\t.pict-content p {\n\t\t\tline-height: 1.7;\n\t\t\tcolor: #423D37;\n\t\t\tmargin: 0.75em 0;\n\t\t}\n\t\t.pict-content a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.pict-content a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.pict-content pre {\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: 0.9em;\n\t\t}\n\t\t.pict-content code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t\t.pict-content pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content-code-wrap {\n\t\t\tposition: relative;\n\t\t\tfont-family: 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.5;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow: auto;\n\t\t\tmargin: 1em 0;\n\t\t\tbackground: #3D3229;\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 40px;\n\t\t\tpadding: 1.25em 0;\n\t\t\ttext-align: right;\n\t\t\tbackground: #342A22;\n\t\t\tborder-right: 1px solid #4A3F35;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 13px;\n\t\t\tline-height: 1.5;\n\t\t\tuser-select: none;\n\t\t\tpointer-events: none;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\t.pict-content-code-wrap .pict-content-code-line-numbers span {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0 8px 0 0;\n\t\t}\n\t\t.pict-content-code-wrap pre {\n\t\t\tmargin: 0;\n\t\t\tbackground: #3D3229;\n\t\t\tcolor: #E8E0D4;\n\t\t\tpadding: 1.25em 1.25em 1.25em 52px;\n\t\t\tborder-radius: 6px;\n\t\t\toverflow-x: auto;\n\t\t\tline-height: 1.5;\n\t\t\tfont-size: inherit;\n\t\t}\n\t\t.pict-content-code-wrap pre code {\n\t\t\tbackground: none;\n\t\t\tpadding: 0;\n\t\t\tcolor: inherit;\n\t\t\tfont-size: inherit;\n\t\t\tfont-family: inherit;\n\t\t}\n\t\t.pict-content-code-wrap .keyword { color: #C678DD; }\n\t\t.pict-content-code-wrap .string { color: #98C379; }\n\t\t.pict-content-code-wrap .number { color: #D19A66; }\n\t\t.pict-content-code-wrap .comment { color: #7F848E; font-style: italic; }\n\t\t.pict-content-code-wrap .operator { color: #56B6C2; }\n\t\t.pict-content-code-wrap .punctuation { color: #E8E0D4; }\n\t\t.pict-content-code-wrap .function-name { color: #61AFEF; }\n\t\t.pict-content-code-wrap .property { color: #E06C75; }\n\t\t.pict-content-code-wrap .tag { color: #E06C75; }\n\t\t.pict-content-code-wrap .attr-name { color: #D19A66; }\n\t\t.pict-content-code-wrap .attr-value { color: #98C379; }\n\t\t.pict-content blockquote {\n\t\t\tborder-left: 4px solid #2E7D74;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em 1em;\n\t\t\tbackground: #F7F5F0;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.pict-content blockquote p {\n\t\t\tmargin: 0.25em 0;\n\t\t}\n\t\t.pict-content ul, .pict-content ol {\n\t\t\tpadding-left: 2em;\n\t\t\tline-height: 1.8;\n\t\t}\n\t\t.pict-content li {\n\t\t\tmargin: 0.25em 0;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content hr {\n\t\t\tborder: none;\n\t\t\tborder-top: 1px solid #DDD6CA;\n\t\t\tmargin: 2em 0;\n\t\t}\n\t\t.pict-content table {\n\t\t\twidth: 100%;\n\t\t\tborder-collapse: collapse;\n\t\t\tmargin: 1em 0;\n\t\t}\n\t\t.pict-content table th {\n\t\t\tbackground: #F5F0E8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.6em 0.8em;\n\t\t\ttext-align: left;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.pict-content table td {\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tpadding: 0.5em 0.8em;\n\t\t\tcolor: #423D37;\n\t\t}\n\t\t.pict-content table tr:nth-child(even) {\n\t\t\tbackground: #F7F5F0;\n\t\t}\n\t\t.pict-content img {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t\t.pict-content pre.mermaid {\n\t\t\tbackground: #fff;\n\t\t\tcolor: #3D3229;\n\t\t\ttext-align: center;\n\t\t\tpadding: 1em;\n\t\t}\n\t\t.pict-content .pict-content-katex-display {\n\t\t\ttext-align: center;\n\t\t\tmargin: 1em 0;\n\t\t\tpadding: 0.5em;\n\t\t\toverflow-x: auto;\n\t\t}\n\t\t.pict-content .pict-content-katex-inline {\n\t\t\tdisplay: inline;\n\t\t}\n\t\t.docuserve-module-external-link {\n\t\t\tpadding: 0.5em 0;\n\t\t\tmargin-bottom: 0.5em;\n\t\t\tborder-bottom: 1px solid #EAE3D8;\n\t\t\tfont-size: 0.85em;\n\t\t\ttext-align: right;\n\t\t}\n\t\t.docuserve-module-external-link a {\n\t\t\tcolor: #2E7D74;\n\t\t\ttext-decoration: none;\n\t\t}\n\t\t.docuserve-module-external-link a:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\t.docuserve-not-found {\n\t\t\ttext-align: center;\n\t\t\tpadding: 3em 1em;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.docuserve-not-found h2 {\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 1.5em;\n\t\t\tborder-bottom: none;\n\t\t}\n\t\t.docuserve-not-found code {\n\t\t\tbackground: #F0ECE4;\n\t\t\tpadding: 0.15em 0.4em;\n\t\t\tborder-radius: 3px;\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: #9E6B47;\n\t\t}\n\t",
8764
8046
  Templates: [{
8765
8047
  Hash: "Docuserve-Content-Template",
8766
8048
  Template: /*html*/"\n<div class=\"pict-content\" id=\"Docuserve-Content-Body\">\n\t<div class=\"pict-content-loading\">Loading documentation...</div>\n</div>\n"
@@ -8811,9 +8093,9 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
8811
8093
  module.exports = DocuserveContentView;
8812
8094
  module.exports.default_configuration = _ViewConfiguration;
8813
8095
  }, {
8814
- "pict-section-content": 11
8096
+ "pict-section-content": 8
8815
8097
  }],
8816
- 20: [function (require, module, exports) {
8098
+ 17: [function (require, module, exports) {
8817
8099
  const libPictView = require('pict-view');
8818
8100
  const _ViewConfiguration = {
8819
8101
  ViewIdentifier: "Docuserve-Layout",
@@ -8866,9 +8148,9 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
8866
8148
  module.exports = DocuserveLayoutView;
8867
8149
  module.exports.default_configuration = _ViewConfiguration;
8868
8150
  }, {
8869
- "pict-view": 15
8151
+ "pict-view": 12
8870
8152
  }],
8871
- 21: [function (require, module, exports) {
8153
+ 18: [function (require, module, exports) {
8872
8154
  const libPictView = require('pict-view');
8873
8155
  const _ViewConfiguration = {
8874
8156
  ViewIdentifier: "Docuserve-Search",
@@ -8996,9 +8278,9 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
8996
8278
  module.exports = DocuserveSearchView;
8997
8279
  module.exports.default_configuration = _ViewConfiguration;
8998
8280
  }, {
8999
- "pict-view": 15
8281
+ "pict-view": 12
9000
8282
  }],
9001
- 22: [function (require, module, exports) {
8283
+ 19: [function (require, module, exports) {
9002
8284
  const libPictView = require('pict-view');
9003
8285
  const _ViewConfiguration = {
9004
8286
  ViewIdentifier: "Docuserve-Sidebar",
@@ -9219,9 +8501,9 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
9219
8501
  module.exports = DocusserveSidebarView;
9220
8502
  module.exports.default_configuration = _ViewConfiguration;
9221
8503
  }, {
9222
- "pict-view": 15
8504
+ "pict-view": 12
9223
8505
  }],
9224
- 23: [function (require, module, exports) {
8506
+ 20: [function (require, module, exports) {
9225
8507
  const libPictView = require('pict-view');
9226
8508
  const _ViewConfiguration = {
9227
8509
  ViewIdentifier: "Docuserve-Splash",
@@ -9373,9 +8655,9 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
9373
8655
  module.exports = DocusserveSplashView;
9374
8656
  module.exports.default_configuration = _ViewConfiguration;
9375
8657
  }, {
9376
- "pict-view": 15
8658
+ "pict-view": 12
9377
8659
  }],
9378
- 24: [function (require, module, exports) {
8660
+ 21: [function (require, module, exports) {
9379
8661
  const libPictView = require('pict-view');
9380
8662
  const _ViewConfiguration = {
9381
8663
  ViewIdentifier: "Docuserve-TopBar",
@@ -9476,8 +8758,8 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
9476
8758
  module.exports = DocuserveTopBarView;
9477
8759
  module.exports.default_configuration = _ViewConfiguration;
9478
8760
  }, {
9479
- "pict-view": 15
8761
+ "pict-view": 12
9480
8762
  }]
9481
- }, {}, [17])(17);
8763
+ }, {}, [14])(14);
9482
8764
  });
9483
8765
  //# sourceMappingURL=pict-docuserve.js.map