@iblai/iblai-js 2.4.5 → 2.5.1

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.
@@ -64637,6 +64637,10 @@ var spendCapsTabLabels$3 = {
64637
64637
  deleteError: "Couldn't delete the spend limit"
64638
64638
  }
64639
64639
  };
64640
+ var summernoteTextEditor$3 = {
64641
+ loadFailed: "The editor could not be loaded. Reload the page to try again.",
64642
+ loading: "Loading editor…"
64643
+ };
64640
64644
  var tabsAlertstab$3 = {
64641
64645
  searchAlertsPlaceholder: "Search alerts",
64642
64646
  searchAlertsAriaLabel: "Search alerts",
@@ -66666,6 +66670,7 @@ var en = {
66666
66670
  skillsProfileSkillsBox: skillsProfileSkillsBox$3,
66667
66671
  spendCapUsage: spendCapUsage$3,
66668
66672
  spendCapsTabLabels: spendCapsTabLabels$3,
66673
+ summernoteTextEditor: summernoteTextEditor$3,
66669
66674
  tabsAlertstab: tabsAlertstab$3,
66670
66675
  tabsDisclaimersTab: tabsDisclaimersTab$3,
66671
66676
  tabsEmbedTab: tabsEmbedTab$3,
@@ -71541,6 +71546,10 @@ var spendCapsTabLabels$2 = {
71541
71546
  deleteError: "Impossible de supprimer la limite de dépenses"
71542
71547
  }
71543
71548
  };
71549
+ var summernoteTextEditor$2 = {
71550
+ loadFailed: "L'éditeur n'a pas pu être chargé. Rechargez la page pour réessayer.",
71551
+ loading: "Chargement de l'éditeur…"
71552
+ };
71544
71553
  var tabsAlertstab$2 = {
71545
71554
  searchAlertsPlaceholder: "Rechercher des alertes",
71546
71555
  searchAlertsAriaLabel: "Rechercher des alertes",
@@ -73405,6 +73414,7 @@ var fr = {
73405
73414
  skillsProfileSkillsBox: skillsProfileSkillsBox$2,
73406
73415
  spendCapUsage: spendCapUsage$2,
73407
73416
  spendCapsTabLabels: spendCapsTabLabels$2,
73417
+ summernoteTextEditor: summernoteTextEditor$2,
73408
73418
  tabsAlertstab: tabsAlertstab$2,
73409
73419
  tabsDisclaimersTab: tabsDisclaimersTab$2,
73410
73420
  tabsEmbedTab: tabsEmbedTab$2,
@@ -78279,6 +78289,10 @@ var spendCapsTabLabels$1 = {
78279
78289
  deleteError: "No se pudo eliminar el límite de gasto"
78280
78290
  }
78281
78291
  };
78292
+ var summernoteTextEditor$1 = {
78293
+ loadFailed: "No se pudo cargar el editor. Vuelve a cargar la página para intentarlo de nuevo.",
78294
+ loading: "Cargando el editor…"
78295
+ };
78282
78296
  var tabsAlertstab$1 = {
78283
78297
  searchAlertsPlaceholder: "Buscar alertas",
78284
78298
  searchAlertsAriaLabel: "Buscar alertas",
@@ -80143,6 +80157,7 @@ var es = {
80143
80157
  skillsProfileSkillsBox: skillsProfileSkillsBox$1,
80144
80158
  spendCapUsage: spendCapUsage$1,
80145
80159
  spendCapsTabLabels: spendCapsTabLabels$1,
80160
+ summernoteTextEditor: summernoteTextEditor$1,
80146
80161
  tabsAlertstab: tabsAlertstab$1,
80147
80162
  tabsDisclaimersTab: tabsDisclaimersTab$1,
80148
80163
  tabsEmbedTab: tabsEmbedTab$1,
@@ -85017,6 +85032,10 @@ var spendCapsTabLabels = {
85017
85032
  deleteError: "无法删除支出限额"
85018
85033
  }
85019
85034
  };
85035
+ var summernoteTextEditor = {
85036
+ loadFailed: "编辑器加载失败。请重新加载页面后重试。",
85037
+ loading: "正在加载编辑器…"
85038
+ };
85020
85039
  var tabsAlertstab = {
85021
85040
  searchAlertsPlaceholder: "搜索提醒",
85022
85041
  searchAlertsAriaLabel: "搜索提醒",
@@ -86881,6 +86900,7 @@ var zh = {
86881
86900
  skillsProfileSkillsBox: skillsProfileSkillsBox,
86882
86901
  spendCapUsage: spendCapUsage,
86883
86902
  spendCapsTabLabels: spendCapsTabLabels,
86903
+ summernoteTextEditor: summernoteTextEditor,
86884
86904
  tabsAlertstab: tabsAlertstab,
86885
86905
  tabsDisclaimersTab: tabsDisclaimersTab,
86886
86906
  tabsEmbedTab: tabsEmbedTab,
@@ -187264,6 +187284,521 @@ function RichTextEditor({ value, onChange, exportFormat = 'markdown', disabled,
187264
187284
  return (jsxs("div", { children: [jsx(EditorToolbar, { editor: editor, onAddLink: handleAddLink, onAddImage: handleAddImage, exportFormat: exportFormat, editorMode: editorMode, onToggleMode: handleToggleMode, disabled: disabled }), editorMode === 'visual' ? (jsx(EditorContent, { editor: editor, id: id, role: "textbox", "aria-multiline": "true", "aria-label": ariaLabel, "aria-labelledby": ariaLabel ? undefined : ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-required": ariaRequired, "aria-invalid": ariaInvalid, "aria-disabled": disabled ? 'true' : undefined })) : (jsx(Textarea, { value: htmlSource, onChange: handleSourceChange, disabled: disabled, placeholder: t('richTextEditor.enterHtmlPlaceholder'), id: id, "aria-label": ariaLabel || t('richTextEditor.htmlSourceEditorLabel'), "aria-labelledby": ariaLabel ? undefined : ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-required": ariaRequired, "aria-invalid": ariaInvalid, className: "min-h-[150px] max-h-[300px] overflow-y-auto rounded-b-md border font-mono text-sm leading-loose" }))] }));
187265
187285
  }
187266
187286
 
187287
+ function styleInject(css, ref) {
187288
+ if ( ref === void 0 ) ref = {};
187289
+ var insertAt = ref.insertAt;
187290
+
187291
+ if (typeof document === 'undefined') { return; }
187292
+
187293
+ var head = document.head || document.getElementsByTagName('head')[0];
187294
+ var style = document.createElement('style');
187295
+ style.type = 'text/css';
187296
+
187297
+ if (insertAt === 'top') {
187298
+ if (head.firstChild) {
187299
+ head.insertBefore(style, head.firstChild);
187300
+ } else {
187301
+ head.appendChild(style);
187302
+ }
187303
+ } else {
187304
+ head.appendChild(style);
187305
+ }
187306
+
187307
+ if (style.styleSheet) {
187308
+ style.styleSheet.cssText = css;
187309
+ } else {
187310
+ style.appendChild(document.createTextNode(css));
187311
+ }
187312
+ }
187313
+
187314
+ var css_248z = "[class*=\" note-icon\"]:before,[class^=note-icon]:before{display:inline-block;font-family:summernote;font-size:inherit;font-style:normal;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align:before{content:\"\\ea01\"}.note-icon-align-center:before{content:\"\\ea02\"}.note-icon-align-indent:before{content:\"\\ea03\"}.note-icon-align-justify:before{content:\"\\ea04\"}.note-icon-align-left:before{content:\"\\ea05\"}.note-icon-align-outdent:before{content:\"\\ea06\"}.note-icon-align-right:before{content:\"\\ea07\"}.note-icon-arrow-circle-down:before{content:\"\\ea08\"}.note-icon-arrow-circle-left:before{content:\"\\ea09\"}.note-icon-arrow-circle-right:before{content:\"\\ea0a\"}.note-icon-arrow-circle-up:before{content:\"\\ea0b\"}.note-icon-arrows-alt:before{content:\"\\ea0c\"}.note-icon-arrows-h:before{content:\"\\ea0d\"}.note-icon-arrows-v:before{content:\"\\ea0e\"}.note-icon-bold:before{content:\"\\ea0f\"}.note-icon-caret:before{content:\"\\ea10\"}.note-icon-chain-broken:before{content:\"\\ea11\"}.note-icon-circle:before{content:\"\\ea12\"}.note-icon-close:before{content:\"\\ea13\"}.note-icon-code:before{content:\"\\ea14\"}.note-icon-col-after:before{content:\"\\ea15\"}.note-icon-col-before:before{content:\"\\ea16\"}.note-icon-col-remove:before{content:\"\\ea17\"}.note-icon-eraser:before{content:\"\\ea18\"}.note-icon-float-left:before{content:\"\\ea19\"}.note-icon-float-none:before{content:\"\\ea1a\"}.note-icon-float-right:before{content:\"\\ea1b\"}.note-icon-font:before{content:\"\\ea1c\"}.note-icon-frame:before{content:\"\\ea1d\"}.note-icon-italic:before{content:\"\\ea1e\"}.note-icon-link:before{content:\"\\ea1f\"}.note-icon-magic:before{content:\"\\ea20\"}.note-icon-menu-check:before{content:\"\\ea21\"}.note-icon-minus:before{content:\"\\ea22\"}.note-icon-orderedlist:before{content:\"\\ea23\"}.note-icon-pencil:before{content:\"\\ea24\"}.note-icon-picture:before{content:\"\\ea25\"}.note-icon-question:before{content:\"\\ea26\"}.note-icon-redo:before{content:\"\\ea27\"}.note-icon-rollback:before{content:\"\\ea28\"}.note-icon-row-above:before{content:\"\\ea29\"}.note-icon-row-below:before{content:\"\\ea2a\"}.note-icon-row-remove:before{content:\"\\ea2b\"}.note-icon-special-character:before{content:\"\\ea2c\"}.note-icon-square:before{content:\"\\ea2d\"}.note-icon-strikethrough:before{content:\"\\ea2e\"}.note-icon-subscript:before{content:\"\\ea2f\"}.note-icon-summernote:before{content:\"\\ea30\"}.note-icon-superscript:before{content:\"\\ea31\"}.note-icon-table:before{content:\"\\ea32\"}.note-icon-text-height:before{content:\"\\ea33\"}.note-icon-trash:before{content:\"\\ea34\"}.note-icon-underline:before{content:\"\\ea35\"}.note-icon-undo:before{content:\"\\ea36\"}.note-icon-unorderedlist:before{content:\"\\ea37\"}.note-icon-video:before{content:\"\\ea38\"}.note-frame{border-radius:4px;-ms-box-sizing:border-box;box-sizing:border-box;color:#000;font-family:sans-serif}.note-toolbar{background-color:#f5f5f5;border-bottom:1px solid;border-color:#ddd;border-top-left-radius:3px;border-top-right-radius:3px;color:#333;padding:10px 5px}.note-btn-group{display:inline-block;margin-right:8px;position:relative}.note-btn-group>.note-btn-group{margin-right:0}.note-btn-group>.note-btn:first-child{margin-left:0}.note-btn-group .note-btn+.note-btn,.note-btn-group .note-btn+.note-btn-group,.note-btn-group .note-btn-group+.note-btn,.note-btn-group .note-btn-group+.note-btn-group{margin-left:-1px}.note-btn-group>.note-btn-group:not(:first-child)>.note-btn,.note-btn-group>.note-btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.note-btn-group>.note-btn-group:not(:last-child)>.note-btn,.note-btn-group>.note-btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.note-btn-group.open>.note-dropdown{display:block}.note-btn{background-color:#fff;background-image:none;border:1px solid #dae0e5;border-radius:3px;color:#333;cursor:pointer;display:inline-block;font-size:14px;font-weight:400;line-height:1.4;margin-bottom:0;outline:0;padding:5px 10px;text-align:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.note-btn.focus,.note-btn:focus,.note-btn:hover{background-color:#ebebeb;border-color:#dae0e5;color:#333}.note-btn.disabled.focus,.note-btn.disabled:focus,.note-btn[disabled].focus,.note-btn[disabled]:focus,fieldset[disabled] .note-btn.focus,fieldset[disabled] .note-btn:focus{background-color:#fff;border-color:#dae0e5}.note-btn.active,.note-btn.focus,.note-btn:active,.note-btn:focus,.note-btn:hover{background-color:#ebebeb;border:1px solid #dae0e5;border-radius:1px;color:#333;outline:0;text-decoration:none}.note-btn.active,.note-btn:active{background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.note-btn.disabled,.note-btn[disabled],fieldset[disabled] .note-btn{box-shadow:none;cursor:not-allowed;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=65);filter:alpha(opacity=65);-webkit-opacity:.65;-khtml-opacity:.65;-moz-opacity:.65;opacity:.65}.note-btn>span.note-icon-caret:first-child{margin-left:-1px}.note-btn>span.note-icon-caret:nth-child(2){margin-right:-5px;padding-left:3px}.note-btn-primary{background:#fa6362;color:#fff}.note-btn-primary.focus,.note-btn-primary:focus,.note-btn-primary:hover{background-color:#fa6362;border:1px solid #dae0e5;border-radius:1px;color:#fff;text-decoration:none}.note-btn-block{display:block;width:100%}.note-btn-block+.note-btn-block{margin-top:5px}input[type=button].note-btn-block,input[type=reset].note-btn-block,input[type=submit].note-btn-block{width:100%}button.close{-webkit-appearance:none;background:transparent;border:0;cursor:pointer;padding:0}.close{color:#000;float:right;font-size:21px;line-height:1;opacity:.2}.close:hover{-ms-filter:alpha(opacity=100);filter:alpha(opacity=100);-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;opacity:1}.note-dropdown{position:relative}.note-color .dropdown-toggle{padding-left:5px;width:30px}.note-dropdown-menu{background:#fff;background-clip:padding-box;border:1px solid #e2e2e2;box-shadow:0 1px 1px rgba(0,0,0,.06);display:none;float:left;left:0;min-width:100px;padding:5px;position:absolute;text-align:left;top:100%;z-index:1000}.note-dropdown-menu>:last-child{margin-right:0}.note-btn-group.open .note-dropdown-menu,.note-dropdown-item{display:block}.note-dropdown-item:hover{background-color:#ebebeb}a.note-dropdown-item,a.note-dropdown-item:hover{color:#000;margin:5px 0;text-decoration:none}.note-modal{bottom:0;display:none;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);filter:alpha(opacity=100);left:0;-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;opacity:1;position:fixed;right:0;top:0;z-index:1050}.note-modal.open{display:block}.note-modal-content{background:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.2);border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5);margin:30px 20px;outline:0;position:relative;width:auto}.note-modal-header{border:1px solid #ededef;padding:10px 20px}.note-modal-body{padding:20px 30px;position:relative}.note-modal-body kbd{background-color:#000;border-radius:2px;-ms-box-sizing:border-box;box-sizing:border-box;color:#fff;font-weight:700;padding:3px 5px}.note-modal-footer{height:40px;padding:10px;text-align:center}.note-modal-footer a{color:#337ab7;text-decoration:none}.note-modal-footer a:focus,.note-modal-footer a:hover{color:#23527c;text-decoration:underline}.note-modal-footer .note-btn{float:right}.note-modal-title{color:#42515f;font-size:20px;line-height:1.4;margin:0}.note-modal-backdrop{background:#000;bottom:0;display:none;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);filter:alpha(opacity=50);left:0;-webkit-opacity:.5;-khtml-opacity:.5;-moz-opacity:.5;opacity:.5;position:fixed;right:0;top:0;z-index:1040}.note-modal-backdrop.open{display:block}@media (min-width:768px){.note-modal-content{margin:30px auto;width:600px}}@media (min-width:992px){.note-modal-content-large{width:900px}}.note-modal .note-help-block{color:#737373;display:block;margin-bottom:10px;margin-top:5px}.note-modal .note-nav{display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.note-modal .note-nav-link{background-color:transparent;color:#007bff;display:block;padding:.5rem 1rem;text-decoration:none;-webkit-text-decoration-skip:objects}.note-modal .note-nav-link:focus,.note-modal .note-nav-link:hover{color:#0056b3;text-decoration:none}.note-modal .note-nav-link.disabled{color:#868e96}.note-modal .note-nav-tabs{border-bottom:1px solid #ddd}.note-modal .note-nav-tabs .note-nav-item{margin-bottom:-1px}.note-modal .note-nav-tabs .note-nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.note-modal .note-nav-tabs .note-nav-link:focus,.note-modal .note-nav-tabs .note-nav-link:hover{border-color:#e9ecef #e9ecef #ddd}.note-modal .note-nav-tabs .note-nav-link.disabled{background-color:transparent;border-color:transparent;color:#868e96}.note-modal .note-nav-tabs .note-nav-item.show .note-nav-link{background-color:#fff;border-color:#ddd #ddd #fff;color:#495057}.note-modal .note-tab-content{margin:15px auto}.note-modal .note-tab-content>.note-tab-pane,.note-modal .note-tab-content>.note-tab-pane:target~.note-tab-pane:last-child{display:none}.note-modal .note-tab-content>.note-tab-pane:target,.note-modal .note-tab-content>:last-child{display:block}.note-form-group{padding-bottom:20px}.note-form-group:last-child{padding-bottom:0}.note-form-label{color:#42515f;display:block;font-size:16px;font-weight:700;margin-bottom:10px;width:100%}.note-input{background:#fff;border:1px solid #ededef;-ms-box-sizing:border-box;box-sizing:border-box;display:block;font-size:14px;outline:0;padding:6px 4px;width:100%}.note-input::-webkit-input-placeholder{color:#eee}.note-input:-moz-placeholder,.note-input::-moz-placeholder{color:#eee}.note-input:-ms-input-placeholder{color:#eee}.note-tooltip{display:block;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);filter:alpha(opacity=0);font-size:13px;-webkit-opacity:0;-khtml-opacity:0;-moz-opacity:0;opacity:0;position:absolute;transition:opacity .15s;z-index:1070}.note-tooltip.in{-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=90);filter:alpha(opacity=90);-webkit-opacity:.9;-khtml-opacity:.9;-moz-opacity:.9;opacity:.9}.note-tooltip.top{margin-top:-3px;padding:5px 0}.note-tooltip.right{margin-left:3px;padding:0 5px}.note-tooltip.bottom{margin-top:3px;padding:5px 0}.note-tooltip.left{margin-left:-3px;padding:0 5px}.note-tooltip.bottom .note-tooltip-arrow{border-bottom-color:#000;border-width:0 5px 5px;left:50%;margin-left:-5px;top:0}.note-tooltip.top .note-tooltip-arrow{border-top-color:#000;border-width:5px 5px 0;bottom:0;left:50%;margin-left:-5px}.note-tooltip.right .note-tooltip-arrow{border-right-color:#000;border-width:5px 5px 5px 0;left:0;margin-top:-5px;top:50%}.note-tooltip.left .note-tooltip-arrow{border-left-color:#000;border-width:5px 0 5px 5px;margin-top:-5px;right:0;top:50%}.note-tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.note-tooltip-content{background-color:#000;color:#fff;font-family:sans-serif;max-width:200px;padding:3px 8px;text-align:center}.note-popover{background:#fff;border:1px solid #ccc;display:block;display:none;font-family:sans-serif;font-size:13px;position:absolute;z-index:1060}.note-popover.in{display:block}.note-popover.top{margin-top:-10px;padding:5px 0}.note-popover.right{margin-left:10px;padding:0 5px}.note-popover.bottom{margin-top:10px;padding:5px 0}.note-popover.left{margin-left:-10px;padding:0 5px}.note-popover.bottom .note-popover-arrow{border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0;left:20px;margin-left:-10px;top:-11px}.note-popover.bottom .note-popover-arrow:after{border-bottom-color:#fff;border-top-width:0;content:\"\\0020\";margin-left:-10px;top:1px}.note-popover.top .note-popover-arrow{border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px;left:20px;margin-left:-10px}.note-popover.top .note-popover-arrow:after{border-bottom-width:0;border-top-color:#fff;bottom:1px;content:\"\\0020\";margin-left:-10px}.note-popover.right .note-popover-arrow{border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25);left:-11px;margin-top:-10px;top:50%}.note-popover.right .note-popover-arrow:after{border-left-width:0;border-right-color:#fff;content:\"\\0020\";left:1px;margin-top:-10px}.note-popover.left .note-popover-arrow{border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0;margin-top:-10px;right:-11px;top:50%}.note-popover.left .note-popover-arrow:after{border-left-color:#fff;border-right-width:0;content:\"\\0020\";margin-top:-10px;right:1px}.note-popover-arrow{border:11px solid transparent;height:0;position:absolute;width:0}.note-popover-arrow:after{border:10px solid transparent;content:\"\\0020\";display:block;height:0;position:absolute;width:0}.note-popover-content{background-color:#fff;color:#000;min-height:30px;min-width:100px;padding:3px 8px;text-align:center}.note-editor{position:relative}.note-editor .note-dropzone{background-color:#fff;color:#87cefa;display:none;opacity:.95;position:absolute;z-index:100}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;font-size:28px;font-weight:700;text-align:center;vertical-align:middle}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-airframe,.note-editor.note-frame{border:1px solid rgba(0,0,0,.196)}.note-editor.note-airframe.codeview .note-editing-area .note-editable,.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-airframe.codeview .note-editing-area .note-codable,.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-airframe .note-editing-area,.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-airframe .note-editing-area .note-editable,.note-editor.note-frame .note-editing-area .note-editable{overflow:auto;padding:10px;word-wrap:break-word}.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false],.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false]{background-color:hsla(0,0%,50%,.114)}.note-editor.note-airframe .note-editing-area .note-codable,.note-editor.note-frame .note-editing-area .note-codable{background-color:#222;border:none;border-radius:0;box-shadow:none;-ms-box-sizing:border-box;box-sizing:border-box;color:#ccc;display:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;margin-bottom:0;outline:none;padding:10px;resize:none;width:100%}.note-editor.note-airframe.fullscreen,.note-editor.note-frame.fullscreen{left:0;position:fixed;top:0;width:100%!important;z-index:1050}.note-editor.note-airframe.fullscreen .note-resizebar,.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-airframe .note-status-output,.note-editor.note-frame .note-status-output{border:0;border-top:1px solid #e2e2e2;color:#000;display:block;font-size:14px;height:20px;line-height:1.42857143;margin-bottom:0;width:100%}.note-editor.note-airframe .note-status-output:empty,.note-editor.note-frame .note-status-output:empty{border-top:0 solid transparent;height:0}.note-editor.note-airframe .note-status-output .pull-right,.note-editor.note-frame .note-status-output .pull-right{float:right!important}.note-editor.note-airframe .note-status-output .text-muted,.note-editor.note-frame .note-status-output .text-muted{color:#777}.note-editor.note-airframe .note-status-output .text-primary,.note-editor.note-frame .note-status-output .text-primary{color:#286090}.note-editor.note-airframe .note-status-output .text-success,.note-editor.note-frame .note-status-output .text-success{color:#3c763d}.note-editor.note-airframe .note-status-output .text-info,.note-editor.note-frame .note-status-output .text-info{color:#31708f}.note-editor.note-airframe .note-status-output .text-warning,.note-editor.note-frame .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-airframe .note-status-output .text-danger,.note-editor.note-frame .note-status-output .text-danger{color:#a94442}.note-editor.note-airframe .note-status-output .alert,.note-editor.note-frame .note-status-output .alert{background-color:#f5f5f5;border-radius:0;color:#000;margin:-7px 0 0;padding:7px 10px 2px}.note-editor.note-airframe .note-status-output .alert .note-icon,.note-editor.note-frame .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-airframe .note-status-output .alert-success,.note-editor.note-frame .note-status-output .alert-success{background-color:#dff0d8!important;color:#3c763d!important}.note-editor.note-airframe .note-status-output .alert-info,.note-editor.note-frame .note-status-output .alert-info{background-color:#d9edf7!important;color:#31708f!important}.note-editor.note-airframe .note-status-output .alert-warning,.note-editor.note-frame .note-status-output .alert-warning{background-color:#fcf8e3!important;color:#8a6d3b!important}.note-editor.note-airframe .note-status-output .alert-danger,.note-editor.note-frame .note-status-output .alert-danger{background-color:#f2dede!important;color:#a94442!important}.note-editor.note-airframe .note-statusbar,.note-editor.note-frame .note-statusbar{background-color:hsla(0,0%,50%,.114);border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid rgba(0,0,0,.196)}.note-editor.note-airframe .note-statusbar .note-resizebar,.note-editor.note-frame .note-statusbar .note-resizebar{cursor:ns-resize;height:9px;padding-top:1px;width:100%}.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{border-top:1px solid rgba(0,0,0,.196);margin:1px auto;width:20px}.note-editor.note-airframe .note-statusbar.locked .note-resizebar,.note-editor.note-frame .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-airframe .note-placeholder,.note-editor.note-frame .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.note-popover.popover .arrow{left:20px!important}.note-toolbar{position:relative}.note-editor .note-toolbar,.note-popover .popover-content{margin:0;padding:0 0 5px 5px}.note-editor .note-toolbar>.note-btn-group,.note-popover .popover-content>.note-btn-group{margin-left:0;margin-right:5px;margin-top:5px}.note-editor .note-toolbar .note-btn-group .note-table,.note-popover .popover-content .note-btn-group .note-table{min-width:0;padding:5px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{cursor:pointer;height:10em;position:absolute!important;width:10em;z-index:3}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{background:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC\") repeat;height:5em;position:relative!important;width:5em;z-index:1}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{background:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC\") repeat;height:1em;position:absolute!important;width:1em;z-index:2}.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre,.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p,.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p{margin:0;padding:0}.note-editor .note-toolbar .note-color-all .note-dropdown-menu,.note-popover .popover-content .note-color-all .note-dropdown-menu{min-width:337px}.note-editor .note-toolbar .note-color .dropdown-toggle,.note-popover .popover-content .note-color .dropdown-toggle{padding-left:5px;width:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title{border-bottom:1px solid #eee;font-size:12px;margin:2px 7px;text-align:center}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select{border-radius:5px;cursor:pointer;font-size:11px;margin:3px;padding:0 3px;width:100%}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-editor .note-toolbar .note-para .note-dropdown-menu,.note-popover .popover-content .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div,.note-popover .popover-content .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-editor .note-toolbar .note-dropdown-menu,.note-popover .popover-content .note-dropdown-menu{min-width:160px}.note-editor .note-toolbar .note-dropdown-menu.right,.note-popover .popover-content .note-dropdown-menu.right{left:auto;right:0}.note-editor .note-toolbar .note-dropdown-menu.right:before,.note-popover .popover-content .note-dropdown-menu.right:before{left:auto!important;right:9px}.note-editor .note-toolbar .note-dropdown-menu.right:after,.note-popover .popover-content .note-dropdown-menu.right:after{left:auto!important;right:10px}.note-editor .note-toolbar .note-dropdown-menu.note-check a i,.note-popover .popover-content .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i,.note-popover .popover-content .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-editor .note-toolbar .note-fontsize-10,.note-popover .popover-content .note-fontsize-10{font-size:10px}.note-editor .note-toolbar .note-color-palette,.note-popover .popover-content .note-color-palette{line-height:1}.note-editor .note-toolbar .note-color-palette div .note-color-btn,.note-popover .popover-content .note-color-palette div .note-color-btn{border:0;border-radius:0;height:20px;margin:0;padding:0;width:20px}.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover,.note-popover .popover-content .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{border:4px dashed #d3d3d3;color:#d3d3d3;font-size:30px;line-height:4;margin-bottom:10px;min-height:100px;text-align:center}.note-placeholder{color:gray;display:none;position:absolute}.note-handle .note-control-selection{border:1px solid #000;display:none;position:absolute}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{background-color:#000;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30);height:100%;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;width:100%}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-holder,.note-handle .note-control-selection .note-control-sizing{border:1px solid #000;height:7px;width:7px}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{border-bottom:none;border-right:none;left:-5px;top:-5px}.note-handle .note-control-selection .note-control-ne{border-bottom:none;border-left:none;right:-5px;top:-5px}.note-handle .note-control-selection .note-control-sw{border-right:none;border-top:none;bottom:-5px;left:-5px}.note-handle .note-control-selection .note-control-se{bottom:-5px;cursor:se-resize;right:-5px}.note-handle .note-control-selection .note-control-se.note-control-holder{border-left:none;border-top:none;cursor:default}.note-handle .note-control-selection .note-control-selection-info{background-color:#000;border-radius:5px;bottom:0;color:#fff;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70);font-size:12px;margin:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;padding:5px;right:0}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{max-height:150px;overflow:auto;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{background-color:#428bca;clear:both;color:#fff;cursor:pointer;display:block;font-weight:400;line-height:1.4;outline:0;text-decoration:none;white-space:nowrap}body .note-fullscreen-body,html .note-fullscreen-body{overflow:hidden!important}.note-editable ol li,.note-editable ul li{list-style-position:inside}.note-editor .note-editing-area .note-editable table{border-collapse:collapse;width:100%}.note-editor .note-editing-area .note-editable table td,.note-editor .note-editing-area .note-editable table th{border:1px solid #ececec;padding:5px 3px}.note-editor .note-editing-area .note-editable a{background-color:inherit;color:#337ab7;font-family:inherit;font-weight:inherit;text-decoration:inherit}.note-editor .note-editing-area .note-editable a:focus,.note-editor .note-editing-area .note-editable a:hover{color:#23527c;outline:0;text-decoration:underline}.note-editor .note-editing-area .note-editable figure{margin:0}.note-modal .note-modal-body label{display:inline-block;margin-bottom:2px;padding:2px 5px}.note-modal .note-modal-body .help-list-item:hover{background-color:#e0e0e0}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.help-list-item label{display:inline-block;margin-bottom:5px}";
187315
+ styleInject(css_248z);
187316
+
187317
+ // ---------------------------------------------------------------------------
187318
+ // Lazy loading
187319
+ // ---------------------------------------------------------------------------
187320
+ /** Maps the web-containers locale onto the language packs Summernote ships. */
187321
+ const SUMMERNOTE_LANG_BY_LOCALE = {
187322
+ en: 'en-US',
187323
+ fr: 'fr-FR',
187324
+ es: 'es-ES',
187325
+ zh: 'zh-CN',
187326
+ };
187327
+ /** `en-US` is built into the bundle, every other pack is a separate file. */
187328
+ const SUMMERNOTE_LANG_LOADERS = {
187329
+ 'fr-FR': () => import('summernote/dist/lang/summernote-fr-FR.min.js'),
187330
+ 'es-ES': () => import('summernote/dist/lang/summernote-es-ES.min.js'),
187331
+ 'zh-CN': () => import('summernote/dist/lang/summernote-zh-CN.min.js'),
187332
+ };
187333
+ let summernoteCorePromise = null;
187334
+ const loadedLanguages = new Set();
187335
+ /** Serialises the UMD imports so two borrows of the globals never overlap. */
187336
+ let umdImportQueue = Promise.resolve();
187337
+ /**
187338
+ * Runs a UMD import with `window.jQuery`/`window.$` temporarily pointing at our
187339
+ * copy, then puts the host page's globals back.
187340
+ *
187341
+ * Summernote and its language packs read the global while they evaluate. This
187342
+ * package ships into embeddable contexts and host pages that run their own
187343
+ * jQuery (Open edX especially), so the global is borrowed, never claimed.
187344
+ */
187345
+ function importWithGlobalJQuery(jQuery, load) {
187346
+ const run = umdImportQueue.then(async () => {
187347
+ const globalScope = window;
187348
+ const previous = ['jQuery', '$'].map((key) => ({
187349
+ key,
187350
+ existed: key in globalScope,
187351
+ value: globalScope[key],
187352
+ }));
187353
+ globalScope.jQuery = jQuery;
187354
+ globalScope.$ = jQuery;
187355
+ try {
187356
+ return await load();
187357
+ }
187358
+ finally {
187359
+ previous.forEach(({ key, existed, value }) => {
187360
+ if (existed) {
187361
+ globalScope[key] = value;
187362
+ }
187363
+ else {
187364
+ delete globalScope[key];
187365
+ }
187366
+ });
187367
+ }
187368
+ });
187369
+ // Keep the queue usable after a failed import.
187370
+ umdImportQueue = run.catch(() => undefined);
187371
+ return run;
187372
+ }
187373
+ /**
187374
+ * Loads jQuery + Summernote in the browser only. Both are pulled in lazily because
187375
+ * Summernote touches `document`/`navigator` at module scope and would break SSR.
187376
+ */
187377
+ function loadSummernoteCore() {
187378
+ if (!summernoteCorePromise) {
187379
+ summernoteCorePromise = (async () => {
187380
+ var _a;
187381
+ const jqueryModule = await import('jquery');
187382
+ const jQuery = ((_a = jqueryModule.default) !== null && _a !== void 0 ? _a : jqueryModule);
187383
+ await importWithGlobalJQuery(jQuery, () => import('summernote/dist/summernote-lite.min.js'));
187384
+ return jQuery;
187385
+ })().catch((error) => {
187386
+ // Without this the editor stays dead for the rest of the session: a cached
187387
+ // rejection would be replayed by every later mount, so one chunk 404 after
187388
+ // a deploy could never recover.
187389
+ summernoteCorePromise = null;
187390
+ throw error;
187391
+ });
187392
+ }
187393
+ return summernoteCorePromise;
187394
+ }
187395
+ async function loadSummernote(langCode) {
187396
+ const jQuery = await loadSummernoteCore();
187397
+ const loadLanguage = SUMMERNOTE_LANG_LOADERS[langCode];
187398
+ if (loadLanguage && !loadedLanguages.has(langCode)) {
187399
+ try {
187400
+ await importWithGlobalJQuery(jQuery, loadLanguage);
187401
+ loadedLanguages.add(langCode);
187402
+ }
187403
+ catch (_a) {
187404
+ // Fall back to the built-in en-US strings.
187405
+ }
187406
+ }
187407
+ return jQuery;
187408
+ }
187409
+ // ---------------------------------------------------------------------------
187410
+ // Icons
187411
+ // ---------------------------------------------------------------------------
187412
+ /**
187413
+ * Summernote renders its toolbar with an icon font that lives next to its
187414
+ * stylesheet. Bundlers that inline the stylesheet cannot resolve those font
187415
+ * files, so we hand Summernote inline SVGs (matching the lucide set used by the
187416
+ * rest of the design system) instead.
187417
+ */
187418
+ const svgIcon = (body) => `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" style="display:inline-block;vertical-align:middle">${body}</svg>`;
187419
+ const ICON_INLINE_CODE = svgIcon('<path d="m18 16 4-4-4-4"/><path d="m6 8-4 4 4 4"/><path d="m14.5 4-5 16"/>');
187420
+ const SUMMERNOTE_ICONS = {
187421
+ magic: svgIcon('<path d="M12 4v16"/><path d="M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"/><path d="M9 20h6"/>'),
187422
+ caret: svgIcon('<path d="m6 9 6 6 6-6"/>'),
187423
+ bold: svgIcon('<path d="M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8"/>'),
187424
+ italic: svgIcon('<line x1="19" x2="10" y1="4" y2="4"/><line x1="14" x2="5" y1="20" y2="20"/><line x1="15" x2="9" y1="4" y2="20"/>'),
187425
+ underline: svgIcon('<path d="M6 4v6a6 6 0 0 0 12 0V4"/><line x1="4" x2="20" y1="20" y2="20"/>'),
187426
+ eraser: svgIcon('<path d="M4 7V4h16v3"/><path d="M5 20h6"/><path d="M13 4 8 20"/><path d="m15 15 5 5"/><path d="m20 15-5 5"/>'),
187427
+ code: ICON_INLINE_CODE,
187428
+ align: svgIcon('<path d="M15 12H3"/><path d="M17 18H3"/><path d="M21 6H3"/>'),
187429
+ alignLeft: svgIcon('<path d="M15 12H3"/><path d="M17 18H3"/><path d="M21 6H3"/>'),
187430
+ alignCenter: svgIcon('<path d="M17 12H7"/><path d="M19 18H5"/><path d="M21 6H3"/>'),
187431
+ alignRight: svgIcon('<path d="M21 12H9"/><path d="M21 18H7"/><path d="M21 6H3"/>'),
187432
+ alignJustify: svgIcon('<path d="M3 12h18"/><path d="M3 18h18"/><path d="M3 6h18"/>'),
187433
+ unorderedlist: svgIcon('<path d="M3 12h.01"/><path d="M3 18h.01"/><path d="M3 6h.01"/><path d="M8 12h13"/><path d="M8 18h13"/><path d="M8 6h13"/>'),
187434
+ orderedlist: svgIcon('<path d="M10 12h11"/><path d="M10 18h11"/><path d="M10 6h11"/><path d="M4 10h2"/><path d="M4 6h1v4"/><path d="M6 18H4c0-1 2-2 2-3s-1-1.5-2-1"/>'),
187435
+ link: svgIcon('<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>'),
187436
+ unlink: svgIcon('<path d="m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"/><path d="m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"/><line x1="8" x2="8" y1="2" y2="5"/><line x1="2" x2="5" y1="8" y2="8"/><line x1="16" x2="16" y1="19" y2="22"/><line x1="19" x2="22" y1="16" y2="16"/>'),
187437
+ picture: svgIcon('<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/>'),
187438
+ minus: svgIcon('<path d="M5 12h14"/>'),
187439
+ undo: svgIcon('<path d="M9 14 4 9l5-5"/><path d="M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"/>'),
187440
+ redo: svgIcon('<path d="m15 14 5-5-5-5"/><path d="M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13"/>'),
187441
+ arrowsAlt: svgIcon('<path d="M8 3H5a2 2 0 0 0-2 2v3"/><path d="M21 8V5a2 2 0 0 0-2-2h-3"/><path d="M3 16v3a2 2 0 0 0 2 2h3"/><path d="M16 21h3a2 2 0 0 0 2-2v-3"/>'),
187442
+ question: svgIcon('<circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/>'),
187443
+ close: svgIcon('<path d="M18 6 6 18"/><path d="m6 6 12 12"/>'),
187444
+ trash: svgIcon('<path d="M10 11v6"/><path d="M14 11v6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M3 6h18"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>'),
187445
+ pencil: svgIcon('<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/><path d="m15 5 4 4"/>'),
187446
+ floatLeft: svgIcon('<path d="M15 12H3"/><path d="M17 18H3"/><path d="M21 6H3"/>'),
187447
+ floatRight: svgIcon('<path d="M21 12H9"/><path d="M21 18H7"/><path d="M21 6H3"/>'),
187448
+ floatNone: svgIcon('<path d="M3 12h18"/><path d="M3 18h18"/><path d="M3 6h18"/>'),
187449
+ };
187450
+ // ---------------------------------------------------------------------------
187451
+ // Helpers
187452
+ // ---------------------------------------------------------------------------
187453
+ /**
187454
+ * Strips anything executable before content reaches the editable region.
187455
+ *
187456
+ * Values come off the platform API, so a template saved by one tenant admin must
187457
+ * not be able to run script in another admin's session. `innerHTML` will not run
187458
+ * a `<script>`, but it happily fires `onerror`/`onload` handlers.
187459
+ *
187460
+ * Parsing happens in an inert `DOMParser` document — which neither fetches
187461
+ * resources nor runs handlers — rather than by handing the string straight to
187462
+ * DOMPurify: the HTML parser hoists a leading `<style>` into `<head>`, and
187463
+ * DOMPurify only returns the body, so email templates would silently lose their
187464
+ * stylesheet. `<style>` is kept deliberately; it is why `codeviewFilter` is off.
187465
+ */
187466
+ function sanitizeEditorHtml(html) {
187467
+ const doc = new DOMParser().parseFromString(html, 'text/html');
187468
+ doc.body.prepend(...Array.from(doc.head.querySelectorAll('style')));
187469
+ purify.sanitize(doc.body, {
187470
+ IN_PLACE: true,
187471
+ ADD_TAGS: ['style'],
187472
+ ADD_ATTR: ['target'],
187473
+ });
187474
+ return doc.body.innerHTML;
187475
+ }
187476
+ const DEFAULT_MIN_HEIGHT = 150;
187477
+ /** Matches the cap `RichTextEditor` puts on its own editing area. */
187478
+ const EDITOR_MAX_HEIGHT = 300;
187479
+ /** Summernote wants a number of pixels, the public prop mirrors CSS values. */
187480
+ function toPixels(size, fallback) {
187481
+ const parsed = Number.parseInt(size !== null && size !== void 0 ? size : '', 10);
187482
+ return Number.isFinite(parsed) ? parsed : fallback;
187483
+ }
187484
+ /** Walks up from the current selection looking for a `<code>` ancestor. */
187485
+ function findCodeAncestor(node, boundary) {
187486
+ let current = node;
187487
+ while (current && current !== boundary) {
187488
+ if (current.nodeType === Node.ELEMENT_NODE && current.tagName === 'CODE') {
187489
+ return current;
187490
+ }
187491
+ current = current.parentNode;
187492
+ }
187493
+ return null;
187494
+ }
187495
+ /** The current selection, but only when it sits inside `editable`. */
187496
+ function selectionRangeWithin(editable) {
187497
+ const selection = window.getSelection();
187498
+ if (!selection || selection.rangeCount === 0) {
187499
+ return null;
187500
+ }
187501
+ const range = selection.getRangeAt(0);
187502
+ return editable.contains(range.commonAncestorContainer) ? range : null;
187503
+ }
187504
+ /**
187505
+ * Summernote has no inline-code button, so we register one that mirrors the
187506
+ * `<code>` toggle offered by the TipTap based `RichTextEditor`. The range is
187507
+ * captured before the editor is focused, since focusing can drop the selection.
187508
+ */
187509
+ function toggleInlineCode(editable, range) {
187510
+ if (!range) {
187511
+ return;
187512
+ }
187513
+ const existing = findCodeAncestor(range.commonAncestorContainer, editable);
187514
+ if (existing) {
187515
+ existing.replaceWith(...Array.from(existing.childNodes));
187516
+ return;
187517
+ }
187518
+ if (range.collapsed) {
187519
+ return;
187520
+ }
187521
+ const code = document.createElement('code');
187522
+ code.appendChild(range.extractContents());
187523
+ range.insertNode(code);
187524
+ const nextRange = document.createRange();
187525
+ nextRange.selectNodeContents(code);
187526
+ const selection = window.getSelection();
187527
+ selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
187528
+ selection === null || selection === void 0 ? void 0 : selection.addRange(nextRange);
187529
+ }
187530
+ /**
187531
+ * Rich text editor backed by [Summernote](https://summernote.org/).
187532
+ *
187533
+ * Feature parity with `RichTextEditor`: headings, bold/italic/underline, inline
187534
+ * code, alignment, lists, blockquote, code block, links, images, an HTML source
187535
+ * view (when `exportFormat` is `html`) and markdown import/export.
187536
+ */
187537
+ function SummerNoteTextEditor({ value, onChange, exportFormat = 'markdown', disabled, placeholder, minHeight = '150px', className, id, ariaLabel, ariaLabelledBy, ariaDescribedBy, ariaRequired, ariaInvalid, }) {
187538
+ var _a;
187539
+ const t = useT();
187540
+ const locale = useWebContainersLocale();
187541
+ const langCode = (_a = SUMMERNOTE_LANG_BY_LOCALE[locale]) !== null && _a !== void 0 ? _a : 'en-US';
187542
+ const minHeightPx = toPixels(minHeight, DEFAULT_MIN_HEIGHT);
187543
+ const hostRef = React__default.useRef(null);
187544
+ const mountRef = React__default.useRef(null);
187545
+ const instanceRef = React__default.useRef(null);
187546
+ const editableRef = React__default.useRef(null);
187547
+ const [isReady, setIsReady] = React__default.useState(false);
187548
+ const [hasFailed, setHasFailed] = React__default.useState(false);
187549
+ // Value we last handed to `onChange`. Lets the sync effect below tell an echo
187550
+ // of our own edit apart from a genuine external update, so the caret is never
187551
+ // reset while the user types.
187552
+ const lastEmittedValueRef = React__default.useRef(null);
187553
+ // Set while we write an external value into the editor, so the `change` event
187554
+ // Summernote fires in response is not echoed back to the caller.
187555
+ const isApplyingValueRef = React__default.useRef(false);
187556
+ // Props read from inside jQuery callbacks. Kept in a ref so changing them does
187557
+ // not tear down and rebuild the editor.
187558
+ const latestRef = React__default.useRef({ value, onChange, exportFormat, placeholder, t });
187559
+ React__default.useEffect(() => {
187560
+ latestRef.current = { value, onChange, exportFormat, placeholder, t };
187561
+ });
187562
+ /** Normalizes the incoming prop into the (sanitized) HTML the editor renders. */
187563
+ const toEditorHtml = React__default.useCallback((raw) => {
187564
+ if (exportFormat === 'html') {
187565
+ return sanitizeEditorHtml(raw);
187566
+ }
187567
+ // Markdown is the export format but the stored value is HTML: round-trip it
187568
+ // so the editor only ever shows content markdown can represent.
187569
+ if (isHtml(raw)) {
187570
+ return sanitizeEditorHtml(markdownToHtml(htmlToMarkdown(raw)));
187571
+ }
187572
+ return sanitizeEditorHtml(markdownToHtml(raw));
187573
+ }, [exportFormat]);
187574
+ React__default.useEffect(() => {
187575
+ let cancelled = false;
187576
+ const host = hostRef.current;
187577
+ if (!host) {
187578
+ return;
187579
+ }
187580
+ loadSummernote(langCode)
187581
+ .then((jQuery) => {
187582
+ if (cancelled) {
187583
+ return;
187584
+ }
187585
+ // Summernote rewrites the DOM around its target, so give it a node React
187586
+ // does not manage.
187587
+ const mount = document.createElement('div');
187588
+ const initial = latestRef.current;
187589
+ mount.innerHTML = toEditorHtml(initial.value);
187590
+ host.appendChild(mount);
187591
+ mountRef.current = mount;
187592
+ // The editor now holds the incoming value, so the sync effect below has
187593
+ // nothing to push and must not mistake it for an external update.
187594
+ lastEmittedValueRef.current = initial.value;
187595
+ const emitChange = (contents) => {
187596
+ // Writing content programmatically also fires `change`; that is our own
187597
+ // value coming back, not an edit.
187598
+ if (isApplyingValueRef.current) {
187599
+ return;
187600
+ }
187601
+ const current = latestRef.current;
187602
+ const next = current.exportFormat === 'html' ? contents : htmlToMarkdown(contents);
187603
+ lastEmittedValueRef.current = next;
187604
+ current.onChange(next);
187605
+ };
187606
+ const $target = jQuery(mount);
187607
+ const summernoteStatic = jQuery.summernote;
187608
+ /**
187609
+ * Builds a toolbar button. Summernote's own tooltips double as the
187610
+ * accessible name, and the tooltip node has to be anchored to the editor
187611
+ * so it stays inside a modal's focus scope.
187612
+ */
187613
+ const customButton = (context, contents, tooltip, click) => summernoteStatic.ui
187614
+ .button({ contents, tooltip, container: context.layoutInfo.editor, click })
187615
+ .render();
187616
+ $target.summernote({
187617
+ lang: langCode,
187618
+ placeholder: initial.placeholder || initial.t('richTextEditor.startTypingPlaceholder'),
187619
+ minHeight: minHeightPx,
187620
+ // `RichTextEditor` caps its editing area at the same height; the guard
187621
+ // keeps a caller asking for a taller minimum from getting a
187622
+ // contradictory config.
187623
+ maxHeight: Math.max(EDITOR_MAX_HEIGHT, minHeightPx),
187624
+ disableResizeEditor: true,
187625
+ focus: false,
187626
+ // `auto` disables tooltips on anything the browser reports as touch
187627
+ // capable — including desktop Chrome — and the tooltip doubles as the
187628
+ // toolbar buttons' accessible name, so force it on.
187629
+ tooltip: true,
187630
+ // Match the raw HTML fidelity of the previous source-mode textarea:
187631
+ // notification templates legitimately carry `<style>` blocks. Content
187632
+ // arriving from outside is sanitized by `sanitizeEditorHtml` instead.
187633
+ codeviewFilter: false,
187634
+ styleTags: ['p', 'h1', 'h2', 'h3', 'blockquote', 'pre'],
187635
+ icons: SUMMERNOTE_ICONS,
187636
+ toolbar: [
187637
+ ['style', ['style']],
187638
+ ['font', ['bold', 'italic', 'underline', 'inlineCode', 'clear']],
187639
+ ['para', ['alignLeft', 'alignCenter', 'alignRight', 'ul', 'ol']],
187640
+ ['insert', ['link', 'picture', 'hr']],
187641
+ ['history', ['undo', 'redo']],
187642
+ // The source view only makes sense when HTML is what gets exported.
187643
+ ['view', initial.exportFormat === 'html' ? ['codeview', 'fullscreen'] : ['fullscreen']],
187644
+ ],
187645
+ popover: {
187646
+ image: [
187647
+ ['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],
187648
+ ['float', ['floatLeft', 'floatRight', 'floatNone']],
187649
+ ['remove', ['removeMedia']],
187650
+ ],
187651
+ link: [['link', ['linkDialogShow', 'unlink']]],
187652
+ air: [],
187653
+ },
187654
+ buttons: {
187655
+ // Summernote 0.9 only wires the justify buttons up for use inside the
187656
+ // "paragraph" dropdown — registering them flat in the toolbar throws.
187657
+ // Re-register them as plain buttons so the toolbar keeps the same shape
187658
+ // as the TipTap based editor.
187659
+ alignLeft: (context) => customButton(context, SUMMERNOTE_ICONS.alignLeft, latestRef.current.t('richTextEditor.alignLeft'), context.createInvokeHandler('editor.justifyLeft')),
187660
+ alignCenter: (context) => customButton(context, SUMMERNOTE_ICONS.alignCenter, latestRef.current.t('richTextEditor.alignCenter'), context.createInvokeHandler('editor.justifyCenter')),
187661
+ alignRight: (context) => customButton(context, SUMMERNOTE_ICONS.alignRight, latestRef.current.t('richTextEditor.alignRight'), context.createInvokeHandler('editor.justifyRight')),
187662
+ // Summernote has no inline-code command of its own.
187663
+ inlineCode: (context) => customButton(context, ICON_INLINE_CODE, latestRef.current.t('richTextEditor.toggleInlineCode'), () => {
187664
+ const editable = context.layoutInfo.editable.get(0);
187665
+ const range = selectionRangeWithin(editable);
187666
+ editable.focus();
187667
+ context.invoke('editor.beforeCommand');
187668
+ toggleInlineCode(editable, range);
187669
+ context.invoke('editor.afterCommand');
187670
+ }),
187671
+ },
187672
+ callbacks: {
187673
+ onChange: (contents) => emitChange(contents),
187674
+ onChangeCodeview: (contents) => emitChange(contents),
187675
+ },
187676
+ });
187677
+ instanceRef.current = $target;
187678
+ editableRef.current = host.querySelector('.note-editable');
187679
+ setIsReady(true);
187680
+ })
187681
+ .catch((error) => {
187682
+ console.error('Failed to initialise the Summernote editor', error);
187683
+ if (!cancelled) {
187684
+ setHasFailed(true);
187685
+ }
187686
+ });
187687
+ return () => {
187688
+ var _a, _b;
187689
+ cancelled = true;
187690
+ setIsReady(false);
187691
+ setHasFailed(false);
187692
+ try {
187693
+ (_a = instanceRef.current) === null || _a === void 0 ? void 0 : _a.summernote('destroy');
187694
+ }
187695
+ catch (_c) {
187696
+ // Already torn down.
187697
+ }
187698
+ instanceRef.current = null;
187699
+ editableRef.current = null;
187700
+ (_b = mountRef.current) === null || _b === void 0 ? void 0 : _b.remove();
187701
+ mountRef.current = null;
187702
+ };
187703
+ // Changing the language or the export format rebuilds the editor, because both
187704
+ // are baked into the toolbar Summernote renders once. Every other prop is
187705
+ // applied imperatively by the effects below.
187706
+ // eslint-disable-next-line react-hooks/exhaustive-deps
187707
+ }, [langCode, exportFormat]);
187708
+ // Push external value changes into the editor.
187709
+ React__default.useEffect(() => {
187710
+ const instance = instanceRef.current;
187711
+ if (!instance || !isReady) {
187712
+ return;
187713
+ }
187714
+ if (value === lastEmittedValueRef.current) {
187715
+ return;
187716
+ }
187717
+ const next = toEditorHtml(value);
187718
+ if (next === instance.summernote('code')) {
187719
+ return;
187720
+ }
187721
+ lastEmittedValueRef.current = value;
187722
+ isApplyingValueRef.current = true;
187723
+ try {
187724
+ instance.summernote('code', next);
187725
+ }
187726
+ finally {
187727
+ isApplyingValueRef.current = false;
187728
+ }
187729
+ }, [value, isReady, toEditorHtml]);
187730
+ React__default.useEffect(() => {
187731
+ const instance = instanceRef.current;
187732
+ if (!instance || !isReady) {
187733
+ return;
187734
+ }
187735
+ instance.summernote(disabled ? 'disable' : 'enable');
187736
+ }, [disabled, isReady]);
187737
+ // Summernote reads the placeholder once, so keep the rendered node in sync.
187738
+ React__default.useEffect(() => {
187739
+ var _a;
187740
+ if (!isReady) {
187741
+ return;
187742
+ }
187743
+ const placeholderNode = (_a = hostRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('.note-placeholder');
187744
+ if (placeholderNode) {
187745
+ placeholderNode.textContent = placeholder || t('richTextEditor.startTypingPlaceholder');
187746
+ }
187747
+ }, [placeholder, isReady, t]);
187748
+ // Likewise for the height, which Summernote turns into inline styles at init.
187749
+ React__default.useEffect(() => {
187750
+ const editable = editableRef.current;
187751
+ if (!editable || !isReady) {
187752
+ return;
187753
+ }
187754
+ editable.style.minHeight = `${minHeightPx}px`;
187755
+ editable.style.maxHeight = `${Math.max(EDITOR_MAX_HEIGHT, minHeightPx)}px`;
187756
+ }, [minHeightPx, isReady]);
187757
+ // Summernote's editable region is a plain contenteditable div; describe it the
187758
+ // same way `RichTextEditor` describes its own.
187759
+ React__default.useEffect(() => {
187760
+ const editable = editableRef.current;
187761
+ if (!editable || !isReady) {
187762
+ return;
187763
+ }
187764
+ const attributes = {
187765
+ role: 'textbox',
187766
+ 'aria-multiline': 'true',
187767
+ id,
187768
+ 'aria-label': ariaLabel,
187769
+ 'aria-labelledby': ariaLabel ? undefined : ariaLabelledBy,
187770
+ 'aria-describedby': ariaDescribedBy,
187771
+ 'aria-required': ariaRequired ? 'true' : undefined,
187772
+ 'aria-invalid': ariaInvalid ? 'true' : undefined,
187773
+ 'aria-disabled': disabled ? 'true' : undefined,
187774
+ };
187775
+ Object.entries(attributes).forEach(([name, attributeValue]) => {
187776
+ if (attributeValue === undefined) {
187777
+ editable.removeAttribute(name);
187778
+ }
187779
+ else {
187780
+ editable.setAttribute(name, attributeValue);
187781
+ }
187782
+ });
187783
+ }, [
187784
+ isReady,
187785
+ id,
187786
+ ariaLabel,
187787
+ ariaLabelledBy,
187788
+ ariaDescribedBy,
187789
+ ariaRequired,
187790
+ ariaInvalid,
187791
+ disabled,
187792
+ ]);
187793
+ return (jsx("div", { ref: hostRef, "data-testid": "summernote-text-editor", className: cn(
187794
+ // Tailwind's preflight strips the default block styles, so restore the
187795
+ // ones the editable region relies on.
187796
+ '[&_.note-editable]:leading-loose', '[&_.note-editable_h1]:text-2xl [&_.note-editable_h1]:font-bold', '[&_.note-editable_h2]:text-xl [&_.note-editable_h2]:font-bold', '[&_.note-editable_h3]:text-lg [&_.note-editable_h3]:font-bold', '[&_.note-editable_p]:leading-loose', '[&_.note-editable_ul]:list-disc [&_.note-editable_ul]:pl-6', '[&_.note-editable_ol]:list-decimal [&_.note-editable_ol]:pl-6', '[&_.note-editable_code]:bg-muted [&_.note-editable_code]:rounded [&_.note-editable_code]:px-1 [&_.note-editable_code]:py-0.5', '[&_.note-editable_pre]:bg-muted [&_.note-editable_pre]:rounded-md [&_.note-editable_pre]:p-4', '[&_.note-editable_blockquote]:border-l-4 [&_.note-editable_blockquote]:border-primary [&_.note-editable_blockquote]:pl-4 [&_.note-editable_blockquote]:italic', '[&_.note-editable_a]:text-primary [&_.note-editable_a]:underline', '[&_.note-editable_img]:max-w-full [&_.note-editable_img]:h-auto', '[&_.note-editor]:rounded-md', className), children: !isReady && (jsx("div", { className: cn('rounded-md border p-4 text-sm', hasFailed ? 'border-destructive text-destructive' : 'text-muted-foreground'), style: { minHeight: `${minHeightPx}px` },
187797
+ // Announcing "loading" forever would mislead a screen reader user, so
187798
+ // the failure is surfaced as an alert instead.
187799
+ role: hasFailed ? 'alert' : 'status', children: hasFailed ? t('summernoteTextEditor.loadFailed') : t('summernoteTextEditor.loading') })) }));
187800
+ }
187801
+
187267
187802
  const useTopBanner = ({ parentContainerSelector, loading, onLoad, onClose, }) => {
187268
187803
  const [visible, setVisible] = useState(true);
187269
187804
  const [showTooltip, setShowTooltip] = useState(false);
@@ -187850,7 +188385,7 @@ function SendNotificationDialog({ open, onOpenChange, tenant, onNotificationSent
187850
188385
  : 'false', required: true, "data-testid": "notification-preview-input" }), jsxs("div", { className: "flex justify-between items-center text-xs text-gray-400", children: [jsx("span", { id: "preview-help", children: t('notificationsSendNotificationDialog.previewHelp') }), jsxs("span", { id: "preview-counter", className: cn(field.state.value.length > 80 && 'text-orange-500', field.state.value.length >= 100 && 'text-red-500'), "aria-live": "polite", children: [field.state.value.length, "/100"] })] })] })),
187851
188386
  })] }), jsxs("div", { className: "space-y-2", children: [jsx(Label$2, { htmlFor: "notification-body", className: "text-sm font-medium", "aria-required": "true", children: t('notificationsSendNotificationDialog.contentLabel') }), form.Field({
187852
188387
  name: 'message',
187853
- children: (field) => (jsx("div", { role: "group", "aria-labelledby": "notification-body", "data-testid": "notification-body-group", children: jsx(RichTextEditor, { value: field.state.value, onChange: field.handleChange, placeholder: t('notificationsSendNotificationDialog.contentPlaceholder'), minHeight: "180px", exportFormat: "html" }) })),
188388
+ children: (field) => (jsx("div", { role: "group", "aria-labelledby": "notification-body", "data-testid": "notification-body-group", children: jsx(SummerNoteTextEditor, { value: field.state.value, onChange: field.handleChange, placeholder: t('notificationsSendNotificationDialog.contentPlaceholder'), minHeight: "180px", exportFormat: "html" }) })),
187854
188389
  })] }), jsxs("fieldset", { className: "space-y-3", "data-testid": "send-time-fieldset", children: [jsx("legend", { className: "text-sm font-medium", children: t('notificationsSendNotificationDialog.sendTimeLegend') }), jsxs(RadioGroup$1, { value: sendType, onValueChange: (value) => setSendType(value), "aria-label": t('notificationsSendNotificationDialog.sendTimeAriaLabel'), "data-testid": "send-time-radio-group", children: [jsxs("div", { className: "flex items-center space-x-2 mt-2", children: [jsx(RadioGroupItem, { value: "now", id: "send-now", "aria-label": t('notificationsSendNotificationDialog.sendImmediately'), "data-testid": "send-now-radio" }), jsx(Label$2, { htmlFor: "send-now", className: "font-normal cursor-pointer", children: t('notificationsSendNotificationDialog.sendImmediately') })] }), jsxs("div", { className: "flex items-center space-x-2", children: [jsx(RadioGroupItem, { value: "schedule", id: "send-schedule", "aria-label": t('notificationsSendNotificationDialog.scheduleForLater'), "data-testid": "send-schedule-radio" }), jsx(Label$2, { htmlFor: "send-schedule", className: "font-normal cursor-pointer", children: t('notificationsSendNotificationDialog.scheduleForLater') })] })] }), sendType === 'schedule' && (jsxs("div", { className: "flex gap-3 mt-4 pl-6", role: "group", "aria-label": t('notificationsSendNotificationDialog.scheduleSettingsAriaLabel'), "data-testid": "schedule-settings", children: [jsxs(Popover, { children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { type: "button", variant: "outline", className: cn('justify-start text-left font-normal min-w-[200px]', !scheduledDate && 'text-muted-foreground'), "aria-label": scheduledDate
187855
188390
  ? t('notificationsSendNotificationDialog.selectedDateAriaLabel', {
187856
188391
  date: format$1(scheduledDate, 'PPP'),
@@ -188731,7 +189266,7 @@ function WatcherEmailSection({ isSaving, isCustomized, onCustomizedChange, subje
188731
189266
  ? t('componentsWatcherEmailSection.subjectHelper')
188732
189267
  : t('componentsWatcherEmailSection.subjectFallbackHelper') }), jsx(Input, { id: "watcher-email-subject", value: subject, onChange: (event) => onSubjectChange(event.target.value), placeholder: t('componentsWatcherEmailSection.subjectPlaceholder'), disabled: isSaving, "aria-invalid": Boolean(subjectError), "aria-describedby": subjectError ? `${subjectHelperId} ${subjectErrorId}` : subjectHelperId }), subjectError && (jsx("p", { id: subjectErrorId, className: "text-sm text-red-600", role: "alert", children: subjectError }))] }), jsxs("div", { className: "space-y-2", children: [jsx(Label$2, { htmlFor: "watcher-email-body", id: bodyLabelId, className: "text-sm font-medium text-gray-700", children: t('componentsWatcherEmailSection.bodyLabel') }), jsx("p", { id: bodyHelperId, className: "text-xs text-gray-500", children: body.trim()
188733
189268
  ? t('componentsWatcherEmailSection.bodyHelper')
188734
- : t('componentsWatcherEmailSection.bodyFallbackHelper') }), jsx(RichTextEditor, { value: body, onChange: onBodyChange, placeholder: t('componentsWatcherEmailSection.bodyPlaceholder'), exportFormat: "html", disabled: isSaving, id: "watcher-email-body", ariaLabelledBy: bodyLabelId, ariaDescribedBy: bodyError ? `${bodyHelperId} ${bodyErrorId}` : bodyHelperId, ariaInvalid: Boolean(bodyError) }), bodyError && (jsx("p", { id: bodyErrorId, className: "text-sm text-red-600", role: "alert", children: bodyError }))] }), jsx(TemplateVariablesHelper, { context: context })] }))] }));
189269
+ : t('componentsWatcherEmailSection.bodyFallbackHelper') }), jsx(SummerNoteTextEditor, { value: body, onChange: onBodyChange, placeholder: t('componentsWatcherEmailSection.bodyPlaceholder'), exportFormat: "html", disabled: isSaving, id: "watcher-email-body", ariaLabelledBy: bodyLabelId, ariaDescribedBy: bodyError ? `${bodyHelperId} ${bodyErrorId}` : bodyHelperId, ariaInvalid: Boolean(bodyError) }), bodyError && (jsx("p", { id: bodyErrorId, className: "text-sm text-red-600", role: "alert", children: bodyError }))] }), jsx(TemplateVariablesHelper, { context: context })] }))] }));
188735
189270
  }
