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.
- package/dist/pict-docuserve.js +51 -769
- package/dist/pict-docuserve.js.map +1 -1
- package/dist/pict-docuserve.min.js +12 -12
- package/dist/pict-docuserve.min.js.map +1 -1
- package/package.json +1 -1
- package/source/views/PictView-Docuserve-Content.js +58 -0
- package/dist/indoctrinate_content_staging/Indoctrinate-Catalog-AppData.json +0 -6031
- package/dist/js/pict.min.js +0 -12
- package/dist/js/pict.min.js.map +0 -1
package/dist/pict-docuserve.js
CHANGED
|
@@ -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, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
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":
|
|
5530
|
-
"./views/Pict-View-Content.js":
|
|
4871
|
+
"./providers/Pict-Provider-Content.js": 9,
|
|
4872
|
+
"./views/Pict-View-Content.js": 10
|
|
5531
4873
|
}],
|
|
5532
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
5155
|
+
tmpHTML.push('<blockquote>' + this.parseMarkdown(tmpBlockquoteLines.join('\n'), pLinkResolver) + '</blockquote>');
|
|
5860
5156
|
}
|
|
5861
5157
|
if (tmpInCodeBlock) {
|
|
5862
|
-
|
|
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
|
|
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,
|
|
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
|
-
|
|
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
|
|
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":
|
|
5383
|
+
"pict-view": 12
|
|
6102
5384
|
}],
|
|
6103
|
-
|
|
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
|
-
|
|
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":
|
|
6603
|
+
"../package.json": 11,
|
|
7322
6604
|
"fable-serviceproviderbase": 2
|
|
7323
6605
|
}],
|
|
7324
|
-
|
|
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
|
-
|
|
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":
|
|
7603
|
-
"./providers/Pict-Provider-Docuserve-Documentation.js":
|
|
7604
|
-
"./views/PictView-Docuserve-Content.js":
|
|
7605
|
-
"./views/PictView-Docuserve-Layout.js":
|
|
7606
|
-
"./views/PictView-Docuserve-Search.js":
|
|
7607
|
-
"./views/PictView-Docuserve-Sidebar.js":
|
|
7608
|
-
"./views/PictView-Docuserve-Splash.js":
|
|
7609
|
-
"./views/PictView-Docuserve-TopBar.js":
|
|
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
|
-
|
|
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":
|
|
8031
|
+
"pict-section-content": 8
|
|
8750
8032
|
}],
|
|
8751
|
-
|
|
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":
|
|
8096
|
+
"pict-section-content": 8
|
|
8815
8097
|
}],
|
|
8816
|
-
|
|
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":
|
|
8151
|
+
"pict-view": 12
|
|
8870
8152
|
}],
|
|
8871
|
-
|
|
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":
|
|
8281
|
+
"pict-view": 12
|
|
9000
8282
|
}],
|
|
9001
|
-
|
|
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":
|
|
8504
|
+
"pict-view": 12
|
|
9223
8505
|
}],
|
|
9224
|
-
|
|
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":
|
|
8658
|
+
"pict-view": 12
|
|
9377
8659
|
}],
|
|
9378
|
-
|
|
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":
|
|
8761
|
+
"pict-view": 12
|
|
9480
8762
|
}]
|
|
9481
|
-
}, {}, [
|
|
8763
|
+
}, {}, [14])(14);
|
|
9482
8764
|
});
|
|
9483
8765
|
//# sourceMappingURL=pict-docuserve.js.map
|