retold-content-system 1.0.14 → 1.0.15
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/package.json +1 -1
- package/source/views/PictView-Editor-Layout.js +18 -3
- package/web-application/retold-content-system.compatible.js +5 -4
- package/web-application/retold-content-system.compatible.js.map +1 -1
- package/web-application/retold-content-system.compatible.min.js +1 -1
- package/web-application/retold-content-system.compatible.min.js.map +1 -1
- package/web-application/retold-content-system.js +5 -4
- package/web-application/retold-content-system.js.map +1 -1
- package/web-application/retold-content-system.min.js +4 -4
- package/web-application/retold-content-system.min.js.map +1 -1
package/package.json
CHANGED
|
@@ -759,12 +759,15 @@ const _ViewConfiguration =
|
|
|
759
759
|
onclick="{~P~}.views['ContentEditor-Layout'].switchSidebarTab('reference')">Reference</button>
|
|
760
760
|
<button class="content-editor-sidebar-tab" id="ContentEditor-SidebarTab-Topics"
|
|
761
761
|
onclick="{~P~}.views['ContentEditor-Layout'].switchSidebarTab('topics')">Topics</button>
|
|
762
|
+
<button class="content-editor-sidebar-tab" id="ContentEditor-SidebarTab-Vocabulary"
|
|
763
|
+
onclick="{~P~}.views['ContentEditor-Layout'].switchSidebarTab('vocabulary')">Vocab</button>
|
|
762
764
|
<button class="content-editor-sidebar-addfile" title="New file"
|
|
763
765
|
onclick="{~P~}.PictApplication.promptNewFile()">+</button>
|
|
764
766
|
</div>
|
|
765
767
|
<div id="ContentEditor-Sidebar-Container" class="content-editor-sidebar-pane"></div>
|
|
766
768
|
<div id="ContentEditor-SidebarReference-Container" class="content-editor-sidebar-pane" style="display:none"></div>
|
|
767
769
|
<div id="ContentEditor-SidebarTopics-Container" class="content-editor-sidebar-pane" style="display:none"></div>
|
|
770
|
+
<div id="ContentEditor-Vocabulary-Container" class="content-editor-sidebar-pane" style="display:none"></div>
|
|
768
771
|
</div>
|
|
769
772
|
<div class="content-editor-resize-handle" id="ContentEditor-ResizeHandle"></div>
|
|
770
773
|
<div class="content-editor-sidebar-toggle" id="ContentEditor-SidebarToggle">◀</div>
|
|
@@ -1015,14 +1018,16 @@ class ContentEditorLayoutView extends libPictView
|
|
|
1015
1018
|
{
|
|
1016
1019
|
files: document.getElementById('ContentEditor-Sidebar-Container'),
|
|
1017
1020
|
reference: document.getElementById('ContentEditor-SidebarReference-Container'),
|
|
1018
|
-
topics: document.getElementById('ContentEditor-SidebarTopics-Container')
|
|
1021
|
+
topics: document.getElementById('ContentEditor-SidebarTopics-Container'),
|
|
1022
|
+
vocabulary: document.getElementById('ContentEditor-Vocabulary-Container')
|
|
1019
1023
|
};
|
|
1020
1024
|
|
|
1021
1025
|
let tmpTabs =
|
|
1022
1026
|
{
|
|
1023
1027
|
files: document.getElementById('ContentEditor-SidebarTab-Files'),
|
|
1024
1028
|
reference: document.getElementById('ContentEditor-SidebarTab-Reference'),
|
|
1025
|
-
topics: document.getElementById('ContentEditor-SidebarTab-Topics')
|
|
1029
|
+
topics: document.getElementById('ContentEditor-SidebarTab-Topics'),
|
|
1030
|
+
vocabulary: document.getElementById('ContentEditor-SidebarTab-Vocabulary')
|
|
1026
1031
|
};
|
|
1027
1032
|
|
|
1028
1033
|
// Hide all panes and deactivate all tabs
|
|
@@ -1040,7 +1045,7 @@ class ContentEditorLayoutView extends libPictView
|
|
|
1040
1045
|
let tmpWrap = document.getElementById('ContentEditor-SidebarWrap');
|
|
1041
1046
|
if (tmpWrap)
|
|
1042
1047
|
{
|
|
1043
|
-
if (pTab === 'reference' || pTab === 'topics')
|
|
1048
|
+
if (pTab === 'reference' || pTab === 'topics' || pTab === 'vocabulary')
|
|
1044
1049
|
{
|
|
1045
1050
|
tmpWrap.classList.add('sidebar-expanded-pane');
|
|
1046
1051
|
}
|
|
@@ -1069,6 +1074,16 @@ class ContentEditorLayoutView extends libPictView
|
|
|
1069
1074
|
tmpTopicsView.render();
|
|
1070
1075
|
}
|
|
1071
1076
|
}
|
|
1077
|
+
|
|
1078
|
+
// Lazy-render the Vocabulary view on first switch
|
|
1079
|
+
if (pTab === 'vocabulary')
|
|
1080
|
+
{
|
|
1081
|
+
let tmpVocabView = this.pict.views['ContentEditor-Vocabulary'];
|
|
1082
|
+
if (tmpVocabView)
|
|
1083
|
+
{
|
|
1084
|
+
tmpVocabView.refreshTermList();
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1072
1087
|
}
|
|
1073
1088
|
|
|
1074
1089
|
/**
|
|
@@ -4746,7 +4746,7 @@ if(this.pict.PictApplication){this.pict.PictApplication.markDirty();this.pict.Pi
|
|
|
4746
4746
|
*
|
|
4747
4747
|
* @param {string} pExtension - The file extension (without dot)
|
|
4748
4748
|
* @returns {string} The highlight.js language identifier
|
|
4749
|
-
*/}],[{key:"getLanguageForExtension",value:function getLanguageForExtension(pExtension){if(!pExtension){return'plaintext';}var tmpExt=pExtension.toLowerCase();return _ExtensionLanguageMap[tmpExt]||'plaintext';}}]);}(libPictSectionCode);module.exports=ContentEditorCodeEditorView;module.exports.default_configuration=_ViewConfiguration;module.exports.ExtensionLanguageMap=_ExtensionLanguageMap;},{"pict-section-code":58}],108:[function(require,module,exports){var libPictView=require('pict-view');var _ViewConfiguration={ViewIdentifier:"ContentEditor-Layout",DefaultRenderable:"ContentEditor-Layout-Shell",DefaultDestinationAddress:"#ContentEditor-Application-Container",AutoRender:false,CSS:/*css*/"\n\t\t#ContentEditor-Application-Container\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\theight: 100vh;\n\t\t\tbackground: #F5F3EE;\n\t\t}\n\t\t#ContentEditor-TopBar-Container\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t}\n\t\t.content-editor-body\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex: 1;\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t/* Sidebar wrapper holds the sidebar content + collapse toggle */\n\t\t.content-editor-sidebar-wrap\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex-shrink: 0;\n\t\t\tposition: relative;\n\t\t\ttransition: width 0.2s ease;\n\t\t}\n\t\t/* Inner wrapper: vertical flex for tab bar + panes */\n\t\t.content-editor-sidebar-inner\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tflex: 1;\n\t\t\tmin-width: 0;\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t/* Sidebar tab bar */\n\t\t.content-editor-sidebar-tabs\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex-shrink: 0;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\tbackground: #F5F0EA;\n\t\t}\n\t\t.content-editor-sidebar-tab\n\t\t{\n\t\t\tflex: 1;\n\t\t\tpadding: 7px 0;\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tfont-size: 0.78rem;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #8A7F72;\n\t\t\tcursor: pointer;\n\t\t\tborder-bottom: 2px solid transparent;\n\t\t\ttransition: color 0.15s, border-color 0.15s;\n\t\t}\n\t\t.content-editor-sidebar-tab:hover\n\t\t{\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.content-editor-sidebar-tab.active\n\t\t{\n\t\t\tcolor: #2E7D74;\n\t\t\tborder-bottom-color: #2E7D74;\n\t\t}\n\t\t.content-editor-sidebar-addfile\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\twidth: 30px;\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tfont-size: 1.1rem;\n\t\t\tfont-weight: 400;\n\t\t\tcolor: #8A7F72;\n\t\t\tcursor: pointer;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tborder-bottom: 2px solid transparent;\n\t\t\ttransition: color 0.15s, background 0.15s;\n\t\t}\n\t\t.content-editor-sidebar-addfile:hover\n\t\t{\n\t\t\tcolor: #2E7D74;\n\t\t\tbackground: #EDE9E3;\n\t\t}\n\t\t/* Sidebar panes */\n\t\t.content-editor-sidebar-pane\n\t\t{\n\t\t\tflex: 1;\n\t\t\toverflow-y: auto;\n\t\t\toverflow-x: hidden;\n\t\t\tmin-width: 0;\n\t\t\tmin-height: 0;\n\t\t}\n\t\t#ContentEditor-Sidebar-Container\n\t\t{\n\t\t\tbackground: #FAF8F4;\n\t\t}\n\t\t/* Collapsed state */\n\t\t.content-editor-sidebar-wrap.collapsed\n\t\t{\n\t\t\twidth: 0 !important;\n\t\t}\n\t\t.content-editor-sidebar-wrap.collapsed .content-editor-sidebar-inner\n\t\t{\n\t\t\tvisibility: hidden;\n\t\t}\n\t\t.content-editor-sidebar-wrap.collapsed .content-editor-resize-handle\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t/* Collapse / expand toggle */\n\t\t.content-editor-sidebar-toggle\n\t\t{\n\t\t\tposition: absolute;\n\t\t\ttop: 8px;\n\t\t\tright: -20px;\n\t\t\twidth: 20px;\n\t\t\theight: 28px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tbackground: #FAF8F4;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-left: none;\n\t\t\tborder-radius: 0 4px 4px 0;\n\t\t\tcursor: pointer;\n\t\t\tz-index: 10;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 11px;\n\t\t\tline-height: 1;\n\t\t\ttransition: color 0.15s;\n\t\t}\n\t\t.content-editor-sidebar-toggle:hover\n\t\t{\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.content-editor-sidebar-wrap.collapsed .content-editor-sidebar-toggle\n\t\t{\n\t\t\tright: -20px;\n\t\t}\n\t\t/* Resize handle */\n\t\t.content-editor-resize-handle\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\twidth: 5px;\n\t\t\tcursor: col-resize;\n\t\t\tbackground: transparent;\n\t\t\tborder-right: 1px solid #DDD6CA;\n\t\t\ttransition: background 0.15s;\n\t\t}\n\t\t.content-editor-resize-handle:hover,\n\t\t.content-editor-resize-handle.dragging\n\t\t{\n\t\t\tbackground: #2E7D74;\n\t\t\tborder-right-color: #2E7D74;\n\t\t}\n\t\t/* File browser layout overrides for sidebar use */\n\t\t#ContentEditor-Sidebar-Container .pict-filebrowser\n\t\t{\n\t\t\tborder: none;\n\t\t\tborder-radius: 0;\n\t\t\tbackground: transparent;\n\t\t}\n\t\t#ContentEditor-Sidebar-Container .pict-filebrowser-browse-pane\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t#ContentEditor-Sidebar-Container .pict-filebrowser-view-pane\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t/* Hide size/date columns \u2014 the sidebar is too narrow for them */\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-col-size,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-col-modified,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-size,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-modified\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t/* Hide the column header bar in sidebar mode */\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-header\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t/* Breadcrumb bar: flex wrapper with create-folder button */\n\t\t.pict-fb-breadcrumb-bar\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tbackground: #F5F0E8;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t}\n\t\t.pict-fb-breadcrumb-bar .pict-fb-breadcrumb\n\t\t{\n\t\t\tflex: 1;\n\t\t\tborder-bottom: none;\n\t\t}\n\t\t.pict-fb-breadcrumb-addfolder\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\tbackground: transparent;\n\t\t\tborder: none;\n\t\t\tfont-size: 1.1rem;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #8A7F72;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 4px 10px;\n\t\t\tline-height: 1;\n\t\t\tborder-radius: 4px;\n\t\t\tmargin-right: 4px;\n\t\t}\n\t\t.pict-fb-breadcrumb-addfolder:hover\n\t\t{\n\t\t\tcolor: #2E7D74;\n\t\t\tbackground: #EAE3D8;\n\t\t}\n\t\t#ContentEditor-Editor-Container\n\t\t{\n\t\t\tflex: 1;\n\t\t\toverflow-y: auto;\n\t\t\tpadding: 44px 16px 16px 16px;\n\t\t}\n\t\t/* Code editor: fill the container and remove outer border */\n\t\t#ContentEditor-Editor-Container .pict-code-editor-wrap\n\t\t{\n\t\t\theight: calc(100% - 4px);\n\t\t\tborder: none;\n\t\t\tborder-radius: 0;\n\t\t}\n\t\t#ContentEditor-Editor-Container .pict-code-editor\n\t\t{\n\t\t\tmin-height: unset;\n\t\t\theight: 100%;\n\t\t\tbackground: #FAFAFA;\n\t\t}\n\t\t/* Binary file preview */\n\t\t.binary-preview-image-wrap\n\t\t{\n\t\t\tmargin-bottom: 20px;\n\t\t}\n\t\t.binary-preview-image\n\t\t{\n\t\t\tdisplay: inline-block;\n\t\t\tbackground: #FFF;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 6px;\n\t\t\tpadding: 24px;\n\t\t}\n\t\t.binary-preview-image img\n\t\t{\n\t\t\tdisplay: block;\n\t\t\tmax-width: 100%;\n\t\t\tmax-height: 400px;\n\t\t\tobject-fit: contain;\n\t\t\tborder-radius: 4px;\n\t\t}\n\t\t.binary-preview-card\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 20px;\n\t\t\tbackground: #FFF;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 6px;\n\t\t\tpadding: 24px;\n\t\t\tmax-width: 600px;\n\t\t}\n\t\t.binary-preview-icon\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tbackground: #F0EDE8;\n\t\t\tborder-radius: 8px;\n\t\t\tfont-size: 0.75rem;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: #5E5549;\n\t\t\tletter-spacing: 0.5px;\n\t\t}\n\t\t.binary-preview-info\n\t\t{\n\t\t\tflex: 1;\n\t\t\tmin-width: 0;\n\t\t}\n\t\t.binary-preview-name\n\t\t{\n\t\t\tfont-size: 1rem;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin-bottom: 6px;\n\t\t\tword-break: break-all;\n\t\t}\n\t\t.binary-preview-meta\n\t\t{\n\t\t\tfont-size: 0.8rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tline-height: 1.6;\n\t\t}\n\t\t.binary-preview-actions\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 8px;\n\t\t}\n\t\t.binary-preview-btn\n\t\t{\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 8px 16px;\n\t\t\tborder-radius: 4px;\n\t\t\tfont-size: 0.8rem;\n\t\t\tfont-weight: 600;\n\t\t\ttext-decoration: none;\n\t\t\ttext-align: center;\n\t\t\tcursor: pointer;\n\t\t\tbackground: #2E7D74;\n\t\t\tcolor: #FFF;\n\t\t}\n\t\t.binary-preview-btn:hover\n\t\t{\n\t\t\tbackground: #3A9E92;\n\t\t}\n\t\t.binary-preview-btn-secondary\n\t\t{\n\t\t\tbackground: transparent;\n\t\t\tcolor: #5E5549;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t}\n\t\t.binary-preview-btn-secondary:hover\n\t\t{\n\t\t\tborder-color: #8A7F72;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.binary-preview-btn-preview\n\t\t{\n\t\t\tpadding: 10px 20px;\n\t\t\tfont-size: 0.85rem;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tbackground: #FAF8F4;\n\t\t\tcolor: #3D3229;\n\t\t\tcursor: pointer;\n\t\t\tborder-radius: 6px;\n\t\t\ttransition: background 0.15s, border-color 0.15s;\n\t\t}\n\t\t.binary-preview-btn-preview:hover\n\t\t{\n\t\t\tbackground: #F0EDE8;\n\t\t\tborder-color: #8A7F72;\n\t\t}\n\t\t#ContentEditor-MediaPreviewPlaceholder\n\t\t{\n\t\t\tmargin-bottom: 20px;\n\t\t}\n\t\t.binary-preview-media-wrap\n\t\t{\n\t\t\tmargin-bottom: 20px;\n\t\t}\n\t\t.binary-preview-video\n\t\t{\n\t\t\tdisplay: block;\n\t\t\tmax-width: 100%;\n\t\t\tmax-height: 500px;\n\t\t\tborder-radius: 6px;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tbackground: #000;\n\t\t}\n\t\t.binary-preview-audio\n\t\t{\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\tmax-width: 500px;\n\t\t}\n\t\t/* Image upload overlay */\n\t\t.content-editor-upload-overlay\n\t\t{\n\t\t\tdisplay: none;\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\tz-index: 1099;\n\t\t\tbackground: rgba(0, 0, 0, 0.35);\n\t\t}\n\t\t.content-editor-upload-overlay.open\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t}\n\t\t.content-editor-upload-panel\n\t\t{\n\t\t\tbackground: #FFF;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 10px;\n\t\t\tbox-shadow: 0 12px 40px rgba(0, 0, 0, 0.2);\n\t\t\twidth: 420px;\n\t\t\tmax-width: 90vw;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t.content-editor-upload-header\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: space-between;\n\t\t\tpadding: 14px 18px;\n\t\t\tborder-bottom: 1px solid #EDE9E3;\n\t\t}\n\t\t.content-editor-upload-title\n\t\t{\n\t\t\tfont-size: 0.95rem;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.content-editor-upload-close\n\t\t{\n\t\t\tbackground: transparent;\n\t\t\tborder: none;\n\t\t\tfont-size: 1.2rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 2px 6px;\n\t\t\tline-height: 1;\n\t\t\tborder-radius: 4px;\n\t\t}\n\t\t.content-editor-upload-close:hover\n\t\t{\n\t\t\tcolor: #3D3229;\n\t\t\tbackground: #F0EDE8;\n\t\t}\n\t\t.content-editor-upload-body\n\t\t{\n\t\t\tpadding: 18px;\n\t\t}\n\t\t.content-editor-upload-dropzone\n\t\t{\n\t\t\tborder: 2px dashed #DDD6CA;\n\t\t\tborder-radius: 8px;\n\t\t\tpadding: 28px 16px;\n\t\t\ttext-align: center;\n\t\t\tcursor: pointer;\n\t\t\ttransition: border-color 0.15s, background 0.15s;\n\t\t\tbackground: #FAF8F4;\n\t\t}\n\t\t.content-editor-upload-dropzone:hover,\n\t\t.content-editor-upload-dropzone.dragover\n\t\t{\n\t\t\tborder-color: #2E7D74;\n\t\t\tbackground: #F0FAF8;\n\t\t}\n\t\t.content-editor-upload-dropzone-icon\n\t\t{\n\t\t\tfont-size: 2rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tmargin-bottom: 6px;\n\t\t}\n\t\t.content-editor-upload-dropzone-text\n\t\t{\n\t\t\tfont-size: 0.82rem;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.content-editor-upload-dropzone-hint\n\t\t{\n\t\t\tfont-size: 0.72rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tmargin-top: 4px;\n\t\t}\n\t\t.content-editor-upload-file-input\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t.content-editor-upload-status\n\t\t{\n\t\t\tmargin-top: 12px;\n\t\t\tfont-size: 0.82rem;\n\t\t\tcolor: #5E5549;\n\t\t\tmin-height: 20px;\n\t\t}\n\t\t.content-editor-upload-status-error\n\t\t{\n\t\t\tcolor: #D9534F;\n\t\t}\n\t\t.content-editor-upload-status-success\n\t\t{\n\t\t\tcolor: #2E7D74;\n\t\t}\n\t\t.content-editor-upload-result\n\t\t{\n\t\t\tmargin-top: 12px;\n\t\t\tpadding: 10px 12px;\n\t\t\tbackground: #F0EDE8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 6px;\n\t\t}\n\t\t.content-editor-upload-result-label\n\t\t{\n\t\t\tfont-size: 0.72rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tmargin-bottom: 4px;\n\t\t}\n\t\t.content-editor-upload-result-url\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 6px;\n\t\t}\n\t\t.content-editor-upload-result-text\n\t\t{\n\t\t\tflex: 1;\n\t\t\tfont-family: monospace;\n\t\t\tfont-size: 0.78rem;\n\t\t\tcolor: #3D3229;\n\t\t\tword-break: break-all;\n\t\t}\n\t\t.content-editor-upload-result-copy\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\tbackground: #2E7D74;\n\t\t\tcolor: #FFF;\n\t\t\tborder: none;\n\t\t\tborder-radius: 4px;\n\t\t\tpadding: 4px 10px;\n\t\t\tfont-size: 0.72rem;\n\t\t\tfont-weight: 600;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.content-editor-upload-result-copy:hover\n\t\t{\n\t\t\tbackground: #3A9E92;\n\t\t}\n\t\t.content-editor-upload-kbd\n\t\t{\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 1px 5px;\n\t\t\tfont-size: 0.68rem;\n\t\t\tfont-family: monospace;\n\t\t\tbackground: #F0EDE8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 3px;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.content-editor-upload-footer\n\t\t{\n\t\t\tpadding: 10px 18px;\n\t\t\tborder-top: 1px solid #EDE9E3;\n\t\t\tfont-size: 0.72rem;\n\t\t\tcolor: #8A7F72;\n\t\t\ttext-align: center;\n\t\t}\n\n\t\t/* File browser row insert button \u2014 hidden by default, shown on\n\t\t hover for image file rows via CSS attribute selectors. */\n\t\t.pict-fb-insert-btn\n\t\t{\n\t\t\tdisplay: none;\n\t\t\tposition: absolute;\n\t\t\tright: 6px;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\t\t\tbackground: #2E7D74;\n\t\t\tcolor: #FFF;\n\t\t\tborder: none;\n\t\t\tborder-radius: 4px;\n\t\t\tfont-size: 0.78rem;\n\t\t\tfont-weight: 700;\n\t\t\tline-height: 1;\n\t\t\tpadding: 2px 7px;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.pict-fb-insert-btn:hover\n\t\t{\n\t\t\tbackground: #3A9E92;\n\t\t}\n\t\t/* Make the row position:relative so the button can be absolutely placed */\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row\n\t\t{\n\t\t\tposition: relative;\n\t\t}\n\t\t/* Show the insert button on hover for image file extensions.\n\t\t CSS attribute selector [data-name$=\".ext\" i] matches\n\t\t the end of the data-name attribute, case-insensitive. */\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".png\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".jpg\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".jpeg\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".gif\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".webp\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".svg\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".bmp\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".avif\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".apng\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".ico\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".tiff\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".tif\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".jfif\" i]:hover .pict-fb-insert-btn\n\t\t{\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t\t/* ============================================\n\t\t RESPONSIVE: Tablet / Phone (max-width: 768px)\n\t\t ============================================ */\n\t\t@media (max-width: 768px)\n\t\t{\n\t\t\t/* Prevent horizontal scroll on the whole app */\n\t\t\t#ContentEditor-Application-Container\n\t\t\t{\n\t\t\t\toverflow-x: hidden;\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 100vw;\n\t\t\t}\n\n\t\t\t/* Stack sidebar ABOVE editor instead of side-by-side */\n\t\t\t.content-editor-body\n\t\t\t{\n\t\t\t\tflex-direction: column;\n\t\t\t}\n\n\t\t\t/* Sidebar becomes a horizontal strip at the top */\n\t\t\t.content-editor-sidebar-wrap\n\t\t\t{\n\t\t\t\twidth: 100% !important;\n\t\t\t\tmax-height: 40vh;\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\t\tborder-right: none;\n\t\t\t}\n\n\t\t\t/* Give the Reference and Topics tabs much more room on mobile\n\t\t\t since they contain long scrollable content */\n\t\t\t.content-editor-sidebar-wrap.sidebar-expanded-pane\n\t\t\t{\n\t\t\t\tmax-height: 70vh;\n\t\t\t}\n\n\t\t\t/* When collapsed on mobile, hide the inner content but keep the\n\t\t\t toggle button visible (it's positioned below the sidebar strip) */\n\t\t\t.content-editor-sidebar-wrap.collapsed\n\t\t\t{\n\t\t\t\twidth: 100% !important;\n\t\t\t\tmax-height: 0;\n\t\t\t\toverflow: visible;\n\t\t\t}\n\t\t\t.content-editor-sidebar-wrap.collapsed .content-editor-sidebar-inner\n\t\t\t{\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t/* Hide the resize handle (desktop-only interaction) */\n\t\t\t.content-editor-resize-handle\n\t\t\t{\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t/* Reposition the sidebar toggle for horizontal layout \u2014\n\t\t\t place it at the bottom-center of the sidebar strip */\n\t\t\t.content-editor-sidebar-toggle\n\t\t\t{\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: auto;\n\t\t\t\tbottom: -20px;\n\t\t\t\tright: auto;\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 28px;\n\t\t\t\theight: 20px;\n\t\t\t\tborder-radius: 0 0 4px 4px;\n\t\t\t\tborder: 1px solid #DDD6CA;\n\t\t\t\tborder-top: none;\n\t\t\t\tz-index: 10;\n\t\t\t}\n\t\t\t.content-editor-sidebar-wrap.collapsed .content-editor-sidebar-toggle\n\t\t\t{\n\t\t\t\tbottom: -20px;\n\t\t\t\tright: auto;\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t}\n\n\t\t\t/* Reduce editor container padding (less gutters) */\n\t\t\t#ContentEditor-Editor-Container\n\t\t\t{\n\t\t\t\tpadding: 24px 8px 8px 8px;\n\t\t\t}\n\n\t\t\t/* Reduce binary preview padding */\n\t\t\t.binary-preview-image\n\t\t\t{\n\t\t\t\tpadding: 12px;\n\t\t\t}\n\t\t\t.binary-preview-card\n\t\t\t{\n\t\t\t\tpadding: 12px;\n\t\t\t\tgap: 12px;\n\t\t\t}\n\n\t\t\t/* Upload panel: fill more of the screen */\n\t\t\t.content-editor-upload-panel\n\t\t\t{\n\t\t\t\twidth: 95vw;\n\t\t\t\tmax-width: 95vw;\n\t\t\t}\n\n\t\t}\n\n\t\t/* ============================================\n\t\t RESPONSIVE: Small phone (max-width: 480px)\n\t\t ============================================ */\n\t\t@media (max-width: 480px)\n\t\t{\n\t\t\t/* Even tighter editor padding */\n\t\t\t#ContentEditor-Editor-Container\n\t\t\t{\n\t\t\t\tpadding: 20px 4px 4px 4px;\n\t\t\t}\n\n\t\t\t/* Sidebar gets a smaller max height */\n\t\t\t.content-editor-sidebar-wrap\n\t\t\t{\n\t\t\t\tmax-height: 35vh;\n\t\t\t}\n\t\t\t.content-editor-sidebar-wrap.sidebar-expanded-pane\n\t\t\t{\n\t\t\t\tmax-height: 65vh;\n\t\t\t}\n\t\t}\n\t",Templates:[{Hash:"ContentEditor-Layout-Shell-Template",Template:/*html*/"\n<div id=\"ContentEditor-TopBar-Container\"></div>\n<div class=\"content-editor-body\">\n\t<div class=\"content-editor-sidebar-wrap\" id=\"ContentEditor-SidebarWrap\" style=\"width:250px\">\n\t\t<div class=\"content-editor-sidebar-inner\">\n\t\t\t<div class=\"content-editor-sidebar-tabs\">\n\t\t\t\t<button class=\"content-editor-sidebar-tab active\" id=\"ContentEditor-SidebarTab-Files\"\n\t\t\t\t\tonclick=\"{~P~}.views['ContentEditor-Layout'].switchSidebarTab('files')\">Files</button>\n\t\t\t\t<button class=\"content-editor-sidebar-tab\" id=\"ContentEditor-SidebarTab-Reference\"\n\t\t\t\t\tonclick=\"{~P~}.views['ContentEditor-Layout'].switchSidebarTab('reference')\">Reference</button>\n\t\t\t\t<button class=\"content-editor-sidebar-tab\" id=\"ContentEditor-SidebarTab-Topics\"\n\t\t\t\t\tonclick=\"{~P~}.views['ContentEditor-Layout'].switchSidebarTab('topics')\">Topics</button>\n\t\t\t\t<button class=\"content-editor-sidebar-addfile\" title=\"New file\"\n\t\t\t\t\tonclick=\"{~P~}.PictApplication.promptNewFile()\">+</button>\n\t\t\t</div>\n\t\t\t<div id=\"ContentEditor-Sidebar-Container\" class=\"content-editor-sidebar-pane\"></div>\n\t\t\t<div id=\"ContentEditor-SidebarReference-Container\" class=\"content-editor-sidebar-pane\" style=\"display:none\"></div>\n\t\t\t<div id=\"ContentEditor-SidebarTopics-Container\" class=\"content-editor-sidebar-pane\" style=\"display:none\"></div>\n\t\t</div>\n\t\t<div class=\"content-editor-resize-handle\" id=\"ContentEditor-ResizeHandle\"></div>\n\t\t<div class=\"content-editor-sidebar-toggle\" id=\"ContentEditor-SidebarToggle\">◀</div>\n\t</div>\n\t<div id=\"ContentEditor-Editor-Container\"></div>\n</div>\n<div class=\"content-editor-upload-overlay\" id=\"ContentEditor-UploadOverlay\"\n\tonclick=\"{~P~}.views['ContentEditor-Layout'].onUploadOverlayClick(event)\">\n\t<div class=\"content-editor-upload-panel\">\n\t\t<div class=\"content-editor-upload-header\">\n\t\t\t<span class=\"content-editor-upload-title\">Upload Image</span>\n\t\t\t<button class=\"content-editor-upload-close\"\n\t\t\t\tonclick=\"{~P~}.views['ContentEditor-Layout'].toggleUploadForm()\">×</button>\n\t\t</div>\n\t\t<div class=\"content-editor-upload-body\">\n\t\t\t<div class=\"content-editor-upload-dropzone\" id=\"ContentEditor-UploadDropzone\"\n\t\t\t\tonclick=\"document.getElementById('ContentEditor-UploadFileInput').click()\">\n\t\t\t\t<div class=\"content-editor-upload-dropzone-icon\">📷</div>\n\t\t\t\t<div class=\"content-editor-upload-dropzone-text\">Drop an image here or click to browse</div>\n\t\t\t\t<div class=\"content-editor-upload-dropzone-hint\">PNG, JPG, GIF, WebP, SVG, BMP</div>\n\t\t\t</div>\n\t\t\t<input type=\"file\" class=\"content-editor-upload-file-input\" id=\"ContentEditor-UploadFileInput\"\n\t\t\t\taccept=\"image/png,image/jpeg,image/gif,image/webp,image/svg+xml,image/bmp\"\n\t\t\t\tonchange=\"{~P~}.views['ContentEditor-Layout'].onUploadFileSelected(this)\">\n\t\t\t<div class=\"content-editor-upload-status\" id=\"ContentEditor-UploadStatus\"></div>\n\t\t\t<div id=\"ContentEditor-UploadResult\"></div>\n\t\t</div>\n\t\t<div class=\"content-editor-upload-footer\">\n\t\t\t<span class=\"content-editor-upload-kbd\">F3</span> or\n\t\t\t<span class=\"content-editor-upload-kbd\">Ctrl+Shift+U</span> to toggle\n\t\t</div>\n\t</div>\n</div>\n"}],Renderables:[{RenderableHash:"ContentEditor-Layout-Shell",TemplateHash:"ContentEditor-Layout-Shell-Template",DestinationAddress:"#ContentEditor-Application-Container",RenderMethod:"replace"}]};var ContentEditorLayoutView=/*#__PURE__*/function(_libPictView13){function ContentEditorLayoutView(pFable,pOptions,pServiceHash){var _this69;_classCallCheck(this,ContentEditorLayoutView);_this69=_callSuper(this,ContentEditorLayoutView,[pFable,pOptions,pServiceHash]);_this69._minSidebarWidth=140;_this69._maxSidebarWidth=600;return _this69;}_inherits(ContentEditorLayoutView,_libPictView13);return _createClass(ContentEditorLayoutView,[{key:"onAfterRender",value:function onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent){// Render child views
|
|
4749
|
+
*/}],[{key:"getLanguageForExtension",value:function getLanguageForExtension(pExtension){if(!pExtension){return'plaintext';}var tmpExt=pExtension.toLowerCase();return _ExtensionLanguageMap[tmpExt]||'plaintext';}}]);}(libPictSectionCode);module.exports=ContentEditorCodeEditorView;module.exports.default_configuration=_ViewConfiguration;module.exports.ExtensionLanguageMap=_ExtensionLanguageMap;},{"pict-section-code":58}],108:[function(require,module,exports){var libPictView=require('pict-view');var _ViewConfiguration={ViewIdentifier:"ContentEditor-Layout",DefaultRenderable:"ContentEditor-Layout-Shell",DefaultDestinationAddress:"#ContentEditor-Application-Container",AutoRender:false,CSS:/*css*/"\n\t\t#ContentEditor-Application-Container\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\theight: 100vh;\n\t\t\tbackground: #F5F3EE;\n\t\t}\n\t\t#ContentEditor-TopBar-Container\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t}\n\t\t.content-editor-body\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex: 1;\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t/* Sidebar wrapper holds the sidebar content + collapse toggle */\n\t\t.content-editor-sidebar-wrap\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex-shrink: 0;\n\t\t\tposition: relative;\n\t\t\ttransition: width 0.2s ease;\n\t\t}\n\t\t/* Inner wrapper: vertical flex for tab bar + panes */\n\t\t.content-editor-sidebar-inner\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tflex: 1;\n\t\t\tmin-width: 0;\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t/* Sidebar tab bar */\n\t\t.content-editor-sidebar-tabs\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\tflex-shrink: 0;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\tbackground: #F5F0EA;\n\t\t}\n\t\t.content-editor-sidebar-tab\n\t\t{\n\t\t\tflex: 1;\n\t\t\tpadding: 7px 0;\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tfont-size: 0.78rem;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #8A7F72;\n\t\t\tcursor: pointer;\n\t\t\tborder-bottom: 2px solid transparent;\n\t\t\ttransition: color 0.15s, border-color 0.15s;\n\t\t}\n\t\t.content-editor-sidebar-tab:hover\n\t\t{\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.content-editor-sidebar-tab.active\n\t\t{\n\t\t\tcolor: #2E7D74;\n\t\t\tborder-bottom-color: #2E7D74;\n\t\t}\n\t\t.content-editor-sidebar-addfile\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\twidth: 30px;\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tfont-size: 1.1rem;\n\t\t\tfont-weight: 400;\n\t\t\tcolor: #8A7F72;\n\t\t\tcursor: pointer;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tborder-bottom: 2px solid transparent;\n\t\t\ttransition: color 0.15s, background 0.15s;\n\t\t}\n\t\t.content-editor-sidebar-addfile:hover\n\t\t{\n\t\t\tcolor: #2E7D74;\n\t\t\tbackground: #EDE9E3;\n\t\t}\n\t\t/* Sidebar panes */\n\t\t.content-editor-sidebar-pane\n\t\t{\n\t\t\tflex: 1;\n\t\t\toverflow-y: auto;\n\t\t\toverflow-x: hidden;\n\t\t\tmin-width: 0;\n\t\t\tmin-height: 0;\n\t\t}\n\t\t#ContentEditor-Sidebar-Container\n\t\t{\n\t\t\tbackground: #FAF8F4;\n\t\t}\n\t\t/* Collapsed state */\n\t\t.content-editor-sidebar-wrap.collapsed\n\t\t{\n\t\t\twidth: 0 !important;\n\t\t}\n\t\t.content-editor-sidebar-wrap.collapsed .content-editor-sidebar-inner\n\t\t{\n\t\t\tvisibility: hidden;\n\t\t}\n\t\t.content-editor-sidebar-wrap.collapsed .content-editor-resize-handle\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t/* Collapse / expand toggle */\n\t\t.content-editor-sidebar-toggle\n\t\t{\n\t\t\tposition: absolute;\n\t\t\ttop: 8px;\n\t\t\tright: -20px;\n\t\t\twidth: 20px;\n\t\t\theight: 28px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tbackground: #FAF8F4;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-left: none;\n\t\t\tborder-radius: 0 4px 4px 0;\n\t\t\tcursor: pointer;\n\t\t\tz-index: 10;\n\t\t\tcolor: #8A7F72;\n\t\t\tfont-size: 11px;\n\t\t\tline-height: 1;\n\t\t\ttransition: color 0.15s;\n\t\t}\n\t\t.content-editor-sidebar-toggle:hover\n\t\t{\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.content-editor-sidebar-wrap.collapsed .content-editor-sidebar-toggle\n\t\t{\n\t\t\tright: -20px;\n\t\t}\n\t\t/* Resize handle */\n\t\t.content-editor-resize-handle\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\twidth: 5px;\n\t\t\tcursor: col-resize;\n\t\t\tbackground: transparent;\n\t\t\tborder-right: 1px solid #DDD6CA;\n\t\t\ttransition: background 0.15s;\n\t\t}\n\t\t.content-editor-resize-handle:hover,\n\t\t.content-editor-resize-handle.dragging\n\t\t{\n\t\t\tbackground: #2E7D74;\n\t\t\tborder-right-color: #2E7D74;\n\t\t}\n\t\t/* File browser layout overrides for sidebar use */\n\t\t#ContentEditor-Sidebar-Container .pict-filebrowser\n\t\t{\n\t\t\tborder: none;\n\t\t\tborder-radius: 0;\n\t\t\tbackground: transparent;\n\t\t}\n\t\t#ContentEditor-Sidebar-Container .pict-filebrowser-browse-pane\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t#ContentEditor-Sidebar-Container .pict-filebrowser-view-pane\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t/* Hide size/date columns \u2014 the sidebar is too narrow for them */\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-col-size,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-col-modified,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-size,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-modified\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t/* Hide the column header bar in sidebar mode */\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-header\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t/* Breadcrumb bar: flex wrapper with create-folder button */\n\t\t.pict-fb-breadcrumb-bar\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tbackground: #F5F0E8;\n\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t}\n\t\t.pict-fb-breadcrumb-bar .pict-fb-breadcrumb\n\t\t{\n\t\t\tflex: 1;\n\t\t\tborder-bottom: none;\n\t\t}\n\t\t.pict-fb-breadcrumb-addfolder\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\tbackground: transparent;\n\t\t\tborder: none;\n\t\t\tfont-size: 1.1rem;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #8A7F72;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 4px 10px;\n\t\t\tline-height: 1;\n\t\t\tborder-radius: 4px;\n\t\t\tmargin-right: 4px;\n\t\t}\n\t\t.pict-fb-breadcrumb-addfolder:hover\n\t\t{\n\t\t\tcolor: #2E7D74;\n\t\t\tbackground: #EAE3D8;\n\t\t}\n\t\t#ContentEditor-Editor-Container\n\t\t{\n\t\t\tflex: 1;\n\t\t\toverflow-y: auto;\n\t\t\tpadding: 44px 16px 16px 16px;\n\t\t}\n\t\t/* Code editor: fill the container and remove outer border */\n\t\t#ContentEditor-Editor-Container .pict-code-editor-wrap\n\t\t{\n\t\t\theight: calc(100% - 4px);\n\t\t\tborder: none;\n\t\t\tborder-radius: 0;\n\t\t}\n\t\t#ContentEditor-Editor-Container .pict-code-editor\n\t\t{\n\t\t\tmin-height: unset;\n\t\t\theight: 100%;\n\t\t\tbackground: #FAFAFA;\n\t\t}\n\t\t/* Binary file preview */\n\t\t.binary-preview-image-wrap\n\t\t{\n\t\t\tmargin-bottom: 20px;\n\t\t}\n\t\t.binary-preview-image\n\t\t{\n\t\t\tdisplay: inline-block;\n\t\t\tbackground: #FFF;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 6px;\n\t\t\tpadding: 24px;\n\t\t}\n\t\t.binary-preview-image img\n\t\t{\n\t\t\tdisplay: block;\n\t\t\tmax-width: 100%;\n\t\t\tmax-height: 400px;\n\t\t\tobject-fit: contain;\n\t\t\tborder-radius: 4px;\n\t\t}\n\t\t.binary-preview-card\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 20px;\n\t\t\tbackground: #FFF;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 6px;\n\t\t\tpadding: 24px;\n\t\t\tmax-width: 600px;\n\t\t}\n\t\t.binary-preview-icon\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tbackground: #F0EDE8;\n\t\t\tborder-radius: 8px;\n\t\t\tfont-size: 0.75rem;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: #5E5549;\n\t\t\tletter-spacing: 0.5px;\n\t\t}\n\t\t.binary-preview-info\n\t\t{\n\t\t\tflex: 1;\n\t\t\tmin-width: 0;\n\t\t}\n\t\t.binary-preview-name\n\t\t{\n\t\t\tfont-size: 1rem;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t\tmargin-bottom: 6px;\n\t\t\tword-break: break-all;\n\t\t}\n\t\t.binary-preview-meta\n\t\t{\n\t\t\tfont-size: 0.8rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tline-height: 1.6;\n\t\t}\n\t\t.binary-preview-actions\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 8px;\n\t\t}\n\t\t.binary-preview-btn\n\t\t{\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 8px 16px;\n\t\t\tborder-radius: 4px;\n\t\t\tfont-size: 0.8rem;\n\t\t\tfont-weight: 600;\n\t\t\ttext-decoration: none;\n\t\t\ttext-align: center;\n\t\t\tcursor: pointer;\n\t\t\tbackground: #2E7D74;\n\t\t\tcolor: #FFF;\n\t\t}\n\t\t.binary-preview-btn:hover\n\t\t{\n\t\t\tbackground: #3A9E92;\n\t\t}\n\t\t.binary-preview-btn-secondary\n\t\t{\n\t\t\tbackground: transparent;\n\t\t\tcolor: #5E5549;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t}\n\t\t.binary-preview-btn-secondary:hover\n\t\t{\n\t\t\tborder-color: #8A7F72;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.binary-preview-btn-preview\n\t\t{\n\t\t\tpadding: 10px 20px;\n\t\t\tfont-size: 0.85rem;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tbackground: #FAF8F4;\n\t\t\tcolor: #3D3229;\n\t\t\tcursor: pointer;\n\t\t\tborder-radius: 6px;\n\t\t\ttransition: background 0.15s, border-color 0.15s;\n\t\t}\n\t\t.binary-preview-btn-preview:hover\n\t\t{\n\t\t\tbackground: #F0EDE8;\n\t\t\tborder-color: #8A7F72;\n\t\t}\n\t\t#ContentEditor-MediaPreviewPlaceholder\n\t\t{\n\t\t\tmargin-bottom: 20px;\n\t\t}\n\t\t.binary-preview-media-wrap\n\t\t{\n\t\t\tmargin-bottom: 20px;\n\t\t}\n\t\t.binary-preview-video\n\t\t{\n\t\t\tdisplay: block;\n\t\t\tmax-width: 100%;\n\t\t\tmax-height: 500px;\n\t\t\tborder-radius: 6px;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tbackground: #000;\n\t\t}\n\t\t.binary-preview-audio\n\t\t{\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\tmax-width: 500px;\n\t\t}\n\t\t/* Image upload overlay */\n\t\t.content-editor-upload-overlay\n\t\t{\n\t\t\tdisplay: none;\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\tz-index: 1099;\n\t\t\tbackground: rgba(0, 0, 0, 0.35);\n\t\t}\n\t\t.content-editor-upload-overlay.open\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t}\n\t\t.content-editor-upload-panel\n\t\t{\n\t\t\tbackground: #FFF;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 10px;\n\t\t\tbox-shadow: 0 12px 40px rgba(0, 0, 0, 0.2);\n\t\t\twidth: 420px;\n\t\t\tmax-width: 90vw;\n\t\t\toverflow: hidden;\n\t\t}\n\t\t.content-editor-upload-header\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: space-between;\n\t\t\tpadding: 14px 18px;\n\t\t\tborder-bottom: 1px solid #EDE9E3;\n\t\t}\n\t\t.content-editor-upload-title\n\t\t{\n\t\t\tfont-size: 0.95rem;\n\t\t\tfont-weight: 600;\n\t\t\tcolor: #3D3229;\n\t\t}\n\t\t.content-editor-upload-close\n\t\t{\n\t\t\tbackground: transparent;\n\t\t\tborder: none;\n\t\t\tfont-size: 1.2rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 2px 6px;\n\t\t\tline-height: 1;\n\t\t\tborder-radius: 4px;\n\t\t}\n\t\t.content-editor-upload-close:hover\n\t\t{\n\t\t\tcolor: #3D3229;\n\t\t\tbackground: #F0EDE8;\n\t\t}\n\t\t.content-editor-upload-body\n\t\t{\n\t\t\tpadding: 18px;\n\t\t}\n\t\t.content-editor-upload-dropzone\n\t\t{\n\t\t\tborder: 2px dashed #DDD6CA;\n\t\t\tborder-radius: 8px;\n\t\t\tpadding: 28px 16px;\n\t\t\ttext-align: center;\n\t\t\tcursor: pointer;\n\t\t\ttransition: border-color 0.15s, background 0.15s;\n\t\t\tbackground: #FAF8F4;\n\t\t}\n\t\t.content-editor-upload-dropzone:hover,\n\t\t.content-editor-upload-dropzone.dragover\n\t\t{\n\t\t\tborder-color: #2E7D74;\n\t\t\tbackground: #F0FAF8;\n\t\t}\n\t\t.content-editor-upload-dropzone-icon\n\t\t{\n\t\t\tfont-size: 2rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tmargin-bottom: 6px;\n\t\t}\n\t\t.content-editor-upload-dropzone-text\n\t\t{\n\t\t\tfont-size: 0.82rem;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.content-editor-upload-dropzone-hint\n\t\t{\n\t\t\tfont-size: 0.72rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tmargin-top: 4px;\n\t\t}\n\t\t.content-editor-upload-file-input\n\t\t{\n\t\t\tdisplay: none;\n\t\t}\n\t\t.content-editor-upload-status\n\t\t{\n\t\t\tmargin-top: 12px;\n\t\t\tfont-size: 0.82rem;\n\t\t\tcolor: #5E5549;\n\t\t\tmin-height: 20px;\n\t\t}\n\t\t.content-editor-upload-status-error\n\t\t{\n\t\t\tcolor: #D9534F;\n\t\t}\n\t\t.content-editor-upload-status-success\n\t\t{\n\t\t\tcolor: #2E7D74;\n\t\t}\n\t\t.content-editor-upload-result\n\t\t{\n\t\t\tmargin-top: 12px;\n\t\t\tpadding: 10px 12px;\n\t\t\tbackground: #F0EDE8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 6px;\n\t\t}\n\t\t.content-editor-upload-result-label\n\t\t{\n\t\t\tfont-size: 0.72rem;\n\t\t\tcolor: #8A7F72;\n\t\t\tmargin-bottom: 4px;\n\t\t}\n\t\t.content-editor-upload-result-url\n\t\t{\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tgap: 6px;\n\t\t}\n\t\t.content-editor-upload-result-text\n\t\t{\n\t\t\tflex: 1;\n\t\t\tfont-family: monospace;\n\t\t\tfont-size: 0.78rem;\n\t\t\tcolor: #3D3229;\n\t\t\tword-break: break-all;\n\t\t}\n\t\t.content-editor-upload-result-copy\n\t\t{\n\t\t\tflex-shrink: 0;\n\t\t\tbackground: #2E7D74;\n\t\t\tcolor: #FFF;\n\t\t\tborder: none;\n\t\t\tborder-radius: 4px;\n\t\t\tpadding: 4px 10px;\n\t\t\tfont-size: 0.72rem;\n\t\t\tfont-weight: 600;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.content-editor-upload-result-copy:hover\n\t\t{\n\t\t\tbackground: #3A9E92;\n\t\t}\n\t\t.content-editor-upload-kbd\n\t\t{\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 1px 5px;\n\t\t\tfont-size: 0.68rem;\n\t\t\tfont-family: monospace;\n\t\t\tbackground: #F0EDE8;\n\t\t\tborder: 1px solid #DDD6CA;\n\t\t\tborder-radius: 3px;\n\t\t\tcolor: #5E5549;\n\t\t}\n\t\t.content-editor-upload-footer\n\t\t{\n\t\t\tpadding: 10px 18px;\n\t\t\tborder-top: 1px solid #EDE9E3;\n\t\t\tfont-size: 0.72rem;\n\t\t\tcolor: #8A7F72;\n\t\t\ttext-align: center;\n\t\t}\n\n\t\t/* File browser row insert button \u2014 hidden by default, shown on\n\t\t hover for image file rows via CSS attribute selectors. */\n\t\t.pict-fb-insert-btn\n\t\t{\n\t\t\tdisplay: none;\n\t\t\tposition: absolute;\n\t\t\tright: 6px;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\t\t\tbackground: #2E7D74;\n\t\t\tcolor: #FFF;\n\t\t\tborder: none;\n\t\t\tborder-radius: 4px;\n\t\t\tfont-size: 0.78rem;\n\t\t\tfont-weight: 700;\n\t\t\tline-height: 1;\n\t\t\tpadding: 2px 7px;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.pict-fb-insert-btn:hover\n\t\t{\n\t\t\tbackground: #3A9E92;\n\t\t}\n\t\t/* Make the row position:relative so the button can be absolutely placed */\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row\n\t\t{\n\t\t\tposition: relative;\n\t\t}\n\t\t/* Show the insert button on hover for image file extensions.\n\t\t CSS attribute selector [data-name$=\".ext\" i] matches\n\t\t the end of the data-name attribute, case-insensitive. */\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".png\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".jpg\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".jpeg\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".gif\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".webp\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".svg\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".bmp\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".avif\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".apng\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".ico\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".tiff\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".tif\" i]:hover .pict-fb-insert-btn,\n\t\t#ContentEditor-Sidebar-Container .pict-fb-detail-row[data-name$=\".jfif\" i]:hover .pict-fb-insert-btn\n\t\t{\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t\t/* ============================================\n\t\t RESPONSIVE: Tablet / Phone (max-width: 768px)\n\t\t ============================================ */\n\t\t@media (max-width: 768px)\n\t\t{\n\t\t\t/* Prevent horizontal scroll on the whole app */\n\t\t\t#ContentEditor-Application-Container\n\t\t\t{\n\t\t\t\toverflow-x: hidden;\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 100vw;\n\t\t\t}\n\n\t\t\t/* Stack sidebar ABOVE editor instead of side-by-side */\n\t\t\t.content-editor-body\n\t\t\t{\n\t\t\t\tflex-direction: column;\n\t\t\t}\n\n\t\t\t/* Sidebar becomes a horizontal strip at the top */\n\t\t\t.content-editor-sidebar-wrap\n\t\t\t{\n\t\t\t\twidth: 100% !important;\n\t\t\t\tmax-height: 40vh;\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tborder-bottom: 1px solid #DDD6CA;\n\t\t\t\tborder-right: none;\n\t\t\t}\n\n\t\t\t/* Give the Reference and Topics tabs much more room on mobile\n\t\t\t since they contain long scrollable content */\n\t\t\t.content-editor-sidebar-wrap.sidebar-expanded-pane\n\t\t\t{\n\t\t\t\tmax-height: 70vh;\n\t\t\t}\n\n\t\t\t/* When collapsed on mobile, hide the inner content but keep the\n\t\t\t toggle button visible (it's positioned below the sidebar strip) */\n\t\t\t.content-editor-sidebar-wrap.collapsed\n\t\t\t{\n\t\t\t\twidth: 100% !important;\n\t\t\t\tmax-height: 0;\n\t\t\t\toverflow: visible;\n\t\t\t}\n\t\t\t.content-editor-sidebar-wrap.collapsed .content-editor-sidebar-inner\n\t\t\t{\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t/* Hide the resize handle (desktop-only interaction) */\n\t\t\t.content-editor-resize-handle\n\t\t\t{\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t/* Reposition the sidebar toggle for horizontal layout \u2014\n\t\t\t place it at the bottom-center of the sidebar strip */\n\t\t\t.content-editor-sidebar-toggle\n\t\t\t{\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: auto;\n\t\t\t\tbottom: -20px;\n\t\t\t\tright: auto;\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 28px;\n\t\t\t\theight: 20px;\n\t\t\t\tborder-radius: 0 0 4px 4px;\n\t\t\t\tborder: 1px solid #DDD6CA;\n\t\t\t\tborder-top: none;\n\t\t\t\tz-index: 10;\n\t\t\t}\n\t\t\t.content-editor-sidebar-wrap.collapsed .content-editor-sidebar-toggle\n\t\t\t{\n\t\t\t\tbottom: -20px;\n\t\t\t\tright: auto;\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t}\n\n\t\t\t/* Reduce editor container padding (less gutters) */\n\t\t\t#ContentEditor-Editor-Container\n\t\t\t{\n\t\t\t\tpadding: 24px 8px 8px 8px;\n\t\t\t}\n\n\t\t\t/* Reduce binary preview padding */\n\t\t\t.binary-preview-image\n\t\t\t{\n\t\t\t\tpadding: 12px;\n\t\t\t}\n\t\t\t.binary-preview-card\n\t\t\t{\n\t\t\t\tpadding: 12px;\n\t\t\t\tgap: 12px;\n\t\t\t}\n\n\t\t\t/* Upload panel: fill more of the screen */\n\t\t\t.content-editor-upload-panel\n\t\t\t{\n\t\t\t\twidth: 95vw;\n\t\t\t\tmax-width: 95vw;\n\t\t\t}\n\n\t\t}\n\n\t\t/* ============================================\n\t\t RESPONSIVE: Small phone (max-width: 480px)\n\t\t ============================================ */\n\t\t@media (max-width: 480px)\n\t\t{\n\t\t\t/* Even tighter editor padding */\n\t\t\t#ContentEditor-Editor-Container\n\t\t\t{\n\t\t\t\tpadding: 20px 4px 4px 4px;\n\t\t\t}\n\n\t\t\t/* Sidebar gets a smaller max height */\n\t\t\t.content-editor-sidebar-wrap\n\t\t\t{\n\t\t\t\tmax-height: 35vh;\n\t\t\t}\n\t\t\t.content-editor-sidebar-wrap.sidebar-expanded-pane\n\t\t\t{\n\t\t\t\tmax-height: 65vh;\n\t\t\t}\n\t\t}\n\t",Templates:[{Hash:"ContentEditor-Layout-Shell-Template",Template:/*html*/"\n<div id=\"ContentEditor-TopBar-Container\"></div>\n<div class=\"content-editor-body\">\n\t<div class=\"content-editor-sidebar-wrap\" id=\"ContentEditor-SidebarWrap\" style=\"width:250px\">\n\t\t<div class=\"content-editor-sidebar-inner\">\n\t\t\t<div class=\"content-editor-sidebar-tabs\">\n\t\t\t\t<button class=\"content-editor-sidebar-tab active\" id=\"ContentEditor-SidebarTab-Files\"\n\t\t\t\t\tonclick=\"{~P~}.views['ContentEditor-Layout'].switchSidebarTab('files')\">Files</button>\n\t\t\t\t<button class=\"content-editor-sidebar-tab\" id=\"ContentEditor-SidebarTab-Reference\"\n\t\t\t\t\tonclick=\"{~P~}.views['ContentEditor-Layout'].switchSidebarTab('reference')\">Reference</button>\n\t\t\t\t<button class=\"content-editor-sidebar-tab\" id=\"ContentEditor-SidebarTab-Topics\"\n\t\t\t\t\tonclick=\"{~P~}.views['ContentEditor-Layout'].switchSidebarTab('topics')\">Topics</button>\n\t\t\t\t<button class=\"content-editor-sidebar-tab\" id=\"ContentEditor-SidebarTab-Vocabulary\"\n\t\t\t\t\tonclick=\"{~P~}.views['ContentEditor-Layout'].switchSidebarTab('vocabulary')\">Vocab</button>\n\t\t\t\t<button class=\"content-editor-sidebar-addfile\" title=\"New file\"\n\t\t\t\t\tonclick=\"{~P~}.PictApplication.promptNewFile()\">+</button>\n\t\t\t</div>\n\t\t\t<div id=\"ContentEditor-Sidebar-Container\" class=\"content-editor-sidebar-pane\"></div>\n\t\t\t<div id=\"ContentEditor-SidebarReference-Container\" class=\"content-editor-sidebar-pane\" style=\"display:none\"></div>\n\t\t\t<div id=\"ContentEditor-SidebarTopics-Container\" class=\"content-editor-sidebar-pane\" style=\"display:none\"></div>\n\t\t\t<div id=\"ContentEditor-Vocabulary-Container\" class=\"content-editor-sidebar-pane\" style=\"display:none\"></div>\n\t\t</div>\n\t\t<div class=\"content-editor-resize-handle\" id=\"ContentEditor-ResizeHandle\"></div>\n\t\t<div class=\"content-editor-sidebar-toggle\" id=\"ContentEditor-SidebarToggle\">◀</div>\n\t</div>\n\t<div id=\"ContentEditor-Editor-Container\"></div>\n</div>\n<div class=\"content-editor-upload-overlay\" id=\"ContentEditor-UploadOverlay\"\n\tonclick=\"{~P~}.views['ContentEditor-Layout'].onUploadOverlayClick(event)\">\n\t<div class=\"content-editor-upload-panel\">\n\t\t<div class=\"content-editor-upload-header\">\n\t\t\t<span class=\"content-editor-upload-title\">Upload Image</span>\n\t\t\t<button class=\"content-editor-upload-close\"\n\t\t\t\tonclick=\"{~P~}.views['ContentEditor-Layout'].toggleUploadForm()\">×</button>\n\t\t</div>\n\t\t<div class=\"content-editor-upload-body\">\n\t\t\t<div class=\"content-editor-upload-dropzone\" id=\"ContentEditor-UploadDropzone\"\n\t\t\t\tonclick=\"document.getElementById('ContentEditor-UploadFileInput').click()\">\n\t\t\t\t<div class=\"content-editor-upload-dropzone-icon\">📷</div>\n\t\t\t\t<div class=\"content-editor-upload-dropzone-text\">Drop an image here or click to browse</div>\n\t\t\t\t<div class=\"content-editor-upload-dropzone-hint\">PNG, JPG, GIF, WebP, SVG, BMP</div>\n\t\t\t</div>\n\t\t\t<input type=\"file\" class=\"content-editor-upload-file-input\" id=\"ContentEditor-UploadFileInput\"\n\t\t\t\taccept=\"image/png,image/jpeg,image/gif,image/webp,image/svg+xml,image/bmp\"\n\t\t\t\tonchange=\"{~P~}.views['ContentEditor-Layout'].onUploadFileSelected(this)\">\n\t\t\t<div class=\"content-editor-upload-status\" id=\"ContentEditor-UploadStatus\"></div>\n\t\t\t<div id=\"ContentEditor-UploadResult\"></div>\n\t\t</div>\n\t\t<div class=\"content-editor-upload-footer\">\n\t\t\t<span class=\"content-editor-upload-kbd\">F3</span> or\n\t\t\t<span class=\"content-editor-upload-kbd\">Ctrl+Shift+U</span> to toggle\n\t\t</div>\n\t</div>\n</div>\n"}],Renderables:[{RenderableHash:"ContentEditor-Layout-Shell",TemplateHash:"ContentEditor-Layout-Shell-Template",DestinationAddress:"#ContentEditor-Application-Container",RenderMethod:"replace"}]};var ContentEditorLayoutView=/*#__PURE__*/function(_libPictView13){function ContentEditorLayoutView(pFable,pOptions,pServiceHash){var _this69;_classCallCheck(this,ContentEditorLayoutView);_this69=_callSuper(this,ContentEditorLayoutView,[pFable,pOptions,pServiceHash]);_this69._minSidebarWidth=140;_this69._maxSidebarWidth=600;return _this69;}_inherits(ContentEditorLayoutView,_libPictView13);return _createClass(ContentEditorLayoutView,[{key:"onAfterRender",value:function onAfterRender(pRenderable,pRenderDestinationAddress,pRecord,pContent){// Render child views
|
|
4750
4750
|
this.pict.views['ContentEditor-TopBar'].render();// Show welcome message in editor area if no file loaded
|
|
4751
4751
|
var tmpEditorContainer=this.pict.ContentAssignment.getElement('#ContentEditor-Editor-Container');if(tmpEditorContainer&&tmpEditorContainer[0]&&!this.pict.AppData.ContentEditor.CurrentFile){tmpEditorContainer[0].innerHTML='<div style="display:flex;align-items:center;justify-content:center;height:100%;color:#8A7F72;font-size:1.1em;">Select a file from the sidebar to begin editing</div>';}// Inject CSS
|
|
4752
4752
|
this.pict.CSSMap.injectCSS();// Apply persisted sidebar state
|
|
@@ -4775,12 +4775,13 @@ var tmpIsMobile=window.innerWidth<=768;if(tmpSettings.SidebarCollapsed){tmpWrap.
|
|
|
4775
4775
|
* Switch the active sidebar tab.
|
|
4776
4776
|
*
|
|
4777
4777
|
* @param {string} pTab - 'files', 'reference', or 'topics'
|
|
4778
|
-
*/},{key:"switchSidebarTab",value:function switchSidebarTab(pTab){var tmpPanes={files:document.getElementById('ContentEditor-Sidebar-Container'),reference:document.getElementById('ContentEditor-SidebarReference-Container'),topics:document.getElementById('ContentEditor-SidebarTopics-Container')};var tmpTabs={files:document.getElementById('ContentEditor-SidebarTab-Files'),reference:document.getElementById('ContentEditor-SidebarTab-Reference'),topics:document.getElementById('ContentEditor-SidebarTab-Topics')};// Hide all panes and deactivate all tabs
|
|
4778
|
+
*/},{key:"switchSidebarTab",value:function switchSidebarTab(pTab){var tmpPanes={files:document.getElementById('ContentEditor-Sidebar-Container'),reference:document.getElementById('ContentEditor-SidebarReference-Container'),topics:document.getElementById('ContentEditor-SidebarTopics-Container'),vocabulary:document.getElementById('ContentEditor-Vocabulary-Container')};var tmpTabs={files:document.getElementById('ContentEditor-SidebarTab-Files'),reference:document.getElementById('ContentEditor-SidebarTab-Reference'),topics:document.getElementById('ContentEditor-SidebarTab-Topics'),vocabulary:document.getElementById('ContentEditor-SidebarTab-Vocabulary')};// Hide all panes and deactivate all tabs
|
|
4779
4779
|
for(var tmpKey in tmpPanes){if(tmpPanes[tmpKey])tmpPanes[tmpKey].style.display='none';if(tmpTabs[tmpKey])tmpTabs[tmpKey].classList.remove('active');}// Show the selected pane and activate the selected tab
|
|
4780
4780
|
if(tmpPanes[pTab])tmpPanes[pTab].style.display='';if(tmpTabs[pTab])tmpTabs[pTab].classList.add('active');// On mobile, give the Reference and Topics tabs more vertical space
|
|
4781
|
-
var tmpWrap=document.getElementById('ContentEditor-SidebarWrap');if(tmpWrap){if(pTab==='reference'||pTab==='topics'){tmpWrap.classList.add('sidebar-expanded-pane');}else{tmpWrap.classList.remove('sidebar-expanded-pane');}}// Lazy-render the Reference view on first switch
|
|
4781
|
+
var tmpWrap=document.getElementById('ContentEditor-SidebarWrap');if(tmpWrap){if(pTab==='reference'||pTab==='topics'||pTab==='vocabulary'){tmpWrap.classList.add('sidebar-expanded-pane');}else{tmpWrap.classList.remove('sidebar-expanded-pane');}}// Lazy-render the Reference view on first switch
|
|
4782
4782
|
if(pTab==='reference'){var tmpRefView=this.pict.views['ContentEditor-MarkdownReference'];if(tmpRefView&&!tmpRefView._hasRendered){tmpRefView.render();}}// Lazy-render the Topics view on first switch
|
|
4783
|
-
if(pTab==='topics'){var tmpTopicsView=this.pict.views['ContentEditor-Topics'];if(tmpTopicsView&&!tmpTopicsView._hasRendered){tmpTopicsView.render();}}
|
|
4783
|
+
if(pTab==='topics'){var tmpTopicsView=this.pict.views['ContentEditor-Topics'];if(tmpTopicsView&&!tmpTopicsView._hasRendered){tmpTopicsView.render();}}// Lazy-render the Vocabulary view on first switch
|
|
4784
|
+
if(pTab==='vocabulary'){var tmpVocabView=this.pict.views['ContentEditor-Vocabulary'];if(tmpVocabView){tmpVocabView.refreshTermList();}}}/**
|
|
4784
4785
|
* Handle F1: toggle between Reference and Files sidebar tabs.
|
|
4785
4786
|
* If the sidebar is collapsed, open it and switch to Reference.
|
|
4786
4787
|
*/},{key:"_handleF1",value:function _handleF1(){var tmpSettings=this.pict.AppData.ContentEditor;// If sidebar is collapsed, expand it and go to Reference
|