188736
189271
 
188737
189272
  var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
@@ -189692,7 +190227,7 @@ function EditAlertDialog({ open, onOpenChange, template, platformKey, templateTy
189692
190227
  ? t('notificationsEditAlertDialog.learnerEmailBodyLabel')
189693
190228
  : t('notificationsEditAlertDialog.messageBodyLabel') }), currentTemplateDetail.can_customize === false && (jsx("span", { className: "inline-flex items-center rounded-full bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-600", children: t('notificationsEditAlertDialog.nonCustomizable') }))] }), jsx("p", { id: messageBodyHelperId, className: "text-xs text-gray-500", children: isUserProgress
189694
190229
  ? t('notificationsEditAlertDialog.learnerEmailBodyHelper')
189695
- : t('notificationsEditAlertDialog.messageBodyHelper') }), jsx(RichTextEditor, { value: messageBody, onChange: setMessageBody, placeholder: t('notificationsEditAlertDialog.messageBodyPlaceholder'), exportFormat: "html", disabled: isSaving || currentTemplateDetail.can_customize === false, id: "message-body", ariaLabelledBy: messageBodyLabelId, ariaDescribedBy: messageBodyError
190230
+ : t('notificationsEditAlertDialog.messageBodyHelper') }), jsx(SummerNoteTextEditor, { value: messageBody, onChange: setMessageBody, placeholder: t('notificationsEditAlertDialog.messageBodyPlaceholder'), exportFormat: "html", disabled: isSaving || currentTemplateDetail.can_customize === false, id: "message-body", ariaLabelledBy: messageBodyLabelId, ariaDescribedBy: messageBodyError
189696
190231
  ? `${messageBodyHelperId} ${messageBodyErrorId}`
189697
190232
  : messageBodyHelperId, ariaRequired: true, ariaInvalid: Boolean(messageBodyError) }), messageBodyError && (jsx("p", { id: messageBodyErrorId, className: "text-sm text-red-600", role: "alert", children: messageBodyError })), isUserProgress && (jsx(TemplateVariablesHelper, { context: currentTemplateDetail.available_context }))] }), isPolicyAssignment && (jsx(PolicyAssignmentSection, { platformKey: platformKey, isSaving: isSaving, notifyOnAssignment: policyNotifyOnAssignment, onNotifyOnAssignmentChange: setPolicyNotifyOnAssignment, notifyOnRemoval: policyNotifyOnRemoval, onNotifyOnRemovalChange: setPolicyNotifyOnRemoval, initialPolicyConfigurations: policySettings.enabledPolicies, onPolicyConfigurationsChange: handlePolicyConfigurationsChange })), isHumanSupport && (jsx(HumanSupportSection, { platformKey: platformKey, isSaving: isSaving, recipientMode: humanSupportRecipientMode, onRecipientModeChange: setHumanSupportRecipientMode, initialCustomRecipients: humanSupportSettings.customRecipients, onCustomRecipientsChange: handleHumanSupportRecipientsChange })), isProactive && (jsx(ProactiveSettingsSection, { platformKey: platformKey, username: username, isSaving: isSaving, userLocalTimezone: userLocalTimezone, periodicLearnerScope: periodicLearnerScope, onLearnerScopeChange: setPeriodicLearnerScope, periodicFrequency: periodicFrequency, onFrequencyChange: setPeriodicFrequency, periodicCustomIntervalDays: periodicCustomIntervalDays, onCustomIntervalChange: setPeriodicCustomIntervalDays, periodicExecutionTime: periodicExecutionTime, onExecutionTimeChange: setPeriodicExecutionTime, periodicTimezone: periodicTimezone, onTimezoneChange: setPeriodicTimezone, initialMentors: periodicSettings.mentors, onMentorsChange: handleMentorsChange })), isUserProgress && (jsxs(Fragment$1, { children: [showWatcherEditor && (jsx(WatcherEmailSection, { isSaving: isSaving, isCustomized: isWatcherEmailCustomized, onCustomizedChange: handleWatcherCustomizedChange, subject: watcherEmailSubject, onSubjectChange: setWatcherEmailSubject, body: watcherEmailBody, onBodyChange: setWatcherEmailBody, context: currentTemplateDetail.watcher_available_context, serverErrors: fieldErrors })), jsx(UserProgressSettingsSection, { isSaving: isSaving, userLocalTimezone: userLocalTimezone, frequency: userProgressFrequency, onFrequencyChange: setUserProgressFrequency, executionTime: userProgressExecutionTime, onExecutionTimeChange: setUserProgressExecutionTime, timezone: userProgressTimezone, onTimezoneChange: setUserProgressTimezone, customIntervalDays: userProgressCustomIntervalDays, onCustomIntervalDaysChange: setUserProgressCustomIntervalDays, lookbackDays: userProgressLookbackDays, onLookbackDaysChange: setUserProgressLookbackDays, enabledDataPoints: userProgressDataPoints, onEnabledDataPointsChange: setUserProgressDataPoints, serverErrors: fieldErrors }), notificationType && (jsx(TemplateActionsSection, { platformKey: platformKey, notificationType: notificationType, isSaving: isSaving, onResetComplete: () => setFieldErrors({}) }))] }))] }) }) }), jsxs("div", { className: "px-6 py-4 border-t border-gray-200 flex justify-end gap-3", children: [jsx(Button$1, { variant: "outline", onClick: handleClose, disabled: isSaving, children: t('notificationsEditAlertDialog.cancel') }), jsx(Button$1, { onClick: handleSave, disabled: isSaveDisabled, className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white", children: isSaving
189698
190233
  ? t('notificationsEditAlertDialog.saving')
@@ -189819,6 +190354,11 @@ function AlertsTab({ platformKey }) {
189819
190354
  }) })] }), jsx(EditAlertDialog, { open: isEditDialogOpen, onOpenChange: setIsEditDialogOpen, template: selectedTemplate, platformKey: platformKey, templateType: (_a = selectedTemplate === null || selectedTemplate === void 0 ? void 0 : selectedTemplate.type) !== null && _a !== void 0 ? _a : null, onSave: handleTemplateSaved })] }));
189820
190355
  }
189821
190356
 
190357
+ // Notification bodies are arbitrary (often email) HTML: long unbroken URLs and
190358
+ // fixed-width tables would otherwise bleed out of the panel. Break long words,
190359
+ // cap every descendant at the container width, and let anything that still
190360
+ // cannot shrink scroll inside the body instead of stretching the layout.
190361
+ const notificationBodyClasses = cn('prose prose-sm max-w-none text-gray-700', 'overflow-x-auto break-words [overflow-wrap:anywhere]', '[&_*]:max-w-full', '[&_a]:break-all', '[&_img]:h-auto', '[&_pre]:overflow-x-auto [&_pre]:whitespace-pre-wrap', '[&_code]:whitespace-pre-wrap');
189822
190362
  function NotificationDisplay({ org, userId, isAdmin = false, selectedNotificationId, enableRbac = false, tenant = '', rbacPermissions = {}, className, }) {
189823
190363
  const t = useT();
189824
190364
  const [selectedNotification, setSelectedNotification] = useState(null);
@@ -190002,7 +190542,7 @@ function NotificationDisplay({ org, userId, isAdmin = false, selectedNotificatio
190002
190542
  // Open modal on mobile
190003
190543
  setIsMobileModalOpen(true);
190004
190544
  }, className: cn('w-full p-4 border-b border-gray-100 cursor-pointer hover:bg-gray-50 transition-colors text-left', (selectedNotification === null || selectedNotification === void 0 ? void 0 : selectedNotification.id) === notification.id &&
190005
- 'bg-blue-50 hover:bg-blue-50', !notification.read && 'bg-blue-50/30'), "aria-pressed": (selectedNotification === null || selectedNotification === void 0 ? void 0 : selectedNotification.id) === notification.id, "aria-label": `${notification.read ? '' : t('notificationsNotificationDisplay.unreadPrefix')}${notification.title}, ${formatTimestamp(notification.timestamp)}`, "data-testid": `notification-button-${notification.id}`, "data-read": notification.read, children: jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: cn('w-2 h-2 rounded-full mt-2 flex-shrink-0', !notification.read ? 'bg-blue-500' : 'bg-transparent'), "aria-hidden": "true" }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx("h3", { className: cn('text-sm font-medium text-gray-900 mb-1', !notification.read && 'font-semibold'), children: notification.title }), jsx("p", { className: "text-sm text-gray-600 line-clamp-2 mb-2", children: notification.preview }), jsxs("div", { className: "flex items-center gap-1 text-xs text-gray-500", children: [jsx(Clock, { className: "h-3 w-3", "aria-hidden": "true" }), jsx("time", { dateTime: notification.timestamp.toISOString(), children: formatTimestamp(notification.timestamp) })] })] })] }) }) }, notification.id))) }))] }), jsx("article", { className: "flex-1 min-h-0 overflow-y-auto bg-white p-6 hidden md:block", "aria-label": t('notificationsNotificationDisplay.notificationDetailsAriaLabel'), role: "region", "data-testid": "notification-details-panel", children: selectedNotification ? (jsxs("div", { className: "max-w-3xl mx-auto", "data-testid": "notification-details-content", children: [jsxs("header", { className: "mb-6", children: [jsx("h2", { className: "text-2xl font-semibold text-gray-900 mb-2", id: "selected-notification-title", "data-testid": "notification-details-title", children: selectedNotification.title }), jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-500", children: [jsx(Clock, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("time", { dateTime: selectedNotification.timestamp.toISOString(), "data-testid": "notification-details-timestamp", children: format$1(selectedNotification.timestamp, "MMMM d, yyyy 'at' h:mm a") })] })] }), jsx("div", { className: "prose prose-sm max-w-none text-gray-700", dangerouslySetInnerHTML: { __html: sanitizeHtml(selectedNotification.body) }, "aria-labelledby": "selected-notification-title", "data-testid": "notification-details-body" })] })) : (jsx("div", { className: "flex items-center justify-center h-full text-gray-500", role: "status", "data-testid": "notification-details-empty", children: t('notificationsNotificationDisplay.selectNotificationPrompt') })) })] }), jsx(TabsContent, { value: "alerts", className: "flex-1 min-h-0 flex m-0 bg-white justify-center items-center data-[state=inactive]:hidden", "data-testid": "alerts-tab-content", children: jsx(AlertsTab, { platformKey: org }) })] }), jsx(SendNotificationDialog, { open: isSendDialogOpen, onOpenChange: setIsSendDialogOpen, tenant: org, hasManageUsersPermission: hasManageUsersPermission, onNotificationSent: async () => {
190545
+ 'bg-blue-50 hover:bg-blue-50', !notification.read && 'bg-blue-50/30'), "aria-pressed": (selectedNotification === null || selectedNotification === void 0 ? void 0 : selectedNotification.id) === notification.id, "aria-label": `${notification.read ? '' : t('notificationsNotificationDisplay.unreadPrefix')}${notification.title}, ${formatTimestamp(notification.timestamp)}`, "data-testid": `notification-button-${notification.id}`, "data-read": notification.read, children: jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: cn('w-2 h-2 rounded-full mt-2 flex-shrink-0', !notification.read ? 'bg-blue-500' : 'bg-transparent'), "aria-hidden": "true" }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx("h3", { className: cn('text-sm font-medium text-gray-900 mb-1 break-words', !notification.read && 'font-semibold'), children: notification.title }), jsx("p", { className: "text-sm text-gray-600 line-clamp-2 mb-2 break-words", children: notification.preview }), jsxs("div", { className: "flex items-center gap-1 text-xs text-gray-500", children: [jsx(Clock, { className: "h-3 w-3", "aria-hidden": "true" }), jsx("time", { dateTime: notification.timestamp.toISOString(), children: formatTimestamp(notification.timestamp) })] })] })] }) }) }, notification.id))) }))] }), jsx("article", { className: "flex-1 min-w-0 min-h-0 overflow-y-auto bg-white p-6 hidden md:block", "aria-label": t('notificationsNotificationDisplay.notificationDetailsAriaLabel'), role: "region", "data-testid": "notification-details-panel", children: selectedNotification ? (jsxs("div", { className: "max-w-3xl mx-auto", "data-testid": "notification-details-content", children: [jsxs("header", { className: "mb-6", children: [jsx("h2", { className: "text-2xl font-semibold text-gray-900 mb-2 break-words", id: "selected-notification-title", "data-testid": "notification-details-title", children: selectedNotification.title }), jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-500", children: [jsx(Clock, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("time", { dateTime: selectedNotification.timestamp.toISOString(), "data-testid": "notification-details-timestamp", children: format$1(selectedNotification.timestamp, "MMMM d, yyyy 'at' h:mm a") })] })] }), jsx("div", { className: notificationBodyClasses, dangerouslySetInnerHTML: { __html: sanitizeHtml(selectedNotification.body) }, "aria-labelledby": "selected-notification-title", "data-testid": "notification-details-body" })] })) : (jsx("div", { className: "flex items-center justify-center h-full text-gray-500", role: "status", "data-testid": "notification-details-empty", children: t('notificationsNotificationDisplay.selectNotificationPrompt') })) })] }), jsx(TabsContent, { value: "alerts", className: "flex-1 min-h-0 flex m-0 bg-white justify-center items-center data-[state=inactive]:hidden", "data-testid": "alerts-tab-content", children: jsx(AlertsTab, { platformKey: org }) })] }), jsx(SendNotificationDialog, { open: isSendDialogOpen, onOpenChange: setIsSendDialogOpen, tenant: org, hasManageUsersPermission: hasManageUsersPermission, onNotificationSent: async () => {
190006
190546
  // Fetch updated notifications
190007
190547
  try {
190008
190548
  // Note: userId is required by the API but missing from @iblai/iblai-api type definitions
@@ -190017,7 +190557,7 @@ function NotificationDisplay({ org, userId, isAdmin = false, selectedNotificatio
190017
190557
  catch (error) {
190018
190558
  console.error('Error fetching notifications:', error);
190019
190559
  }
190020
- } }), jsx(Dialog, { open: isMobileModalOpen, onOpenChange: setIsMobileModalOpen, children: jsx(DialogContent, { className: "max-h-[85vh] overflow-y-auto max-w-[95vw]", children: selectedNotification && (jsxs(Fragment$1, { children: [jsxs(DialogHeader, { children: [jsx(DialogTitle, { className: "text-xl font-semibold text-gray-900 pr-6", children: selectedNotification.title }), jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-500 pt-2", children: [jsx(Clock, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("time", { dateTime: selectedNotification.timestamp.toISOString(), children: format$1(selectedNotification.timestamp, "MMMM d, yyyy 'at' h:mm a") })] })] }), jsx("div", { className: "prose prose-sm max-w-none text-gray-700 mt-4", dangerouslySetInnerHTML: { __html: sanitizeHtml(selectedNotification.body) }, "aria-labelledby": "mobile-notification-title" })] })) }) })] }));
190560
+ } }), jsx(Dialog, { open: isMobileModalOpen, onOpenChange: setIsMobileModalOpen, children: jsx(DialogContent, { className: "max-h-[85vh] overflow-y-auto max-w-[95vw]", children: selectedNotification && (jsxs(Fragment$1, { children: [jsxs(DialogHeader, { children: [jsx(DialogTitle, { className: "text-xl font-semibold text-gray-900 pr-6 break-words", children: selectedNotification.title }), jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-500 pt-2", children: [jsx(Clock, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("time", { dateTime: selectedNotification.timestamp.toISOString(), children: format$1(selectedNotification.timestamp, "MMMM d, yyyy 'at' h:mm a") })] })] }), jsx("div", { className: cn(notificationBodyClasses, 'mt-4'), dangerouslySetInnerHTML: { __html: sanitizeHtml(selectedNotification.body) }, "aria-labelledby": "mobile-notification-title", "data-testid": "notification-details-body-mobile" })] })) }) })] }));
190021
190561
  }
190022
190562
 
190023
190563
  /**
@@ -240250,5 +240790,5 @@ var trainOrDeleteModal = /*#__PURE__*/Object.freeze({
240250
240790
  TrainOrDeleteModal: TrainOrDeleteModal
240251
240791
  });
240252
240792
 
240253
- export { ACCESS_COURSE_LABEL, ALL_CATEGORIES, AccessTimeHeatmap, AccessiblePaginate, AddMentorToProjectModal, AddSkillDialog, Admin, AdvancedTab, AgentConfigPrompts, AgentSkills, AlertsTab, AnalyticsAgentPicker, AnalyticsAuditLogStats, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsLayout, AnalyticsMemoryStats, AnalyticsMonetizationStats, AnalyticsOverview, AnalyticsPlatformAuditLog, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsScopeProvider, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTranscriptsStats, AnalyticsUsersStats, AppleRestrictionModal, ApplyWizard, AuditLogChangesView, AuditLogJsonView, BUY_NOW_LABEL, BillingTab, CATALOGS, CREATE_AGENT_LABELS, CUA_DRIVER_REPO_URL, CUA_DRIVER_TAURI_COMMANDS, CUA_DRIVER_TAURI_EVENTS, CardInfoIcon, CategorizedDropdownMenu, ChartCardWrapper, ChartFiltersProvider, ChartLoading, ChatContext, ChatPrivacyToggle, ChatProvider, CompanyDialog, ConnectorManagementDialog, CopyButtonIcon, CourseAccessGuard, CourseCardSkeleton, CourseContentLoading, CourseOutline, CourseOutlineContext, CourseOutlineDrawer, CreateAgentForm, CreateAgentModal, CreateProjectModal, CreateWorkflowModal, CredentialBox, CredentialMiniBoxSkeleton, CredentialsList, CreditBalance, CustomDateRangePicker, CustomTooltip, DEFAULT_COWORK_REQUIRED_SIZE_GB, DEFAULT_LOCALE, DefaultEmptyBox, DeleteProjectModal, DeleteWorkflowModal, DiscoverContentCard, DiscoverFacetsFilter, DiscoverFilterDrawer, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENROLL_NOW_COURSE_STARTING_SOON_LABEL, ENROLL_NOW_LABEL, EditAlertDialog, EducationBox, EducationDialog, EducationTab, EdxIframeContext, EmptyStats, ExperienceBox, ExperienceDialog, ExperienceTab, FacetFilterContext, Footer, GradebookTab, GroupsFilterDropdown, INVITATION_ONLY_LABEL, InstitutionDialog, IntegrationsTab, InviteUserContent, InviteUserDialog, InvitedUsersDialog, LOCAL_MODELS, Loader, LocalLLMTab, LocalModelsContent, LoginButton, MACOS_PERMISSIONS_COMMANDS, MEMORY_PAGE_SIZE, Markdown, MinimumMentorAlert, MonetizationTab, NotificationDisplay, NotificationDropdown, ONBOARDING_SECTORS, OnboardingShell, OnboardingWizard, PLATFORM_AUDIT_DEEP_PAGING_THRESHOLD, PLATFORM_AUDIT_PAGE_SIZE, PaywallModal, PlacementExam, PlacementExamsDropdown, PlatformAuditLogDetailSheet, PlatformNavbar, PlatformNavbarSearch, Profile, ProfileTimeChart, ProgressDots, ProjectActionButtons, ProjectFilesModal, ProjectInstructionsModal, ProjectLandingPage, ProjectMentorsList, ProjectsPage, REQUEST_ACCESS_COURSE_STARTING_SOON_LABEL, REQUEST_ACCESS_LABEL, RenameProjectModal, ResumeBox, ResumeTab, RichTextEditor, SUPPORTED_LOCALES, SandboxConfig, SearchableMultiSelect, SendNotificationDialog, SignupButton, SkeletonActivityStatBox, SkeletonAddSkillsLoading, SkeletonCreatePathwaySearchList, SkeletonDiscoverFilterBox, SkeletonEducationBox, SkeletonMultiplier, SkeletonPathwayBox, SkeletonProfileInfoCard, SkeletonSkillBox, SkillBox, SkillDetailModal, SkillLeaderboardChart, SkillsBox, SkillsList, SlashSkillPicker, Spinner, StatCard, StepHeader, TAURI_COMMANDS, TAURI_EVENTS, TenantSwitcher, TimeFilter, TimeTrackingProvider, TimedExam, ToolDialogs, TopBanner, UpgradePackageModal, UserAvatar, Version, WebContainersI18nProvider, WorkflowSidebar, addBookmarksTab, availablePlacementExams, findLastResumeBlock, findSequentialParent, flattenVerticalBlocks, formatAuditTimestamp, formatTimeZoneLabel, getCatalog, getFirstAvailableUnit, getLocalLLMModel, getLocalLLMToolSupport, getNextUnitIframe, getOrg, getParentBlockById, getParentsInfosFromSublessonId, getPreviousUnitIframe, getRandomCourseImage, getSectorById, getTenant, getUnitToIframe, getUserId, getUserName, humanizeAuditToken, inBrowserPrint, inIframe, initialCuaDriverInstallState, initialModelDownloadState, isCoworkEnabled, isLocalLLMEnabled, isPlatformNavbarCreditBalanceVisible, isSlashCommandToken, isTauriApp, isValidLocale, isValidTimeZone, components as markdownComponents, modelSupportsCowork, onboardingPrimaryButtonClass, onboardingSecondaryButtonClass, resolveAuditTimeZone, resolveCreateAgentLabels, sanitizeCss, setCoworkEnabled, setLocalLLMEnabled, setLocalLLMModel, setLocalLLMToolSupport, smallestCoworkModel, useAnalyticsScope, useAnalyticsSettings, useAuditLog, useCatalogSearch, useChartFilters, useChatPrivacy, useChatState, useCourseDetail, useCourseMetadata, useCourses, useCuaDriver, useDiscover, useEdxIframe, useFinancial, useIframeMessageHandler, useLocalStorage, useMemory, useModelDownload, useMonetization, useOverview, usePlatformAuditLabels, usePlatformAuditLog, useProfileActivityStats, useProfileCredentials, useProfilePathways, useProfilePrograms, useProfileSkills, useProfileTimeSpent, usePrograms, useReports, useScopedMentorDbId, useScopedMentorId, useSlashSkillPicker, useSlashSkills, useT, useTauri, useTimeTracking, useTopics, useTranscripts, useUserCourses, useUserMetadata, useUsers, useWebContainersI18n, useWebContainersLocale };
240793
+ export { ACCESS_COURSE_LABEL, ALL_CATEGORIES, AccessTimeHeatmap, AccessiblePaginate, AddMentorToProjectModal, AddSkillDialog, Admin, AdvancedTab, AgentConfigPrompts, AgentSkills, AlertsTab, AnalyticsAgentPicker, AnalyticsAuditLogStats, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsLayout, AnalyticsMemoryStats, AnalyticsMonetizationStats, AnalyticsOverview, AnalyticsPlatformAuditLog, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsScopeProvider, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTranscriptsStats, AnalyticsUsersStats, AppleRestrictionModal, ApplyWizard, AuditLogChangesView, AuditLogJsonView, BUY_NOW_LABEL, BillingTab, CATALOGS, CREATE_AGENT_LABELS, CUA_DRIVER_REPO_URL, CUA_DRIVER_TAURI_COMMANDS, CUA_DRIVER_TAURI_EVENTS, CardInfoIcon, CategorizedDropdownMenu, ChartCardWrapper, ChartFiltersProvider, ChartLoading, ChatContext, ChatPrivacyToggle, ChatProvider, CompanyDialog, ConnectorManagementDialog, CopyButtonIcon, CourseAccessGuard, CourseCardSkeleton, CourseContentLoading, CourseOutline, CourseOutlineContext, CourseOutlineDrawer, CreateAgentForm, CreateAgentModal, CreateProjectModal, CreateWorkflowModal, CredentialBox, CredentialMiniBoxSkeleton, CredentialsList, CreditBalance, CustomDateRangePicker, CustomTooltip, DEFAULT_COWORK_REQUIRED_SIZE_GB, DEFAULT_LOCALE, DefaultEmptyBox, DeleteProjectModal, DeleteWorkflowModal, DiscoverContentCard, DiscoverFacetsFilter, DiscoverFilterDrawer, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENROLL_NOW_COURSE_STARTING_SOON_LABEL, ENROLL_NOW_LABEL, EditAlertDialog, EducationBox, EducationDialog, EducationTab, EdxIframeContext, EmptyStats, ExperienceBox, ExperienceDialog, ExperienceTab, FacetFilterContext, Footer, GradebookTab, GroupsFilterDropdown, INVITATION_ONLY_LABEL, InstitutionDialog, IntegrationsTab, InviteUserContent, InviteUserDialog, InvitedUsersDialog, LOCAL_MODELS, Loader, LocalLLMTab, LocalModelsContent, LoginButton, MACOS_PERMISSIONS_COMMANDS, MEMORY_PAGE_SIZE, Markdown, MinimumMentorAlert, MonetizationTab, NotificationDisplay, NotificationDropdown, ONBOARDING_SECTORS, OnboardingShell, OnboardingWizard, PLATFORM_AUDIT_DEEP_PAGING_THRESHOLD, PLATFORM_AUDIT_PAGE_SIZE, PaywallModal, PlacementExam, PlacementExamsDropdown, PlatformAuditLogDetailSheet, PlatformNavbar, PlatformNavbarSearch, Profile, ProfileTimeChart, ProgressDots, ProjectActionButtons, ProjectFilesModal, ProjectInstructionsModal, ProjectLandingPage, ProjectMentorsList, ProjectsPage, REQUEST_ACCESS_COURSE_STARTING_SOON_LABEL, REQUEST_ACCESS_LABEL, RenameProjectModal, ResumeBox, ResumeTab, RichTextEditor, SUPPORTED_LOCALES, SandboxConfig, SearchableMultiSelect, SendNotificationDialog, SignupButton, SkeletonActivityStatBox, SkeletonAddSkillsLoading, SkeletonCreatePathwaySearchList, SkeletonDiscoverFilterBox, SkeletonEducationBox, SkeletonMultiplier, SkeletonPathwayBox, SkeletonProfileInfoCard, SkeletonSkillBox, SkillBox, SkillDetailModal, SkillLeaderboardChart, SkillsBox, SkillsList, SlashSkillPicker, Spinner, StatCard, StepHeader, SummerNoteTextEditor, TAURI_COMMANDS, TAURI_EVENTS, TenantSwitcher, TimeFilter, TimeTrackingProvider, TimedExam, ToolDialogs, TopBanner, UpgradePackageModal, UserAvatar, Version, WebContainersI18nProvider, WorkflowSidebar, addBookmarksTab, availablePlacementExams, findLastResumeBlock, findSequentialParent, flattenVerticalBlocks, formatAuditTimestamp, formatTimeZoneLabel, getCatalog, getFirstAvailableUnit, getLocalLLMModel, getLocalLLMToolSupport, getNextUnitIframe, getOrg, getParentBlockById, getParentsInfosFromSublessonId, getPreviousUnitIframe, getRandomCourseImage, getSectorById, getTenant, getUnitToIframe, getUserId, getUserName, humanizeAuditToken, inBrowserPrint, inIframe, initialCuaDriverInstallState, initialModelDownloadState, isCoworkEnabled, isLocalLLMEnabled, isPlatformNavbarCreditBalanceVisible, isSlashCommandToken, isTauriApp, isValidLocale, isValidTimeZone, components as markdownComponents, modelSupportsCowork, onboardingPrimaryButtonClass, onboardingSecondaryButtonClass, resolveAuditTimeZone, resolveCreateAgentLabels, sanitizeCss, setCoworkEnabled, setLocalLLMEnabled, setLocalLLMModel, setLocalLLMToolSupport, smallestCoworkModel, useAnalyticsScope, useAnalyticsSettings, useAuditLog, useCatalogSearch, useChartFilters, useChatPrivacy, useChatState, useCourseDetail, useCourseMetadata, useCourses, useCuaDriver, useDiscover, useEdxIframe, useFinancial, useIframeMessageHandler, useLocalStorage, useMemory, useModelDownload, useMonetization, useOverview, usePlatformAuditLabels, usePlatformAuditLog, useProfileActivityStats, useProfileCredentials, useProfilePathways, useProfilePrograms, useProfileSkills, useProfileTimeSpent, usePrograms, useReports, useScopedMentorDbId, useScopedMentorId, useSlashSkillPicker, useSlashSkills, useT, useTauri, useTimeTracking, useTopics, useTranscripts, useUserCourses, useUserMetadata, useUsers, useWebContainersI18n, useWebContainersLocale };
240254
240794
  //# sourceMappingURL=index.esm.js.map
@@ -101478,6 +101478,10 @@ var spendCapsTabLabels$3 = {
101478
101478
  deleteError: "Couldn't delete the spend limit"
101479
101479
  }
101480
101480
  };
101481
+ var summernoteTextEditor$3 = {
101482
+ loadFailed: "The editor could not be loaded. Reload the page to try again.",
101483
+ loading: "Loading editor…"
101484
+ };
101481
101485
  var tabsAlertstab$3 = {
101482
101486
  searchAlertsPlaceholder: "Search alerts",
101483
101487
  searchAlertsAriaLabel: "Search alerts",
@@ -103507,6 +103511,7 @@ var en = {
103507
103511
  skillsProfileSkillsBox: skillsProfileSkillsBox$3,
103508
103512
  spendCapUsage: spendCapUsage$3,
103509
103513
  spendCapsTabLabels: spendCapsTabLabels$3,
103514
+ summernoteTextEditor: summernoteTextEditor$3,
103510
103515
  tabsAlertstab: tabsAlertstab$3,
103511
103516
  tabsDisclaimersTab: tabsDisclaimersTab$3,
103512
103517
  tabsEmbedTab: tabsEmbedTab$3,
@@ -108382,6 +108387,10 @@ var spendCapsTabLabels$2 = {
108382
108387
  deleteError: "Impossible de supprimer la limite de dépenses"
108383
108388
  }
108384
108389
  };
108390
+ var summernoteTextEditor$2 = {
108391
+ loadFailed: "L'éditeur n'a pas pu être chargé. Rechargez la page pour réessayer.",
108392
+ loading: "Chargement de l'éditeur…"
108393
+ };
108385
108394
  var tabsAlertstab$2 = {
108386
108395
  searchAlertsPlaceholder: "Rechercher des alertes",
108387
108396
  searchAlertsAriaLabel: "Rechercher des alertes",
@@ -110246,6 +110255,7 @@ var fr = {
110246
110255
  skillsProfileSkillsBox: skillsProfileSkillsBox$2,
110247
110256
  spendCapUsage: spendCapUsage$2,
110248
110257
  spendCapsTabLabels: spendCapsTabLabels$2,
110258
+ summernoteTextEditor: summernoteTextEditor$2,
110249
110259
  tabsAlertstab: tabsAlertstab$2,
110250
110260
  tabsDisclaimersTab: tabsDisclaimersTab$2,
110251
110261
  tabsEmbedTab: tabsEmbedTab$2,
@@ -115120,6 +115130,10 @@ var spendCapsTabLabels$1 = {
115120
115130
  deleteError: "No se pudo eliminar el límite de gasto"
115121
115131
  }
115122
115132
  };
115133
+ var summernoteTextEditor$1 = {
115134
+ loadFailed: "No se pudo cargar el editor. Vuelve a cargar la página para intentarlo de nuevo.",
115135
+ loading: "Cargando el editor…"
115136
+ };
115123
115137
  var tabsAlertstab$1 = {
115124
115138
  searchAlertsPlaceholder: "Buscar alertas",
115125
115139
  searchAlertsAriaLabel: "Buscar alertas",
@@ -116984,6 +116998,7 @@ var es = {
116984
116998
  skillsProfileSkillsBox: skillsProfileSkillsBox$1,
116985
116999
  spendCapUsage: spendCapUsage$1,
116986
117000
  spendCapsTabLabels: spendCapsTabLabels$1,
117001
+ summernoteTextEditor: summernoteTextEditor$1,
116987
117002
  tabsAlertstab: tabsAlertstab$1,
116988
117003
  tabsDisclaimersTab: tabsDisclaimersTab$1,
116989
117004
  tabsEmbedTab: tabsEmbedTab$1,
@@ -121858,6 +121873,10 @@ var spendCapsTabLabels = {
121858
121873
  deleteError: "无法删除支出限额"
121859
121874
  }
121860
121875
  };
121876
+ var summernoteTextEditor = {
121877
+ loadFailed: "编辑器加载失败。请重新加载页面后重试。",
121878
+ loading: "正在加载编辑器…"
121879
+ };
121861
121880
  var tabsAlertstab = {
121862
121881
  searchAlertsPlaceholder: "搜索提醒",
121863
121882
  searchAlertsAriaLabel: "搜索提醒",
@@ -123722,6 +123741,7 @@ var zh = {
123722
123741
  skillsProfileSkillsBox: skillsProfileSkillsBox,
123723
123742
  spendCapUsage: spendCapUsage,
123724
123743
  spendCapsTabLabels: spendCapsTabLabels,
123744
+ summernoteTextEditor: summernoteTextEditor,
123725
123745
  tabsAlertstab: tabsAlertstab,
123726
123746
  tabsDisclaimersTab: tabsDisclaimersTab,
123727
123747
  tabsEmbedTab: tabsEmbedTab,
@@ -220388,6 +220408,39 @@ function RichTextEditor({ value, onChange, exportFormat = 'markdown', disabled,
220388
220408
  return (jsxs("div", { children: [jsx(EditorToolbar, { editor: editor, onAddLink: handleAddLink, onAddImage: handleAddImage, exportFormat: exportFormat, editorMode: editorMode, onToggleMode: handleToggleMode, disabled: disabled }), editorMode === 'visual' ? (jsx(EditorContent, { editor: editor, id: id, role: "textbox", "aria-multiline": "true", "aria-label": ariaLabel, "aria-labelledby": ariaLabel ? undefined : ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-required": ariaRequired, "aria-invalid": ariaInvalid, "aria-disabled": disabled ? 'true' : undefined })) : (jsx(Textarea, { value: htmlSource, onChange: handleSourceChange, disabled: disabled, placeholder: t('richTextEditor.enterHtmlPlaceholder'), id: id, "aria-label": ariaLabel || t('richTextEditor.htmlSourceEditorLabel'), "aria-labelledby": ariaLabel ? undefined : ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-required": ariaRequired, "aria-invalid": ariaInvalid, className: "min-h-[150px] max-h-[300px] overflow-y-auto rounded-b-md border font-mono text-sm leading-loose" }))] }));
220389
220409
  }
220390
220410
 
220411
+ function styleInject(css, ref) {
220412
+ if ( ref === void 0 ) ref = {};
220413
+ var insertAt = ref.insertAt;
220414
+
220415
+ if (!css || typeof document === 'undefined') { return; }
220416
+
220417
+ var head = document.head || document.getElementsByTagName('head')[0];
220418
+ var style = document.createElement('style');
220419
+ style.type = 'text/css';
220420
+
220421
+ if (insertAt === 'top') {
220422
+ if (head.firstChild) {
220423
+ head.insertBefore(style, head.firstChild);
220424
+ } else {
220425
+ head.appendChild(style);
220426
+ }
220427
+ } else {
220428
+ head.appendChild(style);
220429
+ }
220430
+
220431
+ if (style.styleSheet) {
220432
+ style.styleSheet.cssText = css;
220433
+ } else {
220434
+ style.appendChild(document.createTextNode(css));
220435
+ }
220436
+ }
220437
+
220438
+ var css_248z$2 = "[class*=\" note-icon\"]:before,[class^=note-icon]:before{display:inline-block;font-family:summernote;font-size:inherit;font-style:normal;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align:before{content:\"\\ea01\"}.note-icon-align-center:before{content:\"\\ea02\"}.note-icon-align-indent:before{content:\"\\ea03\"}.note-icon-align-justify:before{content:\"\\ea04\"}.note-icon-align-left:before{content:\"\\ea05\"}.note-icon-align-outdent:before{content:\"\\ea06\"}.note-icon-align-right:before{content:\"\\ea07\"}.note-icon-arrow-circle-down:before{content:\"\\ea08\"}.note-icon-arrow-circle-left:before{content:\"\\ea09\"}.note-icon-arrow-circle-right:before{content:\"\\ea0a\"}.note-icon-arrow-circle-up:before{content:\"\\ea0b\"}.note-icon-arrows-alt:before{content:\"\\ea0c\"}.note-icon-arrows-h:before{content:\"\\ea0d\"}.note-icon-arrows-v:before{content:\"\\ea0e\"}.note-icon-bold:before{content:\"\\ea0f\"}.note-icon-caret:before{content:\"\\ea10\"}.note-icon-chain-broken:before{content:\"\\ea11\"}.note-icon-circle:before{content:\"\\ea12\"}.note-icon-close:before{content:\"\\ea13\"}.note-icon-code:before{content:\"\\ea14\"}.note-icon-col-after:before{content:\"\\ea15\"}.note-icon-col-before:before{content:\"\\ea16\"}.note-icon-col-remove:before{content:\"\\ea17\"}.note-icon-eraser:before{content:\"\\ea18\"}.note-icon-float-left:before{content:\"\\ea19\"}.note-icon-float-none:before{content:\"\\ea1a\"}.note-icon-float-right:before{content:\"\\ea1b\"}.note-icon-font:before{content:\"\\ea1c\"}.note-icon-frame:before{content:\"\\ea1d\"}.note-icon-italic:before{content:\"\\ea1e\"}.note-icon-link:before{content:\"\\ea1f\"}.note-icon-magic:before{content:\"\\ea20\"}.note-icon-menu-check:before{content:\"\\ea21\"}.note-icon-minus:before{content:\"\\ea22\"}.note-icon-orderedlist:before{content:\"\\ea23\"}.note-icon-pencil:before{content:\"\\ea24\"}.note-icon-picture:before{content:\"\\ea25\"}.note-icon-question:before{content:\"\\ea26\"}.note-icon-redo:before{content:\"\\ea27\"}.note-icon-rollback:before{content:\"\\ea28\"}.note-icon-row-above:before{content:\"\\ea29\"}.note-icon-row-below:before{content:\"\\ea2a\"}.note-icon-row-remove:before{content:\"\\ea2b\"}.note-icon-special-character:before{content:\"\\ea2c\"}.note-icon-square:before{content:\"\\ea2d\"}.note-icon-strikethrough:before{content:\"\\ea2e\"}.note-icon-subscript:before{content:\"\\ea2f\"}.note-icon-summernote:before{content:\"\\ea30\"}.note-icon-superscript:before{content:\"\\ea31\"}.note-icon-table:before{content:\"\\ea32\"}.note-icon-text-height:before{content:\"\\ea33\"}.note-icon-trash:before{content:\"\\ea34\"}.note-icon-underline:before{content:\"\\ea35\"}.note-icon-undo:before{content:\"\\ea36\"}.note-icon-unorderedlist:before{content:\"\\ea37\"}.note-icon-video:before{content:\"\\ea38\"}.note-frame{border-radius:4px;-ms-box-sizing:border-box;box-sizing:border-box;color:#000;font-family:sans-serif}.note-toolbar{background-color:#f5f5f5;border-bottom:1px solid;border-color:#ddd;border-top-left-radius:3px;border-top-right-radius:3px;color:#333;padding:10px 5px}.note-btn-group{display:inline-block;margin-right:8px;position:relative}.note-btn-group>.note-btn-group{margin-right:0}.note-btn-group>.note-btn:first-child{margin-left:0}.note-btn-group .note-btn+.note-btn,.note-btn-group .note-btn+.note-btn-group,.note-btn-group .note-btn-group+.note-btn,.note-btn-group .note-btn-group+.note-btn-group{margin-left:-1px}.note-btn-group>.note-btn-group:not(:first-child)>.note-btn,.note-btn-group>.note-btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.note-btn-group>.note-btn-group:not(:last-child)>.note-btn,.note-btn-group>.note-btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.note-btn-group.open>.note-dropdown{display:block}.note-btn{background-color:#fff;background-image:none;border:1px solid #dae0e5;border-radius:3px;color:#333;cursor:pointer;display:inline-block;font-size:14px;font-weight:400;line-height:1.4;margin-bottom:0;outline:0;padding:5px 10px;text-align:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.note-btn.focus,.note-btn:focus,.note-btn:hover{background-color:#ebebeb;border-color:#dae0e5;color:#333}.note-btn.disabled.focus,.note-btn.disabled:focus,.note-btn[disabled].focus,.note-btn[disabled]:focus,fieldset[disabled] .note-btn.focus,fieldset[disabled] .note-btn:focus{background-color:#fff;border-color:#dae0e5}.note-btn.active,.note-btn.focus,.note-btn:active,.note-btn:focus,.note-btn:hover{background-color:#ebebeb;border:1px solid #dae0e5;border-radius:1px;color:#333;outline:0;text-decoration:none}.note-btn.active,.note-btn:active{background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.note-btn.disabled,.note-btn[disabled],fieldset[disabled] .note-btn{box-shadow:none;cursor:not-allowed;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=65);filter:alpha(opacity=65);-webkit-opacity:.65;-khtml-opacity:.65;-moz-opacity:.65;opacity:.65}.note-btn>span.note-icon-caret:first-child{margin-left:-1px}.note-btn>span.note-icon-caret:nth-child(2){margin-right:-5px;padding-left:3px}.note-btn-primary{background:#fa6362;color:#fff}.note-btn-primary.focus,.note-btn-primary:focus,.note-btn-primary:hover{background-color:#fa6362;border:1px solid #dae0e5;border-radius:1px;color:#fff;text-decoration:none}.note-btn-block{display:block;width:100%}.note-btn-block+.note-btn-block{margin-top:5px}input[type=button].note-btn-block,input[type=reset].note-btn-block,input[type=submit].note-btn-block{width:100%}button.close{-webkit-appearance:none;background:transparent;border:0;cursor:pointer;padding:0}.close{color:#000;float:right;font-size:21px;line-height:1;opacity:.2}.close:hover{-ms-filter:alpha(opacity=100);filter:alpha(opacity=100);-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;opacity:1}.note-dropdown{position:relative}.note-color .dropdown-toggle{padding-left:5px;width:30px}.note-dropdown-menu{background:#fff;background-clip:padding-box;border:1px solid #e2e2e2;box-shadow:0 1px 1px rgba(0,0,0,.06);display:none;float:left;left:0;min-width:100px;padding:5px;position:absolute;text-align:left;top:100%;z-index:1000}.note-dropdown-menu>:last-child{margin-right:0}.note-btn-group.open .note-dropdown-menu,.note-dropdown-item{display:block}.note-dropdown-item:hover{background-color:#ebebeb}a.note-dropdown-item,a.note-dropdown-item:hover{color:#000;margin:5px 0;text-decoration:none}.note-modal{bottom:0;display:none;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);filter:alpha(opacity=100);left:0;-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;opacity:1;position:fixed;right:0;top:0;z-index:1050}.note-modal.open{display:block}.note-modal-content{background:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.2);border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5);margin:30px 20px;outline:0;position:relative;width:auto}.note-modal-header{border:1px solid #ededef;padding:10px 20px}.note-modal-body{padding:20px 30px;position:relative}.note-modal-body kbd{background-color:#000;border-radius:2px;-ms-box-sizing:border-box;box-sizing:border-box;color:#fff;font-weight:700;padding:3px 5px}.note-modal-footer{height:40px;padding:10px;text-align:center}.note-modal-footer a{color:#337ab7;text-decoration:none}.note-modal-footer a:focus,.note-modal-footer a:hover{color:#23527c;text-decoration:underline}.note-modal-footer .note-btn{float:right}.note-modal-title{color:#42515f;font-size:20px;line-height:1.4;margin:0}.note-modal-backdrop{background:#000;bottom:0;display:none;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);filter:alpha(opacity=50);left:0;-webkit-opacity:.5;-khtml-opacity:.5;-moz-opacity:.5;opacity:.5;position:fixed;right:0;top:0;z-index:1040}.note-modal-backdrop.open{display:block}@media (min-width:768px){.note-modal-content{margin:30px auto;width:600px}}@media (min-width:992px){.note-modal-content-large{width:900px}}.note-modal .note-help-block{color:#737373;display:block;margin-bottom:10px;margin-top:5px}.note-modal .note-nav{display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.note-modal .note-nav-link{background-color:transparent;color:#007bff;display:block;padding:.5rem 1rem;text-decoration:none;-webkit-text-decoration-skip:objects}.note-modal .note-nav-link:focus,.note-modal .note-nav-link:hover{color:#0056b3;text-decoration:none}.note-modal .note-nav-link.disabled{color:#868e96}.note-modal .note-nav-tabs{border-bottom:1px solid #ddd}.note-modal .note-nav-tabs .note-nav-item{margin-bottom:-1px}.note-modal .note-nav-tabs .note-nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.note-modal .note-nav-tabs .note-nav-link:focus,.note-modal .note-nav-tabs .note-nav-link:hover{border-color:#e9ecef #e9ecef #ddd}.note-modal .note-nav-tabs .note-nav-link.disabled{background-color:transparent;border-color:transparent;color:#868e96}.note-modal .note-nav-tabs .note-nav-item.show .note-nav-link{background-color:#fff;border-color:#ddd #ddd #fff;color:#495057}.note-modal .note-tab-content{margin:15px auto}.note-modal .note-tab-content>.note-tab-pane,.note-modal .note-tab-content>.note-tab-pane:target~.note-tab-pane:last-child{display:none}.note-modal .note-tab-content>.note-tab-pane:target,.note-modal .note-tab-content>:last-child{display:block}.note-form-group{padding-bottom:20px}.note-form-group:last-child{padding-bottom:0}.note-form-label{color:#42515f;display:block;font-size:16px;font-weight:700;margin-bottom:10px;width:100%}.note-input{background:#fff;border:1px solid #ededef;-ms-box-sizing:border-box;box-sizing:border-box;display:block;font-size:14px;outline:0;padding:6px 4px;width:100%}.note-input::-webkit-input-placeholder{color:#eee}.note-input:-moz-placeholder,.note-input::-moz-placeholder{color:#eee}.note-input:-ms-input-placeholder{color:#eee}.note-tooltip{display:block;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);filter:alpha(opacity=0);font-size:13px;-webkit-opacity:0;-khtml-opacity:0;-moz-opacity:0;opacity:0;position:absolute;transition:opacity .15s;z-index:1070}.note-tooltip.in{-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=90);filter:alpha(opacity=90);-webkit-opacity:.9;-khtml-opacity:.9;-moz-opacity:.9;opacity:.9}.note-tooltip.top{margin-top:-3px;padding:5px 0}.note-tooltip.right{margin-left:3px;padding:0 5px}.note-tooltip.bottom{margin-top:3px;padding:5px 0}.note-tooltip.left{margin-left:-3px;padding:0 5px}.note-tooltip.bottom .note-tooltip-arrow{border-bottom-color:#000;border-width:0 5px 5px;left:50%;margin-left:-5px;top:0}.note-tooltip.top .note-tooltip-arrow{border-top-color:#000;border-width:5px 5px 0;bottom:0;left:50%;margin-left:-5px}.note-tooltip.right .note-tooltip-arrow{border-right-color:#000;border-width:5px 5px 5px 0;left:0;margin-top:-5px;top:50%}.note-tooltip.left .note-tooltip-arrow{border-left-color:#000;border-width:5px 0 5px 5px;margin-top:-5px;right:0;top:50%}.note-tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.note-tooltip-content{background-color:#000;color:#fff;font-family:sans-serif;max-width:200px;padding:3px 8px;text-align:center}.note-popover{background:#fff;border:1px solid #ccc;display:block;display:none;font-family:sans-serif;font-size:13px;position:absolute;z-index:1060}.note-popover.in{display:block}.note-popover.top{margin-top:-10px;padding:5px 0}.note-popover.right{margin-left:10px;padding:0 5px}.note-popover.bottom{margin-top:10px;padding:5px 0}.note-popover.left{margin-left:-10px;padding:0 5px}.note-popover.bottom .note-popover-arrow{border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0;left:20px;margin-left:-10px;top:-11px}.note-popover.bottom .note-popover-arrow:after{border-bottom-color:#fff;border-top-width:0;content:\"\\0020\";margin-left:-10px;top:1px}.note-popover.top .note-popover-arrow{border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px;left:20px;margin-left:-10px}.note-popover.top .note-popover-arrow:after{border-bottom-width:0;border-top-color:#fff;bottom:1px;content:\"\\0020\";margin-left:-10px}.note-popover.right .note-popover-arrow{border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25);left:-11px;margin-top:-10px;top:50%}.note-popover.right .note-popover-arrow:after{border-left-width:0;border-right-color:#fff;content:\"\\0020\";left:1px;margin-top:-10px}.note-popover.left .note-popover-arrow{border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0;margin-top:-10px;right:-11px;top:50%}.note-popover.left .note-popover-arrow:after{border-left-color:#fff;border-right-width:0;content:\"\\0020\";margin-top:-10px;right:1px}.note-popover-arrow{border:11px solid transparent;height:0;position:absolute;width:0}.note-popover-arrow:after{border:10px solid transparent;content:\"\\0020\";display:block;height:0;position:absolute;width:0}.note-popover-content{background-color:#fff;color:#000;min-height:30px;min-width:100px;padding:3px 8px;text-align:center}.note-editor{position:relative}.note-editor .note-dropzone{background-color:#fff;color:#87cefa;display:none;opacity:.95;position:absolute;z-index:100}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;font-size:28px;font-weight:700;text-align:center;vertical-align:middle}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-airframe,.note-editor.note-frame{border:1px solid rgba(0,0,0,.196)}.note-editor.note-airframe.codeview .note-editing-area .note-editable,.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-airframe.codeview .note-editing-area .note-codable,.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-airframe .note-editing-area,.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-airframe .note-editing-area .note-editable,.note-editor.note-frame .note-editing-area .note-editable{overflow:auto;padding:10px;word-wrap:break-word}.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false],.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false]{background-color:hsla(0,0%,50%,.114)}.note-editor.note-airframe .note-editing-area .note-codable,.note-editor.note-frame .note-editing-area .note-codable{background-color:#222;border:none;border-radius:0;box-shadow:none;-ms-box-sizing:border-box;box-sizing:border-box;color:#ccc;display:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;margin-bottom:0;outline:none;padding:10px;resize:none;width:100%}.note-editor.note-airframe.fullscreen,.note-editor.note-frame.fullscreen{left:0;position:fixed;top:0;width:100%!important;z-index:1050}.note-editor.note-airframe.fullscreen .note-resizebar,.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-airframe .note-status-output,.note-editor.note-frame .note-status-output{border:0;border-top:1px solid #e2e2e2;color:#000;display:block;font-size:14px;height:20px;line-height:1.42857143;margin-bottom:0;width:100%}.note-editor.note-airframe .note-status-output:empty,.note-editor.note-frame .note-status-output:empty{border-top:0 solid transparent;height:0}.note-editor.note-airframe .note-status-output .pull-right,.note-editor.note-frame .note-status-output .pull-right{float:right!important}.note-editor.note-airframe .note-status-output .text-muted,.note-editor.note-frame .note-status-output .text-muted{color:#777}.note-editor.note-airframe .note-status-output .text-primary,.note-editor.note-frame .note-status-output .text-primary{color:#286090}.note-editor.note-airframe .note-status-output .text-success,.note-editor.note-frame .note-status-output .text-success{color:#3c763d}.note-editor.note-airframe .note-status-output .text-info,.note-editor.note-frame .note-status-output .text-info{color:#31708f}.note-editor.note-airframe .note-status-output .text-warning,.note-editor.note-frame .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-airframe .note-status-output .text-danger,.note-editor.note-frame .note-status-output .text-danger{color:#a94442}.note-editor.note-airframe .note-status-output .alert,.note-editor.note-frame .note-status-output .alert{background-color:#f5f5f5;border-radius:0;color:#000;margin:-7px 0 0;padding:7px 10px 2px}.note-editor.note-airframe .note-status-output .alert .note-icon,.note-editor.note-frame .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-airframe .note-status-output .alert-success,.note-editor.note-frame .note-status-output .alert-success{background-color:#dff0d8!important;color:#3c763d!important}.note-editor.note-airframe .note-status-output .alert-info,.note-editor.note-frame .note-status-output .alert-info{background-color:#d9edf7!important;color:#31708f!important}.note-editor.note-airframe .note-status-output .alert-warning,.note-editor.note-frame .note-status-output .alert-warning{background-color:#fcf8e3!important;color:#8a6d3b!important}.note-editor.note-airframe .note-status-output .alert-danger,.note-editor.note-frame .note-status-output .alert-danger{background-color:#f2dede!important;color:#a94442!important}.note-editor.note-airframe .note-statusbar,.note-editor.note-frame .note-statusbar{background-color:hsla(0,0%,50%,.114);border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid rgba(0,0,0,.196)}.note-editor.note-airframe .note-statusbar .note-resizebar,.note-editor.note-frame .note-statusbar .note-resizebar{cursor:ns-resize;height:9px;padding-top:1px;width:100%}.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{border-top:1px solid rgba(0,0,0,.196);margin:1px auto;width:20px}.note-editor.note-airframe .note-statusbar.locked .note-resizebar,.note-editor.note-frame .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-airframe .note-placeholder,.note-editor.note-frame .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.note-popover.popover .arrow{left:20px!important}.note-toolbar{position:relative}.note-editor .note-toolbar,.note-popover .popover-content{margin:0;padding:0 0 5px 5px}.note-editor .note-toolbar>.note-btn-group,.note-popover .popover-content>.note-btn-group{margin-left:0;margin-right:5px;margin-top:5px}.note-editor .note-toolbar .note-btn-group .note-table,.note-popover .popover-content .note-btn-group .note-table{min-width:0;padding:5px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{cursor:pointer;height:10em;position:absolute!important;width:10em;z-index:3}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{background:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC\") repeat;height:5em;position:relative!important;width:5em;z-index:1}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{background:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC\") repeat;height:1em;position:absolute!important;width:1em;z-index:2}.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre,.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p,.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p{margin:0;padding:0}.note-editor .note-toolbar .note-color-all .note-dropdown-menu,.note-popover .popover-content .note-color-all .note-dropdown-menu{min-width:337px}.note-editor .note-toolbar .note-color .dropdown-toggle,.note-popover .popover-content .note-color .dropdown-toggle{padding-left:5px;width:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title{border-bottom:1px solid #eee;font-size:12px;margin:2px 7px;text-align:center}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select{border-radius:5px;cursor:pointer;font-size:11px;margin:3px;padding:0 3px;width:100%}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-editor .note-toolbar .note-para .note-dropdown-menu,.note-popover .popover-content .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div,.note-popover .popover-content .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-editor .note-toolbar .note-dropdown-menu,.note-popover .popover-content .note-dropdown-menu{min-width:160px}.note-editor .note-toolbar .note-dropdown-menu.right,.note-popover .popover-content .note-dropdown-menu.right{left:auto;right:0}.note-editor .note-toolbar .note-dropdown-menu.right:before,.note-popover .popover-content .note-dropdown-menu.right:before{left:auto!important;right:9px}.note-editor .note-toolbar .note-dropdown-menu.right:after,.note-popover .popover-content .note-dropdown-menu.right:after{left:auto!important;right:10px}.note-editor .note-toolbar .note-dropdown-menu.note-check a i,.note-popover .popover-content .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i,.note-popover .popover-content .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-editor .note-toolbar .note-fontsize-10,.note-popover .popover-content .note-fontsize-10{font-size:10px}.note-editor .note-toolbar .note-color-palette,.note-popover .popover-content .note-color-palette{line-height:1}.note-editor .note-toolbar .note-color-palette div .note-color-btn,.note-popover .popover-content .note-color-palette div .note-color-btn{border:0;border-radius:0;height:20px;margin:0;padding:0;width:20px}.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover,.note-popover .popover-content .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{border:4px dashed #d3d3d3;color:#d3d3d3;font-size:30px;line-height:4;margin-bottom:10px;min-height:100px;text-align:center}.note-placeholder{color:gray;display:none;position:absolute}.note-handle .note-control-selection{border:1px solid #000;display:none;position:absolute}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{background-color:#000;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30);height:100%;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;width:100%}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-holder,.note-handle .note-control-selection .note-control-sizing{border:1px solid #000;height:7px;width:7px}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{border-bottom:none;border-right:none;left:-5px;top:-5px}.note-handle .note-control-selection .note-control-ne{border-bottom:none;border-left:none;right:-5px;top:-5px}.note-handle .note-control-selection .note-control-sw{border-right:none;border-top:none;bottom:-5px;left:-5px}.note-handle .note-control-selection .note-control-se{bottom:-5px;cursor:se-resize;right:-5px}.note-handle .note-control-selection .note-control-se.note-control-holder{border-left:none;border-top:none;cursor:default}.note-handle .note-control-selection .note-control-selection-info{background-color:#000;border-radius:5px;bottom:0;color:#fff;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70);font-size:12px;margin:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;padding:5px;right:0}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{max-height:150px;overflow:auto;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{background-color:#428bca;clear:both;color:#fff;cursor:pointer;display:block;font-weight:400;line-height:1.4;outline:0;text-decoration:none;white-space:nowrap}body .note-fullscreen-body,html .note-fullscreen-body{overflow:hidden!important}.note-editable ol li,.note-editable ul li{list-style-position:inside}.note-editor .note-editing-area .note-editable table{border-collapse:collapse;width:100%}.note-editor .note-editing-area .note-editable table td,.note-editor .note-editing-area .note-editable table th{border:1px solid #ececec;padding:5px 3px}.note-editor .note-editing-area .note-editable a{background-color:inherit;color:#337ab7;font-family:inherit;font-weight:inherit;text-decoration:inherit}.note-editor .note-editing-area .note-editable a:focus,.note-editor .note-editing-area .note-editable a:hover{color:#23527c;outline:0;text-decoration:underline}.note-editor .note-editing-area .note-editable figure{margin:0}.note-modal .note-modal-body label{display:inline-block;margin-bottom:2px;padding:2px 5px}.note-modal .note-modal-body .help-list-item:hover{background-color:#e0e0e0}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.help-list-item label{display:inline-block;margin-bottom:5px}";
220439
+ styleInject(css_248z$2);
220440
+
220441
+ /** Serialises the UMD imports so two borrows of the globals never overlap. */
220442
+ Promise.resolve();
220443
+
220391
220444
  function TenantSwitcher({ currentTenantKey, tenants, visitingTenant, onTenantChange, setHideTenantSwitcher, setOpenAccount, setLoadingTenantInfo, rbacPermissions, enableRbac = false, }) {
220392
220445
  var _a;
220393
220446
  const t = useT();
@@ -220647,6 +220700,12 @@ AlertDialogAction.displayName = Action.displayName;
220647
220700
  const AlertDialogCancel = React.forwardRef(({ className, ...props }, ref) => (jsx(Cancel, { ref: ref, className: cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className), ...props })));
220648
220701
  AlertDialogCancel.displayName = Cancel.displayName;
220649
220702
 
220703
+ // Notification bodies are arbitrary (often email) HTML: long unbroken URLs and
220704
+ // fixed-width tables would otherwise bleed out of the panel. Break long words,
220705
+ // cap every descendant at the container width, and let anything that still
220706
+ // cannot shrink scroll inside the body instead of stretching the layout.
220707
+ cn('prose prose-sm max-w-none text-gray-700', 'overflow-x-auto break-words [overflow-wrap:anywhere]', '[&_*]:max-w-full', '[&_a]:break-all', '[&_img]:h-auto', '[&_pre]:overflow-x-auto [&_pre]:whitespace-pre-wrap', '[&_code]:whitespace-pre-wrap');
220708
+
220650
220709
  const THEMES = { light: '', dark: '.dark' };
220651
220710
  const ChartContext = React.createContext(null);
220652
220711
  function useChart() {
@@ -307685,33 +307744,6 @@ function useCanvasVersionNavigation({ artifactId, org, userId, metadataVersionNu
307685
307744
  };
307686
307745
  }
307687
307746
 
307688
- function styleInject(css, ref) {
307689
- if ( ref === void 0 ) ref = {};
307690
- var insertAt = ref.insertAt;
307691
-
307692
- if (!css || typeof document === 'undefined') { return; }
307693
-
307694
- var head = document.head || document.getElementsByTagName('head')[0];
307695
- var style = document.createElement('style');
307696
- style.type = 'text/css';
307697
-
307698
- if (insertAt === 'top') {
307699
- if (head.firstChild) {
307700
- head.insertBefore(style, head.firstChild);
307701
- } else {
307702
- head.appendChild(style);
307703
- }
307704
- } else {
307705
- head.appendChild(style);
307706
- }
307707
-
307708
- if (style.styleSheet) {
307709
- style.styleSheet.cssText = css;
307710
- } else {
307711
- style.appendChild(document.createTextNode(css));
307712
- }
307713
- }
307714
-
307715
307747
  var css_248z$1 = "@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_AMS-Regular.woff) format(\"woff\"),url(fonts/KaTeX_AMS-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format(\"woff2\"),url(fonts/KaTeX_Caligraphic-Bold.woff) format(\"woff\"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Caligraphic-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format(\"woff2\"),url(fonts/KaTeX_Fraktur-Bold.woff) format(\"woff\"),url(fonts/KaTeX_Fraktur-Bold.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Fraktur-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Fraktur-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format(\"woff2\"),url(fonts/KaTeX_Main-Bold.woff) format(\"woff\"),url(fonts/KaTeX_Main-Bold.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format(\"woff2\"),url(fonts/KaTeX_Main-BoldItalic.woff) format(\"woff\"),url(fonts/KaTeX_Main-BoldItalic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format(\"woff2\"),url(fonts/KaTeX_Main-Italic.woff) format(\"woff\"),url(fonts/KaTeX_Main-Italic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Main-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Main-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format(\"woff2\"),url(fonts/KaTeX_Math-BoldItalic.woff) format(\"woff\"),url(fonts/KaTeX_Math-BoldItalic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format(\"woff2\"),url(fonts/KaTeX_Math-Italic.woff) format(\"woff\"),url(fonts/KaTeX_Math-Italic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:\"KaTeX_SansSerif\";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format(\"woff2\"),url(fonts/KaTeX_SansSerif-Bold.woff) format(\"woff\"),url(fonts/KaTeX_SansSerif-Bold.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:\"KaTeX_SansSerif\";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format(\"woff2\"),url(fonts/KaTeX_SansSerif-Italic.woff) format(\"woff\"),url(fonts/KaTeX_SansSerif-Italic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:\"KaTeX_SansSerif\";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_SansSerif-Regular.woff) format(\"woff\"),url(fonts/KaTeX_SansSerif-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Script-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Script-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Size1-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Size1-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Size2-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Size2-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Size3-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Size3-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Size4-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Size4-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Typewriter-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Typewriter-Regular.ttf) format(\"truetype\")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:\"0.16.44\"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:\"\"}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:\"(\" counter(katexEqnNo) \")\";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:\"(\" counter(mmlEqnNo) \")\";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}\n";
307716
307748
  styleInject(css_248z$1);
307717
307749
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iblai/iblai-js",
3
- "version": "2.4.5",
3
+ "version": "2.5.1",
4
4
  "description": "Unified JavaScript SDK for IBL.ai — re-exports data-layer, web-containers, and web-utils under a single package",
5
5
  "type": "module",
6
6
  "engines": {
@@ -77,8 +77,8 @@
77
77
  "dotenv": "16.6.1",
78
78
  "winston": "3.19.0",
79
79
  "@iblai/data-layer": "1.12.7",
80
- "@iblai/mcp": "1.9.1",
81
- "@iblai/web-containers": "1.17.3",
80
+ "@iblai/mcp": "1.10.0",
81
+ "@iblai/web-containers": "1.18.1",
82
82
  "@iblai/web-utils": "2.1.16"
83
83
  },
84
84
  "peerDependencies": {